@qbs-origin/origin-form 0.5.0

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 (182) hide show
  1. package/README.md +24 -0
  2. package/esm2022/lib/action-step-handler.mjs +163 -0
  3. package/esm2022/lib/auth-client.service.mjs +69 -0
  4. package/esm2022/lib/enums/label.keys.mjs +721 -0
  5. package/esm2022/lib/form-css.helper.mjs +367 -0
  6. package/esm2022/lib/formly/baseFormlyControlComponent.mjs +52 -0
  7. package/esm2022/lib/formly/baseFormlyStepComponent.mjs +59 -0
  8. package/esm2022/lib/formly/custom-section-separator.component.mjs +32 -0
  9. package/esm2022/lib/formly/form-section-separator.component.mjs +36 -0
  10. package/esm2022/lib/formly/formly-action.mjs +56 -0
  11. package/esm2022/lib/formly/formly-checkbox/formly-checkbox.component.mjs +52 -0
  12. package/esm2022/lib/formly/formly-dictionary-dropdown-tree/formly-dictionary-dropdown-tree.component.mjs +261 -0
  13. package/esm2022/lib/formly/formly-download-documents/formly-download-documents.component.mjs +126 -0
  14. package/esm2022/lib/formly/formly-enrol-card/formly-enrol-card.component.mjs +120 -0
  15. package/esm2022/lib/formly/formly-field-stepper/formly-field-stepper.component.mjs +762 -0
  16. package/esm2022/lib/formly/formly-generate-documents/formly-generate-documents.component.mjs +57 -0
  17. package/esm2022/lib/formly/formly-identification.component.mjs +84 -0
  18. package/esm2022/lib/formly/formly-open-banking/formly-open-banking.component.mjs +590 -0
  19. package/esm2022/lib/formly/formly-paragraph/formly-paragraph.component.mjs +35 -0
  20. package/esm2022/lib/formly/formly-radio/formly-radio-component.mjs +49 -0
  21. package/esm2022/lib/formly/formly-row-fille.mjs +12 -0
  22. package/esm2022/lib/formly/formly-scan-id/formly-scan-id.component.mjs +284 -0
  23. package/esm2022/lib/formly/formly-sign/formly-sign.component.mjs +173 -0
  24. package/esm2022/lib/formly/formly-upload-documents/formly-upload-documents.component.mjs +198 -0
  25. package/esm2022/lib/formly/formly-validate-contact-info/formly-validate-contact-info.component.mjs +124 -0
  26. package/esm2022/lib/formly/formly-view-documents/formly-view-documents.component.mjs +245 -0
  27. package/esm2022/lib/formly/formly-view-offers/formly-view-offers.component.mjs +160 -0
  28. package/esm2022/lib/model-population.helper.mjs +265 -0
  29. package/esm2022/lib/models/application-type.model.mjs +12 -0
  30. package/esm2022/lib/models/application.model.mjs +30 -0
  31. package/esm2022/lib/models/auth/users.model.mjs +2 -0
  32. package/esm2022/lib/models/dictionary.model.mjs +20 -0
  33. package/esm2022/lib/models/flux.model.mjs +105 -0
  34. package/esm2022/lib/models/forms.model.mjs +572 -0
  35. package/esm2022/lib/models/label-info.model.mjs +2 -0
  36. package/esm2022/lib/models/label.model.mjs +2 -0
  37. package/esm2022/lib/models/language.model.mjs +3 -0
  38. package/esm2022/lib/models/list.model.mjs +2 -0
  39. package/esm2022/lib/models/partner.model.mjs +3 -0
  40. package/esm2022/lib/models/treeview.model.mjs +15 -0
  41. package/esm2022/lib/origin-form-auth.service.mjs +40 -0
  42. package/esm2022/lib/origin-form-config.model.mjs +2 -0
  43. package/esm2022/lib/origin-form-token.interceptor.mjs +35 -0
  44. package/esm2022/lib/origin-form.component.mjs +2391 -0
  45. package/esm2022/lib/origin-form.module.mjs +479 -0
  46. package/esm2022/lib/origin-form.service.mjs +14 -0
  47. package/esm2022/lib/others/check-list.database.mjs +55 -0
  48. package/esm2022/lib/others/config-service.mjs +42 -0
  49. package/esm2022/lib/others/dictionary-label-info.mjs +3 -0
  50. package/esm2022/lib/others/environment-type.mjs +21 -0
  51. package/esm2022/lib/others/external-link.directive.mjs +49 -0
  52. package/esm2022/lib/others/flux-helper.mjs +1397 -0
  53. package/esm2022/lib/others/picker.component.mjs +119 -0
  54. package/esm2022/lib/others/translation.pipe.mjs +21 -0
  55. package/esm2022/lib/others/translations-helper.mjs +258 -0
  56. package/esm2022/lib/others/utils.mjs +272 -0
  57. package/esm2022/lib/services/applicationData.service.mjs +145 -0
  58. package/esm2022/lib/services/auth-http.service.mjs +80 -0
  59. package/esm2022/lib/services/dialog.service.mjs +56 -0
  60. package/esm2022/lib/services/dictionary.service.mjs +198 -0
  61. package/esm2022/lib/services/forms.service.mjs +47 -0
  62. package/esm2022/lib/services/labels.service.mjs +29 -0
  63. package/esm2022/lib/services/language.service.mjs +24 -0
  64. package/esm2022/lib/services/open-banking.service.mjs +194 -0
  65. package/esm2022/lib/services/origin-form-signalr-handler.service.mjs +107 -0
  66. package/esm2022/lib/services/origin-form-signalr.service.mjs +105 -0
  67. package/esm2022/lib/services/otp.service.mjs +28 -0
  68. package/esm2022/lib/services/proxy.service.mjs +79 -0
  69. package/esm2022/lib/services/scroll-to-error.service.mjs +369 -0
  70. package/esm2022/lib/services/translation.service.mjs +27 -0
  71. package/esm2022/lib/shared-components/confirmation.component.mjs +34 -0
  72. package/esm2022/lib/shared-components/dictionaries-tree.component.mjs +301 -0
  73. package/esm2022/lib/shared-components/grid.component.mjs +241 -0
  74. package/esm2022/lib/shared-components/treeview/treeview.component.mjs +224 -0
  75. package/esm2022/lib/theme-css.mjs +2254 -0
  76. package/esm2022/lib/theme-injector.service.mjs +26 -0
  77. package/esm2022/public-api.mjs +4 -0
  78. package/esm2022/qbs-origin-origin-form.mjs +5 -0
  79. package/fesm2022/qbs-origin-origin-form.mjs +15215 -0
  80. package/fesm2022/qbs-origin-origin-form.mjs.map +1 -0
  81. package/index.d.ts +5 -0
  82. package/lib/action-step-handler.d.ts +49 -0
  83. package/lib/auth-client.service.d.ts +17 -0
  84. package/lib/enums/label.keys.d.ts +720 -0
  85. package/lib/form-css.helper.d.ts +28 -0
  86. package/lib/formly/baseFormlyControlComponent.d.ts +25 -0
  87. package/lib/formly/baseFormlyStepComponent.d.ts +29 -0
  88. package/lib/formly/custom-section-separator.component.d.ts +6 -0
  89. package/lib/formly/form-section-separator.component.d.ts +10 -0
  90. package/lib/formly/formly-action.d.ts +13 -0
  91. package/lib/formly/formly-checkbox/formly-checkbox.component.d.ts +15 -0
  92. package/lib/formly/formly-dictionary-dropdown-tree/formly-dictionary-dropdown-tree.component.d.ts +45 -0
  93. package/lib/formly/formly-download-documents/formly-download-documents.component.d.ts +22 -0
  94. package/lib/formly/formly-enrol-card/formly-enrol-card.component.d.ts +114 -0
  95. package/lib/formly/formly-field-stepper/formly-field-stepper.component.d.ts +79 -0
  96. package/lib/formly/formly-generate-documents/formly-generate-documents.component.d.ts +17 -0
  97. package/lib/formly/formly-identification.component.d.ts +19 -0
  98. package/lib/formly/formly-open-banking/formly-open-banking.component.d.ts +119 -0
  99. package/lib/formly/formly-paragraph/formly-paragraph.component.d.ts +10 -0
  100. package/lib/formly/formly-radio/formly-radio-component.d.ts +15 -0
  101. package/lib/formly/formly-row-fille.d.ts +6 -0
  102. package/lib/formly/formly-scan-id/formly-scan-id.component.d.ts +41 -0
  103. package/lib/formly/formly-sign/formly-sign.component.d.ts +36 -0
  104. package/lib/formly/formly-upload-documents/formly-upload-documents.component.d.ts +25 -0
  105. package/lib/formly/formly-validate-contact-info/formly-validate-contact-info.component.d.ts +79 -0
  106. package/lib/formly/formly-view-documents/formly-view-documents.component.d.ts +33 -0
  107. package/lib/formly/formly-view-offers/formly-view-offers.component.d.ts +23 -0
  108. package/lib/model-population.helper.d.ts +8 -0
  109. package/lib/models/application-type.model.d.ts +27 -0
  110. package/lib/models/application.model.d.ts +107 -0
  111. package/lib/models/auth/users.model.d.ts +20 -0
  112. package/lib/models/dictionary.model.d.ts +77 -0
  113. package/lib/models/flux.model.d.ts +101 -0
  114. package/lib/models/forms.model.d.ts +504 -0
  115. package/lib/models/label-info.model.d.ts +10 -0
  116. package/lib/models/label.model.d.ts +4 -0
  117. package/lib/models/language.model.d.ts +5 -0
  118. package/lib/models/list.model.d.ts +8 -0
  119. package/lib/models/partner.model.d.ts +12 -0
  120. package/lib/models/treeview.model.d.ts +17 -0
  121. package/lib/origin-form-auth.service.d.ts +15 -0
  122. package/lib/origin-form-config.model.d.ts +12 -0
  123. package/lib/origin-form-token.interceptor.d.ts +12 -0
  124. package/lib/origin-form.component.d.ts +231 -0
  125. package/lib/origin-form.module.d.ts +84 -0
  126. package/lib/origin-form.service.d.ts +6 -0
  127. package/lib/others/check-list.database.d.ts +16 -0
  128. package/lib/others/config-service.d.ts +22 -0
  129. package/lib/others/dictionary-label-info.d.ts +6 -0
  130. package/lib/others/environment-type.d.ts +8 -0
  131. package/lib/others/external-link.directive.d.ts +12 -0
  132. package/lib/others/flux-helper.d.ts +115 -0
  133. package/lib/others/picker.component.d.ts +36 -0
  134. package/lib/others/translation.pipe.d.ts +10 -0
  135. package/lib/others/translations-helper.d.ts +31 -0
  136. package/lib/others/utils.d.ts +37 -0
  137. package/lib/services/applicationData.service.d.ts +35 -0
  138. package/lib/services/auth-http.service.d.ts +21 -0
  139. package/lib/services/dialog.service.d.ts +20 -0
  140. package/lib/services/dictionary.service.d.ts +89 -0
  141. package/lib/services/forms.service.d.ts +17 -0
  142. package/lib/services/labels.service.d.ts +13 -0
  143. package/lib/services/language.service.d.ts +14 -0
  144. package/lib/services/open-banking.service.d.ts +137 -0
  145. package/lib/services/origin-form-signalr-handler.service.d.ts +29 -0
  146. package/lib/services/origin-form-signalr.service.d.ts +24 -0
  147. package/lib/services/otp.service.d.ts +22 -0
  148. package/lib/services/proxy.service.d.ts +29 -0
  149. package/lib/services/scroll-to-error.service.d.ts +54 -0
  150. package/lib/services/translation.service.d.ts +10 -0
  151. package/lib/shared-components/confirmation.component.d.ts +77 -0
  152. package/lib/shared-components/dictionaries-tree.component.d.ts +51 -0
  153. package/lib/shared-components/grid.component.d.ts +138 -0
  154. package/lib/shared-components/treeview/treeview.component.d.ts +121 -0
  155. package/lib/theme-css.d.ts +2 -0
  156. package/lib/theme-injector.service.d.ts +8 -0
  157. package/package.json +42 -0
  158. package/public-api.d.ts +3 -0
  159. package/schematics-compiled/collection.json +10 -0
  160. package/schematics-compiled/ng-add/index.d.ts +2 -0
  161. package/schematics-compiled/ng-add/index.js +67 -0
  162. package/schematics-compiled/ng-add/index.js.map +1 -0
  163. package/schematics-compiled/ng-add/schema.json +8 -0
  164. package/src/lib/assets/fonts/Figtree-Bold.ttf +0 -0
  165. package/src/lib/assets/fonts/Figtree-Light.ttf +0 -0
  166. package/src/lib/assets/fonts/Figtree-Regular.ttf +0 -0
  167. package/src/lib/assets/fonts/Sora-ExtraBold.ttf +0 -0
  168. package/src/lib/assets/fonts/Sora-Light.ttf +0 -0
  169. package/src/lib/assets/fonts/Sora-Regular.ttf +0 -0
  170. package/src/lib/assets/fonts/ttrounds-bold-webfont.woff +0 -0
  171. package/src/lib/assets/fonts/ttrounds-bold-webfont.woff2 +0 -0
  172. package/src/lib/assets/fonts/ttrounds-regular-webfont.woff +0 -0
  173. package/src/lib/assets/fonts/ttrounds-regular-webfont.woff2 +0 -0
  174. package/src/lib/assets/fonts/ttrounds-thin-webfont.woff +0 -0
  175. package/src/lib/assets/fonts/ttrounds-thin-webfont.woff2 +0 -0
  176. package/src/lib/assets/images/flag/icon-flag-de.svg +10 -0
  177. package/src/lib/assets/images/flag/icon-flag-en.svg +1 -0
  178. package/src/lib/assets/images/flag/icon-flag-es.svg +11 -0
  179. package/src/lib/assets/images/flag/icon-flag-fr.svg +1 -0
  180. package/src/lib/assets/images/flag/icon-flag-ro.svg +11 -0
  181. package/src/lib/assets/images/flag/origin-form/new-id-card.png +0 -0
  182. package/src/lib/assets/images/flag/origin-form/old-id-card.png +0 -0
