@cqa-lib/cqa-ui 1.1.192 → 1.1.194
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.
- package/esm2020/lib/autocomplete/autocomplete.component.mjs +156 -0
- package/esm2020/lib/autocomplete/autocomplete.model.mjs +2 -0
- package/esm2020/lib/step-builder/step-builder-database/step-builder-database.component.mjs +29 -15
- package/esm2020/lib/step-builder/step-builder-document/step-builder-document.component.mjs +70 -7
- package/esm2020/lib/test-case-details/api-edit-step/api-edit-step.component.mjs +3 -3
- package/esm2020/lib/test-case-details/condition-step/condition-step.component.mjs +505 -17
- package/esm2020/lib/test-case-details/delete-steps/delete-steps.component.mjs +32 -11
- package/esm2020/lib/test-case-details/loop-step/loop-step.component.mjs +131 -9
- package/esm2020/lib/test-case-details/step-details-drawer/step-details-drawer-data.mjs +67 -1
- package/esm2020/lib/test-case-details/step-details-drawer/step-details-drawer-field.config.mjs +66 -1
- package/esm2020/lib/test-case-details/step-details-drawer/step-details-drawer.component.mjs +112 -191
- package/esm2020/lib/test-case-details/step-group/step-group.component.mjs +31 -3
- package/esm2020/lib/test-case-details/test-case-details-renderer/test-case-details-renderer.component.mjs +114 -5
- package/esm2020/lib/ui-kit.module.mjs +6 -1
- package/esm2020/public-api.mjs +3 -1
- package/fesm2015/cqa-lib-cqa-ui.mjs +1523 -466
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +1514 -462
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/autocomplete/autocomplete.component.d.ts +48 -0
- package/lib/autocomplete/autocomplete.model.d.ts +10 -0
- package/lib/step-builder/step-builder-database/step-builder-database.component.d.ts +6 -1
- package/lib/step-builder/step-builder-document/step-builder-document.component.d.ts +18 -1
- package/lib/test-case-details/condition-step/condition-step.component.d.ts +73 -4
- package/lib/test-case-details/delete-steps/delete-steps.component.d.ts +18 -2
- package/lib/test-case-details/loop-step/loop-step.component.d.ts +34 -4
- package/lib/test-case-details/step-details-drawer/step-details-drawer-data.d.ts +56 -0
- package/lib/test-case-details/step-details-drawer/step-details-drawer-field.config.d.ts +6 -0
- package/lib/test-case-details/step-details-drawer/step-details-drawer.component.d.ts +33 -27
- package/lib/test-case-details/step-group/step-group.component.d.ts +15 -1
- package/lib/test-case-details/test-case-details-renderer/test-case-details-renderer.component.d.ts +27 -4
- package/lib/ui-kit.module.d.ts +127 -126
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/styles.css +1 -1
|
@@ -31,6 +31,8 @@ export class TestCaseDetailsRendererComponent {
|
|
|
31
31
|
this.addStepForBranch = new EventEmitter();
|
|
32
32
|
this.deleteStepWithBranch = new EventEmitter();
|
|
33
33
|
this.addBranch = new EventEmitter();
|
|
34
|
+
/** Emitted when user clicks "Add Else" in a condition step; parent should call POST test_steps with conditionType CONDITION_ELSE */
|
|
35
|
+
this.addElse = new EventEmitter();
|
|
34
36
|
this.deleteBranch = new EventEmitter();
|
|
35
37
|
this.testDataProfileChange = new EventEmitter();
|
|
36
38
|
this.startStepChange = new EventEmitter();
|
|
@@ -41,6 +43,22 @@ export class TestCaseDetailsRendererComponent {
|
|
|
41
43
|
this.clickAction = new EventEmitter();
|
|
42
44
|
/** Emitted when a step is dropped in a nested dropzone (step-group, loop, condition). Payload: { event, targetList }. */
|
|
43
45
|
this.dndDropInZone = new EventEmitter();
|
|
46
|
+
/** Data profile options for loop steps */
|
|
47
|
+
this.dataProfileOptions = [];
|
|
48
|
+
/** Indicates if more data profiles are available for loading */
|
|
49
|
+
this.hasMoreDataProfiles = false;
|
|
50
|
+
/** Loading state for data profiles */
|
|
51
|
+
this.isLoadingDataProfiles = false;
|
|
52
|
+
/** Natural text actions options for while loop condition */
|
|
53
|
+
this.naturalTextActionsOptions = [];
|
|
54
|
+
/** Function to process template variables for condition steps */
|
|
55
|
+
this.setConditionTemplateVariables = () => [];
|
|
56
|
+
/** Emit when more data profiles need to be loaded */
|
|
57
|
+
this.loadMoreDataProfiles = new EventEmitter();
|
|
58
|
+
/** Emit when data profile search query changes */
|
|
59
|
+
this.searchDataProfiles = new EventEmitter();
|
|
60
|
+
/** Emit when a step is updated (e.g., Apply button clicked in loop-step edit mode) */
|
|
61
|
+
this.stepUpdate = new EventEmitter();
|
|
44
62
|
this.addStepBetweenClick = new EventEmitter();
|
|
45
63
|
this.componentRef = null;
|
|
46
64
|
}
|
|
@@ -48,7 +66,9 @@ export class TestCaseDetailsRendererComponent {
|
|
|
48
66
|
this.renderStep();
|
|
49
67
|
}
|
|
50
68
|
ngOnChanges(changes) {
|
|
51
|
-
if (changes['step'] || changes['index'] || changes['isNested'] || changes['isInsideLoop'] || changes['isReorder']
|
|
69
|
+
if (changes['step'] || changes['index'] || changes['isNested'] || changes['isInsideLoop'] || changes['isReorder'] ||
|
|
70
|
+
changes['dataProfileOptions'] || changes['hasMoreDataProfiles'] || changes['isLoadingDataProfiles'] ||
|
|
71
|
+
changes['naturalTextActionsOptions'] || changes['setConditionTemplateVariables']) {
|
|
52
72
|
this.renderStep();
|
|
53
73
|
}
|
|
54
74
|
}
|
|
@@ -106,13 +126,44 @@ export class TestCaseDetailsRendererComponent {
|
|
|
106
126
|
instance.nestedSteps = this.step.nestedSteps;
|
|
107
127
|
if (this.step.branches)
|
|
108
128
|
instance.branches = this.step.branches;
|
|
129
|
+
// Pass data profile inputs to step instances that can contain nested loop steps
|
|
130
|
+
if (isLoopStepConfig(this.step) || isConditionStepConfig(this.step) || isStepGroupConfig(this.step)) {
|
|
131
|
+
instance.dataProfileOptions = this.dataProfileOptions;
|
|
132
|
+
instance.hasMoreDataProfiles = this.hasMoreDataProfiles;
|
|
133
|
+
instance.isLoadingDataProfiles = this.isLoadingDataProfiles;
|
|
134
|
+
// Also pass natural text actions options (for nested loop steps with while loop and condition steps)
|
|
135
|
+
instance.naturalTextActionsOptions = this.naturalTextActionsOptions;
|
|
136
|
+
}
|
|
137
|
+
// Pass natural text actions options to loop steps (for while loop condition)
|
|
138
|
+
if (isLoopStepConfig(this.step)) {
|
|
139
|
+
instance.naturalTextActionsOptions = this.naturalTextActionsOptions;
|
|
140
|
+
}
|
|
141
|
+
// Pass natural text actions options and template variables function to condition steps
|
|
142
|
+
if (isConditionStepConfig(this.step)) {
|
|
143
|
+
instance.naturalTextActionsOptions = this.naturalTextActionsOptions;
|
|
144
|
+
instance.setConditionTemplateVariables = this.setConditionTemplateVariables;
|
|
145
|
+
}
|
|
109
146
|
this.wireOutputs(instance);
|
|
110
147
|
this.cdr.detectChanges();
|
|
111
148
|
}
|
|
112
149
|
wireOutputs(instance) {
|
|
150
|
+
// Store subscriptions on the instance to prevent duplicates
|
|
151
|
+
if (!instance._cqaSubscriptions) {
|
|
152
|
+
instance._cqaSubscriptions = new Map();
|
|
153
|
+
}
|
|
154
|
+
const subscriptions = instance._cqaSubscriptions;
|
|
113
155
|
const wire = (key, emitter) => {
|
|
114
156
|
if (instance[key] && typeof instance[key].subscribe === 'function') {
|
|
115
|
-
|
|
157
|
+
// Unsubscribe from previous subscription if exists
|
|
158
|
+
const existingSub = subscriptions.get(key);
|
|
159
|
+
if (existingSub) {
|
|
160
|
+
existingSub.unsubscribe();
|
|
161
|
+
}
|
|
162
|
+
// Create new subscription
|
|
163
|
+
const subscription = instance[key].subscribe((v) => {
|
|
164
|
+
emitter.emit(v);
|
|
165
|
+
});
|
|
166
|
+
subscriptions.set(key, subscription);
|
|
116
167
|
}
|
|
117
168
|
};
|
|
118
169
|
wire('nestedStepChange', this.nestedStepChange);
|
|
@@ -160,7 +211,18 @@ export class TestCaseDetailsRendererComponent {
|
|
|
160
211
|
});
|
|
161
212
|
wire('link', this.link);
|
|
162
213
|
wire('duplicate', this.duplicate);
|
|
163
|
-
|
|
214
|
+
// Wire delete event - intercept and emit with step data
|
|
215
|
+
if (instance.delete && typeof instance.delete.subscribe === 'function') {
|
|
216
|
+
const existingSub = subscriptions.get('delete');
|
|
217
|
+
if (existingSub) {
|
|
218
|
+
existingSub.unsubscribe();
|
|
219
|
+
}
|
|
220
|
+
const deleteSub = instance.delete.subscribe(() => {
|
|
221
|
+
// Emit delete with the current step data so parent knows which step is being deleted
|
|
222
|
+
this.delete.emit({ step: this.step });
|
|
223
|
+
});
|
|
224
|
+
subscriptions.set('delete', deleteSub);
|
|
225
|
+
}
|
|
164
226
|
wire('viewDetails', this.viewDetails);
|
|
165
227
|
wire('selectionChange', this.selectionChange);
|
|
166
228
|
wire('conditionChange', this.conditionChange);
|
|
@@ -168,6 +230,7 @@ export class TestCaseDetailsRendererComponent {
|
|
|
168
230
|
wire('addStepForBranch', this.addStepForBranch);
|
|
169
231
|
wire('deleteStepWithBranch', this.deleteStepWithBranch);
|
|
170
232
|
wire('addBranch', this.addBranch);
|
|
233
|
+
wire('addElse', this.addElse);
|
|
171
234
|
wire('deleteBranch', this.deleteBranch);
|
|
172
235
|
wire('testDataProfileChange', this.testDataProfileChange);
|
|
173
236
|
wire('startStepChange', this.startStepChange);
|
|
@@ -177,11 +240,39 @@ export class TestCaseDetailsRendererComponent {
|
|
|
177
240
|
wire('parameterChange', this.parameterChange);
|
|
178
241
|
wire('clickAction', this.clickAction);
|
|
179
242
|
wire('dndDropInZone', this.dndDropInZone);
|
|
243
|
+
wire('loadMoreDataProfiles', this.loadMoreDataProfiles);
|
|
244
|
+
wire('searchDataProfiles', this.searchDataProfiles);
|
|
180
245
|
wire('addStepBetweenClick', this.addStepBetweenClick);
|
|
246
|
+
// Wire stepUpdate - check if it exists on instance
|
|
247
|
+
if (instance.stepUpdate) {
|
|
248
|
+
console.log('Renderer: Found stepUpdate EventEmitter, wiring it');
|
|
249
|
+
wire('stepUpdate', this.stepUpdate);
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
console.warn('Renderer: stepUpdate EventEmitter not found on instance during wireOutputs', {
|
|
253
|
+
stepId: this.step?.id,
|
|
254
|
+
stepType: this.step?.stepType,
|
|
255
|
+
instanceKeys: Object.keys(instance)
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
ngOnDestroy() {
|
|
260
|
+
// Clean up subscriptions when component is destroyed
|
|
261
|
+
if (this.componentRef?.instance) {
|
|
262
|
+
const subscriptions = this.componentRef.instance._cqaSubscriptions;
|
|
263
|
+
if (subscriptions) {
|
|
264
|
+
subscriptions.forEach((sub) => {
|
|
265
|
+
if (sub && typeof sub.unsubscribe === 'function') {
|
|
266
|
+
sub.unsubscribe();
|
|
267
|
+
}
|
|
268
|
+
});
|
|
269
|
+
subscriptions.clear();
|
|
270
|
+
}
|
|
271
|
+
}
|
|
181
272
|
}
|
|
182
273
|
}
|
|
183
274
|
TestCaseDetailsRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TestCaseDetailsRendererComponent, deps: [{ token: TEST_CASE_STEP_COMPONENT_MAP }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
184
|
-
TestCaseDetailsRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: TestCaseDetailsRendererComponent, selector: "cqa-test-case-details-renderer", inputs: { step: "step", index: "index", isNested: "isNested", isInsideLoop: "isInsideLoop", branch: "branch", isReorder: "isReorder", addStepBetween: "addStepBetween" }, outputs: { nestedStepChange: "nestedStepChange", addStep: "addStep", deleteStep: "deleteStep", toggleExpanded: "toggleExpanded", groupNameChange: "groupNameChange", descriptionChange: "descriptionChange", reusableChange: "reusableChange", openExternal: "openExternal", edit: "edit", link: "link", duplicate: "duplicate", delete: "delete", viewDetails: "viewDetails", selectionChange: "selectionChange", conditionChange: "conditionChange", branchStepChange: "branchStepChange", addStepForBranch: "addStepForBranch", deleteStepWithBranch: "deleteStepWithBranch", addBranch: "addBranch", deleteBranch: "deleteBranch", testDataProfileChange: "testDataProfileChange", startStepChange: "startStepChange", endStepChange: "endStepChange", maxIterationsChange: "maxIterationsChange", eventTypeChange: "eventTypeChange", parameterChange: "parameterChange", clickAction: "clickAction", dndDropInZone: "dndDropInZone", addStepBetweenClick: "addStepBetweenClick" }, host: { classAttribute: "cqa-ui-root" }, viewQueries: [{ propertyName: "stepHost", first: true, predicate: ["stepHost"], descendants: true, read: ViewContainerRef }], usesOnChanges: true, ngImport: i0, template: "<div class=\"cqa-relative\">\n <button *ngIf=\"addStepBetween\" class=\"cqa-absolute cqa-top-[calc(100%-12px)] cqa-left-[50%] cqa-translate-x-[-50%] cqa-p-0 cqa-z-[1]\" (click)=\"addStepBetweenClick.emit({step: step, index: index})\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"1\" y=\"1\" width=\"21.1822\" height=\"22\" rx=\"10.5911\" fill=\"white\"/><rect x=\"1\" y=\"1\" width=\"21.1822\" height=\"22\" rx=\"10.5911\" stroke=\"#3F43EE\" stroke-width=\"2\"/><path d=\"M8.5 12H15.5\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M12 8.5V15.5\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </button>\n <ng-container #stepHost></ng-container>\n <button *ngIf=\"addStepBetween\" class=\"cqa-absolute cqa-top-[calc(100%-12px)] cqa-left-[50%] cqa-translate-x-[-50%] cqa-p-0 cqa-z-[1]\" (click)=\"addStepBetweenClick.emit({step: step, index: index})\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"1\" y=\"1\" width=\"21.1822\" height=\"22\" rx=\"10.5911\" fill=\"white\"/><rect x=\"1\" y=\"1\" width=\"21.1822\" height=\"22\" rx=\"10.5911\" stroke=\"#3F43EE\" stroke-width=\"2\"/><path d=\"M8.5 12H15.5\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M12 8.5V15.5\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </button>\n</div>", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
275
|
+
TestCaseDetailsRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: TestCaseDetailsRendererComponent, selector: "cqa-test-case-details-renderer", inputs: { step: "step", index: "index", isNested: "isNested", isInsideLoop: "isInsideLoop", branch: "branch", isReorder: "isReorder", addStepBetween: "addStepBetween", dataProfileOptions: "dataProfileOptions", hasMoreDataProfiles: "hasMoreDataProfiles", isLoadingDataProfiles: "isLoadingDataProfiles", naturalTextActionsOptions: "naturalTextActionsOptions", setConditionTemplateVariables: "setConditionTemplateVariables" }, outputs: { nestedStepChange: "nestedStepChange", addStep: "addStep", deleteStep: "deleteStep", toggleExpanded: "toggleExpanded", groupNameChange: "groupNameChange", descriptionChange: "descriptionChange", reusableChange: "reusableChange", openExternal: "openExternal", edit: "edit", link: "link", duplicate: "duplicate", delete: "delete", viewDetails: "viewDetails", selectionChange: "selectionChange", conditionChange: "conditionChange", branchStepChange: "branchStepChange", addStepForBranch: "addStepForBranch", deleteStepWithBranch: "deleteStepWithBranch", addBranch: "addBranch", addElse: "addElse", deleteBranch: "deleteBranch", testDataProfileChange: "testDataProfileChange", startStepChange: "startStepChange", endStepChange: "endStepChange", maxIterationsChange: "maxIterationsChange", eventTypeChange: "eventTypeChange", parameterChange: "parameterChange", clickAction: "clickAction", dndDropInZone: "dndDropInZone", loadMoreDataProfiles: "loadMoreDataProfiles", searchDataProfiles: "searchDataProfiles", stepUpdate: "stepUpdate", addStepBetweenClick: "addStepBetweenClick" }, host: { classAttribute: "cqa-ui-root" }, viewQueries: [{ propertyName: "stepHost", first: true, predicate: ["stepHost"], descendants: true, read: ViewContainerRef }], usesOnChanges: true, ngImport: i0, template: "<div class=\"cqa-relative\">\n <button *ngIf=\"addStepBetween\" class=\"cqa-absolute cqa-top-[calc(100%-12px)] cqa-left-[50%] cqa-translate-x-[-50%] cqa-p-0 cqa-z-[1]\" (click)=\"addStepBetweenClick.emit({step: step, index: index})\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"1\" y=\"1\" width=\"21.1822\" height=\"22\" rx=\"10.5911\" fill=\"white\"/><rect x=\"1\" y=\"1\" width=\"21.1822\" height=\"22\" rx=\"10.5911\" stroke=\"#3F43EE\" stroke-width=\"2\"/><path d=\"M8.5 12H15.5\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M12 8.5V15.5\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </button>\n <ng-container #stepHost></ng-container>\n <button *ngIf=\"addStepBetween\" class=\"cqa-absolute cqa-top-[calc(100%-12px)] cqa-left-[50%] cqa-translate-x-[-50%] cqa-p-0 cqa-z-[1]\" (click)=\"addStepBetweenClick.emit({step: step, index: index})\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"1\" y=\"1\" width=\"21.1822\" height=\"22\" rx=\"10.5911\" fill=\"white\"/><rect x=\"1\" y=\"1\" width=\"21.1822\" height=\"22\" rx=\"10.5911\" stroke=\"#3F43EE\" stroke-width=\"2\"/><path d=\"M8.5 12H15.5\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M12 8.5V15.5\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </button>\n</div>", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
185
276
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TestCaseDetailsRendererComponent, decorators: [{
|
|
186
277
|
type: Component,
|
|
187
278
|
args: [{ selector: 'cqa-test-case-details-renderer', host: { class: 'cqa-ui-root' }, template: "<div class=\"cqa-relative\">\n <button *ngIf=\"addStepBetween\" class=\"cqa-absolute cqa-top-[calc(100%-12px)] cqa-left-[50%] cqa-translate-x-[-50%] cqa-p-0 cqa-z-[1]\" (click)=\"addStepBetweenClick.emit({step: step, index: index})\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"1\" y=\"1\" width=\"21.1822\" height=\"22\" rx=\"10.5911\" fill=\"white\"/><rect x=\"1\" y=\"1\" width=\"21.1822\" height=\"22\" rx=\"10.5911\" stroke=\"#3F43EE\" stroke-width=\"2\"/><path d=\"M8.5 12H15.5\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M12 8.5V15.5\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </button>\n <ng-container #stepHost></ng-container>\n <button *ngIf=\"addStepBetween\" class=\"cqa-absolute cqa-top-[calc(100%-12px)] cqa-left-[50%] cqa-translate-x-[-50%] cqa-p-0 cqa-z-[1]\" (click)=\"addStepBetweenClick.emit({step: step, index: index})\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"1\" y=\"1\" width=\"21.1822\" height=\"22\" rx=\"10.5911\" fill=\"white\"/><rect x=\"1\" y=\"1\" width=\"21.1822\" height=\"22\" rx=\"10.5911\" stroke=\"#3F43EE\" stroke-width=\"2\"/><path d=\"M8.5 12H15.5\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M12 8.5V15.5\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </button>\n</div>" }]
|
|
@@ -243,6 +334,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
243
334
|
type: Output
|
|
244
335
|
}], addBranch: [{
|
|
245
336
|
type: Output
|
|
337
|
+
}], addElse: [{
|
|
338
|
+
type: Output
|
|
246
339
|
}], deleteBranch: [{
|
|
247
340
|
type: Output
|
|
248
341
|
}], testDataProfileChange: [{
|
|
@@ -261,7 +354,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
261
354
|
type: Output
|
|
262
355
|
}], dndDropInZone: [{
|
|
263
356
|
type: Output
|
|
357
|
+
}], dataProfileOptions: [{
|
|
358
|
+
type: Input
|
|
359
|
+
}], hasMoreDataProfiles: [{
|
|
360
|
+
type: Input
|
|
361
|
+
}], isLoadingDataProfiles: [{
|
|
362
|
+
type: Input
|
|
363
|
+
}], naturalTextActionsOptions: [{
|
|
364
|
+
type: Input
|
|
365
|
+
}], setConditionTemplateVariables: [{
|
|
366
|
+
type: Input
|
|
367
|
+
}], loadMoreDataProfiles: [{
|
|
368
|
+
type: Output
|
|
369
|
+
}], searchDataProfiles: [{
|
|
370
|
+
type: Output
|
|
371
|
+
}], stepUpdate: [{
|
|
372
|
+
type: Output
|
|
264
373
|
}], addStepBetweenClick: [{
|
|
265
374
|
type: Output
|
|
266
375
|
}] } });
|
|
267
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1jYXNlLWRldGFpbHMtcmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlci90ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3Rlc3QtY2FzZS1kZXRhaWxzLXJlbmRlcmVyL3Rlc3QtY2FzZS1kZXRhaWxzLXJlbmRlcmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxFQUNULGdCQUFnQixFQUdoQixNQUFNLEdBSVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLDRCQUE0QixFQUE0QixNQUFNLG9DQUFvQyxDQUFDO0FBQzVHLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQiwwQkFBMEIsRUFDMUIsc0JBQXNCLEdBRXZCLE1BQU0sMEJBQTBCLENBQUM7OztBQU9sQyxNQUFNLE9BQU8sZ0NBQWdDO0lBOEMzQyxZQUNnRCxZQUFzQyxFQUM1RSxHQUFzQjtRQURnQixpQkFBWSxHQUFaLFlBQVksQ0FBMEI7UUFDNUUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUEzQ3ZCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFHdkMsaUdBQWlHO1FBQ3hGLGNBQVMsR0FBWSxLQUFL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QkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUcsYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIEluamVjdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBURVNUX0NBU0VfU1RFUF9DT01QT05FTlRfTUFQLCBUZXN0Q2FzZVN0ZXBDb21wb25lbnRNYXAgfSBmcm9tICcuLi90ZXN0LWNhc2Utc3RlcC1jb21wb25lbnRzLnRva2VuJztcbmltcG9ydCB7XG4gIFRlc3RDYXNlU3RlcENvbmZpZyxcbiAgaXNTdGVwR3JvdXBDb25maWcsXG4gIGlzQ29uZGl0aW9uU3RlcENvbmZpZyxcbiAgaXNMb29wU3RlcENvbmZpZyxcbiAgaXNOb3JtYWxTdGVwQ29uZmlnLFxuICBpc0FwaVN0ZXBDb25maWcsXG4gIGlzRGF0YWJhc2VTdGVwQ29uZmlnLFxuICBpc0FpQWdlbnRTdGVwQ29uZmlnLFxuICBpc0FpVmVyaWZ5U3RlcENvbmZpZyxcbiAgaXNVcGxvYWRTdGVwQ29uZmlnLFxuICBpc1NjcmVlbnNob3RTdGVwQ29uZmlnLFxuICBpc1Njcm9sbFN0ZXBDb25maWcsXG4gIGlzVmVyaWZ5VXJsU3RlcENvbmZpZyxcbiAgaXNSZXN0b3JlU2Vzc2lvblN0ZXBDb25maWcsXG4gIGlzQ3VzdG9tQ29kZVN0ZXBDb25maWcsXG4gIENvbmRpdGlvbkJyYW5jaCxcbn0gZnJvbSAnLi4vdGVzdC1jYXNlLXN0ZXAubW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLXRlc3QtY2FzZS1kZXRhaWxzLXJlbmRlcmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rlc3QtY2FzZS1kZXRhaWxzLXJlbmRlcmVyLmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9LFxufSlcbmV4cG9ydCBjbGFzcyBUZXN0Q2FzZURldGFpbHNSZW5kZXJlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3N0ZXBIb3N0JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIHN0ZXBIb3N0ITogVmlld0NvbnRhaW5lclJlZjtcblxuICBASW5wdXQoKSBzdGVwITogVGVzdENhc2VTdGVwQ29uZmlnO1xuICBASW5wdXQoKSBpbmRleCE6IG51bWJlcjtcbiAgQElucHV0KCkgaXNOZXN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaXNJbnNpZGVMb29wOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBXaGVuIHJlbmRlcmluZyBhIHN0ZXAgaW5zaWRlIGEgY29uZGl0aW9uIGJyYW5jaCwgdGhlIGJyYW5jaCBjb250ZXh0IChmb3IgYWRkU3RlcEZvckJyYW5jaCAvIGRlbGV0ZVN0ZXBXaXRoQnJhbmNoKS4gKi9cbiAgQElucHV0KCkgYnJhbmNoPzogQ29uZGl0aW9uQnJhbmNoO1xuICAvKiogV2hlbiB0cnVlLCBlbmFibGVzIGRyYWctYW5kLWRyb3AgcmVvcmRlcmluZyBhbmQgc2hvd3MgZHJhZyBoYW5kbGUgaWNvbiBpbnN0ZWFkIG9mIGNoZWNrYm94ICovXG4gIEBJbnB1dCgpIGlzUmVvcmRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBhZGRTdGVwQmV0d2VlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBuZXN0ZWRTdGVwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZzsgaW5kZXg6IG51bWJlciB9PigpO1xuICBAT3V0cHV0KCkgYWRkU3RlcCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGRlbGV0ZVN0ZXAgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIHRvZ2dsZUV4cGFuZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuIHwge2NvbmZpZzogVGVzdENhc2VTdGVwQ29uZmlnLCBleHBhbmRlZDogYm9vbGVhbn0+KCk7XG4gIEBPdXRwdXQoKSBncm91cE5hbWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGRlc2NyaXB0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSByZXVzYWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIG9wZW5FeHRlcm5hbCA9IG5ldyBFdmVudEVtaXR0ZXI8e3N0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZ30+KCk7XG4gIEBPdXRwdXQoKSBlZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjx7c3RlcDogVGVzdENhc2VTdGVwQ29uZmlnLCBpbmRleDogbnVtYmVyfT4oKTtcbiAgQE91dHB1dCgpIGxpbmsgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBkdXBsaWNhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSB2aWV3RGV0YWlscyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIGNvbmRpdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgYnJhbmNoU3RlcENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBicmFuY2g6IENvbmRpdGlvbkJyYW5jaDsgc3RlcDogVGVzdENhc2VTdGVwQ29uZmlnOyBzdGVwSW5kZXg6IG51bWJlciB9PigpO1xuICBAT3V0cHV0KCkgYWRkU3RlcEZvckJyYW5jaCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBicmFuY2g6IENvbmRpdGlvbkJyYW5jaCB9PigpO1xuICBAT3V0cHV0KCkgZGVsZXRlU3RlcFdpdGhCcmFuY2ggPSBuZXcgRXZlbnRFbWl0dGVyPHsgYnJhbmNoOiBDb25kaXRpb25CcmFuY2g7IHN0ZXBJbmRleDogbnVtYmVyIH0+KCk7XG4gIEBPdXRwdXQoKSBhZGRCcmFuY2ggPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGVCcmFuY2ggPSBuZXcgRXZlbnRFbWl0dGVyPENvbmRpdGlvbkJyYW5jaD4oKTtcbiAgQE91dHB1dCgpIHRlc3REYXRhUHJvZmlsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgc3RhcnRTdGVwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBlbmRTdGVwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBtYXhJdGVyYXRpb25zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBldmVudFR5cGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHBhcmFtZXRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgY2xpY2tBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XG4gIC8qKiBFbWl0dGVkIHdoZW4gYSBzdGVwIGlzIGRyb3BwZWQgaW4gYSBuZXN0ZWQgZHJvcHpvbmUgKHN0ZXAtZ3JvdXAsIGxvb3AsIGNvbmRpdGlvbikuIFBheWxvYWQ6IHsgZXZlbnQsIHRhcmdldExpc3QgfS4gKi9cbiAgQE91dHB1dCgpIGRuZERyb3BJblpvbmUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZXZlbnQ6IGFueTsgdGFyZ2V0TGlzdDogVGVzdENhc2VTdGVwQ29uZmlnW10gfT4oKTtcbiAgQE91dHB1dCgpIGFkZFN0ZXBCZXR3ZWVuQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHtzdGVwOiBUZXN0Q2FzZVN0ZXBDb25maWcsIGluZGV4OiBudW1iZXJ9PigpO1xuXG4gIHByaXZhdGUgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoVEVTVF9DQVNFX1NURVBfQ09NUE9ORU5UX01BUCkgcHJpdmF0ZSBjb21wb25lbnRNYXA6IFRlc3RDYXNlU3RlcENvbXBvbmVudE1hcCxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlclN0ZXAoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snc3RlcCddIHx8IGNoYW5nZXNbJ2luZGV4J10gfHwgY2hhbmdlc1snaXNOZXN0ZWQnXSB8fCBjaGFuZ2VzWydpc0luc2lkZUxvb3AnXSB8fCBjaGFuZ2VzWydpc1Jlb3JkZXInXSkge1xuICAgICAgdGhpcy5yZW5kZXJTdGVwKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb21wb25lbnRUeXBlKHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZyk6IGFueSB7XG4gICAgaWYgKGlzU3RlcEdyb3VwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAuc3RlcEdyb3VwO1xuICAgIGlmIChpc0NvbmRpdGlvblN0ZXBDb25maWcoc3RlcCkpIHJldHVybiB0aGlzLmNvbXBvbmVudE1hcC5jb25kaXRpb25TdGVwO1xuICAgIGlmIChpc0xvb3BTdGVwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAubG9vcFN0ZXA7XG4gICAgaWYgKGlzQXBpU3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLmFwaVN0ZXA7XG4gICAgaWYgKGlzRGF0YWJhc2VTdGVwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAuZGF0YWJhc2VTdGVwO1xuICAgIGlmIChpc0FpQWdlbnRTdGVwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAuYWlBZ2VudFN0ZXA7XG4gICAgaWYgKGlzQWlWZXJpZnlTdGVwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAuYWlWZXJpZnlTdGVwO1xuICAgIGlmIChpc1VwbG9hZFN0ZXBDb25maWcoc3RlcCkpIHJldHVybiB0aGlzLmNvbXBvbmVudE1hcC51cGxvYWRTdGVwO1xuICAgIGlmIChpc1NjcmVlbnNob3RTdGVwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAuc2NyZWVuc2hvdFN0ZXA7XG4gICAgaWYgKGlzU2Nyb2xsU3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLnNjcm9sbFN0ZXA7XG4gICAgaWYgKGlzVmVyaWZ5VXJsU3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLnZlcmlmeVVybFN0ZXA7XG4gICAgaWYgKGlzUmVzdG9yZVNlc3Npb25TdGVwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAucmVzdG9yZVNlc3Npb25TdGVwO1xuICAgIGlmIChpc0N1c3RvbUNvZGVTdGVwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAuY3VzdG9tQ29kZVN0ZXA7XG4gICAgaWYgKGlzTm9ybWFsU3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLm5vcm1hbFN0ZXA7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclN0ZXAoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN0ZXBIb3N0IHx8ICF0aGlzLnN0ZXApIHJldHVybjtcblxuICAgIGNvbnN0IGNvbXBvbmVudFR5cGUgPSB0aGlzLmdldENvbXBvbmVudFR5cGUodGhpcy5zdGVwKTtcbiAgICBpZiAoIWNvbXBvbmVudFR5cGUpIHJldHVybjtcblxuICAgIHRoaXMuc3RlcEhvc3QuY2xlYXIoKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMuc3RlcEhvc3QuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudFR5cGUpO1xuICAgIGNvbnN0IGluc3RhbmNlID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U7XG5cbiAgICBpbnN0YW5jZS5jb25maWcgPSB0aGlzLnN0ZXA7XG4gICAgaW5zdGFuY2Uuc3RlcE51bWJlciA9ICh0aGlzLnN0ZXAgYXMgYW55KS5zdGVwTnVtYmVyO1xuICAgIGluc3RhbmNlLmlzTmVzdGVkID0gdGhpcy5pc05lc3RlZDtcbiAgICBpbnN0YW5jZS5pc0luc2lkZUxvb3AgPSB0aGlzLmlzSW5zaWRlTG9vcDtcbiAgICBpbnN0YW5jZS5pc1Jlb3JkZXIgPSB0aGlzLmlzUmVvcmRlcjtcbiAgICBPYmplY3Qua2V5cyh0aGlzLnN0ZXApLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKGtleSAhPT0gJ3N0ZXBUeXBlJyAmJiBrZXkgIT09ICduZXN0ZWRTdGVwcycgJiYga2V5ICE9PSAnYnJhbmNoZXMnKSB7XG4gICAgICAgIChpbnN0YW5jZSBhcyBhbnkpW2tleV0gPSAodGhpcy5zdGVwIGFzIGFueSlba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoKHRoaXMuc3RlcCBhcyBhbnkpLm5lc3RlZFN0ZXBzKSAoaW5zdGFuY2UgYXMgYW55KS5uZXN0ZWRTdGVwcyA9ICh0aGlzLnN0ZXAgYXMgYW55KS5uZXN0ZWRTdGVwcztcbiAgICBpZiAoKHRoaXMuc3RlcCBhcyBhbnkpLmJyYW5jaGVzKSAoaW5zdGFuY2UgYXMgYW55KS5icmFuY2hlcyA9ICh0aGlzLnN0ZXAgYXMgYW55KS5icmFuY2hlcztcblxuICAgIHRoaXMud2lyZU91dHB1dHMoaW5zdGFuY2UpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgd2lyZU91dHB1dHMoaW5zdGFuY2U6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHdpcmUgPSAoa2V5OiBzdHJpbmcsIGVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+KSA9PiB7XG4gICAgICBpZiAoaW5zdGFuY2Vba2V5XSAmJiB0eXBlb2YgaW5zdGFuY2Vba2V5XS5zdWJzY3JpYmUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgaW5zdGFuY2Vba2V5XS5zdWJzY3JpYmUoKHY6IGFueSkgPT4gZW1pdHRlci5lbWl0KHYpKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHdpcmUoJ25lc3RlZFN0ZXBDaGFuZ2UnLCB0aGlzLm5lc3RlZFN0ZXBDaGFuZ2UgYXMgYW55KTtcbiAgICB3aXJlKCdhZGRTdGVwJywge1xuICAgICAgZW1pdDogKHY6IGFueSkgPT4ge1xuICAgICAgICBpZiAodiAhPSBudWxsICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiAnYnJhbmNoJyBpbiB2KSB0aGlzLmFkZFN0ZXBGb3JCcmFuY2guZW1pdCh2KTtcbiAgICAgICAgZWxzZSB0aGlzLmFkZFN0ZXAuZW1pdCh2KTtcbiAgICAgIH0sXG4gICAgfSBhcyBhbnkpO1xuICAgIHdpcmUoJ2RlbGV0ZVN0ZXAnLCB7XG4gICAgICBlbWl0OiAodjogYW55KSA9PiB7XG4gICAgICAgIGlmICh2ICE9IG51bGwgJiYgdHlwZW9mIHYgPT09ICdvYmplY3QnICYmICdicmFuY2gnIGluIHYgJiYgJ3N0ZXBJbmRleCcgaW4gdikgdGhpcy5kZWxldGVTdGVwV2l0aEJyYW5jaC5lbWl0KHYpO1xuICAgICAgICBlbHNlIHRoaXMuZGVsZXRlU3RlcC5lbWl0KHYpO1xuICAgICAgfSxcbiAgICB9IGFzIGFueSk7XG4gICAgd2lyZSgndG9nZ2xlRXhwYW5kZWQnLCB7XG4gICAgICBlbWl0OiAodjogYW55KSA9PiB7XG4gICAgICAgIC8vIEhhbmRsZSBib3RoIGJvb2xlYW4gYW5kIG9iamVjdCBmb3JtYXRzXG4gICAgICAgIC8vIElmIGl0J3MgYW4gb2JqZWN0IHdpdGggY29uZmlnIGFuZCBleHBhbmRlZCwgZW1pdCBpdCBhcy1pc1xuICAgICAgICAvLyBJZiBpdCdzIGp1c3QgYSBib29sZWFuLCBlbWl0IGl0IGFzLWlzXG4gICAgICAgIHRoaXMudG9nZ2xlRXhwYW5kZWQuZW1pdCh2KTtcbiAgICAgIH0sXG4gICAgfSBhcyBhbnkpO1xuICAgIHdpcmUoJ2dyb3VwTmFtZUNoYW5nZScsIHRoaXMuZ3JvdXBOYW1lQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgnZGVzY3JpcHRpb25DaGFuZ2UnLCB0aGlzLmRlc2NyaXB0aW9uQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgncmV1c2FibGVDaGFuZ2UnLCB0aGlzLnJldXNhYmxlQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgnb3BlbkV4dGVybmFsJywgdGhpcy5vcGVuRXh0ZXJuYWwgYXMgYW55KTtcbiAgICB3aXJlKCdlZGl0Jywge1xuICAgICAgZW1pdDogKHY6IGFueSkgPT4ge1xuICAgICAgICAvLyBJZiBjaGlsZCBjb21wb25lbnQgZW1pdHMgdm9pZCBvciBub3RoaW5nLCB1c2UgY3VycmVudCBzdGVwIGFuZCBpbmRleFxuICAgICAgICAvLyBJZiBjaGlsZCBjb21wb25lbnQgYWxyZWFkeSBlbWl0cyBhbiBvYmplY3QsIG1lcmdlIGl0IHdpdGggc3RlcCBhbmQgaW5kZXhcbiAgICAgICAgaWYgKHYgIT0gbnVsbCAmJiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgJ3N0ZXAnIGluIHYgJiYgJ2luZGV4JyBpbiB2KSB7XG4gICAgICAgICAgLy8gQWxyZWFkeSBoYXMgc3RlcCBhbmQgaW5kZXgsIGVtaXQgYXMtaXNcbiAgICAgICAgICB0aGlzLmVkaXQuZW1pdCh2KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBFbWl0IHdpdGggY3VycmVudCBzdGVwIGFuZCBpbmRleFxuICAgICAgICAgIHRoaXMuZWRpdC5lbWl0KHsgc3RlcDogdGhpcy5zdGVwLCBpbmRleDogdGhpcy5pbmRleCB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9IGFzIGFueSk7XG4gICAgd2lyZSgnbGluaycsIHRoaXMubGluayBhcyBhbnkpO1xuICAgIHdpcmUoJ2R1cGxpY2F0ZScsIHRoaXMuZHVwbGljYXRlIGFzIGFueSk7XG4gICAgd2lyZSgnZGVsZXRlJywgdGhpcy5kZWxldGUgYXMgYW55KTtcbiAgICB3aXJlKCd2aWV3RGV0YWlscycsIHRoaXMudmlld0RldGFpbHMgYXMgYW55KTtcbiAgICB3aXJlKCdzZWxlY3Rpb25DaGFuZ2UnLCB0aGlzLnNlbGVjdGlvbkNoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ2NvbmRpdGlvbkNoYW5nZScsIHRoaXMuY29uZGl0aW9uQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgnYnJhbmNoU3RlcENoYW5nZScsIHRoaXMuYnJhbmNoU3RlcENoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ2FkZFN0ZXBGb3JCcmFuY2gnLCB0aGlzLmFkZFN0ZXBGb3JCcmFuY2ggYXMgYW55KTtcbiAgICB3aXJlKCdkZWxldGVTdGVwV2l0aEJyYW5jaCcsIHRoaXMuZGVsZXRlU3RlcFdpdGhCcmFuY2ggYXMgYW55KTtcbiAgICB3aXJlKCdhZGRCcmFuY2gnLCB0aGlzLmFkZEJyYW5jaCBhcyBhbnkpO1xuICAgIHdpcmUoJ2RlbGV0ZUJyYW5jaCcsIHRoaXMuZGVsZXRlQnJhbmNoIGFzIGFueSk7XG4gICAgd2lyZSgndGVzdERhdGFQcm9maWxlQ2hhbmdlJywgdGhpcy50ZXN0RGF0YVByb2ZpbGVDaGFuZ2UgYXMgYW55KTtcbiAgICB3aXJlKCdzdGFydFN0ZXBDaGFuZ2UnLCB0aGlzLnN0YXJ0U3RlcENoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ2VuZFN0ZXBDaGFuZ2UnLCB0aGlzLmVuZFN0ZXBDaGFuZ2UgYXMgYW55KTtcbiAgICB3aXJlKCdtYXhJdGVyYXRpb25zQ2hhbmdlJywgdGhpcy5tYXhJdGVyYXRpb25zQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgnZXZlbnRUeXBlQ2hhbmdlJywgdGhpcy5ldmVudFR5cGVDaGFuZ2UgYXMgYW55KTtcbiAgICB3aXJlKCdwYXJhbWV0ZXJDaGFuZ2UnLCB0aGlzLnBhcmFtZXRlckNoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ2NsaWNrQWN0aW9uJywgdGhpcy5jbGlja0FjdGlvbiBhcyBhbnkpO1xuICAgIHdpcmUoJ2RuZERyb3BJblpvbmUnLCB0aGlzLmRuZERyb3BJblpvbmUgYXMgYW55KTtcbiAgICB3aXJlKCdhZGRTdGVwQmV0d2VlbkNsaWNrJywgdGhpcy5hZGRTdGVwQmV0d2VlbkNsaWNrIGFzIGFueSk7XG4gIH1cbn1cblxuIiwiPGRpdiBjbGFzcz1cImNxYS1yZWxhdGl2ZVwiPlxuICAgIDxidXR0b24gKm5nSWY9XCJhZGRTdGVwQmV0d2VlblwiIGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS10b3AtW2NhbGMoMTAwJS0xMnB4KV0gY3FhLWxlZnQtWzUwJV0gY3FhLXRyYW5zbGF0ZS14LVstNTAlXSBjcWEtcC0wIGNxYS16LVsxXVwiIChjbGljayk9XCJhZGRTdGVwQmV0d2VlbkNsaWNrLmVtaXQoe3N0ZXA6IHN0ZXAsIGluZGV4OiBpbmRleH0pXCI+XG4gICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxyZWN0IHg9XCIxXCIgeT1cIjFcIiB3aWR0aD1cIjIxLjE4MjJcIiBoZWlnaHQ9XCIyMlwiIHJ4PVwiMTAuNTkxMVwiIGZpbGw9XCJ3aGl0ZVwiLz48cmVjdCB4PVwiMVwiIHk9XCIxXCIgd2lkdGg9XCIyMS4xODIyXCIgaGVpZ2h0PVwiMjJcIiByeD1cIjEwLjU5MTFcIiBzdHJva2U9XCIjM0Y0M0VFXCIgc3Ryb2tlLXdpZHRoPVwiMlwiLz48cGF0aCBkPVwiTTguNSAxMkgxNS41XCIgc3Ryb2tlPVwiIzNGNDNFRVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTEyIDguNVYxNS41XCIgc3Ryb2tlPVwiIzNGNDNFRVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICA8L2J1dHRvbj5cbiAgICA8bmctY29udGFpbmVyICNzdGVwSG9zdD48L25nLWNvbnRhaW5lcj5cbiAgICA8YnV0dG9uICpuZ0lmPVwiYWRkU3RlcEJldHdlZW5cIiBjbGFzcz1cImNxYS1hYnNvbHV0ZSBjcWEtdG9wLVtjYWxjKDEwMCUtMTJweCldIGNxYS1sZWZ0LVs1MCVdIGNxYS10cmFuc2xhdGUteC1bLTUwJV0gY3FhLXAtMCBjcWEtei1bMV1cIiAoY2xpY2spPVwiYWRkU3RlcEJldHdlZW5DbGljay5lbWl0KHtzdGVwOiBzdGVwLCBpbmRleDogaW5kZXh9KVwiPlxuICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cmVjdCB4PVwiMVwiIHk9XCIxXCIgd2lkdGg9XCIyMS4xODIyXCIgaGVpZ2h0PVwiMjJcIiByeD1cIjEwLjU5MTFcIiBmaWxsPVwid2hpdGVcIi8+PHJlY3QgeD1cIjFcIiB5PVwiMVwiIHdpZHRoPVwiMjEuMTgyMlwiIGhlaWdodD1cIjIyXCIgcng9XCIxMC41OTExXCIgc3Ryb2tlPVwiIzNGNDNFRVwiIHN0cm9rZS13aWR0aD1cIjJcIi8+PHBhdGggZD1cIk04LjUgMTJIMTUuNVwiIHN0cm9rZT1cIiMzRjQzRUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0xMiA4LjVWMTUuNVwiIHN0cm9rZT1cIiMzRjQzRUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgPC9idXR0b24+XG48L2Rpdj4iXX0=
|
|
376
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1jYXNlLWRldGFpbHMtcmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlci90ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3Rlc3QtY2FzZS1kZXRhaWxzLXJlbmRlcmVyL3Rlc3QtY2FzZS1kZXRhaWxzLXJlbmRlcmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxFQUNULGdCQUFnQixFQUdoQixNQUFNLEdBS1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLDRCQUE0QixFQUE0QixNQUFNLG9DQUFvQyxDQUFDO0FBQzVHLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQiwwQkFBMEIsRUFDMUIsc0JBQXNCLEdBRXZCLE1BQU0sMEJBQTBCLENBQUM7OztBQU9sQyxNQUFNLE9BQU8sZ0NBQWdDO0lBZ0UzQyxZQUNnRCxZQUFzQyxFQUM1RSxHQUFzQjtRQURnQixpQkFBWSxHQUFaLFlBQVksQ0FBMEI7UUFDNUUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUE3RHZCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFHdkMsaUdBQWlHO1FBQ3hGLGNBQVMsR0FBWSxLQUFL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QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUVHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQUVFLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQUVHLHlCQUF5QjtzQkFBakMsS0FBSztnQkFFRyw2QkFBNkI7c0JBQXJDLEtBQUs7Z0JBRUksb0JBQW9CO3NCQUE3QixNQUFNO2dCQUVHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFFRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgSW5qZWN0LFxuICBBZnRlclZpZXdJbml0LFxuICBPbkRlc3Ryb3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVEVTVF9DQVNFX1NURVBfQ09NUE9ORU5UX01BUCwgVGVzdENhc2VTdGVwQ29tcG9uZW50TWFwIH0gZnJvbSAnLi4vdGVzdC1jYXNlLXN0ZXAtY29tcG9uZW50cy50b2tlbic7XG5pbXBvcnQge1xuICBUZXN0Q2FzZVN0ZXBDb25maWcsXG4gIGlzU3RlcEdyb3VwQ29uZmlnLFxuICBpc0NvbmRpdGlvblN0ZXBDb25maWcsXG4gIGlzTG9vcFN0ZXBDb25maWcsXG4gIGlzTm9ybWFsU3RlcENvbmZpZyxcbiAgaXNBcGlTdGVwQ29uZmlnLFxuICBpc0RhdGFiYXNlU3RlcENvbmZpZyxcbiAgaXNBaUFnZW50U3RlcENvbmZpZyxcbiAgaXNBaVZlcmlmeVN0ZXBDb25maWcsXG4gIGlzVXBsb2FkU3RlcENvbmZpZyxcbiAgaXNTY3JlZW5zaG90U3RlcENvbmZpZyxcbiAgaXNTY3JvbGxTdGVwQ29uZmlnLFxuICBpc1ZlcmlmeVVybFN0ZXBDb25maWcsXG4gIGlzUmVzdG9yZVNlc3Npb25TdGVwQ29uZmlnLFxuICBpc0N1c3RvbUNvZGVTdGVwQ29uZmlnLFxuICBDb25kaXRpb25CcmFuY2gsXG59IGZyb20gJy4uL3Rlc3QtY2FzZS1zdGVwLm1vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS10ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlci5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHsgY2xhc3M6ICdjcWEtdWktcm9vdCcgfSxcbn0pXG5leHBvcnQgY2xhc3MgVGVzdENhc2VEZXRhaWxzUmVuZGVyZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ3N0ZXBIb3N0JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIHN0ZXBIb3N0ITogVmlld0NvbnRhaW5lclJlZjtcblxuICBASW5wdXQoKSBzdGVwITogVGVzdENhc2VTdGVwQ29uZmlnO1xuICBASW5wdXQoKSBpbmRleCE6IG51bWJlcjtcbiAgQElucHV0KCkgaXNOZXN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaXNJbnNpZGVMb29wOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBXaGVuIHJlbmRlcmluZyBhIHN0ZXAgaW5zaWRlIGEgY29uZGl0aW9uIGJyYW5jaCwgdGhlIGJyYW5jaCBjb250ZXh0IChmb3IgYWRkU3RlcEZvckJyYW5jaCAvIGRlbGV0ZVN0ZXBXaXRoQnJhbmNoKS4gKi9cbiAgQElucHV0KCkgYnJhbmNoPzogQ29uZGl0aW9uQnJhbmNoO1xuICAvKiogV2hlbiB0cnVlLCBlbmFibGVzIGRyYWctYW5kLWRyb3AgcmVvcmRlcmluZyBhbmQgc2hvd3MgZHJhZyBoYW5kbGUgaWNvbiBpbnN0ZWFkIG9mIGNoZWNrYm94ICovXG4gIEBJbnB1dCgpIGlzUmVvcmRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBhZGRTdGVwQmV0d2VlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBuZXN0ZWRTdGVwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZzsgaW5kZXg6IG51bWJlciB9PigpO1xuICBAT3V0cHV0KCkgYWRkU3RlcCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGRlbGV0ZVN0ZXAgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIHRvZ2dsZUV4cGFuZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuIHwge2NvbmZpZzogVGVzdENhc2VTdGVwQ29uZmlnLCBleHBhbmRlZDogYm9vbGVhbn0+KCk7XG4gIEBPdXRwdXQoKSBncm91cE5hbWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGRlc2NyaXB0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSByZXVzYWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIG9wZW5FeHRlcm5hbCA9IG5ldyBFdmVudEVtaXR0ZXI8e3N0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZ30+KCk7XG4gIEBPdXRwdXQoKSBlZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjx7c3RlcDogVGVzdENhc2VTdGVwQ29uZmlnLCBpbmRleDogbnVtYmVyfT4oKTtcbiAgQE91dHB1dCgpIGxpbmsgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBkdXBsaWNhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgc3RlcDogVGVzdENhc2VTdGVwQ29uZmlnIH0gfCB2b2lkPigpO1xuICBAT3V0cHV0KCkgdmlld0RldGFpbHMgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBjb25kaXRpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGJyYW5jaFN0ZXBDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgYnJhbmNoOiBDb25kaXRpb25CcmFuY2g7IHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZzsgc3RlcEluZGV4OiBudW1iZXIgfT4oKTtcbiAgQE91dHB1dCgpIGFkZFN0ZXBGb3JCcmFuY2ggPSBuZXcgRXZlbnRFbWl0dGVyPHsgYnJhbmNoOiBDb25kaXRpb25CcmFuY2ggfT4oKTtcbiAgQE91dHB1dCgpIGRlbGV0ZVN0ZXBXaXRoQnJhbmNoID0gbmV3IEV2ZW50RW1pdHRlcjx7IGJyYW5jaDogQ29uZGl0aW9uQnJhbmNoOyBzdGVwSW5kZXg6IG51bWJlciB9PigpO1xuICBAT3V0cHV0KCkgYWRkQnJhbmNoID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAvKiogRW1pdHRlZCB3aGVuIHVzZXIgY2xpY2tzIFwiQWRkIEVsc2VcIiBpbiBhIGNvbmRpdGlvbiBzdGVwOyBwYXJlbnQgc2hvdWxkIGNhbGwgUE9TVCB0ZXN0X3N0ZXBzIHdpdGggY29uZGl0aW9uVHlwZSBDT05ESVRJT05fRUxTRSAqL1xuICBAT3V0cHV0KCkgYWRkRWxzZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBjb25kaXRpb25TdGVwQ29uZmlnOiBUZXN0Q2FzZVN0ZXBDb25maWcgfT4oKTtcbiAgQE91dHB1dCgpIGRlbGV0ZUJyYW5jaCA9IG5ldyBFdmVudEVtaXR0ZXI8Q29uZGl0aW9uQnJhbmNoPigpO1xuICBAT3V0cHV0KCkgdGVzdERhdGFQcm9maWxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBzdGFydFN0ZXBDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIGVuZFN0ZXBDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIG1heEl0ZXJhdGlvbnNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIGV2ZW50VHlwZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcGFyYW1ldGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjbGlja0FjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcbiAgLyoqIEVtaXR0ZWQgd2hlbiBhIHN0ZXAgaXMgZHJvcHBlZCBpbiBhIG5lc3RlZCBkcm9wem9uZSAoc3RlcC1ncm91cCwgbG9vcCwgY29uZGl0aW9uKS4gUGF5bG9hZDogeyBldmVudCwgdGFyZ2V0TGlzdCB9LiAqL1xuICBAT3V0cHV0KCkgZG5kRHJvcEluWm9uZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBldmVudDogYW55OyB0YXJnZXRMaXN0OiBUZXN0Q2FzZVN0ZXBDb25maWdbXSB9PigpO1xuICAvKiogRGF0YSBwcm9maWxlIG9wdGlvbnMgZm9yIGxvb3Agc3RlcHMgKi9cbiAgQElucHV0KCkgZGF0YVByb2ZpbGVPcHRpb25zOiBhbnlbXSA9IFtdO1xuICAvKiogSW5kaWNhdGVzIGlmIG1vcmUgZGF0YSBwcm9maWxlcyBhcmUgYXZhaWxhYmxlIGZvciBsb2FkaW5nICovXG4gIEBJbnB1dCgpIGhhc01vcmVEYXRhUHJvZmlsZXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqIExvYWRpbmcgc3RhdGUgZm9yIGRhdGEgcHJvZmlsZXMgKi9cbiAgQElucHV0KCkgaXNMb2FkaW5nRGF0YVByb2ZpbGVzOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBOYXR1cmFsIHRleHQgYWN0aW9ucyBvcHRpb25zIGZvciB3aGlsZSBsb29wIGNvbmRpdGlvbiAqL1xuICBASW5wdXQoKSBuYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zOiBhbnlbXSA9IFtdO1xuICAvKiogRnVuY3Rpb24gdG8gcHJvY2VzcyB0ZW1wbGF0ZSB2YXJpYWJsZXMgZm9yIGNvbmRpdGlvbiBzdGVwcyAqL1xuICBASW5wdXQoKSBzZXRDb25kaXRpb25UZW1wbGF0ZVZhcmlhYmxlczogKHRlbXBsYXRlOiBhbnkpID0+IGFueVtdID0gKCkgPT4gW107XG4gIC8qKiBFbWl0IHdoZW4gbW9yZSBkYXRhIHByb2ZpbGVzIG5lZWQgdG8gYmUgbG9hZGVkICovXG4gIEBPdXRwdXQoKSBsb2FkTW9yZURhdGFQcm9maWxlcyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAvKiogRW1pdCB3aGVuIGRhdGEgcHJvZmlsZSBzZWFyY2ggcXVlcnkgY2hhbmdlcyAqL1xuICBAT3V0cHV0KCkgc2VhcmNoRGF0YVByb2ZpbGVzID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIC8qKiBFbWl0IHdoZW4gYSBzdGVwIGlzIHVwZGF0ZWQgKGUuZy4sIEFwcGx5IGJ1dHRvbiBjbGlja2VkIGluIGxvb3Atc3RlcCBlZGl0IG1vZGUpICovXG4gIEBPdXRwdXQoKSBzdGVwVXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxUZXN0Q2FzZVN0ZXBDb25maWc+KCk7XG4gIEBPdXRwdXQoKSBhZGRTdGVwQmV0d2VlbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7c3RlcDogVGVzdENhc2VTdGVwQ29uZmlnLCBpbmRleDogbnVtYmVyfT4oKTtcblxuICBwcml2YXRlIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT4gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFRFU1RfQ0FTRV9TVEVQX0NPTVBPTkVOVF9NQVApIHByaXZhdGUgY29tcG9uZW50TWFwOiBUZXN0Q2FzZVN0ZXBDb21wb25lbnRNYXAsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJTdGVwKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3N0ZXAnXSB8fCBjaGFuZ2VzWydpbmRleCddIHx8IGNoYW5nZXNbJ2lzTmVzdGVkJ10gfHwgY2hhbmdlc1snaXNJbnNpZGVMb29wJ10gfHwgY2hhbmdlc1snaXNSZW9yZGVyJ10gfHwgXG4gICAgICAgIGNoYW5nZXNbJ2RhdGFQcm9maWxlT3B0aW9ucyddIHx8IGNoYW5nZXNbJ2hhc01vcmVEYXRhUHJvZmlsZXMnXSB8fCBjaGFuZ2VzWydpc0xvYWRpbmdEYXRhUHJvZmlsZXMnXSB8fFxuICAgICAgICBjaGFuZ2VzWyduYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zJ10gfHwgY2hhbmdlc1snc2V0Q29uZGl0aW9uVGVtcGxhdGVWYXJpYWJsZXMnXSkge1xuICAgICAgdGhpcy5yZW5kZXJTdGVwKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb21wb25lbnRUeXBlKHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZyk6IGFueSB7XG4gICAgaWYgKGlzU3RlcEdyb3VwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAuc3RlcEdyb3VwO1xuICAgIGlmIChpc0NvbmRpdGlvblN0ZXBDb25maWcoc3RlcCkpIHJldHVybiB0aGlzLmNvbXBvbmVudE1hcC5jb25kaXRpb25TdGVwO1xuICAgIGlmIChpc0xvb3BTdGVwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAubG9vcFN0ZXA7XG4gICAgaWYgKGlzQXBpU3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLmFwaVN0ZXA7XG4gICAgaWYgKGlzRGF0YWJhc2VTdGVwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAuZGF0YWJhc2VTdGVwO1xuICAgIGlmIChpc0FpQWdlbnRTdGVwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAuYWlBZ2VudFN0ZXA7XG4gICAgaWYgKGlzQWlWZXJpZnlTdGVwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAuYWlWZXJpZnlTdGVwO1xuICAgIGlmIChpc1VwbG9hZFN0ZXBDb25maWcoc3RlcCkpIHJldHVybiB0aGlzLmNvbXBvbmVudE1hcC51cGxvYWRTdGVwO1xuICAgIGlmIChpc1NjcmVlbnNob3RTdGVwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAuc2NyZWVuc2hvdFN0ZXA7XG4gICAgaWYgKGlzU2Nyb2xsU3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLnNjcm9sbFN0ZXA7XG4gICAgaWYgKGlzVmVyaWZ5VXJsU3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLnZlcmlmeVVybFN0ZXA7XG4gICAgaWYgKGlzUmVzdG9yZVNlc3Npb25TdGVwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAucmVzdG9yZVNlc3Npb25TdGVwO1xuICAgIGlmIChpc0N1c3RvbUNvZGVTdGVwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAuY3VzdG9tQ29kZVN0ZXA7XG4gICAgaWYgKGlzTm9ybWFsU3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLm5vcm1hbFN0ZXA7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclN0ZXAoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN0ZXBIb3N0IHx8ICF0aGlzLnN0ZXApIHJldHVybjtcblxuICAgIGNvbnN0IGNvbXBvbmVudFR5cGUgPSB0aGlzLmdldENvbXBvbmVudFR5cGUodGhpcy5zdGVwKTtcbiAgICBpZiAoIWNvbXBvbmVudFR5cGUpIHJldHVybjtcblxuICAgIHRoaXMuc3RlcEhvc3QuY2xlYXIoKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMuc3RlcEhvc3QuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudFR5cGUpO1xuICAgIGNvbnN0IGluc3RhbmNlID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U7XG5cbiAgICBpbnN0YW5jZS5jb25maWcgPSB0aGlzLnN0ZXA7XG4gICAgaW5zdGFuY2Uuc3RlcE51bWJlciA9ICh0aGlzLnN0ZXAgYXMgYW55KS5zdGVwTnVtYmVyO1xuICAgIGluc3RhbmNlLmlzTmVzdGVkID0gdGhpcy5pc05lc3RlZDtcbiAgICBpbnN0YW5jZS5pc0luc2lkZUxvb3AgPSB0aGlzLmlzSW5zaWRlTG9vcDtcbiAgICBpbnN0YW5jZS5pc1Jlb3JkZXIgPSB0aGlzLmlzUmVvcmRlcjtcbiAgICBPYmplY3Qua2V5cyh0aGlzLnN0ZXApLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKGtleSAhPT0gJ3N0ZXBUeXBlJyAmJiBrZXkgIT09ICduZXN0ZWRTdGVwcycgJiYga2V5ICE9PSAnYnJhbmNoZXMnKSB7XG4gICAgICAgIChpbnN0YW5jZSBhcyBhbnkpW2tleV0gPSAodGhpcy5zdGVwIGFzIGFueSlba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoKHRoaXMuc3RlcCBhcyBhbnkpLm5lc3RlZFN0ZXBzKSAoaW5zdGFuY2UgYXMgYW55KS5uZXN0ZWRTdGVwcyA9ICh0aGlzLnN0ZXAgYXMgYW55KS5uZXN0ZWRTdGVwcztcbiAgICBpZiAoKHRoaXMuc3RlcCBhcyBhbnkpLmJyYW5jaGVzKSAoaW5zdGFuY2UgYXMgYW55KS5icmFuY2hlcyA9ICh0aGlzLnN0ZXAgYXMgYW55KS5icmFuY2hlcztcblxuICAgIC8vIFBhc3MgZGF0YSBwcm9maWxlIGlucHV0cyB0byBzdGVwIGluc3RhbmNlcyB0aGF0IGNhbiBjb250YWluIG5lc3RlZCBsb29wIHN0ZXBzXG4gICAgaWYgKGlzTG9vcFN0ZXBDb25maWcodGhpcy5zdGVwKSB8fCBpc0NvbmRpdGlvblN0ZXBDb25maWcodGhpcy5zdGVwKSB8fCBpc1N0ZXBHcm91cENvbmZpZyh0aGlzLnN0ZXApKSB7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5kYXRhUHJvZmlsZU9wdGlvbnMgPSB0aGlzLmRhdGFQcm9maWxlT3B0aW9ucztcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLmhhc01vcmVEYXRhUHJvZmlsZXMgPSB0aGlzLmhhc01vcmVEYXRhUHJvZmlsZXM7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5pc0xvYWRpbmdEYXRhUHJvZmlsZXMgPSB0aGlzLmlzTG9hZGluZ0RhdGFQcm9maWxlcztcbiAgICAgIC8vIEFsc28gcGFzcyBuYXR1cmFsIHRleHQgYWN0aW9ucyBvcHRpb25zIChmb3IgbmVzdGVkIGxvb3Agc3RlcHMgd2l0aCB3aGlsZSBsb29wIGFuZCBjb25kaXRpb24gc3RlcHMpXG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5uYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zID0gdGhpcy5uYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zO1xuICAgIH1cbiAgICBcbiAgICAvLyBQYXNzIG5hdHVyYWwgdGV4dCBhY3Rpb25zIG9wdGlvbnMgdG8gbG9vcCBzdGVwcyAoZm9yIHdoaWxlIGxvb3AgY29uZGl0aW9uKVxuICAgIGlmIChpc0xvb3BTdGVwQ29uZmlnKHRoaXMuc3RlcCkpIHtcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLm5hdHVyYWxUZXh0QWN0aW9uc09wdGlvbnMgPSB0aGlzLm5hdHVyYWxUZXh0QWN0aW9uc09wdGlvbnM7XG4gICAgfVxuICAgIFxuICAgIC8vIFBhc3MgbmF0dXJhbCB0ZXh0IGFjdGlvbnMgb3B0aW9ucyBhbmQgdGVtcGxhdGUgdmFyaWFibGVzIGZ1bmN0aW9uIHRvIGNvbmRpdGlvbiBzdGVwc1xuICAgIGlmIChpc0NvbmRpdGlvblN0ZXBDb25maWcodGhpcy5zdGVwKSkge1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkubmF0dXJhbFRleHRBY3Rpb25zT3B0aW9ucyA9IHRoaXMubmF0dXJhbFRleHRBY3Rpb25zT3B0aW9ucztcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLnNldENvbmRpdGlvblRlbXBsYXRlVmFyaWFibGVzID0gdGhpcy5zZXRDb25kaXRpb25UZW1wbGF0ZVZhcmlhYmxlcztcbiAgICB9XG5cbiAgICB0aGlzLndpcmVPdXRwdXRzKGluc3RhbmNlKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIHdpcmVPdXRwdXRzKGluc3RhbmNlOiBhbnkpOiB2b2lkIHtcbiAgICAvLyBTdG9yZSBzdWJzY3JpcHRpb25zIG9uIHRoZSBpbnN0YW5jZSB0byBwcmV2ZW50IGR1cGxpY2F0ZXNcbiAgICBpZiAoIShpbnN0YW5jZSBhcyBhbnkpLl9jcWFTdWJzY3JpcHRpb25zKSB7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5fY3FhU3Vic2NyaXB0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gICAgfVxuICAgIGNvbnN0IHN1YnNjcmlwdGlvbnMgPSAoaW5zdGFuY2UgYXMgYW55KS5fY3FhU3Vic2NyaXB0aW9ucztcbiAgICBcbiAgICBjb25zdCB3aXJlID0gKGtleTogc3RyaW5nLCBlbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PikgPT4ge1xuICAgICAgaWYgKGluc3RhbmNlW2tleV0gJiYgdHlwZW9mIGluc3RhbmNlW2tleV0uc3Vic2NyaWJlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIC8vIFVuc3Vic2NyaWJlIGZyb20gcHJldmlvdXMgc3Vic2NyaXB0aW9uIGlmIGV4aXN0c1xuICAgICAgICBjb25zdCBleGlzdGluZ1N1YiA9IHN1YnNjcmlwdGlvbnMuZ2V0KGtleSk7XG4gICAgICAgIGlmIChleGlzdGluZ1N1Yikge1xuICAgICAgICAgIGV4aXN0aW5nU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIENyZWF0ZSBuZXcgc3Vic2NyaXB0aW9uXG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IGluc3RhbmNlW2tleV0uc3Vic2NyaWJlKCh2OiBhbnkpID0+IHtcbiAgICAgICAgICBlbWl0dGVyLmVtaXQodik7XG4gICAgICAgIH0pO1xuICAgICAgICBzdWJzY3JpcHRpb25zLnNldChrZXksIHN1YnNjcmlwdGlvbik7XG4gICAgICB9XG4gICAgfTtcbiAgICB3aXJlKCduZXN0ZWRTdGVwQ2hhbmdlJywgdGhpcy5uZXN0ZWRTdGVwQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgnYWRkU3RlcCcsIHtcbiAgICAgIGVtaXQ6ICh2OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHYgIT0gbnVsbCAmJiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgJ2JyYW5jaCcgaW4gdikgdGhpcy5hZGRTdGVwRm9yQnJhbmNoLmVtaXQodik7XG4gICAgICAgIGVsc2UgdGhpcy5hZGRTdGVwLmVtaXQodik7XG4gICAgICB9LFxuICAgIH0gYXMgYW55KTtcbiAgICB3aXJlKCdkZWxldGVTdGVwJywge1xuICAgICAgZW1pdDogKHY6IGFueSkgPT4ge1xuICAgICAgICBpZiAodiAhPSBudWxsICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiAnYnJhbmNoJyBpbiB2ICYmICdzdGVwSW5kZXgnIGluIHYpIHRoaXMuZGVsZXRlU3RlcFdpdGhCcmFuY2guZW1pdCh2KTtcbiAgICAgICAgZWxzZSB0aGlzLmRlbGV0ZVN0ZXAuZW1pdCh2KTtcbiAgICAgIH0sXG4gICAgfSBhcyBhbnkpO1xuICAgIHdpcmUoJ3RvZ2dsZUV4cGFuZGVkJywge1xuICAgICAgZW1pdDogKHY6IGFueSkgPT4ge1xuICAgICAgICAvLyBIYW5kbGUgYm90aCBib29sZWFuIGFuZCBvYmplY3QgZm9ybWF0c1xuICAgICAgICAvLyBJZiBpdCdzIGFuIG9iamVjdCB3aXRoIGNvbmZpZyBhbmQgZXhwYW5kZWQsIGVtaXQgaXQgYXMtaXNcbiAgICAgICAgLy8gSWYgaXQncyBqdXN0IGEgYm9vbGVhbiwgZW1pdCBpdCBhcy1pc1xuICAgICAgICB0aGlzLnRvZ2dsZUV4cGFuZGVkLmVtaXQodik7XG4gICAgICB9LFxuICAgIH0gYXMgYW55KTtcbiAgICB3aXJlKCdncm91cE5hbWVDaGFuZ2UnLCB0aGlzLmdyb3VwTmFtZUNoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ2Rlc2NyaXB0aW9uQ2hhbmdlJywgdGhpcy5kZXNjcmlwdGlvbkNoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ3JldXNhYmxlQ2hhbmdlJywgdGhpcy5yZXVzYWJsZUNoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ29wZW5FeHRlcm5hbCcsIHRoaXMub3BlbkV4dGVybmFsIGFzIGFueSk7XG4gICAgd2lyZSgnZWRpdCcsIHtcbiAgICAgIGVtaXQ6ICh2OiBhbnkpID0+IHtcbiAgICAgICAgLy8gSWYgY2hpbGQgY29tcG9uZW50IGVtaXRzIHZvaWQgb3Igbm90aGluZywgdXNlIGN1cnJlbnQgc3RlcCBhbmQgaW5kZXhcbiAgICAgICAgLy8gSWYgY2hpbGQgY29tcG9uZW50IGFscmVhZHkgZW1pdHMgYW4gb2JqZWN0LCBtZXJnZSBpdCB3aXRoIHN0ZXAgYW5kIGluZGV4XG4gICAgICAgIGlmICh2ICE9IG51bGwgJiYgdHlwZW9mIHYgPT09ICdvYmplY3QnICYmICdzdGVwJyBpbiB2ICYmICdpbmRleCcgaW4gdikge1xuICAgICAgICAgIC8vIEFscmVhZHkgaGFzIHN0ZXAgYW5kIGluZGV4LCBlbWl0IGFzLWlzXG4gICAgICAgICAgdGhpcy5lZGl0LmVtaXQodik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRW1pdCB3aXRoIGN1cnJlbnQgc3RlcCBhbmQgaW5kZXhcbiAgICAgICAgICB0aGlzLmVkaXQuZW1pdCh7IHN0ZXA6IHRoaXMuc3RlcCwgaW5kZXg6IHRoaXMuaW5kZXggfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSBhcyBhbnkpO1xuICAgIHdpcmUoJ2xpbmsnLCB0aGlzLmxpbmsgYXMgYW55KTtcbiAgICB3aXJlKCdkdXBsaWNhdGUnLCB0aGlzLmR1cGxpY2F0ZSBhcyBhbnkpO1xuICAgIC8vIFdpcmUgZGVsZXRlIGV2ZW50IC0gaW50ZXJjZXB0IGFuZCBlbWl0IHdpdGggc3RlcCBkYXRhXG4gICAgaWYgKGluc3RhbmNlLmRlbGV0ZSAmJiB0eXBlb2YgaW5zdGFuY2UuZGVsZXRlLnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgZXhpc3RpbmdTdWIgPSBzdWJzY3JpcHRpb25zLmdldCgnZGVsZXRlJyk7XG4gICAgICBpZiAoZXhpc3RpbmdTdWIpIHtcbiAgICAgICAgZXhpc3RpbmdTdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRlbGV0ZVN1YiA9IGluc3RhbmNlLmRlbGV0ZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvLyBFbWl0IGRlbGV0ZSB3aXRoIHRoZSBjdXJyZW50IHN0ZXAgZGF0YSBzbyBwYXJlbnQga25vd3Mgd2hpY2ggc3RlcCBpcyBiZWluZyBkZWxldGVkXG4gICAgICAgIHRoaXMuZGVsZXRlLmVtaXQoeyBzdGVwOiB0aGlzLnN0ZXAgfSk7XG4gICAgICB9KTtcbiAgICAgIHN1YnNjcmlwdGlvbnMuc2V0KCdkZWxldGUnLCBkZWxldGVTdWIpO1xuICAgIH1cbiAgICB3aXJlKCd2aWV3RGV0YWlscycsIHRoaXMudmlld0RldGFpbHMgYXMgYW55KTtcbiAgICB3aXJlKCdzZWxlY3Rpb25DaGFuZ2UnLCB0aGlzLnNlbGVjdGlvbkNoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ2NvbmRpdGlvbkNoYW5nZScsIHRoaXMuY29uZGl0aW9uQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgnYnJhbmNoU3RlcENoYW5nZScsIHRoaXMuYnJhbmNoU3RlcENoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ2FkZFN0ZXBGb3JCcmFuY2gnLCB0aGlzLmFkZFN0ZXBGb3JCcmFuY2ggYXMgYW55KTtcbiAgICB3aXJlKCdkZWxldGVTdGVwV2l0aEJyYW5jaCcsIHRoaXMuZGVsZXRlU3RlcFdpdGhCcmFuY2ggYXMgYW55KTtcbiAgICB3aXJlKCdhZGRCcmFuY2gnLCB0aGlzLmFkZEJyYW5jaCBhcyBhbnkpO1xuICAgIHdpcmUoJ2FkZEVsc2UnLCB0aGlzLmFkZEVsc2UgYXMgYW55KTtcbiAgICB3aXJlKCdkZWxldGVCcmFuY2gnLCB0aGlzLmRlbGV0ZUJyYW5jaCBhcyBhbnkpO1xuICAgIHdpcmUoJ3Rlc3REYXRhUHJvZmlsZUNoYW5nZScsIHRoaXMudGVzdERhdGFQcm9maWxlQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgnc3RhcnRTdGVwQ2hhbmdlJywgdGhpcy5zdGFydFN0ZXBDaGFuZ2UgYXMgYW55KTtcbiAgICB3aXJlKCdlbmRTdGVwQ2hhbmdlJywgdGhpcy5lbmRTdGVwQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgnbWF4SXRlcmF0aW9uc0NoYW5nZScsIHRoaXMubWF4SXRlcmF0aW9uc0NoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ2V2ZW50VHlwZUNoYW5nZScsIHRoaXMuZXZlbnRUeXBlQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgncGFyYW1ldGVyQ2hhbmdlJywgdGhpcy5wYXJhbWV0ZXJDaGFuZ2UgYXMgYW55KTtcbiAgICB3aXJlKCdjbGlja0FjdGlvbicsIHRoaXMuY2xpY2tBY3Rpb24gYXMgYW55KTtcbiAgICB3aXJlKCdkbmREcm9wSW5ab25lJywgdGhpcy5kbmREcm9wSW5ab25lIGFzIGFueSk7XG4gICAgd2lyZSgnbG9hZE1vcmVEYXRhUHJvZmlsZXMnLCB0aGlzLmxvYWRNb3JlRGF0YVByb2ZpbGVzIGFzIGFueSk7XG4gICAgd2lyZSgnc2VhcmNoRGF0YVByb2ZpbGVzJywgdGhpcy5zZWFyY2hEYXRhUHJvZmlsZXMgYXMgYW55KTtcbiAgICB3aXJlKCdhZGRTdGVwQmV0d2VlbkNsaWNrJywgdGhpcy5hZGRTdGVwQmV0d2VlbkNsaWNrIGFzIGFueSk7XG4gICAgLy8gV2lyZSBzdGVwVXBkYXRlIC0gY2hlY2sgaWYgaXQgZXhpc3RzIG9uIGluc3RhbmNlXG4gICAgaWYgKGluc3RhbmNlLnN0ZXBVcGRhdGUpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdSZW5kZXJlcjogRm91bmQgc3RlcFVwZGF0ZSBFdmVudEVtaXR0ZXIsIHdpcmluZyBpdCcpO1xuICAgICAgd2lyZSgnc3RlcFVwZGF0ZScsIHRoaXMuc3RlcFVwZGF0ZSBhcyBhbnkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1JlbmRlcmVyOiBzdGVwVXBkYXRlIEV2ZW50RW1pdHRlciBub3QgZm91bmQgb24gaW5zdGFuY2UgZHVyaW5nIHdpcmVPdXRwdXRzJywge1xuICAgICAgICBzdGVwSWQ6IHRoaXMuc3RlcD8uaWQsXG4gICAgICAgIHN0ZXBUeXBlOiB0aGlzLnN0ZXA/LnN0ZXBUeXBlLFxuICAgICAgICBpbnN0YW5jZUtleXM6IE9iamVjdC5rZXlzKGluc3RhbmNlKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gQ2xlYW4gdXAgc3Vic2NyaXB0aW9ucyB3aGVuIGNvbXBvbmVudCBpcyBkZXN0cm95ZWRcbiAgICBpZiAodGhpcy5jb21wb25lbnRSZWY/Lmluc3RhbmNlKSB7XG4gICAgICBjb25zdCBzdWJzY3JpcHRpb25zID0gKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIGFueSkuX2NxYVN1YnNjcmlwdGlvbnM7XG4gICAgICBpZiAoc3Vic2NyaXB0aW9ucykge1xuICAgICAgICBzdWJzY3JpcHRpb25zLmZvckVhY2goKHN1YjogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHN1YiAmJiB0eXBlb2Ygc3ViLnVuc3Vic2NyaWJlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBzdWJzY3JpcHRpb25zLmNsZWFyKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbiIsIjxkaXYgY2xhc3M9XCJjcWEtcmVsYXRpdmVcIj5cbiAgICA8YnV0dG9uICpuZ0lmPVwiYWRkU3RlcEJldHdlZW5cIiBjbGFzcz1cImNxYS1hYnNvbHV0ZSBjcWEtdG9wLVtjYWxjKDEwMCUtMTJweCldIGNxYS1sZWZ0LVs1MCVdIGNxYS10cmFuc2xhdGUteC1bLTUwJV0gY3FhLXAtMCBjcWEtei1bMV1cIiAoY2xpY2spPVwiYWRkU3RlcEJldHdlZW5DbGljay5lbWl0KHtzdGVwOiBzdGVwLCBpbmRleDogaW5kZXh9KVwiPlxuICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cmVjdCB4PVwiMVwiIHk9XCIxXCIgd2lkdGg9XCIyMS4xODIyXCIgaGVpZ2h0PVwiMjJcIiByeD1cIjEwLjU5MTFcIiBmaWxsPVwid2hpdGVcIi8+PHJlY3QgeD1cIjFcIiB5PVwiMVwiIHdpZHRoPVwiMjEuMTgyMlwiIGhlaWdodD1cIjIyXCIgcng9XCIxMC41OTExXCIgc3Ryb2tlPVwiIzNGNDNFRVwiIHN0cm9rZS13aWR0aD1cIjJcIi8+PHBhdGggZD1cIk04LjUgMTJIMTUuNVwiIHN0cm9rZT1cIiMzRjQzRUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0xMiA4LjVWMTUuNVwiIHN0cm9rZT1cIiMzRjQzRUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgPC9idXR0b24+XG4gICAgPG5nLWNvbnRhaW5lciAjc3RlcEhvc3Q+PC9uZy1jb250YWluZXI+XG4gICAgPGJ1dHRvbiAqbmdJZj1cImFkZFN0ZXBCZXR3ZWVuXCIgY2xhc3M9XCJjcWEtYWJzb2x1dGUgY3FhLXRvcC1bY2FsYygxMDAlLTEycHgpXSBjcWEtbGVmdC1bNTAlXSBjcWEtdHJhbnNsYXRlLXgtWy01MCVdIGNxYS1wLTAgY3FhLXotWzFdXCIgKGNsaWNrKT1cImFkZFN0ZXBCZXR3ZWVuQ2xpY2suZW1pdCh7c3RlcDogc3RlcCwgaW5kZXg6IGluZGV4fSlcIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHJlY3QgeD1cIjFcIiB5PVwiMVwiIHdpZHRoPVwiMjEuMTgyMlwiIGhlaWdodD1cIjIyXCIgcng9XCIxMC41OTExXCIgZmlsbD1cIndoaXRlXCIvPjxyZWN0IHg9XCIxXCIgeT1cIjFcIiB3aWR0aD1cIjIxLjE4MjJcIiBoZWlnaHQ9XCIyMlwiIHJ4PVwiMTAuNTkxMVwiIHN0cm9rZT1cIiMzRjQzRUVcIiBzdHJva2Utd2lkdGg9XCIyXCIvPjxwYXRoIGQ9XCJNOC41IDEySDE1LjVcIiBzdHJva2U9XCIjM0Y0M0VFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNMTIgOC41VjE1LjVcIiBzdHJva2U9XCIjM0Y0M0VFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuPC9kaXY+Il19
|