novo-elements 8.3.0 → 8.4.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/addons/ace-editor/AceEditor.d.ts +4 -2
  2. package/addons/code-editor/CodeEditor.d.ts +31 -0
  3. package/addons/code-editor/CodeEditor.module.d.ts +9 -0
  4. package/addons/code-editor/CodeEditor.scss +5 -0
  5. package/addons/code-editor/index.d.ts +2 -0
  6. package/addons/code-editor/novo-elements-addons-code-editor.d.ts +5 -0
  7. package/addons/code-editor/package.json +10 -0
  8. package/addons/index.d.ts +1 -0
  9. package/elements/aside/aside.component.scss +1 -1
  10. package/elements/calendar/Calendar.module.d.ts +2 -3
  11. package/elements/checkbox/CheckList.scss +1 -1
  12. package/elements/checkbox/Checkbox.scss +1 -1
  13. package/elements/common/overlay/Overlay.d.ts +1 -0
  14. package/elements/date-picker/DatePicker.module.d.ts +2 -2
  15. package/elements/date-picker/DatePickerInput.d.ts +8 -5
  16. package/elements/date-picker/MultiDateInput.d.ts +0 -1
  17. package/elements/date-time-picker/DateTimePicker.module.d.ts +2 -3
  18. package/elements/drag-drop/drag-drop-box.d.ts +45 -0
  19. package/elements/drag-drop/drag-drop.module.d.ts +7 -0
  20. package/elements/drag-drop/index.d.ts +2 -0
  21. package/elements/drag-drop/novo-elements-elements-drag-drop.d.ts +5 -0
  22. package/elements/drag-drop/package.json +10 -0
  23. package/elements/dropdown/Dropdown.d.ts +7 -1
  24. package/elements/field/formats/date-time-format.d.ts +2 -2
  25. package/elements/form/Control.d.ts +9 -6
  26. package/elements/form/ControlTemplates.d.ts +1 -1
  27. package/elements/form/Form.module.d.ts +6 -6
  28. package/elements/form/controls/code-editor/CodeEditorControl.d.ts +5 -0
  29. package/elements/form/controls/code-editor/index.d.ts +1 -0
  30. package/elements/form/controls/index.d.ts +2 -1
  31. package/elements/form/extras/FormExtras.module.d.ts +4 -4
  32. package/elements/form/extras/file/FileInput.d.ts +15 -16
  33. package/elements/form/extras/file/FileInput.scss +58 -30
  34. package/elements/index.d.ts +1 -0
  35. package/elements/query-builder/condition-builder/condition-builder.component.scss +1 -1
  36. package/elements/query-builder/condition-definitions/address-condition.definition.d.ts +1 -1
  37. package/elements/select-search/select-search.component.scss +1 -1
  38. package/elements/table/Table.module.d.ts +5 -6
  39. package/elements/time-picker/TimePicker.d.ts +2 -3
  40. package/elements/time-picker/TimePicker.module.d.ts +3 -4
  41. package/elements/time-picker/TimePickerInput.d.ts +0 -1
  42. package/esm2020/addons/ace-editor/AceEditor.mjs +8 -4
  43. package/esm2020/addons/ckeditor/CKEditor.mjs +8 -1
  44. package/esm2020/addons/code-editor/CodeEditor.mjs +129 -0
  45. package/esm2020/addons/code-editor/CodeEditor.module.mjs +19 -0
  46. package/esm2020/addons/code-editor/index.mjs +3 -0
  47. package/esm2020/addons/code-editor/novo-elements-addons-code-editor.mjs +5 -0
  48. package/esm2020/addons/index.mjs +2 -1
  49. package/esm2020/elements/breadcrumbs/breadcrumb-item/BreadcrumbItem.mjs +1 -1
  50. package/esm2020/elements/calendar/Calendar.module.mjs +5 -7
  51. package/esm2020/elements/calendar/calendar.component.mjs +3 -3
  52. package/esm2020/elements/calendar/month-select/month-select.component.mjs +3 -3
  53. package/esm2020/elements/calendar/month-view/month-view.component.mjs +3 -3
  54. package/esm2020/elements/calendar/year-select/year-select.component.mjs +3 -3
  55. package/esm2020/elements/common/overlay/Overlay.mjs +11 -5
  56. package/esm2020/elements/data-table/cell-headers/data-table-header-cell.component.mjs +1 -1
  57. package/esm2020/elements/data-table/data-table-clear-button.component.mjs +1 -1
  58. package/esm2020/elements/data-table/data-table.component.mjs +2 -2
  59. package/esm2020/elements/date-picker/DatePicker.module.mjs +6 -6
  60. package/esm2020/elements/date-picker/DatePickerInput.mjs +50 -29
  61. package/esm2020/elements/date-picker/DateRangeInput.mjs +10 -16
  62. package/esm2020/elements/date-picker/MultiDateInput.mjs +1 -17
  63. package/esm2020/elements/date-time-picker/DateTimePicker.module.mjs +4 -5
  64. package/esm2020/elements/drag-drop/drag-drop-box.mjs +224 -0
  65. package/esm2020/elements/drag-drop/drag-drop.module.mjs +16 -0
  66. package/esm2020/elements/drag-drop/index.mjs +3 -0
  67. package/esm2020/elements/drag-drop/novo-elements-elements-drag-drop.mjs +5 -0
  68. package/esm2020/elements/dropdown/Dropdown.mjs +29 -4
  69. package/esm2020/elements/field/formats/date-format.mjs +5 -5
  70. package/esm2020/elements/field/formats/date-range-format.mjs +5 -5
  71. package/esm2020/elements/field/formats/date-time-format.mjs +12 -12
  72. package/esm2020/elements/field/formats/time-format.mjs +6 -6
  73. package/esm2020/elements/form/Control.mjs +20 -8
  74. package/esm2020/elements/form/ControlTemplates.mjs +54 -27
  75. package/esm2020/elements/form/Form.module.mjs +12 -13
  76. package/esm2020/elements/form/NovoFormControl.mjs +1 -2
  77. package/esm2020/elements/form/controls/code-editor/CodeEditorControl.mjs +9 -0
  78. package/esm2020/elements/form/controls/code-editor/index.mjs +2 -0
  79. package/esm2020/elements/form/controls/index.mjs +3 -2
  80. package/esm2020/elements/form/controls/timezone/TimezoneControl.mjs +2 -2
  81. package/esm2020/elements/form/extras/FormExtras.module.mjs +8 -9
  82. package/esm2020/elements/form/extras/file/FileInput.mjs +38 -261
  83. package/esm2020/elements/index.mjs +2 -1
  84. package/esm2020/elements/query-builder/condition-definitions/address-condition.definition.mjs +2 -2
  85. package/esm2020/elements/query-builder/condition-group/condition-group.component.mjs +1 -1
  86. package/esm2020/elements/simple-table/cell-header.mjs +2 -2
  87. package/esm2020/elements/simple-table/cell.mjs +1 -1
  88. package/esm2020/elements/tabbed-group-picker/TabbedGroupPicker.mjs +1 -1
  89. package/esm2020/elements/table/Table.mjs +1 -1
  90. package/esm2020/elements/table/Table.module.mjs +1 -6
  91. package/esm2020/elements/table/extras/dropdown-cell/DropdownCell.mjs +1 -1
  92. package/esm2020/elements/time-picker/TimePicker.mjs +5 -6
  93. package/esm2020/elements/time-picker/TimePicker.module.mjs +4 -5
  94. package/esm2020/elements/time-picker/TimePickerInput.mjs +3 -65
  95. package/esm2020/index.mjs +1 -1
  96. package/esm2020/novo-elements.module.mjs +9 -3
  97. package/esm2020/novo-elements.providers.mjs +2 -2
  98. package/esm2020/services/date-format/DateFormat.mjs +153 -47
  99. package/esm2020/services/global/global.service.mjs +7 -1
  100. package/esm2020/utils/date/Date.mjs +1 -1
  101. package/esm2020/utils/date/index.mjs +3 -2
  102. package/esm2020/utils/date/timezone-support.mjs +87 -0
  103. package/fesm2015/novo-elements-addons-ace-editor.mjs +7 -3
  104. package/fesm2015/novo-elements-addons-ace-editor.mjs.map +1 -1
  105. package/fesm2015/novo-elements-addons-ckeditor.mjs +7 -0
  106. package/fesm2015/novo-elements-addons-ckeditor.mjs.map +1 -1
  107. package/fesm2015/novo-elements-addons-code-editor.mjs +150 -0
  108. package/fesm2015/novo-elements-addons-code-editor.mjs.map +1 -0
  109. package/fesm2015/novo-elements-addons.mjs +155 -5
  110. package/fesm2015/novo-elements-addons.mjs.map +1 -1
  111. package/fesm2015/novo-elements-elements-breadcrumbs.mjs +1 -1
  112. package/fesm2015/novo-elements-elements-breadcrumbs.mjs.map +1 -1
  113. package/fesm2015/novo-elements-elements-calendar.mjs +12 -13
  114. package/fesm2015/novo-elements-elements-calendar.mjs.map +1 -1
  115. package/fesm2015/novo-elements-elements-common.mjs +10 -2
  116. package/fesm2015/novo-elements-elements-common.mjs.map +1 -1
  117. package/fesm2015/novo-elements-elements-data-table.mjs +3 -3
  118. package/fesm2015/novo-elements-elements-data-table.mjs.map +1 -1
  119. package/fesm2015/novo-elements-elements-date-picker.mjs +64 -62
  120. package/fesm2015/novo-elements-elements-date-picker.mjs.map +1 -1
  121. package/fesm2015/novo-elements-elements-date-time-picker.mjs +3 -4
  122. package/fesm2015/novo-elements-elements-date-time-picker.mjs.map +1 -1
  123. package/fesm2015/novo-elements-elements-drag-drop.mjs +245 -0
  124. package/fesm2015/novo-elements-elements-drag-drop.mjs.map +1 -0
  125. package/fesm2015/novo-elements-elements-dropdown.mjs +28 -3
  126. package/fesm2015/novo-elements-elements-dropdown.mjs.map +1 -1
  127. package/fesm2015/novo-elements-elements-field.mjs +19 -19
  128. package/fesm2015/novo-elements-elements-field.mjs.map +1 -1
  129. package/fesm2015/novo-elements-elements-form.mjs +124 -300
  130. package/fesm2015/novo-elements-elements-form.mjs.map +1 -1
  131. package/fesm2015/novo-elements-elements-query-builder.mjs +1 -1
  132. package/fesm2015/novo-elements-elements-query-builder.mjs.map +1 -1
  133. package/fesm2015/novo-elements-elements-simple-table.mjs +2 -2
  134. package/fesm2015/novo-elements-elements-simple-table.mjs.map +1 -1
  135. package/fesm2015/novo-elements-elements-tabbed-group-picker.mjs +1 -1
  136. package/fesm2015/novo-elements-elements-tabbed-group-picker.mjs.map +1 -1
  137. package/fesm2015/novo-elements-elements-table.mjs +2 -6
  138. package/fesm2015/novo-elements-elements-table.mjs.map +1 -1
  139. package/fesm2015/novo-elements-elements-time-picker.mjs +7 -71
  140. package/fesm2015/novo-elements-elements-time-picker.mjs.map +1 -1
  141. package/fesm2015/novo-elements-elements.mjs +1 -0
  142. package/fesm2015/novo-elements-elements.mjs.map +1 -1
  143. package/fesm2015/novo-elements-services.mjs +158 -46
  144. package/fesm2015/novo-elements-services.mjs.map +1 -1
  145. package/fesm2015/novo-elements-utils.mjs +88 -1
  146. package/fesm2015/novo-elements-utils.mjs.map +1 -1
  147. package/fesm2015/novo-elements.mjs +8 -2
  148. package/fesm2015/novo-elements.mjs.map +1 -1
  149. package/fesm2020/novo-elements-addons-ace-editor.mjs +7 -3
  150. package/fesm2020/novo-elements-addons-ace-editor.mjs.map +1 -1
  151. package/fesm2020/novo-elements-addons-ckeditor.mjs +7 -0
  152. package/fesm2020/novo-elements-addons-ckeditor.mjs.map +1 -1
  153. package/fesm2020/novo-elements-addons-code-editor.mjs +150 -0
  154. package/fesm2020/novo-elements-addons-code-editor.mjs.map +1 -0
  155. package/fesm2020/novo-elements-addons.mjs +155 -5
  156. package/fesm2020/novo-elements-addons.mjs.map +1 -1
  157. package/fesm2020/novo-elements-elements-breadcrumbs.mjs +1 -1
  158. package/fesm2020/novo-elements-elements-breadcrumbs.mjs.map +1 -1
  159. package/fesm2020/novo-elements-elements-calendar.mjs +12 -13
  160. package/fesm2020/novo-elements-elements-calendar.mjs.map +1 -1
  161. package/fesm2020/novo-elements-elements-common.mjs +8 -2
  162. package/fesm2020/novo-elements-elements-common.mjs.map +1 -1
  163. package/fesm2020/novo-elements-elements-data-table.mjs +3 -3
  164. package/fesm2020/novo-elements-elements-data-table.mjs.map +1 -1
  165. package/fesm2020/novo-elements-elements-date-picker.mjs +62 -62
  166. package/fesm2020/novo-elements-elements-date-picker.mjs.map +1 -1
  167. package/fesm2020/novo-elements-elements-date-time-picker.mjs +3 -4
  168. package/fesm2020/novo-elements-elements-date-time-picker.mjs.map +1 -1
  169. package/fesm2020/novo-elements-elements-drag-drop.mjs +244 -0
  170. package/fesm2020/novo-elements-elements-drag-drop.mjs.map +1 -0
  171. package/fesm2020/novo-elements-elements-dropdown.mjs +28 -3
  172. package/fesm2020/novo-elements-elements-dropdown.mjs.map +1 -1
  173. package/fesm2020/novo-elements-elements-field.mjs +19 -19
  174. package/fesm2020/novo-elements-elements-field.mjs.map +1 -1
  175. package/fesm2020/novo-elements-elements-form.mjs +125 -302
  176. package/fesm2020/novo-elements-elements-form.mjs.map +1 -1
  177. package/fesm2020/novo-elements-elements-query-builder.mjs +1 -1
  178. package/fesm2020/novo-elements-elements-query-builder.mjs.map +1 -1
  179. package/fesm2020/novo-elements-elements-simple-table.mjs +2 -2
  180. package/fesm2020/novo-elements-elements-simple-table.mjs.map +1 -1
  181. package/fesm2020/novo-elements-elements-tabbed-group-picker.mjs +1 -1
  182. package/fesm2020/novo-elements-elements-tabbed-group-picker.mjs.map +1 -1
  183. package/fesm2020/novo-elements-elements-table.mjs +2 -6
  184. package/fesm2020/novo-elements-elements-table.mjs.map +1 -1
  185. package/fesm2020/novo-elements-elements-time-picker.mjs +7 -71
  186. package/fesm2020/novo-elements-elements-time-picker.mjs.map +1 -1
  187. package/fesm2020/novo-elements-elements.mjs +1 -0
  188. package/fesm2020/novo-elements-elements.mjs.map +1 -1
  189. package/fesm2020/novo-elements-services.mjs +158 -46
  190. package/fesm2020/novo-elements-services.mjs.map +1 -1
  191. package/fesm2020/novo-elements-utils.mjs +88 -1
  192. package/fesm2020/novo-elements-utils.mjs.map +1 -1
  193. package/fesm2020/novo-elements.mjs +8 -2
  194. package/fesm2020/novo-elements.mjs.map +1 -1
  195. package/novo-elements.module.d.ts +1 -1
  196. package/novo-elements.scss +1 -1
  197. package/package.json +23 -4
  198. package/services/date-format/DateFormat.d.ts +62 -3
  199. package/services/global/global.service.d.ts +3 -0
  200. package/styles/content/root.scss +1 -1
  201. package/styles/themes/light-test.scss +1 -1
  202. package/styles/themes/light.scss +1 -1
  203. package/styles/variables.scss +1 -1
  204. package/utils/date/index.d.ts +2 -1
  205. package/utils/date/timezone-support.d.ts +5 -0
