@ng-nest/ui 14.0.6 → 14.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/avatar/avatar-group.component.d.ts +8 -0
  2. package/avatar/avatar.component.d.ts +15 -4
  3. package/avatar/avatar.module.d.ts +5 -4
  4. package/avatar/avatar.property.d.ts +31 -3
  5. package/avatar/examples/en_US/default/badge/README.md +6 -0
  6. package/avatar/examples/en_US/default/group/README.md +6 -0
  7. package/avatar/examples/en_US/default/label/README.md +6 -0
  8. package/avatar/examples/en_US/default/response/README.md +6 -0
  9. package/avatar/examples/zh_CN/default/badge/README.md +6 -0
  10. package/avatar/examples/zh_CN/default/group/README.md +6 -0
  11. package/avatar/examples/zh_CN/default/label/README.md +6 -0
  12. package/avatar/examples/zh_CN/default/response/README.md +6 -0
  13. package/avatar/public-api.d.ts +1 -0
  14. package/badge/badge.component.d.ts +4 -1
  15. package/badge/badge.property.d.ts +6 -1
  16. package/badge/examples/en_US/default/animation/README.md +4 -0
  17. package/badge/examples/en_US/default/standalone/README.md +6 -0
  18. package/badge/examples/zh_CN/default/animation/README.md +4 -0
  19. package/badge/examples/zh_CN/default/standalone/README.md +6 -0
  20. package/calendar/calendar.component.d.ts +1 -0
  21. package/calendar/calendar.property.d.ts +18 -3
  22. package/calendar/examples/en_US/default/card/README.md +6 -0
  23. package/calendar/examples/en_US/default/header/README.md +6 -0
  24. package/calendar/examples/zh_CN/default/card/README.md +6 -0
  25. package/calendar/examples/zh_CN/default/header/README.md +6 -0
  26. package/collapse/collapse.property.d.ts +6 -1
  27. package/collapse/examples/en_US/default/disabled/README.md +6 -0
  28. package/collapse/examples/zh_CN/default/disabled/README.md +6 -0
  29. package/core/animation/badge.d.ts +1 -0
  30. package/core/config/config.d.ts +30 -0
  31. package/core/interfaces/identify.type.d.ts +2 -0
  32. package/core/interfaces/layout.type.d.ts +15 -0
  33. package/esm2020/avatar/avatar-group.component.mjs +19 -0
  34. package/esm2020/avatar/avatar.component.mjs +91 -11
  35. package/esm2020/avatar/avatar.module.mjs +6 -5
  36. package/esm2020/avatar/avatar.property.mjs +31 -3
  37. package/esm2020/avatar/public-api.mjs +2 -1
  38. package/esm2020/badge/badge.component.mjs +24 -8
  39. package/esm2020/badge/badge.property.mjs +7 -2
  40. package/esm2020/calendar/calendar.component.mjs +8 -4
  41. package/esm2020/calendar/calendar.property.mjs +11 -2
  42. package/esm2020/collapse/collapse-panel.component.mjs +3 -3
  43. package/esm2020/collapse/collapse.property.mjs +7 -2
  44. package/esm2020/core/animation/badge.mjs +17 -1
  45. package/esm2020/core/config/config.mjs +1 -1
  46. package/esm2020/core/interfaces/identify.type.mjs +1 -1
  47. package/esm2020/core/interfaces/layout.type.mjs +1 -1
  48. package/esm2020/date-picker/date-picker.component.mjs +5 -1
  49. package/esm2020/form/form.component.mjs +3 -3
  50. package/esm2020/i18n/i18n.property.mjs +1 -1
  51. package/esm2020/i18n/languages/en_US.mjs +8 -1
  52. package/esm2020/i18n/languages/zh_CN.mjs +8 -1
  53. package/esm2020/i18n/languages/zh_TW.mjs +8 -1
  54. package/esm2020/image/image-group.component.mjs +18 -0
  55. package/esm2020/image/image-preview.component.mjs +136 -0
  56. package/esm2020/image/image.component.mjs +89 -0
  57. package/esm2020/image/image.module.mjs +27 -0
  58. package/esm2020/image/image.property.mjs +82 -0
  59. package/esm2020/image/ng-nest-ui-image.mjs +5 -0
  60. package/esm2020/image/public-api.mjs +6 -0
  61. package/esm2020/index.mjs +4 -1
  62. package/esm2020/keyword/keyword.directive.mjs +66 -0
  63. package/esm2020/keyword/keyword.module.mjs +19 -0
  64. package/esm2020/keyword/keyword.property.mjs +41 -0
  65. package/esm2020/keyword/ng-nest-ui-keyword.mjs +5 -0
  66. package/esm2020/keyword/public-api.mjs +4 -0
  67. package/esm2020/list/list-option.component.mjs +4 -4
  68. package/esm2020/list/list.component.mjs +71 -10
  69. package/esm2020/list/list.module.mjs +12 -4
  70. package/esm2020/list/list.property.mjs +54 -3
  71. package/esm2020/select/select-portal.component.mjs +6 -3
  72. package/esm2020/select/select.component.mjs +31 -23
  73. package/esm2020/select/select.property.mjs +8 -2
  74. package/esm2020/table/table-head.component.mjs +2 -2
  75. package/esm2020/table/table.component.mjs +4 -4
  76. package/esm2020/textarea/textarea.component.mjs +2 -2
  77. package/esm2020/timeline/timeline.component.mjs +6 -4
  78. package/esm2020/tree/tree-node.component.mjs +52 -27
  79. package/esm2020/tree/tree.component.mjs +173 -58
  80. package/esm2020/tree/tree.module.mjs +5 -4
  81. package/esm2020/tree/tree.property.mjs +38 -2
  82. package/esm2020/tree-select/ng-nest-ui-tree-select.mjs +5 -0
  83. package/esm2020/tree-select/public-api.mjs +5 -0
  84. package/esm2020/tree-select/tree-select-portal.component.mjs +110 -0
  85. package/esm2020/tree-select/tree-select.component.mjs +632 -0
  86. package/esm2020/tree-select/tree-select.module.mjs +65 -0
  87. package/esm2020/tree-select/tree-select.property.mjs +153 -0
  88. package/esm2020/upload/upload.component.mjs +9 -6
  89. package/esm2020/upload/upload.module.mjs +12 -4
  90. package/esm2020/upload/upload.property.mjs +10 -3
  91. package/fesm2015/ng-nest-ui-avatar.mjs +143 -17
  92. package/fesm2015/ng-nest-ui-avatar.mjs.map +1 -1
  93. package/fesm2015/ng-nest-ui-badge.mjs +29 -8
  94. package/fesm2015/ng-nest-ui-badge.mjs.map +1 -1
  95. package/fesm2015/ng-nest-ui-calendar.mjs +17 -4
  96. package/fesm2015/ng-nest-ui-calendar.mjs.map +1 -1
  97. package/fesm2015/ng-nest-ui-collapse.mjs +8 -3
  98. package/fesm2015/ng-nest-ui-collapse.mjs.map +1 -1
  99. package/fesm2015/ng-nest-ui-core.mjs +17 -1
  100. package/fesm2015/ng-nest-ui-core.mjs.map +1 -1
  101. package/fesm2015/ng-nest-ui-date-picker.mjs +4 -0
  102. package/fesm2015/ng-nest-ui-date-picker.mjs.map +1 -1
  103. package/fesm2015/ng-nest-ui-form.mjs +2 -2
  104. package/fesm2015/ng-nest-ui-form.mjs.map +1 -1
  105. package/fesm2015/ng-nest-ui-i18n.mjs +21 -0
  106. package/fesm2015/ng-nest-ui-i18n.mjs.map +1 -1
  107. package/fesm2015/ng-nest-ui-image.mjs +340 -0
  108. package/fesm2015/ng-nest-ui-image.mjs.map +1 -0
  109. package/fesm2015/ng-nest-ui-keyword.mjs +125 -0
  110. package/fesm2015/ng-nest-ui-keyword.mjs.map +1 -0
  111. package/fesm2015/ng-nest-ui-list.mjs +138 -17
  112. package/fesm2015/ng-nest-ui-list.mjs.map +1 -1
  113. package/fesm2015/ng-nest-ui-select.mjs +42 -25
  114. package/fesm2015/ng-nest-ui-select.mjs.map +1 -1
  115. package/fesm2015/ng-nest-ui-table.mjs +4 -4
  116. package/fesm2015/ng-nest-ui-table.mjs.map +1 -1
  117. package/fesm2015/ng-nest-ui-textarea.mjs +2 -2
  118. package/fesm2015/ng-nest-ui-textarea.mjs.map +1 -1
  119. package/fesm2015/ng-nest-ui-timeline.mjs +5 -3
  120. package/fesm2015/ng-nest-ui-timeline.mjs.map +1 -1
  121. package/fesm2015/ng-nest-ui-tree-select.mjs +951 -0
  122. package/fesm2015/ng-nest-ui-tree-select.mjs.map +1 -0
  123. package/fesm2015/ng-nest-ui-tree.mjs +271 -94
  124. package/fesm2015/ng-nest-ui-tree.mjs.map +1 -1
  125. package/fesm2015/ng-nest-ui-upload.mjs +28 -10
  126. package/fesm2015/ng-nest-ui-upload.mjs.map +1 -1
  127. package/fesm2015/ng-nest-ui.mjs +3 -0
  128. package/fesm2015/ng-nest-ui.mjs.map +1 -1
  129. package/fesm2020/ng-nest-ui-avatar.mjs +140 -17
  130. package/fesm2020/ng-nest-ui-avatar.mjs.map +1 -1
  131. package/fesm2020/ng-nest-ui-badge.mjs +29 -8
  132. package/fesm2020/ng-nest-ui-badge.mjs.map +1 -1
  133. package/fesm2020/ng-nest-ui-calendar.mjs +17 -4
  134. package/fesm2020/ng-nest-ui-calendar.mjs.map +1 -1
  135. package/fesm2020/ng-nest-ui-collapse.mjs +8 -3
  136. package/fesm2020/ng-nest-ui-collapse.mjs.map +1 -1
  137. package/fesm2020/ng-nest-ui-core.mjs +17 -1
  138. package/fesm2020/ng-nest-ui-core.mjs.map +1 -1
  139. package/fesm2020/ng-nest-ui-date-picker.mjs +4 -0
  140. package/fesm2020/ng-nest-ui-date-picker.mjs.map +1 -1
  141. package/fesm2020/ng-nest-ui-form.mjs +2 -2
  142. package/fesm2020/ng-nest-ui-form.mjs.map +1 -1
  143. package/fesm2020/ng-nest-ui-i18n.mjs +21 -0
  144. package/fesm2020/ng-nest-ui-i18n.mjs.map +1 -1
  145. package/fesm2020/ng-nest-ui-image.mjs +336 -0
  146. package/fesm2020/ng-nest-ui-image.mjs.map +1 -0
  147. package/fesm2020/ng-nest-ui-keyword.mjs +125 -0
  148. package/fesm2020/ng-nest-ui-keyword.mjs.map +1 -0
  149. package/fesm2020/ng-nest-ui-list.mjs +137 -17
  150. package/fesm2020/ng-nest-ui-list.mjs.map +1 -1
  151. package/fesm2020/ng-nest-ui-select.mjs +42 -25
  152. package/fesm2020/ng-nest-ui-select.mjs.map +1 -1
  153. package/fesm2020/ng-nest-ui-table.mjs +4 -4
  154. package/fesm2020/ng-nest-ui-table.mjs.map +1 -1
  155. package/fesm2020/ng-nest-ui-textarea.mjs +2 -2
  156. package/fesm2020/ng-nest-ui-textarea.mjs.map +1 -1
  157. package/fesm2020/ng-nest-ui-timeline.mjs +5 -3
  158. package/fesm2020/ng-nest-ui-timeline.mjs.map +1 -1
  159. package/fesm2020/ng-nest-ui-tree-select.mjs +946 -0
  160. package/fesm2020/ng-nest-ui-tree-select.mjs.map +1 -0
  161. package/fesm2020/ng-nest-ui-tree.mjs +267 -91
  162. package/fesm2020/ng-nest-ui-tree.mjs.map +1 -1
  163. package/fesm2020/ng-nest-ui-upload.mjs +28 -10
  164. package/fesm2020/ng-nest-ui-upload.mjs.map +1 -1
  165. package/fesm2020/ng-nest-ui.mjs +3 -0
  166. package/fesm2020/ng-nest-ui.mjs.map +1 -1
  167. package/i18n/i18n.property.d.ts +9 -0
  168. package/i18n/languages/en_US.d.ts +7 -0
  169. package/i18n/languages/zh_CN.d.ts +7 -0
  170. package/i18n/languages/zh_TW.d.ts +7 -0
  171. package/image/examples/en_US/default/README.md +4 -0
  172. package/image/examples/en_US/default/default/README.md +6 -0
  173. package/image/examples/en_US/default/fallback/README.md +6 -0
  174. package/image/examples/en_US/default/group/README.md +6 -0
  175. package/image/examples/en_US/default/placeholder/README.md +6 -0
  176. package/image/examples/zh_CN/default/README.md +4 -0
  177. package/image/examples/zh_CN/default/default/README.md +6 -0
  178. package/image/examples/zh_CN/default/fallback/README.md +6 -0
  179. package/image/examples/zh_CN/default/group/README.md +6 -0
  180. package/image/examples/zh_CN/default/placeholder/README.md +6 -0
  181. package/image/image-group.component.d.ts +8 -0
  182. package/image/image-preview.component.d.ts +39 -0
  183. package/image/image.component.d.ts +29 -0
  184. package/image/image.module.d.ts +17 -0
  185. package/image/image.property.d.ts +112 -0
  186. package/image/index.d.ts +5 -0
  187. package/image/public-api.d.ts +5 -0
  188. package/index.d.ts +3 -0
  189. package/keyword/index.d.ts +5 -0
  190. package/keyword/keyword.directive.d.ts +19 -0
  191. package/keyword/keyword.module.d.ts +9 -0
  192. package/keyword/keyword.property.d.ts +40 -0
  193. package/keyword/public-api.d.ts +3 -0
  194. package/list/examples/en_US/default/scroll/README.md +8 -0
  195. package/list/examples/zh_CN/default/scroll/README.md +8 -0
  196. package/list/list-option.component.d.ts +0 -1
  197. package/list/list.component.d.ts +13 -1
  198. package/list/list.module.d.ts +3 -1
  199. package/list/list.property.d.ts +62 -3
  200. package/package.json +25 -1
  201. package/select/examples/en_US/default/default/README.md +1 -2
  202. package/select/examples/zh_CN/default/default/README.md +1 -2
  203. package/select/select-portal.component.d.ts +5 -1
  204. package/select/select.component.d.ts +2 -2
  205. package/select/select.property.d.ts +6 -1
  206. package/style/core/index.css +29 -0
  207. package/style/core/index.css.map +1 -1
  208. package/style/directives/index.scss +1 -0
  209. package/style/directives/keyword/index.scss +6 -0
  210. package/style/directives/keyword/mixin.scss +24 -0
  211. package/style/directives/keyword/param.scss +3 -0
  212. package/tree/tree-node.component.d.ts +4 -4
  213. package/tree/tree.component.d.ts +13 -1
  214. package/tree/tree.module.d.ts +2 -1
  215. package/tree/tree.property.d.ts +44 -14
  216. package/tree-select/examples/en_US/default/README.md +4 -0
  217. package/tree-select/examples/en_US/default/async/README.md +6 -0
  218. package/tree-select/examples/en_US/default/bordered/README.md +6 -0
  219. package/tree-select/examples/en_US/default/custom/README.md +6 -0
  220. package/tree-select/examples/en_US/default/default/README.md +6 -0
  221. package/tree-select/examples/en_US/default/disabled/README.md +6 -0
  222. package/tree-select/examples/en_US/default/label/README.md +6 -0
  223. package/tree-select/examples/en_US/default/multiple/README.md +6 -0
  224. package/tree-select/examples/en_US/default/path/README.md +6 -0
  225. package/tree-select/examples/en_US/default/required/README.md +6 -0
  226. package/tree-select/examples/en_US/default/scroll/README.md +6 -0
  227. package/tree-select/examples/en_US/default/search/README.md +7 -0
  228. package/tree-select/examples/en_US/default/size/README.md +6 -0
  229. package/tree-select/examples/zh_CN/default/README.md +4 -0
  230. package/tree-select/examples/zh_CN/default/async/README.md +6 -0
  231. package/tree-select/examples/zh_CN/default/bordered/README.md +6 -0
  232. package/tree-select/examples/zh_CN/default/custom/README.md +6 -0
  233. package/tree-select/examples/zh_CN/default/default/README.md +6 -0
  234. package/tree-select/examples/zh_CN/default/disabled/README.md +6 -0
  235. package/tree-select/examples/zh_CN/default/label/README.md +6 -0
  236. package/tree-select/examples/zh_CN/default/multiple/README.md +6 -0
  237. package/tree-select/examples/zh_CN/default/path/README.md +6 -0
  238. package/tree-select/examples/zh_CN/default/required/README.md +6 -0
  239. package/tree-select/examples/zh_CN/default/scroll/README.md +6 -0
  240. package/tree-select/examples/zh_CN/default/search/README.md +7 -0
  241. package/tree-select/examples/zh_CN/default/size/README.md +6 -0
  242. package/tree-select/index.d.ts +5 -0
  243. package/tree-select/public-api.d.ts +4 -0
  244. package/tree-select/tree-select-portal.component.d.ts +62 -0
  245. package/tree-select/tree-select.component.d.ts +101 -0
  246. package/tree-select/tree-select.module.d.ts +20 -0
  247. package/tree-select/tree-select.property.d.ts +202 -0
  248. package/upload/upload.component.d.ts +1 -1
  249. package/upload/upload.module.d.ts +3 -1
  250. package/upload/upload.property.d.ts +13 -3
@@ -137,11 +137,11 @@ export class XTableComponent extends XTableProperty {
137
137
  setData() {
138
138
  if (Array.isArray(this.data)) {
139
139
  this.dataIsFunc = false;
140
+ this.tableData = this.data;
140
141
  this.setChecked(this.data);
141
142
  this.setHeadCheckboxList(this.data);
142
143
  this.setExpand(this.data);
143
144
  this.setHeadExpandList();
144
- this.tableData = this.data;
145
145
  this.detectChanges();
146
146
  }
147
147
  else if (this.data instanceof Function) {
@@ -164,11 +164,11 @@ export class XTableComponent extends XTableProperty {
164
164
  this.virtualBody.checkViewportSize();
165
165
  }
166
166
  this.getting = false;
167
+ this.tableData = data;
167
168
  this.setChecked(data);
168
169
  this.setHeadCheckboxList(data);
169
170
  this.setExpand(data);
170
171
  this.setHeadExpandList();
171
- this.tableData = data;
172
172
  this.total = total;
173
173
  this.detectChanges();
174
174
  });
@@ -314,7 +314,7 @@ export class XTableComponent extends XTableProperty {
314
314
  setCheckedValues(column) {
315
315
  const count = this.tableData.length;
316
316
  const checkedLen = this.tableData.filter((x) => x[column.id]).length;
317
- this.checkedValues[column.id] = count === checkedLen;
317
+ this.checkedValues[column.id] = count === checkedLen && count !== 0;
318
318
  this.checkedValues[column.id + this.indeterminate] = checkedLen > 0 && checkedLen < count;
319
319
  }
320
320
  detectChanges() {
@@ -344,4 +344,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
344
344
  type: ViewChild,
345
345
  args: ['stickyBottomRightEle']
346
346
  }] } });
