monkey-front-components 0.0.625 → 0.0.626

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 (180) hide show
  1. package/README.md +24 -24
  2. package/esm2020/lib/components/base/base-component.mjs +335 -335
  3. package/esm2020/lib/components/base/base-dynamic-array.mjs +221 -221
  4. package/esm2020/lib/components/base/base-dynamic.mjs +102 -102
  5. package/esm2020/lib/components/base/base-scroll-component.mjs +55 -55
  6. package/esm2020/lib/components/base/base-validators.mjs +20 -20
  7. package/esm2020/lib/components/base/index.mjs +6 -6
  8. package/esm2020/lib/components/dynamic/button/button.component.mjs +52 -52
  9. package/esm2020/lib/components/dynamic/button/index.mjs +2 -2
  10. package/esm2020/lib/components/dynamic/dynamic-directive.mjs +95 -95
  11. package/esm2020/lib/components/dynamic/dynamic.module.mjs +84 -84
  12. package/esm2020/lib/components/dynamic/file-upload/file-upload.component.mjs +53 -53
  13. package/esm2020/lib/components/dynamic/file-upload/index.mjs +2 -2
  14. package/esm2020/lib/components/dynamic/form/dynamic-form-array.component.mjs +72 -72
  15. package/esm2020/lib/components/dynamic/form/dynamic-form.component.mjs +46 -46
  16. package/esm2020/lib/components/dynamic/form/index.mjs +3 -3
  17. package/esm2020/lib/components/dynamic/index.mjs +9 -9
  18. package/esm2020/lib/components/dynamic/input/index.mjs +2 -2
  19. package/esm2020/lib/components/dynamic/input/input.component.mjs +65 -65
  20. package/esm2020/lib/components/dynamic/input-phone/index.mjs +2 -2
  21. package/esm2020/lib/components/dynamic/input-phone/input-phone.component.mjs +65 -65
  22. package/esm2020/lib/components/dynamic/radio/index.mjs +2 -2
  23. package/esm2020/lib/components/dynamic/radio/radio.component.mjs +33 -33
  24. package/esm2020/lib/components/dynamic/select/index.mjs +2 -2
  25. package/esm2020/lib/components/dynamic/select/select.component.mjs +85 -85
  26. package/esm2020/lib/components/dynamic/select-search/index.mjs +2 -2
  27. package/esm2020/lib/components/dynamic/select-search/select-search.component.mjs +92 -92
  28. package/esm2020/lib/components/index.mjs +4 -4
  29. package/esm2020/lib/components/shared/filter/filter.component.mjs +144 -144
  30. package/esm2020/lib/components/shared/filter/filter.module.mjs +67 -67
  31. package/esm2020/lib/components/shared/filter/index.mjs +3 -3
  32. package/esm2020/lib/components/shared/filter/menu/index.mjs +2 -2
  33. package/esm2020/lib/components/shared/filter/menu/menu.component.mjs +120 -120
  34. package/esm2020/lib/components/shared/filter/menu/menu.module.mjs +70 -70
  35. package/esm2020/lib/components/shared/filter/options/children/children.component.mjs +50 -50
  36. package/esm2020/lib/components/shared/filter/options/children/index.mjs +2 -2
  37. package/esm2020/lib/components/shared/filter/options/currency/currency.component.mjs +46 -46
  38. package/esm2020/lib/components/shared/filter/options/currency/index.mjs +2 -2
  39. package/esm2020/lib/components/shared/filter/options/date-range/date-range.component.mjs +65 -65
  40. package/esm2020/lib/components/shared/filter/options/date-range/index.mjs +2 -2
  41. package/esm2020/lib/components/shared/filter/options/index.mjs +2 -2
  42. package/esm2020/lib/components/shared/filter/options/input/index.mjs +2 -2
  43. package/esm2020/lib/components/shared/filter/options/input/input.component.mjs +46 -46
  44. package/esm2020/lib/components/shared/filter/options/options.component.mjs +102 -102
  45. package/esm2020/lib/components/shared/filter/options/options.module.mjs +103 -103
  46. package/esm2020/lib/components/shared/filter/options/status/index.mjs +2 -2
  47. package/esm2020/lib/components/shared/filter/options/status/status.component.mjs +66 -66
  48. package/esm2020/lib/components/shared/filter/options/status-radio/index.mjs +2 -2
  49. package/esm2020/lib/components/shared/filter/options/status-radio/status-radio.component.mjs +37 -37
  50. package/esm2020/lib/components/shared/filter/selected/index.mjs +2 -2
  51. package/esm2020/lib/components/shared/filter/selected/item/children/children.component.mjs +57 -57
  52. package/esm2020/lib/components/shared/filter/selected/item/children/index.mjs +2 -2
  53. package/esm2020/lib/components/shared/filter/selected/item/currency/currency.component.mjs +28 -28
  54. package/esm2020/lib/components/shared/filter/selected/item/currency/index.mjs +2 -2
  55. package/esm2020/lib/components/shared/filter/selected/item/date-range/date-range.component.mjs +42 -42
  56. package/esm2020/lib/components/shared/filter/selected/item/date-range/index.mjs +2 -2
  57. package/esm2020/lib/components/shared/filter/selected/item/date-with-action/date-with-action.component.mjs +32 -32
  58. package/esm2020/lib/components/shared/filter/selected/item/date-with-action/index.mjs +2 -2
  59. package/esm2020/lib/components/shared/filter/selected/item/index.mjs +9 -9
  60. package/esm2020/lib/components/shared/filter/selected/item/input/index.mjs +2 -2
  61. package/esm2020/lib/components/shared/filter/selected/item/input/input.component.mjs +27 -27
  62. package/esm2020/lib/components/shared/filter/selected/item/item.component.mjs +75 -75
  63. package/esm2020/lib/components/shared/filter/selected/item/status/index.mjs +2 -2
  64. package/esm2020/lib/components/shared/filter/selected/item/status/status.component.mjs +38 -38
  65. package/esm2020/lib/components/shared/filter/selected/item/status-radio/index.mjs +2 -2
  66. package/esm2020/lib/components/shared/filter/selected/item/status-radio/status-radio.component.mjs +29 -29
  67. package/esm2020/lib/components/shared/filter/selected/selected.component.mjs +85 -85
  68. package/esm2020/lib/components/shared/filter/selected/selected.module.mjs +92 -92
  69. package/esm2020/lib/components/shared/index.mjs +5 -5
  70. package/esm2020/lib/components/shared/password-strength/index.mjs +3 -3
  71. package/esm2020/lib/components/shared/password-strength/password-strength.component.mjs +85 -85
  72. package/esm2020/lib/components/shared/password-strength/password-strength.mjs +2 -2
  73. package/esm2020/lib/components/shared/password-strength/password-strength.module.mjs +50 -50
  74. package/esm2020/lib/components/shared/products/filter/filter.component.mjs +36 -36
  75. package/esm2020/lib/components/shared/products/index.mjs +3 -3
  76. package/esm2020/lib/components/shared/products/products.component.mjs +91 -91
  77. package/esm2020/lib/components/shared/products/products.module.mjs +22 -22
  78. package/esm2020/lib/components/shared/products/providers/index.mjs +2 -2
  79. package/esm2020/lib/components/shared/products/providers/products.model.mjs +38 -38
  80. package/esm2020/lib/components/shared/progress-bar/index.mjs +4 -4
  81. package/esm2020/lib/components/shared/progress-bar/progress-bar.component.mjs +28 -28
  82. package/esm2020/lib/components/shared/progress-bar/progress-bar.module.mjs +18 -18
  83. package/esm2020/lib/components/shared/progress-bar/progress-bar.service.mjs +49 -49
  84. package/esm2020/lib/interfaces/field-config.mjs +2 -2
  85. package/esm2020/lib/interfaces/index.mjs +2 -2
  86. package/esm2020/monkey-front-components.mjs +4 -4
  87. package/esm2020/public-api.mjs +5 -5
  88. package/fesm2015/monkey-front-components.mjs +2932 -2932
  89. package/fesm2015/monkey-front-components.mjs.map +1 -1
  90. package/fesm2020/monkey-front-components.mjs +2908 -2908
  91. package/fesm2020/monkey-front-components.mjs.map +1 -1
  92. package/lib/components/base/base-component.d.ts +54 -54
  93. package/lib/components/base/base-dynamic-array.d.ts +34 -34
  94. package/lib/components/base/base-dynamic.d.ts +25 -25
  95. package/lib/components/base/base-scroll-component.d.ts +16 -16
  96. package/lib/components/base/base-validators.d.ts +1 -1
  97. package/lib/components/base/index.d.ts +5 -5
  98. package/lib/components/dynamic/button/button.component.d.ts +17 -17
  99. package/lib/components/dynamic/button/index.d.ts +1 -1
  100. package/lib/components/dynamic/dynamic-directive.d.ts +22 -22
  101. package/lib/components/dynamic/dynamic.module.d.ts +20 -20
  102. package/lib/components/dynamic/file-upload/file-upload.component.d.ts +17 -17
  103. package/lib/components/dynamic/file-upload/index.d.ts +1 -1
  104. package/lib/components/dynamic/form/dynamic-form-array.component.d.ts +16 -16
  105. package/lib/components/dynamic/form/dynamic-form.component.d.ts +14 -14
  106. package/lib/components/dynamic/form/index.d.ts +2 -2
  107. package/lib/components/dynamic/index.d.ts +8 -8
  108. package/lib/components/dynamic/input/index.d.ts +1 -1
  109. package/lib/components/dynamic/input/input.component.d.ts +20 -20
  110. package/lib/components/dynamic/input-phone/index.d.ts +1 -1
  111. package/lib/components/dynamic/input-phone/input-phone.component.d.ts +20 -20
  112. package/lib/components/dynamic/radio/index.d.ts +1 -1
  113. package/lib/components/dynamic/radio/radio.component.d.ts +11 -11
  114. package/lib/components/dynamic/select/index.d.ts +1 -1
  115. package/lib/components/dynamic/select/select.component.d.ts +17 -17
  116. package/lib/components/dynamic/select-search/index.d.ts +1 -1
  117. package/lib/components/dynamic/select-search/select-search.component.d.ts +19 -19
  118. package/lib/components/index.d.ts +3 -3
  119. package/lib/components/shared/filter/filter.component.d.ts +41 -41
  120. package/lib/components/shared/filter/filter.module.d.ts +14 -14
  121. package/lib/components/shared/filter/index.d.ts +2 -2
  122. package/lib/components/shared/filter/menu/index.d.ts +1 -1
  123. package/lib/components/shared/filter/menu/menu.component.d.ts +24 -24
  124. package/lib/components/shared/filter/menu/menu.module.d.ts +14 -14
  125. package/lib/components/shared/filter/options/children/children.component.d.ts +17 -17
  126. package/lib/components/shared/filter/options/children/index.d.ts +1 -1
  127. package/lib/components/shared/filter/options/currency/currency.component.d.ts +17 -17
  128. package/lib/components/shared/filter/options/currency/index.d.ts +1 -1
  129. package/lib/components/shared/filter/options/date-range/date-range.component.d.ts +24 -24
  130. package/lib/components/shared/filter/options/date-range/index.d.ts +1 -1
  131. package/lib/components/shared/filter/options/index.d.ts +1 -1
  132. package/lib/components/shared/filter/options/input/index.d.ts +1 -1
  133. package/lib/components/shared/filter/options/input/input.component.d.ts +17 -17
  134. package/lib/components/shared/filter/options/options.component.d.ts +28 -28
  135. package/lib/components/shared/filter/options/options.module.d.ts +19 -19
  136. package/lib/components/shared/filter/options/status/index.d.ts +1 -1
  137. package/lib/components/shared/filter/options/status/status.component.d.ts +19 -19
  138. package/lib/components/shared/filter/options/status-radio/index.d.ts +1 -1
  139. package/lib/components/shared/filter/options/status-radio/status-radio.component.d.ts +15 -15
  140. package/lib/components/shared/filter/selected/index.d.ts +1 -1
  141. package/lib/components/shared/filter/selected/item/children/children.component.d.ts +16 -16
  142. package/lib/components/shared/filter/selected/item/children/index.d.ts +1 -1
  143. package/lib/components/shared/filter/selected/item/currency/currency.component.d.ts +11 -11
  144. package/lib/components/shared/filter/selected/item/currency/index.d.ts +1 -1
  145. package/lib/components/shared/filter/selected/item/date-range/date-range.component.d.ts +12 -12
  146. package/lib/components/shared/filter/selected/item/date-range/index.d.ts +1 -1
  147. package/lib/components/shared/filter/selected/item/date-with-action/date-with-action.component.d.ts +11 -11
  148. package/lib/components/shared/filter/selected/item/date-with-action/index.d.ts +1 -1
  149. package/lib/components/shared/filter/selected/item/index.d.ts +8 -8
  150. package/lib/components/shared/filter/selected/item/input/index.d.ts +1 -1
  151. package/lib/components/shared/filter/selected/item/input/input.component.d.ts +11 -11
  152. package/lib/components/shared/filter/selected/item/item.component.d.ts +20 -20
  153. package/lib/components/shared/filter/selected/item/status/index.d.ts +1 -1
  154. package/lib/components/shared/filter/selected/item/status/status.component.d.ts +13 -13
  155. package/lib/components/shared/filter/selected/item/status-radio/index.d.ts +1 -1
  156. package/lib/components/shared/filter/selected/item/status-radio/status-radio.component.d.ts +11 -11
  157. package/lib/components/shared/filter/selected/selected.component.d.ts +19 -19
  158. package/lib/components/shared/filter/selected/selected.module.d.ts +22 -22
  159. package/lib/components/shared/index.d.ts +4 -4
  160. package/lib/components/shared/password-strength/index.d.ts +2 -2
  161. package/lib/components/shared/password-strength/password-strength.component.d.ts +23 -23
  162. package/lib/components/shared/password-strength/password-strength.d.ts +5 -5
  163. package/lib/components/shared/password-strength/password-strength.module.d.ts +12 -12
  164. package/lib/components/shared/products/filter/filter.component.d.ts +12 -12
  165. package/lib/components/shared/products/index.d.ts +2 -2
  166. package/lib/components/shared/products/products.component.d.ts +20 -20
  167. package/lib/components/shared/products/products.module.d.ts +11 -11
  168. package/lib/components/shared/products/providers/index.d.ts +1 -1
  169. package/lib/components/shared/products/providers/products.model.d.ts +13 -13
  170. package/lib/components/shared/progress-bar/index.d.ts +3 -3
  171. package/lib/components/shared/progress-bar/progress-bar.component.d.ts +12 -12
  172. package/lib/components/shared/progress-bar/progress-bar.module.d.ts +8 -8
  173. package/lib/components/shared/progress-bar/progress-bar.service.d.ts +14 -14
  174. package/lib/interfaces/field-config.d.ts +55 -55
  175. package/lib/interfaces/index.d.ts +1 -1
  176. package/monkey-front-components-0.0.626.tgz +0 -0
  177. package/monkey-front-components.d.ts +5 -5
  178. package/package.json +2 -2
  179. package/public-api.d.ts +1 -1
  180. package/monkey-front-components-0.0.625.tgz +0 -0