@@ -0,0 +1,572 @@
1
+ import { Partner } from './partner.model';
2
+ import { FluxHelper } from '../others/flux-helper';
3
+ import { PresentationControl } from './flux.model';
4
+ export class FormModel {
5
+ }
6
+ export class AppDataControl {
7
+ constructor(controlId = '', fillValue = '', fillValueId = '') {
8
+ this.controlId = controlId || '';
9
+ this.fillValue = fillValue || '';
10
+ this.fillValueId = fillValueId || '';
11
+ }
12
+ }
13
+ export class AppDataSection {
14
+ constructor(sectionId = '', controls = []) {
15
+ this.sectionId = sectionId || '';
16
+ this.controls = controls || [];
17
+ }
18
+ }
19
+ export class AppDataStep {
20
+ constructor(stepId = '', type, sections = []) {
21
+ this.stepId = stepId || '';
22
+ this.type = type;
23
+ this.sections = sections || [];
24
+ }
25
+ }
26
+ export class AppDataFill {
27
+ constructor(appDataId = '', configurationId = '', currentStepId = '', statusId = '', language = '', flux = [], offerId = '', isSubmitted = false) {
28
+ this.metadata = {
29
+ appDataId: appDataId || '',
30
+ configurationId: configurationId || '',
31
+ currentStepId: currentStepId || '',
32
+ statusId: statusId || '',
33
+ language: language || '',
34
+ offerId: offerId || '',
35
+ isSubmitted: isSubmitted || false,
36
+ };
37
+ this.flux = flux || [];
38
+ }
39
+ }
40
+ export class AppData {
41
+ constructor(data) {
42
+ (this.id = data.id ?? undefined), (this.appDataId = data.appDataId || '');
43
+ this.appConfigurationId = data.appConfigurationId || 0;
44
+ this.fillData = data.fillData;
45
+ this.withNextStep = data.withNextStep;
46
+ this.blockPreviousStep = data.blockPreviousStep;
47
+ if (!data.env) {
48
+ this.env = 'Config';
49
+ }
50
+ else {
51
+ this.env = data.env;
52
+ }
53
+ }
54
+ }
55
+ export class FormModelExtenxions {
56
+ constructor(model) {
57
+ this.formModel = model;
58
+ }
59
+ fluxItems(untilStepIdentifier = undefined) {
60
+ let items = [];
61
+ if (this.formModel.metadataFields) {
62
+ this.formModel.metadataFields.forEach((fieldValue) => {
63
+ items.push({
64
+ fieldName: fieldValue,
65
+ fieldType: StepControlType.Metadata,
66
+ id: `metadata.${fieldValue}`,
67
+ });
68
+ });
69
+ }
70
+ if (!this.formModel?.flux) {
71
+ return items;
72
+ }
73
+ if (this.formModel.documents?.length > 0) {
74
+ items = items.concat(this.extractDocumentsFluxItems(this.formModel.flux));
75
+ }
76
+ items = items.concat(this.extractSectionsFluxItems(this.formModel.flux, untilStepIdentifier));
77
+ return items;
78
+ }
79
+ extractSectionsFluxItems(steps, untilStepIdentifier = undefined) {
80
+ let items = [];
81
+ for (let step of steps) {
82
+ if (step.sections) {
83
+ if (untilStepIdentifier && step.identifier === untilStepIdentifier) {
84
+ break;
85
+ }
86
+ step.sections.forEach((section) => {
87
+ if (section.controls) {
88
+ section.controls.forEach((control) => {
89
+ if ([
90
+ StepControlType.Buttons,
91
+ StepControlType.NewRow,
92
+ StepControlType.FluxInfo,
93
+ StepControlType.Paragraph,
94
+ ].includes(control.type) == false) {
95
+ items.push({
96
+ fieldName: `${step.name} -> ${section.title} -> ${control.title}`,
97
+ fieldType: control.type,
98
+ manulInputControlType: control.specificControlData?.type,
99
+ id: control.identifier,
100
+ });
101
+ }
102
+ });
103
+ }
104
+ });
105
+ }
106
+ }
107
+ return items;
108
+ }
109
+ extractDocumentsFluxItems(stepData) {
110
+ let items = [];
111
+ stepData?.forEach((step) => {
112
+ if (step.type === FluxType.UploadDocument) {
113
+ step.config?.documents?.forEach((document) => {
114
+ items.push({
115
+ fieldName: `${step.name} -> ${FluxHelper.getDocumentNameById(document?.documentId, this.formModel) || document.name}`,
116
+ fieldType: step.type,
117
+ id: document?.documentId
118
+ ? `upload.${document.documentId}`
119
+ : `${step.type}.${step.name}`,
120
+ });
121
+ });
122
+ }
123
+ else if (step.type === FluxType.GenerateDocument) {
124
+ step.config?.generatedDocuments?.forEach((document) => {
125
+ items.push({
126
+ fieldName: `${step.name} -> ${FluxHelper.getDocumentNameById(document?.id, this.formModel) ||
127
+ document.name}`,
128
+ fieldType: step.type,
129
+ id: document?.id
130
+ ? `generate.${document.id}`
131
+ : `${step.type}.${step.name}`,
132
+ });
133
+ });
134
+ }
135
+ else if (step.type === FluxType.Sign) {
136
+ if (step.config?.documents) {
137
+ step.config?.documents.forEach((document) => {
138
+ items.push({
139
+ fieldName: `${step.name} -> ${FluxHelper.getDocumentNameById(document?.id, this.formModel) || document.name}`,
140
+ fieldType: step.type,
141
+ id: document?.id
142
+ ? `sign.${document.id}`
143
+ : `${step.type}.${step.name}`,
144
+ });
145
+ });
146
+ }
147
+ if (step.config?.systemDocuments) {
148
+ step.config?.systemDocuments.forEach((document) => {
149
+ items.push({
150
+ fieldName: `${step.name} -> ${FluxHelper.getDocumentNameById(document?.id, this.formModel) || document.name}`,
151
+ fieldType: step.type,
152
+ id: document?.id
153
+ ? `system.${document.id}`
154
+ : `${step.type}.${step.name}`,
155
+ });
156
+ });
157
+ }
158
+ }
159
+ });
160
+ return items;
161
+ }
162
+ fluxItemsWithGetApiMethods(excludedMethodId = '') {
163
+ let items = this.fluxItems();
164
+ this.formModel.api.getItems.forEach((apiMethod) => {
165
+ if (apiMethod.id !== excludedMethodId) {
166
+ apiMethod.fields?.forEach((f) => {
167
+ items.push({
168
+ fieldName: `${apiMethod.method} -> ${f.fieldName}`,
169
+ fieldType: StepControlType.ApiMethodField,
170
+ id: f.id,
171
+ });
172
+ });
173
+ }
174
+ });
175
+ return items;
176
+ }
177
+ offerMethodsItems() {
178
+ let items = [];
179
+ let offerMethodsIds = [];
180
+ this.formModel.partners?.forEach((p) => {
181
+ p.generalSettings.offers?.forEach((o) => {
182
+ offerMethodsIds.push(o.apiMethodId);
183
+ });
184
+ });
185
+ offerMethodsIds = [...new Set(offerMethodsIds)];
186
+ const allApiItems = [
187
+ ...this.formModel.api.getItems,
188
+ ...this.formModel.api.validationItems,
189
+ ...this.formModel.api.sendItems,
190
+ ];
191
+ offerMethodsIds.forEach((methodId) => {
192
+ const apiMethod = allApiItems.find((item) => item.id === methodId);
193
+ if (apiMethod) {
194
+ apiMethod.fields?.forEach((f) => {
195
+ items.push({
196
+ fieldName: `${apiMethod.method} -> ${f.fieldName}`,
197
+ fieldType: FluxType.ViewOffer,
198
+ id: `api_${apiMethod.id} -> ${f.id}`,
199
+ });
200
+ });
201
+ }
202
+ });
203
+ return items;
204
+ }
205
+ }
206
+ export class ApiData {
207
+ }
208
+ export class ApiItem {
209
+ }
210
+ export class GetApiItem {
211
+ }
212
+ export class DesignModel {
213
+ constructor(data) {
214
+ this.fonts = [];
215
+ this.buttons = [];
216
+ this.otpActionButtons = [];
217
+ this.components = [];
218
+ this.tables = [];
219
+ if (data) {
220
+ if (data.fonts) {
221
+ this.fonts = data.fonts.map((font) => new FontConfig(font));
222
+ }
223
+ if (data.buttons) {
224
+ this.buttons = data.buttons.map((button) => new ButtonConfig(button));
225
+ }
226
+ if (data.components) {
227
+ this.components = data.components.map((component) => new ComponentConfig(component));
228
+ }
229
+ if (data.tables) {
230
+ this.tables = data.tables.map((table) => new TableConfig(table));
231
+ }
232
+ this.backgroundColor = data.backgroundColor;
233
+ this.fontSize = data.fontSize;
234
+ this.buttonsHorizontalPosition = data.horizontalPosition;
235
+ this.buttonsVerticalPosition = data.verticalPosition;
236
+ this.maxWidth = data.maxWidth;
237
+ }
238
+ }
239
+ }
240
+ export class FontConfig {
241
+ constructor(data) {
242
+ if (data) {
243
+ this.name = data.name;
244
+ this.fontFamily = data.fontFamily;
245
+ this.fontSize = data.fontSize;
246
+ this.color = data.color;
247
+ this.fontWeight = data.fontWeight;
248
+ this.textAlign = data.textAlign;
249
+ this.letterSpacing = data.letterSpacing;
250
+ }
251
+ }
252
+ }
253
+ export class ButtonConfig {
254
+ constructor(data) {
255
+ if (data) {
256
+ this.name = data.name;
257
+ this.backgroundColor = data.backgroundColor;
258
+ this.color = data.color;
259
+ this.border = data.border;
260
+ this.borderColor = data.borderColor;
261
+ this.borderRadius = data.borderRadius;
262
+ this.horizontalPadding = data.horizontalPadding;
263
+ this.verticalPadding = data.verticalPadding;
264
+ this.fontFamily = data.fontFamily;
265
+ this.fontSize = data.fontSize;
266
+ this.letterSpacing = data.letterSpacing;
267
+ this.width = data.width;
268
+ this.height = data.height;
269
+ this.minWidth = data.minWidth;
270
+ this.minHeight = data.minHeight;
271
+ this.maxWidth = data.maxWidth;
272
+ this.maxHeight = data.maxHeight;
273
+ this.horizontalPosition = data.horizontalPosition;
274
+ }
275
+ }
276
+ }
277
+ export class TableConfig {
278
+ constructor(table) {
279
+ if (table) {
280
+ this.headerConfig = table.headerConfig;
281
+ this.detailConfig = table.detailConfig;
282
+ }
283
+ }
284
+ }
285
+ export class HeaderConfig {
286
+ constructor(data) {
287
+ if (data) {
288
+ this.name = data.name;
289
+ this.backgroundColor = data.backgroundColor;
290
+ this.textColor = data.color;
291
+ this.border = data.border;
292
+ this.textAlign = data.textAlign;
293
+ this.fontFamily = data.fontFamily;
294
+ this.fontSize = data.fontSize;
295
+ this.letterSpacing = data.letterSpacing;
296
+ this.padding = data.padding;
297
+ this.borderCollapse = data.borderCollapse;
298
+ this.borderSpacing = data.borderSpacing;
299
+ this.verticalAlign = data.verticalAlign;
300
+ this.width = data.width;
301
+ this.height = data.height;
302
+ }
303
+ }
304
+ }
305
+ export class DetailConfig {
306
+ constructor(data) {
307
+ if (data) {
308
+ this.name = data.name;
309
+ this.backgroundColor = data.backgroundColor;
310
+ this.textColor = data.color;
311
+ this.textAlign = data.textAlign;
312
+ this.letterSpacing = data.letterSpacing;
313
+ this.padding = data.padding;
314
+ this.rowBorder = data.rowBorder;
315
+ this.hoverBackgroundColor = data.hoverBackgroundColor;
316
+ this.verticalAlign = data.verticalAlign;
317
+ }
318
+ }
319
+ }
320
+ export class ComponentConfig {
321
+ constructor(data) {
322
+ if (data) {
323
+ this.name = data.name;
324
+ this.backgroundColor = data.backgroundColor;
325
+ this.border = data.border;
326
+ this.borderRadius = data.borderRadius;
327
+ this.labelStyle = data.labelStyle;
328
+ this.textAlign = data.textAlign;
329
+ this.color = data.color;
330
+ this.weight = data.weight;
331
+ this.startColor = data.startColor;
332
+ this.endColor = data.endColor;
333
+ this.height = data.height;
334
+ }
335
+ }
336
+ }
337
+ export class DisplayModel {
338
+ }
339
+ export class GeneralDataModel {
340
+ }
341
+ export const initialFormulareState = {
342
+ data: {
343
+ applicationId: 0,
344
+ applicationUuid: '',
345
+ generalData: {
346
+ name: '',
347
+ applicationType: 0,
348
+ languages: [],
349
+ defaultLanguage: '',
350
+ continueWithOffer: false,
351
+ showCounterStep: false,
352
+ showNameStep: false,
353
+ showAllSteps: false,
354
+ showProgressBar: false,
355
+ },
356
+ design: {
357
+ fonts: [],
358
+ buttons: [],
359
+ otpActionButtons: [],
360
+ components: [],
361
+ tables: [],
362
+ backgroundColor: '',
363
+ fontSize: '',
364
+ buttonsHorizontalPosition: '',
365
+ buttonsVerticalPosition: '',
366
+ maxWidth: '',
367
+ marginLeft: '',
368
+ marginRight: '',
369
+ marginTop: '',
370
+ marginBottom: '',
371
+ },
372
+ flux: [],
373
+ api: { getItems: [], validationItems: [], sendItems: [] },
374
+ partners: [],
375
+ documents: [],
376
+ statuses: [],
377
+ display: {
378
+ sections: [],
379
+ },
380
+ generatedCss: {},
381
+ metadataFields: [],
382
+ errors: {},
383
+ applicationMappings: {
384
+ applicationTypeId: 0,
385
+ columnMappings: [],
386
+ },
387
+ },
388
+ selectedTab: 'Date generale',
389
+ canGetFromProd: false,
390
+ canGetFromTest: false,
391
+ canPublishInProd: false,
392
+ canPublishInTest: false,
393
+ applicationUuid: '',
394
+ version: '',
395
+ };
396
+ export class PartnerDictionaryMapping {
397
+ }
398
+ export class PartnerSettings {
399
+ constructor() {
400
+ this.partnerMethodsApi = [];
401
+ }
402
+ }
403
+ export class PartnerMethodApi {
404
+ }
405
+ export var InboundMethodType;
406
+ (function (InboundMethodType) {
407
+ InboundMethodType["Standard"] = "Standard";
408
+ InboundMethodType["StatusMethod"] = "StatusMethod";
409
+ })(InboundMethodType || (InboundMethodType = {}));
410
+ export class PartnerMethodApiAuth {
411
+ }
412
+ export class PartnerKeyValueItem {
413
+ }
414
+ export class PartnerStatusMapping {
415
+ }
416
+ export class PartnerMethodUrl {
417
+ }
418
+ export class PartnerMethodResponse {
419
+ }
420
+ export class UrlMapFields {
421
+ }
422
+ export class PartnerMethodBody {
423
+ }
424
+ export class FieldsMapping {
425
+ }
426
+ export class MethodField {
427
+ constructor() {
428
+ this.manulInputControlType = undefined;
429
+ }
430
+ }
431
+ export class GetMethodField {
432
+ }
433
+ export class ManualInputControlData {
434
+ }
435
+ export class ParagraphControlData {
436
+ }
437
+ export class DictionaryControlData {
438
+ }
439
+ export var FluxType;
440
+ (function (FluxType) {
441
+ FluxType[FluxType["Kyc"] = 0] = "Kyc";
442
+ FluxType[FluxType["Email"] = 1] = "Email";
443
+ FluxType[FluxType["Phone"] = 2] = "Phone";
444
+ FluxType[FluxType["Sign"] = 3] = "Sign";
445
+ FluxType[FluxType["Status"] = 4] = "Status";
446
+ FluxType[FluxType["Custom"] = 5] = "Custom";
447
+ FluxType[FluxType["Pause"] = 6] = "Pause";
448
+ FluxType[FluxType["IdScan"] = 7] = "IdScan";
449
+ FluxType[FluxType["GenerateDocument"] = 8] = "GenerateDocument";
450
+ FluxType[FluxType["Action"] = 9] = "Action";
451
+ FluxType[FluxType["UploadDocument"] = 10] = "UploadDocument";
452
+ FluxType[FluxType["DownloadDocument"] = 11] = "DownloadDocument";
453
+ FluxType[FluxType["ViewOffer"] = 12] = "ViewOffer";
454
+ FluxType[FluxType["Final"] = 13] = "Final";
455
+ FluxType[FluxType["ViewDocument"] = 14] = "ViewDocument";
456
+ FluxType[FluxType["NETOPIA"] = 15] = "NETOPIA";
457
+ FluxType[FluxType["EUPLATESC"] = 16] = "EUPLATESC";
458
+ FluxType[FluxType["OpenBanking"] = 17] = "OpenBanking";
459
+ })(FluxType || (FluxType = {}));
460
+ export var SectionType;
461
+ (function (SectionType) {
462
+ SectionType[SectionType["Presentation"] = 0] = "Presentation";
463
+ SectionType[SectionType["Collect"] = 1] = "Collect";
464
+ SectionType[SectionType["Display"] = 2] = "Display";
465
+ })(SectionType || (SectionType = {}));
466
+ export var StepControlType;
467
+ (function (StepControlType) {
468
+ StepControlType[StepControlType["ManualInput"] = 0] = "ManualInput";
469
+ StepControlType[StepControlType["Paragraph"] = 1] = "Paragraph";
470
+ StepControlType[StepControlType["CheckBox"] = 2] = "CheckBox";
471
+ StepControlType[StepControlType["Dictionary"] = 3] = "Dictionary";
472
+ StepControlType[StepControlType["Buttons"] = 4] = "Buttons";
473
+ StepControlType[StepControlType["FluxInfo"] = 5] = "FluxInfo";
474
+ StepControlType[StepControlType["NewRow"] = 6] = "NewRow";
475
+ StepControlType[StepControlType["Metadata"] = 7] = "Metadata";
476
+ StepControlType[StepControlType["ApiMethodField"] = 8] = "ApiMethodField";
477
+ StepControlType[StepControlType["DownloadDocuments"] = 9] = "DownloadDocuments";
478
+ StepControlType[StepControlType["ViewDocuments"] = 10] = "ViewDocuments";
479
+ StepControlType[StepControlType["UploadDocuments"] = 11] = "UploadDocuments";
480
+ })(StepControlType || (StepControlType = {}));
481
+ export var DimensionType;
482
+ (function (DimensionType) {
483
+ DimensionType[DimensionType["Percentage"] = 0] = "Percentage";
484
+ DimensionType[DimensionType["Pixels"] = 1] = "Pixels";
485
+ })(DimensionType || (DimensionType = {}));
486
+ export var ManualInputControlType;
487
+ (function (ManualInputControlType) {
488
+ ManualInputControlType[ManualInputControlType["Text"] = 0] = "Text";
489
+ ManualInputControlType[ManualInputControlType["Numeric"] = 1] = "Numeric";
490
+ ManualInputControlType[ManualInputControlType["DateTime"] = 2] = "DateTime";
491
+ ManualInputControlType[ManualInputControlType["Email"] = 3] = "Email";
492
+ ManualInputControlType[ManualInputControlType["Phone"] = 4] = "Phone";
493
+ ManualInputControlType[ManualInputControlType["TextArea"] = 5] = "TextArea";
494
+ })(ManualInputControlType || (ManualInputControlType = {}));
495
+ export var SignatureType;
496
+ (function (SignatureType) {
497
+ SignatureType[SignatureType["Electronic"] = 0] = "Electronic";
498
+ SignatureType[SignatureType["Handwritten"] = 1] = "Handwritten";
499
+ SignatureType[SignatureType["Qualified"] = 2] = "Qualified";
500
+ })(SignatureType || (SignatureType = {}));
501
+ export var ApiMethodType;
502
+ (function (ApiMethodType) {
503
+ ApiMethodType[ApiMethodType["GetData"] = 0] = "GetData";
504
+ ApiMethodType[ApiMethodType["SendData"] = 1] = "SendData";
505
+ ApiMethodType[ApiMethodType["Validation"] = 2] = "Validation";
506
+ })(ApiMethodType || (ApiMethodType = {}));
507
+ export class StatusModel {
508
+ constructor(id, denumire, ordine, final, isActive, actions) {
509
+ this.actions = [];
510
+ this.id = id;
511
+ this.name = denumire;
512
+ this.order = ordine;
513
+ this.final = final;
514
+ this.isActive = isActive;
515
+ this.actions = actions;
516
+ }
517
+ }
518
+ export class StatusAction {
519
+ constructor() {
520
+ this.partnerIds = [];
521
+ }
522
+ }
523
+ export class PresentationParagraphControl extends PresentationControl {
524
+ }
525
+ export class AppPartner extends Partner {
526
+ constructor() {
527
+ super(...arguments);
528
+ this.documents = [];
529
+ }
530
+ }
531
+ export class AppPartnerGeneralSettings {
532
+ constructor() {
533
+ this.offers = [];
534
+ this.receivedOffers = [];
535
+ }
536
+ }
537
+ export class AppStatusWorkerSettings {
538
+ }
539
+ export class AppPartnerGeneralSettingsOffer {
540
+ constructor() {
541
+ this.apiMethodFields = [];
542
+ }
543
+ }
544
+ export class AppPartnerGeneralSettingsReceivedOffer {
545
+ }
546
+ export class AppPartnerDocuments {
547
+ }
548
+ export class AppDocument {
549
+ constructor() {
550
+ this.versions = [];
551
+ }
552
+ }
553
+ export class SignedDocument extends AppDocument {
554
+ }
555
+ export class AppDocumentVersion {
556
+ }
557
+ export class BookmarkMapping {
558
+ }
559
+ export class ErrorTranslations {
560
+ }
561
+ export class UploadDocument {
562
+ }
563
+ export class UploadDocumentDetails extends UploadDocument {
564
+ }
565
+ export class StepsSettings {
566
+ }
567
+ export var AppDataStatus;
568
+ (function (AppDataStatus) {
569
+ AppDataStatus[AppDataStatus["new"] = 0] = "new";
570
+ AppDataStatus[AppDataStatus["finished"] = 1] = "finished";
571
+ })(AppDataStatus || (AppDataStatus = {}));
572
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vcmlnaW4tZm9ybS9zcmMvbGliL21vZGVscy9mb3Jtcy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBeUIsTUFBTSxjQUFjLENBQUM7QUFHMUUsTUFBTSxPQUFPLFNBQVM7Q0FlckI7QUFFRCxNQUFNLE9BQU8sY0FBYztJQUt6QixZQUNFLFlBQW9CLEVBQUUsRUFDdEIsWUFBb0IsRUFBRSxFQUN0QixjQUFzQixFQUFFO1FBRXhCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLElBQUksRUFBRSxDQUFDO0lBQ3ZDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxjQUFjO0lBSXpCLFlBQVksWUFBb0IsRUFBRSxFQUFFLFdBQTZCLEVBQUU7UUFDakUsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLElBQUksRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sV0FBVztJQUt0QixZQUNFLFNBQWlCLEVBQUUsRUFDbkIsSUFBWSxFQUNaLFdBQTZCLEVBQUU7UUFFL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLEVBQUUs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QWIsYUFBYSxRQUd4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhYmVsSW5mbyB9IGZyb20gJy4vbGFiZWwtaW5mby5tb2RlbCc7XG5pbXBvcnQgeyBQYXJ0bmVyIH0gZnJvbSAnLi9wYXJ0bmVyLm1vZGVsJztcbmltcG9ydCB7IERpY3Rpb25hcnlMYWJlbEluZm8gfSBmcm9tICcuLi9vdGhlcnMvZGljdGlvbmFyeS1sYWJlbC1pbmZvJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uTWFwcGluZ3MgfSBmcm9tICcuL2FwcGxpY2F0aW9uLXR5cGUubW9kZWwnO1xuaW1wb3J0IHsgQ3NzUnVsZXMgfSBmcm9tICcuLi9vdGhlcnMvdXRpbHMnO1xuaW1wb3J0IHsgRmx1eEhlbHBlciB9IGZyb20gJy4uL290aGVycy9mbHV4LWhlbHBlcic7XG5pbXBvcnQgeyBQcmVzZW50YXRpb25Db250cm9sLCBTZWN0aW9uRGF0YSwgU3RlcERhdGEgfSBmcm9tICcuL2ZsdXgubW9kZWwnO1xuXG5cbmV4cG9ydCBjbGFzcyBGb3JtTW9kZWwge1xuICBhcHBsaWNhdGlvbklkOiBudW1iZXI7XG4gIGFwcGxpY2F0aW9uVXVpZDogc3RyaW5nO1xuICBnZW5lcmFsRGF0YTogR2VuZXJhbERhdGFNb2RlbDtcbiAgZGVzaWduOiBEZXNpZ25Nb2RlbDtcbiAgZmx1eDogU3RlcERhdGFbXTtcbiAgYXBpOiBBcGlEYXRhO1xuICBwYXJ0bmVyczogQXBwUGFydG5lcltdO1xuICBkb2N1bWVudHM6IEFwcERvY3VtZW50W107XG4gIHN0YXR1c2VzOiBTdGF0dXNNb2RlbFtdO1xuICBkaXNwbGF5OiBEaXNwbGF5TW9kZWw7XG4gIGdlbmVyYXRlZENzczogQ3NzUnVsZXM7XG4gIG1ldGFkYXRhRmllbGRzOiBbXTtcbiAgZXJyb3JzOiB7IFt0YWJOYW1lOiBzdHJpbmddOiBzdHJpbmdbXSB9O1xuICBhcHBsaWNhdGlvbk1hcHBpbmdzOiBBcHBsaWNhdGlvbk1hcHBpbmdzO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwRGF0YUNvbnRyb2wge1xuICBjb250cm9sSWQ6IHN0cmluZztcbiAgZmlsbFZhbHVlOiBzdHJpbmc7XG4gIGZpbGxWYWx1ZUlkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29udHJvbElkOiBzdHJpbmcgPSAnJyxcbiAgICBmaWxsVmFsdWU6IHN0cmluZyA9ICcnLFxuICAgIGZpbGxWYWx1ZUlkOiBzdHJpbmcgPSAnJ1xuICApIHtcbiAgICB0aGlzLmNvbnRyb2xJZCA9IGNvbnRyb2xJZCB8fCAnJztcbiAgICB0aGlzLmZpbGxWYWx1ZSA9IGZpbGxWYWx1ZSB8fCAnJztcbiAgICB0aGlzLmZpbGxWYWx1ZUlkID0gZmlsbFZhbHVlSWQgfHwgJyc7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcERhdGFTZWN0aW9uIHtcbiAgc2VjdGlvbklkOiBzdHJpbmc7XG4gIGNvbnRyb2xzOiBBcHBEYXRhQ29udHJvbFtdO1xuXG4gIGNvbnN0cnVjdG9yKHNlY3Rpb25JZDogc3RyaW5nID0gJycsIGNvbnRyb2xzOiBBcHBEYXRhQ29udHJvbFtdID0gW10pIHtcbiAgICB0aGlzLnNlY3Rpb25JZCA9IHNlY3Rpb25JZCB8fCAnJztcbiAgICB0aGlzLmNvbnRyb2xzID0gY29udHJvbHMgfHwgW107XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcERhdGFTdGVwIHtcbiAgc3RlcElkOiBzdHJpbmc7XG4gIHR5cGU6IG51bWJlcjtcbiAgc2VjdGlvbnM6IEFwcERhdGFTZWN0aW9uW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc3RlcElkOiBzdHJpbmcgPSAnJyxcbiAgICB0eXBlOiBudW1iZXIsXG4gICAgc2VjdGlvbnM6IEFwcERhdGFTZWN0aW9uW10gPSBbXVxuICApIHtcbiAgICB0aGlzLnN0ZXBJZCA9IHN0ZXBJZCB8fCAnJztcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuc2VjdGlvbnMgPSBzZWN0aW9ucyB8fCBbXTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXBwRGF0YUZpbGwge1xuICBtZXRhZGF0YToge1xuICAgIGFwcERhdGFJZDogc3RyaW5nO1xuICAgIGNvbmZpZ3VyYXRpb25JZDogc3RyaW5nO1xuICAgIGN1cnJlbnRTdGVwSWQ6IHN0cmluZztcbiAgICBzdGF0dXNJZDogc3RyaW5nO1xuICAgIGxhbmd1YWdlOiBzdHJpbmc7XG4gICAgb2ZmZXJJZDogc3RyaW5nO1xuICAgIGlzU3VibWl0dGVkOiBib29sZWFuO1xuICB9O1xuICBmbHV4OiBBcHBEYXRhU3RlcFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGFwcERhdGFJZDogc3RyaW5nID0gJycsXG4gICAgY29uZmlndXJhdGlvbklkOiBzdHJpbmcgPSAnJyxcbiAgICBjdXJyZW50U3RlcElkOiBzdHJpbmcgPSAnJyxcbiAgICBzdGF0dXNJZDogc3RyaW5nID0gJycsXG4gICAgbGFuZ3VhZ2U6IHN0cmluZyA9ICcnLFxuICAgIGZsdXg6IEFwcERhdGFTdGVwW10gPSBbXSxcbiAgICBvZmZlcklkOiBzdHJpbmcgPSAnJyxcbiAgICBpc1N1Ym1pdHRlZDogYm9vbGVhbiA9IGZhbHNlXG4gICkge1xuICAgIHRoaXMubWV0YWRhdGEgPSB7XG4gICAgICBhcHBEYXRhSWQ6IGFwcERhdGFJZCB8fCAnJyxcbiAgICAgIGNvbmZpZ3VyYXRpb25JZDogY29uZmlndXJhdGlvbklkIHx8ICcnLFxuICAgICAgY3VycmVudFN0ZXBJZDogY3VycmVudFN0ZXBJZCB8fCAnJyxcbiAgICAgIHN0YXR1c0lkOiBzdGF0dXNJZCB8fCAnJyxcbiAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSB8fCAnJyxcbiAgICAgIG9mZmVySWQ6IG9mZmVySWQgfHwgJycsXG4gICAgICBpc1N1Ym1pdHRlZDogaXNTdWJtaXR0ZWQgfHwgZmFsc2UsXG4gICAgfTtcbiAgICB0aGlzLmZsdXggPSBmbHV4IHx8IFtdO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBEYXRhIHtcbiAgaWQ/OiBudW1iZXI7XG4gIGFwcERhdGFJZDogc3RyaW5nO1xuICBhcHBDb25maWd1cmF0aW9uSWQ6IG51bWJlcjtcbiAgZmlsbERhdGE/OiBBcHBEYXRhRmlsbDtcbiAgd2l0aE5leHRTdGVwOiBib29sZWFuO1xuICBibG9ja1ByZXZpb3VzU3RlcDogYm9vbGVhbjtcbiAgZW52OiBzdHJpbmc7XG4gIHN0YXR1czogQXBwRGF0YVN0YXR1cztcblxuICBjb25zdHJ1Y3RvcihkYXRhOiB7XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgYXBwRGF0YUlkOiBzdHJpbmc7XG4gICAgYXBwQ29uZmlndXJhdGlvbklkOiBudW1iZXI7XG4gICAgZmlsbERhdGE/OiBBcHBEYXRhRmlsbDtcbiAgICB3aXRoTmV4dFN0ZXA6IGJvb2xlYW47XG4gICAgYmxvY2tQcmV2aW91c1N0ZXA6IGJvb2xlYW47XG4gICAgZW52OiBzdHJpbmc7XG4gIH0pIHtcbiAgICAodGhpcy5pZCA9IGRhdGEuaWQgPz8gdW5kZWZpbmVkKSwgKHRoaXMuYXBwRGF0YUlkID0gZGF0YS5hcHBEYXRhSWQgfHwgJycpO1xuICAgIHRoaXMuYXBwQ29uZmlndXJhdGlvbklkID0gZGF0YS5hcHBDb25maWd1cmF0aW9uSWQgfHwgMDtcbiAgICB0aGlzLmZpbGxEYXRhID0gZGF0YS5maWxsRGF0YTtcbiAgICB0aGlzLndpdGhOZXh0U3RlcCA9IGRhdGEud2l0aE5leHRTdGVwO1xuICAgIHRoaXMuYmxvY2tQcmV2aW91c1N0ZXAgPSBkYXRhLmJsb2NrUHJldmlvdXNTdGVwO1xuICAgIGlmICghZGF0YS5lbnYpIHtcbiAgICAgIHRoaXMuZW52ID0gJ0NvbmZpZyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW52ID0gZGF0YS5lbnY7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGb3JtTW9kZWxFeHRlbnhpb25zIHtcbiAgZm9ybU1vZGVsOiBGb3JtTW9kZWw7XG5cbiAgY29uc3RydWN0b3IobW9kZWw6IEZvcm1Nb2RlbCkge1xuICAgIHRoaXMuZm9ybU1vZGVsID0gbW9kZWw7XG4gIH1cblxuICBwdWJsaWMgZmx1eEl0ZW1zKFxuICAgIHVudGlsU3RlcElkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICApOiBNZXRob2RGaWVsZFtdIHtcbiAgICBsZXQgaXRlbXM6IE1ldGhvZEZpZWxkW10gPSBbXTtcblxuICAgIGlmICh0aGlzLmZvcm1Nb2RlbC5tZXRhZGF0YUZpZWxkcykge1xuICAgICAgdGhpcy5mb3JtTW9kZWwubWV0YWRhdGFGaWVsZHMuZm9yRWFjaCgoZmllbGRWYWx1ZSkgPT4ge1xuICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICBmaWVsZE5hbWU6IGZpZWxkVmFsdWUsXG4gICAgICAgICAgZmllbGRUeXBlOiBTdGVwQ29udHJvbFR5cGUuTWV0YWRhdGEsXG4gICAgICAgICAgaWQ6IGBtZXRhZGF0YS4ke2ZpZWxkVmFsdWV9YCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZm9ybU1vZGVsPy5mbHV4KSB7XG4gICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9ybU1vZGVsLmRvY3VtZW50cz8ubGVuZ3RoID4gMCkge1xuICAgICAgaXRlbXMgPSBpdGVtcy5jb25jYXQodGhpcy5leHRyYWN0RG9jdW1lbnRzRmx1eEl0ZW1zKHRoaXMuZm9ybU1vZGVsLmZsdXgpKTtcbiAgICB9XG4gICAgaXRlbXMgPSBpdGVtcy5jb25jYXQoXG4gICAgICB0aGlzLmV4dHJhY3RTZWN0aW9uc0ZsdXhJdGVtcyh0aGlzLmZvcm1Nb2RlbC5mbHV4LCB1bnRpbFN0ZXBJZGVudGlmaWVyKVxuICAgICk7XG5cbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cbiAgcHJpdmF0ZSBleHRyYWN0U2VjdGlvbnNGbHV4SXRlbXMoXG4gICAgc3RlcHM6IFN0ZXBEYXRhW10sXG4gICAgdW50aWxTdGVwSWRlbnRpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXG4gICk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGxldCBpdGVtczogTWV0aG9kRmllbGRbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgc3RlcCBvZiBzdGVwcykge1xuICAgICAgaWYgKHN0ZXAuc2VjdGlvbnMpIHtcbiAgICAgICAgaWYgKHVudGlsU3RlcElkZW50aWZpZXIgJiYgc3RlcC5pZGVudGlmaWVyID09PSB1bnRpbFN0ZXBJZGVudGlmaWVyKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgc3RlcC5zZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gICAgICAgICAgaWYgKHNlY3Rpb24uY29udHJvbHMpIHtcbiAgICAgICAgICAgIHNlY3Rpb24uY29udHJvbHMuZm9yRWFjaCgoY29udHJvbCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgU3RlcENvbnRyb2xUeXBlLkJ1dHRvbnMsXG4gICAgICAgICAgICAgICAgICBTdGVwQ29udHJvbFR5cGUuTmV3Um93LFxuICAgICAgICAgICAgICAgICAgU3RlcENvbnRyb2xUeXBlLkZsdXhJbmZvLFxuICAgICAgICAgICAgICAgICAgU3RlcENvbnRyb2xUeXBlLlBhcmFncmFwaCxcbiAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKGNvbnRyb2wudHlwZSkgPT0gZmFsc2VcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtzZWN0aW9uLnRpdGxlfSAtPiAke2NvbnRyb2wudGl0bGV9YCxcbiAgICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogY29udHJvbC50eXBlLFxuICAgICAgICAgICAgICAgICAgbWFudWxJbnB1dENvbnRyb2xUeXBlOiBjb250cm9sLnNwZWNpZmljQ29udHJvbERhdGE/LnR5cGUsXG4gICAgICAgICAgICAgICAgICBpZDogY29udHJvbC5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdERvY3VtZW50c0ZsdXhJdGVtcyhzdGVwRGF0YTogU3RlcERhdGFbXSk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGxldCBpdGVtczogTWV0aG9kRmllbGRbXSA9IFtdO1xuXG4gICAgc3RlcERhdGE/LmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgIGlmIChzdGVwLnR5cGUgPT09IEZsdXhUeXBlLlVwbG9hZERvY3VtZW50KSB7XG4gICAgICAgIHN0ZXAuY29uZmlnPy5kb2N1bWVudHM/LmZvckVhY2goXG4gICAgICAgICAgKGRvY3VtZW50OiB7IGRvY3VtZW50SWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtcbiAgICAgICAgICAgICAgICBGbHV4SGVscGVyLmdldERvY3VtZW50TmFtZUJ5SWQoXG4gICAgICAgICAgICAgICAgICBkb2N1bWVudD8uZG9jdW1lbnRJZCxcbiAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybU1vZGVsXG4gICAgICAgICAgICAgICAgKSB8fCBkb2N1bWVudC5uYW1lXG4gICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICBmaWVsZFR5cGU6IHN0ZXAudHlwZSxcbiAgICAgICAgICAgICAgaWQ6IGRvY3VtZW50Py5kb2N1bWVudElkXG4gICAgICAgICAgICAgICAgPyBgdXBsb2FkLiR7ZG9jdW1lbnQuZG9jdW1lbnRJZH1gXG4gICAgICAgICAgICAgICAgOiBgJHtzdGVwLnR5cGV9LiR7c3RlcC5uYW1lfWAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAudHlwZSA9PT0gRmx1eFR5cGUuR2VuZXJhdGVEb2N1bWVudCkge1xuICAgICAgICBzdGVwLmNvbmZpZz8uZ2VuZXJhdGVkRG9jdW1lbnRzPy5mb3JFYWNoKFxuICAgICAgICAgIChkb2N1bWVudDogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgIGZpZWxkTmFtZTogYCR7c3RlcC5uYW1lfSAtPiAke1xuICAgICAgICAgICAgICAgIEZsdXhIZWxwZXIuZ2V0RG9jdW1lbnROYW1lQnlJZChkb2N1bWVudD8uaWQsIHRoaXMuZm9ybU1vZGVsKSB8fFxuICAgICAgICAgICAgICAgIGRvY3VtZW50Lm5hbWVcbiAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgIGZpZWxkVHlwZTogc3RlcC50eXBlLFxuICAgICAgICAgICAgICBpZDogZG9jdW1lbnQ/LmlkXG4gICAgICAgICAgICAgICAgPyBgZ2VuZXJhdGUuJHtkb2N1bWVudC5pZH1gXG4gICAgICAgICAgICAgICAgOiBgJHtzdGVwLnR5cGV9LiR7c3RlcC5uYW1lfWAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAudHlwZSA9PT0gRmx1eFR5cGUuU2lnbikge1xuICAgICAgICBpZiAoc3RlcC5jb25maWc/LmRvY3VtZW50cykge1xuICAgICAgICAgIHN0ZXAuY29uZmlnPy5kb2N1bWVudHMuZm9yRWFjaChcbiAgICAgICAgICAgIChkb2N1bWVudDogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtcbiAgICAgICAgICAgICAgICAgIEZsdXhIZWxwZXIuZ2V0RG9jdW1lbnROYW1lQnlJZChcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQ/LmlkLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Nb2RlbFxuICAgICAgICAgICAgICAgICAgKSB8fCBkb2N1bWVudC5uYW1lXG4gICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgZmllbGRUeXBlOiBzdGVwLnR5cGUsXG4gICAgICAgICAgICAgICAgaWQ6IGRvY3VtZW50Py5pZFxuICAgICAgICAgICAgICAgICAgPyBgc2lnbi4ke2RvY3VtZW50LmlkfWBcbiAgICAgICAgICAgICAgICAgIDogYCR7c3RlcC50eXBlfS4ke3N0ZXAubmFtZX1gLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0ZXAuY29uZmlnPy5zeXN0ZW1Eb2N1bWVudHMpIHtcbiAgICAgICAgICBzdGVwLmNvbmZpZz8uc3lzdGVtRG9jdW1lbnRzLmZvckVhY2goXG4gICAgICAgICAgICAoZG9jdW1lbnQ6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgZmllbGROYW1lOiBgJHtzdGVwLm5hbWV9IC0+ICR7XG4gICAgICAgICAgICAgICAgICBGbHV4SGVscGVyLmdldERvY3VtZW50TmFtZUJ5SWQoXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50Py5pZCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtTW9kZWxcbiAgICAgICAgICAgICAgICAgICkgfHwgZG9jdW1lbnQubmFtZVxuICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogc3RlcC50eXBlLFxuICAgICAgICAgICAgICAgIGlkOiBkb2N1bWVudD8uaWRcbiAgICAgICAgICAgICAgICAgID8gYHN5c3RlbS4ke2RvY3VtZW50LmlkfWBcbiAgICAgICAgICAgICAgICAgIDogYCR7c3RlcC50eXBlfS4ke3N0ZXAubmFtZX1gLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgcHVibGljIGZsdXhJdGVtc1dpdGhHZXRBcGlNZXRob2RzKFxuICAgIGV4Y2x1ZGVkTWV0aG9kSWQ6IHN0cmluZyA9ICcnXG4gICk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGxldCBpdGVtcyA9IHRoaXMuZmx1eEl0ZW1zKCk7XG4gICAgdGhpcy5mb3JtTW9kZWwuYXBpLmdldEl0ZW1zLmZvckVhY2goKGFwaU1ldGhvZCkgPT4ge1xuICAgICAgaWYgKGFwaU1ldGhvZC5pZCAhPT0gZXhjbHVkZWRNZXRob2RJZCkge1xuICAgICAgICBhcGlNZXRob2QuZmllbGRzPy5mb3JFYWNoKChmKSA9PiB7XG4gICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICBmaWVsZE5hbWU6IGAke2FwaU1ldGhvZC5tZXRob2R9IC0+ICR7Zi5maWVsZE5hbWV9YCxcbiAgICAgICAgICAgIGZpZWxkVHlwZTogU3RlcENvbnRyb2xUeXBlLkFwaU1ldGhvZEZpZWxkLFxuICAgICAgICAgICAgaWQ6IGYuaWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgcHVibGljIG9mZmVyTWV0aG9kc0l0ZW1zKCk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGxldCBpdGVtczogTWV0aG9kRmllbGRbXSA9IFtdO1xuXG4gICAgbGV0IG9mZmVyTWV0aG9kc0lkczogc3RyaW5nW10gPSBbXTtcbiAgICB0aGlzLmZvcm1Nb2RlbC5wYXJ0bmVycz8uZm9yRWFjaCgocCkgPT4ge1xuICAgICAgcC5nZW5lcmFsU2V0dGluZ3Mub2ZmZXJzPy5mb3JFYWNoKChvKSA9PiB7XG4gICAgICAgIG9mZmVyTWV0aG9kc0lkcy5wdXNoKG8uYXBpTWV0aG9kSWQpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBvZmZlck1ldGhvZHNJZHMgPSBbLi4ubmV3IFNldChvZmZlck1ldGhvZHNJZHMpXTtcblxuICAgIGNvbnN0IGFsbEFwaUl0ZW1zID0gW1xuICAgICAgLi4udGhpcy5mb3JtTW9kZWwuYXBpLmdldEl0ZW1zLFxuICAgICAgLi4udGhpcy5mb3JtTW9kZWwuYXBpLnZhbGlkYXRpb25JdGVtcyxcbiAgICAgIC4uLnRoaXMuZm9ybU1vZGVsLmFwaS5zZW5kSXRlbXMsXG4gICAgXTtcblxuICAgIG9mZmVyTWV0aG9kc0lkcy5mb3JFYWNoKChtZXRob2RJZCkgPT4ge1xuICAgICAgY29uc3QgYXBpTWV0aG9kID0gYWxsQXBpSXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gbWV0aG9kSWQpO1xuICAgICAgaWYgKGFwaU1ldGhvZCkge1xuICAgICAgICBhcGlNZXRob2QuZmllbGRzPy5mb3JFYWNoKChmKSA9PiB7XG4gICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICBmaWVsZE5hbWU6IGAke2FwaU1ldGhvZC5tZXRob2R9IC0+ICR7Zi5maWVsZE5hbWV9YCxcbiAgICAgICAgICAgIGZpZWxkVHlwZTogRmx1eFR5cGUuVmlld09mZmVyLFxuICAgICAgICAgICAgaWQ6IGBhcGlfJHthcGlNZXRob2QuaWR9IC0+ICR7Zi5pZH1gLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXBpRGF0YSB7XG4gIGdldEl0ZW1zOiBHZXRBcGlJdGVtW107XG4gIHZhbGlkYXRpb25JdGVtczogQXBpSXRlbVtdO1xuICBzZW5kSXRlbXM6IEFwaUl0ZW1bXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwaUl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICBtZXRob2Q6IHN0cmluZztcbiAgZmllbGRzOiBNZXRob2RGaWVsZFtdO1xuICB0eXBlOiBBcGlNZXRob2RUeXBlO1xufVxuXG5leHBvcnQgY2xhc3MgR2V0QXBpSXRlbSB7XG4gIGlkOiBzdHJpbmc7XG4gIG1ldGhvZDogc3RyaW5nO1xuICBmaWVsZHM6IEdldE1ldGhvZEZpZWxkW107XG4gIHR5cGU6IEFwaU1ldGhvZFR5cGU7XG59XG5leHBvcnQgY2xhc3MgRGVzaWduTW9kZWwge1xuICBmb250czogRm9udENvbmZpZ1tdID0gW107XG4gIGJ1dHRvbnM6IEJ1dHRvbkNvbmZpZ1tdID0gW107XG4gIG90cEFjdGlvbkJ1dHRvbnM6IEJ1dHRvbkNvbmZpZ1tdID0gW107XG4gIGNvbXBvbmVudHM6IENvbXBvbmVudENvbmZpZ1tdID0gW107XG4gIHRhYmxlczogVGFibGVDb25maWdbXSA9IFtdO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgZm9udFNpemU6IHN0cmluZztcbiAgYnV0dG9uc0hvcml6b250YWxQb3NpdGlvbjogc3RyaW5nO1xuICBidXR0b25zVmVydGljYWxQb3NpdGlvbjogc3RyaW5nO1xuICBtYXhXaWR0aDogc3RyaW5nO1xuICBtYXJnaW5MZWZ0OiBzdHJpbmc7XG4gIG1hcmdpblJpZ2h0OiBzdHJpbmc7XG4gIG1hcmdpblRvcDogc3RyaW5nO1xuICBtYXJnaW5Cb3R0b206IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmIChkYXRhLmZvbnRzKSB7XG4gICAgICAgIHRoaXMuZm9udHMgPSBkYXRhLmZvbnRzLm1hcCgoZm9udDogYW55KSA9PiBuZXcgRm9udENvbmZpZyhmb250KSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmJ1dHRvbnMpIHtcbiAgICAgICAgdGhpcy5idXR0b25zID0gZGF0YS5idXR0b25zLm1hcChcbiAgICAgICAgICAoYnV0dG9uOiBhbnkpID0+IG5ldyBCdXR0b25Db25maWcoYnV0dG9uKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5jb21wb25lbnRzKSB7XG4gICAgICAgIHRoaXMuY29tcG9uZW50cyA9IGRhdGEuY29tcG9uZW50cy5tYXAoXG4gICAgICAgICAgKGNvbXBvbmVudDogYW55KSA9PiBuZXcgQ29tcG9uZW50Q29uZmlnKGNvbXBvbmVudClcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEudGFibGVzKSB7XG4gICAgICAgIHRoaXMudGFibGVzID0gZGF0YS50YWJsZXMubWFwKCh0YWJsZTogYW55KSA9PiBuZXcgVGFibGVDb25maWcodGFibGUpKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmJhY2tncm91bmRDb2xvcjtcbiAgICAgIHRoaXMuZm9udFNpemUgPSBkYXRhLmZvbnRTaXplO1xuICAgICAgdGhpcy5idXR0b25zSG9yaXpvbnRhbFBvc2l0aW9uID0gZGF0YS5ob3Jpem9udGFsUG9zaXRpb247XG4gICAgICB0aGlzLmJ1dHRvbnNWZXJ0aWNhbFBvc2l0aW9uID0gZGF0YS52ZXJ0aWNhbFBvc2l0aW9uO1xuICAgICAgdGhpcy5tYXhXaWR0aCA9IGRhdGEubWF4V2lkdGg7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGb250Q29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBmb250RmFtaWx5OiBzdHJpbmc7XG4gIGZvbnRTaXplOiBzdHJpbmc7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIGZvbnRXZWlnaHQ6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGxldHRlclNwYWNpbmc6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuZm9udEZhbWlseSA9IGRhdGEuZm9udEZhbWlseTtcbiAgICAgIHRoaXMuZm9udFNpemUgPSBkYXRhLmZvbnRTaXplO1xuICAgICAgdGhpcy5jb2xvciA9IGRhdGEuY29sb3I7XG4gICAgICB0aGlzLmZvbnRXZWlnaHQgPSBkYXRhLmZvbnRXZWlnaHQ7XG4gICAgICB0aGlzLnRleHRBbGlnbiA9IGRhdGEudGV4dEFsaWduO1xuICAgICAgdGhpcy5sZXR0ZXJTcGFjaW5nID0gZGF0YS5sZXR0ZXJTcGFjaW5nO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgY29sb3I6IHN0cmluZztcbiAgYm9yZGVyOiBzdHJpbmc7XG4gIGJvcmRlckNvbG9yOiBzdHJpbmc7XG4gIGJvcmRlclJhZGl1czogc3RyaW5nO1xuICBob3Jpem9udGFsUGFkZGluZzogc3RyaW5nO1xuICB2ZXJ0aWNhbFBhZGRpbmc6IHN0cmluZztcbiAgZm9udEZhbWlseTogc3RyaW5nO1xuICBmb250U2l6ZTogc3RyaW5nO1xuICBsZXR0ZXJTcGFjaW5nOiBzdHJpbmc7XG4gIHdpZHRoOiBzdHJpbmc7XG4gIGhlaWdodDogc3RyaW5nO1xuICBtaW5XaWR0aDogc3RyaW5nO1xuICBtaW5IZWlnaHQ6IHN0cmluZztcbiAgbWF4V2lkdGg6IHN0cmluZztcbiAgbWF4SGVpZ2h0OiBzdHJpbmc7XG4gIGhvcml6b250YWxQb3NpdGlvbj86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gZGF0YS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLmNvbG9yID0gZGF0YS5jb2xvcjtcbiAgICAgIHRoaXMuYm9yZGVyID0gZGF0YS5ib3JkZXI7XG4gICAgICB0aGlzLmJvcmRlckNvbG9yID0gZGF0YS5ib3JkZXJDb2xvcjtcbiAgICAgIHRoaXMuYm9yZGVyUmFkaXVzID0gZGF0YS5ib3JkZXJSYWRpdXM7XG4gICAgICB0aGlzLmhvcml6b250YWxQYWRkaW5nID0gZGF0YS5ob3Jpem9udGFsUGFkZGluZztcbiAgICAgIHRoaXMudmVydGljYWxQYWRkaW5nID0gZGF0YS52ZXJ0aWNhbFBhZGRpbmc7XG4gICAgICB0aGlzLmZvbnRGYW1pbHkgPSBkYXRhLmZvbnRGYW1pbHk7XG4gICAgICB0aGlzLmZvbnRTaXplID0gZGF0YS5mb250U2l6ZTtcbiAgICAgIHRoaXMubGV0dGVyU3BhY2luZyA9IGRhdGEubGV0dGVyU3BhY2luZztcbiAgICAgIHRoaXMud2lkdGggPSBkYXRhLndpZHRoO1xuICAgICAgdGhpcy5oZWlnaHQgPSBkYXRhLmhlaWdodDtcbiAgICAgIHRoaXMubWluV2lkdGggPSBkYXRhLm1pbldpZHRoO1xuICAgICAgdGhpcy5taW5IZWlnaHQgPSBkYXRhLm1pbkhlaWdodDtcbiAgICAgIHRoaXMubWF4V2lkdGggPSBkYXRhLm1heFdpZHRoO1xuICAgICAgdGhpcy5tYXhIZWlnaHQgPSBkYXRhLm1heEhlaWdodDtcbiAgICAgIHRoaXMuaG9yaXpvbnRhbFBvc2l0aW9uID0gZGF0YS5ob3Jpem9udGFsUG9zaXRpb247XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUNvbmZpZyB7XG4gIGhlYWRlckNvbmZpZzogSGVhZGVyQ29uZmlnO1xuICBkZXRhaWxDb25maWc6IERldGFpbENvbmZpZztcblxuICBjb25zdHJ1Y3Rvcih0YWJsZT86IGFueSkge1xuICAgIGlmICh0YWJsZSkge1xuICAgICAgdGhpcy5oZWFkZXJDb25maWcgPSB0YWJsZS5oZWFkZXJDb25maWc7XG4gICAgICB0aGlzLmRldGFpbENvbmZpZyA9IHRhYmxlLmRldGFpbENvbmZpZztcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhlYWRlckNvbmZpZyB7XG4gIG5hbWU6IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIHRleHRDb2xvcjogc3RyaW5nO1xuICBib3JkZXI6IHN0cmluZztcbiAgYm9yZGVyQ29sb3I6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGZvbnRGYW1pbHk6IHN0cmluZztcbiAgZm9udFNpemU6IHN0cmluZztcbiAgbGV0dGVyU3BhY2luZzogc3RyaW5nO1xuICBwYWRkaW5nOiBzdHJpbmc7XG4gIGJvcmRlckNvbGxhcHNlOiBzdHJpbmc7XG4gIGJvcmRlclNwYWNpbmc6IHN0cmluZztcbiAgdmVydGljYWxBbGlnbjogc3RyaW5nO1xuICB3aWR0aDogc3RyaW5nO1xuICBoZWlnaHQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gZGF0YS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLnRleHRDb2xvciA9IGRhdGEuY29sb3I7XG4gICAgICB0aGlzLmJvcmRlciA9IGRhdGEuYm9yZGVyO1xuICAgICAgdGhpcy50ZXh0QWxpZ24gPSBkYXRhLnRleHRBbGlnbjtcbiAgICAgIHRoaXMuZm9udEZhbWlseSA9IGRhdGEuZm9udEZhbWlseTtcbiAgICAgIHRoaXMuZm9udFNpemUgPSBkYXRhLmZvbnRTaXplO1xuICAgICAgdGhpcy5sZXR0ZXJTcGFjaW5nID0gZGF0YS5sZXR0ZXJTcGFjaW5nO1xuICAgICAgdGhpcy5wYWRkaW5nID0gZGF0YS5wYWRkaW5nO1xuICAgICAgdGhpcy5ib3JkZXJDb2xsYXBzZSA9IGRhdGEuYm9yZGVyQ29sbGFwc2U7XG4gICAgICB0aGlzLmJvcmRlclNwYWNpbmcgPSBkYXRhLmJvcmRlclNwYWNpbmc7XG4gICAgICB0aGlzLnZlcnRpY2FsQWxpZ24gPSBkYXRhLnZlcnRpY2FsQWxpZ247XG4gICAgICB0aGlzLndpZHRoID0gZGF0YS53aWR0aDtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gZGF0YS5oZWlnaHQ7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEZXRhaWxDb25maWcge1xuICBuYW1lOiBzdHJpbmc7XG4gIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICB0ZXh0Q29sb3I6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGxldHRlclNwYWNpbmc6IHN0cmluZztcbiAgcGFkZGluZzogc3RyaW5nO1xuICByb3dCb3JkZXI6IHN0cmluZztcbiAgcm93Qm9yZGVyQ29sb3I6IHN0cmluZztcbiAgaG92ZXJCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgdmVydGljYWxBbGlnbjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGRhdGE/OiBhbnkpIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5uYW1lID0gZGF0YS5uYW1lO1xuICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmJhY2tncm91bmRDb2xvcjtcbiAgICAgIHRoaXMudGV4dENvbG9yID0gZGF0YS5jb2xvcjtcbiAgICAgIHRoaXMudGV4dEFsaWduID0gZGF0YS50ZXh0QWxpZ247XG4gICAgICB0aGlzLmxldHRlclNwYWNpbmcgPSBkYXRhLmxldHRlclNwYWNpbmc7XG4gICAgICB0aGlzLnBhZGRpbmcgPSBkYXRhLnBhZGRpbmc7XG4gICAgICB0aGlzLnJvd0JvcmRlciA9IGRhdGEucm93Qm9yZGVyO1xuICAgICAgdGhpcy5ob3ZlckJhY2tncm91bmRDb2xvciA9IGRhdGEuaG92ZXJCYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLnZlcnRpY2FsQWxpZ24gPSBkYXRhLnZlcnRpY2FsQWxpZ247XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wb25lbnRDb25maWcge1xuICBuYW1lOiBzdHJpbmc7XG4gIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICBib3JkZXI6IHN0cmluZztcbiAgYm9yZGVyUmFkaXVzOiBzdHJpbmc7XG4gIGxhYmVsU3R5bGU6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGNvbG9yPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBib3JkZXJDb2xvcj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgd2VpZ2h0Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBzdGFydENvbG9yPzogc3RyaW5nO1xuICBlbmRDb2xvcj86IHN0cmluZztcbiAgaGVpZ2h0Pzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGRhdGE/OiBhbnkpIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5uYW1lID0gZGF0YS5uYW1lO1xuICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmJhY2tncm91bmRDb2xvcjtcbiAgICAgIHRoaXMuYm9yZGVyID0gZGF0YS5ib3JkZXI7XG4gICAgICB0aGlzLmJvcmRlclJhZGl1cyA9IGRhdGEuYm9yZGVyUmFkaXVzO1xuICAgICAgdGhpcy5sYWJlbFN0eWxlID0gZGF0YS5sYWJlbFN0eWxlO1xuICAgICAgdGhpcy50ZXh0QWxpZ24gPSBkYXRhLnRleHRBbGlnbjtcbiAgICAgIHRoaXMuY29sb3IgPSBkYXRhLmNvbG9yO1xuICAgICAgdGhpcy53ZWlnaHQgPSBkYXRhLndlaWdodDtcbiAgICAgIHRoaXMuc3RhcnRDb2xvciA9IGRhdGEuc3RhcnRDb2xvcjtcbiAgICAgIHRoaXMuZW5kQ29sb3IgPSBkYXRhLmVuZENvbG9yO1xuICAgICAgdGhpcy5oZWlnaHQgPSBkYXRhLmhlaWdodDtcbiAgICB9XG4gIH1cbn1cbmV4cG9ydCBjbGFzcyBEaXNwbGF5TW9kZWwge1xuICBzZWN0aW9uczogU2VjdGlvbkRhdGFbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEdlbmVyYWxEYXRhTW9kZWwge1xuICBuYW1lOiBzdHJpbmc7XG4gIGFwcGxpY2F0aW9uVHlwZTogbnVtYmVyO1xuICBsYW5ndWFnZXM6IHN0cmluZ1tdO1xuICBkZWZhdWx0TGFuZ3VhZ2U6IHN0cmluZztcbiAgY29udGludWVXaXRoT2ZmZXI6IGJvb2xlYW47XG4gIHNob3dDb3VudGVyU3RlcDogYm9vbGVhbjtcbiAgc2hvd05hbWVTdGVwOiBib29sZWFuO1xuICBzaG93QWxsU3RlcHM6IGJvb2xlYW47XG4gIHNob3dQcm9ncmVzc0JhcjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3Jtc1N0YXRlIHtcbiAgZGF0YTogRm9ybU1vZGVsO1xuICBzZWxlY3RlZFRhYjogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIGNhbkdldEZyb21Qcm9kOiBib29sZWFuO1xuICBjYW5HZXRGcm9tVGVzdDogYm9vbGVhbjtcbiAgY2FuUHVibGlzaEluUHJvZDogYm9vbGVhbjtcbiAgY2FuUHVibGlzaEluVGVzdDogYm9vbGVhbjtcbiAgYXBwbGljYXRpb25VdWlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBpbml0aWFsRm9ybXVsYXJlU3RhdGU6IEZvcm1zU3RhdGUgPSB7XG4gIGRhdGE6IHtcbiAgICBhcHBsaWNhdGlvbklkOiAwLFxuICAgIGFwcGxpY2F0aW9uVXVpZDogJycsXG4gICAgZ2VuZXJhbERhdGE6IHtcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgYXBwbGljYXRpb25UeXBlOiAwLFxuICAgICAgbGFuZ3VhZ2VzOiBbXSxcbiAgICAgIGRlZmF1bHRMYW5ndWFnZTogJycsXG4gICAgICBjb250aW51ZVdpdGhPZmZlcjogZmFsc2UsXG4gICAgICBzaG93Q291bnRlclN0ZXA6IGZhbHNlLFxuICAgICAgc2hvd05hbWVTdGVwOiBmYWxzZSxcbiAgICAgIHNob3dBbGxTdGVwczogZmFsc2UsXG4gICAgICBzaG93UHJvZ3Jlc3NCYXI6IGZhbHNlLFxuICAgIH0sXG4gICAgZGVzaWduOiB7XG4gICAgICBmb250czogW10sXG4gICAgICBidXR0b25zOiBbXSxcbiAgICAgIG90cEFjdGlvbkJ1dHRvbnM6IFtdLFxuICAgICAgY29tcG9uZW50czogW10sXG4gICAgICB0YWJsZXM6IFtdLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAnJyxcbiAgICAgIGZvbnRTaXplOiAnJyxcbiAgICAgIGJ1dHRvbnNIb3Jpem9udGFsUG9zaXRpb246ICcnLFxuICAgICAgYnV0dG9uc1ZlcnRpY2FsUG9zaXRpb246ICcnLFxuICAgICAgbWF4V2lkdGg6ICcnLFxuICAgICAgbWFyZ2luTGVmdDogJycsXG4gICAgICBtYXJnaW5SaWdodDogJycsXG4gICAgICBtYXJnaW5Ub3A6ICcnLFxuICAgICAgbWFyZ2luQm90dG9tOiAnJyxcbiAgICB9LFxuICAgIGZsdXg6IFtdLFxuICAgIGFwaTogeyBnZXRJdGVtczogW10sIHZhbGlkYXRpb25JdGVtczogW10sIHNlbmRJdGVtczogW10gfSxcbiAgICBwYXJ0bmVyczogW10sXG4gICAgZG9jdW1lbnRzOiBbXSxcbiAgICBzdGF0dXNlczogW10sXG4gICAgZGlzcGxheToge1xuICAgICAgc2VjdGlvbnM6IFtdLFxuICAgIH0sXG4gICAgZ2VuZXJhdGVkQ3NzOiB7fSxcbiAgICBtZXRhZGF0YUZpZWxkczogW10sXG4gICAgZXJyb3JzOiB7fSxcbiAgICBhcHBsaWNhdGlvbk1hcHBpbmdzOiB7XG4gICAgICBhcHBsaWNhdGlvblR5cGVJZDogMCxcbiAgICAgIGNvbHVtbk1hcHBpbmdzOiBbXSxcbiAgICB9LFxuICB9LFxuICBzZWxlY3RlZFRhYjogJ0RhdGUgZ2VuZXJhbGUnLFxuICBjYW5HZXRGcm9tUHJvZDogZmFsc2UsXG4gIGNhbkdldEZyb21UZXN0OiBmYWxzZSxcbiAgY2FuUHVibGlzaEluUHJvZDogZmFsc2UsXG4gIGNhblB1Ymxpc2hJblRlc3Q6IGZhbHNlLFxuICBhcHBsaWNhdGlvblV1aWQ6ICcnLFxuICB2ZXJzaW9uOiAnJyxcbn07XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyRGljdGlvbmFyeU1hcHBpbmcge1xuICBkaWN0aW9uYXJ5SWQ6IHN0cmluZztcbiAgZGljdGlvbmFyeU5hbWU6IHN0cmluZztcbiAgbWFwcGluZ3M6IFBhcnRuZXJLZXlWYWx1ZUl0ZW1bXTtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJTZXR0aW5ncyB7XG4gIHBhcnRuZXJNZXRob2RzQXBpOiBQYXJ0bmVyTWV0aG9kQXBpW10gPSBbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJNZXRob2RBcGkge1xuICBtZXRob2RJZDogc3RyaW5nO1xuICBtZXRob2RUeXBlOiBzdHJpbmc7XG4gIGNhbGxUeXBlOiBzdHJpbmc7XG4gIGJvZHlDb25maWd1cmF0aW9uOiBQYXJ0bmVyTWV0aG9kQm9keTtcbiAgcmVzcG9uc2VDb25maWd1cmF0aW9uOiBQYXJ0bmVyTWV0aG9kUmVzcG9uc2U7XG4gIHVybENvbmZpZ3VyYXRpb246IFBhcnRuZXJNZXRob2RVcmw7XG4gIGF1dGhWYWx1ZTogUGFydG5lck1ldGhvZEFwaUF1dGg7XG4gIGhlYWRlcnM6IFBhcnRuZXJLZXlWYWx1ZUl0ZW1bXTtcbiAgLy8gSU5CT1VORC1zcGVjaWZpYyBwcm9wZXJ0aWVzXG4gIGluYm91bmRNZXRob2RUeXBlPzogSW5ib3VuZE1ldGhvZFR5cGU7IC8vIFR5cGUgb2YgSU5CT1VORCBtZXRob2Rcbn1cblxuZXhwb3J0IGVudW0gSW5ib3VuZE1ldGhvZFR5cGUge1xuICBTdGFuZGFyZCA9ICdTdGFuZGFyZCcsXG4gIFN0YXR1c01ldGhvZCA9ICdTdGF0dXNNZXRob2QnLFxufVxuXG5leHBvcnQgY2xhc3MgUGFydG5lck1ldGhvZEFwaUF1dGgge1xuICBoZWFkZXJOYW1lOiBzdHJpbmcgfCBudWxsO1xuICBhcGlLZXk6IHN0cmluZyB8IG51bGw7XG4gIGF1dGhUeXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyS2V5VmFsdWVJdGVtIHtcbiAga2V5OiBzdHJpbmc7XG4gIGtleU5hbWU6IHN0cmluZyB8IG51bGw7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgUGFydG5lclN0YXR1c01hcHBpbmcge1xuICBwYXJ0bmVyU3RhdHVzOiBzdHJpbmc7XG4gIGFwcFN0YXR1czogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUGFydG5lck1ldGhvZFVybCB7XG4gIHVybFZhbHVlOiBzdHJpbmc7XG4gIHRpbWVvdXQ6IG51bWJlcjtcbiAgdGVzdFVybDogc3RyaW5nO1xuICBwcm9kVXJsOiBzdHJpbmc7XG4gIHBhcmFtZXRlck1hcHBpbmdzOiBVcmxNYXBGaWVsZHNbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJNZXRob2RSZXNwb25zZSB7XG4gIGNvbnRlbnRUeXBlOiBzdHJpbmc7XG4gIGpzb25WYWx1ZTogc3RyaW5nO1xuICByZXNwb25zZU1hcEZpZWxkczogRmllbGRzTWFwcGluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgVXJsTWFwRmllbGRzIHtcbiAgdXJsUGFyYW1ldGVyOiBzdHJpbmc7XG4gIGZsdXhGaWVsZDogc3RyaW5nO1xuICBmbHV4RmllbGRJZDogc3RyaW5nO1xuICBmaWVsZFR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJNZXRob2RCb2R5IHtcbiAgY29udGVudFR5cGU6IHN0cmluZztcbiAganNvblZhbHVlOiBzdHJpbmc7XG4gIGJvZHlNYXBGaWVsZHM6IEZpZWxkc01hcHBpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEZpZWxkc01hcHBpbmcge1xuICBwYXJ0bmVyRmllbGQ6IHN0cmluZztcbiAgZmx1eEZpZWxkSWQ6IHN0cmluZztcbiAgbWV0aG9kRmllbGRJZDogc3RyaW5nO1xuICBmaWVsZFR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIE1ldGhvZEZpZWxkIHtcbiAgaWQ6IHN0cmluZztcbiAgZmllbGROYW1lOiBzdHJpbmc7XG4gIGZpZWxkVHlwZTogU3RlcENvbnRyb2xUeXBlIHwgRmx1eFR5cGUgfCBzdHJpbmc7XG4gIG1hbnVsSW5wdXRDb250cm9sVHlwZT86IE1hbnVhbElucHV0Q29udHJvbFR5cGUgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRNZXRob2RGaWVsZCB7XG4gIGlkOiBzdHJpbmc7XG4gIGZpZWxkTmFtZTogc3RyaW5nO1xuICBmaWVsZFR5cGU6IFN0ZXBDb250cm9sVHlwZSB8IEZsdXhUeXBlIHwgc3RyaW5nO1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBNYW51YWxJbnB1dENvbnRyb2xEYXRhIHtcbiAgdHlwZTogTWFudWFsSW5wdXRDb250cm9sVHlwZTtcbiAgaXNTaW1wbGVWYWxpZGF0aW9uOiBib29sZWFuO1xuICBpc0FwaVZhbGlkYXRpb246IGJvb2xlYW47XG4gIGFwaVZhbGlkYXRpb25NZXRob2Q/OiBzdHJpbmcgfCBudWxsO1xuICBhcGlWYWxpZGF0aW9uUGFydG5lcj86IHN0cmluZyB8IG51bGw7XG4gIGFsbG93ZWRDaGFyYWN0ZXJzPzogc3RyaW5nO1xuICBtYXhDaGFyYWN0ZXJzPzogbnVtYmVyO1xuICBtaW5WYWx1ZT86IG51bWJlcjtcbiAgbWF4VmFsdWU/OiBudW1iZXI7XG4gIGFsbG93T25seVBhc3Q/OiBib29sZWFuO1xuICBhbGxvd09ubHlGdXR1cmU/OiBib29sZWFuO1xuICBpc01hbmRhdG9yeTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcmFncmFwaENvbnRyb2xEYXRhIHtcbiAgZGVzY3JpcHRpb25UcmFuc2xhdGlvbnM6IExhYmVsSW5mb1tdO1xuICBpc01hbmRhdG9yeTogYm9vbGVhbjtcbiAgaXNNYW5kYXRvcnlUcmFuc2xhdGlvbnM/OiBMYWJlbEluZm9bXTtcbn1cblxuZXhwb3J0IGNsYXNzIERpY3Rpb25hcnlDb250cm9sRGF0YSB7XG4gIGRpY3Rpb25hcnlVVUlEOiBzdHJpbmc7XG4gIHNob3dBc1JhZGlvQnV0dG9uc0xpc3Q6IGJvb2xlYW47XG4gIHJlbGF0ZWREaWN0aW9uYXJpZXNUcmFuc2xhdGlvbnM6IERpY3Rpb25hcnlMYWJlbEluZm9bXTtcbiAgZGljdGlvbmFyeURlZmF1bHRWYWx1ZUlkPzogbnVtYmVyIHwgbnVsbDtcbiAgc2VsZWN0ZWRSZWxhdGVkRGljdGlvbmFyaWVzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGVudW0gRmx1eFR5cGUge1xuICBLeWMgPSAwLFxuICBFbWFpbCA9IDEsXG4gIFBob25lID0gMixcbiAgU2lnbiA9IDMsXG4gIFN0YXR1cyA9IDQsXG4gIEN1c3RvbSA9IDUsXG4gIFBhdXNlID0gNixcbiAgSWRTY2FuID0gNyxcbiAgR2VuZXJhdGVEb2N1bWVudCA9IDgsXG4gIEFjdGlvbiA9IDksXG4gIFVwbG9hZERvY3VtZW50ID0gMTAsXG4gIERvd25sb2FkRG9jdW1lbnQgPSAxMSxcbiAgVmlld09mZmVyID0gMTIsXG4gIEZpbmFsID0gMTMsXG4gIFZpZXdEb2N1bWVudCA9IDE0LFxuICBORVRPUElBID0gMTUsXG4gIEVVUExBVEVTQyA9IDE2LFxuICBPcGVuQmFua2luZyA9IDE3LFxufVxuXG5leHBvcnQgZW51bSBTZWN0aW9uVHlwZSB7XG4gIFByZXNlbnRhdGlvbixcbiAgQ29sbGVjdCxcbiAgRGlzcGxheSxcbn1cblxuZXhwb3J0IGVudW0gU3RlcENvbnRyb2xUeXBlIHtcbiAgTWFudWFsSW5wdXQgPSAwLFxuICBQYXJhZ3JhcGggPSAxLFxuICBDaGVja0JveCA9IDIsXG4gIERpY3Rpb25hcnkgPSAzLFxuICBCdXR0b25zID0gNCxcbiAgRmx1eEluZm8gPSA1LFxuICBOZXdSb3cgPSA2LFxuICBNZXRhZGF0YSA9IDcsXG4gIEFwaU1ldGhvZEZpZWxkID0gOCxcbiAgRG93bmxvYWREb2N1bWVudHMgPSA5LFxuICBWaWV3RG9jdW1lbnRzID0gMTAsXG4gIFVwbG9hZERvY3VtZW50cyA9IDExLFxufVxuXG5leHBvcnQgZW51bSBEaW1lbnNpb25UeXBlIHtcbiAgUGVyY2VudGFnZSxcbiAgUGl4ZWxzLFxufVxuXG5leHBvcnQgZW51bSBNYW51YWxJbnB1dENvbnRyb2xUeXBlIHtcbiAgVGV4dCxcbiAgTnVtZXJpYyxcbiAgRGF0ZVRpbWUsXG4gIEVtYWlsLFxuICBQaG9uZSxcbiAgVGV4dEFyZWEsXG59XG5cbmV4cG9ydCBlbnVtIFNpZ25hdHVyZVR5cGUge1xuICBFbGVjdHJvbmljLFxuICBIYW5kd3JpdHRlbixcbiAgUXVhbGlmaWVkLFxufVxuXG5leHBvcnQgZW51bSBBcGlNZXRob2RUeXBlIHtcbiAgR2V0RGF0YSxcbiAgU2VuZERhdGEsXG4gIFZhbGlkYXRpb24sXG59XG5cbmV4cG9ydCBjbGFzcyBTdGF0dXNNb2RlbCB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgb3JkZXI6IG51bWJlcjtcbiAgZmluYWw6IGJvb2xlYW47XG4gIGlzQWN0aXZlOiBib29sZWFuO1xuICBhY3Rpb25zOiBTdGF0dXNBY3Rpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZGVudW1pcmU6IHN0cmluZyxcbiAgICBvcmRpbmU6IG51bWJlcixcbiAgICBmaW5hbDogYm9vbGVhbixcbiAgICBpc0FjdGl2ZTogYm9vbGVhbixcbiAgICBhY3Rpb25zOiBTdGF0dXNBY3Rpb25bXVxuICApIHtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5uYW1lID0gZGVudW1pcmU7XG4gICAgdGhpcy5vcmRlciA9IG9yZGluZTtcbiAgICB0aGlzLmZpbmFsID0gZmluYWw7XG4gICAgdGhpcy5pc0FjdGl2ZSA9IGlzQWN0aXZlO1xuICAgIHRoaXMuYWN0aW9ucyA9IGFjdGlvbnM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN0YXR1c0FjdGlvbiB7XG4gIGlkPzogc3RyaW5nO1xuICBhY3Rpb25UaXRsZTogc3RyaW5nO1xuICBhcGlNZXRob2RJZDogc3RyaW5nO1xuICBwYXJ0bmVySWRzOiBudW1iZXJbXSA9IFtdO1xufVxuXG5leHBvcnQgY2xhc3MgUHJlc2VudGF0aW9uUGFyYWdyYXBoQ29udHJvbCBleHRlbmRzIFByZXNlbnRhdGlvbkNvbnRyb2wge1xuICBkZXNjcmlwdGlvblRyYW5zbGF0aW9uczogTGFiZWxJbmZvW107XG59XG5cblxuZXhwb3J0IGNsYXNzIEFwcFBhcnRuZXIgZXh0ZW5kcyBQYXJ0bmVyIHtcbiAgZG9jdW1lbnRzPzogQXBwUGFydG5lckRvY3VtZW50c1tdID0gW107XG4gIGdlbmVyYWxTZXR0aW5nczogQXBwUGFydG5lckdlbmVyYWxTZXR0aW5ncztcbiAgcGFydG5lclNldHRpbmdzOiBQYXJ0bmVyU2V0dGluZ3M7XG4gIHBhcnRuZXJEaWN0aW9uYXJ5TWFwcGluZzogUGFydG5lckRpY3Rpb25hcnlNYXBwaW5nW107XG4gIHBhcnRuZXJTdGF0dXNNYXBwaW5nOiBQYXJ0bmVyU3RhdHVzTWFwcGluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwUGFydG5lckdlbmVyYWxTZXR0aW5ncyB7XG4gIGFjY2VwdE11bHRpcGxlT2ZmZXJzOiBib29sZWFuO1xuICBvZmZlcnM6IEFwcFBhcnRuZXJHZW5lcmFsU2V0dGluZ3NPZmZlcltdID0gW107XG4gIHJlY2VpdmVkT2ZmZXJzOiBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzUmVjZWl2ZWRPZmZlcltdID0gW107XG4gIHZhbGFiaWxpdHk6IG51bWJlcjtcbiAgaGFzQ3VzdG9tVmFsYWJpbGl0eTogYm9vbGVhbjtcbiAgc3RhdHVzV29ya2VyU2V0dGluZ3M6IEFwcFN0YXR1c1dvcmtlclNldHRpbmdzO1xufVxuZXhwb3J0IGNsYXNzIEFwcFN0YXR1c1dvcmtlclNldHRpbmdzIHtcbiAgbWF4UmV0cmllczogbnVtYmVyO1xuICBsb29wSW50ZXJ2YWw6IG51bWJlcjtcbn1cbmV4cG9ydCBjbGFzcyBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzT2ZmZXIge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGFwaU1ldGhvZElkOiBzdHJpbmc7XG4gIGlkZW50aWZpZXI6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgY3VzdG9tVmFsYWJpbGl0eT86IG51bWJlcjtcbiAgYXBpTWV0aG9kRmllbGRzPzogYW55W10gPSBbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcFBhcnRuZXJHZW5lcmFsU2V0dGluZ3NSZWNlaXZlZE9mZmVyIHtcbiAgaWQ6IHN0cmluZztcbiAgb2ZmZXJzOiBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzT2ZmZXJbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcFBhcnRuZXJEb2N1bWVudHMge1xuICBpZDogc3RyaW5nO1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG4gIGRvY3VtZW50TmFtZTogc3RyaW5nO1xuICBhcGlNZXRob2RJZDogc3RyaW5nO1xuICBpc0VkaXRNb2RlOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwRG9jdW1lbnQge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRyYW5zbGF0aW9uczogTGFiZWxJbmZvW107XG4gIGdlbmVyYXRlZEJ5QXBwOiBib29sZWFuO1xuICBpc1N0YXRpYzogYm9vbGVhbjtcbiAgaXNBY3RpdmU6IGJvb2xlYW47XG4gIHZlcnNpb25zOiBBcHBEb2N1bWVudFZlcnNpb25bXSA9IFtdO1xufVxuZXhwb3J0IGNsYXNzIFNpZ25lZERvY3VtZW50IGV4dGVuZHMgQXBwRG9jdW1lbnQge1xuICBzb3VyY2VEb2N1bWVudHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcERvY3VtZW50RXh0ZW5kZWQgZXh0ZW5kcyBBcHBEb2N1bWVudCB7XG4gIGlzQXBpRG9jdW1lbnQ/OiBib29sZWFuOyBcbn1cblxuZXhwb3J0IGNsYXNzIEFwcERvY3VtZW50VmVyc2lvbiB7XG4gIGlkOiBudW1iZXI7XG4gIGFwcGxpY2F0aW9uSWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG4gIHZlcnNpb246IG51bWJlcjtcbiAgdmFsaWRGcm9tOiBEYXRlO1xuICB2YWxpZFRvOiBEYXRlIHwgdW5kZWZpbmVkO1xuICBpc0VkaXRNb2RlOiBib29sZWFuO1xuICBkYXRhOiBzdHJpbmcgfCBudWxsO1xuICBmbHV4Qm9va21hcmtzOiBCb29rbWFya01hcHBpbmdbXTtcbiAgaXNUZW1wb3Jhcnk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBCb29rbWFya01hcHBpbmcge1xuICBib29rbWFyazogc3RyaW5nO1xuICBjb250cm9sSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yVHJhbnNsYXRpb25zIHtcbiAgY29kZTogc3RyaW5nO1xuICB0cmFuc2xhdGlvbnM6IExhYmVsSW5mb1tdO1xufVxuXG5leHBvcnQgY2xhc3MgVXBsb2FkRG9jdW1lbnQge1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG4gIGZpbGVEYXRhOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBVcGxvYWREb2N1bWVudERldGFpbHMgZXh0ZW5kcyBVcGxvYWREb2N1bWVudCB7XG4gIGRvY3VtZW50TmFtZTogc3RyaW5nO1xuICBkb2N1bWVudEV4dGVuc2lvbnM6IHN0cmluZztcbiAgZG9jdW1lbnRNYXhTaXplOiBudW1iZXI7XG4gIGlzTWFuZGF0b3J5OiBib29sZWFuO1xuICBpc1VwbG9hZGluZzogYm9vbGVhbjtcbiAgaXNVcGxvYWRTdWNjZXNzOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgU3RlcHNTZXR0aW5ncyB7XG4gIHNob3dDb3VudGVyOiBib29sZWFuO1xuICBzaG93TGFiZWxzOiBib29sZWFuO1xuICBzaG93QWxsU3RlcHM6IGJvb2xlYW47XG4gIHNob3dQcm9ncmVzc0JhcjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGVudW0gQXBwRGF0YVN0YXR1cyB7XG4gIG5ldyA9IDAsXG4gIGZpbmlzaGVkID0gMSxcbn1cbiJdfQ==