347
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxpQkFBaUIsRUFJakIsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBNkQsTUFBTSxrQkFBa0IsQ0FBQztBQUMzSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBK0MsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHbEgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7QUFTL0IsTUFBTSxPQUFPLGVBQWdCLFNBQVEsY0FBYztJQWlFakQsWUFDUyxRQUFtQixFQUNuQixVQUFzQixFQUN0QixHQUFzQixFQUN0QixhQUE2QjtRQUVwQyxLQUFLLEVBQUUsQ0FBQztRQUxELGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFsQ3RDLFVBQUssR0FBaUIsRUFBRSxDQUFDO1FBTXpCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUVsQixlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2Ysa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIs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RDNCLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFDSSxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBQ0ssVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNTLGlCQUFpQjtzQkFBaEQsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBQ0ssb0JBQW9CO3NCQUF0RCxTQUFTO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBSZW5kZXJlcjIsXHJcbiAgRWxlbWVudFJlZixcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBPbkRlc3Ryb3lcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWFRhYmxlUHJlZml4LCBYVGFibGVQcm9wZXJ0eSwgWFRhYmxlQ29sdW1uLCBYVGFibGVSb3csIFhUYWJsZUNlbGwsIFhUYWJsZUNlbGxDb25maWdSdWxlIH0gZnJvbSAnLi90YWJsZS5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IFhJc0NoYW5nZSwgWElzRW1wdHksIFhSZXN1bHRMaXN0LCBYTnVtYmVyLCBYU29ydCwgWENvbmZpZ1NlcnZpY2UsIFhJc1VuZGVmaW5lZCB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcclxuaW1wb3J0IHsgWFBhZ2luYXRpb25Db21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9wYWdpbmF0aW9uJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WFRhYmxlUHJlZml4fWAsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFhUYWJsZUNvbXBvbmVudCBleHRlbmRzIFhUYWJsZVByb3BlcnR5IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGdldCBnZXRTY3JvbGxMZWZ0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2Nyb2xsTGVmdCA+IDA7XHJcbiAgfVxyXG4gIGdldCBnZXRTY3JvbGxUb3AoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zY3JvbGxUb3AgPiAwO1xyXG4gIH1cclxuICBnZXQgZ2V0Um93SGVpZ2h0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMucm93SGVpZ2h0ID09IDAgPyAnJyA6IHRoaXMucm93SGVpZ2h0O1xyXG4gIH1cclxuICBnZXQgZ2V0U3RpY2t5VG9wU2Nyb2xsVG9wKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGNhcHRpb24gPyB0aGlzLnRjYXB0aW9uLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogMDtcclxuICB9XHJcbiAgZ2V0IGdldFN0aWNreUJvdHRvbVNjcm9sbFRvcCgpIHtcclxuICAgIGxldCB0b3AgPSAwO1xyXG4gICAgaWYgKHRoaXMuZm9vdGVyICYmIHRoaXMudGZvb3QpIHtcclxuICAgICAgdG9wICs9IHRoaXMudGZvb3Q/Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0ICsgMTtcclxuICAgIH1cclxuICAgIHJldHVybiB0b3A7XHJcbiAgfVxyXG4gIGdldCBnZXRTdGlja3lUb3BSaWdodEVsZUhlaWdodCgpIHtcclxuICAgIGlmICh0aGlzLnN0aWNreVRvcFJpZ2h0RWxlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnN0aWNreVRvcFJpZ2h0RWxlLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBnZXRTdGlja3lCb3R0b21SaWdodEVsZUhlaWdodCgpIHtcclxuICAgIGlmICh0aGlzLnN0aWNreUJvdHRvbVJpZ2h0RWxlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnN0aWNreUJvdHRvbVJpZ2h0RWxlLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHRjYXB0aW9uITogRWxlbWVudFJlZjtcclxuICB0aGVhZDogRWxlbWVudFJlZltdID0gW107XHJcbiAgdGZvb3QhOiBFbGVtZW50UmVmO1xyXG4gIHZpcnR1YWxCb2R5ITogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xyXG4gIGhlYWRDaGFuZ2UhOiAoKSA9PiB2b2lkO1xyXG4gIGJvZHlDaGFuZ2UhOiAoKSA9PiB2b2lkO1xyXG4gIHNjcm9sbENvbnRlbnRFbGUhOiBIVE1MRWxlbWVudDtcclxuICBoYXNTY3JvbGxZID0gZmFsc2U7XHJcbiAgc2Nyb2xsWVdpZHRoID0gMDtcclxuICBoYXNTY3JvbGxYID0gZmFsc2U7XHJcbiAgc2Nyb2xsWEhlaWdodCA9IDA7XHJcbiAgc2Nyb2xsWFdpZHRoITogbnVtYmVyIHwgbnVsbDtcclxuICBzY3JvbGxMZWZ0ID0gMDtcclxuICBzY3JvbGxMZWZ0TWF4ID0gZmFsc2U7XHJcbiAgc2Nyb2xsVG9wID0gMDtcclxuICByb3dDaGVja2VkITogWFRhYmxlQ29sdW1uO1xyXG4gIGhlYWRDaGVja2JveExpc3QhOiBYVGFibGVDb2x1bW5bXTtcclxuICByb3dFeHBhbmQhOiBYVGFibGVDb2x1bW47XHJcbiAgaGVhZEV4cGFuZExpc3QhOiBYVGFibGVDb2x1bW5bXTtcclxuICBkYXRhSXNGdW5jID0gZmFsc2U7XHJcbiAgZ2V0dGluZyA9IGZhbHNlO1xyXG4gIHRhYmxlRGF0YTogWFRhYmxlUm93W10gPSBbXTtcclxuICB0cmVlVGFibGVEYXRhOiBYVGFibGVSb3dbXSA9IFtdO1xyXG4gIGNoZWNrZWRWYWx1ZXM6IHsgW3Byb3A6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9O1xyXG4gIGluZGV0ZXJtaW5hdGUgPSAnJCRpbmRldGVybWluYXRlJztcclxuICBAVmlld0NoaWxkKCd0YWJsZScpIHRhYmxlITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdjYXB0aW9uJykgY2FwdGlvbiE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgncGFnaW5hdGlvbicpIHBhZ2luYXRpb24hOiBYUGFnaW5hdGlvbkNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdzdGlja3lUb3BSaWdodEVsZScpIHN0aWNreVRvcFJpZ2h0RWxlITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdzdGlja3lCb3R0b21SaWdodEVsZScpIHN0aWNreUJvdHRvbVJpZ2h0RWxlITogRWxlbWVudFJlZjtcclxuICBwcml2YXRlIF91blN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHVibGljIGNvbmZpZ1NlcnZpY2U6IFhDb25maWdTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnNldENsYXNzTWFwKCk7XHJcbiAgICB0aGlzLnNldFJvd0NoZWNrZWQoKTtcclxuICAgIHRoaXMuc2V0Um93RXhwYW5kKCk7XHJcbiAgICB0aGlzLnNldE1lcmdlKCk7XHJcbiAgICB0aGlzLnNldFBhZ2luYXRpb25Qb3NpdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoc2ltcGxlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgY29uc3QgeyBkYXRhLCBjaGVja2VkUm93LCBjb2x1bW5zLCBhY3RpdmF0ZWRSb3csIG1hbnVhbCwgc2hvd1BhZ2luYXRpb24sIGV4cGFuZGVkQWxsIH0gPSBzaW1wbGVzO1xyXG4gICAgWElzQ2hhbmdlKGV4cGFuZGVkQWxsKSAmJiB0aGlzLnNldEV4cGFuZGVkQWxsKCk7XHJcbiAgICBYSXNDaGFuZ2UoZGF0YSwgY2hlY2tlZFJvdykgJiYgdGhpcy5zZXREYXRhKCk7XHJcbiAgICBYSXNDaGFuZ2UoY29sdW1ucywgYWN0aXZhdGVkUm93LCBzaG93UGFnaW5hdGlvbikgJiYgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgWElzQ2hhbmdlKG1hbnVhbCkgJiYgdGhpcy5zZXRNYW51YWwoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0Lm5leHQoKTtcclxuICAgIHRoaXMuX3VuU3ViamVjdC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy50Y2FwdGlvbiA9IHRoaXMuY2FwdGlvbjtcclxuICB9XHJcblxyXG4gIHNldENsYXNzTWFwKCkge1xyXG4gICAgdGhpcy5jbGFzc01hcCA9IHtcclxuICAgICAgW2Ake1hUYWJsZVByZWZpeH0tcm93LXNpemUtJHt0aGlzLnJvd1NpemV9YF06ICFYSXNFbXB0eSh0aGlzLnJvd1NpemUpXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0UGFnaW5hdGlvblBvc2l0aW9uKCkge1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgYHgtdGFibGUtJHt0aGlzLnBhZ2luYXRpb25Qb3NpdGlvbn1gKTtcclxuICB9XHJcblxyXG4gIGdldFN0aWNreUxlZnQoY29sdW1uOiBYVGFibGVDb2x1bW4gfCBYVGFibGVDZWxsKSB7XHJcbiAgICByZXR1cm4gTnVtYmVyKGNvbHVtbi5sZWZ0KSA+PSAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RpY2t5TGVmdExhc3QoY29sdW1uOiBYVGFibGVDb2x1bW4gfCBYVGFibGVDZWxsKSB7XHJcbiAgICBsZXQgbGVmdHMgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKCh4KSA9PiBOdW1iZXIoeC5sZWZ0KSA+PSAwKTtcclxuICAgIGlmIChsZWZ0cy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBsZWZ0c1tsZWZ0cy5sZW5ndGggLSAxXS5pZCA9PT0gY29sdW1uLmlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RpY2t5UmlnaHQoY29sdW1uOiBYVGFibGVDb2x1bW4gfCBYVGFibGVDZWxsKSB7XHJcbiAgICByZXR1cm4gTnVtYmVyKGNvbHVtbi5yaWdodCkgPj0gMDtcclxuICB9XHJcblxyXG4gIGdldFN0aWNreVJpZ2h0Rmlyc3QoY29sdW1uOiBYVGFibGVDb2x1bW4gfCBYVGFibGVDZWxsKSB7XHJcbiAgICBsZXQgcmlnaHRzID0gdGhpcy5jb2x1bW5zLmZpbHRlcigoeCkgPT4gTnVtYmVyKHgucmlnaHQpID49IDApO1xyXG4gICAgaWYgKHJpZ2h0cy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiByaWdodHNbMF0uaWQgPT09IGNvbHVtbi5pZDtcclxuICB9XHJcblxyXG4gIGhhc1N0aWNreVRvcFJpZ2h0KCkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5zaG93SGVhZGVyICYmXHJcbiAgICAgICh0aGlzLmhlYWRlclBvc2l0aW9uID09PSAndG9wJyB8fCB0aGlzLmhlYWRlclBvc2l0aW9uID09PSAndG9wLWJvdHRvbScpICYmXHJcbiAgICAgIHRoaXMuY29sdW1ucy5zb21lKCh4KSA9PiBOdW1iZXIoeC5yaWdodCkgPj0gMClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBoYXNTdGlja3lUb3BSaWdodFNlYXJjaCgpIHtcclxuICAgIHJldHVybiB0aGlzLmhlYWRTZWFyY2hUcGwgPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBoYXNTdGlja3lCb3R0b21SaWdodCgpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuc2hvd0hlYWRlciAmJlxyXG4gICAgICAodGhpcy5oZWFkZXJQb3NpdGlvbiA9PT0gJ2JvdHRvbScgfHwgdGhpcy5oZWFkZXJQb3NpdGlvbiA9PT0gJ3RvcC1ib3R0b20nKSAmJlxyXG4gICAgICB0aGlzLmNvbHVtbnMuc29tZSgoeCkgPT4gTnVtYmVyKHgucmlnaHQpID49IDApXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW5kZXgoaW5kZXg6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIChOdW1iZXIodGhpcy5pbmRleCkgLSAxKSAqIE51bWJlcih0aGlzLnNpemUpICsgaW5kZXggKyAxO1xyXG4gIH1cclxuXHJcbiAgc2V0RGF0YSgpIHtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZGF0YSkpIHtcclxuICAgICAgdGhpcy5kYXRhSXNGdW5jID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2V0Q2hlY2tlZCh0aGlzLmRhdGEpO1xyXG4gICAgICB0aGlzLnNldEhlYWRDaGVja2JveExpc3QodGhpcy5kYXRhKTtcclxuICAgICAgdGhpcy5zZXRFeHBhbmQodGhpcy5kYXRhKTtcclxuICAgICAgdGhpcy5zZXRIZWFkRXhwYW5kTGlzdCgpO1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuZGF0YTtcclxuICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XHJcbiAgICAgIHRoaXMuZGF0YUlzRnVuYyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZ2V0RGF0YUJ5RnVuYygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RGF0YUJ5RnVuYygpIHtcclxuICAgIGlmICghdGhpcy5tYW51YWwpIHJldHVybjtcclxuICAgIHRoaXMuZ2V0dGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLl91blN1YmplY3QubmV4dCgpO1xyXG4gICAgKHRoaXMuZGF0YSBhcyBGdW5jdGlvbikodGhpcy5pbmRleCwgdGhpcy5zaXplLCB0aGlzLnF1ZXJ5KVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSlcclxuICAgICAgLnN1YnNjcmliZSgoeDogWFJlc3VsdExpc3Q8WFRhYmxlUm93PikgPT4ge1xyXG4gICAgICAgIGxldCBbZGF0YSwgdG90YWxdID0gW3gubGlzdCBhcyBYVGFibGVSb3dbXSwgeC50b3RhbCBhcyBYTnVtYmVyXTtcclxuICAgICAgICBpZiAodGhpcy52aXJ0dWFsQm9keSkge1xyXG4gICAgICAgICAgdGhpcy52aXJ0dWFsQm9keS5zY3JvbGxUb0luZGV4KDApO1xyXG4gICAgICAgICAgdGhpcy52aXJ0dWFsQm9keS5jaGVja1ZpZXdwb3J0U2l6ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmdldHRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNldENoZWNrZWQoZGF0YSk7XHJcbiAgICAgICAgdGhpcy5zZXRIZWFkQ2hlY2tib3hMaXN0KGRhdGEpO1xyXG4gICAgICAgIHRoaXMuc2V0RXhwYW5kKGRhdGEpO1xyXG4gICAgICAgIHRoaXMuc2V0SGVhZEV4cGFuZExpc3QoKTtcclxuICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgdGhpcy50b3RhbCA9IHRvdGFsO1xyXG4gICAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldE1hbnVhbCgpIHtcclxuICAgIGlmICh0aGlzLmRhdGFJc0Z1bmMpIHRoaXMuZ2V0RGF0YUJ5RnVuYygpO1xyXG4gIH1cclxuXHJcbiAgc2V0Um93Q2hlY2tlZCgpIHtcclxuICAgIHRoaXMucm93Q2hlY2tlZCA9IHRoaXMuY29sdW1ucy5maW5kKCh4KSA9PiB4LnJvd0NoZWNrZWQpIGFzIFhUYWJsZUNvbHVtbjtcclxuICAgIHRoaXMuaGVhZENoZWNrYm94TGlzdCA9IHRoaXMuY29sdW1ucy5maWx0ZXIoKHgpID0+IHgudHlwZSA9PT0gJ2NoZWNrYm94JyAmJiB4LmhlYWRDaGVja2VkKTtcclxuICB9XHJcblxyXG4gIHNldFJvd0V4cGFuZCgpIHtcclxuICAgIHRoaXMucm93RXhwYW5kID0gdGhpcy5jb2x1bW5zLmZpbmQoKHgpID0+IHgucm93RXhwYW5kKSBhcyBYVGFibGVDb2x1bW47XHJcbiAgfVxyXG5cclxuICBpc0V4cGFuZENvbHVtbihjb2x1bW46IFhUYWJsZUNvbHVtbikge1xyXG4gICAgbGV0IGV4cGFuZENvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKCh4KSA9PiB4LmlkID09PSBjb2x1bW4uaWQgJiYgeC50eXBlID09PSAnZXhwYW5kJyk7XHJcbiAgICBpZiAoZXhwYW5kQ29sdW1uKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2V0TWVyZ2UoKSB7XHJcbiAgICBpZiAoIXRoaXMuY2VsbENvbmZpZykgcmV0dXJuO1xyXG4gICAgY29uc3Qgc2V0UnVsZSA9IChydWxlPzogWFRhYmxlQ2VsbENvbmZpZ1J1bGUpID0+IHtcclxuICAgICAgaWYgKCFydWxlKSByZXR1cm47XHJcbiAgICAgIGxldCBncmlkVGVtcGxhdGVDb2x1bW5zID0gJycsXHJcbiAgICAgICAgY2VsbHMgPSBbXTtcclxuICAgICAgaWYgKCFydWxlLmdyaWRUZW1wbGF0ZUNvbHVtbnMpIHtcclxuICAgICAgICBncmlkVGVtcGxhdGVDb2x1bW5zID0gYCR7dGhpcy5jb2x1bW5zXHJcbiAgICAgICAgICAubWFwKCh4KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh4LndpZHRoKSByZXR1cm4geC53aWR0aDtcclxuICAgICAgICAgICAgaWYgKHguZmxleCkgcmV0dXJuIGAke3guZmxleH1mcmA7XHJcbiAgICAgICAgICAgIHJldHVybiAnMWZyJztcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuam9pbignICcpfWA7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFydWxlLmNlbGxzKSByZXR1cm47XHJcbiAgICAgIGNlbGxzID0gcnVsZS5jZWxscy5tYXAoKHkpID0+IHtcclxuICAgICAgICBjb25zdCBjb2wgPSB0aGlzLmNvbHVtbnMuZmluZCgoeikgPT4gei5pZCA9PT0geS5pZCk7XHJcbiAgICAgICAgaWYgKGNvbCkge1xyXG4gICAgICAgICAgcmV0dXJuIHsgLi4uY29sLCAuLi55IH0gYXMgWFRhYmxlQ2VsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4geyBncmlkVGVtcGxhdGVDb2x1bW5zLCBjZWxscyB9O1xyXG4gICAgfTtcclxuICAgIHRoaXMuY2VsbENvbmZpZy50aGVhZCA9IHNldFJ1bGUodGhpcy5jZWxsQ29uZmlnLnRoZWFkKTtcclxuICAgIHRoaXMuY2VsbENvbmZpZy50Ym9keSA9IHNldFJ1bGUodGhpcy5jZWxsQ29uZmlnLnRib2R5KTtcclxuICB9XHJcblxyXG4gIGNoYW5nZShpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmluZGV4ID0gaW5kZXg7XHJcbiAgICB0aGlzLmRhdGFJc0Z1bmMgJiYgdGhpcy5nZXREYXRhQnlGdW5jKCk7XHJcbiAgICB0aGlzLmluZGV4Q2hhbmdlLmVtaXQoaW5kZXgpO1xyXG4gICAgdGhpcy5yZXNldFNjcm9sbCgpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRTY3JvbGwoeCA9IHRydWUsIHkgPSB0cnVlKSB7XHJcbiAgICBpZiAodGhpcy5oYXNTY3JvbGxYICYmIHgpIHRoaXMudmlydHVhbEJvZHk/LnNjcm9sbFRvKHsgbGVmdDogMCB9KTtcclxuICAgIGlmICh0aGlzLmhhc1Njcm9sbFkgJiYgeSkgdGhpcy52aXJ0dWFsQm9keT8uc2Nyb2xsVG8oeyB0b3A6IDAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRDaGVja2VkKGRhdGE6IFhUYWJsZVJvd1tdKSB7XHJcbiAgICBsZXQgcmVzdWx0OiBYVGFibGVSb3dbXSA9IFtdO1xyXG4gICAgaWYgKFhJc0VtcHR5KGRhdGEpIHx8ICF0aGlzLmNoZWNrZWRSb3cpIHJldHVybjtcclxuICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmNoZWNrZWRSb3cpIHtcclxuICAgICAgY29uc3QgYXJyID0gdGhpcy5jaGVja2VkUm93W2tleV07XHJcbiAgICAgIGZvciAobGV0IGl0ZW0gb2YgZGF0YSBhcyBhbnlbXSkge1xyXG4gICAgICAgIGl0ZW1ba2V5XSA9IGFyci5pbmNsdWRlcyhpdGVtLmlkKTtcclxuICAgICAgICByZXN1bHQgPSBbLi4ucmVzdWx0LCBpdGVtXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSBkYXRhID0gWy4uLnJlc3VsdF07XHJcbiAgfVxyXG5cclxuICBzZXRIZWFkQ2hlY2tib3hMaXN0KGRhdGE6IFhUYWJsZVJvd1tdKSB7XHJcbiAgICBpZiAoWElzRW1wdHkoZGF0YSkgfHwgIXRoaXMuaGVhZENoZWNrYm94TGlzdCkgcmV0dXJuO1xyXG4gICAgZm9yIChsZXQgY29sdW1uIG9mIHRoaXMuaGVhZENoZWNrYm94TGlzdCkge1xyXG4gICAgICB0aGlzLnNldENoZWNrZWRWYWx1ZXMoY29sdW1uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEV4cGFuZChkYXRhOiBYVGFibGVSb3dbXSkge1xyXG4gICAgY29uc3QgZ2V0Q2hpbGRyZW4gPSAobm9kZTogWFRhYmxlUm93LCBsZXZlbDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIG5vZGUubGV2ZWwgPSBsZXZlbDtcclxuICAgICAgbm9kZS5leHBhbmRlZCA9IEJvb2xlYW4odGhpcy5leHBhbmRlZEFsbCkgfHwgbGV2ZWwgPD0gdGhpcy5leHBhbmRlZExldmVsIHx8IHRoaXMuZXhwYW5kZWQuaW5jbHVkZXMobm9kZS5pZCk7XHJcbiAgICAgIGlmIChYSXNVbmRlZmluZWQobm9kZS5jaGlsZHJlbikpIG5vZGUuY2hpbGRyZW4gPSBkYXRhLmZpbHRlcigoeSkgPT4geS5waWQgPT09IG5vZGUuaWQpO1xyXG4gICAgICBpZiAoWElzVW5kZWZpbmVkKG5vZGUubGVhZikpIG5vZGUubGVhZiA9IChub2RlLmNoaWxkcmVuPy5sZW5ndGggYXMgbnVtYmVyKSA+IDA7XHJcbiAgICAgIGlmIChub2RlLmxlYWYpIG5vZGUuY2hpbGRyZW4/Lm1hcCgoeSkgPT4gZ2V0Q2hpbGRyZW4oeSwgbGV2ZWwgKyAxKSk7XHJcbiAgICAgIHJldHVybiBub2RlO1xyXG4gICAgfTtcclxuICAgIHRoaXMudHJlZVRhYmxlRGF0YSA9IGRhdGFcclxuICAgICAgLmZpbHRlcigoeCkgPT4gWElzRW1wdHkoeC5waWQpKVxyXG4gICAgICAubWFwKCh4LCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmIChYSXNVbmRlZmluZWQoeC5pZCkpIHguaWQgPSBpbmRleCArIDE7XHJcbiAgICAgICAgcmV0dXJuIGdldENoaWxkcmVuKHgsIDApO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldEV4cGFuZGVkQWxsKCkge1xyXG4gICAgaWYgKCF0aGlzLnRyZWVUYWJsZSB8fCB0aGlzLnRyZWVUYWJsZURhdGE/Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgY29uc3Qgc2V0Q2hpbGRyZW4gPSAobm9kZXM6IFhUYWJsZVJvd1tdKSA9PiB7XHJcbiAgICAgIGlmIChYSXNFbXB0eShub2RlcykpIHJldHVybjtcclxuICAgICAgbm9kZXMuZm9yRWFjaCgoeCkgPT4ge1xyXG4gICAgICAgIHguZXhwYW5kZWQgPSBCb29sZWFuKHRoaXMuZXhwYW5kZWRBbGwpO1xyXG4gICAgICAgIHNldENoaWxkcmVuKHguY2hpbGRyZW4gYXMgWFRhYmxlUm93W10pO1xyXG4gICAgICB9KTtcclxuICAgIH07XHJcbiAgICBzZXRDaGlsZHJlbih0aGlzLnRyZWVUYWJsZURhdGEpO1xyXG4gICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRIZWFkRXhwYW5kTGlzdCgpIHt9XHJcblxyXG4gIGNoZWNrU29ydChzb3J0OiBYU29ydFtdKSB7XHJcbiAgICBpZiAoIXRoaXMuZGF0YUlzRnVuYykgcmV0dXJuO1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLnF1ZXJ5ID09PSAndW5kZWZpbmVkJykgdGhpcy5xdWVyeSA9IHt9O1xyXG4gICAgdGhpcy5xdWVyeS5zb3J0ID0gc29ydDtcclxuICAgIHRoaXMucXVlcnlDaGFuZ2UuZW1pdCh0aGlzLnF1ZXJ5KTtcclxuICAgIHRoaXMuZ2V0RGF0YUJ5RnVuYygpO1xyXG4gIH1cclxuXHJcbiAgaGVhZENoZWNrZWQoY2hlY2tlZDogYm9vbGVhbiwgY29sdW1uOiBYVGFibGVDb2x1bW4pIHtcclxuICAgIHRoaXMudGFibGVEYXRhLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgeFtjb2x1bW4uaWRdID0gY2hlY2tlZDtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRDaGVja2VkVmFsdWVzKGNvbHVtbik7XHJcbiAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGJvZHlDaGVja2VkKF9jaGVja2VkOiBib29sZWFuLCBjb2x1bW46IFhUYWJsZUNvbHVtbikge1xyXG4gICAgdGhpcy5zZXRDaGVja2VkVmFsdWVzKGNvbHVtbik7XHJcbiAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNldENoZWNrZWRWYWx1ZXMoY29sdW1uOiBYVGFibGVDb2x1bW4pIHtcclxuICAgIGNvbnN0IGNvdW50ID0gdGhpcy50YWJsZURhdGEubGVuZ3RoO1xyXG4gICAgY29uc3QgY2hlY2tlZExlbiA9IHRoaXMudGFibGVEYXRhLmZpbHRlcigoeCkgPT4geFtjb2x1bW4uaWRdKS5sZW5ndGg7XHJcbiAgICB0aGlzLmNoZWNrZWRWYWx1ZXNbY29sdW1uLmlkXSA9IGNvdW50ID09PSBjaGVja2VkTGVuO1xyXG4gICAgdGhpcy5jaGVja2VkVmFsdWVzW2NvbHVtbi5pZCArIHRoaXMuaW5kZXRlcm1pbmF0ZV0gPSBjaGVja2VkTGVuID4gMCAmJiBjaGVja2VkTGVuIDwgY291bnQ7XHJcbiAgfVxyXG5cclxuICBkZXRlY3RDaGFuZ2VzKCkge1xyXG4gICAgdGhpcy5ib2R5Q2hhbmdlICYmIHRoaXMuYm9keUNoYW5nZSgpO1xyXG4gICAgdGhpcy5oZWFkQ2hhbmdlICYmIHRoaXMuaGVhZENoYW5nZSgpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxufVxyXG4iLCI8dGFibGVcclxuICAjdGFibGVcclxuICBjbGFzcz1cIngtdGFibGVcIlxyXG4gIFtuZ0NsYXNzXT1cImNsYXNzTWFwXCJcclxuICBbeC1sb2FkaW5nXT1cImxvYWRpbmcgJiYgZ2V0dGluZ1wiXHJcbiAgW2NsYXNzLngtdGFibGUtc2Nyb2xsLWxlZnRdPVwiZ2V0U2Nyb2xsTGVmdFwiXHJcbiAgW2NsYXNzLngtdGFibGUtc2Nyb2xsLWxlZnQtbWF4XT1cInNjcm9sbExlZnRNYXhcIlxyXG4gIFtjbGFzcy54LXRhYmxlLXNjcm9sbC10b3BdPVwiZ2V0U2Nyb2xsVG9wXCJcclxuICBbY2xhc3MueC10YWJsZS1oYXMtc2Nyb2xsLXJpZ2h0XT1cInNjcm9sbFlXaWR0aFwiXHJcbiAgW2NsYXNzLngtdGFibGUtaGFzLXNjcm9sbC1ib3R0b21dPVwic2Nyb2xsWFdpZHRoXCJcclxuICBbY2xhc3MueC10YWJsZS1ib3JkZXJlZF09XCJib3JkZXJlZFwiXHJcbiAgW2NsYXNzLngtdGFibGUtdGQtYWRhcHRpb24taGVpZ2h0XT1cInJvd0hlaWdodCA9PSAwXCJcclxuICBbY2xhc3MueC10YWJsZS1jZWxsLWNvbmZpZ109XCJjZWxsQ29uZmlnXCJcclxuPlxyXG4gIDxjYXB0aW9uICNjYXB0aW9uIGNsYXNzPVwieC10YWJsZS1oZWFkZXJcIiAqbmdJZj1cImhlYWRlclwiIFtzdHlsZS5oZWlnaHQucHhdPVwiZ2V0Um93SGVpZ2h0XCIgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiZ2V0Um93SGVpZ2h0XCI+XHJcbiAgICA8bmctY29udGFpbmVyICp4T3V0bGV0PVwiaGVhZGVyXCI+e3sgaGVhZGVyIH19PC9uZy1jb250YWluZXI+XHJcbiAgPC9jYXB0aW9uPlxyXG4gIDx4LXRhYmxlLWhlYWRcclxuICAgICpuZ0lmPVwic2hvd0hlYWRlciAmJiAoaGVhZGVyUG9zaXRpb24gPT09ICd0b3AnIHx8IGhlYWRlclBvc2l0aW9uID09PSAndG9wLWJvdHRvbScpXCJcclxuICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxyXG4gICAgW3Jvd0hlaWdodF09XCJyb3dIZWlnaHRcIlxyXG4gICAgW2NvbHVtblRwbF09XCJoZWFkQ29sdW1uVHBsXCJcclxuICAgIFtzY3JvbGxZV2lkdGhdPVwic2Nyb2xsWVdpZHRoXCJcclxuICAgIFtzY3JvbGxYV2lkdGhdPVwic2Nyb2xsWFdpZHRoXCJcclxuICAgIFtjZWxsQ29uZmlnXT1cImNlbGxDb25maWc/LnRoZWFkXCJcclxuICAgIFtwb3NpdGlvbl09XCIndG9wJ1wiXHJcbiAgICBbdGFibGVdPVwidGhpc1wiXHJcbiAgPjwveC10YWJsZS1oZWFkPlxyXG4gIDx4LXRhYmxlLWJvZHlcclxuICAgIFtkYXRhXT1cInRyZWVUYWJsZSA/IHRyZWVUYWJsZURhdGEgOiB0YWJsZURhdGFcIlxyXG4gICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXHJcbiAgICBbaXRlbVNpemVdPVwiaXRlbVNpemVcIlxyXG4gICAgW3Jvd0hlaWdodF09XCJyb3dIZWlnaHRcIlxyXG4gICAgW2JvZHlIZWlnaHRdPVwiYm9keUhlaWdodFwiXHJcbiAgICBbY29sdW1uVHBsXT1cImJvZHlDb2x1bW5UcGxcIlxyXG4gICAgW2FsbG93U2VsZWN0Um93XT1cImFsbG93U2VsZWN0Um93XCJcclxuICAgIFt2aXJ0dWFsU2Nyb2xsXT1cInZpcnR1YWxTY3JvbGxcIlxyXG4gICAgW21pbkJ1ZmZlclB4XT1cIm1pbkJ1ZmZlclB4XCJcclxuICAgIFttYXhCdWZmZXJQeF09XCJtYXhCdWZmZXJQeFwiXHJcbiAgICBbYWRhcHRpb25IZWlnaHRdPVwiYWRhcHRpb25IZWlnaHRcIlxyXG4gICAgW2RvY1BlcmNlbnRdPVwiZG9jUGVyY2VudFwiXHJcbiAgICBbc2Nyb2xsXT1cInNjcm9sbFwiXHJcbiAgICBbcm93Q2xhc3NdPVwicm93Q2xhc3NcIlxyXG4gICAgW2NlbGxDb25maWddPVwiY2VsbENvbmZpZz8udGJvZHlcIlxyXG4gICAgW2V4cGFuZGVkQWxsXT1cImV4cGFuZGVkQWxsXCJcclxuICAgIFtleHBhbmRUcGxdPVwiZXhwYW5kVHBsXCJcclxuICAgIFsoYWN0aXZhdGVkUm93KV09XCJhY3RpdmF0ZWRSb3dcIlxyXG4gICAgKGFjdGl2YXRlZFJvd0NoYW5nZSk9XCJhY3RpdmF0ZWRSb3dDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcclxuICAgIFt0YWJsZV09XCJ0aGlzXCJcclxuICA+PC94LXRhYmxlLWJvZHk+XHJcbiAgPHgtdGFibGUtaGVhZFxyXG4gICAgKm5nSWY9XCJzaG93SGVhZGVyICYmIChoZWFkZXJQb3NpdGlvbiA9PT0gJ2JvdHRvbScgfHwgaGVhZGVyUG9zaXRpb24gPT09ICd0b3AtYm90dG9tJylcIlxyXG4gICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXHJcbiAgICBbcm93SGVpZ2h0XT1cInJvd0hlaWdodFwiXHJcbiAgICBbY29sdW1uVHBsXT1cImhlYWRDb2x1bW5UcGxcIlxyXG4gICAgW3Njcm9sbFlXaWR0aF09XCJzY3JvbGxZV2lkdGhcIlxyXG4gICAgW3Njcm9sbFhXaWR0aF09XCJzY3JvbGxYV2lkdGhcIlxyXG4gICAgW2NlbGxDb25maWddPVwiY2VsbENvbmZpZz8udGhlYWRcIlxyXG4gICAgW3Bvc2l0aW9uXT1cIidib3R0b20nXCJcclxuICAgIFt0YWJsZV09XCJ0aGlzXCJcclxuICA+PC94LXRhYmxlLWhlYWQ+XHJcbiAgPHgtdGFibGUtZm9vdCAqbmdJZj1cImZvb3RlclwiIFt0YWJsZV09XCJ0aGlzXCIgW2Zvb3Rlcl09XCJmb290ZXJcIiBbcm93SGVpZ2h0XT1cInJvd0hlaWdodFwiPjwveC10YWJsZS1mb290PlxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwiaGFzU3RpY2t5VG9wUmlnaHQoKVwiXHJcbiAgICAjc3RpY2t5VG9wUmlnaHRFbGVcclxuICAgIGNsYXNzPVwieC10YWJsZS1zdGlja3ktcmlnaHQtc2Nyb2xsXCJcclxuICAgIFtjbGFzcy54LXRhYmxlLWJvcmRlci1ib3R0b21dPVwiaGVhZFNlYXJjaFRwbFwiXHJcbiAgICBbc3R5bGUudG9wLnB4XT1cImdldFN0aWNreVRvcFNjcm9sbFRvcFwiXHJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwic2Nyb2xsWVdpZHRoXCJcclxuICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiZ2V0Um93SGVpZ2h0XCJcclxuICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImdldFJvd0hlaWdodFwiXHJcbiAgPjwvZGl2PlxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwiaGFzU3RpY2t5VG9wUmlnaHQoKSAmJiBoZWFkU2VhcmNoVHBsXCJcclxuICAgIGNsYXNzPVwieC10YWJsZS1zdGlja3ktcmlnaHQtc2Nyb2xsXCJcclxuICAgIFtzdHlsZS50b3AucHhdPVwiZ2V0U3RpY2t5VG9wU2Nyb2xsVG9wICsgZ2V0U3RpY2t5VG9wUmlnaHRFbGVIZWlnaHRcIlxyXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cInNjcm9sbFlXaWR0aFwiXHJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImdldFJvd0hlaWdodFwiXHJcbiAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJnZXRSb3dIZWlnaHRcIlxyXG4gID48L2Rpdj5cclxuICA8ZGl2XHJcbiAgICAqbmdJZj1cImhhc1N0aWNreUJvdHRvbVJpZ2h0KClcIlxyXG4gICAgI3N0aWNreUJvdHRvbVJpZ2h0RWxlXHJcbiAgICBjbGFzcz1cIngtdGFibGUtc3RpY2t5LXJpZ2h0LXNjcm9sbFwiXHJcbiAgICBbc3R5bGUuYm90dG9tLnB4XT1cImdldFN0aWNreUJvdHRvbVNjcm9sbFRvcFwiXHJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwic2Nyb2xsWVdpZHRoXCJcclxuICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiZ2V0Um93SGVpZ2h0XCJcclxuICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImdldFJvd0hlaWdodFwiXHJcbiAgPjwvZGl2PlxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwiaGFzU3RpY2t5Qm90dG9tUmlnaHQoKSAmJiBoZWFkU2VhcmNoVHBsXCJcclxuICAgIGNsYXNzPVwieC10YWJsZS1zdGlja3ktcmlnaHQtc2Nyb2xsXCJcclxuICAgIFtjbGFzcy54LXRhYmxlLWJvcmRlci1ib3R0b21dPVwiaGVhZFNlYXJjaFRwbFwiXHJcbiAgICBbc3R5bGUuYm90dG9tLnB4XT1cImdldFN0aWNreUJvdHRvbVNjcm9sbFRvcCArIGdldFN0aWNreUJvdHRvbVJpZ2h0RWxlSGVpZ2h0XCJcclxuICAgIFtzdHlsZS53aWR0aC5weF09XCJzY3JvbGxZV2lkdGhcIlxyXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJnZXRSb3dIZWlnaHRcIlxyXG4gICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiZ2V0Um93SGVpZ2h0XCJcclxuICA+PC9kaXY+XHJcbjwvdGFibGU+XHJcbjx4LXBhZ2luYXRpb25cclxuICAjcGFnaW5hdGlvblxyXG4gICpuZ0lmPVwic2hvd1BhZ2luYXRpb24gJiYgc2l6ZVwiXHJcbiAgWyhpbmRleCldPVwiaW5kZXhcIlxyXG4gIFsoc2l6ZSldPVwic2l6ZVwiXHJcbiAgWyhxdWVyeSldPVwicXVlcnlcIlxyXG4gIFt0b3RhbF09XCJ0b3RhbFwiXHJcbiAgKGluZGV4Q2hhbmdlKT1cImNoYW5nZSgkZXZlbnQpXCJcclxuICBbc2hvd0VsbGlwc2lzXT1cInNob3dFbGxpcHNpc1wiXHJcbiAgW3Nob3dUb3RhbF09XCJzaG93VG90YWxcIlxyXG4gIFtzcGFjZV09XCJzcGFjZVwiXHJcbiAgW2hpZGRlbkJvcmRlcl09XCJoaWRkZW5Cb3JkZXJcIlxyXG4+XHJcbjwveC1wYWdpbmF0aW9uPlxyXG4iXX0=
347
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxpQkFBaUIsRUFJakIsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBNkQsTUFBTSxrQkFBa0IsQ0FBQztBQUMzSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBK0MsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHbEgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7QUFTL0IsTUFBTSxPQUFPLGVBQWdCLFNBQVEsY0FBYztJQWlFakQsWUFDUyxRQUFtQixFQUNuQixVQUFzQixFQUN0QixHQUFzQixFQUN0QixhQUE2QjtRQUVwQyxLQUFLLEVBQUUsQ0FBQztRQUxELGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFsQ3RDLFVBQUssR0FBaUIsRUFBRSxDQUFDO1FBTXpCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUVsQixlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2Ysa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIs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QkFBdUIsQ0FBQyxNQUFNO3NMQTZEM0IsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUNJLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDSyxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ1MsaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDSyxvQkFBb0I7c0JBQXRELFNBQVM7dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIFJlbmRlcmVyMixcclxuICBFbGVtZW50UmVmLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG4gIE9uRGVzdHJveVxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYVGFibGVQcmVmaXgsIFhUYWJsZVByb3BlcnR5LCBYVGFibGVDb2x1bW4sIFhUYWJsZVJvdywgWFRhYmxlQ2VsbCwgWFRhYmxlQ2VsbENvbmZpZ1J1bGUgfSBmcm9tICcuL3RhYmxlLnByb3BlcnR5JztcclxuaW1wb3J0IHsgWElzQ2hhbmdlLCBYSXNFbXB0eSwgWFJlc3VsdExpc3QsIFhOdW1iZXIsIFhTb3J0LCBYQ29uZmlnU2VydmljZSwgWElzVW5kZWZpbmVkIH0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xyXG5pbXBvcnQgeyBYUGFnaW5hdGlvbkNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL3BhZ2luYXRpb24nO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgJHtYVGFibGVQcmVmaXh9YCxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWFRhYmxlQ29tcG9uZW50IGV4dGVuZHMgWFRhYmxlUHJvcGVydHkgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgZ2V0IGdldFNjcm9sbExlZnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zY3JvbGxMZWZ0ID4gMDtcclxuICB9XHJcbiAgZ2V0IGdldFNjcm9sbFRvcCgpIHtcclxuICAgIHJldHVybiB0aGlzLnNjcm9sbFRvcCA+IDA7XHJcbiAgfVxyXG4gIGdldCBnZXRSb3dIZWlnaHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3dIZWlnaHQgPT0gMCA/ICcnIDogdGhpcy5yb3dIZWlnaHQ7XHJcbiAgfVxyXG4gIGdldCBnZXRTdGlja3lUb3BTY3JvbGxUb3AoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50Y2FwdGlvbiA/IHRoaXMudGNhcHRpb24ubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgOiAwO1xyXG4gIH1cclxuICBnZXQgZ2V0U3RpY2t5Qm90dG9tU2Nyb2xsVG9wKCkge1xyXG4gICAgbGV0IHRvcCA9IDA7XHJcbiAgICBpZiAodGhpcy5mb290ZXIgJiYgdGhpcy50Zm9vdCkge1xyXG4gICAgICB0b3AgKz0gdGhpcy50Zm9vdD8ubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgKyAxO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvcDtcclxuICB9XHJcbiAgZ2V0IGdldFN0aWNreVRvcFJpZ2h0RWxlSGVpZ2h0KCkge1xyXG4gICAgaWYgKHRoaXMuc3RpY2t5VG9wUmlnaHRFbGUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc3RpY2t5VG9wUmlnaHRFbGUubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGdldFN0aWNreUJvdHRvbVJpZ2h0RWxlSGVpZ2h0KCkge1xyXG4gICAgaWYgKHRoaXMuc3RpY2t5Qm90dG9tUmlnaHRFbGUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc3RpY2t5Qm90dG9tUmlnaHRFbGUubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICB9XHJcbiAgdGNhcHRpb24hOiBFbGVtZW50UmVmO1xyXG4gIHRoZWFkOiBFbGVtZW50UmVmW10gPSBbXTtcclxuICB0Zm9vdCE6IEVsZW1lbnRSZWY7XHJcbiAgdmlydHVhbEJvZHkhOiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XHJcbiAgaGVhZENoYW5nZSE6ICgpID0+IHZvaWQ7XHJcbiAgYm9keUNoYW5nZSE6ICgpID0+IHZvaWQ7XHJcbiAgc2Nyb2xsQ29udGVudEVsZSE6IEhUTUxFbGVtZW50O1xyXG4gIGhhc1Njcm9sbFkgPSBmYWxzZTtcclxuICBzY3JvbGxZV2lkdGggPSAwO1xyXG4gIGhhc1Njcm9sbFggPSBmYWxzZTtcclxuICBzY3JvbGxYSGVpZ2h0ID0gMDtcclxuICBzY3JvbGxYV2lkdGghOiBudW1iZXIgfCBudWxsO1xyXG4gIHNjcm9sbExlZnQgPSAwO1xyXG4gIHNjcm9sbExlZnRNYXggPSBmYWxzZTtcclxuICBzY3JvbGxUb3AgPSAwO1xyXG4gIHJvd0NoZWNrZWQhOiBYVGFibGVDb2x1bW47XHJcbiAgaGVhZENoZWNrYm94TGlzdCE6IFhUYWJsZUNvbHVtbltdO1xyXG4gIHJvd0V4cGFuZCE6IFhUYWJsZUNvbHVtbjtcclxuICBoZWFkRXhwYW5kTGlzdCE6IFhUYWJsZUNvbHVtbltdO1xyXG4gIGRhdGFJc0Z1bmMgPSBmYWxzZTtcclxuICBnZXR0aW5nID0gZmFsc2U7XHJcbiAgdGFibGVEYXRhOiBYVGFibGVSb3dbXSA9IFtdO1xyXG4gIHRyZWVUYWJsZURhdGE6IFhUYWJsZVJvd1tdID0gW107XHJcbiAgY2hlY2tlZFZhbHVlczogeyBbcHJvcDogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XHJcbiAgaW5kZXRlcm1pbmF0ZSA9ICckJGluZGV0ZXJtaW5hdGUnO1xyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJykgdGFibGUhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2NhcHRpb24nKSBjYXB0aW9uITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdwYWdpbmF0aW9uJykgcGFnaW5hdGlvbiE6IFhQYWdpbmF0aW9uQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ3N0aWNreVRvcFJpZ2h0RWxlJykgc3RpY2t5VG9wUmlnaHRFbGUhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3N0aWNreUJvdHRvbVJpZ2h0RWxlJykgc3RpY2t5Qm90dG9tUmlnaHRFbGUhOiBFbGVtZW50UmVmO1xyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogWENvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0Q2xhc3NNYXAoKTtcclxuICAgIHRoaXMuc2V0Um93Q2hlY2tlZCgpO1xyXG4gICAgdGhpcy5zZXRSb3dFeHBhbmQoKTtcclxuICAgIHRoaXMuc2V0TWVyZ2UoKTtcclxuICAgIHRoaXMuc2V0UGFnaW5hdGlvblBvc2l0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhzaW1wbGVzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBjb25zdCB7IGRhdGEsIGNoZWNrZWRSb3csIGNvbHVtbnMsIGFjdGl2YXRlZFJvdywgbWFudWFsLCBzaG93UGFnaW5hdGlvbiwgZXhwYW5kZWRBbGwgfSA9IHNpbXBsZXM7XHJcbiAgICBYSXNDaGFuZ2UoZXhwYW5kZWRBbGwpICYmIHRoaXMuc2V0RXhwYW5kZWRBbGwoKTtcclxuICAgIFhJc0NoYW5nZShkYXRhLCBjaGVja2VkUm93KSAmJiB0aGlzLnNldERhdGEoKTtcclxuICAgIFhJc0NoYW5nZShjb2x1bW5zLCBhY3RpdmF0ZWRSb3csIHNob3dQYWdpbmF0aW9uKSAmJiB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBYSXNDaGFuZ2UobWFudWFsKSAmJiB0aGlzLnNldE1hbnVhbCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLl91blN1YmplY3QubmV4dCgpO1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLnRjYXB0aW9uID0gdGhpcy5jYXB0aW9uO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2xhc3NNYXAoKSB7XHJcbiAgICB0aGlzLmNsYXNzTWFwID0ge1xyXG4gICAgICBbYCR7WFRhYmxlUHJlZml4fS1yb3ctc2l6ZS0ke3RoaXMucm93U2l6ZX1gXTogIVhJc0VtcHR5KHRoaXMucm93U2l6ZSlcclxuICAgIH07XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRQYWdpbmF0aW9uUG9zaXRpb24oKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBgeC10YWJsZS0ke3RoaXMucGFnaW5hdGlvblBvc2l0aW9ufWApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RpY2t5TGVmdChjb2x1bW46IFhUYWJsZUNvbHVtbiB8IFhUYWJsZUNlbGwpIHtcclxuICAgIHJldHVybiBOdW1iZXIoY29sdW1uLmxlZnQpID49IDA7XHJcbiAgfVxyXG5cclxuICBnZXRTdGlja3lMZWZ0TGFzdChjb2x1bW46IFhUYWJsZUNvbHVtbiB8IFhUYWJsZUNlbGwpIHtcclxuICAgIGxldCBsZWZ0cyA9IHRoaXMuY29sdW1ucy5maWx0ZXIoKHgpID0+IE51bWJlcih4LmxlZnQpID49IDApO1xyXG4gICAgaWYgKGxlZnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIGxlZnRzW2xlZnRzLmxlbmd0aCAtIDFdLmlkID09PSBjb2x1bW4uaWQ7XHJcbiAgfVxyXG5cclxuICBnZXRTdGlja3lSaWdodChjb2x1bW46IFhUYWJsZUNvbHVtbiB8IFhUYWJsZUNlbGwpIHtcclxuICAgIHJldHVybiBOdW1iZXIoY29sdW1uLnJpZ2h0KSA+PSAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RpY2t5UmlnaHRGaXJzdChjb2x1bW46IFhUYWJsZUNvbHVtbiB8IFhUYWJsZUNlbGwpIHtcclxuICAgIGxldCByaWdodHMgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKCh4KSA9PiBOdW1iZXIoeC5yaWdodCkgPj0gMCk7XHJcbiAgICBpZiAocmlnaHRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIHJpZ2h0c1swXS5pZCA9PT0gY29sdW1uLmlkO1xyXG4gIH1cclxuXHJcbiAgaGFzU3RpY2t5VG9wUmlnaHQoKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLnNob3dIZWFkZXIgJiZcclxuICAgICAgKHRoaXMuaGVhZGVyUG9zaXRpb24gPT09ICd0b3AnIHx8IHRoaXMuaGVhZGVyUG9zaXRpb24gPT09ICd0b3AtYm90dG9tJykgJiZcclxuICAgICAgdGhpcy5jb2x1bW5zLnNvbWUoKHgpID0+IE51bWJlcih4LnJpZ2h0KSA+PSAwKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGhhc1N0aWNreVRvcFJpZ2h0U2VhcmNoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaGVhZFNlYXJjaFRwbCA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGhhc1N0aWNreUJvdHRvbVJpZ2h0KCkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5zaG93SGVhZGVyICYmXHJcbiAgICAgICh0aGlzLmhlYWRlclBvc2l0aW9uID09PSAnYm90dG9tJyB8fCB0aGlzLmhlYWRlclBvc2l0aW9uID09PSAndG9wLWJvdHRvbScpICYmXHJcbiAgICAgIHRoaXMuY29sdW1ucy5zb21lKCh4KSA9PiBOdW1iZXIoeC5yaWdodCkgPj0gMClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRJbmRleChpbmRleDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gKE51bWJlcih0aGlzLmluZGV4KSAtIDEpICogTnVtYmVyKHRoaXMuc2l6ZSkgKyBpbmRleCArIDE7XHJcbiAgfVxyXG5cclxuICBzZXREYXRhKCkge1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5kYXRhKSkge1xyXG4gICAgICB0aGlzLmRhdGFJc0Z1bmMgPSBmYWxzZTtcclxuICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLmRhdGE7XHJcbiAgICAgIHRoaXMuc2V0Q2hlY2tlZCh0aGlzLmRhdGEpO1xyXG4gICAgICB0aGlzLnNldEhlYWRDaGVja2JveExpc3QodGhpcy5kYXRhKTtcclxuICAgICAgdGhpcy5zZXRFeHBhbmQodGhpcy5kYXRhKTtcclxuICAgICAgdGhpcy5zZXRIZWFkRXhwYW5kTGlzdCgpO1xyXG4gICAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5kYXRhIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcclxuICAgICAgdGhpcy5kYXRhSXNGdW5jID0gdHJ1ZTtcclxuICAgICAgdGhpcy5nZXREYXRhQnlGdW5jKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXREYXRhQnlGdW5jKCkge1xyXG4gICAgaWYgKCF0aGlzLm1hbnVhbCkgcmV0dXJuO1xyXG4gICAgdGhpcy5nZXR0aW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuX3VuU3ViamVjdC5uZXh0KCk7XHJcbiAgICAodGhpcy5kYXRhIGFzIEZ1bmN0aW9uKSh0aGlzLmluZGV4LCB0aGlzLnNpemUsIHRoaXMucXVlcnkpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh4OiBYUmVzdWx0TGlzdDxYVGFibGVSb3c+KSA9PiB7XHJcbiAgICAgICAgbGV0IFtkYXRhLCB0b3RhbF0gPSBbeC5saXN0IGFzIFhUYWJsZVJvd1tdLCB4LnRvdGFsIGFzIFhOdW1iZXJdO1xyXG4gICAgICAgIGlmICh0aGlzLnZpcnR1YWxCb2R5KSB7XHJcbiAgICAgICAgICB0aGlzLnZpcnR1YWxCb2R5LnNjcm9sbFRvSW5kZXgoMCk7XHJcbiAgICAgICAgICB0aGlzLnZpcnR1YWxCb2R5LmNoZWNrVmlld3BvcnRTaXplKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZ2V0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gZGF0YTtcclxuICAgICAgICB0aGlzLnNldENoZWNrZWQoZGF0YSk7XHJcbiAgICAgICAgdGhpcy5zZXRIZWFkQ2hlY2tib3hMaXN0KGRhdGEpO1xyXG4gICAgICAgIHRoaXMuc2V0RXhwYW5kKGRhdGEpO1xyXG4gICAgICAgIHRoaXMuc2V0SGVhZEV4cGFuZExpc3QoKTtcclxuICAgICAgICB0aGlzLnRvdGFsID0gdG90YWw7XHJcbiAgICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0TWFudWFsKCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YUlzRnVuYykgdGhpcy5nZXREYXRhQnlGdW5jKCk7XHJcbiAgfVxyXG5cclxuICBzZXRSb3dDaGVja2VkKCkge1xyXG4gICAgdGhpcy5yb3dDaGVja2VkID0gdGhpcy5jb2x1bW5zLmZpbmQoKHgpID0+IHgucm93Q2hlY2tlZCkgYXMgWFRhYmxlQ29sdW1uO1xyXG4gICAgdGhpcy5oZWFkQ2hlY2tib3hMaXN0ID0gdGhpcy5jb2x1bW5zLmZpbHRlcigoeCkgPT4geC50eXBlID09PSAnY2hlY2tib3gnICYmIHguaGVhZENoZWNrZWQpO1xyXG4gIH1cclxuXHJcbiAgc2V0Um93RXhwYW5kKCkge1xyXG4gICAgdGhpcy5yb3dFeHBhbmQgPSB0aGlzLmNvbHVtbnMuZmluZCgoeCkgPT4geC5yb3dFeHBhbmQpIGFzIFhUYWJsZUNvbHVtbjtcclxuICB9XHJcblxyXG4gIGlzRXhwYW5kQ29sdW1uKGNvbHVtbjogWFRhYmxlQ29sdW1uKSB7XHJcbiAgICBsZXQgZXhwYW5kQ29sdW1uID0gdGhpcy5jb2x1bW5zLmZpbmQoKHgpID0+IHguaWQgPT09IGNvbHVtbi5pZCAmJiB4LnR5cGUgPT09ICdleHBhbmQnKTtcclxuICAgIGlmIChleHBhbmRDb2x1bW4pIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzZXRNZXJnZSgpIHtcclxuICAgIGlmICghdGhpcy5jZWxsQ29uZmlnKSByZXR1cm47XHJcbiAgICBjb25zdCBzZXRSdWxlID0gKHJ1bGU/OiBYVGFibGVDZWxsQ29uZmlnUnVsZSkgPT4ge1xyXG4gICAgICBpZiAoIXJ1bGUpIHJldHVybjtcclxuICAgICAgbGV0IGdyaWRUZW1wbGF0ZUNvbHVtbnMgPSAnJyxcclxuICAgICAgICBjZWxscyA9IFtdO1xyXG4gICAgICBpZiAoIXJ1bGUuZ3JpZFRlbXBsYXRlQ29sdW1ucykge1xyXG4gICAgICAgIGdyaWRUZW1wbGF0ZUNvbHVtbnMgPSBgJHt0aGlzLmNvbHVtbnNcclxuICAgICAgICAgIC5tYXAoKHgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHgud2lkdGgpIHJldHVybiB4LndpZHRoO1xyXG4gICAgICAgICAgICBpZiAoeC5mbGV4KSByZXR1cm4gYCR7eC5mbGV4fWZyYDtcclxuICAgICAgICAgICAgcmV0dXJuICcxZnInO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5qb2luKCcgJyl9YDtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXJ1bGUuY2VsbHMpIHJldHVybjtcclxuICAgICAgY2VsbHMgPSBydWxlLmNlbGxzLm1hcCgoeSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbCA9IHRoaXMuY29sdW1ucy5maW5kKCh6KSA9PiB6LmlkID09PSB5LmlkKTtcclxuICAgICAgICBpZiAoY29sKSB7XHJcbiAgICAgICAgICByZXR1cm4geyAuLi5jb2wsIC4uLnkgfSBhcyBYVGFibGVDZWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4geTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiB7IGdyaWRUZW1wbGF0ZUNvbHVtbnMsIGNlbGxzIH07XHJcbiAgICB9O1xyXG4gICAgdGhpcy5jZWxsQ29uZmlnLnRoZWFkID0gc2V0UnVsZSh0aGlzLmNlbGxDb25maWcudGhlYWQpO1xyXG4gICAgdGhpcy5jZWxsQ29uZmlnLnRib2R5ID0gc2V0UnVsZSh0aGlzLmNlbGxDb25maWcudGJvZHkpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlKGluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMuaW5kZXggPSBpbmRleDtcclxuICAgIHRoaXMuZGF0YUlzRnVuYyAmJiB0aGlzLmdldERhdGFCeUZ1bmMoKTtcclxuICAgIHRoaXMuaW5kZXhDaGFuZ2UuZW1pdChpbmRleCk7XHJcbiAgICB0aGlzLnJlc2V0U2Nyb2xsKCk7XHJcbiAgfVxyXG5cclxuICByZXNldFNjcm9sbCh4ID0gdHJ1ZSwgeSA9IHRydWUpIHtcclxuICAgIGlmICh0aGlzLmhhc1Njcm9sbFggJiYgeCkgdGhpcy52aXJ0dWFsQm9keT8uc2Nyb2xsVG8oeyBsZWZ0OiAwIH0pO1xyXG4gICAgaWYgKHRoaXMuaGFzU2Nyb2xsWSAmJiB5KSB0aGlzLnZpcnR1YWxCb2R5Py5zY3JvbGxUbyh7IHRvcDogMCB9KTtcclxuICB9XHJcblxyXG4gIHNldENoZWNrZWQoZGF0YTogWFRhYmxlUm93W10pIHtcclxuICAgIGxldCByZXN1bHQ6IFhUYWJsZVJvd1tdID0gW107XHJcbiAgICBpZiAoWElzRW1wdHkoZGF0YSkgfHwgIXRoaXMuY2hlY2tlZFJvdykgcmV0dXJuO1xyXG4gICAgZm9yIChsZXQga2V5IGluIHRoaXMuY2hlY2tlZFJvdykge1xyXG4gICAgICBjb25zdCBhcnIgPSB0aGlzLmNoZWNrZWRSb3dba2V5XTtcclxuICAgICAgZm9yIChsZXQgaXRlbSBvZiBkYXRhIGFzIGFueVtdKSB7XHJcbiAgICAgICAgaXRlbVtrZXldID0gYXJyLmluY2x1ZGVzKGl0ZW0uaWQpO1xyXG4gICAgICAgIHJlc3VsdCA9IFsuLi5yZXN1bHQsIGl0ZW1dO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocmVzdWx0Lmxlbmd0aCA+IDApIGRhdGEgPSBbLi4ucmVzdWx0XTtcclxuICB9XHJcblxyXG4gIHNldEhlYWRDaGVja2JveExpc3QoZGF0YTogWFRhYmxlUm93W10pIHtcclxuICAgIGlmIChYSXNFbXB0eShkYXRhKSB8fCAhdGhpcy5oZWFkQ2hlY2tib3hMaXN0KSByZXR1cm47XHJcbiAgICBmb3IgKGxldCBjb2x1bW4gb2YgdGhpcy5oZWFkQ2hlY2tib3hMaXN0KSB7XHJcbiAgICAgIHRoaXMuc2V0Q2hlY2tlZFZhbHVlcyhjb2x1bW4pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RXhwYW5kKGRhdGE6IFhUYWJsZVJvd1tdKSB7XHJcbiAgICBjb25zdCBnZXRDaGlsZHJlbiA9IChub2RlOiBYVGFibGVSb3csIGxldmVsOiBudW1iZXIpID0+IHtcclxuICAgICAgbm9kZS5sZXZlbCA9IGxldmVsO1xyXG4gICAgICBub2RlLmV4cGFuZGVkID0gQm9vbGVhbih0aGlzLmV4cGFuZGVkQWxsKSB8fCBsZXZlbCA8PSB0aGlzLmV4cGFuZGVkTGV2ZWwgfHwgdGhpcy5leHBhbmRlZC5pbmNsdWRlcyhub2RlLmlkKTtcclxuICAgICAgaWYgKFhJc1VuZGVmaW5lZChub2RlLmNoaWxkcmVuKSkgbm9kZS5jaGlsZHJlbiA9IGRhdGEuZmlsdGVyKCh5KSA9PiB5LnBpZCA9PT0gbm9kZS5pZCk7XHJcbiAgICAgIGlmIChYSXNVbmRlZmluZWQobm9kZS5sZWFmKSkgbm9kZS5sZWFmID0gKG5vZGUuY2hpbGRyZW4/Lmxlbmd0aCBhcyBudW1iZXIpID4gMDtcclxuICAgICAgaWYgKG5vZGUubGVhZikgbm9kZS5jaGlsZHJlbj8ubWFwKCh5KSA9PiBnZXRDaGlsZHJlbih5LCBsZXZlbCArIDEpKTtcclxuICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9O1xyXG4gICAgdGhpcy50cmVlVGFibGVEYXRhID0gZGF0YVxyXG4gICAgICAuZmlsdGVyKCh4KSA9PiBYSXNFbXB0eSh4LnBpZCkpXHJcbiAgICAgIC5tYXAoKHgsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKFhJc1VuZGVmaW5lZCh4LmlkKSkgeC5pZCA9IGluZGV4ICsgMTtcclxuICAgICAgICByZXR1cm4gZ2V0Q2hpbGRyZW4oeCwgMCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0RXhwYW5kZWRBbGwoKSB7XHJcbiAgICBpZiAoIXRoaXMudHJlZVRhYmxlIHx8IHRoaXMudHJlZVRhYmxlRGF0YT8ubGVuZ3RoID09PSAwKSByZXR1cm47XHJcbiAgICBjb25zdCBzZXRDaGlsZHJlbiA9IChub2RlczogWFRhYmxlUm93W10pID0+IHtcclxuICAgICAgaWYgKFhJc0VtcHR5KG5vZGVzKSkgcmV0dXJuO1xyXG4gICAgICBub2Rlcy5mb3JFYWNoKCh4KSA9PiB7XHJcbiAgICAgICAgeC5leHBhbmRlZCA9IEJvb2xlYW4odGhpcy5leHBhbmRlZEFsbCk7XHJcbiAgICAgICAgc2V0Q2hpbGRyZW4oeC5jaGlsZHJlbiBhcyBYVGFibGVSb3dbXSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIHNldENoaWxkcmVuKHRoaXMudHJlZVRhYmxlRGF0YSk7XHJcbiAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNldEhlYWRFeHBhbmRMaXN0KCkge31cclxuXHJcbiAgY2hlY2tTb3J0KHNvcnQ6IFhTb3J0W10pIHtcclxuICAgIGlmICghdGhpcy5kYXRhSXNGdW5jKSByZXR1cm47XHJcbiAgICBpZiAodHlwZW9mIHRoaXMucXVlcnkgPT09ICd1bmRlZmluZWQnKSB0aGlzLnF1ZXJ5ID0ge307XHJcbiAgICB0aGlzLnF1ZXJ5LnNvcnQgPSBzb3J0O1xyXG4gICAgdGhpcy5xdWVyeUNoYW5nZS5lbWl0KHRoaXMucXVlcnkpO1xyXG4gICAgdGhpcy5nZXREYXRhQnlGdW5jKCk7XHJcbiAgfVxyXG5cclxuICBoZWFkQ2hlY2tlZChjaGVja2VkOiBib29sZWFuLCBjb2x1bW46IFhUYWJsZUNvbHVtbikge1xyXG4gICAgdGhpcy50YWJsZURhdGEuZm9yRWFjaCgoeCkgPT4ge1xyXG4gICAgICB4W2NvbHVtbi5pZF0gPSBjaGVja2VkO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldENoZWNrZWRWYWx1ZXMoY29sdW1uKTtcclxuICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgYm9keUNoZWNrZWQoX2NoZWNrZWQ6IGJvb2xlYW4sIGNvbHVtbjogWFRhYmxlQ29sdW1uKSB7XHJcbiAgICB0aGlzLnNldENoZWNrZWRWYWx1ZXMoY29sdW1uKTtcclxuICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2hlY2tlZFZhbHVlcyhjb2x1bW46IFhUYWJsZUNvbHVtbikge1xyXG4gICAgY29uc3QgY291bnQgPSB0aGlzLnRhYmxlRGF0YS5sZW5ndGg7XHJcbiAgICBjb25zdCBjaGVja2VkTGVuID0gdGhpcy50YWJsZURhdGEuZmlsdGVyKCh4KSA9PiB4W2NvbHVtbi5pZF0pLmxlbmd0aDtcclxuICAgIHRoaXMuY2hlY2tlZFZhbHVlc1tjb2x1bW4uaWRdID0gY291bnQgPT09IGNoZWNrZWRMZW4gJiYgY291bnQgIT09IDA7XHJcbiAgICB0aGlzLmNoZWNrZWRWYWx1ZXNbY29sdW1uLmlkICsgdGhpcy5pbmRldGVybWluYXRlXSA9IGNoZWNrZWRMZW4gPiAwICYmIGNoZWNrZWRMZW4gPCBjb3VudDtcclxuICB9XHJcblxyXG4gIGRldGVjdENoYW5nZXMoKSB7XHJcbiAgICB0aGlzLmJvZHlDaGFuZ2UgJiYgdGhpcy5ib2R5Q2hhbmdlKCk7XHJcbiAgICB0aGlzLmhlYWRDaGFuZ2UgJiYgdGhpcy5oZWFkQ2hhbmdlKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG59XHJcbiIsIjx0YWJsZVxyXG4gICN0YWJsZVxyXG4gIGNsYXNzPVwieC10YWJsZVwiXHJcbiAgW25nQ2xhc3NdPVwiY2xhc3NNYXBcIlxyXG4gIFt4LWxvYWRpbmddPVwibG9hZGluZyAmJiBnZXR0aW5nXCJcclxuICBbY2xhc3MueC10YWJsZS1zY3JvbGwtbGVmdF09XCJnZXRTY3JvbGxMZWZ0XCJcclxuICBbY2xhc3MueC10YWJsZS1zY3JvbGwtbGVmdC1tYXhdPVwic2Nyb2xsTGVmdE1heFwiXHJcbiAgW2NsYXNzLngtdGFibGUtc2Nyb2xsLXRvcF09XCJnZXRTY3JvbGxUb3BcIlxyXG4gIFtjbGFzcy54LXRhYmxlLWhhcy1zY3JvbGwtcmlnaHRdPVwic2Nyb2xsWVdpZHRoXCJcclxuICBbY2xhc3MueC10YWJsZS1oYXMtc2Nyb2xsLWJvdHRvbV09XCJzY3JvbGxYV2lkdGhcIlxyXG4gIFtjbGFzcy54LXRhYmxlLWJvcmRlcmVkXT1cImJvcmRlcmVkXCJcclxuICBbY2xhc3MueC10YWJsZS10ZC1hZGFwdGlvbi1oZWlnaHRdPVwicm93SGVpZ2h0ID09IDBcIlxyXG4gIFtjbGFzcy54LXRhYmxlLWNlbGwtY29uZmlnXT1cImNlbGxDb25maWdcIlxyXG4+XHJcbiAgPGNhcHRpb24gI2NhcHRpb24gY2xhc3M9XCJ4LXRhYmxlLWhlYWRlclwiICpuZ0lmPVwiaGVhZGVyXCIgW3N0eWxlLmhlaWdodC5weF09XCJnZXRSb3dIZWlnaHRcIiBbc3R5bGUubWluLWhlaWdodC5weF09XCJnZXRSb3dIZWlnaHRcIj5cclxuICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJoZWFkZXJcIj57eyBoZWFkZXIgfX08L25nLWNvbnRhaW5lcj5cclxuICA8L2NhcHRpb24+XHJcbiAgPHgtdGFibGUtaGVhZFxyXG4gICAgKm5nSWY9XCJzaG93SGVhZGVyICYmIChoZWFkZXJQb3NpdGlvbiA9PT0gJ3RvcCcgfHwgaGVhZGVyUG9zaXRpb24gPT09ICd0b3AtYm90dG9tJylcIlxyXG4gICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXHJcbiAgICBbcm93SGVpZ2h0XT1cInJvd0hlaWdodFwiXHJcbiAgICBbY29sdW1uVHBsXT1cImhlYWRDb2x1bW5UcGxcIlxyXG4gICAgW3Njcm9sbFlXaWR0aF09XCJzY3JvbGxZV2lkdGhcIlxyXG4gICAgW3Njcm9sbFhXaWR0aF09XCJzY3JvbGxYV2lkdGhcIlxyXG4gICAgW2NlbGxDb25maWddPVwiY2VsbENvbmZpZz8udGhlYWRcIlxyXG4gICAgW3Bvc2l0aW9uXT1cIid0b3AnXCJcclxuICAgIFt0YWJsZV09XCJ0aGlzXCJcclxuICA+PC94LXRhYmxlLWhlYWQ+XHJcbiAgPHgtdGFibGUtYm9keVxyXG4gICAgW2RhdGFdPVwidHJlZVRhYmxlID8gdHJlZVRhYmxlRGF0YSA6IHRhYmxlRGF0YVwiXHJcbiAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcclxuICAgIFtpdGVtU2l6ZV09XCJpdGVtU2l6ZVwiXHJcbiAgICBbcm93SGVpZ2h0XT1cInJvd0hlaWdodFwiXHJcbiAgICBbYm9keUhlaWdodF09XCJib2R5SGVpZ2h0XCJcclxuICAgIFtjb2x1bW5UcGxdPVwiYm9keUNvbHVtblRwbFwiXHJcbiAgICBbYWxsb3dTZWxlY3RSb3ddPVwiYWxsb3dTZWxlY3RSb3dcIlxyXG4gICAgW3ZpcnR1YWxTY3JvbGxdPVwidmlydHVhbFNjcm9sbFwiXHJcbiAgICBbbWluQnVmZmVyUHhdPVwibWluQnVmZmVyUHhcIlxyXG4gICAgW21heEJ1ZmZlclB4XT1cIm1heEJ1ZmZlclB4XCJcclxuICAgIFthZGFwdGlvbkhlaWdodF09XCJhZGFwdGlvbkhlaWdodFwiXHJcbiAgICBbZG9jUGVyY2VudF09XCJkb2NQZXJjZW50XCJcclxuICAgIFtzY3JvbGxdPVwic2Nyb2xsXCJcclxuICAgIFtyb3dDbGFzc109XCJyb3dDbGFzc1wiXHJcbiAgICBbY2VsbENvbmZpZ109XCJjZWxsQ29uZmlnPy50Ym9keVwiXHJcbiAgICBbZXhwYW5kZWRBbGxdPVwiZXhwYW5kZWRBbGxcIlxyXG4gICAgW2V4cGFuZFRwbF09XCJleHBhbmRUcGxcIlxyXG4gICAgWyhhY3RpdmF0ZWRSb3cpXT1cImFjdGl2YXRlZFJvd1wiXHJcbiAgICAoYWN0aXZhdGVkUm93Q2hhbmdlKT1cImFjdGl2YXRlZFJvd0NoYW5nZS5lbWl0KCRldmVudClcIlxyXG4gICAgW3RhYmxlXT1cInRoaXNcIlxyXG4gID48L3gtdGFibGUtYm9keT5cclxuICA8eC10YWJsZS1oZWFkXHJcbiAgICAqbmdJZj1cInNob3dIZWFkZXIgJiYgKGhlYWRlclBvc2l0aW9uID09PSAnYm90dG9tJyB8fCBoZWFkZXJQb3NpdGlvbiA9PT0gJ3RvcC1ib3R0b20nKVwiXHJcbiAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcclxuICAgIFtyb3dIZWlnaHRdPVwicm93SGVpZ2h0XCJcclxuICAgIFtjb2x1bW5UcGxdPVwiaGVhZENvbHVtblRwbFwiXHJcbiAgICBbc2Nyb2xsWVdpZHRoXT1cInNjcm9sbFlXaWR0aFwiXHJcbiAgICBbc2Nyb2xsWFdpZHRoXT1cInNjcm9sbFhXaWR0aFwiXHJcbiAgICBbY2VsbENvbmZpZ109XCJjZWxsQ29uZmlnPy50aGVhZFwiXHJcbiAgICBbcG9zaXRpb25dPVwiJ2JvdHRvbSdcIlxyXG4gICAgW3RhYmxlXT1cInRoaXNcIlxyXG4gID48L3gtdGFibGUtaGVhZD5cclxuICA8eC10YWJsZS1mb290ICpuZ0lmPVwiZm9vdGVyXCIgW3RhYmxlXT1cInRoaXNcIiBbZm9vdGVyXT1cImZvb3RlclwiIFtyb3dIZWlnaHRdPVwicm93SGVpZ2h0XCI+PC94LXRhYmxlLWZvb3Q+XHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJoYXNTdGlja3lUb3BSaWdodCgpXCJcclxuICAgICNzdGlja3lUb3BSaWdodEVsZVxyXG4gICAgY2xhc3M9XCJ4LXRhYmxlLXN0aWNreS1yaWdodC1zY3JvbGxcIlxyXG4gICAgW2NsYXNzLngtdGFibGUtYm9yZGVyLWJvdHRvbV09XCJoZWFkU2VhcmNoVHBsXCJcclxuICAgIFtzdHlsZS50b3AucHhdPVwiZ2V0U3RpY2t5VG9wU2Nyb2xsVG9wXCJcclxuICAgIFtzdHlsZS53aWR0aC5weF09XCJzY3JvbGxZV2lkdGhcIlxyXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJnZXRSb3dIZWlnaHRcIlxyXG4gICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiZ2V0Um93SGVpZ2h0XCJcclxuICA+PC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJoYXNTdGlja3lUb3BSaWdodCgpICYmIGhlYWRTZWFyY2hUcGxcIlxyXG4gICAgY2xhc3M9XCJ4LXRhYmxlLXN0aWNreS1yaWdodC1zY3JvbGxcIlxyXG4gICAgW3N0eWxlLnRvcC5weF09XCJnZXRTdGlja3lUb3BTY3JvbGxUb3AgKyBnZXRTdGlja3lUb3BSaWdodEVsZUhlaWdodFwiXHJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwic2Nyb2xsWVdpZHRoXCJcclxuICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiZ2V0Um93SGVpZ2h0XCJcclxuICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImdldFJvd0hlaWdodFwiXHJcbiAgPjwvZGl2PlxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwiaGFzU3RpY2t5Qm90dG9tUmlnaHQoKVwiXHJcbiAgICAjc3RpY2t5Qm90dG9tUmlnaHRFbGVcclxuICAgIGNsYXNzPVwieC10YWJsZS1zdGlja3ktcmlnaHQtc2Nyb2xsXCJcclxuICAgIFtzdHlsZS5ib3R0b20ucHhdPVwiZ2V0U3RpY2t5Qm90dG9tU2Nyb2xsVG9wXCJcclxuICAgIFtzdHlsZS53aWR0aC5weF09XCJzY3JvbGxZV2lkdGhcIlxyXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJnZXRSb3dIZWlnaHRcIlxyXG4gICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiZ2V0Um93SGVpZ2h0XCJcclxuICA+PC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJoYXNTdGlja3lCb3R0b21SaWdodCgpICYmIGhlYWRTZWFyY2hUcGxcIlxyXG4gICAgY2xhc3M9XCJ4LXRhYmxlLXN0aWNreS1yaWdodC1zY3JvbGxcIlxyXG4gICAgW2NsYXNzLngtdGFibGUtYm9yZGVyLWJvdHRvbV09XCJoZWFkU2VhcmNoVHBsXCJcclxuICAgIFtzdHlsZS5ib3R0b20ucHhdPVwiZ2V0U3RpY2t5Qm90dG9tU2Nyb2xsVG9wICsgZ2V0U3RpY2t5Qm90dG9tUmlnaHRFbGVIZWlnaHRcIlxyXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cInNjcm9sbFlXaWR0aFwiXHJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImdldFJvd0hlaWdodFwiXHJcbiAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJnZXRSb3dIZWlnaHRcIlxyXG4gID48L2Rpdj5cclxuPC90YWJsZT5cclxuPHgtcGFnaW5hdGlvblxyXG4gICNwYWdpbmF0aW9uXHJcbiAgKm5nSWY9XCJzaG93UGFnaW5hdGlvbiAmJiBzaXplXCJcclxuICBbKGluZGV4KV09XCJpbmRleFwiXHJcbiAgWyhzaXplKV09XCJzaXplXCJcclxuICBbKHF1ZXJ5KV09XCJxdWVyeVwiXHJcbiAgW3RvdGFsXT1cInRvdGFsXCJcclxuICAoaW5kZXhDaGFuZ2UpPVwiY2hhbmdlKCRldmVudClcIlxyXG4gIFtzaG93RWxsaXBzaXNdPVwic2hvd0VsbGlwc2lzXCJcclxuICBbc2hvd1RvdGFsXT1cInNob3dUb3RhbFwiXHJcbiAgW3NwYWNlXT1cInNwYWNlXCJcclxuICBbaGlkZGVuQm9yZGVyXT1cImhpZGRlbkJvcmRlclwiXHJcbj5cclxuPC94LXBhZ2luYXRpb24+XHJcbiJdfQ==
@@ -89,10 +89,10 @@ export class XTextareaComponent extends XTextareaProperty {
89
89
  }