@@ -1,221 +1,221 @@
1
- import { Directive, EventEmitter, Input, Output } from '@angular/core';
2
- import { Validators } from '@angular/forms';
3
- import { MonkeyUtils } from 'monkey-style-guide';
4
- import { Subject } from 'rxjs';
5
- import { takeUntil } from 'rxjs/operators';
6
- import { BaseComponent } from './base-component';
7
- import { validators } from './base-validators';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/forms";
10
- export class BaseDynamicArray extends BaseComponent {
11
- constructor(fb) {
12
- super();
13
- this.fb = fb;
14
- this.onHandleSubmit = new EventEmitter();
15
- this.onHandleUpdateForm = new EventEmitter();
16
- this.onHandleSubmitFormReady = new EventEmitter();
17
- this.fields = [];
18
- this.qtd = 1;
19
- this.disabled = false;
20
- this._form = null;
21
- // eslint-disable-next-line object-curly-newline
22
- this._plusValidations = [];
23
- this.changesUnsubscribe = new Subject();
24
- this.formBase = () => {
25
- // return this.fb.group(this.createControl());
26
- return this.createControl();
27
- };
28
- }
29
- handleInternalPlusValidation(mainField, data) {
30
- const { operator, field, value } = mainField;
31
- const validators = {
32
- e: (val1, val2) => { return val1 === val2; },
33
- lt: (val1, val2) => { return val1 < val2; },
34
- gt: (val1, val2) => { return val1 > val2; }
35
- };
36
- return validators[operator](data?.[field] || data, value);
37
- }
38
- makeInternalPlusValidation(data, sourceField, settings, rowIndex) {
39
- const changeFields = (show) => {
40
- const saved = [...this.fields];
41
- saved.map((val) => {
42
- const valSaved = {
43
- ...val
44
- };
45
- if (val.name === sourceField) {
46
- this._plusValidations[rowIndex] = {
47
- [sourceField]: {
48
- ...valSaved,
49
- alwaysShow: show
50
- }
51
- };
52
- this.createOneControl(val.name, this.formValues?.controls[rowIndex], show);
53
- }
54
- else {
55
- this._plusValidations[rowIndex] = {
56
- ...valSaved
57
- };
58
- }
59
- return null;
60
- });
61
- };
62
- const validated = this.handleInternalPlusValidation(settings, data);
63
- changeFields(validated);
64
- }
65
- createOneControl(fieldName, ctrl, create = true) {
66
- const { fields } = this;
67
- if (!fields)
68
- return;
69
- fields.forEach((field) => {
70
- const { fieldType, validations, name, disabled } = field;
71
- if (name !== fieldName)
72
- return;
73
- let { value } = field;
74
- if (fieldType === 'button')
75
- return;
76
- if (fieldType === 'radiobutton' || fieldType === 'checkbox' || fieldType === 'select') {
77
- value = '';
78
- }
79
- if (create) {
80
- const control = this.fb.control(value, this.bindValidations(validations || []));
81
- if (disabled || this.disabled)
82
- control.disable();
83
- ctrl.addControl(name, control);
84
- }
85
- else {
86
- ctrl.removeControl(name);
87
- }
88
- });
89
- }
90
- createControl(data) {
91
- const { fields } = this;
92
- if (!fields)
93
- return null;
94
- // eslint-disable-next-line object-curly-newline
95
- const group = this.fb.group({});
96
- fields.forEach((field) => {
97
- const { fieldType, validations, name, disabled, alwaysShow } = field;
98
- let { value } = field;
99
- if (field.alwaysShowPlusValidation) {
100
- if (!this.handleInternalPlusValidation(field.alwaysShowPlusValidation, data))
101
- return;
102
- }
103
- else if (!alwaysShow)
104
- return;
105
- if (fieldType === 'button')
106
- return;
107
- if (fieldType === 'radiobutton' || fieldType === 'checkbox' || fieldType === 'select') {
108
- value = '';
109
- }
110
- const control = this.fb.control(value, this.bindValidations(validations || []));
111
- if (disabled || this.disabled)
112
- control.disable();
113
- group.addControl(name, control);
114
- });
115
- return group;
116
- }
117
- bindValidations(validations) {
118
- if (validations.length > 0) {
119
- const validList = [];
120
- validations.forEach((valid) => {
121
- const validated = valid.param
122
- ? validators[valid.name](valid.param)
123
- : validators[valid.name];
124
- validList.push(validated);
125
- });
126
- return Validators.compose(validList);
127
- }
128
- return null;
129
- }
130
- buildForm() {
131
- const form = this.fb.group({
132
- fields: this.fb.array([])
133
- });
134
- form?.controls.fields?.valueChanges.subscribe((_) => {
135
- this.watchForChanges();
136
- });
137
- return form;
138
- }
139
- watchForChanges() {
140
- const { fields, changesUnsubscribe } = this;
141
- changesUnsubscribe.next();
142
- this.formValues?.controls?.map((control, index) => {
143
- fields.forEach((fieldConfig) => {
144
- const { name, alwaysShowPlusValidation } = fieldConfig;
145
- if (!alwaysShowPlusValidation)
146
- return;
147
- const { field } = alwaysShowPlusValidation;
148
- if (field) {
149
- control.controls[field]?.valueChanges.pipe(takeUntil(changesUnsubscribe)).subscribe((_) => {
150
- this.makeInternalPlusValidation(_, name, alwaysShowPlusValidation, index);
151
- });
152
- }
153
- });
154
- return null;
155
- });
156
- }
157
- get formValues() {
158
- return this._form ? this._form.get('fields') : null;
159
- }
160
- fillValues() {
161
- const { data, qtd } = this;
162
- if ((!this._form) && qtd)
163
- return;
164
- if (qtd > 0) {
165
- Array(qtd)
166
- .fill(null)
167
- .map((_, index) => {
168
- let form = this.createControl();
169
- if (data && data[index]) {
170
- form = this.createControl(data[index]);
171
- const handledData = data[index];
172
- Object.entries(handledData).forEach(([key, value]) => {
173
- if (MonkeyUtils.persistNullEmptyUndefined(value) && form?.controls[key]) {
174
- form?.controls[key].setValue(value);
175
- }
176
- });
177
- }
178
- this.formValues?.push(form);
179
- return null;
180
- });
181
- }
182
- }
183
- ngOnInit() {
184
- this._form = this.buildForm();
185
- this.fillValues();
186
- this.onHandleUpdateForm.subscribe(() => {
187
- this.fillValues();
188
- });
189
- }
190
- ngOnChanges() {
191
- if (!this._form) {
192
- this._form = this.buildForm();
193
- }
194
- this.fillValues();
195
- }
196
- }
197
- BaseDynamicArray.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BaseDynamicArray, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Directive });
198
- BaseDynamicArray.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BaseDynamicArray, selector: "[baseDynamicArray]", inputs: { onHandleSubmit: "onHandleSubmit", onHandleUpdateForm: "onHandleUpdateForm", self: "self", fields: "fields", data: "data", qtd: "qtd", disabled: "disabled" }, outputs: { onHandleSubmitFormReady: "onHandleSubmitFormReady" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
199
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BaseDynamicArray, decorators: [{
200
- type: Directive,
201
- args: [{
202
- selector: '[baseDynamicArray]'
203
- }]
204
- }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { onHandleSubmit: [{
205
- type: Input
206
- }], onHandleUpdateForm: [{
207
- type: Input
208
- }], onHandleSubmitFormReady: [{
209
- type: Output
210
- }], self: [{
211
- type: Input
212
- }], fields: [{
213
- type: Input
214
- }], data: [{
215
- type: Input
216
- }], qtd: [{
217
- type: Input
218
- }], disabled: [{
219
- type: Input
220
- }] } });
221
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1keW5hbWljLWFycmF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LWZyb250LWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UvYmFzZS1keW5hbWljLWFycmF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBcUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQUsvQyxNQUFNLE9BQWdCLGdCQUFpQixTQUFRLGFBQWE7SUF3QjFELFlBQW9CLEVBQWU7UUFDakMsS0FBSyxFQUFFLENBQUM7UUFEVSxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBdkIxQixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFekMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUU1Qyw0QkFBdUIsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUl0RSxXQUFNLEdBQXNCLEVBQUUsQ0FBQztRQUkvQixRQUFHLEdBQVcsQ0FBQyxDQUFDO1FBRWhCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFbkMsVUFBSyxHQUFxQixJQUFJLENBQUM7UUFFL0IsZ0RBQWdEO1FBQ2hELHFCQUFnQixHQUFVLEVBQUUsQ0FBQztRQUVyQix1QkFBa0IsR0FB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QUFVLEVBQUUsSUFBSSxDQUFDLElBQVcsQ0FBQyxDQUFDO2dCQUVuQyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQixJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNyQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDL0I7UUFDRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQzs7NkdBM05tQixnQkFBZ0I7aUdBQWhCLGdCQUFnQjsyRkFBaEIsZ0JBQWdCO2tCQUhyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7aUJBQy9CO2tHQUVVLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQUVJLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFFRSxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxHQUFHO3NCQUFYLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPbkNoYW5nZXMsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1vbmtleVV0aWxzIH0gZnJvbSAnbW9ua2V5LXN0eWxlLWd1aWRlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE1FQ1hGaWVsZENvbmZpZywgTUVDWEZpZWxkQ29uZmlnVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICcuL2Jhc2UtY29tcG9uZW50JztcclxuaW1wb3J0IHsgdmFsaWRhdG9ycyB9IGZyb20gJy4vYmFzZS12YWxpZGF0b3JzJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2Jhc2VEeW5hbWljQXJyYXldJ1xyXG59KVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUR5bmFtaWNBcnJheSBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgb25IYW5kbGVTdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQElucHV0KCkgb25IYW5kbGVVcGRhdGVGb3JtID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBvbkhhbmRsZVN1Ym1pdEZvcm1SZWFkeTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQElucHV0KCkgc2VsZjogYW55O1xyXG5cclxuICBASW5wdXQoKSBmaWVsZHM6IE1FQ1hGaWVsZENvbmZpZ1tdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIGRhdGE6IGFueTtcclxuXHJcbiAgQElucHV0KCkgcXRkOiBudW1iZXIgPSAxO1xyXG5cclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBfZm9ybTogRm9ybUdyb3VwIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBvYmplY3QtY3VybHktbmV3bGluZVxyXG4gIF9wbHVzVmFsaWRhdGlvbnM6IGFueVtdID0gW107XHJcblxyXG4gIHByaXZhdGUgY2hhbmdlc1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUludGVybmFsUGx1c1ZhbGlkYXRpb24oXHJcbiAgICBtYWluRmllbGQ6IGFueSxcclxuICAgIGRhdGE6IGFueVxyXG4gICkge1xyXG4gICAgY29uc3QgeyBvcGVyYXRvciwgZmllbGQsIHZhbHVlIH0gPSBtYWluRmllbGQ7XHJcbiAgICBjb25zdCB2YWxpZGF0b3JzOiBhbnkgPSB7XHJcbiAgICAgIGU6ICh2YWwxOiBhbnksIHZhbDI6IHN0cmluZykgPT4geyByZXR1cm4gdmFsMSA9PT0gdmFsMjsgfSxcclxuICAgICAgbHQ6ICh2YWwxOiBhbnksIHZhbDI6IHN0cmluZykgPT4geyByZXR1cm4gdmFsMSA8IHZhbDI7IH0sXHJcbiAgICAgIGd0OiAodmFsMTogYW55LCB2YWwyOiBzdHJpbmcpID0+IHsgcmV0dXJuIHZhbDEgPiB2YWwyOyB9XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB2YWxpZGF0b3JzW29wZXJhdG9yXShkYXRhPy5bZmllbGRdIHx8IGRhdGEsIHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFrZUludGVybmFsUGx1c1ZhbGlkYXRpb24oXHJcbiAgICBkYXRhOiBhbnksXHJcbiAgICBzb3VyY2VGaWVsZDogc3RyaW5nLFxyXG4gICAgc2V0dGluZ3M6IGFueSxcclxuICAgIHJvd0luZGV4OiBudW1iZXJcclxuICApIHtcclxuICAgIGNvbnN0IGNoYW5nZUZpZWxkcyA9IChzaG93OiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNhdmVkID0gWy4uLnRoaXMuZmllbGRzXTtcclxuXHJcbiAgICAgIHNhdmVkLm1hcCgodmFsKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsU2F2ZWQgPSB7XHJcbiAgICAgICAgICAuLi52YWxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICh2YWwubmFtZSA9PT0gc291cmNlRmllbGQpIHtcclxuICAgICAgICAgIHRoaXMuX3BsdXNWYWxpZGF0aW9uc1tyb3dJbmRleF0gPSB7XHJcbiAgICAgICAgICAgIFtzb3VyY2VGaWVsZF06IHtcclxuICAgICAgICAgICAgICAuLi52YWxTYXZlZCxcclxuICAgICAgICAgICAgICBhbHdheXNTaG93OiBzaG93XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZU9uZUNvbnRyb2wodmFsLm5hbWUsIHRoaXMuZm9ybVZhbHVlcz8uY29udHJvbHNbcm93SW5kZXhdLCBzaG93KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5fcGx1c1ZhbGlkYXRpb25zW3Jvd0luZGV4XSA9IHtcclxuICAgICAgICAgICAgLi4udmFsU2F2ZWRcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgdmFsaWRhdGVkID0gdGhpcy5oYW5kbGVJbnRlcm5hbFBsdXNWYWxpZGF0aW9uKHNldHRpbmdzLCBkYXRhKTtcclxuICAgIGNoYW5nZUZpZWxkcyh2YWxpZGF0ZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVPbmVDb250cm9sKGZpZWxkTmFtZTogc3RyaW5nLCBjdHJsOiBhbnksIGNyZWF0ZSA9IHRydWUpIHtcclxuICAgIGNvbnN0IHsgZmllbGRzIH0gPSB0aGlzO1xyXG4gICAgaWYgKCFmaWVsZHMpIHJldHVybjtcclxuXHJcbiAgICBmaWVsZHMuZm9yRWFjaCgoZmllbGQ6IE1FQ1hGaWVsZENvbmZpZykgPT4ge1xyXG4gICAgICBjb25zdCB7IGZpZWxkVHlwZSwgdmFsaWRhdGlvbnMsIG5hbWUsIGRpc2FibGVkIH0gPSBmaWVsZDtcclxuICAgICAgaWYgKG5hbWUgIT09IGZpZWxkTmFtZSkgcmV0dXJuO1xyXG4gICAgICBsZXQgeyB2YWx1ZSB9ID0gZmllbGQ7XHJcbiAgICAgIGlmIChmaWVsZFR5cGUgPT09ICdidXR0b24nKSByZXR1cm47XHJcbiAgICAgIGlmIChmaWVsZFR5cGUgPT09ICdyYWRpb2J1dHRvbicgfHwgZmllbGRUeXBlID09PSAnY2hlY2tib3gnIHx8IGZpZWxkVHlwZSA9PT0gJ3NlbGVjdCcpIHtcclxuICAgICAgICB2YWx1ZSA9ICcnO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjcmVhdGUpIHtcclxuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mYi5jb250cm9sKHZhbHVlLCB0aGlzLmJpbmRWYWxpZGF0aW9ucyh2YWxpZGF0aW9ucyB8fCBbXSkpO1xyXG4gICAgICAgIGlmIChkaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkKSBjb250cm9sLmRpc2FibGUoKTtcclxuICAgICAgICBjdHJsLmFkZENvbnRyb2wobmFtZSwgY29udHJvbCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY3RybC5yZW1vdmVDb250cm9sKG5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlQ29udHJvbChkYXRhPzogYW55KSB7XHJcbiAgICBjb25zdCB7IGZpZWxkcyB9ID0gdGhpcztcclxuICAgIGlmICghZmllbGRzKSByZXR1cm4gbnVsbDtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBvYmplY3QtY3VybHktbmV3bGluZVxyXG4gICAgY29uc3QgZ3JvdXAgPSB0aGlzLmZiLmdyb3VwKHt9KTtcclxuICAgIGZpZWxkcy5mb3JFYWNoKChmaWVsZDogTUVDWEZpZWxkQ29uZmlnKSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgZmllbGRUeXBlLCB2YWxpZGF0aW9ucywgbmFtZSwgZGlzYWJsZWQsIGFsd2F5c1Nob3cgfSA9IGZpZWxkO1xyXG4gICAgICBsZXQgeyB2YWx1ZSB9ID0gZmllbGQ7XHJcbiAgICAgIGlmIChmaWVsZC5hbHdheXNTaG93UGx1c1ZhbGlkYXRpb24pIHtcclxuICAgICAgICBpZiAoIXRoaXMuaGFuZGxlSW50ZXJuYWxQbHVzVmFsaWRhdGlvbihmaWVsZC5hbHdheXNTaG93UGx1c1ZhbGlkYXRpb24sIGRhdGEpKSByZXR1cm47XHJcbiAgICAgIH0gZWxzZSBpZiAoIWFsd2F5c1Nob3cpIHJldHVybjtcclxuICAgICAgaWYgKGZpZWxkVHlwZSA9PT0gJ2J1dHRvbicpIHJldHVybjtcclxuICAgICAgaWYgKGZpZWxkVHlwZSA9PT0gJ3JhZGlvYnV0dG9uJyB8fCBmaWVsZFR5cGUgPT09ICdjaGVja2JveCcgfHwgZmllbGRUeXBlID09PSAnc2VsZWN0Jykge1xyXG4gICAgICAgIHZhbHVlID0gJyc7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZmIuY29udHJvbCh2YWx1ZSwgdGhpcy5iaW5kVmFsaWRhdGlvbnModmFsaWRhdGlvbnMgfHwgW10pKTtcclxuICAgICAgaWYgKGRpc2FibGVkIHx8IHRoaXMuZGlzYWJsZWQpIGNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICBncm91cC5hZGRDb250cm9sKG5hbWUgYXMgc3RyaW5nLCBjb250cm9sKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBncm91cDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYmluZFZhbGlkYXRpb25zKHZhbGlkYXRpb25zOiBNRUNYRmllbGRDb25maWdWYWxpZGF0b3JbXSkge1xyXG4gICAgaWYgKHZhbGlkYXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgdmFsaWRMaXN0OiBhbnlbXSA9IFtdO1xyXG4gICAgICB2YWxpZGF0aW9ucy5mb3JFYWNoKCh2YWxpZDogTUVDWEZpZWxkQ29uZmlnVmFsaWRhdG9yKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsaWRhdGVkID0gdmFsaWQucGFyYW1cclxuICAgICAgICAgID8gdmFsaWRhdG9yc1t2YWxpZC5uYW1lXSh2YWxpZC5wYXJhbSlcclxuICAgICAgICAgIDogdmFsaWRhdG9yc1t2YWxpZC5uYW1lXTtcclxuICAgICAgICB2YWxpZExpc3QucHVzaCh2YWxpZGF0ZWQpO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIFZhbGlkYXRvcnMuY29tcG9zZSh2YWxpZExpc3QpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkRm9ybSgpOiBGb3JtR3JvdXAge1xyXG4gICAgY29uc3QgZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBmaWVsZHM6IHRoaXMuZmIuYXJyYXkoW10pXHJcbiAgICB9KTtcclxuXHJcbiAgICBmb3JtPy5jb250cm9scy5maWVsZHM/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKF8pID0+IHtcclxuICAgICAgdGhpcy53YXRjaEZvckNoYW5nZXMoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBmb3JtO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB3YXRjaEZvckNoYW5nZXMoKSB7XHJcbiAgICBjb25zdCB7IGZpZWxkcywgY2hhbmdlc1Vuc3Vic2NyaWJlIH0gPSB0aGlzO1xyXG4gICAgY2hhbmdlc1Vuc3Vic2NyaWJlLm5leHQoKTtcclxuXHJcbiAgICB0aGlzLmZvcm1WYWx1ZXM/LmNvbnRyb2xzPy5tYXAoKGNvbnRyb2w6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICBmaWVsZHMuZm9yRWFjaCgoZmllbGRDb25maWc6IE1FQ1hGaWVsZENvbmZpZykgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgbmFtZSwgYWx3YXlzU2hvd1BsdXNWYWxpZGF0aW9uIH0gPSBmaWVsZENvbmZpZztcclxuICAgICAgICBpZiAoIWFsd2F5c1Nob3dQbHVzVmFsaWRhdGlvbikgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IHsgZmllbGQgfSA9IGFsd2F5c1Nob3dQbHVzVmFsaWRhdGlvbjtcclxuICAgICAgICBpZiAoZmllbGQpIHtcclxuICAgICAgICAgIGNvbnRyb2wuY29udHJvbHNbZmllbGRdPy52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICAgICAgICAgdGFrZVVudGlsKGNoYW5nZXNVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoXzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubWFrZUludGVybmFsUGx1c1ZhbGlkYXRpb24oXHJcbiAgICAgICAgICAgICAgXyxcclxuICAgICAgICAgICAgICBuYW1lIGFzIHN0cmluZyxcclxuICAgICAgICAgICAgICBhbHdheXNTaG93UGx1c1ZhbGlkYXRpb24sXHJcbiAgICAgICAgICAgICAgaW5kZXhcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZm9ybUJhc2UgPSAoKSA9PiB7XHJcbiAgICAvLyByZXR1cm4gdGhpcy5mYi5ncm91cCh0aGlzLmNyZWF0ZUNvbnRyb2woKSk7XHJcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVDb250cm9sKCk7XHJcbiAgfTtcclxuXHJcbiAgcHVibGljIGdldCBmb3JtVmFsdWVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm0gPyAodGhpcy5fZm9ybS5nZXQoJ2ZpZWxkcycpIGFzIEZvcm1BcnJheSkgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbGxWYWx1ZXMoKSB7XHJcbiAgICBjb25zdCB7IGRhdGEsIHF0ZCB9ID0gdGhpcztcclxuICAgIGlmICgoIXRoaXMuX2Zvcm0pICYmIHF0ZCkgcmV0dXJuO1xyXG4gICAgaWYgKHF0ZCA+IDApIHtcclxuICAgICAgQXJyYXk8YW55PihxdGQpXHJcbiAgICAgICAgLmZpbGwobnVsbClcclxuICAgICAgICAubWFwKChfLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGZvcm0gPSB0aGlzLmNyZWF0ZUNvbnRyb2woKTtcclxuICAgICAgICAgIGlmIChkYXRhICYmIGRhdGFbaW5kZXhdKSB7XHJcbiAgICAgICAgICAgIGZvcm0gPSB0aGlzLmNyZWF0ZUNvbnRyb2woZGF0YVtpbmRleF0pO1xyXG4gICAgICAgICAgICBjb25zdCBoYW5kbGVkRGF0YSA9IGRhdGFbaW5kZXhdO1xyXG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhoYW5kbGVkRGF0YSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKE1vbmtleVV0aWxzLnBlcnNpc3ROdWxsRW1wdHlVbmRlZmluZWQodmFsdWUpICYmIGZvcm0/LmNvbnRyb2xzW2tleV0pIHtcclxuICAgICAgICAgICAgICAgIGZvcm0/LmNvbnRyb2xzW2tleV0uc2V0VmFsdWUodmFsdWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmZvcm1WYWx1ZXM/LnB1c2goZm9ybSBhcyBhbnkpO1xyXG5cclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLl9mb3JtID0gdGhpcy5idWlsZEZvcm0oKTtcclxuICAgIHRoaXMuZmlsbFZhbHVlcygpO1xyXG5cclxuICAgIHRoaXMub25IYW5kbGVVcGRhdGVGb3JtLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZmlsbFZhbHVlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIGlmICghdGhpcy5fZm9ybSkge1xyXG4gICAgICB0aGlzLl9mb3JtID0gdGhpcy5idWlsZEZvcm0oKTtcclxuICAgIH1cclxuICAgIHRoaXMuZmlsbFZhbHVlcygpO1xyXG4gIH1cclxufVxyXG4iXX0=
1
+ import { Directive, EventEmitter, Input, Output } from '@angular/core';
2
+ import { Validators } from '@angular/forms';
3
+ import { MonkeyUtils } from 'monkey-style-guide';
4
+ import { Subject } from 'rxjs';
5
+ import { takeUntil } from 'rxjs/operators';
6
+ import { BaseComponent } from './base-component';
7
+ import { validators } from './base-validators';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/forms";
10
+ export class BaseDynamicArray extends BaseComponent {
11
+ constructor(fb) {
12
+ super();
13
+ this.fb = fb;
14
+ this.onHandleSubmit = new EventEmitter();
15
+ this.onHandleUpdateForm = new EventEmitter();
16
+ this.onHandleSubmitFormReady = new EventEmitter();
17
+ this.fields = [];
18
+ this.qtd = 1;
19
+ this.disabled = false;
20
+ this._form = null;
21
+ // eslint-disable-next-line object-curly-newline
22
+ this._plusValidations = [];
23
+ this.changesUnsubscribe = new Subject();
24
+ this.formBase = () => {
25
+ // return this.fb.group(this.createControl());
26
+ return this.createControl();
27
+ };
28
+ }
29
+ handleInternalPlusValidation(mainField, data) {
30
+ const { operator, field, value } = mainField;
31
+ const validators = {
32
+ e: (val1, val2) => { return val1 === val2; },
33
+ lt: (val1, val2) => { return val1 < val2; },
34
+ gt: (val1, val2) => { return val1 > val2; }
35
+ };
36
+ return validators[operator](data?.[field] || data, value);
37
+ }
38
+ makeInternalPlusValidation(data, sourceField, settings, rowIndex) {
39
+ const changeFields = (show) => {
40
+ const saved = [...this.fields];
41
+ saved.map((val) => {
42
+ const valSaved = {
43
+ ...val
44
+ };
45
+ if (val.name === sourceField) {
46
+ this._plusValidations[rowIndex] = {
47
+ [sourceField]: {
48
+ ...valSaved,
49
+ alwaysShow: show
50
+ }
51
+ };
52
+ this.createOneControl(val.name, this.formValues?.controls[rowIndex], show);
53
+ }
54
+ else {
55
+ this._plusValidations[rowIndex] = {
56
+ ...valSaved
57
+ };
58
+ }
59
+ return null;
60
+ });
61
+ };
62
+ const validated = this.handleInternalPlusValidation(settings, data);
63
+ changeFields(validated);
64
+ }
65
+ createOneControl(fieldName, ctrl, create = true) {
66
+ const { fields } = this;
67
+ if (!fields)
68
+ return;
69
+ fields.forEach((field) => {
70
+ const { fieldType, validations, name, disabled } = field;
71
+ if (name !== fieldName)
72
+ return;
73
+ let { value } = field;
74
+ if (fieldType === 'button')
75
+ return;
76
+ if (fieldType === 'radiobutton' || fieldType === 'checkbox' || fieldType === 'select') {
77
+ value = '';
78
+ }
79
+ if (create) {
80
+ const control = this.fb.control(value, this.bindValidations(validations || []));
81
+ if (disabled || this.disabled)
82
+ control.disable();
83
+ ctrl.addControl(name, control);
84
+ }
85
+ else {
86
+ ctrl.removeControl(name);
87
+ }
88
+ });
89
+ }
90
+ createControl(data) {
91
+ const { fields } = this;
92
+ if (!fields)
93
+ return null;
94
+ // eslint-disable-next-line object-curly-newline
95
+ const group = this.fb.group({});
96
+ fields.forEach((field) => {
97
+ const { fieldType, validations, name, disabled, alwaysShow } = field;
98
+ let { value } = field;
99
+ if (field.alwaysShowPlusValidation) {
100
+ if (!this.handleInternalPlusValidation(field.alwaysShowPlusValidation, data))
101
+ return;
102
+ }
103
+ else if (!alwaysShow)
104
+ return;
105
+ if (fieldType === 'button')
106
+ return;
107
+ if (fieldType === 'radiobutton' || fieldType === 'checkbox' || fieldType === 'select') {
108
+ value = '';
109
+ }
110
+ const control = this.fb.control(value, this.bindValidations(validations || []));
111
+ if (disabled || this.disabled)
112
+ control.disable();
113
+ group.addControl(name, control);
114
+ });
115
+ return group;
116
+ }
117
+ bindValidations(validations) {
118
+ if (validations.length > 0) {
119
+ const validList = [];
120
+ validations.forEach((valid) => {
121
+ const validated = valid.param
122
+ ? validators[valid.name](valid.param)
123
+ : validators[valid.name];
124
+ validList.push(validated);
125
+ });
126
+ return Validators.compose(validList);
127
+ }
128
+ return null;
129
+ }
130
+ buildForm() {
131
+ const form = this.fb.group({
132
+ fields: this.fb.array([])
133
+ });
134
+ form?.controls.fields?.valueChanges.subscribe((_) => {
135
+ this.watchForChanges();
136
+ });
137
+ return form;
138
+ }
139
+ watchForChanges() {
140
+ const { fields, changesUnsubscribe } = this;
141
+ changesUnsubscribe.next();
142
+ this.formValues?.controls?.map((control, index) => {
143
+ fields.forEach((fieldConfig) => {
144
+ const { name, alwaysShowPlusValidation } = fieldConfig;
145
+ if (!alwaysShowPlusValidation)
146
+ return;
147
+ const { field } = alwaysShowPlusValidation;
148
+ if (field) {
149
+ control.controls[field]?.valueChanges.pipe(takeUntil(changesUnsubscribe)).subscribe((_) => {
150
+ this.makeInternalPlusValidation(_, name, alwaysShowPlusValidation, index);
151
+ });
152
+ }
153
+ });
154
+ return null;
155
+ });
156
+ }
157
+ get formValues() {
158
+ return this._form ? this._form.get('fields') : null;
159
+ }
160
+ fillValues() {
161
+ const { data, qtd } = this;
162
+ if ((!this._form) && qtd)
163
+ return;
164
+ if (qtd > 0) {
165
+ Array(qtd)
166
+ .fill(null)
167
+ .map((_, index) => {
168
+ let form = this.createControl();
169
+ if (data && data[index]) {
170
+ form = this.createControl(data[index]);
171
+ const handledData = data[index];
172
+ Object.entries(handledData).forEach(([key, value]) => {
173
+ if (MonkeyUtils.persistNullEmptyUndefined(value) && form?.controls[key]) {
174
+ form?.controls[key].setValue(value);
175
+ }
176
+ });
177
+ }
178
+ this.formValues?.push(form);
179
+ return null;
180
+ });
181
+ }
182
+ }
183
+ ngOnInit() {
184
+ this._form = this.buildForm();
185
+ this.fillValues();
186
+ this.onHandleUpdateForm.subscribe(() => {
187
+ this.fillValues();
188
+ });
189
+ }
190
+ ngOnChanges() {
191
+ if (!this._form) {
192
+ this._form = this.buildForm();
193
+ }
194
+ this.fillValues();
195
+ }
196
+ }
197
+ BaseDynamicArray.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BaseDynamicArray, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Directive });
198
+ BaseDynamicArray.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BaseDynamicArray, selector: "[baseDynamicArray]", inputs: { onHandleSubmit: "onHandleSubmit", onHandleUpdateForm: "onHandleUpdateForm", self: "self", fields: "fields", data: "data", qtd: "qtd", disabled: "disabled" }, outputs: { onHandleSubmitFormReady: "onHandleSubmitFormReady" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
199
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BaseDynamicArray, decorators: [{
200
+ type: Directive,
201
+ args: [{
202
+ selector: '[baseDynamicArray]'
203
+ }]
204
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { onHandleSubmit: [{
205
+ type: Input
206
+ }], onHandleUpdateForm: [{
207
+ type: Input
208
+ }], onHandleSubmitFormReady: [{
209
+ type: Output
210
+ }], self: [{
211
+ type: Input
212
+ }], fields: [{
213
+ type: Input
214
+ }], data: [{
215
+ type: Input
216
+ }], qtd: [{
217
+ type: Input
218
+ }], disabled: [{
219
+ type: Input
220
+ }] } });
221
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1keW5hbWljLWFycmF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LWZyb250LWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UvYmFzZS1keW5hbWljLWFycmF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBcUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQUsvQyxNQUFNLE9BQWdCLGdCQUFpQixTQUFRLGFBQWE7SUF3QjFELFlBQW9CLEVBQWU7UUFDakMsS0FBSyxFQUFFLENBQUM7UUFEVSxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBdkIxQixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFekMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUU1Qyw0QkFBdUIsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUl0RSxXQUFNLEdBQXNCLEVBQUUsQ0FBQztRQUkvQixRQUFHLEdBQVcsQ0FBQyxDQUFDO1FBRWhCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFbkMsVUFBSyxHQUFxQixJQUFJLENBQUM7UUFFL0IsZ0RBQWdEO1FBQ2hELHFCQUFnQixHQUFVLEVBQUUsQ0FBQztRQUVyQix1QkFBa0IsR0FB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QUFVLEVBQUUsSUFBSSxDQUFDLElBQVcsQ0FBQyxDQUFDO2dCQUVuQyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQixJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNyQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDL0I7UUFDRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQzs7NkdBM05tQixnQkFBZ0I7aUdBQWhCLGdCQUFnQjsyRkFBaEIsZ0JBQWdCO2tCQUhyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7aUJBQy9CO2tHQUVVLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQUVJLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFFRSxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxHQUFHO3NCQUFYLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPbkNoYW5nZXMsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTW9ua2V5VXRpbHMgfSBmcm9tICdtb25rZXktc3R5bGUtZ3VpZGUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTUVDWEZpZWxkQ29uZmlnLCBNRUNYRmllbGRDb25maWdWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICcuL2Jhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IHZhbGlkYXRvcnMgfSBmcm9tICcuL2Jhc2UtdmFsaWRhdG9ycyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tiYXNlRHluYW1pY0FycmF5XSdcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUR5bmFtaWNBcnJheSBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIG9uSGFuZGxlU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQElucHV0KCkgb25IYW5kbGVVcGRhdGVGb3JtID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpIG9uSGFuZGxlU3VibWl0Rm9ybVJlYWR5OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBJbnB1dCgpIHNlbGY6IGFueTtcblxuICBASW5wdXQoKSBmaWVsZHM6IE1FQ1hGaWVsZENvbmZpZ1tdID0gW107XG5cbiAgQElucHV0KCkgZGF0YTogYW55O1xuXG4gIEBJbnB1dCgpIHF0ZDogbnVtYmVyID0gMTtcblxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIF9mb3JtOiBGb3JtR3JvdXAgfCBudWxsID0gbnVsbDtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgb2JqZWN0LWN1cmx5LW5ld2xpbmVcbiAgX3BsdXNWYWxpZGF0aW9uczogYW55W10gPSBbXTtcblxuICBwcml2YXRlIGNoYW5nZXNVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVJbnRlcm5hbFBsdXNWYWxpZGF0aW9uKFxuICAgIG1haW5GaWVsZDogYW55LFxuICAgIGRhdGE6IGFueVxuICApIHtcbiAgICBjb25zdCB7IG9wZXJhdG9yLCBmaWVsZCwgdmFsdWUgfSA9IG1haW5GaWVsZDtcbiAgICBjb25zdCB2YWxpZGF0b3JzOiBhbnkgPSB7XG4gICAgICBlOiAodmFsMTogYW55LCB2YWwyOiBzdHJpbmcpID0+IHsgcmV0dXJuIHZhbDEgPT09IHZhbDI7IH0sXG4gICAgICBsdDogKHZhbDE6IGFueSwgdmFsMjogc3RyaW5nKSA9PiB7IHJldHVybiB2YWwxIDwgdmFsMjsgfSxcbiAgICAgIGd0OiAodmFsMTogYW55LCB2YWwyOiBzdHJpbmcpID0+IHsgcmV0dXJuIHZhbDEgPiB2YWwyOyB9XG4gICAgfTtcblxuICAgIHJldHVybiB2YWxpZGF0b3JzW29wZXJhdG9yXShkYXRhPy5bZmllbGRdIHx8IGRhdGEsIHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFrZUludGVybmFsUGx1c1ZhbGlkYXRpb24oXG4gICAgZGF0YTogYW55LFxuICAgIHNvdXJjZUZpZWxkOiBzdHJpbmcsXG4gICAgc2V0dGluZ3M6IGFueSxcbiAgICByb3dJbmRleDogbnVtYmVyXG4gICkge1xuICAgIGNvbnN0IGNoYW5nZUZpZWxkcyA9IChzaG93OiBib29sZWFuKSA9PiB7XG4gICAgICBjb25zdCBzYXZlZCA9IFsuLi50aGlzLmZpZWxkc107XG5cbiAgICAgIHNhdmVkLm1hcCgodmFsKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbFNhdmVkID0ge1xuICAgICAgICAgIC4uLnZhbFxuICAgICAgICB9O1xuICAgICAgICBpZiAodmFsLm5hbWUgPT09IHNvdXJjZUZpZWxkKSB7XG4gICAgICAgICAgdGhpcy5fcGx1c1ZhbGlkYXRpb25zW3Jvd0luZGV4XSA9IHtcbiAgICAgICAgICAgIFtzb3VyY2VGaWVsZF06IHtcbiAgICAgICAgICAgICAgLi4udmFsU2F2ZWQsXG4gICAgICAgICAgICAgIGFsd2F5c1Nob3c6IHNob3dcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMuY3JlYXRlT25lQ29udHJvbCh2YWwubmFtZSwgdGhpcy5mb3JtVmFsdWVzPy5jb250cm9sc1tyb3dJbmRleF0sIHNob3cpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX3BsdXNWYWxpZGF0aW9uc1tyb3dJbmRleF0gPSB7XG4gICAgICAgICAgICAuLi52YWxTYXZlZFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3QgdmFsaWRhdGVkID0gdGhpcy5oYW5kbGVJbnRlcm5hbFBsdXNWYWxpZGF0aW9uKHNldHRpbmdzLCBkYXRhKTtcbiAgICBjaGFuZ2VGaWVsZHModmFsaWRhdGVkKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT25lQ29udHJvbChmaWVsZE5hbWU6IHN0cmluZywgY3RybDogYW55LCBjcmVhdGUgPSB0cnVlKSB7XG4gICAgY29uc3QgeyBmaWVsZHMgfSA9IHRoaXM7XG4gICAgaWYgKCFmaWVsZHMpIHJldHVybjtcblxuICAgIGZpZWxkcy5mb3JFYWNoKChmaWVsZDogTUVDWEZpZWxkQ29uZmlnKSA9PiB7XG4gICAgICBjb25zdCB7IGZpZWxkVHlwZSwgdmFsaWRhdGlvbnMsIG5hbWUsIGRpc2FibGVkIH0gPSBmaWVsZDtcbiAgICAgIGlmIChuYW1lICE9PSBmaWVsZE5hbWUpIHJldHVybjtcbiAgICAgIGxldCB7IHZhbHVlIH0gPSBmaWVsZDtcbiAgICAgIGlmIChmaWVsZFR5cGUgPT09ICdidXR0b24nKSByZXR1cm47XG4gICAgICBpZiAoZmllbGRUeXBlID09PSAncmFkaW9idXR0b24nIHx8IGZpZWxkVHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBmaWVsZFR5cGUgPT09ICdzZWxlY3QnKSB7XG4gICAgICAgIHZhbHVlID0gJyc7XG4gICAgICB9XG4gICAgICBpZiAoY3JlYXRlKSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZiLmNvbnRyb2wodmFsdWUsIHRoaXMuYmluZFZhbGlkYXRpb25zKHZhbGlkYXRpb25zIHx8IFtdKSk7XG4gICAgICAgIGlmIChkaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkKSBjb250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgY3RybC5hZGRDb250cm9sKG5hbWUsIGNvbnRyb2wpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3RybC5yZW1vdmVDb250cm9sKG5hbWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDb250cm9sKGRhdGE/OiBhbnkpIHtcbiAgICBjb25zdCB7IGZpZWxkcyB9ID0gdGhpcztcbiAgICBpZiAoIWZpZWxkcykgcmV0dXJuIG51bGw7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG9iamVjdC1jdXJseS1uZXdsaW5lXG4gICAgY29uc3QgZ3JvdXAgPSB0aGlzLmZiLmdyb3VwKHt9KTtcbiAgICBmaWVsZHMuZm9yRWFjaCgoZmllbGQ6IE1FQ1hGaWVsZENvbmZpZykgPT4ge1xuICAgICAgY29uc3QgeyBmaWVsZFR5cGUsIHZhbGlkYXRpb25zLCBuYW1lLCBkaXNhYmxlZCwgYWx3YXlzU2hvdyB9ID0gZmllbGQ7XG4gICAgICBsZXQgeyB2YWx1ZSB9ID0gZmllbGQ7XG4gICAgICBpZiAoZmllbGQuYWx3YXlzU2hvd1BsdXNWYWxpZGF0aW9uKSB7XG4gICAgICAgIGlmICghdGhpcy5oYW5kbGVJbnRlcm5hbFBsdXNWYWxpZGF0aW9uKGZpZWxkLmFsd2F5c1Nob3dQbHVzVmFsaWRhdGlvbiwgZGF0YSkpIHJldHVybjtcbiAgICAgIH0gZWxzZSBpZiAoIWFsd2F5c1Nob3cpIHJldHVybjtcbiAgICAgIGlmIChmaWVsZFR5cGUgPT09ICdidXR0b24nKSByZXR1cm47XG4gICAgICBpZiAoZmllbGRUeXBlID09PSAncmFkaW9idXR0b24nIHx8IGZpZWxkVHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBmaWVsZFR5cGUgPT09ICdzZWxlY3QnKSB7XG4gICAgICAgIHZhbHVlID0gJyc7XG4gICAgICB9XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mYi5jb250cm9sKHZhbHVlLCB0aGlzLmJpbmRWYWxpZGF0aW9ucyh2YWxpZGF0aW9ucyB8fCBbXSkpO1xuICAgICAgaWYgKGRpc2FibGVkIHx8IHRoaXMuZGlzYWJsZWQpIGNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgZ3JvdXAuYWRkQ29udHJvbChuYW1lIGFzIHN0cmluZywgY29udHJvbCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ3JvdXA7XG4gIH1cblxuICBwcml2YXRlIGJpbmRWYWxpZGF0aW9ucyh2YWxpZGF0aW9uczogTUVDWEZpZWxkQ29uZmlnVmFsaWRhdG9yW10pIHtcbiAgICBpZiAodmFsaWRhdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgdmFsaWRMaXN0OiBhbnlbXSA9IFtdO1xuICAgICAgdmFsaWRhdGlvbnMuZm9yRWFjaCgodmFsaWQ6IE1FQ1hGaWVsZENvbmZpZ1ZhbGlkYXRvcikgPT4ge1xuICAgICAgICBjb25zdCB2YWxpZGF0ZWQgPSB2YWxpZC5wYXJhbVxuICAgICAgICAgID8gdmFsaWRhdG9yc1t2YWxpZC5uYW1lXSh2YWxpZC5wYXJhbSlcbiAgICAgICAgICA6IHZhbGlkYXRvcnNbdmFsaWQubmFtZV07XG4gICAgICAgIHZhbGlkTGlzdC5wdXNoKHZhbGlkYXRlZCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBWYWxpZGF0b3JzLmNvbXBvc2UodmFsaWRMaXN0KTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRm9ybSgpOiBGb3JtR3JvdXAge1xuICAgIGNvbnN0IGZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGZpZWxkczogdGhpcy5mYi5hcnJheShbXSlcbiAgICB9KTtcblxuICAgIGZvcm0/LmNvbnRyb2xzLmZpZWxkcz8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgdGhpcy53YXRjaEZvckNoYW5nZXMoKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBmb3JtO1xuICB9XG5cbiAgcHJpdmF0ZSB3YXRjaEZvckNoYW5nZXMoKSB7XG4gICAgY29uc3QgeyBmaWVsZHMsIGNoYW5nZXNVbnN1YnNjcmliZSB9ID0gdGhpcztcbiAgICBjaGFuZ2VzVW5zdWJzY3JpYmUubmV4dCgpO1xuXG4gICAgdGhpcy5mb3JtVmFsdWVzPy5jb250cm9scz8ubWFwKChjb250cm9sOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGZpZWxkcy5mb3JFYWNoKChmaWVsZENvbmZpZzogTUVDWEZpZWxkQ29uZmlnKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgbmFtZSwgYWx3YXlzU2hvd1BsdXNWYWxpZGF0aW9uIH0gPSBmaWVsZENvbmZpZztcbiAgICAgICAgaWYgKCFhbHdheXNTaG93UGx1c1ZhbGlkYXRpb24pIHJldHVybjtcbiAgICAgICAgY29uc3QgeyBmaWVsZCB9ID0gYWx3YXlzU2hvd1BsdXNWYWxpZGF0aW9uO1xuICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICBjb250cm9sLmNvbnRyb2xzW2ZpZWxkXT8udmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwoY2hhbmdlc1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKChfOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMubWFrZUludGVybmFsUGx1c1ZhbGlkYXRpb24oXG4gICAgICAgICAgICAgIF8sXG4gICAgICAgICAgICAgIG5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICBhbHdheXNTaG93UGx1c1ZhbGlkYXRpb24sXG4gICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGZvcm1CYXNlID0gKCkgPT4ge1xuICAgIC8vIHJldHVybiB0aGlzLmZiLmdyb3VwKHRoaXMuY3JlYXRlQ29udHJvbCgpKTtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVDb250cm9sKCk7XG4gIH07XG5cbiAgcHVibGljIGdldCBmb3JtVmFsdWVzKCkge1xuICAgIHJldHVybiB0aGlzLl9mb3JtID8gKHRoaXMuX2Zvcm0uZ2V0KCdmaWVsZHMnKSBhcyBGb3JtQXJyYXkpIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBmaWxsVmFsdWVzKCkge1xuICAgIGNvbnN0IHsgZGF0YSwgcXRkIH0gPSB0aGlzO1xuICAgIGlmICgoIXRoaXMuX2Zvcm0pICYmIHF0ZCkgcmV0dXJuO1xuICAgIGlmIChxdGQgPiAwKSB7XG4gICAgICBBcnJheTxhbnk+KHF0ZClcbiAgICAgICAgLmZpbGwobnVsbClcbiAgICAgICAgLm1hcCgoXywgaW5kZXgpID0+IHtcbiAgICAgICAgICBsZXQgZm9ybSA9IHRoaXMuY3JlYXRlQ29udHJvbCgpO1xuICAgICAgICAgIGlmIChkYXRhICYmIGRhdGFbaW5kZXhdKSB7XG4gICAgICAgICAgICBmb3JtID0gdGhpcy5jcmVhdGVDb250cm9sKGRhdGFbaW5kZXhdKTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZWREYXRhID0gZGF0YVtpbmRleF07XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhoYW5kbGVkRGF0YSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChNb25rZXlVdGlscy5wZXJzaXN0TnVsbEVtcHR5VW5kZWZpbmVkKHZhbHVlKSAmJiBmb3JtPy5jb250cm9sc1trZXldKSB7XG4gICAgICAgICAgICAgICAgZm9ybT8uY29udHJvbHNba2V5XS5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmZvcm1WYWx1ZXM/LnB1c2goZm9ybSBhcyBhbnkpO1xuXG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX2Zvcm0gPSB0aGlzLmJ1aWxkRm9ybSgpO1xuICAgIHRoaXMuZmlsbFZhbHVlcygpO1xuXG4gICAgdGhpcy5vbkhhbmRsZVVwZGF0ZUZvcm0uc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZmlsbFZhbHVlcygpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgaWYgKCF0aGlzLl9mb3JtKSB7XG4gICAgICB0aGlzLl9mb3JtID0gdGhpcy5idWlsZEZvcm0oKTtcbiAgICB9XG4gICAgdGhpcy5maWxsVmFsdWVzKCk7XG4gIH1cbn1cbiJdfQ==