@@ -1,19 +1,19 @@
1
1
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
- import { Component, ElementRef, EventEmitter, HostBinding, Input, Optional, Output, Self, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation, } from '@angular/core';
2
+ import { moveItemInArray } from '@angular/cdk/drag-drop';
3
+ import { Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, Optional, Output, Self, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';
3
4
  import { FormGroupDirective, NgControl, NgForm } from '@angular/forms';
4
- import { NovoDragulaService } from 'novo-elements/addons/dragula';
5
- import { NovoLabelService } from 'novo-elements/services';
6
5
  import { ErrorStateMatcher, mixinErrorState } from 'novo-elements/elements/common';
7
6
  import { NovoFieldControl } from 'novo-elements/elements/field';
7
+ import { GlobalRef, NovoLabelService } from 'novo-elements/services';
8
8
  import { NovoFile } from './extras/file/File';
9
9
  import * as i0 from "@angular/core";
10
10
  import * as i1 from "novo-elements/services";
11
- import * as i2 from "novo-elements/addons/dragula";
12
- import * as i3 from "novo-elements/elements/common";
13
- import * as i4 from "@angular/forms";
14
- import * as i5 from "novo-elements/elements/button";
15
- import * as i6 from "novo-elements/elements/loading";
16
- import * as i7 from "@angular/common";
11
+ import * as i2 from "novo-elements/elements/common";
12
+ import * as i3 from "@angular/forms";
13
+ import * as i4 from "novo-elements/elements/button";
14
+ import * as i5 from "novo-elements/elements/loading";
15
+ import * as i6 from "@angular/common";
16
+ import * as i7 from "@angular/cdk/drag-drop";
17
17
  import * as i8 from "novo-elements/pipes";
18
18
  // Value accessor for the component (supports ngModel)
19
19
  // const FILE_VALUE_ACCESSOR = {
@@ -34,11 +34,10 @@ class NovoFileInputBase {
34
34
  }
35
35
  const NovoFileInputMixins = mixinErrorState(NovoFileInputBase);
36
36
  export class NovoFileInputElement extends NovoFileInputMixins {
37
- constructor(element, labels, dragula, _defaultErrorStateMatcher, _parentForm, _parentFormGroup, _ngControl) {
37
+ constructor(labels, globalRef, _defaultErrorStateMatcher, _parentForm, _parentFormGroup, _ngControl) {
38
38
  super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, _ngControl);
39
- this.element = element;
40
39
  this.labels = labels;
41
- this.dragula = dragula;
40
+ this.globalRef = globalRef;
42
41
  this._uniqueId = `novo-file-input-${++nextId}`;
43
42
  /** Tab index for the chip list. */
44
43
  this._tabIndex = 0;
@@ -55,7 +54,6 @@ export class NovoFileInputElement extends NovoFileInputMixins {
55
54
  this.save = new EventEmitter();
56
55
  this.delete = new EventEmitter();
57
56
  this.upload = new EventEmitter();
58
- this.elements = [];
59
57
  this.files = [];
60
58
  this.active = false;
61
59
  this.onModelChange = () => { };
@@ -67,12 +65,6 @@ export class NovoFileInputElement extends NovoFileInputMixins {
67
65
  if (_ngControl) {
68
66
  _ngControl.valueAccessor = this;
69
67
  }
70
- this.commands = {
71
- dragenter: this.dragEnterHandler.bind(this),
72
- dragleave: this.dragLeaveHandler.bind(this),
73
- dragover: this.dragOverHandler.bind(this),
74
- drop: this.dropHandler.bind(this),
75
- };
76
68
  }
77
69
  get name() {
78
70
  return this._name;
@@ -105,23 +97,10 @@ export class NovoFileInputElement extends NovoFileInputMixins {
105
97
  this._placeholder = value;
106
98
  }
107
99
  ngOnInit() {
108
- ['dragenter', 'dragleave', 'dragover', 'drop'].forEach((type) => {
109
- this.element.nativeElement.addEventListener(type, this.commands[type]);
110
- });
111
100
  this.updateLayout();
112
- this.initializeDragula();
113
101
  this.setInitialFileList();
114
102
  this.dataFeatureId = this.dataFeatureId ? this.dataFeatureId : this.name;
115
103
  }
116
- ngOnDestroy() {
117
- ['dragenter', 'dragleave', 'dragover', 'drop'].forEach((type) => {
118
- this.element.nativeElement.removeEventListener(type, this.commands[type]);
119
- });
120
- const dragulaHasFileOutputBag = this.dragula.bags.length > 0 && this.dragula.bags.filter((x) => x.name === this.fileOutputBag).length > 0;
121
- if (dragulaHasFileOutputBag) {
122
- this.dragula.destroy(this.fileOutputBag);
123
- }
124
- }
125
104
  updateLayout() {
126
105
  this.layoutOptions = Object.assign({}, LAYOUT_DEFAULTS, this.layoutOptions);
127
106
  this.insertTemplatesBasedOnLayout();
@@ -140,13 +119,9 @@ export class NovoFileInputElement extends NovoFileInputMixins {
140
119
  });
141
120
  return order;
142
121
  }
143
- initializeDragula() {
144
- this.fileOutputBag = `file-output-${this.dragula.bags.length}`;
145
- this.dragula.setOptions(this.fileOutputBag, {
146
- moves: (el, container, handle) => {
147
- return this.layoutOptions.draggable;
148
- },
149
- });
122
+ get outputFileDraggingDisabled() {
123
+ const draggable = this.layoutOptions?.draggable;
124
+ return draggable != null && !draggable;
150
125
  }
151
126
  setInitialFileList() {
152
127
  if (this.value) {
@@ -185,6 +160,9 @@ export class NovoFileInputElement extends NovoFileInputMixins {
185
160
  }
186
161
  this.active = false;
187
162
  }
163
+ dropOutputItem(event) {
164
+ moveItemInArray(this.files, event.previousIndex, event.currentIndex);
165
+ }
188
166
  writeValue(model) {
189
167
  this.model = model;
190
168
  // If model is cleared programmatically (E.g. form.patchValue({file: undefined})), empty file list.
@@ -227,7 +205,8 @@ export class NovoFileInputElement extends NovoFileInputMixins {
227
205
  }
228
206
  }
229
207
  download(file) {
230
- window.open(file.dataURL, '_blank');
208
+ // Using an injected instance of window to make sure that unit tests do not open a new window, even accidentally
209
+ this.globalRef.nativeWindow.open(file.dataURL, '_blank');
231
210
  }
232
211
  remove(file) {
233
212
  this.files.splice(this.files.findIndex((f) => f.name === file.name && f.size === file.size), 1);
@@ -284,230 +263,16 @@ export class NovoFileInputElement extends NovoFileInputMixins {
284
263
  // TODO
285
264
  }
286
265
  }
287
- NovoFileInputElement.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoFileInputElement, deps: [{ token: i0.ElementRef }, { token: i1.NovoLabelService }, { token: i2.NovoDragulaService }, { token: i3.ErrorStateMatcher }, { token: i4.NgForm, optional: true }, { token: i4.FormGroupDirective, optional: true }, { token: i4.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
288
- NovoFileInputElement.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NovoFileInputElement, selector: "novo-file-input", inputs: { id: "id", tabindex: "tabindex", errorStateMatcher: "errorStateMatcher", multiple: "multiple", layoutOptions: "layoutOptions", value: "value", dataFeatureId: "dataFeatureId", name: "name", disabled: "disabled", required: "required", placeholder: "placeholder" }, outputs: { edit: "edit", save: "save", delete: "delete", upload: "upload" }, host: { properties: { "class.disabled": "this.disabled" } }, providers: [{ provide: NovoFieldControl, useExisting: NovoFileInputElement }], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }, { propertyName: "fileOutput", first: true, predicate: ["fileOutput"], descendants: true, static: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
289
- <div #container></div>
290
- <ng-template #fileInput>
291
- <div class="file-input-group" [class.disabled]="disabled" [class.active]="active">
292
- <input
293
- #inputElement
294
- *ngIf="!layoutOptions.customActions"
295
- type="file"
296
- [name]="name"
297
- [attr.id]="name"
298
- (change)="check($event)"
299
- [attr.multiple]="multiple"
300
- tabindex="-1"
301
- [attr.data-feature-id]="dataFeatureId"
302
- />
303
- <input
304
- #inputElement
305
- *ngIf="layoutOptions.customActions"
306
- type="file"
307
- [name]="name"
308
- [attr.id]="name"
309
- (change)="customCheck($event)"
310
- [attr.multiple]="multiple"
311
- tabindex="-1"
312
- [attr.data-feature-id]="dataFeatureId"
313
- />
314
- <section [ngSwitch]="layoutOptions.labelStyle">
315
- <label *ngSwitchCase="'no-box'" [attr.for]="name" class="no-box">
316
- <div>
317
- <i class="bhi-dropzone"></i>{{ placeholder || labels.chooseAFile }} {{ labels.or }}
318
- <strong class="link">{{ labels.clickToBrowse }}</strong>
319
- </div>
320
- </label>
321
- <label *ngSwitchDefault [attr.for]="name" class="boxed">
322
- <span>{{ placeholder || labels.chooseAFile }}</span>
323
- <small
324
- >{{ labels.or }} <strong class="link">{{ labels.clickToBrowse }}</strong></small
325
- >
326
- </label>
327
- </section>
328
- </div>
329
- </ng-template>
330
- <ng-template #fileOutput>
331
- <div class="file-output-group" [dragula]="fileOutputBag" [dragulaModel]="files">
332
- <div class="file-item" *ngFor="let file of files" [class.disabled]="disabled">
333
- <i *ngIf="layoutOptions.draggable" class="bhi-move"></i>
334
- <label *ngIf="file.link"
335
- ><span
336
- ><a href="{{ file.link }}" target="_blank">{{ file.name | decodeURI }}</a></span
337
- ><span *ngIf="file.description">||</span><span>{{ file.description }}</span></label
338
- >
339
- <label *ngIf="!file.link">{{ file.name | decodeURI }}</label>
340
- <div class="actions" [attr.data-automation-id]="'file-actions'" *ngIf="file.loaded">
341
- <div *ngIf="!layoutOptions.customActions">
342
- <button
343
- *ngIf="layoutOptions.download"
344
- type="button"
345
- theme="icon"
346
- icon="save"
347
- (click)="download(file)"
348
- [attr.data-automation-id]="'file-download'"
349
- tabindex="-1"
350
- ></button>
351
- <button
352
- *ngIf="!disabled && (layoutOptions.removable || (!layoutOptions.removable && layoutOptions.removableWhenNew && !file.link))"
353
- type="button"
354
- theme="icon"
355
- icon="close"
356
- (click)="remove(file)"
357
- [attr.data-automation-id]="'file-remove'"
358
- tabindex="-1"
359
- ></button>
360
- </div>
361
- <div *ngIf="layoutOptions.customActions">
362
- <button
363
- *ngIf="layoutOptions.edit && !disabled"
364
- type="button"
365
- theme="icon"
366
- icon="edit"
367
- (click)="customEdit(file)"
368
- [attr.data-automation-id]="'file-edit'"
369
- tabindex="-1"
370
- ></button>
371
- <button
372
- *ngIf="layoutOptions.download"
373
- type="button"
374
- theme="icon"
375
- icon="save"
376
- (click)="customSave(file)"
377
- [attr.data-automation-id]="'file-download'"
378
- tabindex="-1"
379
- ></button>
380
- <button
381
- *ngIf="!disabled"
382
- type="button"
383
- theme="icon"
384
- icon="close"
385
- (click)="customDelete(file)"
386
- [attr.data-automation-id]="'file-remove'"
387
- tabindex="-1"
388
- ></button>
389
- </div>
390
- </div>
391
- <novo-loading *ngIf="!file.loaded"></novo-loading>
392
- </div>
393
- </div>
394
- </ng-template>
395
- `, isInline: true, styles: ["novo-file-input{display:flex;flex-flow:row wrap}novo-file-input .files-below{padding-top:10px}novo-file-input .file-output-group{width:100%;margin-top:15px}novo-file-input .file-output-group .file-item{background-color:#fff;box-shadow:0 1px 4px #00000026,0 2px 10px #00000017;margin-bottom:15px;position:relative;display:flex;flex-flow:row nowrap;align-items:center;padding:4px 12px;width:100%}novo-file-input .file-output-group .file-item i.bhi-move{color:#9e9e9e;padding-right:.75em;padding-bottom:4px;font-size:2em;cursor:-webkit-grab;cursor:grab}novo-file-input .file-output-group .file-item label{flex:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}novo-file-input .file-output-group .file-item label span{margin:0 8px}novo-file-input .file-output-group .file-item button{font-size:1.4rem;width:42px;height:42px;padding:4px;color:#9e9e9e}novo-file-input .file-output-group .file-item button:hover,novo-file-input .file-output-group .file-item button:focus,novo-file-input .file-output-group .file-item button.active{background:none;color:#4a89dc}novo-file-input .file-output-group .file-item.disabled{box-shadow:none;border:2px dashed #9e9e9e}novo-file-input .file-input-group{cursor:pointer;width:100%;position:relative}novo-file-input .file-input-group input[type=file]{opacity:0;position:absolute;width:100%!important;height:100%!important;cursor:pointer}novo-file-input .file-input-group:hover label.boxed,novo-file-input .file-input-group.active label.boxed{border:2px dashed #4a89dc}novo-file-input .file-input-group.disabled{opacity:.3;pointer-events:none}novo-file-input .file-input-group label{color:#9e9e9e;margin-left:0;transition:all .2s ease-in-out;display:flex;flex-flow:column;align-items:center;position:relative;padding:15px;cursor:pointer;pointer-events:none}novo-file-input .file-input-group label strong{color:#4a89dc}novo-file-input .file-input-group label small{margin-top:7px}novo-file-input .file-input-group label i.bhi-dropzone{float:left;margin:-17px .25em 0 0}novo-file-input .file-input-group label.boxed{border:2px dashed #9e9e9e}novo-file-input .file-input-group label i{font-size:3em}novo-file-input novo-loading{padding:10px;transform:scale(.8)}.gu-mirror .actions button{display:none}\n"], components: [{ type: i5.NovoButtonElement, selector: "novo-button,button[theme]", inputs: ["color", "side", "size", "theme", "loading", "icon", "disabled"] }, { type: i6.NovoLoadingElement, selector: "novo-loading", inputs: ["theme", "color", "size"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i7.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i7.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i2.NovoDragulaElement, selector: "[dragula]", inputs: ["dragula", "dragulaModel"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "decodeURI": i8.DecodeURIPipe }, encapsulation: i0.ViewEncapsulation.None });
266
+ NovoFileInputElement.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoFileInputElement, deps: [{ token: i1.NovoLabelService }, { token: i1.GlobalRef }, { token: i2.ErrorStateMatcher }, { token: i3.NgForm, optional: true }, { token: i3.FormGroupDirective, optional: true }, { token: i3.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
267
+ NovoFileInputElement.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NovoFileInputElement, selector: "novo-file-input", inputs: { id: "id", tabindex: "tabindex", errorStateMatcher: "errorStateMatcher", multiple: "multiple", layoutOptions: "layoutOptions", value: "value", dataFeatureId: "dataFeatureId", name: "name", disabled: "disabled", required: "required", placeholder: "placeholder" }, outputs: { edit: "edit", save: "save", delete: "delete", upload: "upload" }, host: { listeners: { "dragenter": "dragEnterHandler($event)", "dragleave": "dragLeaveHandler($event)", "dragover": "dragOverHandler($event)", "drop": "dropHandler($event)" }, properties: { "class.disabled": "this.disabled" } }, providers: [{ provide: NovoFieldControl, useExisting: NovoFileInputElement }], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }, { propertyName: "fileOutput", first: true, predicate: ["fileOutput"], descendants: true, static: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #container></div>\n<ng-template #fileInput>\n <div class=\"file-input-group\" [class.disabled]=\"disabled\" [class.active]=\"active\">\n <input\n #inputElement\n *ngIf=\"!layoutOptions.customActions\"\n type=\"file\"\n [name]=\"name\"\n [attr.id]=\"name\"\n (change)=\"check($event)\"\n [attr.multiple]=\"multiple\"\n tabindex=\"-1\"\n [attr.data-feature-id]=\"dataFeatureId\"\n />\n <input\n #inputElement\n *ngIf=\"layoutOptions.customActions\"\n type=\"file\"\n [name]=\"name\"\n [attr.id]=\"name\"\n (change)=\"customCheck($event)\"\n [attr.multiple]=\"multiple\"\n tabindex=\"-1\"\n [attr.data-feature-id]=\"dataFeatureId\"\n />\n <section [ngSwitch]=\"layoutOptions.labelStyle\">\n <label *ngSwitchCase=\"'no-box'\" [attr.for]=\"name\" class=\"no-box\">\n <div>\n <i class=\"bhi-dropzone\"></i>{{ placeholder || labels.chooseAFile }} {{ labels.or }}\n <strong class=\"link\">{{ labels.clickToBrowse }}</strong>\n </div>\n </label>\n <label *ngSwitchDefault [attr.for]=\"name\" class=\"boxed\">\n <span>{{ placeholder || labels.chooseAFile }}</span>\n <small\n >{{ labels.or }} <strong class=\"link\">{{ labels.clickToBrowse }}</strong></small\n >\n </label>\n </section>\n </div>\n</ng-template>\n<ng-template #fileOutput>\n <div class=\"file-output-group\" cdkDropList [cdkDropListDisabled]=\"outputFileDraggingDisabled\" (cdkDropListDropped)=\"dropOutputItem($event)\">\n <div class=\"file-item\" cdkDrag *ngFor=\"let file of files\" [class.disabled]=\"disabled\">\n <i *ngIf=\"layoutOptions.draggable\" class=\"bhi-move\"></i>\n <label *ngIf=\"file.link\"\n ><span\n ><a href=\"{{ file.link }}\" target=\"_blank\">{{ file.name | decodeURI }}</a></span\n ><span *ngIf=\"file.description\">||</span><span>{{ file.description }}</span></label\n >\n <label *ngIf=\"!file.link\">{{ file.name | decodeURI }}</label>\n <div class=\"actions\" [attr.data-automation-id]=\"'file-actions'\" *ngIf=\"file.loaded\">\n <div *ngIf=\"!layoutOptions.customActions\">\n <button\n *ngIf=\"layoutOptions.download\"\n type=\"button\"\n theme=\"icon\"\n icon=\"save\"\n (click)=\"download(file)\"\n [attr.data-automation-id]=\"'file-download'\"\n tabindex=\"-1\"\n ></button>\n <button\n *ngIf=\"!disabled && (layoutOptions.removable || (!layoutOptions.removable && layoutOptions.removableWhenNew && !file.link))\"\n type=\"button\"\n theme=\"icon\"\n icon=\"close\"\n (click)=\"remove(file)\"\n [attr.data-automation-id]=\"'file-remove'\"\n tabindex=\"-1\"\n ></button>\n </div>\n <div *ngIf=\"layoutOptions.customActions\">\n <button\n *ngIf=\"layoutOptions.edit && !disabled\"\n type=\"button\"\n theme=\"icon\"\n icon=\"edit\"\n (click)=\"customEdit(file)\"\n [attr.data-automation-id]=\"'file-edit'\"\n tabindex=\"-1\"\n ></button>\n <button\n *ngIf=\"layoutOptions.download\"\n type=\"button\"\n theme=\"icon\"\n icon=\"save\"\n (click)=\"customSave(file)\"\n [attr.data-automation-id]=\"'file-download'\"\n tabindex=\"-1\"\n ></button>\n <button\n *ngIf=\"!disabled\"\n type=\"button\"\n theme=\"icon\"\n icon=\"close\"\n (click)=\"customDelete(file)\"\n [attr.data-automation-id]=\"'file-remove'\"\n tabindex=\"-1\"\n ></button>\n </div>\n </div>\n <novo-loading *ngIf=\"!file.loaded\"></novo-loading>\n </div>\n </div>\n</ng-template>", styles: ["novo-file-input{display:flex;flex-flow:row wrap}novo-file-input .files-below{padding-top:10px}novo-file-input .file-output-group{width:100%;margin-top:15px}novo-file-input .file-output-group .file-item{background-color:#fff;box-shadow:0 1px 4px #00000026,0 2px 10px #00000017;padding:4px 12px;display:flex;flex-flow:row nowrap;align-items:center;margin-bottom:15px;position:relative;width:100%}novo-file-input .file-output-group .file-item i.bhi-move{color:#9e9e9e;padding-right:.75em;padding-bottom:4px;font-size:2em;cursor:-webkit-grab;cursor:grab}novo-file-input .file-output-group .file-item label{flex:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}novo-file-input .file-output-group .file-item label span{margin:0 8px}novo-file-input .file-output-group .file-item button{font-size:1.4rem;width:42px;height:42px;padding:4px;color:#9e9e9e}novo-file-input .file-output-group .file-item button:hover,novo-file-input .file-output-group .file-item button:focus,novo-file-input .file-output-group .file-item button.active{background:none;color:#4a89dc}novo-file-input .file-output-group .file-item.disabled{box-shadow:none;border:2px dashed #9e9e9e}novo-file-input .file-output-group.cdk-drop-list-dragging{cursor:-webkit-grabbing;cursor:grabbing}novo-file-input .file-output-group.cdk-drop-list-dragging .file-item{transition:transform .25s cubic-bezier(0,0,.2,1)}novo-file-input .file-input-group{cursor:pointer;width:100%;position:relative}novo-file-input .file-input-group input[type=file]{opacity:0;position:absolute;width:100%!important;height:100%!important;cursor:pointer}novo-file-input .file-input-group:hover label.boxed,novo-file-input .file-input-group.active label.boxed{border:2px dashed #4a89dc}novo-file-input .file-input-group.disabled{opacity:.3;pointer-events:none}novo-file-input .file-input-group label{color:#9e9e9e;margin-left:0;transition:all .2s ease-in-out;display:flex;flex-flow:column;align-items:center;position:relative;padding:15px;cursor:pointer;pointer-events:none}novo-file-input .file-input-group label strong{color:#4a89dc}novo-file-input .file-input-group label small{margin-top:7px}novo-file-input .file-input-group label i.bhi-dropzone{float:left;margin:-17px .25em 0 0}novo-file-input .file-input-group label.boxed{border:2px dashed #9e9e9e}novo-file-input .file-input-group label i{font-size:3em}novo-file-input novo-loading{padding:10px;transform:scale(.8)}.gu-mirror .actions button{display:none}.cdk-drag-preview.file-item{cursor:-webkit-grab;cursor:grab;background-color:#fff;box-shadow:0 1px 4px #00000026,0 2px 10px #00000017;padding:4px 12px;display:flex;flex-flow:row nowrap;align-items:center}.cdk-drag-preview.file-item i.bhi-move{color:#9e9e9e;padding-right:.75em;padding-bottom:4px;font-size:2em;cursor:-webkit-grab;cursor:grab}.cdk-drag-preview.file-item label{flex:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.cdk-drag-preview.file-item label span{margin:0 8px}.cdk-drag-preview.file-item button{font-size:1.4rem;width:42px;height:42px;padding:4px;color:#9e9e9e}.cdk-drag-placeholder.file-item{opacity:0}.cdk-drag-animating.file-item{transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], components: [{ type: i4.NovoButtonElement, selector: "novo-button,button[theme]", inputs: ["color", "side", "size", "theme", "loading", "icon", "disabled"] }, { type: i5.NovoLoadingElement, selector: "novo-loading", inputs: ["theme", "color", "size"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i6.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i6.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }], pipes: { "decodeURI": i8.DecodeURIPipe }, encapsulation: i0.ViewEncapsulation.None });
396
268
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoFileInputElement, decorators: [{
397
269
  type: Component,
398
- args: [{ selector: 'novo-file-input', providers: [{ provide: NovoFieldControl, useExisting: NovoFileInputElement }], template: `
399
- <div #container></div>
400
- <ng-template #fileInput>
401
- <div class="file-input-group" [class.disabled]="disabled" [class.active]="active">
402
- <input
403
- #inputElement
404
- *ngIf="!layoutOptions.customActions"
405
- type="file"
406
- [name]="name"
407
- [attr.id]="name"
408
- (change)="check($event)"
409
- [attr.multiple]="multiple"
410
- tabindex="-1"
411
- [attr.data-feature-id]="dataFeatureId"
412
- />
413
- <input
414
- #inputElement
415
- *ngIf="layoutOptions.customActions"
416
- type="file"
417
- [name]="name"
418
- [attr.id]="name"
419
- (change)="customCheck($event)"
420
- [attr.multiple]="multiple"
421
- tabindex="-1"
422
- [attr.data-feature-id]="dataFeatureId"
423
- />
424
- <section [ngSwitch]="layoutOptions.labelStyle">
425
- <label *ngSwitchCase="'no-box'" [attr.for]="name" class="no-box">
426
- <div>
427
- <i class="bhi-dropzone"></i>{{ placeholder || labels.chooseAFile }} {{ labels.or }}
428
- <strong class="link">{{ labels.clickToBrowse }}</strong>
429
- </div>
430
- </label>
431
- <label *ngSwitchDefault [attr.for]="name" class="boxed">
432
- <span>{{ placeholder || labels.chooseAFile }}</span>
433
- <small
434
- >{{ labels.or }} <strong class="link">{{ labels.clickToBrowse }}</strong></small
435
- >
436
- </label>
437
- </section>
438
- </div>
439
- </ng-template>
440
- <ng-template #fileOutput>
441
- <div class="file-output-group" [dragula]="fileOutputBag" [dragulaModel]="files">
442
- <div class="file-item" *ngFor="let file of files" [class.disabled]="disabled">
443
- <i *ngIf="layoutOptions.draggable" class="bhi-move"></i>
444
- <label *ngIf="file.link"
445
- ><span
446
- ><a href="{{ file.link }}" target="_blank">{{ file.name | decodeURI }}</a></span
447
- ><span *ngIf="file.description">||</span><span>{{ file.description }}</span></label
448
- >
449
- <label *ngIf="!file.link">{{ file.name | decodeURI }}</label>
450
- <div class="actions" [attr.data-automation-id]="'file-actions'" *ngIf="file.loaded">
451
- <div *ngIf="!layoutOptions.customActions">
452
- <button
453
- *ngIf="layoutOptions.download"
454
- type="button"
455
- theme="icon"
456
- icon="save"
457
- (click)="download(file)"
458
- [attr.data-automation-id]="'file-download'"
459
- tabindex="-1"
460
- ></button>
461
- <button
462
- *ngIf="!disabled && (layoutOptions.removable || (!layoutOptions.removable && layoutOptions.removableWhenNew && !file.link))"
463
- type="button"
464
- theme="icon"
465
- icon="close"
466
- (click)="remove(file)"
467
- [attr.data-automation-id]="'file-remove'"
468
- tabindex="-1"
469
- ></button>
470
- </div>
471
- <div *ngIf="layoutOptions.customActions">
472
- <button
473
- *ngIf="layoutOptions.edit && !disabled"
474
- type="button"
475
- theme="icon"
476
- icon="edit"
477
- (click)="customEdit(file)"
478
- [attr.data-automation-id]="'file-edit'"
479
- tabindex="-1"
480
- ></button>
481
- <button
482
- *ngIf="layoutOptions.download"
483
- type="button"
484
- theme="icon"
485
- icon="save"
486
- (click)="customSave(file)"
487
- [attr.data-automation-id]="'file-download'"
488
- tabindex="-1"
489
- ></button>
490
- <button
491
- *ngIf="!disabled"
492
- type="button"
493
- theme="icon"
494
- icon="close"
495
- (click)="customDelete(file)"
496
- [attr.data-automation-id]="'file-remove'"
497
- tabindex="-1"
498
- ></button>
499
- </div>
500
- </div>
501
- <novo-loading *ngIf="!file.loaded"></novo-loading>
502
- </div>
503
- </div>
504
- </ng-template>
505
- `, encapsulation: ViewEncapsulation.None, styles: ["novo-file-input{display:flex;flex-flow:row wrap}novo-file-input .files-below{padding-top:10px}novo-file-input .file-output-group{width:100%;margin-top:15px}novo-file-input .file-output-group .file-item{background-color:#fff;box-shadow:0 1px 4px #00000026,0 2px 10px #00000017;margin-bottom:15px;position:relative;display:flex;flex-flow:row nowrap;align-items:center;padding:4px 12px;width:100%}novo-file-input .file-output-group .file-item i.bhi-move{color:#9e9e9e;padding-right:.75em;padding-bottom:4px;font-size:2em;cursor:-webkit-grab;cursor:grab}novo-file-input .file-output-group .file-item label{flex:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}novo-file-input .file-output-group .file-item label span{margin:0 8px}novo-file-input .file-output-group .file-item button{font-size:1.4rem;width:42px;height:42px;padding:4px;color:#9e9e9e}novo-file-input .file-output-group .file-item button:hover,novo-file-input .file-output-group .file-item button:focus,novo-file-input .file-output-group .file-item button.active{background:none;color:#4a89dc}novo-file-input .file-output-group .file-item.disabled{box-shadow:none;border:2px dashed #9e9e9e}novo-file-input .file-input-group{cursor:pointer;width:100%;position:relative}novo-file-input .file-input-group input[type=file]{opacity:0;position:absolute;width:100%!important;height:100%!important;cursor:pointer}novo-file-input .file-input-group:hover label.boxed,novo-file-input .file-input-group.active label.boxed{border:2px dashed #4a89dc}novo-file-input .file-input-group.disabled{opacity:.3;pointer-events:none}novo-file-input .file-input-group label{color:#9e9e9e;margin-left:0;transition:all .2s ease-in-out;display:flex;flex-flow:column;align-items:center;position:relative;padding:15px;cursor:pointer;pointer-events:none}novo-file-input .file-input-group label strong{color:#4a89dc}novo-file-input .file-input-group label small{margin-top:7px}novo-file-input .file-input-group label i.bhi-dropzone{float:left;margin:-17px .25em 0 0}novo-file-input .file-input-group label.boxed{border:2px dashed #9e9e9e}novo-file-input .file-input-group label i{font-size:3em}novo-file-input novo-loading{padding:10px;transform:scale(.8)}.gu-mirror .actions button{display:none}\n"] }]
506
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.NovoLabelService }, { type: i2.NovoDragulaService }, { type: i3.ErrorStateMatcher }, { type: i4.NgForm, decorators: [{
270
+ args: [{ selector: 'novo-file-input', providers: [{ provide: NovoFieldControl, useExisting: NovoFileInputElement }], encapsulation: ViewEncapsulation.None, template: "<div #container></div>\n<ng-template #fileInput>\n <div class=\"file-input-group\" [class.disabled]=\"disabled\" [class.active]=\"active\">\n <input\n #inputElement\n *ngIf=\"!layoutOptions.customActions\"\n type=\"file\"\n [name]=\"name\"\n [attr.id]=\"name\"\n (change)=\"check($event)\"\n [attr.multiple]=\"multiple\"\n tabindex=\"-1\"\n [attr.data-feature-id]=\"dataFeatureId\"\n />\n <input\n #inputElement\n *ngIf=\"layoutOptions.customActions\"\n type=\"file\"\n [name]=\"name\"\n [attr.id]=\"name\"\n (change)=\"customCheck($event)\"\n [attr.multiple]=\"multiple\"\n tabindex=\"-1\"\n [attr.data-feature-id]=\"dataFeatureId\"\n />\n <section [ngSwitch]=\"layoutOptions.labelStyle\">\n <label *ngSwitchCase=\"'no-box'\" [attr.for]=\"name\" class=\"no-box\">\n <div>\n <i class=\"bhi-dropzone\"></i>{{ placeholder || labels.chooseAFile }} {{ labels.or }}\n <strong class=\"link\">{{ labels.clickToBrowse }}</strong>\n </div>\n </label>\n <label *ngSwitchDefault [attr.for]=\"name\" class=\"boxed\">\n <span>{{ placeholder || labels.chooseAFile }}</span>\n <small\n >{{ labels.or }} <strong class=\"link\">{{ labels.clickToBrowse }}</strong></small\n >\n </label>\n </section>\n </div>\n</ng-template>\n<ng-template #fileOutput>\n <div class=\"file-output-group\" cdkDropList [cdkDropListDisabled]=\"outputFileDraggingDisabled\" (cdkDropListDropped)=\"dropOutputItem($event)\">\n <div class=\"file-item\" cdkDrag *ngFor=\"let file of files\" [class.disabled]=\"disabled\">\n <i *ngIf=\"layoutOptions.draggable\" class=\"bhi-move\"></i>\n <label *ngIf=\"file.link\"\n ><span\n ><a href=\"{{ file.link }}\" target=\"_blank\">{{ file.name | decodeURI }}</a></span\n ><span *ngIf=\"file.description\">||</span><span>{{ file.description }}</span></label\n >\n <label *ngIf=\"!file.link\">{{ file.name | decodeURI }}</label>\n <div class=\"actions\" [attr.data-automation-id]=\"'file-actions'\" *ngIf=\"file.loaded\">\n <div *ngIf=\"!layoutOptions.customActions\">\n <button\n *ngIf=\"layoutOptions.download\"\n type=\"button\"\n theme=\"icon\"\n icon=\"save\"\n (click)=\"download(file)\"\n [attr.data-automation-id]=\"'file-download'\"\n tabindex=\"-1\"\n ></button>\n <button\n *ngIf=\"!disabled && (layoutOptions.removable || (!layoutOptions.removable && layoutOptions.removableWhenNew && !file.link))\"\n type=\"button\"\n theme=\"icon\"\n icon=\"close\"\n (click)=\"remove(file)\"\n [attr.data-automation-id]=\"'file-remove'\"\n tabindex=\"-1\"\n ></button>\n </div>\n <div *ngIf=\"layoutOptions.customActions\">\n <button\n *ngIf=\"layoutOptions.edit && !disabled\"\n type=\"button\"\n theme=\"icon\"\n icon=\"edit\"\n (click)=\"customEdit(file)\"\n [attr.data-automation-id]=\"'file-edit'\"\n tabindex=\"-1\"\n ></button>\n <button\n *ngIf=\"layoutOptions.download\"\n type=\"button\"\n theme=\"icon\"\n icon=\"save\"\n (click)=\"customSave(file)\"\n [attr.data-automation-id]=\"'file-download'\"\n tabindex=\"-1\"\n ></button>\n <button\n *ngIf=\"!disabled\"\n type=\"button\"\n theme=\"icon\"\n icon=\"close\"\n (click)=\"customDelete(file)\"\n [attr.data-automation-id]=\"'file-remove'\"\n tabindex=\"-1\"\n ></button>\n </div>\n </div>\n <novo-loading *ngIf=\"!file.loaded\"></novo-loading>\n </div>\n </div>\n</ng-template>", styles: ["novo-file-input{display:flex;flex-flow:row wrap}novo-file-input .files-below{padding-top:10px}novo-file-input .file-output-group{width:100%;margin-top:15px}novo-file-input .file-output-group .file-item{background-color:#fff;box-shadow:0 1px 4px #00000026,0 2px 10px #00000017;padding:4px 12px;display:flex;flex-flow:row nowrap;align-items:center;margin-bottom:15px;position:relative;width:100%}novo-file-input .file-output-group .file-item i.bhi-move{color:#9e9e9e;padding-right:.75em;padding-bottom:4px;font-size:2em;cursor:-webkit-grab;cursor:grab}novo-file-input .file-output-group .file-item label{flex:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}novo-file-input .file-output-group .file-item label span{margin:0 8px}novo-file-input .file-output-group .file-item button{font-size:1.4rem;width:42px;height:42px;padding:4px;color:#9e9e9e}novo-file-input .file-output-group .file-item button:hover,novo-file-input .file-output-group .file-item button:focus,novo-file-input .file-output-group .file-item button.active{background:none;color:#4a89dc}novo-file-input .file-output-group .file-item.disabled{box-shadow:none;border:2px dashed #9e9e9e}novo-file-input .file-output-group.cdk-drop-list-dragging{cursor:-webkit-grabbing;cursor:grabbing}novo-file-input .file-output-group.cdk-drop-list-dragging .file-item{transition:transform .25s cubic-bezier(0,0,.2,1)}novo-file-input .file-input-group{cursor:pointer;width:100%;position:relative}novo-file-input .file-input-group input[type=file]{opacity:0;position:absolute;width:100%!important;height:100%!important;cursor:pointer}novo-file-input .file-input-group:hover label.boxed,novo-file-input .file-input-group.active label.boxed{border:2px dashed #4a89dc}novo-file-input .file-input-group.disabled{opacity:.3;pointer-events:none}novo-file-input .file-input-group label{color:#9e9e9e;margin-left:0;transition:all .2s ease-in-out;display:flex;flex-flow:column;align-items:center;position:relative;padding:15px;cursor:pointer;pointer-events:none}novo-file-input .file-input-group label strong{color:#4a89dc}novo-file-input .file-input-group label small{margin-top:7px}novo-file-input .file-input-group label i.bhi-dropzone{float:left;margin:-17px .25em 0 0}novo-file-input .file-input-group label.boxed{border:2px dashed #9e9e9e}novo-file-input .file-input-group label i{font-size:3em}novo-file-input novo-loading{padding:10px;transform:scale(.8)}.gu-mirror .actions button{display:none}.cdk-drag-preview.file-item{cursor:-webkit-grab;cursor:grab;background-color:#fff;box-shadow:0 1px 4px #00000026,0 2px 10px #00000017;padding:4px 12px;display:flex;flex-flow:row nowrap;align-items:center}.cdk-drag-preview.file-item i.bhi-move{color:#9e9e9e;padding-right:.75em;padding-bottom:4px;font-size:2em;cursor:-webkit-grab;cursor:grab}.cdk-drag-preview.file-item label{flex:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.cdk-drag-preview.file-item label span{margin:0 8px}.cdk-drag-preview.file-item button{font-size:1.4rem;width:42px;height:42px;padding:4px;color:#9e9e9e}.cdk-drag-placeholder.file-item{opacity:0}.cdk-drag-animating.file-item{transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
271
+ }], ctorParameters: function () { return [{ type: i1.NovoLabelService }, { type: i1.GlobalRef }, { type: i2.ErrorStateMatcher }, { type: i3.NgForm, decorators: [{
507
272
  type: Optional
508
- }] }, { type: i4.FormGroupDirective, decorators: [{
273
+ }] }, { type: i3.FormGroupDirective, decorators: [{
509
274
  type: Optional
510
- }] }, { type: i4.NgControl, decorators: [{
275
+ }] }, { type: i3.NgControl, decorators: [{
511
276
  type: Optional
512
277
  }, {
513
278
  type: Self
@@ -556,5 +321,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
556
321
  type: Input
557
322
  }], placeholder: [{
558
323
  type: Input
324
+ }], dragEnterHandler: [{
325
+ type: HostListener,
326
+ args: ['dragenter', ['$event']]
327
+ }], dragLeaveHandler: [{
328
+ type: HostListener,
329
+ args: ['dragleave', ['$event']]
330
+ }], dragOverHandler: [{
331
+ type: HostListener,
332
+ args: ['dragover', ['$event']]
333
+ }], dropHandler: [{
334
+ type: HostListener,
335
+ args: ['drop', ['$event']]
559
336
  }] } });
560
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsZUlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbm92by1lbGVtZW50cy9zcmMvZWxlbWVudHMvZm9ybS9leHRyYXMvZmlsZS9GaWxlSW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0Isa0JBQWtCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBMkIsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7O0FBRTlDLHNEQUFzRDtBQUN0RCxnQ0FBZ0M7QUFDaEMsZ0NBQWdDO0FBQ2hDLHlEQUF5RDtBQUN6RCxpQkFBaUI7QUFDakIsS0FBSztBQUVMLE1BQU0sZUFBZSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDdkgsNkJB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O3NCQURQLEtBQUs7Z0JBV0YsUUFBUTtzQkFGWCxXQUFXO3VCQUFDLGdCQUFnQjs7c0JBQzVCLEtBQUs7Z0JBYUYsUUFBUTtzQkFEWCxLQUFLO2dCQVdGLFdBQVc7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIE5HMlxuaW1wb3J0IHsgRm9jdXNLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTZWxmLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUdyb3VwRGlyZWN0aXZlLCBOZ0NvbnRyb2wsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5vdm9EcmFndWxhU2VydmljZSB9IGZyb20gJ25vdm8tZWxlbWVudHMvYWRkb25zL2RyYWd1bGEnO1xuaW1wb3J0IHsgTm92b0xhYmVsU2VydmljZSB9IGZyb20gJ25vdm8tZWxlbWVudHMvc2VydmljZXMnO1xuaW1wb3J0IHsgQ2FuVXBkYXRlRXJyb3JTdGF0ZUN0b3IsIEVycm9yU3RhdGVNYXRjaGVyLCBtaXhpbkVycm9yU3RhdGUgfSBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBOb3ZvRmllbGRDb250cm9sIH0gZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9maWVsZCc7XG5pbXBvcnQgeyBOb3ZvRmlsZSB9IGZyb20gJy4vZXh0cmFzL2ZpbGUvRmlsZSc7XG5cbi8vIFZhbHVlIGFjY2Vzc29yIGZvciB0aGUgY29tcG9uZW50IChzdXBwb3J0cyBuZ01vZGVsKVxuLy8gY29uc3QgRklMRV9WQUxVRV9BQ0NFU1NPUiA9IHtcbi8vICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4vLyAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE5vdm9GaWxlSW5wdXRFbGVtZW50KSxcbi8vICAgbXVsdGk6IHRydWUsXG4vLyB9O1xuXG5jb25zdCBMQVlPVVRfREVGQVVMVFMgPSB7IG9yZGVyOiAnZGVmYXVsdCcsIGRvd25sb2FkOiB0cnVlLCByZW1vdmFibGU6IHRydWUsIGxhYmVsU3R5bGU6ICdkZWZhdWx0JywgZHJhZ2dhYmxlOiBmYWxzZSB9O1xuLy8gbWFrZSBmaWxlLWlucHV0IGlkcyB1bmlxdWVcbmxldCBuZXh0SWQgPSAwO1xuXG5jbGFzcyBOb3ZvRmlsZUlucHV0QmFzZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBfZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlcixcbiAgICBwdWJsaWMgX3BhcmVudEZvcm06IE5nRm9ybSxcbiAgICBwdWJsaWMgX3BhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgKSB7fVxufVxuY29uc3QgTm92b0ZpbGVJbnB1dE1peGluczogQ2FuVXBkYXRlRXJyb3JTdGF0ZUN0b3IgJiB0eXBlb2YgTm92b0ZpbGVJbnB1dEJhc2UgPSBtaXhpbkVycm9yU3RhdGUoTm92b0ZpbGVJbnB1dEJhc2UpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdub3ZvLWZpbGUtaW5wdXQnLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5vdm9GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBOb3ZvRmlsZUlucHV0RWxlbWVudCB9XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2ICNjb250YWluZXI+PC9kaXY+XG4gICAgPG5nLXRlbXBsYXRlICNmaWxlSW5wdXQ+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1pbnB1dC1ncm91cFwiIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICNpbnB1dEVsZW1lbnRcbiAgICAgICAgICAqbmdJZj1cIiFsYXlvdXRPcHRpb25zLmN1c3RvbUFjdGlvbnNcIlxuICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICBbbmFtZV09XCJuYW1lXCJcbiAgICAgICAgICBbYXR0ci5pZF09XCJuYW1lXCJcbiAgICAgICAgICAoY2hhbmdlKT1cImNoZWNrKCRldmVudClcIlxuICAgICAgICAgIFthdHRyLm11bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLWZlYXR1cmUtaWRdPVwiZGF0YUZlYXR1cmVJZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICNpbnB1dEVsZW1lbnRcbiAgICAgICAgICAqbmdJZj1cImxheW91dE9wdGlvbnMuY3VzdG9tQWN0aW9uc1wiXG4gICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgICAgIFthdHRyLmlkXT1cIm5hbWVcIlxuICAgICAgICAgIChjaGFuZ2UpPVwiY3VzdG9tQ2hlY2soJGV2ZW50KVwiXG4gICAgICAgICAgW2F0dHIubXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgIFthdHRyLmRhdGEtZmVhdHVyZS1pZF09XCJkYXRhRmVhdHVyZUlkXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHNlY3Rpb24gW25nU3dpdGNoXT1cImxheW91dE9wdGlvbnMubGFiZWxTdHlsZVwiPlxuICAgICAgICAgIDxsYWJlbCAqbmdTd2l0Y2hDYXNlPVwiJ25vLWJveCdcIiBbYXR0ci5mb3JdPVwibmFtZVwiIGNsYXNzPVwibm8tYm94XCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImJoaS1kcm9wem9uZVwiPjwvaT57eyBwbGFjZWhvbGRlciB8fCBsYWJlbHMuY2hvb3NlQUZpbGUgfX0ge3sgbGFiZWxzLm9yIH19XG4gICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJsaW5rXCI+e3sgbGFiZWxzLmNsaWNrVG9Ccm93c2UgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGxhYmVsICpuZ1N3aXRjaERlZmF1bHQgW2F0dHIuZm9yXT1cIm5hbWVcIiBjbGFzcz1cImJveGVkXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyBwbGFjZWhvbGRlciB8fCBsYWJlbHMuY2hvb3NlQUZpbGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICAgPnt7IGxhYmVscy5vciB9fSA8c3Ryb25nIGNsYXNzPVwibGlua1wiPnt7IGxhYmVscy5jbGlja1RvQnJvd3NlIH19PC9zdHJvbmc+PC9zbWFsbFxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNmaWxlT3V0cHV0PlxuICAgICAgPGRpdiBjbGFzcz1cImZpbGUtb3V0cHV0LWdyb3VwXCIgW2RyYWd1bGFdPVwiZmlsZU91dHB1dEJhZ1wiIFtkcmFndWxhTW9kZWxdPVwiZmlsZXNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtaXRlbVwiICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpbGVzXCIgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgICAgICAgPGkgKm5nSWY9XCJsYXlvdXRPcHRpb25zLmRyYWdnYWJsZVwiIGNsYXNzPVwiYmhpLW1vdmVcIj48L2k+XG4gICAgICAgICAgPGxhYmVsICpuZ0lmPVwiZmlsZS5saW5rXCJcbiAgICAgICAgICAgID48c3BhblxuICAgICAgICAgICAgICA+PGEgaHJlZj1cInt7IGZpbGUubGluayB9fVwiIHRhcmdldD1cIl9ibGFua1wiPnt7IGZpbGUubmFtZSB8IGRlY29kZVVSSSB9fTwvYT48L3NwYW5cbiAgICAgICAgICAgID48c3BhbiAqbmdJZj1cImZpbGUuZGVzY3JpcHRpb25cIj58fDwvc3Bhbj48c3Bhbj57eyBmaWxlLmRlc2NyaXB0aW9uIH19PC9zcGFuPjwvbGFiZWxcbiAgICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsICpuZ0lmPVwiIWZpbGUubGlua1wiPnt7IGZpbGUubmFtZSB8IGRlY29kZVVSSSB9fTwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIiBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2ZpbGUtYWN0aW9ucydcIiAqbmdJZj1cImZpbGUubG9hZGVkXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWxheW91dE9wdGlvbnMuY3VzdG9tQWN0aW9uc1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJsYXlvdXRPcHRpb25zLmRvd25sb2FkXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICB0aGVtZT1cImljb25cIlxuICAgICAgICAgICAgICAgIGljb249XCJzYXZlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWQoZmlsZSlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInZmlsZS1kb3dubG9hZCdcIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFkaXNhYmxlZCAmJiAobGF5b3V0T3B0aW9ucy5yZW1vdmFibGUgfHwgKCFsYXlvdXRPcHRpb25zLnJlbW92YWJsZSAmJiBsYXlvdXRPcHRpb25zLnJlbW92YWJsZVdoZW5OZXcgJiYgIWZpbGUubGluaykpXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICB0aGVtZT1cImljb25cIlxuICAgICAgICAgICAgICAgIGljb249XCJjbG9zZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZShmaWxlKVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidmaWxlLXJlbW92ZSdcIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsYXlvdXRPcHRpb25zLmN1c3RvbUFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwibGF5b3V0T3B0aW9ucy5lZGl0ICYmICFkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgdGhlbWU9XCJpY29uXCJcbiAgICAgICAgICAgICAgICBpY29uPVwiZWRpdFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImN1c3RvbUVkaXQoZmlsZSlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInZmlsZS1lZGl0J1wiXG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwibGF5b3V0T3B0aW9ucy5kb3dubG9hZFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgdGhlbWU9XCJpY29uXCJcbiAgICAgICAgICAgICAgICBpY29uPVwic2F2ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImN1c3RvbVNhdmUoZmlsZSlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInZmlsZS1kb3dubG9hZCdcIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgdGhlbWU9XCJpY29uXCJcbiAgICAgICAgICAgICAgICBpY29uPVwiY2xvc2VcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjdXN0b21EZWxldGUoZmlsZSlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInZmlsZS1yZW1vdmUnXCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPG5vdm8tbG9hZGluZyAqbmdJZj1cIiFmaWxlLmxvYWRlZFwiPjwvbm92by1sb2FkaW5nPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL0ZpbGVJbnB1dC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIE5vdm9GaWxlSW5wdXRFbGVtZW50IGV4dGVuZHMgTm92b0ZpbGVJbnB1dE1peGlucyBpbXBsZW1lbnRzIE5vdm9GaWVsZENvbnRyb2w8YW55PiwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfdW5pcXVlSWQ6IHN0cmluZyA9IGBub3ZvLWZpbGUtaW5wdXQtJHsrK25leHRJZH1gO1xuICAvKiogVGhlIGFyaWEtZGVzY3JpYmVkYnkgYXR0cmlidXRlIG9uIHRoZSBjaGlwIGxpc3QgZm9yIGltcHJvdmVkIGExMXkuICovXG4gIF9hcmlhRGVzY3JpYmVkYnk6IHN0cmluZztcbiAgLyoqIFRhYiBpbmRleCBmb3IgdGhlIGNoaXAgbGlzdC4gKi9cbiAgX3RhYkluZGV4ID0gMDtcbiAgLyoqIFVzZXIgZGVmaW5lZCB0YWIgaW5kZXguICovXG4gIF91c2VyVGFiSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAvKiogVGhlIEZvY3VzS2V5TWFuYWdlciB3aGljaCBoYW5kbGVzIGZvY3VzLiAqL1xuICBfa2V5TWFuYWdlcjogRm9jdXNLZXlNYW5hZ2VyPE5vdm9GaWxlSW5wdXRFbGVtZW50PjtcblxuICByZWFkb25seSBjb250cm9sVHlwZTogc3RyaW5nID0gJ2ZpbGUtaW5wdXQnO1xuICAvKiogQGRvY3MtcHJpdmF0ZSBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE5vdm9GaWVsZENvbnRyb2wuICovXG4gIGxhc3RLZXlWYWx1ZTogc3RyaW5nID0gbnVsbDtcbiAgLyoqIEBkb2NzLXByaXZhdGUgSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBOb3ZvRmllbGRDb250cm9sLiovXG4gIGxhc3RDYXJldFBvc2l0aW9uOiBudW1iZXIgfCBudWxsO1xuXG4gIEBJbnB1dCgpIGlkOiBzdHJpbmcgPSB0aGlzLl91bmlxdWVJZDtcbiAgQElucHV0KCkgdGFiaW5kZXg6IG51bWJlciA9IDA7XG4gIC8qKiBBbiBvYmplY3QgdXNlZCB0byBjb250cm9sIHdoZW4gZXJyb3IgbWVzc2FnZXMgYXJlIHNob3duLiAqL1xuICBASW5wdXQoKSBlcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXI7XG5cbiAgLy8gLS0tLS0tLS0tLVxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBmaWxlSW5wdXQ6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ2ZpbGVPdXRwdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBmaWxlT3V0cHV0OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICBjb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbWVudCcpIGlucHV0RWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBASW5wdXQoKVxuICBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGxheW91dE9wdGlvbnM6IHtcbiAgICBvcmRlcj86IHN0cmluZztcbiAgICBkb3dubG9hZD86IGJvb2xlYW47XG4gICAgZWRpdD86IGJvb2xlYW47XG4gICAgbGFiZWxTdHlsZT86IHN0cmluZztcbiAgICBkcmFnZ2FibGU/OiBib29sZWFuO1xuICAgIGN1c3RvbUFjdGlvbnM6IGJvb2xlYW47XG4gICAgcmVtb3ZhYmxlPzogYm9vbGVhbjtcbiAgICBjdXN0b21WYWxpZGF0aW9uPzogeyBhY3Rpb246IHN0cmluZzsgZm46IEZ1bmN0aW9uIH1bXTtcbiAgICByZW1vdmFibGVXaGVuTmV3PzogYm9vbGVhbjtcbiAgfTtcbiAgQElucHV0KClcbiAgdmFsdWU6IEFycmF5PGFueT4gPSBbXTtcbiAgQElucHV0KClcbiAgZGF0YUZlYXR1cmVJZDogc3RyaW5nO1xuXG4gIEBPdXRwdXQoKVxuICBlZGl0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpXG4gIHNhdmU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KClcbiAgZGVsZXRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpXG4gIHVwbG9hZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgZWxlbWVudHM6IEFycmF5PGFueT4gPSBbXTtcbiAgZmlsZXM6IEFycmF5PGFueT4gPSBbXTtcbiAgbW9kZWw6IGFueTtcbiAgYWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG4gIGNvbW1hbmRzOiBhbnk7XG4gIHZpc2libGU6IGJvb2xlYW47XG4gIHRhcmdldDogYW55O1xuICBmaWxlT3V0cHV0QmFnOiBzdHJpbmc7XG5cbiAgb25Nb2RlbENoYW5nZTogRnVuY3Rpb24gPSAoKSA9PiB7fTtcbiAgb25Nb2RlbFRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgQElucHV0KClcbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcbiAgfVxuXG4gIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9uYW1lID0gdmFsdWU7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRpc2FibGVkJylcbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5nQ29udHJvbCA/ICEhdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQgOiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBOb3ZvRmllbGRDb250cm9sLlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICB9XG4gIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBOb3ZvRmllbGRDb250cm9sLiAqL1xuICBASW5wdXQoKVxuICBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XG4gIH1cbiAgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9uYW1lOiBzdHJpbmcgPSB0aGlzLl91bmlxdWVJZDtcbiAgcHJvdGVjdGVkIF92YWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgX3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9wbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZixcbiAgICBwdWJsaWMgbGFiZWxzOiBOb3ZvTGFiZWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgZHJhZ3VsYTogTm92b0RyYWd1bGFTZXJ2aWNlLFxuICAgIF9kZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyLFxuICAgIEBPcHRpb25hbCgpIF9wYXJlbnRGb3JtOiBOZ0Zvcm0sXG4gICAgQE9wdGlvbmFsKCkgX3BhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgX25nQ29udHJvbDogTmdDb250cm9sLFxuICApIHtcbiAgICBzdXBlcihfZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyLCBfcGFyZW50Rm9ybSwgX3BhcmVudEZvcm1Hcm91cCwgX25nQ29udHJvbCk7XG4gICAgaWYgKF9uZ0NvbnRyb2wpIHtcbiAgICAgIF9uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuICAgIHRoaXMuY29tbWFuZHMgPSB7XG4gICAgICBkcmFnZW50ZXI6IHRoaXMuZHJhZ0VudGVySGFuZGxlci5iaW5kKHRoaXMpLFxuICAgICAgZHJhZ2xlYXZlOiB0aGlzLmRyYWdMZWF2ZUhhbmRsZXIuYmluZCh0aGlzKSxcbiAgICAgIGRyYWdvdmVyOiB0aGlzLmRyYWdPdmVySGFuZGxlci5iaW5kKHRoaXMpLFxuICAgICAgZHJvcDogdGhpcy5kcm9wSGFuZGxlci5iaW5kKHRoaXMpLFxuICAgIH07XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBbJ2RyYWdlbnRlcicsICdkcmFnbGVhdmUnLCAnZHJhZ292ZXInLCAnZHJvcCddLmZvckVhY2goKHR5cGUpID0+IHtcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgdGhpcy5jb21tYW5kc1t0eXBlXSk7XG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVMYXlvdXQoKTtcbiAgICB0aGlzLmluaXRpYWxpemVEcmFndWxhKCk7XG4gICAgdGhpcy5zZXRJbml0aWFsRmlsZUxpc3QoKTtcbiAgICB0aGlzLmRhdGFGZWF0dXJlSWQgPSB0aGlzLmRhdGFGZWF0dXJlSWQgPyB0aGlzLmRhdGFGZWF0dXJlSWQgOiB0aGlzLm5hbWU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBbJ2RyYWdlbnRlcicsICdkcmFnbGVhdmUnLCAnZHJhZ292ZXInLCAnZHJvcCddLmZvckVhY2goKHR5cGUpID0+IHtcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgdGhpcy5jb21tYW5kc1t0eXBlXSk7XG4gICAgfSk7XG4gICAgY29uc3QgZHJhZ3VsYUhhc0ZpbGVPdXRwdXRCYWcgPVxuICAgICAgdGhpcy5kcmFndWxhLmJhZ3MubGVuZ3RoID4gMCAmJiB0aGlzLmRyYWd1bGEuYmFncy5maWx0ZXIoKHgpID0+IHgubmFtZSA9PT0gdGhpcy5maWxlT3V0cHV0QmFnKS5sZW5ndGggPiAwO1xuICAgIGlmIChkcmFndWxhSGFzRmlsZU91dHB1dEJhZykge1xuICAgICAgdGhpcy5kcmFndWxhLmRlc3Ryb3kodGhpcy5maWxlT3V0cHV0QmFnKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVMYXlvdXQoKSB7XG4gICAgdGhpcy5sYXlvdXRPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgTEFZT1VUX0RFRkFVTFRTLCB0aGlzLmxheW91dE9wdGlvbnMpO1xuICAgIHRoaXMuaW5zZXJ0VGVtcGxhdGVzQmFzZWRPbkxheW91dCgpO1xuICB9XG5cbiAgaW5zZXJ0VGVtcGxhdGVzQmFzZWRPbkxheW91dCgpIHtcbiAgICBsZXQgb3JkZXI7XG4gICAgc3dpdGNoICh0aGlzLmxheW91dE9wdGlvbnMub3JkZXIpIHtcbiAgICAgIGNhc2UgJ2Rpc3BsYXlGaWxlc0JlbG93JzpcbiAgICAgICAgb3JkZXIgPSBbJ2ZpbGVJbnB1dCcsICdmaWxlT3V0cHV0J107XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgb3JkZXIgPSBbJ2ZpbGVPdXRwdXQnLCAnZmlsZUlucHV0J107XG4gICAgfVxuICAgIG9yZGVyLmZvckVhY2goKHRlbXBsYXRlKSA9PiB7XG4gICAgICB0aGlzLmNvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpc1t0ZW1wbGF0ZV0sIDApO1xuICAgIH0pO1xuICAgIHJldHVybiBvcmRlcjtcbiAgfVxuXG4gIGluaXRpYWxpemVEcmFndWxhKCkge1xuICAgIHRoaXMuZmlsZU91dHB1dEJhZyA9IGBmaWxlLW91dHB1dC0ke3RoaXMuZHJhZ3VsYS5iYWdzLmxlbmd0aH1gO1xuICAgIHRoaXMuZHJhZ3VsYS5zZXRPcHRpb25zKHRoaXMuZmlsZU91dHB1dEJhZywge1xuICAgICAgbW92ZXM6IChlbCwgY29udGFpbmVyLCBoYW5kbGUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGF5b3V0T3B0aW9ucy5kcmFnZ2FibGU7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgc2V0SW5pdGlhbEZpbGVMaXN0KCkge1xuICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLmZpbGVzID0gdGhpcy52YWx1ZTtcbiAgICB9XG4gIH1cblxuICBkcmFnRW50ZXJIYW5kbGVyKGV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdjb3B5JztcbiAgICB0aGlzLnRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gIH1cblxuICBkcmFnTGVhdmVIYW5kbGVyKGV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAodGhpcy50YXJnZXQgPT09IGV2ZW50LnRhcmdldCkge1xuICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBkcmFnT3ZlckhhbmRsZXIoZXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIC8vIG5vLW9wXG4gIH1cblxuICBkcm9wSGFuZGxlcihldmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgaWYgKGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlc1swXSAhPT0gJ0ZpbGVzJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvcHRpb25zOiBhbnkgPSB0aGlzLmxheW91dE9wdGlvbnM7XG4gICAgY29uc3QgZmlsZWxpc3QgPSBBcnJheS5mcm9tKGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyk7XG4gICAgaWYgKG9wdGlvbnMuY3VzdG9tQWN0aW9ucykge1xuICAgICAgdGhpcy51cGxvYWQuZW1pdCh0aGlzLm11bHRpcGxlID8gZmlsZWxpc3QgOiBbZmlsZWxpc3RbMF1dKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcm9jZXNzKHRoaXMubXVsdGlwbGUgPyBmaWxlbGlzdCA6IFtmaWxlbGlzdFswXV0pO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICB9XG5cbiAgd3JpdGVWYWx1ZShtb2RlbDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5tb2RlbCA9IG1vZGVsO1xuICAgIC8vIElmIG1vZGVsIGlzIGNsZWFyZWQgcHJvZ3JhbW1hdGljYWxseSAoRS5nLiBmb3JtLnBhdGNoVmFsdWUoe2ZpbGU6IHVuZGVmaW5lZH0pKSwgZW1wdHkgZmlsZSBsaXN0LlxuICAgIHRoaXMuZmlsZXMgPSAhbW9kZWwgPyBbXSA6IHRoaXMuZmlsZXM7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgY2hlY2soZXZlbnQpIHtcbiAgICB0aGlzLnByb2Nlc3MoQXJyYXkuZnJvbShldmVudC50YXJnZXQuZmlsZXMpKTtcbiAgICAvLyBBZnRlciBwcm9jZXNzaW5nIGZpbGUgdXBsb2FkLCBjbGVhciBpbnB1dCBlbGVtZW50IHZhbHVlLiBBbGxvd3MgZm9yIGRlbGV0ZSBhbmQgdXBsb2FkIG9mIHNhbWUgZmlsZS5cbiAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJztcbiAgfVxuXG4gIHZhbGlkYXRlKGZpbGVzKTogYm9vbGVhbiB7XG4gICAgbGV0IHBhc3NlZFZhbGlkYXRpb24gPSB0cnVlO1xuICAgIGlmICh0aGlzLmxheW91dE9wdGlvbnMuY3VzdG9tVmFsaWRhdGlvbikge1xuICAgICAgdGhpcy5sYXlvdXRPcHRpb25zLmN1c3RvbVZhbGlkYXRpb25cbiAgICAgICAgLmZpbHRlcigodmFsaWRhdGlvbikgPT4gdmFsaWRhdGlvbi5hY3Rpb24gPT09ICd1cGxvYWQnKVxuICAgICAgICAuZm9yRWFjaCgodXBsb2FkVmFsaWRhdGlvbikgPT4ge1xuICAgICAgICAgIHBhc3NlZFZhbGlkYXRpb24gPSB1cGxvYWRWYWxpZGF0aW9uLmZuKGZpbGVzKSAmJiBwYXNzZWRWYWxpZGF0aW9uO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHBhc3NlZFZhbGlkYXRpb247XG4gIH1cblxuICBwcm9jZXNzKGZpbGVsaXN0KSB7XG4gICAgaWYgKHRoaXMudmFsaWRhdGUoZmlsZWxpc3QpKSB7XG4gICAgICBQcm9taXNlLmFsbChmaWxlbGlzdC5tYXAoKGZpbGUpID0+IHRoaXMucmVhZEZpbGUoZmlsZSkpKS50aGVuKChmaWxlcykgPT4ge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgIHRoaXMuZmlsZXMucHVzaCguLi5maWxlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5maWxlcyA9IGZpbGVzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubW9kZWwgPSB0aGlzLmZpbGVzO1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy5tb2RlbCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBkb3dubG9hZChmaWxlKSB7XG4gICAgd2luZG93Lm9wZW4oZmlsZS5kYXRhVVJMLCAnX2JsYW5rJyk7XG4gIH1cblxuICByZW1vdmUoZmlsZSkge1xuICAgIHRoaXMuZmlsZXMuc3BsaWNlKFxuICAgICAgdGhpcy5maWxlcy5maW5kSW5kZXgoKGYpID0+IGYubmFtZSA9PT0gZmlsZS5uYW1lICYmIGYuc2l6ZSA9PT0gZmlsZS5zaXplKSxcbiAgICAgIDEsXG4gICAgKTtcbiAgICB0aGlzLm1vZGVsID0gdGhpcy5maWxlcztcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy5tb2RlbCk7XG4gIH1cblxuICByZWFkRmlsZShmaWxlKSB7XG4gICAgcmV0dXJuIG5ldyBOb3ZvRmlsZShmaWxlKS5yZWFkKCk7XG4gIH1cblxuICBjdXN0b21FZGl0KGZpbGUpIHtcbiAgICB0aGlzLmVkaXQuZW1pdChmaWxlKTtcbiAgfVxuXG4gIGN1c3RvbVNhdmUoZmlsZSkge1xuICAgIHRoaXMuc2F2ZS5lbWl0KGZpbGUpO1xuICB9XG5cbiAgY3VzdG9tRGVsZXRlKGZpbGUpIHtcbiAgICB0aGlzLmRlbGV0ZS5lbWl0KGZpbGUpO1xuICB9XG5cbiAgY3VzdG9tQ2hlY2soZXZlbnQpIHtcbiAgICB0aGlzLnVwbG9hZC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gIH1cblxuICAvKiogV2hldGhlciBhbnkgcmFkaW8gYnV0dG9ucyBoYXMgZm9jdXMuICovXG4gIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgIC8vIHRvZG86IGltcGxlbWVudCB0aGlzLlxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE5vdm9GaWVsZENvbnRyb2wuICovXG4gIGdldCBlbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSA9PT0gbnVsbDtcbiAgfVxuXG4gIC8qKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE5vdm9GaWVsZENvbnRyb2wuICovXG4gIGdldCBzaG91bGRMYWJlbEZsb2F0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5lbXB0eSB8fCB0aGlzLmZvY3VzZWQ7XG4gIH1cblxuICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBOb3ZvRmllbGRDb250cm9sLiAqL1xuICBzZXREZXNjcmliZWRCeUlkcyhpZHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fYXJpYURlc2NyaWJlZGJ5ID0gaWRzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIC8qKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE5vdm9GaWVsZENvbnRyb2wuICovXG4gIG9uQ29udGFpbmVyQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLmZvY3VzKCk7XG4gIH1cblxuICAvKipcbiAgICogRm9jdXNlcyB0aGUgZmlyc3Qgbm9uLWRpc2FibGVkIGNoaXAgaW4gdGhpcyBjaGlwIGxpc3QsIG9yIHRoZSBhc3NvY2lhdGVkIGlucHV0IHdoZW4gdGhlcmVcbiAgICogYXJlIG5vIGVsaWdpYmxlIGNoaXBzLlxuICAgKi9cbiAgZm9jdXMob3B0aW9ucz86IEZvY3VzT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIFRPRE9cbiAgfVxufVxuIl19
337
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsZUlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbm92by1lbGVtZW50cy9zcmMvZWxlbWVudHMvZm9ybS9leHRyYXMvZmlsZS9GaWxlSW5wdXQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZvLWVsZW1lbnRzL3NyYy9lbGVtZW50cy9mb3JtL2V4dHJhcy9maWxlL0ZpbGVJbnB1dC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0Isa0JBQWtCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdGLE9BQU8sRUFBMkIsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7OztBQUU5QyxzREFBc0Q7QUFDdEQsZ0NBQWdDO0FBQ2hDLGdDQUFnQztBQUNoQyx5REFBeUQ7QUFDekQsaUJBQWlCO0FBQ2pCLEtBQUs7QUFFTCxNQUFNLGVBQWUsR0FBRyxFQUFFLEtBQUss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QUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBORzJcbmltcG9ydCB7IEZvY3VzS2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2VsZixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUdyb3VwRGlyZWN0aXZlLCBOZ0NvbnRyb2wsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENhblVwZGF0ZUVycm9yU3RhdGVDdG9yLCBFcnJvclN0YXRlTWF0Y2hlciwgbWl4aW5FcnJvclN0YXRlIH0gZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9jb21tb24nO1xuaW1wb3J0IHsgTm92b0ZpZWxkQ29udHJvbCB9IGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvZmllbGQnO1xuaW1wb3J0IHsgR2xvYmFsUmVmLCBOb3ZvTGFiZWxTZXJ2aWNlIH0gZnJvbSAnbm92by1lbGVtZW50cy9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBOb3ZvRmlsZSB9IGZyb20gJy4vZXh0cmFzL2ZpbGUvRmlsZSc7XG5cbi8vIFZhbHVlIGFjY2Vzc29yIGZvciB0aGUgY29tcG9uZW50IChzdXBwb3J0cyBuZ01vZGVsKVxuLy8gY29uc3QgRklMRV9WQUxVRV9BQ0NFU1NPUiA9IHtcbi8vICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4vLyAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE5vdm9GaWxlSW5wdXRFbGVtZW50KSxcbi8vICAgbXVsdGk6IHRydWUsXG4vLyB9O1xuXG5jb25zdCBMQVlPVVRfREVGQVVMVFMgPSB7IG9yZGVyOiAnZGVmYXVsdCcsIGRvd25sb2FkOiB0cnVlLCByZW1vdmFibGU6IHRydWUsIGxhYmVsU3R5bGU6ICdkZWZhdWx0JywgZHJhZ2dhYmxlOiBmYWxzZSB9O1xuLy8gbWFrZSBmaWxlLWlucHV0IGlkcyB1bmlxdWVcbmxldCBuZXh0SWQgPSAwO1xuXG5jbGFzcyBOb3ZvRmlsZUlucHV0QmFzZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBfZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlcixcbiAgICBwdWJsaWMgX3BhcmVudEZvcm06IE5nRm9ybSxcbiAgICBwdWJsaWMgX3BhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgKSB7fVxufVxuY29uc3QgTm92b0ZpbGVJbnB1dE1peGluczogQ2FuVXBkYXRlRXJyb3JTdGF0ZUN0b3IgJiB0eXBlb2YgTm92b0ZpbGVJbnB1dEJhc2UgPSBtaXhpbkVycm9yU3RhdGUoTm92b0ZpbGVJbnB1dEJhc2UpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdub3ZvLWZpbGUtaW5wdXQnLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5vdm9GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBOb3ZvRmlsZUlucHV0RWxlbWVudCB9XSxcbiAgdGVtcGxhdGVVcmw6ICcuL0ZpbGVJbnB1dC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vRmlsZUlucHV0LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTm92b0ZpbGVJbnB1dEVsZW1lbnQgZXh0ZW5kcyBOb3ZvRmlsZUlucHV0TWl4aW5zIGltcGxlbWVudHMgTm92b0ZpZWxkQ29udHJvbDxhbnk+LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0IHtcbiAgcHJpdmF0ZSBfdW5pcXVlSWQ6IHN0cmluZyA9IGBub3ZvLWZpbGUtaW5wdXQtJHsrK25leHRJZH1gO1xuICAvKiogVGhlIGFyaWEtZGVzY3JpYmVkYnkgYXR0cmlidXRlIG9uIHRoZSBjaGlwIGxpc3QgZm9yIGltcHJvdmVkIGExMXkuICovXG4gIF9hcmlhRGVzY3JpYmVkYnk6IHN0cmluZztcbiAgLyoqIFRhYiBpbmRleCBmb3IgdGhlIGNoaXAgbGlzdC4gKi9cbiAgX3RhYkluZGV4ID0gMDtcbiAgLyoqIFVzZXIgZGVmaW5lZCB0YWIgaW5kZXguICovXG4gIF91c2VyVGFiSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAvKiogVGhlIEZvY3VzS2V5TWFuYWdlciB3aGljaCBoYW5kbGVzIGZvY3VzLiAqL1xuICBfa2V5TWFuYWdlcjogRm9jdXNLZXlNYW5hZ2VyPE5vdm9GaWxlSW5wdXRFbGVtZW50PjtcblxuICByZWFkb25seSBjb250cm9sVHlwZTogc3RyaW5nID0gJ2ZpbGUtaW5wdXQnO1xuICAvKiogQGRvY3MtcHJpdmF0ZSBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE5vdm9GaWVsZENvbnRyb2wuICovXG4gIGxhc3RLZXlWYWx1ZTogc3RyaW5nID0gbnVsbDtcbiAgLyoqIEBkb2NzLXByaXZhdGUgSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBOb3ZvRmllbGRDb250cm9sLiovXG4gIGxhc3RDYXJldFBvc2l0aW9uOiBudW1iZXIgfCBudWxsO1xuXG4gIEBJbnB1dCgpIGlkOiBzdHJpbmcgPSB0aGlzLl91bmlxdWVJZDtcbiAgQElucHV0KCkgdGFiaW5kZXg6IG51bWJlciA9IDA7XG4gIC8qKiBBbiBvYmplY3QgdXNlZCB0byBjb250cm9sIHdoZW4gZXJyb3IgbWVzc2FnZXMgYXJlIHNob3duLiAqL1xuICBASW5wdXQoKSBlcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXI7XG5cbiAgLy8gLS0tLS0tLS0tLVxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBmaWxlSW5wdXQ6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ2ZpbGVPdXRwdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBmaWxlT3V0cHV0OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICBjb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbWVudCcpIGlucHV0RWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBASW5wdXQoKVxuICBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGxheW91dE9wdGlvbnM6IHtcbiAgICBvcmRlcj86IHN0cmluZztcbiAgICBkb3dubG9hZD86IGJvb2xlYW47XG4gICAgZWRpdD86IGJvb2xlYW47XG4gICAgbGFiZWxTdHlsZT86IHN0cmluZztcbiAgICBkcmFnZ2FibGU/OiBib29sZWFuO1xuICAgIGN1c3RvbUFjdGlvbnM/OiBib29sZWFuO1xuICAgIHJlbW92YWJsZT86IGJvb2xlYW47XG4gICAgY3VzdG9tVmFsaWRhdGlvbj86IHsgYWN0aW9uOiBzdHJpbmc7IGZuOiBGdW5jdGlvbiB9W107XG4gICAgcmVtb3ZhYmxlV2hlbk5ldz86IGJvb2xlYW47XG4gIH07XG4gIEBJbnB1dCgpXG4gIHZhbHVlOiBBcnJheTxhbnk+ID0gW107XG4gIEBJbnB1dCgpXG4gIGRhdGFGZWF0dXJlSWQ6IHN0cmluZztcblxuICBAT3V0cHV0KClcbiAgZWRpdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKVxuICBzYXZlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpXG4gIGRlbGV0ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKVxuICB1cGxvYWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGZpbGVzOiBOb3ZvRmlsZVtdID0gW107XG4gIG1vZGVsOiBhbnk7XG4gIGFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBjb21tYW5kczogYW55O1xuICB2aXNpYmxlOiBib29sZWFuO1xuICB0YXJnZXQ6IGFueTtcbiAgZmlsZU91dHB1dEJhZzogc3RyaW5nO1xuXG4gIG9uTW9kZWxDaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4ge307XG4gIG9uTW9kZWxUb3VjaGVkOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuXG4gIEBJbnB1dCgpXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gIH1cblxuICBzZXQgbmFtZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fbmFtZSA9IHZhbHVlO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kaXNhYmxlZCcpXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2wgPyAhIXRoaXMubmdDb250cm9sLmRpc2FibGVkIDogdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTm92b0ZpZWxkQ29udHJvbC5cbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgfVxuICBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgLyoqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTm92b0ZpZWxkQ29udHJvbC4gKi9cbiAgQElucHV0KClcbiAgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xuICB9XG4gIHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcGxhY2Vob2xkZXIgPSB2YWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfbmFtZTogc3RyaW5nID0gdGhpcy5fdW5pcXVlSWQ7XG4gIHByb3RlY3RlZCBfdmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9yZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbGFiZWxzOiBOb3ZvTGFiZWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ2xvYmFsUmVmOiBHbG9iYWxSZWYsXG4gICAgX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgQE9wdGlvbmFsKCkgX3BhcmVudEZvcm06IE5nRm9ybSxcbiAgICBAT3B0aW9uYWwoKSBfcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBfbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICkge1xuICAgIHN1cGVyKF9kZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXIsIF9wYXJlbnRGb3JtLCBfcGFyZW50Rm9ybUdyb3VwLCBfbmdDb250cm9sKTtcbiAgICBpZiAoX25nQ29udHJvbCkge1xuICAgICAgX25nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnVwZGF0ZUxheW91dCgpO1xuICAgIHRoaXMuc2V0SW5pdGlhbEZpbGVMaXN0KCk7XG4gICAgdGhpcy5kYXRhRmVhdHVyZUlkID0gdGhpcy5kYXRhRmVhdHVyZUlkID8gdGhpcy5kYXRhRmVhdHVyZUlkIDogdGhpcy5uYW1lO1xuICB9XG5cbiAgdXBkYXRlTGF5b3V0KCkge1xuICAgIHRoaXMubGF5b3V0T3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIExBWU9VVF9ERUZBVUxUUywgdGhpcy5sYXlvdXRPcHRpb25zKTtcbiAgICB0aGlzLmluc2VydFRlbXBsYXRlc0Jhc2VkT25MYXlvdXQoKTtcbiAgfVxuXG4gIGluc2VydFRlbXBsYXRlc0Jhc2VkT25MYXlvdXQoKSB7XG4gICAgbGV0IG9yZGVyO1xuICAgIHN3aXRjaCAodGhpcy5sYXlvdXRPcHRpb25zLm9yZGVyKSB7XG4gICAgICBjYXNlICdkaXNwbGF5RmlsZXNCZWxvdyc6XG4gICAgICAgIG9yZGVyID0gWydmaWxlSW5wdXQnLCAnZmlsZU91dHB1dCddO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIG9yZGVyID0gWydmaWxlT3V0cHV0JywgJ2ZpbGVJbnB1dCddO1xuICAgIH1cbiAgICBvcmRlci5mb3JFYWNoKCh0ZW1wbGF0ZSkgPT4ge1xuICAgICAgdGhpcy5jb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXNbdGVtcGxhdGVdLCAwKTtcbiAgICB9KTtcbiAgICByZXR1cm4gb3JkZXI7XG4gIH1cblxuICBnZXQgb3V0cHV0RmlsZURyYWdnaW5nRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZHJhZ2dhYmxlID0gdGhpcy5sYXlvdXRPcHRpb25zPy5kcmFnZ2FibGU7XG4gICAgcmV0dXJuIGRyYWdnYWJsZSAhPSBudWxsICYmICFkcmFnZ2FibGU7XG4gIH1cblxuICBwcml2YXRlIHNldEluaXRpYWxGaWxlTGlzdCgpIHtcbiAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5maWxlcyA9IHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2VudGVyJywgWyckZXZlbnQnXSlcbiAgZHJhZ0VudGVySGFuZGxlcihldmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnY29weSc7XG4gICAgdGhpcy50YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJywgWyckZXZlbnQnXSlcbiAgZHJhZ0xlYXZlSGFuZGxlcihldmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHRoaXMudGFyZ2V0ID09PSBldmVudC50YXJnZXQpIHtcbiAgICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ292ZXInLCBbJyRldmVudCddKVxuICBkcmFnT3ZlckhhbmRsZXIoZXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIC8vIG5vLW9wXG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSlcbiAgZHJvcEhhbmRsZXIoZXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXIudHlwZXNbMF0gIT09ICdGaWxlcycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgb3B0aW9uczogYW55ID0gdGhpcy5sYXlvdXRPcHRpb25zO1xuICAgIGNvbnN0IGZpbGVsaXN0ID0gQXJyYXkuZnJvbShldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpO1xuICAgIGlmIChvcHRpb25zLmN1c3RvbUFjdGlvbnMpIHtcbiAgICAgIHRoaXMudXBsb2FkLmVtaXQodGhpcy5tdWx0aXBsZSA/IGZpbGVsaXN0IDogW2ZpbGVsaXN0WzBdXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJvY2Vzcyh0aGlzLm11bHRpcGxlID8gZmlsZWxpc3QgOiBbZmlsZWxpc3RbMF1dKTtcbiAgICB9XG4gICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgfVxuXG4gIGRyb3BPdXRwdXRJdGVtKGV2ZW50OiBDZGtEcmFnRHJvcDxOb3ZvRmlsZVtdPikge1xuICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmZpbGVzLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZShtb2RlbDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5tb2RlbCA9IG1vZGVsO1xuICAgIC8vIElmIG1vZGVsIGlzIGNsZWFyZWQgcHJvZ3JhbW1hdGljYWxseSAoRS5nLiBmb3JtLnBhdGNoVmFsdWUoe2ZpbGU6IHVuZGVmaW5lZH0pKSwgZW1wdHkgZmlsZSBsaXN0LlxuICAgIHRoaXMuZmlsZXMgPSAhbW9kZWwgPyBbXSA6IHRoaXMuZmlsZXM7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgY2hlY2soZXZlbnQpIHtcbiAgICB0aGlzLnByb2Nlc3MoQXJyYXkuZnJvbShldmVudC50YXJnZXQuZmlsZXMpKTtcbiAgICAvLyBBZnRlciBwcm9jZXNzaW5nIGZpbGUgdXBsb2FkLCBjbGVhciBpbnB1dCBlbGVtZW50IHZhbHVlLiBBbGxvd3MgZm9yIGRlbGV0ZSBhbmQgdXBsb2FkIG9mIHNhbWUgZmlsZS5cbiAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJztcbiAgfVxuXG4gIHZhbGlkYXRlKGZpbGVzKTogYm9vbGVhbiB7XG4gICAgbGV0IHBhc3NlZFZhbGlkYXRpb24gPSB0cnVlO1xuICAgIGlmICh0aGlzLmxheW91dE9wdGlvbnMuY3VzdG9tVmFsaWRhdGlvbikge1xuICAgICAgdGhpcy5sYXlvdXRPcHRpb25zLmN1c3RvbVZhbGlkYXRpb25cbiAgICAgICAgLmZpbHRlcigodmFsaWRhdGlvbikgPT4gdmFsaWRhdGlvbi5hY3Rpb24gPT09ICd1cGxvYWQnKVxuICAgICAgICAuZm9yRWFjaCgodXBsb2FkVmFsaWRhdGlvbikgPT4ge1xuICAgICAgICAgIHBhc3NlZFZhbGlkYXRpb24gPSB1cGxvYWRWYWxpZGF0aW9uLmZuKGZpbGVzKSAmJiBwYXNzZWRWYWxpZGF0aW9uO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHBhc3NlZFZhbGlkYXRpb247XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3MoZmlsZWxpc3QpIHtcbiAgICBpZiAodGhpcy52YWxpZGF0ZShmaWxlbGlzdCkpIHtcbiAgICAgIFByb21pc2UuYWxsKGZpbGVsaXN0Lm1hcCgoZmlsZSkgPT4gdGhpcy5yZWFkRmlsZShmaWxlKSkpLnRoZW4oKGZpbGVzKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgdGhpcy5maWxlcy5wdXNoKC4uLmZpbGVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmZpbGVzID0gZmlsZXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb2RlbCA9IHRoaXMuZmlsZXM7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLm1vZGVsKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGRvd25sb2FkKGZpbGUpIHtcbiAgICAvLyBVc2luZyBhbiBpbmplY3RlZCBpbnN0YW5jZSBvZiB3aW5kb3cgdG8gbWFrZSBzdXJlIHRoYXQgdW5pdCB0ZXN0cyBkbyBub3Qgb3BlbiBhIG5ldyB3aW5kb3csIGV2ZW4gYWNjaWRlbnRhbGx5XG4gICAgdGhpcy5nbG9iYWxSZWYubmF0aXZlV2luZG93Lm9wZW4oZmlsZS5kYXRhVVJMLCAnX2JsYW5rJyk7XG4gIH1cblxuICByZW1vdmUoZmlsZSkge1xuICAgIHRoaXMuZmlsZXMuc3BsaWNlKFxuICAgICAgdGhpcy5maWxlcy5maW5kSW5kZXgoKGYpID0+IGYubmFtZSA9PT0gZmlsZS5uYW1lICYmIGYuc2l6ZSA9PT0gZmlsZS5zaXplKSxcbiAgICAgIDEsXG4gICAgKTtcbiAgICB0aGlzLm1vZGVsID0gdGhpcy5maWxlcztcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy5tb2RlbCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRGaWxlKGZpbGUpIHtcbiAgICByZXR1cm4gbmV3IE5vdm9GaWxlKGZpbGUpLnJlYWQoKTtcbiAgfVxuXG4gIGN1c3RvbUVkaXQoZmlsZSkge1xuICAgIHRoaXMuZWRpdC5lbWl0KGZpbGUpO1xuICB9XG5cbiAgY3VzdG9tU2F2ZShmaWxlKSB7XG4gICAgdGhpcy5zYXZlLmVtaXQoZmlsZSk7XG4gIH1cblxuICBjdXN0b21EZWxldGUoZmlsZSkge1xuICAgIHRoaXMuZGVsZXRlLmVtaXQoZmlsZSk7XG4gIH1cblxuICBjdXN0b21DaGVjayhldmVudCkge1xuICAgIHRoaXMudXBsb2FkLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIGFueSByYWRpbyBidXR0b25zIGhhcyBmb2N1cy4gKi9cbiAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gdG9kbzogaW1wbGVtZW50IHRoaXMuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTm92b0ZpZWxkQ29udHJvbC4gKi9cbiAgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlID09PSBudWxsO1xuICB9XG5cbiAgLyoqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTm92b0ZpZWxkQ29udHJvbC4gKi9cbiAgZ2V0IHNob3VsZExhYmVsRmxvYXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmVtcHR5IHx8IHRoaXMuZm9jdXNlZDtcbiAgfVxuXG4gIC8qKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE5vdm9GaWVsZENvbnRyb2wuICovXG4gIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9hcmlhRGVzY3JpYmVkYnkgPSBpZHMuam9pbignICcpO1xuICB9XG5cbiAgLyoqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTm92b0ZpZWxkQ29udHJvbC4gKi9cbiAgb25Db250YWluZXJDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuZm9jdXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb2N1c2VzIHRoZSBmaXJzdCBub24tZGlzYWJsZWQgY2hpcCBpbiB0aGlzIGNoaXAgbGlzdCwgb3IgdGhlIGFzc29jaWF0ZWQgaW5wdXQgd2hlbiB0aGVyZVxuICAgKiBhcmUgbm8gZWxpZ2libGUgY2hpcHMuXG4gICAqL1xuICBmb2N1cyhvcHRpb25zPzogRm9jdXNPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gVE9ET1xuICB9XG59XG4iLCI8ZGl2ICNjb250YWluZXI+PC9kaXY+XG48bmctdGVtcGxhdGUgI2ZpbGVJbnB1dD5cbiAgPGRpdiBjbGFzcz1cImZpbGUtaW5wdXQtZ3JvdXBcIiBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVwiPlxuICAgIDxpbnB1dFxuICAgICAgI2lucHV0RWxlbWVudFxuICAgICAgKm5nSWY9XCIhbGF5b3V0T3B0aW9ucy5jdXN0b21BY3Rpb25zXCJcbiAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgW2F0dHIuaWRdPVwibmFtZVwiXG4gICAgICAoY2hhbmdlKT1cImNoZWNrKCRldmVudClcIlxuICAgICAgW2F0dHIubXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICBbYXR0ci5kYXRhLWZlYXR1cmUtaWRdPVwiZGF0YUZlYXR1cmVJZFwiXG4gICAgLz5cbiAgICA8aW5wdXRcbiAgICAgICNpbnB1dEVsZW1lbnRcbiAgICAgICpuZ0lmPVwibGF5b3V0T3B0aW9ucy5jdXN0b21BY3Rpb25zXCJcbiAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgW2F0dHIuaWRdPVwibmFtZVwiXG4gICAgICAoY2hhbmdlKT1cImN1c3RvbUNoZWNrKCRldmVudClcIlxuICAgICAgW2F0dHIubXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICBbYXR0ci5kYXRhLWZlYXR1cmUtaWRdPVwiZGF0YUZlYXR1cmVJZFwiXG4gICAgLz5cbiAgICA8c2VjdGlvbiBbbmdTd2l0Y2hdPVwibGF5b3V0T3B0aW9ucy5sYWJlbFN0eWxlXCI+XG4gICAgICA8bGFiZWwgKm5nU3dpdGNoQ2FzZT1cIiduby1ib3gnXCIgW2F0dHIuZm9yXT1cIm5hbWVcIiBjbGFzcz1cIm5vLWJveFwiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxpIGNsYXNzPVwiYmhpLWRyb3B6b25lXCI+PC9pPnt7IHBsYWNlaG9sZGVyIHx8IGxhYmVscy5jaG9vc2VBRmlsZSB9fSB7eyBsYWJlbHMub3IgfX1cbiAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwibGlua1wiPnt7IGxhYmVscy5jbGlja1RvQnJvd3NlIH19PC9zdHJvbmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxsYWJlbCAqbmdTd2l0Y2hEZWZhdWx0IFthdHRyLmZvcl09XCJuYW1lXCIgY2xhc3M9XCJib3hlZFwiPlxuICAgICAgICA8c3Bhbj57eyBwbGFjZWhvbGRlciB8fCBsYWJlbHMuY2hvb3NlQUZpbGUgfX08L3NwYW4+XG4gICAgICAgIDxzbWFsbFxuICAgICAgICAgID57eyBsYWJlbHMub3IgfX0gPHN0cm9uZyBjbGFzcz1cImxpbmtcIj57eyBsYWJlbHMuY2xpY2tUb0Jyb3dzZSB9fTwvc3Ryb25nPjwvc21hbGxcbiAgICAgICAgPlxuICAgICAgPC9sYWJlbD5cbiAgICA8L3NlY3Rpb24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZmlsZU91dHB1dD5cbiAgPGRpdiBjbGFzcz1cImZpbGUtb3V0cHV0LWdyb3VwXCIgY2RrRHJvcExpc3QgW2Nka0Ryb3BMaXN0RGlzYWJsZWRdPVwib3V0cHV0RmlsZURyYWdnaW5nRGlzYWJsZWRcIiAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3BPdXRwdXRJdGVtKCRldmVudClcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmlsZS1pdGVtXCIgY2RrRHJhZyAqbmdGb3I9XCJsZXQgZmlsZSBvZiBmaWxlc1wiIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgICAgPGkgKm5nSWY9XCJsYXlvdXRPcHRpb25zLmRyYWdnYWJsZVwiIGNsYXNzPVwiYmhpLW1vdmVcIj48L2k+XG4gICAgICA8bGFiZWwgKm5nSWY9XCJmaWxlLmxpbmtcIlxuICAgICAgICA+PHNwYW5cbiAgICAgICAgICA+PGEgaHJlZj1cInt7IGZpbGUubGluayB9fVwiIHRhcmdldD1cIl9ibGFua1wiPnt7IGZpbGUubmFtZSB8IGRlY29kZVVSSSB9fTwvYT48L3NwYW5cbiAgICAgICAgPjxzcGFuICpuZ0lmPVwiZmlsZS5kZXNjcmlwdGlvblwiPnx8PC9zcGFuPjxzcGFuPnt7IGZpbGUuZGVzY3JpcHRpb24gfX08L3NwYW4+PC9sYWJlbFxuICAgICAgPlxuICAgICAgPGxhYmVsICpuZ0lmPVwiIWZpbGUubGlua1wiPnt7IGZpbGUubmFtZSB8IGRlY29kZVVSSSB9fTwvbGFiZWw+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInZmlsZS1hY3Rpb25zJ1wiICpuZ0lmPVwiZmlsZS5sb2FkZWRcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFsYXlvdXRPcHRpb25zLmN1c3RvbUFjdGlvbnNcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImxheW91dE9wdGlvbnMuZG93bmxvYWRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICB0aGVtZT1cImljb25cIlxuICAgICAgICAgICAgaWNvbj1cInNhdmVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkKGZpbGUpXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInZmlsZS1kb3dubG9hZCdcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiIWRpc2FibGVkICYmIChsYXlvdXRPcHRpb25zLnJlbW92YWJsZSB8fCAoIWxheW91dE9wdGlvbnMucmVtb3ZhYmxlICYmIGxheW91dE9wdGlvbnMucmVtb3ZhYmxlV2hlbk5ldyAmJiAhZmlsZS5saW5rKSlcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICB0aGVtZT1cImljb25cIlxuICAgICAgICAgICAgaWNvbj1cImNsb3NlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoZmlsZSlcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidmaWxlLXJlbW92ZSdcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImxheW91dE9wdGlvbnMuY3VzdG9tQWN0aW9uc1wiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwibGF5b3V0T3B0aW9ucy5lZGl0ICYmICFkaXNhYmxlZFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHRoZW1lPVwiaWNvblwiXG4gICAgICAgICAgICBpY29uPVwiZWRpdFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY3VzdG9tRWRpdChmaWxlKVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2ZpbGUtZWRpdCdcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwibGF5b3V0T3B0aW9ucy5kb3dubG9hZFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHRoZW1lPVwiaWNvblwiXG4gICAgICAgICAgICBpY29uPVwic2F2ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY3VzdG9tU2F2ZShmaWxlKVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2ZpbGUtZG93bmxvYWQnXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIiFkaXNhYmxlZFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHRoZW1lPVwiaWNvblwiXG4gICAgICAgICAgICBpY29uPVwiY2xvc2VcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImN1c3RvbURlbGV0ZShmaWxlKVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2ZpbGUtcmVtb3ZlJ1wiXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8bm92by1sb2FkaW5nICpuZ0lmPVwiIWZpbGUubG9hZGVkXCI+PC9ub3ZvLWxvYWRpbmc+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -15,6 +15,7 @@ export * from 'novo-elements/elements/data-table';
15
15
  export * from 'novo-elements/elements/date-picker';
16
16
  export * from 'novo-elements/elements/date-time-picker';
17
17
  export * from 'novo-elements/elements/divider';
18
+ export * from 'novo-elements/elements/drag-drop';
18
19
  export * from 'novo-elements/elements/dropdown';
19
20
  export * from 'novo-elements/elements/expansion';
20
21
  export * from 'novo-elements/elements/field';
@@ -54,4 +55,4 @@ export * from 'novo-elements/elements/toolbar';
54
55
  export * from 'novo-elements/elements/tooltip';
55
56
  export * from 'novo-elements/elements/unless';
56
57
  export * from 'novo-elements/elements/value';
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZvLWVsZW1lbnRzL3NyYy9lbGVtZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2FnZW5kYSc7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2FzaWRlJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvYXV0b2NvbXBsZXRlJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvYXZhdGFyJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvYnJlYWRjcnVtYnMnO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9idXR0b24nO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9jYWxlbmRhcic7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2NhcmQnO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9jYXRlZ29yeS1kcm9wZG93bic7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2NoZWNrYm94JztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvY2hpcHMnO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9jb2xvci1waWNrZXInO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9jb21tb24nO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9kYXRhLXRhYmxlJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvZGF0ZS1waWNrZXInO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9kYXRlLXRpbWUtcGlja2VyJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvZGl2aWRlcic7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2Ryb3Bkb3duJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvZXhwYW5zaW9uJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvZmllbGQnO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9mbGV4JztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvZm9ybSc7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2hlYWRlcic7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2ljb24nO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9sYXlvdXQnO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9saXN0JztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvbG9hZGluZyc7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL21lbnUnO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9tb2RhbCc7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL211bHRpLXBpY2tlcic7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL25vbi1pZGVhbC1zdGF0ZSc7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL3BpY2tlcic7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL3BsYWNlcyc7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL3BvcG92ZXInO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9wcm9ncmVzcyc7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL3F1ZXJ5LWJ1aWxkZXInO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9xdWljay1ub3RlJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvcmFkaW8nO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9zZWFyY2gnO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9zZWxlY3QnO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9zZWxlY3Qtc2VhcmNoJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvc2ltcGxlLXRhYmxlJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvc2xpZGVyJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvc3RlcHBlcic7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL3N3aXRjaCc7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL3RhYmJlZC1ncm91cC1waWNrZXInO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy90YWJsZSc7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL3RhYnMnO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy90aWxlcyc7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL3RpbWUtcGlja2VyJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvdGlwLXdlbGwnO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy90b2FzdCc7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL3Rvb2xiYXInO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy90b29sdGlwJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvdW5sZXNzJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvdmFsdWUnO1xuIl19
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZvLWVsZW1lbnRzL3NyYy9lbGVtZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvYWdlbmRhJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvYXNpZGUnO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9hdXRvY29tcGxldGUnO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9hdmF0YXInO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9icmVhZGNydW1icyc7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2J1dHRvbic7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2NhbGVuZGFyJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvY2FyZCc7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2NhdGVnb3J5LWRyb3Bkb3duJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvY2hlY2tib3gnO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9jaGlwcyc7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2NvbG9yLXBpY2tlcic7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2NvbW1vbic7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2RhdGEtdGFibGUnO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9kYXRlLXBpY2tlcic7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2RhdGUtdGltZS1waWNrZXInO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9kaXZpZGVyJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvZHJhZy1kcm9wJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvZHJvcGRvd24nO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9leHBhbnNpb24nO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9maWVsZCc7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2ZsZXgnO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9mb3JtJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvaGVhZGVyJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvaWNvbic7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2xheW91dCc7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2xpc3QnO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9sb2FkaW5nJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvbWVudSc7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL21vZGFsJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvbXVsdGktcGlja2VyJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvbm9uLWlkZWFsLXN0YXRlJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvcGlja2VyJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvcGxhY2VzJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvcG9wb3Zlcic7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL3Byb2dyZXNzJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvcXVlcnktYnVpbGRlcic7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL3F1aWNrLW5vdGUnO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9yYWRpbyc7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL3NlYXJjaCc7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL3NlbGVjdCc7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL3NlbGVjdC1zZWFyY2gnO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9zaW1wbGUtdGFibGUnO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9zbGlkZXInO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9zdGVwcGVyJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvc3dpdGNoJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvdGFiYmVkLWdyb3VwLXBpY2tlcic7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL3RhYmxlJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvdGFicyc7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL3RpbGVzJztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvdGltZS1waWNrZXInO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy90aXAtd2VsbCc7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL3RvYXN0JztcbmV4cG9ydCAqIGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvdG9vbGJhcic7XG5leHBvcnQgKiBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL3Rvb2x0aXAnO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy91bmxlc3MnO1xuZXhwb3J0ICogZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy92YWx1ZSc7XG5cbiJdfQ==