90
90
  }
91
91
  /** @nocollapse */ XTextareaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTextareaComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.XConfigService }], target: i0.ɵɵFactoryTarget.Component });
92
- /** @nocollapse */ XTextareaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XTextareaComponent, selector: "x-textarea", providers: [XValueAccessor(XTextareaComponent)], viewQueries: [{ propertyName: "textarea", first: true, predicate: ["textarea"], descendants: true, static: true }, { propertyName: "textareaRef", first: true, predicate: ["textareaRef"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n #textarea\r\n class=\"x-textarea\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n [class.x-clearable]=\"clearable\"\r\n [class.x-clear-show]=\"clearShow\"\r\n [class.x-textarea-icon]=\"getIcon\"\r\n [class.x-textarea-icon-left]=\"getIconLayoutLeft\"\r\n [class.x-textarea-icon-right]=\"getIconLayoutRight\"\r\n [ngClass]=\"classMap\"\r\n>\r\n <label *ngIf=\"label\" [class.x-textarea-label-required]=\"required\" [style.width]=\"labelWidth\" [ngClass]=\"labelMap\">{{ label }}</label>\r\n <div class=\"x-textarea-row\">\r\n <textarea\r\n #textareaRef\r\n [placeholder]=\"placeholder\"\r\n [required]=\"required\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n [maxlength]=\"maxlength\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"change($event)\"\r\n [style.height]=\"height\"\r\n [style.padding-left.rem]=\"paddingLeft\"\r\n [style.padding-right.rem]=\"paddingRight\"\r\n (input)=\"formControlValidator()\"\r\n ></textarea>\r\n <x-icon *ngIf=\"clearShow\" class=\"x-textarea-clear\" type=\"fto-x\" (click)=\"onClear()\"></x-icon>\r\n <x-icon *ngIf=\"icon && ((!clearShow && getIconLayoutRight) || getIconLayoutLeft)\" [type]=\"icon\" [spin]=\"iconSpin\"></x-icon>\r\n <span class=\"x-textarea-max-length\" *ngIf=\"maxlength\">{{ lengthTotal }}</span>\r\n <span class=\"x-textarea-error-message\" *ngIf=\"invalid\">{{ invalidMessage }}</span>\r\n <ng-container *ngIf=\"requiredIsEmpty || invalid\">\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-textarea{display:inline-block;width:12rem}.x-textarea{width:100%;margin:0;padding:0}.x-textarea.x-flex{display:flex}.x-textarea.x-justify-start{justify-content:flex-start}.x-textarea.x-justify-center{justify-content:center}.x-textarea.x-justify-end{justify-content:flex-end}.x-textarea.x-justify-space-between{justify-content:space-between}.x-textarea.x-justify-space-around{justify-content:space-around}.x-textarea.x-align-start{align-items:flex-start}.x-textarea.x-align-center{align-items:center}.x-textarea.x-align-end{align-items:flex-end}.x-textarea.x-direction-column{flex-direction:column}.x-textarea.x-direction-column-reverse{flex-direction:column-reverse}.x-textarea.x-direction-row{flex-direction:row}.x-textarea.x-direction-row-reverse{flex-direction:row-reverse}.x-textarea>label{display:inline-block;white-space:nowrap;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);position:relative;color:var(--x-text-300);font-weight:600}.x-textarea>label.x-text-align-start{text-align:start}.x-textarea>label.x-text-align-center{text-align:center}.x-textarea>label.x-text-align-end{text-align:end}.x-textarea>.x-textarea-row{flex:1;display:flex;align-items:center;position:relative}.x-textarea>.x-textarea-row>textarea{flex:1;width:100%;font-size:var(--x-font-size);background-color:var(--x-background);background-image:none;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) transparent;transition:all var(--x-animation-duration-slow);line-height:calc(var(--x-font-size) + .325rem);padding:.4rem}.x-textarea>.x-textarea-row>textarea::-moz-placeholder{color:var(--x-text-700);opacity:1}.x-textarea>.x-textarea-row>textarea:-ms-input-placeholder{color:var(--x-text-700)}.x-textarea>.x-textarea-row>textarea::-webkit-input-placeholder{color:var(--x-text-700)}.x-textarea>.x-textarea-row>textarea:hover{border-color:var(--x-primary-300)}.x-textarea>.x-textarea-row>textarea:focus{border-color:var(--x-primary);outline:0}.x-textarea>.x-textarea-row>textarea[disabled]{color:var(--x-text-500)}.x-textarea>.x-textarea-row>x-icon{color:var(--x-text-400);transition:all var(--x-animation-duration-base)}.x-textarea-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-textarea-error-message{position:absolute;bottom:0;left:0;font-size:var(--x-font-size)-.125rem;color:var(--x-danger);margin-bottom:calc((var(--x-font-size) + .45rem) * -1);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-textarea.x-invalid>label,.x-textarea.x-required>label{color:var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row>x-icon,.x-textarea.x-required>.x-textarea-row>x-icon{color:var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error,.x-textarea.x-required>.x-textarea-row .x-border-error{position:absolute;height:.5rem;width:.5rem;z-index:10}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-top-left,.x-textarea.x-required>.x-textarea-row .x-border-error.x-top-left{border-top-left-radius:var(--x-border-radius);top:0;left:0;border-top:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-top-right,.x-textarea.x-required>.x-textarea-row .x-border-error.x-top-right{border-top-right-radius:var(--x-border-radius);top:0;right:0;border-top:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-bottom-left,.x-textarea.x-required>.x-textarea-row .x-border-error.x-bottom-left{border-bottom-left-radius:var(--x-border-radius);bottom:0;left:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-bottom-right,.x-textarea.x-required>.x-textarea-row .x-border-error.x-bottom-right{border-bottom-right-radius:var(--x-border-radius);bottom:0;right:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-disabled>.x-textarea-row>x-icon{color:var(--x-text-400)}.x-textarea.x-disabled>.x-textarea-row>textarea{color:var(--x-text-400);cursor:not-allowed;border-color:var(--x-border-100);background-color:var(--x-background-a100)}.x-textarea.x-clearable>.x-textarea-row>.x-textarea-clear{position:absolute;color:var(--x-text-400);font-size:var(--x-font-size-medium);padding:.4rem;top:0;right:0;left:inherit;opacity:0;cursor:pointer}.x-textarea.x-clearable>.x-textarea-row>.x-textarea-clear:hover{color:var(--x-text-300)}.x-textarea.x-clearable>.x-textarea-row>textarea:hover+.x-textarea-clear,.x-textarea.x-clearable>.x-textarea-row>textarea:focus+.x-textarea-clear{opacity:1}.x-textarea.x-clearable.x-clear-show>.x-textarea-row>.x-textarea-clear{opacity:1}.x-textarea.x-clearable.x-clear-show>.x-textarea-row>textarea{padding-right:var(--x-font-size-medium).8rem!important}.x-textarea-max-length{position:absolute;font-size:var(--x-font-size-small);color:var(--x-text-400);padding:0 .4rem;right:.25rem;bottom:.25rem}.x-textarea.x-direction-row>label{padding:0 .5rem 0 0}.x-textarea.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-textarea.x-direction-column,.x-textarea.x-direction-column-reverse{align-items:inherit}.x-textarea-icon>.x-textarea-row>x-icon{position:absolute;font-size:var(--x-font-size-medium);padding:.4rem}.x-textarea-icon-left>.x-textarea-row>textarea{padding-left:var(--x-font-size-medium).8rem}.x-textarea-icon-left>.x-textarea-row>x-icon{left:0;top:0}.x-textarea-icon-right>.x-textarea-row>textarea{padding-right:var(--x-font-size-medium).8rem}.x-textarea-icon-right>.x-textarea-row>x-icon{right:0;top:0}.x-textarea-icon-right>.x-textarea-row>.x-textarea-max-length{right:inherit;left:0;bottom:0}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.XIconComponent, selector: "x-icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
92
+ /** @nocollapse */ XTextareaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XTextareaComponent, selector: "x-textarea", providers: [XValueAccessor(XTextareaComponent)], viewQueries: [{ propertyName: "textarea", first: true, predicate: ["textarea"], descendants: true, static: true }, { propertyName: "textareaRef", first: true, predicate: ["textareaRef"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n #textarea\r\n class=\"x-textarea\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n [class.x-clearable]=\"clearable\"\r\n [class.x-clear-show]=\"clearShow\"\r\n [class.x-textarea-icon]=\"getIcon\"\r\n [class.x-textarea-icon-left]=\"getIconLayoutLeft\"\r\n [class.x-textarea-icon-right]=\"getIconLayoutRight\"\r\n [ngClass]=\"classMap\"\r\n>\r\n <label *ngIf=\"label\" [class.x-textarea-label-required]=\"required\" [style.width]=\"labelWidth\" [ngClass]=\"labelMap\">{{ label }}</label>\r\n <div class=\"x-textarea-row\">\r\n <textarea\r\n #textareaRef\r\n [placeholder]=\"placeholder\"\r\n [required]=\"required\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n [maxlength]=\"maxlength\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"change($event)\"\r\n [style.height]=\"height\"\r\n [style.padding-left.rem]=\"paddingLeft\"\r\n [style.padding-right.rem]=\"paddingRight\"\r\n (input)=\"formControlValidator()\"\r\n ></textarea>\r\n <x-icon *ngIf=\"clearShow\" class=\"x-textarea-clear\" type=\"fto-x\" (click)=\"onClear()\"></x-icon>\r\n <x-icon *ngIf=\"icon && ((!clearShow && getIconLayoutRight) || getIconLayoutLeft)\" [type]=\"icon\" [spin]=\"iconSpin\"></x-icon>\r\n <span class=\"x-textarea-max-length\" *ngIf=\"maxlength\">{{ lengthTotal }}</span>\r\n <span class=\"x-textarea-error-message\" *ngIf=\"invalid\">{{ invalidMessage }}</span>\r\n <ng-container *ngIf=\"requiredIsEmpty || invalid\">\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-textarea{display:inline-block;width:12rem}.x-textarea{width:100%;margin:0;padding:0}.x-textarea.x-flex{display:flex}.x-textarea.x-justify-start{justify-content:flex-start}.x-textarea.x-justify-center{justify-content:center}.x-textarea.x-justify-end{justify-content:flex-end}.x-textarea.x-justify-space-between{justify-content:space-between}.x-textarea.x-justify-space-around{justify-content:space-around}.x-textarea.x-align-start{align-items:flex-start}.x-textarea.x-align-center{align-items:center}.x-textarea.x-align-end{align-items:flex-end}.x-textarea.x-direction-column{flex-direction:column}.x-textarea.x-direction-column-reverse{flex-direction:column-reverse}.x-textarea.x-direction-row{flex-direction:row}.x-textarea.x-direction-row-reverse{flex-direction:row-reverse}.x-textarea>label{display:inline-block;white-space:nowrap;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);position:relative;color:var(--x-text-300);font-weight:600}.x-textarea>label.x-text-align-start{text-align:start}.x-textarea>label.x-text-align-center{text-align:center}.x-textarea>label.x-text-align-end{text-align:end}.x-textarea>.x-textarea-row{flex:1;display:flex;align-items:center;position:relative}.x-textarea>.x-textarea-row>textarea{flex:1;width:100%;font-size:var(--x-font-size);background-color:var(--x-background);background-image:none;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) transparent;transition:all var(--x-animation-duration-slow);line-height:calc(var(--x-font-size) + .325rem);padding:.4rem}.x-textarea>.x-textarea-row>textarea::-moz-placeholder{color:var(--x-text-700);opacity:1}.x-textarea>.x-textarea-row>textarea:-ms-input-placeholder{color:var(--x-text-700)}.x-textarea>.x-textarea-row>textarea::-webkit-input-placeholder{color:var(--x-text-700)}.x-textarea>.x-textarea-row>textarea:hover{border-color:var(--x-primary-300)}.x-textarea>.x-textarea-row>textarea:focus{border-color:var(--x-primary);outline:0}.x-textarea>.x-textarea-row>textarea[disabled]{color:var(--x-text-500)}.x-textarea>.x-textarea-row>x-icon{color:var(--x-text-400);transition:all var(--x-animation-duration-base)}.x-textarea-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-textarea-error-message{position:absolute;bottom:0;left:0;font-size:var(--x-font-size)-.125rem;color:var(--x-danger);margin-bottom:calc((var(--x-font-size) + .45rem) * -1);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-textarea.x-invalid>label,.x-textarea.x-required>label{color:var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row>x-icon,.x-textarea.x-required>.x-textarea-row>x-icon{color:var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error,.x-textarea.x-required>.x-textarea-row .x-border-error{position:absolute;height:.5rem;width:.5rem;z-index:10}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-top-left,.x-textarea.x-required>.x-textarea-row .x-border-error.x-top-left{border-top-left-radius:var(--x-border-radius);top:0;left:0;border-top:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-top-right,.x-textarea.x-required>.x-textarea-row .x-border-error.x-top-right{border-top-right-radius:var(--x-border-radius);top:0;right:0;border-top:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-bottom-left,.x-textarea.x-required>.x-textarea-row .x-border-error.x-bottom-left{border-bottom-left-radius:var(--x-border-radius);bottom:0;left:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-bottom-right,.x-textarea.x-required>.x-textarea-row .x-border-error.x-bottom-right{border-bottom-right-radius:var(--x-border-radius);bottom:0;right:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-disabled>.x-textarea-row>x-icon{color:var(--x-text-400)}.x-textarea.x-disabled>.x-textarea-row>textarea{color:var(--x-text-400);cursor:not-allowed;border-color:var(--x-border-100);background-color:var(--x-background-a100)}.x-textarea.x-clearable>.x-textarea-row>.x-textarea-clear{position:absolute;color:var(--x-text-400);font-size:var(--x-font-size-medium);padding:.4rem;top:0;right:0;left:inherit;opacity:0;cursor:pointer}.x-textarea.x-clearable>.x-textarea-row>.x-textarea-clear:hover{color:var(--x-text-300)}.x-textarea.x-clearable>.x-textarea-row>textarea:hover+.x-textarea-clear,.x-textarea.x-clearable>.x-textarea-row>textarea:focus+.x-textarea-clear{opacity:1}.x-textarea.x-clearable.x-clear-show>.x-textarea-row>.x-textarea-clear{opacity:1}.x-textarea.x-clearable.x-clear-show>.x-textarea-row>textarea{padding-right:calc(var(--x-font-size-medium) + .4rem * 2)!important}.x-textarea-max-length{position:absolute;font-size:var(--x-font-size-small);color:var(--x-text-400);padding:0 .4rem;right:.25rem;bottom:.25rem}.x-textarea.x-direction-row>label{padding:0 .5rem 0 0}.x-textarea.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-textarea.x-direction-column,.x-textarea.x-direction-column-reverse{align-items:inherit}.x-textarea-icon>.x-textarea-row>x-icon{position:absolute;font-size:var(--x-font-size-medium);padding:.4rem}.x-textarea-icon-left>.x-textarea-row>textarea{padding-left:var(--x-font-size-medium).8rem}.x-textarea-icon-left>.x-textarea-row>x-icon{left:0;top:0}.x-textarea-icon-right>.x-textarea-row>textarea{padding-right:var(--x-font-size-medium).8rem}.x-textarea-icon-right>.x-textarea-row>x-icon{right:0;top:0}.x-textarea-icon-right>.x-textarea-row>.x-textarea-max-length{right:inherit;left:0;bottom:0}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.XIconComponent, selector: "x-icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
93
93
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTextareaComponent, decorators: [{
94
94
  type: Component,
95
- args: [{ selector: `${XTextareaPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XTextareaComponent)], template: "<div\r\n #textarea\r\n class=\"x-textarea\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n [class.x-clearable]=\"clearable\"\r\n [class.x-clear-show]=\"clearShow\"\r\n [class.x-textarea-icon]=\"getIcon\"\r\n [class.x-textarea-icon-left]=\"getIconLayoutLeft\"\r\n [class.x-textarea-icon-right]=\"getIconLayoutRight\"\r\n [ngClass]=\"classMap\"\r\n>\r\n <label *ngIf=\"label\" [class.x-textarea-label-required]=\"required\" [style.width]=\"labelWidth\" [ngClass]=\"labelMap\">{{ label }}</label>\r\n <div class=\"x-textarea-row\">\r\n <textarea\r\n #textareaRef\r\n [placeholder]=\"placeholder\"\r\n [required]=\"required\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n [maxlength]=\"maxlength\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"change($event)\"\r\n [style.height]=\"height\"\r\n [style.padding-left.rem]=\"paddingLeft\"\r\n [style.padding-right.rem]=\"paddingRight\"\r\n (input)=\"formControlValidator()\"\r\n ></textarea>\r\n <x-icon *ngIf=\"clearShow\" class=\"x-textarea-clear\" type=\"fto-x\" (click)=\"onClear()\"></x-icon>\r\n <x-icon *ngIf=\"icon && ((!clearShow && getIconLayoutRight) || getIconLayoutLeft)\" [type]=\"icon\" [spin]=\"iconSpin\"></x-icon>\r\n <span class=\"x-textarea-max-length\" *ngIf=\"maxlength\">{{ lengthTotal }}</span>\r\n <span class=\"x-textarea-error-message\" *ngIf=\"invalid\">{{ invalidMessage }}</span>\r\n <ng-container *ngIf=\"requiredIsEmpty || invalid\">\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-textarea{display:inline-block;width:12rem}.x-textarea{width:100%;margin:0;padding:0}.x-textarea.x-flex{display:flex}.x-textarea.x-justify-start{justify-content:flex-start}.x-textarea.x-justify-center{justify-content:center}.x-textarea.x-justify-end{justify-content:flex-end}.x-textarea.x-justify-space-between{justify-content:space-between}.x-textarea.x-justify-space-around{justify-content:space-around}.x-textarea.x-align-start{align-items:flex-start}.x-textarea.x-align-center{align-items:center}.x-textarea.x-align-end{align-items:flex-end}.x-textarea.x-direction-column{flex-direction:column}.x-textarea.x-direction-column-reverse{flex-direction:column-reverse}.x-textarea.x-direction-row{flex-direction:row}.x-textarea.x-direction-row-reverse{flex-direction:row-reverse}.x-textarea>label{display:inline-block;white-space:nowrap;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);position:relative;color:var(--x-text-300);font-weight:600}.x-textarea>label.x-text-align-start{text-align:start}.x-textarea>label.x-text-align-center{text-align:center}.x-textarea>label.x-text-align-end{text-align:end}.x-textarea>.x-textarea-row{flex:1;display:flex;align-items:center;position:relative}.x-textarea>.x-textarea-row>textarea{flex:1;width:100%;font-size:var(--x-font-size);background-color:var(--x-background);background-image:none;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) transparent;transition:all var(--x-animation-duration-slow);line-height:calc(var(--x-font-size) + .325rem);padding:.4rem}.x-textarea>.x-textarea-row>textarea::-moz-placeholder{color:var(--x-text-700);opacity:1}.x-textarea>.x-textarea-row>textarea:-ms-input-placeholder{color:var(--x-text-700)}.x-textarea>.x-textarea-row>textarea::-webkit-input-placeholder{color:var(--x-text-700)}.x-textarea>.x-textarea-row>textarea:hover{border-color:var(--x-primary-300)}.x-textarea>.x-textarea-row>textarea:focus{border-color:var(--x-primary);outline:0}.x-textarea>.x-textarea-row>textarea[disabled]{color:var(--x-text-500)}.x-textarea>.x-textarea-row>x-icon{color:var(--x-text-400);transition:all var(--x-animation-duration-base)}.x-textarea-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-textarea-error-message{position:absolute;bottom:0;left:0;font-size:var(--x-font-size)-.125rem;color:var(--x-danger);margin-bottom:calc((var(--x-font-size) + .45rem) * -1);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-textarea.x-invalid>label,.x-textarea.x-required>label{color:var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row>x-icon,.x-textarea.x-required>.x-textarea-row>x-icon{color:var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error,.x-textarea.x-required>.x-textarea-row .x-border-error{position:absolute;height:.5rem;width:.5rem;z-index:10}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-top-left,.x-textarea.x-required>.x-textarea-row .x-border-error.x-top-left{border-top-left-radius:var(--x-border-radius);top:0;left:0;border-top:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-top-right,.x-textarea.x-required>.x-textarea-row .x-border-error.x-top-right{border-top-right-radius:var(--x-border-radius);top:0;right:0;border-top:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-bottom-left,.x-textarea.x-required>.x-textarea-row .x-border-error.x-bottom-left{border-bottom-left-radius:var(--x-border-radius);bottom:0;left:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-bottom-right,.x-textarea.x-required>.x-textarea-row .x-border-error.x-bottom-right{border-bottom-right-radius:var(--x-border-radius);bottom:0;right:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-disabled>.x-textarea-row>x-icon{color:var(--x-text-400)}.x-textarea.x-disabled>.x-textarea-row>textarea{color:var(--x-text-400);cursor:not-allowed;border-color:var(--x-border-100);background-color:var(--x-background-a100)}.x-textarea.x-clearable>.x-textarea-row>.x-textarea-clear{position:absolute;color:var(--x-text-400);font-size:var(--x-font-size-medium);padding:.4rem;top:0;right:0;left:inherit;opacity:0;cursor:pointer}.x-textarea.x-clearable>.x-textarea-row>.x-textarea-clear:hover{color:var(--x-text-300)}.x-textarea.x-clearable>.x-textarea-row>textarea:hover+.x-textarea-clear,.x-textarea.x-clearable>.x-textarea-row>textarea:focus+.x-textarea-clear{opacity:1}.x-textarea.x-clearable.x-clear-show>.x-textarea-row>.x-textarea-clear{opacity:1}.x-textarea.x-clearable.x-clear-show>.x-textarea-row>textarea{padding-right:var(--x-font-size-medium).8rem!important}.x-textarea-max-length{position:absolute;font-size:var(--x-font-size-small);color:var(--x-text-400);padding:0 .4rem;right:.25rem;bottom:.25rem}.x-textarea.x-direction-row>label{padding:0 .5rem 0 0}.x-textarea.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-textarea.x-direction-column,.x-textarea.x-direction-column-reverse{align-items:inherit}.x-textarea-icon>.x-textarea-row>x-icon{position:absolute;font-size:var(--x-font-size-medium);padding:.4rem}.x-textarea-icon-left>.x-textarea-row>textarea{padding-left:var(--x-font-size-medium).8rem}.x-textarea-icon-left>.x-textarea-row>x-icon{left:0;top:0}.x-textarea-icon-right>.x-textarea-row>textarea{padding-right:var(--x-font-size-medium).8rem}.x-textarea-icon-right>.x-textarea-row>x-icon{right:0;top:0}.x-textarea-icon-right>.x-textarea-row>.x-textarea-max-length{right:inherit;left:0;bottom:0}\n"] }]
95
+ args: [{ selector: `${XTextareaPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XTextareaComponent)], template: "<div\r\n #textarea\r\n class=\"x-textarea\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n [class.x-clearable]=\"clearable\"\r\n [class.x-clear-show]=\"clearShow\"\r\n [class.x-textarea-icon]=\"getIcon\"\r\n [class.x-textarea-icon-left]=\"getIconLayoutLeft\"\r\n [class.x-textarea-icon-right]=\"getIconLayoutRight\"\r\n [ngClass]=\"classMap\"\r\n>\r\n <label *ngIf=\"label\" [class.x-textarea-label-required]=\"required\" [style.width]=\"labelWidth\" [ngClass]=\"labelMap\">{{ label }}</label>\r\n <div class=\"x-textarea-row\">\r\n <textarea\r\n #textareaRef\r\n [placeholder]=\"placeholder\"\r\n [required]=\"required\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n [maxlength]=\"maxlength\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"change($event)\"\r\n [style.height]=\"height\"\r\n [style.padding-left.rem]=\"paddingLeft\"\r\n [style.padding-right.rem]=\"paddingRight\"\r\n (input)=\"formControlValidator()\"\r\n ></textarea>\r\n <x-icon *ngIf=\"clearShow\" class=\"x-textarea-clear\" type=\"fto-x\" (click)=\"onClear()\"></x-icon>\r\n <x-icon *ngIf=\"icon && ((!clearShow && getIconLayoutRight) || getIconLayoutLeft)\" [type]=\"icon\" [spin]=\"iconSpin\"></x-icon>\r\n <span class=\"x-textarea-max-length\" *ngIf=\"maxlength\">{{ lengthTotal }}</span>\r\n <span class=\"x-textarea-error-message\" *ngIf=\"invalid\">{{ invalidMessage }}</span>\r\n <ng-container *ngIf=\"requiredIsEmpty || invalid\">\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-textarea{display:inline-block;width:12rem}.x-textarea{width:100%;margin:0;padding:0}.x-textarea.x-flex{display:flex}.x-textarea.x-justify-start{justify-content:flex-start}.x-textarea.x-justify-center{justify-content:center}.x-textarea.x-justify-end{justify-content:flex-end}.x-textarea.x-justify-space-between{justify-content:space-between}.x-textarea.x-justify-space-around{justify-content:space-around}.x-textarea.x-align-start{align-items:flex-start}.x-textarea.x-align-center{align-items:center}.x-textarea.x-align-end{align-items:flex-end}.x-textarea.x-direction-column{flex-direction:column}.x-textarea.x-direction-column-reverse{flex-direction:column-reverse}.x-textarea.x-direction-row{flex-direction:row}.x-textarea.x-direction-row-reverse{flex-direction:row-reverse}.x-textarea>label{display:inline-block;white-space:nowrap;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);position:relative;color:var(--x-text-300);font-weight:600}.x-textarea>label.x-text-align-start{text-align:start}.x-textarea>label.x-text-align-center{text-align:center}.x-textarea>label.x-text-align-end{text-align:end}.x-textarea>.x-textarea-row{flex:1;display:flex;align-items:center;position:relative}.x-textarea>.x-textarea-row>textarea{flex:1;width:100%;font-size:var(--x-font-size);background-color:var(--x-background);background-image:none;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) transparent;transition:all var(--x-animation-duration-slow);line-height:calc(var(--x-font-size) + .325rem);padding:.4rem}.x-textarea>.x-textarea-row>textarea::-moz-placeholder{color:var(--x-text-700);opacity:1}.x-textarea>.x-textarea-row>textarea:-ms-input-placeholder{color:var(--x-text-700)}.x-textarea>.x-textarea-row>textarea::-webkit-input-placeholder{color:var(--x-text-700)}.x-textarea>.x-textarea-row>textarea:hover{border-color:var(--x-primary-300)}.x-textarea>.x-textarea-row>textarea:focus{border-color:var(--x-primary);outline:0}.x-textarea>.x-textarea-row>textarea[disabled]{color:var(--x-text-500)}.x-textarea>.x-textarea-row>x-icon{color:var(--x-text-400);transition:all var(--x-animation-duration-base)}.x-textarea-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-textarea-error-message{position:absolute;bottom:0;left:0;font-size:var(--x-font-size)-.125rem;color:var(--x-danger);margin-bottom:calc((var(--x-font-size) + .45rem) * -1);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-textarea.x-invalid>label,.x-textarea.x-required>label{color:var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row>x-icon,.x-textarea.x-required>.x-textarea-row>x-icon{color:var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error,.x-textarea.x-required>.x-textarea-row .x-border-error{position:absolute;height:.5rem;width:.5rem;z-index:10}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-top-left,.x-textarea.x-required>.x-textarea-row .x-border-error.x-top-left{border-top-left-radius:var(--x-border-radius);top:0;left:0;border-top:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-top-right,.x-textarea.x-required>.x-textarea-row .x-border-error.x-top-right{border-top-right-radius:var(--x-border-radius);top:0;right:0;border-top:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-bottom-left,.x-textarea.x-required>.x-textarea-row .x-border-error.x-bottom-left{border-bottom-left-radius:var(--x-border-radius);bottom:0;left:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-bottom-right,.x-textarea.x-required>.x-textarea-row .x-border-error.x-bottom-right{border-bottom-right-radius:var(--x-border-radius);bottom:0;right:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-disabled>.x-textarea-row>x-icon{color:var(--x-text-400)}.x-textarea.x-disabled>.x-textarea-row>textarea{color:var(--x-text-400);cursor:not-allowed;border-color:var(--x-border-100);background-color:var(--x-background-a100)}.x-textarea.x-clearable>.x-textarea-row>.x-textarea-clear{position:absolute;color:var(--x-text-400);font-size:var(--x-font-size-medium);padding:.4rem;top:0;right:0;left:inherit;opacity:0;cursor:pointer}.x-textarea.x-clearable>.x-textarea-row>.x-textarea-clear:hover{color:var(--x-text-300)}.x-textarea.x-clearable>.x-textarea-row>textarea:hover+.x-textarea-clear,.x-textarea.x-clearable>.x-textarea-row>textarea:focus+.x-textarea-clear{opacity:1}.x-textarea.x-clearable.x-clear-show>.x-textarea-row>.x-textarea-clear{opacity:1}.x-textarea.x-clearable.x-clear-show>.x-textarea-row>textarea{padding-right:calc(var(--x-font-size-medium) + .4rem * 2)!important}.x-textarea-max-length{position:absolute;font-size:var(--x-font-size-small);color:var(--x-text-400);padding:0 .4rem;right:.25rem;bottom:.25rem}.x-textarea.x-direction-row>label{padding:0 .5rem 0 0}.x-textarea.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-textarea.x-direction-column,.x-textarea.x-direction-column-reverse{align-items:inherit}.x-textarea-icon>.x-textarea-row>x-icon{position:absolute;font-size:var(--x-font-size-medium);padding:.4rem}.x-textarea-icon-left>.x-textarea-row>textarea{padding-left:var(--x-font-size-medium).8rem}.x-textarea-icon-left>.x-textarea-row>x-icon{left:0;top:0}.x-textarea-icon-right>.x-textarea-row>textarea{padding-right:var(--x-font-size-medium).8rem}.x-textarea-icon-right>.x-textarea-row>x-icon{right:0;top:0}.x-textarea-icon-right>.x-textarea-row>.x-textarea-max-length{right:inherit;left:0;bottom:0}\n"] }]
96
96
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.XConfigService }]; }, propDecorators: { textarea: [{
97
97
  type: ViewChild,
98
98
  args: ['textarea', { static: true }]
@@ -19,7 +19,9 @@ export class XTimelineComponent extends XTimelineProperty {
19
19
  this.nodes = [];
20
20
  this._unSubject = new Subject();
21
21
  }
22
- ngOnInit() { }
22
+ ngOnInit() {
23
+ this.setClassMap();
24
+ }
23
25
  ngOnChanges(changes) {
24
26
  const { data, mode } = changes;
25
27
  XIsChange(data) && this.setData();
@@ -62,9 +64,9 @@ export class XTimelineComponent extends XTimelineProperty {
62
64
  }
63
65
  }
64
66
  /** @nocollapse */ XTimelineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTimelineComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.XConfigService }], target: i0.ɵɵFactoryTarget.Component });
65
- /** @nocollapse */ XTimelineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XTimelineComponent, selector: "x-timeline", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #timeline class=\"x-timeline\" [ngClass]=\"classMap\">\r\n <ul>\r\n <li *ngFor=\"let node of nodes; trackBy: trackByNode\" [class.x-timeline-loading]=\"node.loading\">\r\n <div class=\"x-timeline-tail\" [class.x-timeline-tail-dashed]=\"node.dashed\"></div>\r\n <div\r\n class=\"x-timeline-icon {{ node.type ? 'x-timeline-' + node.type : '' }} {{ node.size ? 'x-timeline-' + node.size : '' }}\"\r\n [style.background-color]=\"node.color\"\r\n >\r\n <x-icon *ngIf=\"node.icon && !node.loading\" [type]=\"node.icon\"></x-icon>\r\n <x-icon *ngIf=\"node.loading\" type=\"fto-loader\" [spin]=\"true\"></x-icon>\r\n </div>\r\n <div class=\"x-timeline-wrapper\">\r\n <ng-container *xOutlet=\"wrapper; context: { $node: node }\">\r\n <div class=\"x-timeline-label\">\r\n <x-link *ngIf=\"node.label\">{{ node.label }}</x-link>\r\n <span class=\"x-timeline-time\" [title]=\"node.time | date: 'yyyy-MM-dd HH:mm:ss'\">{{ node.time | xTimeAgo }}</span>\r\n </div>\r\n <div class=\"x-timeline-content\">{{ node.content }}</div>\r\n </ng-container>\r\n </div>\r\n </li>\r\n </ul>\r\n</div>\r\n", styles: [".x-timeline{margin:0;padding:0;display:block}.x-timeline>ul{padding-left:.625rem}.x-timeline>ul>li{padding-bottom:1rem;position:relative}.x-timeline>ul>li:last-child .x-timeline-tail{border-left-color:transparent}.x-timeline>ul>li:first-child .x-timeline-tail{top:1.25rem}.x-timeline-tail{position:absolute;height:100%;border-left:.125rem solid var(--x-border)}.x-timeline-tail-dashed{border-left-style:dashed}.x-timeline-icon{position:absolute;background-color:var(--x-border);border-radius:50%;display:flex;justify-content:center;align-items:center;color:var(--x-white);width:1.375rem;height:1.375rem;border:.0625rem solid var(--x-background-100)}.x-timeline-wrapper{position:relative}.x-timeline-label{display:flex;align-items:center;margin-bottom:.125rem}.x-timeline-label>x-link{margin-right:.325rem}.x-timeline-content{color:var(--x-text-300)}.x-timeline-time{font-size:.75rem;color:var(--x-text-400)}.x-timeline-loading .x-timeline-icon{color:var(--x-text-400);font-size:1.25rem;background-color:transparent!important}.x-timeline-left .x-timeline-icon{left:-.625rem}.x-timeline-left .x-timeline-wrapper{padding-left:1.625rem}.x-timeline-right .x-timeline-icon{right:-.625rem}.x-timeline-right .x-timeline-wrapper{padding-right:1.625rem;text-align:right}.x-timeline-right .x-timeline-tail{right:0}.x-timeline-right .x-timeline-label{justify-content:flex-end}.x-timeline-right .x-timeline-content{text-align:right}.x-timeline-alternate .x-timeline-icon{left:50%;margin-left:-.6875rem}.x-timeline-alternate .x-timeline-tail{left:50%;margin-left:-.0625rem}.x-timeline-alternate>ul>li:nth-child(odd) .x-timeline-wrapper{width:50%;padding-right:1.625rem;text-align:right}.x-timeline-alternate>ul>li:nth-child(odd) .x-timeline-label{justify-content:flex-end}.x-timeline-alternate>ul>li:nth-child(odd) .x-timeline-content{text-align:right}.x-timeline-alternate>ul>li:nth-child(even) .x-timeline-wrapper{left:calc(50% - .6875rem);width:50%;padding-left:1.625rem}.x-timeline-primary{background-color:var(--x-primary)}.x-timeline-success{background-color:var(--x-success)}.x-timeline-warning{background-color:var(--x-warning)}.x-timeline-danger{background-color:var(--x-danger)}.x-timeline-info{background-color:var(--x-info)}.x-timeline-big{width:2.175rem;height:2.175rem;left:-1.025rem;font-size:1.55rem}.x-timeline-large{width:1.875rem;height:1.875rem;left:-.875rem;font-size:1.25rem}.x-timeline-medium{width:1.675rem;height:1.675rem;left:-.775rem;font-size:1.05rem}.x-timeline-small{width:1.5rem;height:1.5rem;left:-.6875rem;font-size:.875rem}.x-timeline-mini{width:1.375rem;height:1.375rem;left:-.625rem;font-size:.75rem}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.XIconComponent, selector: "x-icon" }, { kind: "component", type: i4.XLinkComponent, selector: "x-link" }, { kind: "directive", type: i5.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "pipe", type: i6.XTimeAgoPipe, name: "xTimeAgo" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
67
+ /** @nocollapse */ XTimelineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XTimelineComponent, selector: "x-timeline", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #timeline class=\"x-timeline\" [ngClass]=\"classMap\">\r\n <ul>\r\n <li *ngFor=\"let node of nodes; trackBy: trackByNode\" [class.x-timeline-loading]=\"node.loading\">\r\n <div class=\"x-timeline-tail\" [class.x-timeline-tail-dashed]=\"node.dashed\"></div>\r\n <div\r\n class=\"x-timeline-icon {{ node.type ? 'x-timeline-' + node.type : '' }} {{ node.size ? 'x-timeline-' + node.size : '' }}\"\r\n [style.background-color]=\"node.color\"\r\n >\r\n <x-icon *ngIf=\"node.icon && !node.loading\" [type]=\"node.icon\"></x-icon>\r\n <x-icon *ngIf=\"node.loading\" type=\"fto-loader\" [spin]=\"true\"></x-icon>\r\n </div>\r\n <div class=\"x-timeline-wrapper\">\r\n <ng-container *xOutlet=\"wrapper; context: { $node: node }\">\r\n <div class=\"x-timeline-label\">\r\n <x-link *ngIf=\"node.label\">{{ node.label }}</x-link>\r\n <span class=\"x-timeline-time\" [title]=\"node.time | date: 'yyyy-MM-dd HH:mm:ss'\">{{ node.time | xTimeAgo }}</span>\r\n </div>\r\n <div class=\"x-timeline-content\">{{ node.content }}</div>\r\n </ng-container>\r\n </div>\r\n </li>\r\n </ul>\r\n</div>\r\n", styles: [".x-timeline{margin:0;padding:0;display:block}.x-timeline>ul{padding-left:.625rem}.x-timeline>ul>li{padding-bottom:1rem;position:relative}.x-timeline>ul>li:last-child .x-timeline-tail{border-left-color:transparent}.x-timeline>ul>li:first-child .x-timeline-tail{top:1.25rem}.x-timeline-tail{position:absolute;height:100%;border-left:.125rem solid var(--x-border)}.x-timeline-tail-dashed{border-left-style:dashed}.x-timeline-icon{position:absolute;background-color:var(--x-border);border-radius:50%;display:flex;justify-content:center;align-items:center;color:var(--x-white);width:1.375rem;height:1.375rem;border:.0625rem solid var(--x-background-100)}.x-timeline-wrapper{position:relative}.x-timeline-label{display:flex;align-items:center;margin-bottom:.125rem}.x-timeline-label>x-link{margin-right:.325rem}.x-timeline-content{color:var(--x-text-300)}.x-timeline-time{font-size:.75rem;color:var(--x-text-400)}.x-timeline-loading .x-timeline-icon{color:var(--x-text-400);font-size:1.25rem;background-color:transparent!important}.x-timeline-left .x-timeline-icon{left:-.625rem}.x-timeline-left .x-timeline-wrapper{padding-left:1.625rem}.x-timeline-right .x-timeline-icon{right:-.625rem}.x-timeline-right .x-timeline-wrapper{padding-right:1.625rem;text-align:right}.x-timeline-right .x-timeline-tail{right:0}.x-timeline-right .x-timeline-label{justify-content:flex-end}.x-timeline-right .x-timeline-content{text-align:right}.x-timeline-alternate .x-timeline-icon{left:50%;margin-left:-.6875rem}.x-timeline-alternate .x-timeline-tail{left:50%;margin-left:-.0625rem}.x-timeline-alternate>ul>li:nth-child(odd) .x-timeline-wrapper{width:50%;padding-right:1.625rem;text-align:right}.x-timeline-alternate>ul>li:nth-child(odd) .x-timeline-label{justify-content:flex-end}.x-timeline-alternate>ul>li:nth-child(odd) .x-timeline-content{text-align:right}.x-timeline-alternate>ul>li:nth-child(even) .x-timeline-wrapper{left:50%;width:50%;padding-left:1.625rem}.x-timeline-primary{background-color:var(--x-primary)}.x-timeline-success{background-color:var(--x-success)}.x-timeline-warning{background-color:var(--x-warning)}.x-timeline-danger{background-color:var(--x-danger)}.x-timeline-info{background-color:var(--x-info)}.x-timeline-big{width:2.175rem;height:2.175rem;left:-1.025rem;font-size:1.55rem}.x-timeline-large{width:1.875rem;height:1.875rem;left:-.875rem;font-size:1.25rem}.x-timeline-medium{width:1.675rem;height:1.675rem;left:-.775rem;font-size:1.05rem}.x-timeline-small{width:1.5rem;height:1.5rem;left:-.6875rem;font-size:.875rem}.x-timeline-mini{width:1.375rem;height:1.375rem;left:-.625rem;font-size:.75rem}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.XIconComponent, selector: "x-icon" }, { kind: "component", type: i4.XLinkComponent, selector: "x-link" }, { kind: "directive", type: i5.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "pipe", type: i6.XTimeAgoPipe, name: "xTimeAgo" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
66
68
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTimelineComponent, decorators: [{
67
69
  type: Component,
68
- args: [{ selector: `${XTimelinePrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #timeline class=\"x-timeline\" [ngClass]=\"classMap\">\r\n <ul>\r\n <li *ngFor=\"let node of nodes; trackBy: trackByNode\" [class.x-timeline-loading]=\"node.loading\">\r\n <div class=\"x-timeline-tail\" [class.x-timeline-tail-dashed]=\"node.dashed\"></div>\r\n <div\r\n class=\"x-timeline-icon {{ node.type ? 'x-timeline-' + node.type : '' }} {{ node.size ? 'x-timeline-' + node.size : '' }}\"\r\n [style.background-color]=\"node.color\"\r\n >\r\n <x-icon *ngIf=\"node.icon && !node.loading\" [type]=\"node.icon\"></x-icon>\r\n <x-icon *ngIf=\"node.loading\" type=\"fto-loader\" [spin]=\"true\"></x-icon>\r\n </div>\r\n <div class=\"x-timeline-wrapper\">\r\n <ng-container *xOutlet=\"wrapper; context: { $node: node }\">\r\n <div class=\"x-timeline-label\">\r\n <x-link *ngIf=\"node.label\">{{ node.label }}</x-link>\r\n <span class=\"x-timeline-time\" [title]=\"node.time | date: 'yyyy-MM-dd HH:mm:ss'\">{{ node.time | xTimeAgo }}</span>\r\n </div>\r\n <div class=\"x-timeline-content\">{{ node.content }}</div>\r\n </ng-container>\r\n </div>\r\n </li>\r\n </ul>\r\n</div>\r\n", styles: [".x-timeline{margin:0;padding:0;display:block}.x-timeline>ul{padding-left:.625rem}.x-timeline>ul>li{padding-bottom:1rem;position:relative}.x-timeline>ul>li:last-child .x-timeline-tail{border-left-color:transparent}.x-timeline>ul>li:first-child .x-timeline-tail{top:1.25rem}.x-timeline-tail{position:absolute;height:100%;border-left:.125rem solid var(--x-border)}.x-timeline-tail-dashed{border-left-style:dashed}.x-timeline-icon{position:absolute;background-color:var(--x-border);border-radius:50%;display:flex;justify-content:center;align-items:center;color:var(--x-white);width:1.375rem;height:1.375rem;border:.0625rem solid var(--x-background-100)}.x-timeline-wrapper{position:relative}.x-timeline-label{display:flex;align-items:center;margin-bottom:.125rem}.x-timeline-label>x-link{margin-right:.325rem}.x-timeline-content{color:var(--x-text-300)}.x-timeline-time{font-size:.75rem;color:var(--x-text-400)}.x-timeline-loading .x-timeline-icon{color:var(--x-text-400);font-size:1.25rem;background-color:transparent!important}.x-timeline-left .x-timeline-icon{left:-.625rem}.x-timeline-left .x-timeline-wrapper{padding-left:1.625rem}.x-timeline-right .x-timeline-icon{right:-.625rem}.x-timeline-right .x-timeline-wrapper{padding-right:1.625rem;text-align:right}.x-timeline-right .x-timeline-tail{right:0}.x-timeline-right .x-timeline-label{justify-content:flex-end}.x-timeline-right .x-timeline-content{text-align:right}.x-timeline-alternate .x-timeline-icon{left:50%;margin-left:-.6875rem}.x-timeline-alternate .x-timeline-tail{left:50%;margin-left:-.0625rem}.x-timeline-alternate>ul>li:nth-child(odd) .x-timeline-wrapper{width:50%;padding-right:1.625rem;text-align:right}.x-timeline-alternate>ul>li:nth-child(odd) .x-timeline-label{justify-content:flex-end}.x-timeline-alternate>ul>li:nth-child(odd) .x-timeline-content{text-align:right}.x-timeline-alternate>ul>li:nth-child(even) .x-timeline-wrapper{left:calc(50% - .6875rem);width:50%;padding-left:1.625rem}.x-timeline-primary{background-color:var(--x-primary)}.x-timeline-success{background-color:var(--x-success)}.x-timeline-warning{background-color:var(--x-warning)}.x-timeline-danger{background-color:var(--x-danger)}.x-timeline-info{background-color:var(--x-info)}.x-timeline-big{width:2.175rem;height:2.175rem;left:-1.025rem;font-size:1.55rem}.x-timeline-large{width:1.875rem;height:1.875rem;left:-.875rem;font-size:1.25rem}.x-timeline-medium{width:1.675rem;height:1.675rem;left:-.775rem;font-size:1.05rem}.x-timeline-small{width:1.5rem;height:1.5rem;left:-.6875rem;font-size:.875rem}.x-timeline-mini{width:1.375rem;height:1.375rem;left:-.625rem;font-size:.75rem}\n"] }]
70
+ args: [{ selector: `${XTimelinePrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #timeline class=\"x-timeline\" [ngClass]=\"classMap\">\r\n <ul>\r\n <li *ngFor=\"let node of nodes; trackBy: trackByNode\" [class.x-timeline-loading]=\"node.loading\">\r\n <div class=\"x-timeline-tail\" [class.x-timeline-tail-dashed]=\"node.dashed\"></div>\r\n <div\r\n class=\"x-timeline-icon {{ node.type ? 'x-timeline-' + node.type : '' }} {{ node.size ? 'x-timeline-' + node.size : '' }}\"\r\n [style.background-color]=\"node.color\"\r\n >\r\n <x-icon *ngIf=\"node.icon && !node.loading\" [type]=\"node.icon\"></x-icon>\r\n <x-icon *ngIf=\"node.loading\" type=\"fto-loader\" [spin]=\"true\"></x-icon>\r\n </div>\r\n <div class=\"x-timeline-wrapper\">\r\n <ng-container *xOutlet=\"wrapper; context: { $node: node }\">\r\n <div class=\"x-timeline-label\">\r\n <x-link *ngIf=\"node.label\">{{ node.label }}</x-link>\r\n <span class=\"x-timeline-time\" [title]=\"node.time | date: 'yyyy-MM-dd HH:mm:ss'\">{{ node.time | xTimeAgo }}</span>\r\n </div>\r\n <div class=\"x-timeline-content\">{{ node.content }}</div>\r\n </ng-container>\r\n </div>\r\n </li>\r\n </ul>\r\n</div>\r\n", styles: [".x-timeline{margin:0;padding:0;display:block}.x-timeline>ul{padding-left:.625rem}.x-timeline>ul>li{padding-bottom:1rem;position:relative}.x-timeline>ul>li:last-child .x-timeline-tail{border-left-color:transparent}.x-timeline>ul>li:first-child .x-timeline-tail{top:1.25rem}.x-timeline-tail{position:absolute;height:100%;border-left:.125rem solid var(--x-border)}.x-timeline-tail-dashed{border-left-style:dashed}.x-timeline-icon{position:absolute;background-color:var(--x-border);border-radius:50%;display:flex;justify-content:center;align-items:center;color:var(--x-white);width:1.375rem;height:1.375rem;border:.0625rem solid var(--x-background-100)}.x-timeline-wrapper{position:relative}.x-timeline-label{display:flex;align-items:center;margin-bottom:.125rem}.x-timeline-label>x-link{margin-right:.325rem}.x-timeline-content{color:var(--x-text-300)}.x-timeline-time{font-size:.75rem;color:var(--x-text-400)}.x-timeline-loading .x-timeline-icon{color:var(--x-text-400);font-size:1.25rem;background-color:transparent!important}.x-timeline-left .x-timeline-icon{left:-.625rem}.x-timeline-left .x-timeline-wrapper{padding-left:1.625rem}.x-timeline-right .x-timeline-icon{right:-.625rem}.x-timeline-right .x-timeline-wrapper{padding-right:1.625rem;text-align:right}.x-timeline-right .x-timeline-tail{right:0}.x-timeline-right .x-timeline-label{justify-content:flex-end}.x-timeline-right .x-timeline-content{text-align:right}.x-timeline-alternate .x-timeline-icon{left:50%;margin-left:-.6875rem}.x-timeline-alternate .x-timeline-tail{left:50%;margin-left:-.0625rem}.x-timeline-alternate>ul>li:nth-child(odd) .x-timeline-wrapper{width:50%;padding-right:1.625rem;text-align:right}.x-timeline-alternate>ul>li:nth-child(odd) .x-timeline-label{justify-content:flex-end}.x-timeline-alternate>ul>li:nth-child(odd) .x-timeline-content{text-align:right}.x-timeline-alternate>ul>li:nth-child(even) .x-timeline-wrapper{left:50%;width:50%;padding-left:1.625rem}.x-timeline-primary{background-color:var(--x-primary)}.x-timeline-success{background-color:var(--x-success)}.x-timeline-warning{background-color:var(--x-warning)}.x-timeline-danger{background-color:var(--x-danger)}.x-timeline-info{background-color:var(--x-info)}.x-timeline-big{width:2.175rem;height:2.175rem;left:-1.025rem;font-size:1.55rem}.x-timeline-large{width:1.875rem;height:1.875rem;left:-.875rem;font-size:1.25rem}.x-timeline-medium{width:1.675rem;height:1.675rem;left:-.775rem;font-size:1.05rem}.x-timeline-small{width:1.5rem;height:1.5rem;left:-.6875rem;font-size:.875rem}.x-timeline-mini{width:1.375rem;height:1.375rem;left:-.625rem;font-size:.75rem}\n"] }]
69
71
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.XConfigService }]; } });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdGltZWxpbmUvdGltZWxpbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdGltZWxpbmUvdGltZWxpbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxpQkFBaUIsRUFJakIsdUJBQXVCLEVBR3hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWlCLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQWtCLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBUy9CLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxpQkFBaUI7SUFHdkQsWUFDUyxRQUFtQixFQUNuQixVQUFzQixFQUN0QixHQUFzQixFQUN0QixhQUE2QjtRQUVwQyxLQUFLLEVBQUUsQ0FBQztRQUxELGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFOdEMsVUFBSyxHQUFvQixFQUFFLENBQUM7UUFDcEIsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFRekMsQ0FBQztJQUVELFFBQVEsS0FBSSxDQUFDO0lBRWIsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQy9CLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsV0FBVztRQUNULFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLGVBQWUsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM1RSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBYyxFQUFFLElBQW1CO1FBQzdDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRU8sT0FBTztRQUNiLFFBQVEsQ0FBZ0IsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDbEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sU0FBUyxDQUFDLEtBQXNCO1FBQ3RDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDekIsSUFBSSxHQUFHLElBQUksQ0FBQztZQUFFLE9BQU87UUFDckIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDckMsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztnQkFBRSxTQUFTO1lBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDWCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQzthQUNwQjtpQkFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2hCLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQzthQUM1QjtTQUNGO0lBQ0gsQ0FBQzs7a0lBdkRVLGtCQUFrQjtzSEFBbEIsa0JBQWtCLDhGQ3RCL0IsNnJDQXVCQTsyRkREYSxrQkFBa0I7a0JBUDlCLFNBQVM7K0JBQ0UsR0FBRyxlQUFlLEVBQUUsaUJBR2YsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBSZW5kZXJlcjIsXHJcbiAgRWxlbWVudFJlZixcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIE9uQ2hhbmdlc1xyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYVGltZWxpbmVQcmVmaXgsIFhUaW1lbGluZU5vZGUsIFhUaW1lbGluZVByb3BlcnR5IH0gZnJvbSAnLi90aW1lbGluZS5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IFhJc0NoYW5nZSwgWFNldERhdGEsIFhDb25maWdTZXJ2aWNlLCBYQ2xlYXJDbGFzcyB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WFRpbWVsaW5lUHJlZml4fWAsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWVsaW5lLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90aW1lbGluZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFhUaW1lbGluZUNvbXBvbmVudCBleHRlbmRzIFhUaW1lbGluZVByb3BlcnR5IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIG5vZGVzOiBYVGltZWxpbmVOb2RlW10gPSBbXTtcclxuICBwcml2YXRlIF91blN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHVibGljIGNvbmZpZ1NlcnZpY2U6IFhDb25maWdTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7fVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGRhdGEsIG1vZGUgfSA9IGNoYW5nZXM7XHJcbiAgICBYSXNDaGFuZ2UoZGF0YSkgJiYgdGhpcy5zZXREYXRhKCk7XHJcbiAgICBYSXNDaGFuZ2UobW9kZSkgJiYgdGhpcy5zZXRDbGFzc01hcCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl91blN1YmplY3QubmV4dCgpO1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRDbGFzc01hcCgpIHtcclxuICAgIFhDbGVhckNsYXNzKHRoaXMuY2xhc3NNYXApO1xyXG4gICAgdGhpcy5jbGFzc01hcFtgJHtYVGltZWxpbmVQcmVmaXh9LSR7dGhpcy5tb2RlfWBdID0gdGhpcy5tb2RlID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeU5vZGUoX2luZGV4OiBudW1iZXIsIGl0ZW06IFhUaW1lbGluZU5vZGUpIHtcclxuICAgIHJldHVybiBpdGVtLmlkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREYXRhKCkge1xyXG4gICAgWFNldERhdGE8WFRpbWVsaW5lTm9kZT4odGhpcy5kYXRhLCB0aGlzLl91blN1YmplY3QpLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICB0aGlzLnNldERhc2hlZCh4KTtcclxuICAgICAgdGhpcy5ub2RlcyA9IHg7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREYXNoZWQobm9kZXM6IFhUaW1lbGluZU5vZGVbXSkge1xyXG4gICAgY29uc3QgbGVuID0gbm9kZXMubGVuZ3RoO1xyXG4gICAgaWYgKGxlbiA8PSAxKSByZXR1cm47XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBub2RlID0gbm9kZXNbaV07XHJcbiAgICAgIGlmICghbm9kZS5sb2FkaW5nKSBjb250aW51ZTtcclxuICAgICAgaWYgKGkgPT09IDApIHtcclxuICAgICAgICBub2RlLmRhc2hlZCA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoaSA+IDApIHtcclxuICAgICAgICBub2Rlc1tpIC0gMV0uZGFzaGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICN0aW1lbGluZSBjbGFzcz1cIngtdGltZWxpbmVcIiBbbmdDbGFzc109XCJjbGFzc01hcFwiPlxyXG4gIDx1bD5cclxuICAgIDxsaSAqbmdGb3I9XCJsZXQgbm9kZSBvZiBub2RlczsgdHJhY2tCeTogdHJhY2tCeU5vZGVcIiBbY2xhc3MueC10aW1lbGluZS1sb2FkaW5nXT1cIm5vZGUubG9hZGluZ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwieC10aW1lbGluZS10YWlsXCIgW2NsYXNzLngtdGltZWxpbmUtdGFpbC1kYXNoZWRdPVwibm9kZS5kYXNoZWRcIj48L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwieC10aW1lbGluZS1pY29uIHt7IG5vZGUudHlwZSA/ICd4LXRpbWVsaW5lLScgKyBub2RlLnR5cGUgOiAnJyB9fSB7eyBub2RlLnNpemUgPyAneC10aW1lbGluZS0nICsgbm9kZS5zaXplIDogJycgfX1cIlxyXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIm5vZGUuY29sb3JcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHgtaWNvbiAqbmdJZj1cIm5vZGUuaWNvbiAmJiAhbm9kZS5sb2FkaW5nXCIgW3R5cGVdPVwibm9kZS5pY29uXCI+PC94LWljb24+XHJcbiAgICAgICAgPHgtaWNvbiAqbmdJZj1cIm5vZGUubG9hZGluZ1wiIHR5cGU9XCJmdG8tbG9hZGVyXCIgW3NwaW5dPVwidHJ1ZVwiPjwveC1pY29uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIngtdGltZWxpbmUtd3JhcHBlclwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJ3cmFwcGVyOyBjb250ZXh0OiB7ICRub2RlOiBub2RlIH1cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ4LXRpbWVsaW5lLWxhYmVsXCI+XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKm5nSWY9XCJub2RlLmxhYmVsXCI+e3sgbm9kZS5sYWJlbCB9fTwveC1saW5rPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIngtdGltZWxpbmUtdGltZVwiIFt0aXRsZV09XCJub2RlLnRpbWUgfCBkYXRlOiAneXl5eS1NTS1kZCBISDptbTpzcydcIj57eyBub2RlLnRpbWUgfCB4VGltZUFnbyB9fTwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIngtdGltZWxpbmUtY29udGVudFwiPnt7IG5vZGUuY29udGVudCB9fTwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbGk+XHJcbiAgPC91bD5cclxuPC9kaXY+XHJcbiJdfQ==
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdGltZWxpbmUvdGltZWxpbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdGltZWxpbmUvdGltZWxpbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxpQkFBaUIsRUFJakIsdUJBQXVCLEVBR3hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWlCLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQWtCLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBUy9CLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxpQkFBaUI7SUFHdkQsWUFDUyxRQUFtQixFQUNuQixVQUFzQixFQUN0QixHQUFzQixFQUN0QixhQUE2QjtRQUVwQyxLQUFLLEVBQUUsQ0FBQztRQUxELGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFOdEMsVUFBSyxHQUFvQixFQUFFLENBQUM7UUFDcEIsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFRekMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUMvQixTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFdBQVc7UUFDVCxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxlQUFlLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDNUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWMsRUFBRSxJQUFtQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVPLE9BQU87UUFDYixRQUFRLENBQWdCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2xFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFNBQVMsQ0FBQyxLQUFzQjtRQUN0QyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3pCLElBQUksR0FBRyxJQUFJLENBQUM7WUFBRSxPQUFPO1FBQ3JCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3JDLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87Z0JBQUUsU0FBUztZQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7YUFDcEI7aUJBQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNoQixLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7YUFDNUI7U0FDRjtJQUNILENBQUM7O2tJQXpEVSxrQkFBa0I7c0hBQWxCLGtCQUFrQiw4RkN0Qi9CLDZyQ0F1QkE7MkZERGEsa0JBQWtCO2tCQVA5QixTQUFTOytCQUNFLEdBQUcsZUFBZSxFQUFFLGlCQUdmLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgUmVuZGVyZXIyLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBPbkNoYW5nZXNcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWFRpbWVsaW5lUHJlZml4LCBYVGltZWxpbmVOb2RlLCBYVGltZWxpbmVQcm9wZXJ0eSB9IGZyb20gJy4vdGltZWxpbmUucHJvcGVydHknO1xyXG5pbXBvcnQgeyBYSXNDaGFuZ2UsIFhTZXREYXRhLCBYQ29uZmlnU2VydmljZSwgWENsZWFyQ2xhc3MgfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hUaW1lbGluZVByZWZpeH1gLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90aW1lbGluZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGltZWxpbmUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYVGltZWxpbmVDb21wb25lbnQgZXh0ZW5kcyBYVGltZWxpbmVQcm9wZXJ0eSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBub2RlczogWFRpbWVsaW5lTm9kZVtdID0gW107XHJcbiAgcHJpdmF0ZSBfdW5TdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyBjb25maWdTZXJ2aWNlOiBYQ29uZmlnU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgY29uc3QgeyBkYXRhLCBtb2RlIH0gPSBjaGFuZ2VzO1xyXG4gICAgWElzQ2hhbmdlKGRhdGEpICYmIHRoaXMuc2V0RGF0YSgpO1xyXG4gICAgWElzQ2hhbmdlKG1vZGUpICYmIHRoaXMuc2V0Q2xhc3NNYXAoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0Lm5leHQoKTtcclxuICAgIHRoaXMuX3VuU3ViamVjdC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2xhc3NNYXAoKSB7XHJcbiAgICBYQ2xlYXJDbGFzcyh0aGlzLmNsYXNzTWFwKTtcclxuICAgIHRoaXMuY2xhc3NNYXBbYCR7WFRpbWVsaW5lUHJlZml4fS0ke3RoaXMubW9kZX1gXSA9IHRoaXMubW9kZSA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlOb2RlKF9pbmRleDogbnVtYmVyLCBpdGVtOiBYVGltZWxpbmVOb2RlKSB7XHJcbiAgICByZXR1cm4gaXRlbS5pZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RGF0YSgpIHtcclxuICAgIFhTZXREYXRhPFhUaW1lbGluZU5vZGU+KHRoaXMuZGF0YSwgdGhpcy5fdW5TdWJqZWN0KS5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgdGhpcy5zZXREYXNoZWQoeCk7XHJcbiAgICAgIHRoaXMubm9kZXMgPSB4O1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RGFzaGVkKG5vZGVzOiBYVGltZWxpbmVOb2RlW10pIHtcclxuICAgIGNvbnN0IGxlbiA9IG5vZGVzLmxlbmd0aDtcclxuICAgIGlmIChsZW4gPD0gMSkgcmV0dXJuO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgbm9kZSA9IG5vZGVzW2ldO1xyXG4gICAgICBpZiAoIW5vZGUubG9hZGluZykgY29udGludWU7XHJcbiAgICAgIGlmIChpID09PSAwKSB7XHJcbiAgICAgICAgbm9kZS5kYXNoZWQgPSB0cnVlO1xyXG4gICAgICB9IGVsc2UgaWYgKGkgPiAwKSB7XHJcbiAgICAgICAgbm9kZXNbaSAtIDFdLmRhc2hlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiAjdGltZWxpbmUgY2xhc3M9XCJ4LXRpbWVsaW5lXCIgW25nQ2xhc3NdPVwiY2xhc3NNYXBcIj5cclxuICA8dWw+XHJcbiAgICA8bGkgKm5nRm9yPVwibGV0IG5vZGUgb2Ygbm9kZXM7IHRyYWNrQnk6IHRyYWNrQnlOb2RlXCIgW2NsYXNzLngtdGltZWxpbmUtbG9hZGluZ109XCJub2RlLmxvYWRpbmdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIngtdGltZWxpbmUtdGFpbFwiIFtjbGFzcy54LXRpbWVsaW5lLXRhaWwtZGFzaGVkXT1cIm5vZGUuZGFzaGVkXCI+PC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cIngtdGltZWxpbmUtaWNvbiB7eyBub2RlLnR5cGUgPyAneC10aW1lbGluZS0nICsgbm9kZS50eXBlIDogJycgfX0ge3sgbm9kZS5zaXplID8gJ3gtdGltZWxpbmUtJyArIG5vZGUuc2l6ZSA6ICcnIH19XCJcclxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJub2RlLmNvbG9yXCJcclxuICAgICAgPlxyXG4gICAgICAgIDx4LWljb24gKm5nSWY9XCJub2RlLmljb24gJiYgIW5vZGUubG9hZGluZ1wiIFt0eXBlXT1cIm5vZGUuaWNvblwiPjwveC1pY29uPlxyXG4gICAgICAgIDx4LWljb24gKm5nSWY9XCJub2RlLmxvYWRpbmdcIiB0eXBlPVwiZnRvLWxvYWRlclwiIFtzcGluXT1cInRydWVcIj48L3gtaWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ4LXRpbWVsaW5lLXdyYXBwZXJcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICp4T3V0bGV0PVwid3JhcHBlcjsgY29udGV4dDogeyAkbm9kZTogbm9kZSB9XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwieC10aW1lbGluZS1sYWJlbFwiPlxyXG4gICAgICAgICAgICA8eC1saW5rICpuZ0lmPVwibm9kZS5sYWJlbFwiPnt7IG5vZGUubGFiZWwgfX08L3gtbGluaz5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ4LXRpbWVsaW5lLXRpbWVcIiBbdGl0bGVdPVwibm9kZS50aW1lIHwgZGF0ZTogJ3l5eXktTU0tZGQgSEg6bW06c3MnXCI+e3sgbm9kZS50aW1lIHwgeFRpbWVBZ28gfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ4LXRpbWVsaW5lLWNvbnRlbnRcIj57eyBub2RlLmNvbnRlbnQgfX08L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2xpPlxyXG4gIDwvdWw+XHJcbjwvZGl2PlxyXG4iXX0=