tuain-ng-forms-lib 14.3.20 → 14.4.45

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 (43) hide show
  1. package/esm2020/lib/classes/forms/element.mjs +8 -69
  2. package/esm2020/lib/classes/forms/field.mjs +1 -8
  3. package/esm2020/lib/classes/forms/form.mjs +6 -2
  4. package/esm2020/lib/classes/forms/piece.mjs +115 -0
  5. package/esm2020/lib/classes/forms/section.mjs +25 -28
  6. package/esm2020/lib/classes/forms/subsection.mjs +12 -15
  7. package/esm2020/lib/classes/forms/table/action.mjs +5 -18
  8. package/esm2020/lib/classes/forms/table/column.mjs +4 -14
  9. package/esm2020/lib/classes/forms/table/table.mjs +50 -37
  10. package/esm2020/lib/components/elements/action.component.mjs +26 -13
  11. package/esm2020/lib/components/elements/field.component.mjs +18 -20
  12. package/esm2020/lib/components/elements/layout/element.component.mjs +5 -16
  13. package/esm2020/lib/components/elements/layout/form-header.component.mjs +5 -5
  14. package/esm2020/lib/components/elements/layout/piece.component.mjs +22 -0
  15. package/esm2020/lib/components/elements/layout/section.component.mjs +20 -5
  16. package/esm2020/lib/components/elements/layout/sub-section.component.mjs +20 -7
  17. package/esm2020/lib/components/elements/tables/table-record-action.component.mjs +21 -5
  18. package/esm2020/lib/components/elements/tables/table.component.mjs +67 -47
  19. package/esm2020/lib/components/forms/basic-form.mjs +25 -14
  20. package/fesm2015/tuain-ng-forms-lib.mjs +460 -339
  21. package/fesm2015/tuain-ng-forms-lib.mjs.map +1 -1
  22. package/fesm2020/tuain-ng-forms-lib.mjs +436 -320
  23. package/fesm2020/tuain-ng-forms-lib.mjs.map +1 -1
  24. package/lib/classes/forms/element.d.ts +3 -29
  25. package/lib/classes/forms/field.d.ts +0 -3
  26. package/lib/classes/forms/form.d.ts +3 -0
  27. package/lib/classes/forms/piece.d.ts +43 -0
  28. package/lib/classes/forms/section.d.ts +8 -18
  29. package/lib/classes/forms/subsection.d.ts +7 -12
  30. package/lib/classes/forms/table/action.d.ts +3 -11
  31. package/lib/classes/forms/table/column.d.ts +2 -7
  32. package/lib/classes/forms/table/table.d.ts +1 -3
  33. package/lib/components/elements/action.component.d.ts +4 -8
  34. package/lib/components/elements/field.component.d.ts +4 -9
  35. package/lib/components/elements/layout/element.component.d.ts +3 -8
  36. package/lib/components/elements/layout/form-header.component.d.ts +3 -3
  37. package/lib/components/elements/layout/piece.component.d.ts +10 -0
  38. package/lib/components/elements/layout/section.component.d.ts +4 -3
  39. package/lib/components/elements/layout/sub-section.component.d.ts +4 -4
  40. package/lib/components/elements/tables/table-record-action.component.d.ts +2 -2
  41. package/lib/components/elements/tables/table.component.d.ts +6 -10
  42. package/lib/components/forms/basic-form.d.ts +2 -0
  43. package/package.json +1 -1
@@ -1,3 +1,4 @@
1
+ import { Subject } from 'rxjs';
1
2
  import { FormAction } from './action';
2
3
  import { FieldDescriptor } from './field';
3
4
  import { RecordTable } from './table/table';
@@ -10,6 +11,7 @@ const DISABLE = 'disable';
10
11
  const CLEAN = 'clean';
11
12
  export class FormStructureAndData {
12
13
  constructor(definitionReceived, formConfig) {
14
+ this._stateChange = new Subject();
13
15
  this._name = '';
14
16
  this._title = '';
15
17
  this._fields = {};
@@ -114,7 +116,7 @@ export class FormStructureAndData {
114
116
  return { ...objDef, visibleStates };
115
117
  });
116
118
  for (const sectionReceived of formSections) {
117
- const sectionToAdd = new RecordFormSection(sectionReceived, this);
119
+ const sectionToAdd = new RecordFormSection(sectionReceived, this, this._formConfig);
118
120
  const sectionCode = sectionToAdd.sectionCode;
119
121
  if (sectionCode) {
120
122
  this._sectionArray.push(sectionToAdd);
@@ -146,8 +148,10 @@ export class FormStructureAndData {
146
148
  this.state = newState;
147
149
  }
148
150
  }
151
+ this._stateChange.next({ state: this.state });
149
152
  return (this.state === newState);
150
153
  }
154
+ get stateChange() { return this._stateChange; }
151
155
  setStateFlow(states, transitions, defaultState) {
152
156
  this._stateFlow.states = states;
153
157
  this._stateFlow.defaultState = defaultState || this._stateFlow.states[0];
@@ -424,4 +428,4 @@ export class FormStructureAndData {
424
428
  return formData;
425
429
  }
426
430
  }
427
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxlQUFlLEVBQWUsTUFBTSxTQUFTLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFLOUMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ3hCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUNwQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUM7QUFDcEIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ3hCLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQztBQUMxQixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUM7QUFzQ3RCLE1BQU0sT0FBTyxvQkFBb0I7SUFrQi9CLFlBQVksa0JBQWtCLEVBQUUsVUFBVTtRQWhCMUMsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUVYLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFHcEIsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUViLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFFZCxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsNkJBQXdCLEdBQUcsRUFBRSxDQUFDO1FBR3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxD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LFlBQVksQ0FBQyxJQUFZLElBQVMsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEYsSUFBSSxTQUFTLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkUsSUFBSSxTQUFTLEtBQVUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTVFLFNBQVM7SUFDVCxJQUFJLE1BQU0sS0FBVSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzFDLElBQUksVUFBVSxLQUFlLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRCxTQUFTLEtBQXdCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDM0QsYUFBYSxLQUFlLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9FLFFBQVEsQ0FBQyxJQUFZLElBQXFCLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUcsV0FBVyxDQUFDLElBQVksSUFBVSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRSxZQUFZLENBQUMsSUFBWSxJQUFVLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FB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LEdBQWlCO2dCQUNqQyxTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVM7Z0JBQ3hCLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztnQkFDcEIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXO2dCQUM1QixhQUFhLEVBQUUsR0FBRyxDQUFDLGFBQWE7Z0JBQ2hDLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYztnQkFDbEMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxhQUFhO2dCQUNoQyxhQUFhLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVO2dCQUNyQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVM7YUFDeEMsQ0FBQztZQUNGLE9BQU8sWUFBWSxDQUFBO1FBQ3JCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUFjdGlvbiB9IGZyb20gJy4vYWN0aW9uJztcbmltcG9ydCB7IEZpZWxkRGVzY3JpcHRvciwgRmllbGRPcHRpb24gfSBmcm9tICcuL2ZpZWxkJztcbmltcG9ydCB7IFJlY29yZFRhYmxlIH0gZnJvbSAnLi90YWJsZS90YWJsZSc7XG5pbXBvcnQgeyBSZWNvcmRGb3JtU2VjdGlvbiB9IGZyb20gJy4vc2VjdGlvbic7XG5pbXBvcnQgeyBSZWNvcmRGb3JtU3ViU2VjdGlvbiB9IGZyb20gJy4vc3Vic2VjdGlvbic7XG5pbXBvcnQgeyBOT19FUlJPUiwgSEVBREVSIH0gZnJvbSAnLi9mb3JtLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBUYWJsZVJlY29yZERhdGEgfSBmcm9tICcuL3RhYmxlL3Jvdy1kYXRhJztcblxuY29uc3QgQUNUSVZFID0gJ2FjdGl2ZSc7XG5jb25zdCBTSE9XID0gJ3Nob3cnO1xuY29uc3QgSElERSA9ICdoaWRlJztcbmNvbnN0IEVOQUJMRSA9ICdlbmFibGUnO1xuY29uc3QgRElTQUJMRSA9ICdkaXNhYmxlJztcbmNvbnN0IENMRUFOID0gJ2NsZWFuJztcbmludGVyZmFjZSBUcmFuc2l0aW9uIHtcbiAgbmFtZTogc3RyaW5nO1xuICBzb3VyY2U6IHN0cmluZztcbiAgZGVzdGluYXRpb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFN0YXRlRmxvdyB7XG4gIGRlZmF1bHRTdGF0ZTogc3RyaW5nO1xuICBzdGF0ZXM6IHN0cmluZ1tdO1xuICB0cmFuc2l0aW9uczogVHJhbnNpdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkUGF5bG9hZCB7XG4gIGZpZWxkQ29kZTogc3RyaW5nO1xuICBmaWVsZFZhbHVlOiBhbnk7XG4gIGVkaXRhYmxlOiBib29sZWFuO1xuICB2aXNpYmxlOiBib29sZWFuO1xuICByZXF1aXJlZDogYm9vbGVhbjtcbiAgZmllbGRPcHRpb25zOiBzdHJpbmcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVQYXlsb2FkIHtcbiAgdGFibGVDb2RlOiBzdHJpbmc7XG4gIHZpc2libGU6IGJvb2xlYW47XG4gIGN1cnJlbnRQYWdlOiBudW1iZXI7XG4gIHJlcXVlc3RlZFBhZ2U6IG51bWJlcjtcbiAgcmVjb3Jkc1BlclBhZ2U6IG51bWJlcjtcbiAgY3VycmVudEZpbHRlcjogYW55LFxuICBzb3J0aW5nQ29sdW1uOiBzdHJpbmc7XG4gIHNvcnRpbmdEaXJlY3Rpb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEZvcm1QYXlsb2FkIHtcbiAgZmllbGRzOiBGaWVsZFBheWxvYWRbXSxcbiAgdGFibGVzOiBUYWJsZVBheWxvYWRbXSxcbn1cblxuZXhwb3J0IGNsYXNzIEZvcm1TdHJ1Y3R1cmVBbmREYXRhIHtcbiAgc3RhdGU6IHN0cmluZztcbiAgX25hbWU6IHN0cmluZyA9ICcnO1xuICBfZm9ybUNvbmZpZzogYW55O1xuICBwcml2YXRlIF90aXRsZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX3N0YXRlRmxvdzogU3RhdGVGbG93O1xuICBwcml2YXRlIF9maWVsZEFycmF5OiBGaWVsZERlc2NyaXB0b3JbXTtcbiAgcHJpdmF0ZSBfZmllbGRzID0ge307XG4gIHByaXZhdGUgX2FjdGlvbkFycmF5OiBGb3JtQWN0aW9uW107XG4gIHByaXZhdGUgX2FjdGlvbnMgPSB7fTtcbiAgcHJpdmF0ZSBfdGFibGVBcnJheTogUmVjb3JkVGFibGVbXTtcbiAgcHJpdmF0ZSBfdGFibGVzID0ge307XG4gIHByaXZhdGUgX3NlY3Rpb25BcnJheTogUmVjb3JkRm9ybVNlY3Rpb25bXTtcbiAgcHJpdmF0ZSBfc2VjdGlvbnMgPSB7fTtcbiAgcHJpdmF0ZSBfaW1tdXRhYmxlRGF0YSA9IHt9O1xuICBwcml2YXRlIF9leHRyYUluZm8gPSB7fTtcbiAgcHJpdmF0ZSBfZXhjbHVzaXZlU2VjdGlvbnNCeUF0dHIgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihkZWZpbml0aW9uUmVjZWl2ZWQsIGZvcm1Db25maWcpIHtcbiAgICB0aGlzLl9mb3JtQ29uZmlnID0gZm9ybUNvbmZpZztcbiAgICB0aGlzLnN0YXRlID0gJyc7XG4gICAgdGhpcy5fYWN0aW9uQXJyYXkgPSBbXTtcbiAgICB0aGlzLl9maWVsZEFycmF5ID0gW107XG4gICAgdGhpcy5fdGFibGVBcnJheSA9IFtdO1xuICAgIHRoaXMuX3NlY3Rpb25BcnJheSA9IFtdO1xuICAgIHRoaXMuX3N0YXRlRmxvdyA9IHtcbiAgICAgIGRlZmF1bHRTdGF0ZTogJycsXG4gICAgICBzdGF0ZXM6IFtdLFxuICAgICAgdHJhbnNpdGlvbnM6IFtdLFxuICAgIH07XG4gICAgaWYgKCFkZWZpbml0aW9uUmVjZWl2ZWQpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5fbmFtZSA9IChkZWZpbml0aW9uUmVjZWl2ZWQuZm9ybSAmJiBkZWZpbml0aW9uUmVjZWl2ZWQuZm9ybS5mb3JtQ29kZSlcbiAgICAgID8gZGVmaW5pdGlvblJlY2VpdmVkLmZvcm0uZm9ybUNvZGUgOiB0aGlzLl9uYW1lO1xuICAgIHRoaXMuX3RpdGxlID0gKGRlZmluaXRpb25SZWNlaXZlZC5mb3JtICYmIGRlZmluaXRpb25SZWNlaXZlZC5mb3JtLmZvcm1UaXRsZSlcbiAgICAgID8gZGVmaW5pdGlvblJlY2VpdmVkLmZvcm0uZm9ybVRpdGxlIDogJyc7XG4gICAgdGhpcy5zZXRTdGF0ZUZsb3coZGVmaW5pdGlvblJlY2VpdmVkPy5zdGF0ZXMsIGRlZmluaXRpb25SZWNlaXZlZD8udHJhbnNpdGlvbnMsXG4gICAgICBkZWZpbml0aW9uUmVjZWl2ZWQ/LmRlZmF1bHRTdGF0ZSk7XG4gICAgdGhpcy5pbW11dGFibGVEYXRhID0gZGVmaW5pdGlvblJlY2VpdmVkLmltbXV0YWJsZURhdGE7XG4gICAgdGhpcy5leHRyYUluZm8gPSBkZWZpbml0aW9uUmVjZWl2ZWQuZXh0cmFJbmZvO1xuXG4gICAgaWYgKGRlZmluaXRpb25SZWNlaXZlZC5hY3Rpb25zKSB7XG4gICAgICBjb25zdCBmb3JtQWN0aW9ucyA9IGRlZmluaXRpb25SZWNlaXZlZC5hY3Rpb25zLm1hcChvYmpEZWYgPT4ge1xuICAgICAgICBsZXQgdmlzaWJsZVN0YXRlcyA9IG9iakRlZi52aXNpYmxlU3RhdGVzO1xuICAgICAgICBsZXQgZW5hYmxlZFN0YXRlcyA9IG9iakRlZi5lbmFibGVkU3RhdGVzO1xuICAgICAgICBpZiAoIXZpc2libGVTdGF0ZXMpIHtcbiAgICAgICAgICB2aXNpYmxlU3RhdGVzID0gKG9iakRlZi5hY3Rpb25Nb2RlcyB8fCAnJykuc3BsaXQoJywnKVxuICAgICAgICAgICAgLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpXG4gICAgICAgICAgICAuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApIHx8IFtdO1xuICAgICAgICAgIGVuYWJsZWRTdGF0ZXMgPSBbLi4udmlzaWJsZVN0YXRlc107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgLi4ub2JqRGVmLCB2aXNpYmxlU3RhdGVzLCBlbmFibGVkU3RhdGVzIH07XG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgYWN0aW9uUmVjZWl2ZWQgb2YgZm9ybUFjdGlvbnMpIHtcbiAgICAgICAgY29uc3QgZ2xvYmFsQWN0aW9uID0gbmV3IEZvcm1BY3Rpb24oYWN0aW9uUmVjZWl2ZWQsIHRoaXMuX2Zvcm1Db25maWcpO1xuICAgICAgICBjb25zdCBnbG9iYWxBY3Rpb25Db2RlID0gZ2xvYmFsQWN0aW9uLmFjdGlvbkNvZGU7XG4gICAgICAgIGlmIChnbG9iYWxBY3Rpb25Db2RlKSB7XG4gICAgICAgICAgdGhpcy5fYWN0aW9uQXJyYXkucHVzaChnbG9iYWxBY3Rpb24pO1xuICAgICAgICAgIHRoaXMuX2FjdGlvbnNbZ2xvYmFsQWN0aW9uQ29kZV0gPSBnbG9iYWxBY3Rpb247XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGVmaW5pdGlvblJlY2VpdmVkLmZpZWxkcykge1xuICAgICAgY29uc3QgZm9ybUZpZWxkcyA9IGRlZmluaXRpb25SZWNlaXZlZC5maWVsZHMubWFwKG9iakRlZiA9PiB7XG4gICAgICAgIGxldCB2aXNpYmxlU3RhdGVzID0gb2JqRGVmLnZpc2libGVTdGF0ZXM7XG4gICAgICAgIGxldCBlbmFibGVkU3RhdGVzID0gb2JqRGVmLmVuYWJsZWRTdGF0ZXMgfHwgb2JqRGVmLmVkaXRhYmxlU3RhdGVzO1xuICAgICAgICBpZiAoIXZpc2libGVTdGF0ZXMpIHtcbiAgICAgICAgICB2aXNpYmxlU3RhdGVzID0gKG9iakRlZi5maWVsZE1vZGVzIHx8ICcnKS5zcGxpdCgnLCcpXG4gICAgICAgICAgICAubWFwKHN0YXRlID0+IHN0YXRlLnRyaW0oKSlcbiAgICAgICAgICAgIC5maWx0ZXIoc3RhdGUgPT4gc3RhdGUubGVuZ3RoID4gMCkgfHwgW107XG4gICAgICAgICAgZW5hYmxlZFN0YXRlcyA9IFsuLi52aXNpYmxlU3RhdGVzXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyAuLi5vYmpEZWYsIHZpc2libGVTdGF0ZXMsIGVuYWJsZWRTdGF0ZXMgfTtcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCBmaWVsZFJlY2VpdmVkIG9mIGZvcm1GaWVsZHMpIHtcbiAgICAgICAgY29uc3QgZmllbGRUb0FkZCA9IG5ldyBGaWVsZERlc2NyaXB0b3IoZmllbGRSZWNlaXZlZCwgdGhpcy5fZm9ybUNvbmZpZyk7XG4gICAgICAgIGNvbnN0IGZpZWxkQ29kZSA9IGZpZWxkVG9BZGQuY29kZTtcbiAgICAgICAgaWYgKGZpZWxkQ29kZSkge1xuICAgICAgICAgIHRoaXMuX2ZpZWxkQXJyYXkucHVzaChmaWVsZFRvQWRkKTtcbiAgICAgICAgICB0aGlzLl9maWVsZHNbZmllbGRDb2RlXSA9IGZpZWxkVG9BZGQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGVmaW5pdGlvblJlY2VpdmVkLnRhYmxlcykge1xuICAgICAgY29uc3QgdGFibGVzID0gZGVmaW5pdGlvblJlY2VpdmVkLnRhYmxlcy5tYXAob2JqRGVmID0+IHtcbiAgICAgICAgbGV0IHZpc2libGVTdGF0ZXMgPSBvYmpEZWYudmlzaWJsZVN0YXRlcztcbiAgICAgICAgbGV0IGVuYWJsZWRTdGF0ZXMgPSBvYmpEZWYuZW5hYmxlZFN0YXRlcyB8fCBvYmpEZWYuZWRpdGFibGVTdGF0ZXM7XG4gICAgICAgIGlmICghdmlzaWJsZVN0YXRlcykge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSAob2JqRGVmLnRhYmxlTW9kZXMgfHwgJycpLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKVxuICAgICAgICAgICAgLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKSB8fCBbXTtcbiAgICAgICAgICBlbmFibGVkU3RhdGVzID0gWy4uLnZpc2libGVTdGF0ZXNdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLm9iakRlZiwgdmlzaWJsZVN0YXRlcywgZW5hYmxlZFN0YXRlcyB9O1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IHRhYmxlUmVjZWl2ZWQgb2YgdGFibGVzKSB7XG4gICAgICAgIGNvbnN0IHRhYmxlVG9BZGQgPSBuZXcgUmVjb3JkVGFibGUodGFibGVSZWNlaXZlZCwgdGhpcy5fZm9ybUNvbmZpZyk7XG4gICAgICAgIGNvbnN0IHRhYmxlQ29kZSA9IHRhYmxlVG9BZGQudGFibGVDb2RlO1xuICAgICAgICBpZiAodGFibGVDb2RlKSB7XG4gICAgICAgICAgdGhpcy5fdGFibGVBcnJheS5wdXNoKHRhYmxlVG9BZGQpO1xuICAgICAgICAgIHRoaXMuX3RhYmxlc1t0YWJsZUNvZGVdID0gdGFibGVUb0FkZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkZWZpbml0aW9uUmVjZWl2ZWQuc2VjdGlvbnMpIHtcbiAgICAgIGNvbnN0IGZvcm1TZWN0aW9ucyA9IGRlZmluaXRpb25SZWNlaXZlZC5zZWN0aW9ucy5tYXAob2JqRGVmID0+IHtcbiAgICAgICAgbGV0IHZpc2libGVTdGF0ZXMgPSBvYmpEZWYudmlzaWJsZVN0YXRlcztcbiAgICAgICAgaWYgKCF2aXNpYmxlU3RhdGVzKSB7XG4gICAgICAgICAgdmlzaWJsZVN0YXRlcyA9IChvYmpEZWYuc2VjdGlvbk1vZGVzIHx8ICcnKS5zcGxpdCgnLCcpXG4gICAgICAgICAgICAubWFwKHN0YXRlID0+IHN0YXRlLnRyaW0oKSlcbiAgICAgICAgICAgIC5maWx0ZXIoc3RhdGUgPT4gc3RhdGUubGVuZ3RoID4gMCkgfHwgW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgLi4ub2JqRGVmLCB2aXNpYmxlU3RhdGVzIH07XG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3Qgc2VjdGlvblJlY2VpdmVkIG9mIGZvcm1TZWN0aW9ucykge1xuICAgICAgICBjb25zdCBzZWN0aW9uVG9BZGQgPSBuZXcgUmVjb3JkRm9ybVNlY3Rpb24oc2VjdGlvblJlY2VpdmVkLCB0aGlzKTtcbiAgICAgICAgY29uc3Qgc2VjdGlvbkNvZGUgPSBzZWN0aW9uVG9BZGQuc2VjdGlvbkNvZGU7XG4gICAgICAgIGlmIChzZWN0aW9uQ29kZSkge1xuICAgICAgICAgIHRoaXMuX3NlY3Rpb25BcnJheS5wdXNoKHNlY3Rpb25Ub0FkZCk7XG4gICAgICAgICAgdGhpcy5fc2VjdGlvbnNbc2VjdGlvbkNvZGVdID0gc2VjdGlvblRvQWRkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0VGl0bGUoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX3RpdGxlOyB9XG4gIHNldFRpdGxlKHRpdGxlOiBzdHJpbmcpOiB2b2lkIHsgdGhpcy5fdGl0bGUgPSB0aXRsZTsgfVxuICBnZXQgbmFtZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fbmFtZTsgfVxuICBzZXQgbmFtZShuYW1lKSB7IHRoaXMuX25hbWUgPSBuYW1lOyB9XG5cbiAgLy8gRXN0YWRvc1xuICBnZXQgZGVmYXVsdFN0YXRlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9zdGF0ZUZsb3cuZGVmYXVsdFN0YXRlOyB9XG4gIHN1cHBvcnRTdGF0ZShzdGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9zdGF0ZUZsb3cuc3RhdGVzPy5pbmNsdWRlcyhzdGF0ZSk7IH1cbiAgc3VwcG9ydE1vZGUoc3RhdGU6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5zdXBwb3J0U3RhdGUoc3RhdGUpOyB9XG4gIGdldCBzdGF0ZXMoKTogYW55W10geyByZXR1cm4gdGhpcy5fc3RhdGVGbG93LnN0YXRlczsgfVxuXG4gIGdldEN1cnJlbnRTdGF0ZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5zdGF0ZTsgfVxuXG4gIGNoYW5nZVN0YXRlKG5ld1N0YXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIW5ld1N0YXRlIHx8ICF0aGlzLnN1cHBvcnRTdGF0ZShuZXdTdGF0ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnN0YXRlKSB7XG4gICAgICB0aGlzLnN0YXRlID0gbmV3U3RhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRyYW5zaXRpb25Ub0NoYW5nZSA9IHRoaXMuX3N0YXRlRmxvdy50cmFuc2l0aW9ucy5maW5kKHRybnMgPT5cbiAgICAgICAgdHJucy5zb3VyY2UgPT09IHRoaXMuc3RhdGUgJiYgdHJucy5kZXN0aW5hdGlvbiA9PT0gbmV3U3RhdGUpO1xuICAgICAgaWYgKHRyYW5zaXRpb25Ub0NoYW5nZSkge1xuICAgICAgICB0aGlzLnN0YXRlID0gbmV3U3RhdGU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAodGhpcy5zdGF0ZSA9PT0gbmV3U3RhdGUpO1xuICB9XG5cbiAgc2V0U3RhdGVGbG93KHN0YXRlcz8sIHRyYW5zaXRpb25zPywgZGVmYXVsdFN0YXRlPzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdGVGbG93LnN0YXRlcyA9IHN0YXRlcztcbiAgICB0aGlzLl9zdGF0ZUZsb3cuZGVmYXVsdFN0YXRlID0gZGVmYXVsdFN0YXRlIHx8IHRoaXMuX3N0YXRlRmxvdy5zdGF0ZXNbMF07XG4gICAgdGhpcy5fc3RhdGVGbG93LnRyYW5zaXRpb25zID0gdHJhbnNpdGlvbnMubWFwKHRyYW5zaXRpb24gPT4ge1xuICAgICAgY29uc3QgbmFtZSA9IHRyYW5zaXRpb24ubmFtZTtcbiAgICAgIGNvbnN0IHNvdXJjZSA9ICh0aGlzLl9zdGF0ZUZsb3cuc3RhdGVzLmluY2x1ZGVzKHRyYW5zaXRpb24uc291cmNlKSkgPyB0cmFuc2l0aW9uLnNvdXJjZSA6ICcnO1xuICAgICAgY29uc3QgZGVzdGluYXRpb24gPSAodGhpcy5fc3RhdGVGbG93LnN0YXRlcy5pbmNsdWRlcyh0cmFuc2l0aW9uLmRlc3RpbmF0aW9uKSkgPyB0cmFuc2l0aW9uLmRlc3RpbmF0aW9uIDogJyc7XG4gICAgICByZXR1cm4geyBuYW1lLCBzb3VyY2UsIGRlc3RpbmF0aW9uIH07XG4gICAgfSkuZmlsdGVyKGl0ZW0gPT4gaXRlbS5uYW1lICYmIGl0ZW0uc291cmNlICYmIGl0ZW0uZGVzdGluYXRpb24pO1xuICB9XG5cbiAgLy8gaW1tdXRhYmxlIERhdGFcbiAgZ2V0SW1tdXRhYmxlRWxlbWVudChuYW1lOiBzdHJpbmcpOiBhbnkgeyByZXR1cm4gdGhpcy5faW1tdXRhYmxlRGF0YT8uW25hbWVdPy52YWx1ZSA/PyBudWxsOyB9XG4gIHNldCBpbW11dGFibGVEYXRhKGltbXV0YWJsZURhdGEpIHsgT2JqZWN0LmFzc2lnbih0aGlzLl9pbW11dGFibGVEYXRhLCBpbW11dGFibGVEYXRhKTsgfVxuICBnZXQgaW1tdXRhYmxlRGF0YSgpOiBhbnkgeyByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLl9pbW11dGFibGVEYXRhKSk7IH1cblxuICAvLyBleHRyYSBJbmZvXG4gIGdldEV4dHJhSW5mbyhuYW1lOiBzdHJpbmcpOiBhbnkgeyByZXR1cm4gdGhpcy5fZXh0cmFJbmZvPy5bbmFtZV0/LnZhbHVlID8/IG51bGw7IH1cbiAgc2V0IGV4dHJhSW5mbyhleHRyYUluZm8pIHsgT2JqZWN0LmFzc2lnbih0aGlzLl9leHRyYUluZm8sIGV4dHJhSW5mbyk7IH1cbiAgZ2V0IGV4dHJhSW5mbygpOiBhbnkgeyByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLl9leHRyYUluZm8pKTsgfVxuXG4gIC8vIEZpZWxkc1xuICBnZXQgZmllbGRzKCk6IGFueSB7IHJldHVybiB0aGlzLl9maWVsZHM7IH1cbiAgZ2V0IGZpZWxkTmFtZXMoKTogc3RyaW5nW10geyByZXR1cm4gdGhpcy5nZXRGaWVsZE5hbWVzKCk7IH1cbiAgZ2V0RmllbGRzKCk6IEZpZWxkRGVzY3JpcHRvcltdIHsgcmV0dXJuIHRoaXMuX2ZpZWxkQXJyYXk7IH1cbiAgZ2V0RmllbGROYW1lcygpOiBzdHJpbmdbXSB7IHJldHVybiB0aGlzLl9maWVsZEFycmF5Lm1hcChmaWVsZCA9PiBmaWVsZC5jb2RlKTsgfVxuICBnZXRGaWVsZChjb2RlOiBzdHJpbmcpOiBGaWVsZERlc2NyaXB0b3IgeyByZXR1cm4gKGNvZGUgJiYgdGhpcy5fZmllbGRzPy5bY29kZV0pID8gdGhpcy5fZmllbGRzW2NvZGVdIDogbnVsbDsgfVxuICBlbmFibGVGaWVsZChjb2RlOiBzdHJpbmcpOiB2b2lkIHsgdGhpcy5nZXRGaWVsZChjb2RlKT8uZW5hYmxlKCk7IH1cbiAgZGlzYWJsZUZpZWxkKGNvZGU6IHN0cmluZyk6IHZvaWQgeyB0aGlzLmdldEZpZWxkKGNvZGUpPy5kaXNhYmxlKCk7IH1cbiAgZ2V0RmllbGRWYWx1ZShjb2RlOiBzdHJpbmcpOiBhbnkgeyByZXR1cm4gdGhpcy5nZXRGaWVsZChjb2RlKT8udmFsdWU7IH1cbiAgZ2V0RmllbGRPcHRpb25UZXh0KGNvZGU6IHN0cmluZyk6IGFueSB7IHJldHVybiB0aGlzLmdldEZpZWxkKGNvZGUpPy5vcHRpb25UZXh0OyB9XG4gIGdldEZpZWxkT3B0aW9ucyhjb2RlOiBzdHJpbmcpOiBGaWVsZE9wdGlvbltdIHwgbnVsbCB7IHJldHVybiB0aGlzLmdldEZpZWxkKGNvZGUpPy5vcHRpb25zID8/IG51bGw7IH1cbiAgc2V0RmllbGRWYWx1ZShjb2RlOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBhbnkgeyB0aGlzLmdldEZpZWxkKGNvZGUpPy5zZXRWYWx1ZSh2YWx1ZSk7IH1cbiAgc2V0RmllbGRFcnJvcihjb2RlOiBzdHJpbmcsIGVycm9yQ29kZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcsIHR5cGU6IHN0cmluZyA9ICdlcnJvcicpOiBhbnkgeyB0aGlzLmdldEZpZWxkKGNvZGUpPy5zZXRFcnJvcihlcnJvckNvZGUsIG1lc3NhZ2UsIHR5cGUpOyB9XG4gIHNldEZpZWxkSW50cmluc2ljRXJyb3JNZXNzYWdlKGNvZGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKTogYW55IHsgdGhpcy5nZXRGaWVsZChjb2RlKT8uc2V0SW50cmluc2ljRXJyb3JNZXNzYWdlKG1lc3NhZ2UpOyB9XG5cbiAgc2V0RmllbGRSZXF1aXJlZChpbnB1dENvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHJlcXVpcmVkOiBib29sZWFuKTogYW55IHtcbiAgICBjb25zdCBjb2RlcyA9IHRoaXMuZ2V0RmllbGRTZXQobnVsbCwgaW5wdXRDb2RlcyA/PyBudWxsKTtcbiAgICBmb3IgKGNvbnN0IGNvZGUgb2YgY29kZXMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5nZXRGaWVsZChjb2RlKSA/PyBudWxsO1xuICAgICAgICBmaWVsZCAmJiAoZmllbGQucmVxdWlyZWQgPSByZXF1aXJlZCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBFcnJvciBtb2RpZmljYW5kbyBjYW1wbyAke2NvZGV9OiAke2V9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0RmllbGRFcnJvck1lc3NhZ2UoY29kZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpOiBhbnkgeyB0aGlzLmdldEZpZWxkKGNvZGUpPy5zZXRFcnJvck1lc3NhZ2UobWVzc2FnZSk7IH1cblxuICBzZXRGaWVsZE9wdGlvbnMoY29kZTogc3RyaW5nLCBvcHRpb25zQXJyYXk6IGFueVtdLCBpZEF0dHJpYnV0ZTogc3RyaW5nLCBuYW1lQXR0cmlidXRlOiBzdHJpbmcpOiBhbnkge1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5nZXRGaWVsZChjb2RlKTtcbiAgICBpZiAoZmllbGQgJiYgb3B0aW9uc0FycmF5Py5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWVsZE9wdGlvbnMgPSBvcHRpb25zQXJyYXkubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgZmllbGRPcHRpb25JZDogaXRlbVtpZEF0dHJpYnV0ZV0sXG4gICAgICAgIGZpZWxkT3B0aW9uVmFsdWU6IGl0ZW1bbmFtZUF0dHJpYnV0ZV1cbiAgICAgIH0pKTtcbiAgICAgIGZpZWxkLnNldEZpZWxkT3B0aW9ucyhmaWVsZE9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGdldEZpZWxkU2V0KGZpbHRlciwgaW5wdXRDb2Rlczogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nIHwgbnVsbCwgc3ViQ29kZT86IHN0cmluZyB8IG51bGwpOiBzdHJpbmdbXSB7XG4gICAgbGV0IGNvZGVzOiBhbnlbXSA9IFtdO1xuICAgIGlmIChpbnB1dENvZGVzKSB7XG4gICAgICBpZiAodHlwZW9mIGlucHV0Q29kZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvZGVzID0gW2lucHV0Q29kZXNdO1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGlucHV0Q29kZXMpICYmIGlucHV0Q29kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb2RlcyA9IGlucHV0Q29kZXMgPz8gW107XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzZWNDb2RlICYmICFzdWJDb2RlKSB7XG4gICAgICBjb2RlcyA9IHRoaXMuZ2V0U2VjdGlvbihzZWNDb2RlKT8uZ2V0RmllbGROYW1lcygpID8/IFtdO1xuICAgIH0gZWxzZSBpZiAoc2VjQ29kZSAmJiBzdWJDb2RlKSB7XG4gICAgICBjb2RlcyA9IHRoaXMuZ2V0U3ViU2VjdGlvbihzZWNDb2RlLCBzdWJDb2RlKT8uZ2V0RmllbGROYW1lcygpID8/IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb2RlcyA9IHRoaXMuZ2V0RmllbGROYW1lcygpID8/IFtdO1xuICAgIH1cbiAgICByZXR1cm4gKGZpbHRlcikgPyBjb2Rlcy5maWx0ZXIoZmxkID0+IGZpbHRlcih0aGlzLmdldEZpZWxkKGZsZCkpKSA6IGNvZGVzO1xuICB9XG5cbiAgYXBwbHlPbkZpZWxkcyhwcm9jZXNzRnVuYywgaW5wdXRDb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IG51bWJlciB7XG4gICAgaWYgKCFwcm9jZXNzRnVuYykgeyByZXR1cm4gMDsgfVxuICAgIGNvbnN0IGNvZGVzID0gdGhpcy5nZXRGaWVsZFNldChudWxsLCBpbnB1dENvZGVzID8/IG51bGwsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICAgIGxldCBwcm9jZXNzZWRGaWVsZHMgPSAwO1xuICAgIGZvciAoY29uc3QgY29kZSBvZiBjb2Rlcykge1xuICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmdldEZpZWxkKGNvZGUpO1xuICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcHJvY2Vzc0Z1bmMoZmllbGQpO1xuICAgICAgICAgIHByb2Nlc3NlZEZpZWxkcyArPSAxO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYEVycm9yIHByb2Nlc2FuZG8gZnVuY2lvbiBlbiBjYW1wbyAke2ZpZWxkfTogJHtlfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwcm9jZXNzZWRGaWVsZHM7XG4gIH1cblxuICBlbmFibGVGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFwcGx5T25GaWVsZHMoZmxkID0+IGZsZD8uZW5hYmxlKCksIGNvZGVzLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIHNob3dGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFwcGx5T25GaWVsZHMoZmxkID0+IGZsZD8uc2hvdygpLCBjb2Rlcywgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICBoaWRlRmllbGRzKGNvZGVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseU9uRmllbGRzKGZsZCA9PiBmbGQ/LmhpZGUoKSwgY29kZXMsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgc2hvd0xhYmVsRmllbGRzKGNvZGVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseU9uRmllbGRzKGZsZCA9PiBmbGQ/LnNob3dMYWJsZWwoKSwgY29kZXMsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgaGlkZUxhYmVsRmllbGRzKGNvZGVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseU9uRmllbGRzKGZsZCA9PiBmbGQ/LmhpZGVMYWJlbCgpLCBjb2Rlcywgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICBkaXNhYmxlRmllbGRzKGNvZGVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseU9uRmllbGRzKGZsZCA9PiBmbGQ/LmRpc2FibGUoKSwgY29kZXMsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgY2xlYW5GaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFwcGx5T25GaWVsZHMoZmxkID0+IGZsZD8uY2xlYW4oKSwgY29kZXMsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgdGFnRmllbGRzV2l0aEVycm9yKG1lc3NhZ2U6IHN0cmluZywgY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFwcGx5T25GaWVsZHMoZmxkID0+IGZsZD8uc2V0RXJyb3JNZXNzYWdlKG1lc3NhZ2UpLCBjb2Rlcywgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICBjbGVhbkVycm9yRmllbGRzKGNvZGVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy50YWdGaWVsZHNXaXRoRXJyb3IoJycsIGNvZGVzLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIHRhZ0VtcHR5UmVxdWlyZWRGaWVsZHMobWVzc2FnZTogc3RyaW5nLCBjb2RlcyA9IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWdGaWVsZHNXaXRoRXJyb3IobWVzc2FnZSwgdGhpcy5nZXRSZXF1aXJlZEVtcHR5RmllbGRzKGNvZGVzLCBzZWNDb2RlLCBzdWJDb2RlKSkgPiAwO1xuICB9XG5cbiAgZ2V0UmVxdWlyZWRGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRTZXQoZmxkID0+IGZsZD8ucmVxdWlyZWQsIGNvZGVzID8/IG51bGwsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgZ2V0UmVxdWlyZWRFbXB0eUZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFNldChmbGQgPT4gZmxkPy5yZXF1aXJlZCAmJiBmbGQ/LmVtcHR5LCBjb2RlcyA/PyBudWxsLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIGdldENoYW5nZWRGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRTZXQoZmxkID0+ICFmbGQ/Lm91dHB1dE9ubHkgJiYgZmxkPy5oYXNDaGFuZ2VkKCksIGNvZGVzID8/IG51bGwsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgZ2V0RmllbGRzV2l0aFZhbGlkYXRpb25Jc3N1ZXMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRTZXQoZmxkID0+IGZsZD8uaGFzRXJyb3IoKSwgY29kZXMgPz8gbnVsbCwgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICBnZXRGaWVsZHNWYWx1ZXMoaW5wdXRDb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IGFueSB7XG4gICAgY29uc3QgY29kZXMgPSB0aGlzLmdldEZpZWxkU2V0KG51bGwsIGlucHV0Q29kZXMgPz8gbnVsbCwgc2VjQ29kZSwgc3ViQ29kZSk7XG4gICAgY29uc3QgcmVzdWx0T2JqZWN0ID0ge307XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNvZGVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgY29kZSA9IGNvZGVzW2luZGV4XTtcbiAgICAgIGlmIChjb2RlKSB7XG4gICAgICAgIHJlc3VsdE9iamVjdFtjb2RlXSA9IHRoaXMuX2ZpZWxkcz8uW2NvZGVdPy5nZXRWYWx1ZSgpID8/IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRPYmplY3Q7XG4gIH1cblxuICAvLyBBY2Npb25lc1xuICBnZXQgYWN0aW9ucygpIHsgcmV0dXJuIHRoaXMuX2FjdGlvbnM7IH1cblxuICBnZXRBY3Rpb25zQnlBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCB2YWx1ZSk6IEZvcm1BY3Rpb25bXSB7IHJldHVybiB0aGlzLl9hY3Rpb25BcnJheS5maWx0ZXIoYWN0aW9uSXRlbSA9PiBhY3Rpb25JdGVtLm1hdGNoQXR0cmlidXRlKG5hbWUsIHZhbHVlKSk7IH1cbiAgZ2V0QWN0aW9ucygpOiBGb3JtQWN0aW9uW10geyByZXR1cm4gdGhpcy5fYWN0aW9uQXJyYXk7IH1cbiAgZ2V0QWN0aW9uKGNvZGU6IHN0cmluZyk6IEZvcm1BY3Rpb24geyByZXR1cm4gKGNvZGUgJiYgdGhpcy5fYWN0aW9ucz8uW2NvZGVdKSA/IHRoaXMuX2FjdGlvbnNbY29kZV0gOiBudWxsOyB9XG4gIHNob3dBY3Rpb25zKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5leGVjT25BY3Rpb25zKGNvZGVzLCBTSE9XKTsgfVxuICBoaWRlQWN0aW9ucyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uQWN0aW9ucyhjb2RlcywgSElERSk7IH1cbiAgZW5hYmxlQWN0aW9ucyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uQWN0aW9ucyhjb2RlcywgRU5BQkxFKTsgfVxuICBkaXNhYmxlQWN0aW9ucyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uQWN0aW9ucyhjb2RlcywgRElTQUJMRSk7IH1cblxuICBleGVjT25BY3Rpb25zKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIGZ1bmN0aW9uTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aW9uQ29kZXMgPSAoQXJyYXkuaXNBcnJheShjb2RlcykpID8gY29kZXMgOiAoY29kZXMgPyBbY29kZXNdIDogW10pO1xuICAgIGlmICghZnVuY3Rpb25OYW1lIHx8IGFjdGlvbkNvZGVzLmxlbmd0aCA9PT0gMCkgeyByZXR1cm47IH1cbiAgICBhY3Rpb25Db2Rlcy5mb3JFYWNoKGNvZGUgPT4ge1xuICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5nZXRBY3Rpb24oY29kZSk7XG4gICAgICBhY3Rpb24/LltmdW5jdGlvbk5hbWVdPy4oKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFRhYmxhc1xuICBnZXQgdGFibGVzKCk6IGFueSB7IHJldHVybiB0aGlzLnRhYmxlczsgfVxuICBnZXRUYWJsZXMoKTogUmVjb3JkVGFibGVbXSB7IHJldHVybiB0aGlzLl90YWJsZUFycmF5OyB9XG4gIGdldFRhYmxlKGNvZGU6IHN0cmluZyk6IFJlY29yZFRhYmxlIHsgcmV0dXJuIChjb2RlICYmIHRoaXMuX3RhYmxlcz8uW2NvZGVdKSA/IHRoaXMuX3RhYmxlc1tjb2RlXSA6IG51bGw7IH1cbiAgZ2V0VGFibGVSZWNvcmQoY29kZTogc3RyaW5nLCBpZDogc3RyaW5nKTogVGFibGVSZWNvcmREYXRhIHsgcmV0dXJuIHRoaXMuZ2V0VGFibGUoY29kZSk/LmdldFRhYmxlUmVjb3JkKGlkKSB9XG5cbiAgZW5hYmxlVGFibGVzKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5leGVjT25UYWJsZXMoY29kZXMsIEVOQUJMRSk7IH1cbiAgZGlzYWJsZVRhYmxlcyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uVGFibGVzKGNvZGVzLCBESVNBQkxFKTsgfVxuICBzaG93VGFibGVzKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5leGVjT25UYWJsZXMoY29kZXMsIFNIT1cpOyB9XG4gIGhpZGVUYWJsZXMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmV4ZWNPblRhYmxlcyhjb2RlcywgSElERSk7IH1cbiAgY2xlYW5UYWJsZXMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmV4ZWNPblRhYmxlcyhjb2RlcywgQ0xFQU4pOyB9XG5cbiAgZXhlY09uVGFibGVzKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIGZ1bmN0aW9uTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgdGFibGVDb2RlcyA9IChBcnJheS5pc0FycmF5KGNvZGVzKSkgPyBjb2RlcyA6IChjb2RlcyA/IFtjb2Rlc10gOiBbXSk7XG4gICAgaWYgKCFmdW5jdGlvbk5hbWUgfHwgdGFibGVDb2Rlcy5sZW5ndGggPT09IDApIHsgcmV0dXJuOyB9XG4gICAgdGFibGVDb2Rlcy5mb3JFYWNoKGNvZGUgPT4ge1xuICAgICAgY29uc3QgdGFibGUgPSB0aGlzLmdldFRhYmxlKGNvZGUpO1xuICAgICAgdGFibGU/LltmdW5jdGlvbk5hbWVdPy4oKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFNlY2Npb25lc1xuICBnZXQgc2VjdGlvbnMoKTogYW55IHsgcmV0dXJuIHRoaXMuX3NlY3Rpb25zOyB9XG4gIGdldFNlY3Rpb25zKCk6IFJlY29yZEZvcm1TZWN0aW9uW10geyByZXR1cm4gdGhpcy5fc2VjdGlvbkFycmF5OyB9XG4gIGdldFNlY3Rpb25zQnlBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOiBSZWNvcmRGb3JtU2VjdGlvbltdIHsgcmV0dXJuIHRoaXMuX3NlY3Rpb25BcnJheS5maWx0ZXIoaXRlbSA9PiBpdGVtLm1hdGNoQXR0cmlidXRlKG5hbWUsIHZhbHVlKSk7IH1cbiAgZ2V0IHNlY3Rpb25UaXRsZXMoKTogc3RyaW5nW10geyByZXR1cm4gdGhpcy5fc2VjdGlvbkFycmF5Lm1hcChmb3JtU2VjdGlvbiA9PiBmb3JtU2VjdGlvbi5zZWN0aW9uVGl0bGUpOyB9XG4gIGdldCB2aXNpYmxlU2VjdGlvbnMoKTogUmVjb3JkRm9ybVNlY3Rpb25bXSB7IHJldHVybiB0aGlzLl9zZWN0aW9uQXJyYXkuZmlsdGVyKHNlYyA9PiBzZWMudmlzaWJsZSk7IH1cbiAgZ2V0U2VjdGlvbihjb2RlOiBzdHJpbmcpOiBSZWNvcmRGb3JtU2VjdGlvbiB7IHJldHVybiAoY29kZSAmJiB0aGlzLl9zZWN0aW9ucz8uW2NvZGVdKSA/IHRoaXMuX3NlY3Rpb25zW2NvZGVdIDogbnVsbDsgfVxuICBzaG93U2VjdGlvbnMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nKTogdm9pZCB7IHRoaXMuZXhlY09uU2VjdGlvbnMoY29kZXMsIFNIT1cpOyB9XG4gIGhpZGVTZWN0aW9ucyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgdGhpcy5leGVjT25TZWN0aW9ucyhjb2RlcywgSElERSk7IH1cbiAgYWN0aXZlU2VjdGlvbigpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fZXhjbHVzaXZlU2VjdGlvbnNCeUF0dHJbQUNUSVZFXTsgfVxuICBnZXRTdWJTZWN0aW9uKGNvZGU6IHN0cmluZywgc3ViQ29kZSk6IFJlY29yZEZvcm1TdWJTZWN0aW9uIHsgcmV0dXJuIHRoaXMuZ2V0U2VjdGlvbihjb2RlKT8uZ2V0U3Vic2VjdGlvbihzdWJDb2RlKSA/PyBudWxsOyB9XG4gIHNob3dTdWJTZWN0aW9ucyhjb2RlOiBzdHJpbmcsIHN1YkNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5leGVjT25TdWJTZWN0aW9ucyhjb2RlLCBzdWJDb2RlcywgU0hPVyk7IH1cbiAgaGlkZVN1YlNlY3Rpb25zKGNvZGU6IHN0cmluZywgc3ViQ29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmV4ZWNPblN1YlNlY3Rpb25zKGNvZGUsIHN1YkNvZGVzLCBISURFKTsgfVxuICBnZXRTZWN0aW9uQWN0aW9ucyhjb2RlKTogRm9ybUFjdGlvbltdIHsgcmV0dXJuIHRoaXMuZ2V0U2VjdGlvbihjb2RlKT8uZ2V0QWN0aW9ucygpID8/IG51bGw7IH1cbiAgZ2V0U2VjdGlvbkFjdGlvbk5hbWVzKGNvZGUpOiBzdHJpbmdbXSB7IHJldHVybiB0aGlzLmdldFNlY3Rpb24oY29kZSk/LmdldEFjdGlvbk5hbWVzKCkgPz8gbnVsbDsgfVxuXG4gIGFjdGl2YXRlU2VjdGlvbihjb2RlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoY29kZSA9PT0gdGhpcy5fZXhjbHVzaXZlU2VjdGlvbnNCeUF0dHJbQUNUSVZFXSkgeyByZXR1cm47IH1cbiAgICB0aGlzLmdldFNlY3Rpb24odGhpcy5hY3RpdmVTZWN0aW9uKCkpPy5pbmFjdGl2YXRlKCk7XG4gICAgdGhpcy5nZXRTZWN0aW9uKGNvZGUpPy5hY3RpdmF0ZSgpO1xuICAgIHRoaXMuX2V4Y2x1c2l2ZVNlY3Rpb25zQnlBdHRyW0FDVElWRV0gPSBjb2RlO1xuICB9XG5cbiAgZXhlY09uU2VjdGlvbnMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgZnVuY3Rpb25OYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzZWN0aW9uQ29kZXMgPSAoQXJyYXkuaXNBcnJheShjb2RlcykpID8gY29kZXMgOiAoY29kZXMgPyBbY29kZXNdIDogW10pO1xuICAgIGlmICghZnVuY3Rpb25OYW1lIHx8IHNlY3Rpb25Db2Rlcy5sZW5ndGggPT09IDApIHsgcmV0dXJuOyB9XG4gICAgc2VjdGlvbkNvZGVzLmZvckVhY2goY29kZSA9PiB7XG4gICAgICBjb25zdCBzZWN0aW9uID0gdGhpcy5nZXRTZWN0aW9uKGNvZGUpO1xuICAgICAgc2VjdGlvbj8uW2Z1bmN0aW9uTmFtZV0/LigpO1xuICAgIH0pO1xuICB9XG5cbiAgZXhlY09uU3ViU2VjdGlvbnMoY29kZTogc3RyaW5nLCBzdWJOYW1lczogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBmdW5jdGlvbk5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHN1YkNvZGVzID0gKEFycmF5LmlzQXJyYXkoc3ViTmFtZXMpKSA/IHN1Yk5hbWVzIDogKHN1Yk5hbWVzID8gW3N1Yk5hbWVzXSA6IFtdKTtcbiAgICBjb25zdCBzZWN0aW9uID0gdGhpcy5nZXRTZWN0aW9uKGNvZGUpO1xuICAgIGlmICghZnVuY3Rpb25OYW1lIHx8ICFzZWN0aW9uIHx8IHN1YkNvZGVzLmxlbmd0aCA9PT0gMCkgeyByZXR1cm47IH1cbiAgICBmb3IgKGNvbnN0IHN1YkNvZGUgb2Ygc3ViQ29kZXMpIHtcbiAgICAgIGNvbnN0IHN1YlNlY3Rpb24gPSB0aGlzLmdldFN1YlNlY3Rpb24oY29kZSwgc3ViQ29kZSk7XG4gICAgICBzdWJTZWN0aW9uPy5bZnVuY3Rpb25OYW1lXT8uKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG9zIHByb3Bpb3MgZGUgZ2VzdGnDs24gZGVsIGZvcm11bGFyaW9cbiAgICovXG5cbiAgY2xlYW5EYXRhKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgZmllbGQgb2YgdGhpcy5fZmllbGRBcnJheSkge1xuICAgICAgZmllbGQuc2V0VmFsdWUoZmllbGQuZGVmYXVsdFZhbHVlKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCB0YWJsZSBvZiB0aGlzLl90YWJsZUFycmF5KSB7XG4gICAgICB0YWJsZS5jbGVhbigpO1xuICAgIH1cbiAgfVxuXG4gIGdldFBheWxvYWQoKTogYW55IHtcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybVBheWxvYWQgPSB7XG4gICAgICBmaWVsZHM6IFtdLFxuICAgICAgdGFibGVzOiBbXSxcbiAgICB9O1xuICAgIGZvcm1EYXRhLmZpZWxkcyA9IHRoaXMuZ2V0RmllbGRzKCkuZmlsdGVyKGZsZCA9PiAhZmxkPy5vdXRwdXRPbmx5KVxuICAgICAgLm1hcChmbGQgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZFBheWxvYWQ6IEZpZWxkUGF5bG9hZCA9IHtcbiAgICAgICAgICBmaWVsZENvZGU6IGZsZD8uY29kZSxcbiAgICAgICAgICBmaWVsZFZhbHVlOiBmbGQ/LnZhbHVlLFxuICAgICAgICAgIGVkaXRhYmxlOiAhZmxkPy5kaXNhYmxlZCxcbiAgICAgICAgICB2aXNpYmxlOiBmbGQ/LnZpc2libGUsXG4gICAgICAgICAgcmVxdWlyZWQ6IGZsZD8ucmVxdWlyZWQsXG4gICAgICAgICAgZmllbGRPcHRpb25zOiAnJyxcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmllbGRQYXlsb2FkO1xuICAgICAgfSk7XG5cbiAgICBmb3JtRGF0YS50YWJsZXMgPSB0aGlzLmdldFRhYmxlcygpLm1hcCh0YmwgPT4ge1xuICAgICAgY29uc3QgdGFibGVQYXlsb2FkOiBUYWJsZVBheWxvYWQgPSB7XG4gICAgICAgIHRhYmxlQ29kZTogdGJsLnRhYmxlQ29kZSxcbiAgICAgICAgdmlzaWJsZTogdGJsLnZpc2libGUsXG4gICAgICAgIGN1cnJlbnRQYWdlOiB0YmwuY3VycmVudFBhZ2UsXG4gICAgICAgIHJlcXVlc3RlZFBhZ2U6IHRibC5yZXF1ZXN0ZWRQYWdlLFxuICAgICAgICByZWNvcmRzUGVyUGFnZTogdGJsLnJlY29yZHNQZXJQYWdlLFxuICAgICAgICBjdXJyZW50RmlsdGVyOiB0YmwuY3VycmVudEZpbHRlcixcbiAgICAgICAgc29ydGluZ0NvbHVtbjogdGJsLnNvcnRpbmcuY29sdW1uTmFtZSxcbiAgICAgICAgc29ydGluZ0RpcmVjdGlvbjogdGJsLnNvcnRpbmcuZGlyZWN0aW9uLFxuICAgICAgfTtcbiAgICAgIHJldHVybiB0YWJsZVBheWxvYWRcbiAgICB9KVxuICAgIHJldHVybiBmb3JtRGF0YTtcbiAgfVxufVxuIl19
431
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEMsT0FBTyxFQUFFLGVBQWUsRUFBZSxNQUFNLFNBQVMsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUs5QyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFDeEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDO0FBQ3BCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUNwQixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFDeEIsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDO0FBQzFCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQztBQXNDdEIsTUFBTSxPQUFPLG9CQUFvQjtJQW9CL0IsWUFBWSxrQkFBa0IsRUFBRSxVQUFVO1FBbkJ6QixpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFHbkQsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUVYLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFHcEIsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUViLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFFZCxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsNkJBQXdCLEdBQUcsRUFBRSxDQUFDO1FBR3BDLElBQUksQ0FBQyxXQUFXLEdBQUcs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QUksQ0FBQyxDQUFDLENBQUM7SUFDN0YsSUFBSSxhQUFhLENBQUMsYUFBYSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkYsSUFBSSxhQUFhLEtBQVUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXBGLGFBQWE7SUFDYixZQUFZLENBQUMsSUFBWSxJQUFTLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLElBQUksU0FBUyxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLElBQUksU0FBUyxLQUFVLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU1RSxTQUFTO0lBQ1QsSUFBSSxNQUFNLEtBQVUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMxQyxJQUFJLFVBQVUsS0FBZSxPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0QsU0FBUyxLQUF3QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzNELGFBQWEsS0FBZSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRSxRQUFRLENBQUMsSUFBWSxJQUFxQixPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMs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RSxRQUFRO2dCQUN4QixPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU87Z0JBQ3JCLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUTtnQkFDdkIsWUFBWSxFQUFFLEVBQUU7YUFDakIsQ0FBQTtZQUNELE9BQU8sWUFBWSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBRUwsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzNDLE1BQU0sWUFBWSxHQUFpQjtnQkFDakMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTO2dCQUN4QixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87Z0JBQ3BCLFdBQVcsRUFBRSxHQUFHLENBQUMsV0FBVztnQkFDNUIsYUFBYSxFQUFFLEdBQUcsQ0FBQyxhQUFhO2dCQUNoQyxjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWM7Z0JBQ2xDLGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYTtnQkFDaEMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVTtnQkFDckMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTO2FBQ3hDLENBQUM7WUFDRixPQUFPLFlBQVksQ0FBQTtRQUNyQixDQUFDLENBQUMsQ0FBQTtRQUNGLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvcm1BY3Rpb24gfSBmcm9tICcuL2FjdGlvbic7XG5pbXBvcnQgeyBGaWVsZERlc2NyaXB0b3IsIEZpZWxkT3B0aW9uIH0gZnJvbSAnLi9maWVsZCc7XG5pbXBvcnQgeyBSZWNvcmRUYWJsZSB9IGZyb20gJy4vdGFibGUvdGFibGUnO1xuaW1wb3J0IHsgUmVjb3JkRm9ybVNlY3Rpb24gfSBmcm9tICcuL3NlY3Rpb24nO1xuaW1wb3J0IHsgUmVjb3JkRm9ybVN1YlNlY3Rpb24gfSBmcm9tICcuL3N1YnNlY3Rpb24nO1xuaW1wb3J0IHsgTk9fRVJST1IsIEhFQURFUiB9IGZyb20gJy4vZm9ybS5jb25zdGFudHMnO1xuaW1wb3J0IHsgVGFibGVSZWNvcmREYXRhIH0gZnJvbSAnLi90YWJsZS9yb3ctZGF0YSc7XG5cbmNvbnN0IEFDVElWRSA9ICdhY3RpdmUnO1xuY29uc3QgU0hPVyA9ICdzaG93JztcbmNvbnN0IEhJREUgPSAnaGlkZSc7XG5jb25zdCBFTkFCTEUgPSAnZW5hYmxlJztcbmNvbnN0IERJU0FCTEUgPSAnZGlzYWJsZSc7XG5jb25zdCBDTEVBTiA9ICdjbGVhbic7XG5pbnRlcmZhY2UgVHJhbnNpdGlvbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgc291cmNlOiBzdHJpbmc7XG4gIGRlc3RpbmF0aW9uOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBTdGF0ZUZsb3cge1xuICBkZWZhdWx0U3RhdGU6IHN0cmluZztcbiAgc3RhdGVzOiBzdHJpbmdbXTtcbiAgdHJhbnNpdGlvbnM6IFRyYW5zaXRpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWVsZFBheWxvYWQge1xuICBmaWVsZENvZGU6IHN0cmluZztcbiAgZmllbGRWYWx1ZTogYW55O1xuICBlZGl0YWJsZTogYm9vbGVhbjtcbiAgdmlzaWJsZTogYm9vbGVhbjtcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIGZpZWxkT3B0aW9uczogc3RyaW5nLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlUGF5bG9hZCB7XG4gIHRhYmxlQ29kZTogc3RyaW5nO1xuICB2aXNpYmxlOiBib29sZWFuO1xuICBjdXJyZW50UGFnZTogbnVtYmVyO1xuICByZXF1ZXN0ZWRQYWdlOiBudW1iZXI7XG4gIHJlY29yZHNQZXJQYWdlOiBudW1iZXI7XG4gIGN1cnJlbnRGaWx0ZXI6IGFueSxcbiAgc29ydGluZ0NvbHVtbjogc3RyaW5nO1xuICBzb3J0aW5nRGlyZWN0aW9uOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBGb3JtUGF5bG9hZCB7XG4gIGZpZWxkczogRmllbGRQYXlsb2FkW10sXG4gIHRhYmxlczogVGFibGVQYXlsb2FkW10sXG59XG5cbmV4cG9ydCBjbGFzcyBGb3JtU3RydWN0dXJlQW5kRGF0YSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXRlQ2hhbmdlID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gIHN0YXRlOiBzdHJpbmc7XG4gIF9uYW1lOiBzdHJpbmcgPSAnJztcbiAgX2Zvcm1Db25maWc6IGFueTtcbiAgcHJpdmF0ZSBfdGl0bGU6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9zdGF0ZUZsb3c6IFN0YXRlRmxvdztcbiAgcHJpdmF0ZSBfZmllbGRBcnJheTogRmllbGREZXNjcmlwdG9yW107XG4gIHByaXZhdGUgX2ZpZWxkcyA9IHt9O1xuICBwcml2YXRlIF9hY3Rpb25BcnJheTogRm9ybUFjdGlvbltdO1xuICBwcml2YXRlIF9hY3Rpb25zID0ge307XG4gIHByaXZhdGUgX3RhYmxlQXJyYXk6IFJlY29yZFRhYmxlW107XG4gIHByaXZhdGUgX3RhYmxlcyA9IHt9O1xuICBwcml2YXRlIF9zZWN0aW9uQXJyYXk6IFJlY29yZEZvcm1TZWN0aW9uW107XG4gIHByaXZhdGUgX3NlY3Rpb25zID0ge307XG4gIHByaXZhdGUgX2ltbXV0YWJsZURhdGEgPSB7fTtcbiAgcHJpdmF0ZSBfZXh0cmFJbmZvID0ge307XG4gIHByaXZhdGUgX2V4Y2x1c2l2ZVNlY3Rpb25zQnlBdHRyID0ge307XG5cbiAgY29uc3RydWN0b3IoZGVmaW5pdGlvblJlY2VpdmVkLCBmb3JtQ29uZmlnKSB7XG4gICAgdGhpcy5fZm9ybUNvbmZpZyA9IGZvcm1Db25maWc7XG4gICAgdGhpcy5zdGF0ZSA9ICcnO1xuICAgIHRoaXMuX2FjdGlvbkFycmF5ID0gW107XG4gICAgdGhpcy5fZmllbGRBcnJheSA9IFtdO1xuICAgIHRoaXMuX3RhYmxlQXJyYXkgPSBbXTtcbiAgICB0aGlzLl9zZWN0aW9uQXJyYXkgPSBbXTtcbiAgICB0aGlzLl9zdGF0ZUZsb3cgPSB7XG4gICAgICBkZWZhdWx0U3RhdGU6ICcnLFxuICAgICAgc3RhdGVzOiBbXSxcbiAgICAgIHRyYW5zaXRpb25zOiBbXSxcbiAgICB9O1xuICAgIGlmICghZGVmaW5pdGlvblJlY2VpdmVkKSB7IHJldHVybjsgfVxuICAgIHRoaXMuX25hbWUgPSAoZGVmaW5pdGlvblJlY2VpdmVkLmZvcm0gJiYgZGVmaW5pdGlvblJlY2VpdmVkLmZvcm0uZm9ybUNvZGUpXG4gICAgICA/IGRlZmluaXRpb25SZWNlaXZlZC5mb3JtLmZvcm1Db2RlIDogdGhpcy5fbmFtZTtcbiAgICB0aGlzLl90aXRsZSA9IChkZWZpbml0aW9uUmVjZWl2ZWQuZm9ybSAmJiBkZWZpbml0aW9uUmVjZWl2ZWQuZm9ybS5mb3JtVGl0bGUpXG4gICAgICA/IGRlZmluaXRpb25SZWNlaXZlZC5mb3JtLmZvcm1UaXRsZSA6ICcnO1xuICAgIHRoaXMuc2V0U3RhdGVGbG93KGRlZmluaXRpb25SZWNlaXZlZD8uc3RhdGVzLCBkZWZpbml0aW9uUmVjZWl2ZWQ/LnRyYW5zaXRpb25zLFxuICAgICAgZGVmaW5pdGlvblJlY2VpdmVkPy5kZWZhdWx0U3RhdGUpO1xuICAgIHRoaXMuaW1tdXRhYmxlRGF0YSA9IGRlZmluaXRpb25SZWNlaXZlZC5pbW11dGFibGVEYXRhO1xuICAgIHRoaXMuZXh0cmFJbmZvID0gZGVmaW5pdGlvblJlY2VpdmVkLmV4dHJhSW5mbztcblxuICAgIGlmIChkZWZpbml0aW9uUmVjZWl2ZWQuYWN0aW9ucykge1xuICAgICAgY29uc3QgZm9ybUFjdGlvbnMgPSBkZWZpbml0aW9uUmVjZWl2ZWQuYWN0aW9ucy5tYXAob2JqRGVmID0+IHtcbiAgICAgICAgbGV0IHZpc2libGVTdGF0ZXMgPSBvYmpEZWYudmlzaWJsZVN0YXRlcztcbiAgICAgICAgbGV0IGVuYWJsZWRTdGF0ZXMgPSBvYmpEZWYuZW5hYmxlZFN0YXRlcztcbiAgICAgICAgaWYgKCF2aXNpYmxlU3RhdGVzKSB7XG4gICAgICAgICAgdmlzaWJsZVN0YXRlcyA9IChvYmpEZWYuYWN0aW9uTW9kZXMgfHwgJycpLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKVxuICAgICAgICAgICAgLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKSB8fCBbXTtcbiAgICAgICAgICBlbmFibGVkU3RhdGVzID0gWy4uLnZpc2libGVTdGF0ZXNdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLm9iakRlZiwgdmlzaWJsZVN0YXRlcywgZW5hYmxlZFN0YXRlcyB9O1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IGFjdGlvblJlY2VpdmVkIG9mIGZvcm1BY3Rpb25zKSB7XG4gICAgICAgIGNvbnN0IGdsb2JhbEFjdGlvbiA9IG5ldyBGb3JtQWN0aW9uKGFjdGlvblJlY2VpdmVkLCB0aGlzLl9mb3JtQ29uZmlnKTtcbiAgICAgICAgY29uc3QgZ2xvYmFsQWN0aW9uQ29kZSA9IGdsb2JhbEFjdGlvbi5hY3Rpb25Db2RlO1xuICAgICAgICBpZiAoZ2xvYmFsQWN0aW9uQ29kZSkge1xuICAgICAgICAgIHRoaXMuX2FjdGlvbkFycmF5LnB1c2goZ2xvYmFsQWN0aW9uKTtcbiAgICAgICAgICB0aGlzLl9hY3Rpb25zW2dsb2JhbEFjdGlvbkNvZGVdID0gZ2xvYmFsQWN0aW9uO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRlZmluaXRpb25SZWNlaXZlZC5maWVsZHMpIHtcbiAgICAgIGNvbnN0IGZvcm1GaWVsZHMgPSBkZWZpbml0aW9uUmVjZWl2ZWQuZmllbGRzLm1hcChvYmpEZWYgPT4ge1xuICAgICAgICBsZXQgdmlzaWJsZVN0YXRlcyA9IG9iakRlZi52aXNpYmxlU3RhdGVzO1xuICAgICAgICBsZXQgZW5hYmxlZFN0YXRlcyA9IG9iakRlZi5lbmFibGVkU3RhdGVzIHx8IG9iakRlZi5lZGl0YWJsZVN0YXRlcztcbiAgICAgICAgaWYgKCF2aXNpYmxlU3RhdGVzKSB7XG4gICAgICAgICAgdmlzaWJsZVN0YXRlcyA9IChvYmpEZWYuZmllbGRNb2RlcyB8fCAnJykuc3BsaXQoJywnKVxuICAgICAgICAgICAgLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpXG4gICAgICAgICAgICAuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApIHx8IFtdO1xuICAgICAgICAgIGVuYWJsZWRTdGF0ZXMgPSBbLi4udmlzaWJsZVN0YXRlc107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgLi4ub2JqRGVmLCB2aXNpYmxlU3RhdGVzLCBlbmFibGVkU3RhdGVzIH07XG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgZmllbGRSZWNlaXZlZCBvZiBmb3JtRmllbGRzKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkVG9BZGQgPSBuZXcgRmllbGREZXNjcmlwdG9yKGZpZWxkUmVjZWl2ZWQsIHRoaXMuX2Zvcm1Db25maWcpO1xuICAgICAgICBjb25zdCBmaWVsZENvZGUgPSBmaWVsZFRvQWRkLmNvZGU7XG4gICAgICAgIGlmIChmaWVsZENvZGUpIHtcbiAgICAgICAgICB0aGlzLl9maWVsZEFycmF5LnB1c2goZmllbGRUb0FkZCk7XG4gICAgICAgICAgdGhpcy5fZmllbGRzW2ZpZWxkQ29kZV0gPSBmaWVsZFRvQWRkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRlZmluaXRpb25SZWNlaXZlZC50YWJsZXMpIHtcbiAgICAgIGNvbnN0IHRhYmxlcyA9IGRlZmluaXRpb25SZWNlaXZlZC50YWJsZXMubWFwKG9iakRlZiA9PiB7XG4gICAgICAgIGxldCB2aXNpYmxlU3RhdGVzID0gb2JqRGVmLnZpc2libGVTdGF0ZXM7XG4gICAgICAgIGxldCBlbmFibGVkU3RhdGVzID0gb2JqRGVmLmVuYWJsZWRTdGF0ZXMgfHwgb2JqRGVmLmVkaXRhYmxlU3RhdGVzO1xuICAgICAgICBpZiAoIXZpc2libGVTdGF0ZXMpIHtcbiAgICAgICAgICB2aXNpYmxlU3RhdGVzID0gKG9iakRlZi50YWJsZU1vZGVzIHx8ICcnKS5zcGxpdCgnLCcpXG4gICAgICAgICAgICAubWFwKHN0YXRlID0+IHN0YXRlLnRyaW0oKSlcbiAgICAgICAgICAgIC5maWx0ZXIoc3RhdGUgPT4gc3RhdGUubGVuZ3RoID4gMCkgfHwgW107XG4gICAgICAgICAgZW5hYmxlZFN0YXRlcyA9IFsuLi52aXNpYmxlU3RhdGVzXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyAuLi5vYmpEZWYsIHZpc2libGVTdGF0ZXMsIGVuYWJsZWRTdGF0ZXMgfTtcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCB0YWJsZVJlY2VpdmVkIG9mIHRhYmxlcykge1xuICAgICAgICBjb25zdCB0YWJsZVRvQWRkID0gbmV3IFJlY29yZFRhYmxlKHRhYmxlUmVjZWl2ZWQsIHRoaXMuX2Zvcm1Db25maWcpO1xuICAgICAgICBjb25zdCB0YWJsZUNvZGUgPSB0YWJsZVRvQWRkLnRhYmxlQ29kZTtcbiAgICAgICAgaWYgKHRhYmxlQ29kZSkge1xuICAgICAgICAgIHRoaXMuX3RhYmxlQXJyYXkucHVzaCh0YWJsZVRvQWRkKTtcbiAgICAgICAgICB0aGlzLl90YWJsZXNbdGFibGVDb2RlXSA9IHRhYmxlVG9BZGQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGVmaW5pdGlvblJlY2VpdmVkLnNlY3Rpb25zKSB7XG4gICAgICBjb25zdCBmb3JtU2VjdGlvbnMgPSBkZWZpbml0aW9uUmVjZWl2ZWQuc2VjdGlvbnMubWFwKG9iakRlZiA9PiB7XG4gICAgICAgIGxldCB2aXNpYmxlU3RhdGVzID0gb2JqRGVmLnZpc2libGVTdGF0ZXM7XG4gICAgICAgIGlmICghdmlzaWJsZVN0YXRlcykge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSAob2JqRGVmLnNlY3Rpb25Nb2RlcyB8fCAnJykuc3BsaXQoJywnKVxuICAgICAgICAgICAgLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpXG4gICAgICAgICAgICAuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApIHx8IFtdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLm9iakRlZiwgdmlzaWJsZVN0YXRlcyB9O1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IHNlY3Rpb25SZWNlaXZlZCBvZiBmb3JtU2VjdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgc2VjdGlvblRvQWRkID0gbmV3IFJlY29yZEZvcm1TZWN0aW9uKHNlY3Rpb25SZWNlaXZlZCwgdGhpcywgdGhpcy5fZm9ybUNvbmZpZyk7XG4gICAgICAgIGNvbnN0IHNlY3Rpb25Db2RlID0gc2VjdGlvblRvQWRkLnNlY3Rpb25Db2RlO1xuICAgICAgICBpZiAoc2VjdGlvbkNvZGUpIHtcbiAgICAgICAgICB0aGlzLl9zZWN0aW9uQXJyYXkucHVzaChzZWN0aW9uVG9BZGQpO1xuICAgICAgICAgIHRoaXMuX3NlY3Rpb25zW3NlY3Rpb25Db2RlXSA9IHNlY3Rpb25Ub0FkZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldFRpdGxlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl90aXRsZTsgfVxuICBzZXRUaXRsZSh0aXRsZTogc3RyaW5nKTogdm9pZCB7IHRoaXMuX3RpdGxlID0gdGl0bGU7IH1cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX25hbWU7IH1cbiAgc2V0IG5hbWUobmFtZSkgeyB0aGlzLl9uYW1lID0gbmFtZTsgfVxuXG4gIC8vIEVzdGFkb3NcbiAgZ2V0IGRlZmF1bHRTdGF0ZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fc3RhdGVGbG93LmRlZmF1bHRTdGF0ZTsgfVxuICBzdXBwb3J0U3RhdGUoc3RhdGU6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fc3RhdGVGbG93LnN0YXRlcz8uaW5jbHVkZXMoc3RhdGUpOyB9XG4gIHN1cHBvcnRNb2RlKHN0YXRlOiBzdHJpbmcpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuc3VwcG9ydFN0YXRlKHN0YXRlKTsgfVxuICBnZXQgc3RhdGVzKCk6IGFueVtdIHsgcmV0dXJuIHRoaXMuX3N0YXRlRmxvdy5zdGF0ZXM7IH1cblxuICBnZXRDdXJyZW50U3RhdGUoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuc3RhdGU7IH1cblxuICBjaGFuZ2VTdGF0ZShuZXdTdGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCFuZXdTdGF0ZSB8fCAhdGhpcy5zdXBwb3J0U3RhdGUobmV3U3RhdGUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghdGhpcy5zdGF0ZSkge1xuICAgICAgdGhpcy5zdGF0ZSA9IG5ld1N0YXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0cmFuc2l0aW9uVG9DaGFuZ2UgPSB0aGlzLl9zdGF0ZUZsb3cudHJhbnNpdGlvbnMuZmluZCh0cm5zID0+XG4gICAgICAgIHRybnMuc291cmNlID09PSB0aGlzLnN0YXRlICYmIHRybnMuZGVzdGluYXRpb24gPT09IG5ld1N0YXRlKTtcbiAgICAgIGlmICh0cmFuc2l0aW9uVG9DaGFuZ2UpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IG5ld1N0YXRlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9zdGF0ZUNoYW5nZS5uZXh0KHsgc3RhdGU6IHRoaXMuc3RhdGUgfSk7XG4gICAgcmV0dXJuICh0aGlzLnN0YXRlID09PSBuZXdTdGF0ZSk7XG4gIH1cblxuICBnZXQgc3RhdGVDaGFuZ2UoKSB7IHJldHVybiB0aGlzLl9zdGF0ZUNoYW5nZTsgfVxuXG4gIHNldFN0YXRlRmxvdyhzdGF0ZXM/LCB0cmFuc2l0aW9ucz8sIGRlZmF1bHRTdGF0ZT86IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlRmxvdy5zdGF0ZXMgPSBzdGF0ZXM7XG4gICAgdGhpcy5fc3RhdGVGbG93LmRlZmF1bHRTdGF0ZSA9IGRlZmF1bHRTdGF0ZSB8fCB0aGlzLl9zdGF0ZUZsb3cuc3RhdGVzWzBdO1xuICAgIHRoaXMuX3N0YXRlRmxvdy50cmFuc2l0aW9ucyA9IHRyYW5zaXRpb25zLm1hcCh0cmFuc2l0aW9uID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSB0cmFuc2l0aW9uLm5hbWU7XG4gICAgICBjb25zdCBzb3VyY2UgPSAodGhpcy5fc3RhdGVGbG93LnN0YXRlcy5pbmNsdWRlcyh0cmFuc2l0aW9uLnNvdXJjZSkpID8gdHJhbnNpdGlvbi5zb3VyY2UgOiAnJztcbiAgICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gKHRoaXMuX3N0YXRlRmxvdy5zdGF0ZXMuaW5jbHVkZXModHJhbnNpdGlvbi5kZXN0aW5hdGlvbikpID8gdHJhbnNpdGlvbi5kZXN0aW5hdGlvbiA6ICcnO1xuICAgICAgcmV0dXJuIHsgbmFtZSwgc291cmNlLCBkZXN0aW5hdGlvbiB9O1xuICAgIH0pLmZpbHRlcihpdGVtID0+IGl0ZW0ubmFtZSAmJiBpdGVtLnNvdXJjZSAmJiBpdGVtLmRlc3RpbmF0aW9uKTtcbiAgfVxuXG4gIC8vIGltbXV0YWJsZSBEYXRhXG4gIGdldEltbXV0YWJsZUVsZW1lbnQobmFtZTogc3RyaW5nKTogYW55IHsgcmV0dXJuIHRoaXMuX2ltbXV0YWJsZURhdGE/LltuYW1lXT8udmFsdWUgPz8gbnVsbDsgfVxuICBzZXQgaW1tdXRhYmxlRGF0YShpbW11dGFibGVEYXRhKSB7IE9iamVjdC5hc3NpZ24odGhpcy5faW1tdXRhYmxlRGF0YSwgaW1tdXRhYmxlRGF0YSk7IH1cbiAgZ2V0IGltbXV0YWJsZURhdGEoKTogYW55IHsgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5faW1tdXRhYmxlRGF0YSkpOyB9XG5cbiAgLy8gZXh0cmEgSW5mb1xuICBnZXRFeHRyYUluZm8obmFtZTogc3RyaW5nKTogYW55IHsgcmV0dXJuIHRoaXMuX2V4dHJhSW5mbz8uW25hbWVdPy52YWx1ZSA/PyBudWxsOyB9XG4gIHNldCBleHRyYUluZm8oZXh0cmFJbmZvKSB7IE9iamVjdC5hc3NpZ24odGhpcy5fZXh0cmFJbmZvLCBleHRyYUluZm8pOyB9XG4gIGdldCBleHRyYUluZm8oKTogYW55IHsgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5fZXh0cmFJbmZvKSk7IH1cblxuICAvLyBGaWVsZHNcbiAgZ2V0IGZpZWxkcygpOiBhbnkgeyByZXR1cm4gdGhpcy5fZmllbGRzOyB9XG4gIGdldCBmaWVsZE5hbWVzKCk6IHN0cmluZ1tdIHsgcmV0dXJuIHRoaXMuZ2V0RmllbGROYW1lcygpOyB9XG4gIGdldEZpZWxkcygpOiBGaWVsZERlc2NyaXB0b3JbXSB7IHJldHVybiB0aGlzLl9maWVsZEFycmF5OyB9XG4gIGdldEZpZWxkTmFtZXMoKTogc3RyaW5nW10geyByZXR1cm4gdGhpcy5fZmllbGRBcnJheS5tYXAoZmllbGQgPT4gZmllbGQuY29kZSk7IH1cbiAgZ2V0RmllbGQoY29kZTogc3RyaW5nKTogRmllbGREZXNjcmlwdG9yIHsgcmV0dXJuIChjb2RlICYmIHRoaXMuX2ZpZWxkcz8uW2NvZGVdKSA/IHRoaXMuX2ZpZWxkc1tjb2RlXSA6IG51bGw7IH1cbiAgZW5hYmxlRmllbGQoY29kZTogc3RyaW5nKTogdm9pZCB7IHRoaXMuZ2V0RmllbGQoY29kZSk/LmVuYWJsZSgpOyB9XG4gIGRpc2FibGVGaWVsZChjb2RlOiBzdHJpbmcpOiB2b2lkIHsgdGhpcy5nZXRGaWVsZChjb2RlKT8uZGlzYWJsZSgpOyB9XG4gIGdldEZpZWxkVmFsdWUoY29kZTogc3RyaW5nKTogYW55IHsgcmV0dXJuIHRoaXMuZ2V0RmllbGQoY29kZSk/LnZhbHVlOyB9XG4gIGdldEZpZWxkT3B0aW9uVGV4dChjb2RlOiBzdHJpbmcpOiBhbnkgeyByZXR1cm4gdGhpcy5nZXRGaWVsZChjb2RlKT8ub3B0aW9uVGV4dDsgfVxuICBnZXRGaWVsZE9wdGlvbnMoY29kZTogc3RyaW5nKTogRmllbGRPcHRpb25bXSB8IG51bGwgeyByZXR1cm4gdGhpcy5nZXRGaWVsZChjb2RlKT8ub3B0aW9ucyA/PyBudWxsOyB9XG4gIHNldEZpZWxkVmFsdWUoY29kZTogc3RyaW5nLCB2YWx1ZTogYW55KTogYW55IHsgdGhpcy5nZXRGaWVsZChjb2RlKT8uc2V0VmFsdWUodmFsdWUpOyB9XG4gIHNldEZpZWxkRXJyb3IoY29kZTogc3RyaW5nLCBlcnJvckNvZGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcgPSAnZXJyb3InKTogYW55IHsgdGhpcy5nZXRGaWVsZChjb2RlKT8uc2V0RXJyb3IoZXJyb3JDb2RlLCBtZXNzYWdlLCB0eXBlKTsgfVxuICBzZXRGaWVsZEludHJpbnNpY0Vycm9yTWVzc2FnZShjb2RlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyk6IGFueSB7IHRoaXMuZ2V0RmllbGQoY29kZSk/LnNldEludHJpbnNpY0Vycm9yTWVzc2FnZShtZXNzYWdlKTsgfVxuXG4gIHNldEZpZWxkUmVxdWlyZWQoaW5wdXRDb2Rlczogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCByZXF1aXJlZDogYm9vbGVhbik6IGFueSB7XG4gICAgY29uc3QgY29kZXMgPSB0aGlzLmdldEZpZWxkU2V0KG51bGwsIGlucHV0Q29kZXMgPz8gbnVsbCk7XG4gICAgZm9yIChjb25zdCBjb2RlIG9mIGNvZGVzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuZ2V0RmllbGQoY29kZSkgPz8gbnVsbDtcbiAgICAgICAgZmllbGQgJiYgKGZpZWxkLnJlcXVpcmVkID0gcmVxdWlyZWQpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgRXJyb3IgbW9kaWZpY2FuZG8gY2FtcG8gJHtjb2RlfTogJHtlfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldEZpZWxkRXJyb3JNZXNzYWdlKGNvZGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKTogYW55IHsgdGhpcy5nZXRGaWVsZChjb2RlKT8uc2V0RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOyB9XG5cbiAgc2V0RmllbGRPcHRpb25zKGNvZGU6IHN0cmluZywgb3B0aW9uc0FycmF5OiBhbnlbXSwgaWRBdHRyaWJ1dGU6IHN0cmluZywgbmFtZUF0dHJpYnV0ZTogc3RyaW5nKTogYW55IHtcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZ2V0RmllbGQoY29kZSk7XG4gICAgaWYgKGZpZWxkICYmIG9wdGlvbnNBcnJheT8ubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmllbGRPcHRpb25zID0gb3B0aW9uc0FycmF5Lm1hcChpdGVtID0+ICh7XG4gICAgICAgIGZpZWxkT3B0aW9uSWQ6IGl0ZW1baWRBdHRyaWJ1dGVdLFxuICAgICAgICBmaWVsZE9wdGlvblZhbHVlOiBpdGVtW25hbWVBdHRyaWJ1dGVdXG4gICAgICB9KSk7XG4gICAgICBmaWVsZC5zZXRGaWVsZE9wdGlvbnMoZmllbGRPcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBnZXRGaWVsZFNldChmaWx0ZXIsIGlucHV0Q29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZyB8IG51bGwsIHN1YkNvZGU/OiBzdHJpbmcgfCBudWxsKTogc3RyaW5nW10ge1xuICAgIGxldCBjb2RlczogYW55W10gPSBbXTtcbiAgICBpZiAoaW5wdXRDb2Rlcykge1xuICAgICAgaWYgKHR5cGVvZiBpbnB1dENvZGVzID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb2RlcyA9IFtpbnB1dENvZGVzXTtcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShpbnB1dENvZGVzKSAmJiBpbnB1dENvZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29kZXMgPSBpbnB1dENvZGVzID8/IFtdO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc2VjQ29kZSAmJiAhc3ViQ29kZSkge1xuICAgICAgY29kZXMgPSB0aGlzLmdldFNlY3Rpb24oc2VjQ29kZSk/LmdldEZpZWxkTmFtZXMoKSA/PyBbXTtcbiAgICB9IGVsc2UgaWYgKHNlY0NvZGUgJiYgc3ViQ29kZSkge1xuICAgICAgY29kZXMgPSB0aGlzLmdldFN1YlNlY3Rpb24oc2VjQ29kZSwgc3ViQ29kZSk/LmdldEZpZWxkTmFtZXMoKSA/PyBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29kZXMgPSB0aGlzLmdldEZpZWxkTmFtZXMoKSA/PyBbXTtcbiAgICB9XG4gICAgcmV0dXJuIChmaWx0ZXIpID8gY29kZXMuZmlsdGVyKGZsZCA9PiBmaWx0ZXIodGhpcy5nZXRGaWVsZChmbGQpKSkgOiBjb2RlcztcbiAgfVxuXG4gIGFwcGx5T25GaWVsZHMocHJvY2Vzc0Z1bmMsIGlucHV0Q29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGlmICghcHJvY2Vzc0Z1bmMpIHsgcmV0dXJuIDA7IH1cbiAgICBjb25zdCBjb2RlcyA9IHRoaXMuZ2V0RmllbGRTZXQobnVsbCwgaW5wdXRDb2RlcyA/PyBudWxsLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgICBsZXQgcHJvY2Vzc2VkRmllbGRzID0gMDtcbiAgICBmb3IgKGNvbnN0IGNvZGUgb2YgY29kZXMpIHtcbiAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5nZXRGaWVsZChjb2RlKTtcbiAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHByb2Nlc3NGdW5jKGZpZWxkKTtcbiAgICAgICAgICBwcm9jZXNzZWRGaWVsZHMgKz0gMTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBFcnJvciBwcm9jZXNhbmRvIGZ1bmNpb24gZW4gY2FtcG8gJHtmaWVsZH06ICR7ZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcHJvY2Vzc2VkRmllbGRzO1xuICB9XG5cbiAgZW5hYmxlRmllbGRzKGNvZGVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseU9uRmllbGRzKGZsZCA9PiBmbGQ/LmVuYWJsZSgpLCBjb2Rlcywgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICBzaG93RmllbGRzKGNvZGVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseU9uRmllbGRzKGZsZCA9PiBmbGQ/LnNob3coKSwgY29kZXMsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgaGlkZUZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlPbkZpZWxkcyhmbGQgPT4gZmxkPy5oaWRlKCksIGNvZGVzLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIHNob3dMYWJlbEZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlPbkZpZWxkcyhmbGQgPT4gZmxkPy5zaG93TGFibGVsKCksIGNvZGVzLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIGhpZGVMYWJlbEZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlPbkZpZWxkcyhmbGQgPT4gZmxkPy5oaWRlTGFiZWwoKSwgY29kZXMsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgZGlzYWJsZUZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlPbkZpZWxkcyhmbGQgPT4gZmxkPy5kaXNhYmxlKCksIGNvZGVzLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIGNsZWFuRmllbGRzKGNvZGVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseU9uRmllbGRzKGZsZCA9PiBmbGQ/LmNsZWFuKCksIGNvZGVzLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIHRhZ0ZpZWxkc1dpdGhFcnJvcihtZXNzYWdlOiBzdHJpbmcsIGNvZGVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseU9uRmllbGRzKGZsZCA9PiBmbGQ/LnNldEVycm9yTWVzc2FnZShtZXNzYWdlKSwgY29kZXMsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgY2xlYW5FcnJvckZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudGFnRmllbGRzV2l0aEVycm9yKCcnLCBjb2Rlcywgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICB0YWdFbXB0eVJlcXVpcmVkRmllbGRzKG1lc3NhZ2U6IHN0cmluZywgY29kZXMgPSBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGFnRmllbGRzV2l0aEVycm9yKG1lc3NhZ2UsIHRoaXMuZ2V0UmVxdWlyZWRFbXB0eUZpZWxkcyhjb2Rlcywgc2VjQ29kZSwgc3ViQ29kZSkpID4gMDtcbiAgfVxuXG4gIGdldFJlcXVpcmVkRmllbGRzKGNvZGVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmdldEZpZWxkU2V0KGZsZCA9PiBmbGQ/LnJlcXVpcmVkLCBjb2RlcyA/PyBudWxsLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIGdldFJlcXVpcmVkRW1wdHlGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRTZXQoZmxkID0+IGZsZD8ucmVxdWlyZWQgJiYgZmxkPy5lbXB0eSwgY29kZXMgPz8gbnVsbCwgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICBnZXRDaGFuZ2VkRmllbGRzKGNvZGVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmdldEZpZWxkU2V0KGZsZCA9PiAhZmxkPy5vdXRwdXRPbmx5ICYmIGZsZD8uaGFzQ2hhbmdlZCgpLCBjb2RlcyA/PyBudWxsLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIGdldEZpZWxkc1dpdGhWYWxpZGF0aW9uSXNzdWVzKGNvZGVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmdldEZpZWxkU2V0KGZsZCA9PiBmbGQ/Lmhhc0Vycm9yKCksIGNvZGVzID8/IG51bGwsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgZ2V0RmllbGRzVmFsdWVzKGlucHV0Q29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBhbnkge1xuICAgIGNvbnN0IGNvZGVzID0gdGhpcy5nZXRGaWVsZFNldChudWxsLCBpbnB1dENvZGVzID8/IG51bGwsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICAgIGNvbnN0IHJlc3VsdE9iamVjdCA9IHt9O1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjb2Rlcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IGNvZGUgPSBjb2Rlc1tpbmRleF07XG4gICAgICBpZiAoY29kZSkge1xuICAgICAgICByZXN1bHRPYmplY3RbY29kZV0gPSB0aGlzLl9maWVsZHM/Lltjb2RlXT8uZ2V0VmFsdWUoKSA/PyBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0T2JqZWN0O1xuICB9XG5cbiAgLy8gQWNjaW9uZXNcbiAgZ2V0IGFjdGlvbnMoKSB7IHJldHVybiB0aGlzLl9hY3Rpb25zOyB9XG5cbiAgZ2V0QWN0aW9uc0J5QXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWUpOiBGb3JtQWN0aW9uW10geyByZXR1cm4gdGhpcy5fYWN0aW9uQXJyYXkuZmlsdGVyKGFjdGlvbkl0ZW0gPT4gYWN0aW9uSXRlbS5tYXRjaEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpOyB9XG4gIGdldEFjdGlvbnMoKTogRm9ybUFjdGlvbltdIHsgcmV0dXJuIHRoaXMuX2FjdGlvbkFycmF5OyB9XG4gIGdldEFjdGlvbihjb2RlOiBzdHJpbmcpOiBGb3JtQWN0aW9uIHsgcmV0dXJuIChjb2RlICYmIHRoaXMuX2FjdGlvbnM/Lltjb2RlXSkgPyB0aGlzLl9hY3Rpb25zW2NvZGVdIDogbnVsbDsgfVxuICBzaG93QWN0aW9ucyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uQWN0aW9ucyhjb2RlcywgU0hPVyk7IH1cbiAgaGlkZUFjdGlvbnMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmV4ZWNPbkFjdGlvbnMoY29kZXMsIEhJREUpOyB9XG4gIGVuYWJsZUFjdGlvbnMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmV4ZWNPbkFjdGlvbnMoY29kZXMsIEVOQUJMRSk7IH1cbiAgZGlzYWJsZUFjdGlvbnMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmV4ZWNPbkFjdGlvbnMoY29kZXMsIERJU0FCTEUpOyB9XG5cbiAgZXhlY09uQWN0aW9ucyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBmdW5jdGlvbk5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGlvbkNvZGVzID0gKEFycmF5LmlzQXJyYXkoY29kZXMpKSA/IGNvZGVzIDogKGNvZGVzID8gW2NvZGVzXSA6IFtdKTtcbiAgICBpZiAoIWZ1bmN0aW9uTmFtZSB8fCBhY3Rpb25Db2Rlcy5sZW5ndGggPT09IDApIHsgcmV0dXJuOyB9XG4gICAgYWN0aW9uQ29kZXMuZm9yRWFjaChjb2RlID0+IHtcbiAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuZ2V0QWN0aW9uKGNvZGUpO1xuICAgICAgYWN0aW9uPy5bZnVuY3Rpb25OYW1lXT8uKCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBUYWJsYXNcbiAgZ2V0IHRhYmxlcygpOiBhbnkgeyByZXR1cm4gdGhpcy50YWJsZXM7IH1cbiAgZ2V0VGFibGVzKCk6IFJlY29yZFRhYmxlW10geyByZXR1cm4gdGhpcy5fdGFibGVBcnJheTsgfVxuICBnZXRUYWJsZShjb2RlOiBzdHJpbmcpOiBSZWNvcmRUYWJsZSB7IHJldHVybiAoY29kZSAmJiB0aGlzLl90YWJsZXM/Lltjb2RlXSkgPyB0aGlzLl90YWJsZXNbY29kZV0gOiBudWxsOyB9XG4gIGdldFRhYmxlUmVjb3JkKGNvZGU6IHN0cmluZywgaWQ6IHN0cmluZyk6IFRhYmxlUmVjb3JkRGF0YSB7IHJldHVybiB0aGlzLmdldFRhYmxlKGNvZGUpPy5nZXRUYWJsZVJlY29yZChpZCkgfVxuXG4gIGVuYWJsZVRhYmxlcyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uVGFibGVzKGNvZGVzLCBFTkFCTEUpOyB9XG4gIGRpc2FibGVUYWJsZXMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmV4ZWNPblRhYmxlcyhjb2RlcywgRElTQUJMRSk7IH1cbiAgc2hvd1RhYmxlcyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uVGFibGVzKGNvZGVzLCBTSE9XKTsgfVxuICBoaWRlVGFibGVzKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5leGVjT25UYWJsZXMoY29kZXMsIEhJREUpOyB9XG4gIGNsZWFuVGFibGVzKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5leGVjT25UYWJsZXMoY29kZXMsIENMRUFOKTsgfVxuXG4gIGV4ZWNPblRhYmxlcyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBmdW5jdGlvbk5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHRhYmxlQ29kZXMgPSAoQXJyYXkuaXNBcnJheShjb2RlcykpID8gY29kZXMgOiAoY29kZXMgPyBbY29kZXNdIDogW10pO1xuICAgIGlmICghZnVuY3Rpb25OYW1lIHx8IHRhYmxlQ29kZXMubGVuZ3RoID09PSAwKSB7IHJldHVybjsgfVxuICAgIHRhYmxlQ29kZXMuZm9yRWFjaChjb2RlID0+IHtcbiAgICAgIGNvbnN0IHRhYmxlID0gdGhpcy5nZXRUYWJsZShjb2RlKTtcbiAgICAgIHRhYmxlPy5bZnVuY3Rpb25OYW1lXT8uKCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBTZWNjaW9uZXNcbiAgZ2V0IHNlY3Rpb25zKCk6IGFueSB7IHJldHVybiB0aGlzLl9zZWN0aW9uczsgfVxuICBnZXRTZWN0aW9ucygpOiBSZWNvcmRGb3JtU2VjdGlvbltdIHsgcmV0dXJuIHRoaXMuX3NlY3Rpb25BcnJheTsgfVxuICBnZXRTZWN0aW9uc0J5QXR0cmlidXRlKG5hbWUsIHZhbHVlKTogUmVjb3JkRm9ybVNlY3Rpb25bXSB7IHJldHVybiB0aGlzLl9zZWN0aW9uQXJyYXkuZmlsdGVyKGl0ZW0gPT4gaXRlbS5tYXRjaEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpOyB9XG4gIGdldCBzZWN0aW9uVGl0bGVzKCk6IHN0cmluZ1tdIHsgcmV0dXJuIHRoaXMuX3NlY3Rpb25BcnJheS5tYXAoZm9ybVNlY3Rpb24gPT4gZm9ybVNlY3Rpb24uc2VjdGlvblRpdGxlKTsgfVxuICBnZXQgdmlzaWJsZVNlY3Rpb25zKCk6IFJlY29yZEZvcm1TZWN0aW9uW10geyByZXR1cm4gdGhpcy5fc2VjdGlvbkFycmF5LmZpbHRlcihzZWMgPT4gc2VjLnZpc2libGUpOyB9XG4gIGdldFNlY3Rpb24oY29kZTogc3RyaW5nKTogUmVjb3JkRm9ybVNlY3Rpb24geyByZXR1cm4gKGNvZGUgJiYgdGhpcy5fc2VjdGlvbnM/Lltjb2RlXSkgPyB0aGlzLl9zZWN0aW9uc1tjb2RlXSA6IG51bGw7IH1cbiAgc2hvd1NlY3Rpb25zKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyB0aGlzLmV4ZWNPblNlY3Rpb25zKGNvZGVzLCBTSE9XKTsgfVxuICBoaWRlU2VjdGlvbnMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nKTogdm9pZCB7IHRoaXMuZXhlY09uU2VjdGlvbnMoY29kZXMsIEhJREUpOyB9XG4gIGFjdGl2ZVNlY3Rpb24oKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX2V4Y2x1c2l2ZVNlY3Rpb25zQnlBdHRyW0FDVElWRV07IH1cbiAgZ2V0U3ViU2VjdGlvbihjb2RlOiBzdHJpbmcsIHN1YkNvZGUpOiBSZWNvcmRGb3JtU3ViU2VjdGlvbiB7IHJldHVybiB0aGlzLmdldFNlY3Rpb24oY29kZSk/LmdldFN1YnNlY3Rpb24oc3ViQ29kZSkgPz8gbnVsbDsgfVxuICBzaG93U3ViU2VjdGlvbnMoY29kZTogc3RyaW5nLCBzdWJDb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uU3ViU2VjdGlvbnMoY29kZSwgc3ViQ29kZXMsIFNIT1cpOyB9XG4gIGhpZGVTdWJTZWN0aW9ucyhjb2RlOiBzdHJpbmcsIHN1YkNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5leGVjT25TdWJTZWN0aW9ucyhjb2RlLCBzdWJDb2RlcywgSElERSk7IH1cbiAgZ2V0U2VjdGlvbkFjdGlvbnMoY29kZSk6IEZvcm1BY3Rpb25bXSB7IHJldHVybiB0aGlzLmdldFNlY3Rpb24oY29kZSk/LmdldEFjdGlvbnMoKSA/PyBudWxsOyB9XG4gIGdldFNlY3Rpb25BY3Rpb25OYW1lcyhjb2RlKTogc3RyaW5nW10geyByZXR1cm4gdGhpcy5nZXRTZWN0aW9uKGNvZGUpPy5nZXRBY3Rpb25OYW1lcygpID8/IG51bGw7IH1cblxuICBhY3RpdmF0ZVNlY3Rpb24oY29kZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGNvZGUgPT09IHRoaXMuX2V4Y2x1c2l2ZVNlY3Rpb25zQnlBdHRyW0FDVElWRV0pIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5nZXRTZWN0aW9uKHRoaXMuYWN0aXZlU2VjdGlvbigpKT8uaW5hY3RpdmF0ZSgpO1xuICAgIHRoaXMuZ2V0U2VjdGlvbihjb2RlKT8uYWN0aXZhdGUoKTtcbiAgICB0aGlzLl9leGNsdXNpdmVTZWN0aW9uc0J5QXR0cltBQ1RJVkVdID0gY29kZTtcbiAgfVxuXG4gIGV4ZWNPblNlY3Rpb25zKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIGZ1bmN0aW9uTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgc2VjdGlvbkNvZGVzID0gKEFycmF5LmlzQXJyYXkoY29kZXMpKSA/IGNvZGVzIDogKGNvZGVzID8gW2NvZGVzXSA6IFtdKTtcbiAgICBpZiAoIWZ1bmN0aW9uTmFtZSB8fCBzZWN0aW9uQ29kZXMubGVuZ3RoID09PSAwKSB7IHJldHVybjsgfVxuICAgIHNlY3Rpb25Db2Rlcy5mb3JFYWNoKGNvZGUgPT4ge1xuICAgICAgY29uc3Qgc2VjdGlvbiA9IHRoaXMuZ2V0U2VjdGlvbihjb2RlKTtcbiAgICAgIHNlY3Rpb24/LltmdW5jdGlvbk5hbWVdPy4oKTtcbiAgICB9KTtcbiAgfVxuXG4gIGV4ZWNPblN1YlNlY3Rpb25zKGNvZGU6IHN0cmluZywgc3ViTmFtZXM6IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgZnVuY3Rpb25OYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzdWJDb2RlcyA9IChBcnJheS5pc0FycmF5KHN1Yk5hbWVzKSkgPyBzdWJOYW1lcyA6IChzdWJOYW1lcyA/IFtzdWJOYW1lc10gOiBbXSk7XG4gICAgY29uc3Qgc2VjdGlvbiA9IHRoaXMuZ2V0U2VjdGlvbihjb2RlKTtcbiAgICBpZiAoIWZ1bmN0aW9uTmFtZSB8fCAhc2VjdGlvbiB8fCBzdWJDb2Rlcy5sZW5ndGggPT09IDApIHsgcmV0dXJuOyB9XG4gICAgZm9yIChjb25zdCBzdWJDb2RlIG9mIHN1YkNvZGVzKSB7XG4gICAgICBjb25zdCBzdWJTZWN0aW9uID0gdGhpcy5nZXRTdWJTZWN0aW9uKGNvZGUsIHN1YkNvZGUpO1xuICAgICAgc3ViU2VjdGlvbj8uW2Z1bmN0aW9uTmFtZV0/LigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvcyBwcm9waW9zIGRlIGdlc3Rpw7NuIGRlbCBmb3JtdWxhcmlvXG4gICAqL1xuXG4gIGNsZWFuRGF0YSgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHRoaXMuX2ZpZWxkQXJyYXkpIHtcbiAgICAgIGZpZWxkLnNldFZhbHVlKGZpZWxkLmRlZmF1bHRWYWx1ZSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgdGFibGUgb2YgdGhpcy5fdGFibGVBcnJheSkge1xuICAgICAgdGFibGUuY2xlYW4oKTtcbiAgICB9XG4gIH1cblxuICBnZXRQYXlsb2FkKCk6IGFueSB7XG4gICAgY29uc3QgZm9ybURhdGE6IEZvcm1QYXlsb2FkID0ge1xuICAgICAgZmllbGRzOiBbXSxcbiAgICAgIHRhYmxlczogW10sXG4gICAgfTtcbiAgICBmb3JtRGF0YS5maWVsZHMgPSB0aGlzLmdldEZpZWxkcygpLmZpbHRlcihmbGQgPT4gIWZsZD8ub3V0cHV0T25seSlcbiAgICAgIC5tYXAoZmxkID0+IHtcbiAgICAgICAgY29uc3QgZmllbGRQYXlsb2FkOiBGaWVsZFBheWxvYWQgPSB7XG4gICAgICAgICAgZmllbGRDb2RlOiBmbGQ/LmNvZGUsXG4gICAgICAgICAgZmllbGRWYWx1ZTogZmxkPy52YWx1ZSxcbiAgICAgICAgICBlZGl0YWJsZTogIWZsZD8uZGlzYWJsZWQsXG4gICAgICAgICAgdmlzaWJsZTogZmxkPy52aXNpYmxlLFxuICAgICAgICAgIHJlcXVpcmVkOiBmbGQ/LnJlcXVpcmVkLFxuICAgICAgICAgIGZpZWxkT3B0aW9uczogJycsXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpZWxkUGF5bG9hZDtcbiAgICAgIH0pO1xuXG4gICAgZm9ybURhdGEudGFibGVzID0gdGhpcy5nZXRUYWJsZXMoKS5tYXAodGJsID0+IHtcbiAgICAgIGNvbnN0IHRhYmxlUGF5bG9hZDogVGFibGVQYXlsb2FkID0ge1xuICAgICAgICB0YWJsZUNvZGU6IHRibC50YWJsZUNvZGUsXG4gICAgICAgIHZpc2libGU6IHRibC52aXNpYmxlLFxuICAgICAgICBjdXJyZW50UGFnZTogdGJsLmN1cnJlbnRQYWdlLFxuICAgICAgICByZXF1ZXN0ZWRQYWdlOiB0YmwucmVxdWVzdGVkUGFnZSxcbiAgICAgICAgcmVjb3Jkc1BlclBhZ2U6IHRibC5yZWNvcmRzUGVyUGFnZSxcbiAgICAgICAgY3VycmVudEZpbHRlcjogdGJsLmN1cnJlbnRGaWx0ZXIsXG4gICAgICAgIHNvcnRpbmdDb2x1bW46IHRibC5zb3J0aW5nLmNvbHVtbk5hbWUsXG4gICAgICAgIHNvcnRpbmdEaXJlY3Rpb246IHRibC5zb3J0aW5nLmRpcmVjdGlvbixcbiAgICAgIH07XG4gICAgICByZXR1cm4gdGFibGVQYXlsb2FkXG4gICAgfSlcbiAgICByZXR1cm4gZm9ybURhdGE7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,115 @@
1
+ import { BehaviorSubject } from 'rxjs';
2
+ export class FormPiece {
3
+ constructor(pieceDefinition, formConfig) {
4
+ this._attributeChange = new BehaviorSubject(null);
5
+ this._formState = '';
6
+ this._visible = true;
7
+ this._disabled = false;
8
+ this.visibleStates = null;
9
+ this.enabledStates = null;
10
+ this.visibleOnState = true;
11
+ this.disabledOnState = false;
12
+ this.customAttributes = {};
13
+ this._formConfig = formConfig;
14
+ this._isForced = false;
15
+ this._visibleForced = false;
16
+ this.setVisibleStates(pieceDefinition.visibleStates);
17
+ this.setEnabledStates(pieceDefinition.enabledStates);
18
+ this.enabled = !pieceDefinition?.disabled ?? false;
19
+ this.setVisibility(pieceDefinition?.visible ?? true);
20
+ this.customAttributes = pieceDefinition?.customAttributes ?? {};
21
+ if (pieceDefinition?.customAttributes) {
22
+ Object.keys(pieceDefinition?.customAttributes)
23
+ ?.forEach(attr => this.customAttributes[attr] = pieceDefinition?.customAttributes[attr]);
24
+ }
25
+ }
26
+ getCustomAttribute(name) { return this.customAttributes?.[name] ?? null; }
27
+ setCustomAttribute(name, value) { if (name) {
28
+ this.customAttributes[name] = value;
29
+ } }
30
+ setCustomAttributes(attributes) {
31
+ Object.entries(attributes).forEach(([name, value]) => {
32
+ this.setCustomAttribute(name, value);
33
+ });
34
+ }
35
+ matchAttribute(name, value) { return this.customAttributes?.[name] === value; }
36
+ get attributeChange() { return this._attributeChange; }
37
+ propagateAttribute(name, value) {
38
+ this._attributeChange.next({ name, value });
39
+ }
40
+ setVisibleStates(newStates) {
41
+ const visibleStates = (!Array.isArray(newStates) && typeof newStates === 'string')
42
+ ? newStates.split(',').map(state => state.trim()).filter(state => state.length > 0)
43
+ : newStates;
44
+ this.visibleStates = (Array.isArray(visibleStates)) ? visibleStates : [];
45
+ }
46
+ setEnabledStates(newStates) {
47
+ const enabledStates = (!Array.isArray(newStates) && typeof newStates === 'string')
48
+ ? newStates.split(',').map(state => state.trim()).filter(state => state.length > 0)
49
+ : newStates;
50
+ this.enabledStates = (Array.isArray(enabledStates)) ? enabledStates : [];
51
+ }
52
+ viewOnState(state) { return (this.visibleStates && state) ? this.visibleStates.includes(state) : false; }
53
+ enabledOnState(state) { return (this.enabledStates && state) ? this.enabledStates.includes(state) : false; }
54
+ get visible() { return this._visible; }
55
+ set visible(visible) { this.setVisibility(visible); }
56
+ visibleOn(state) {
57
+ return this.visible && this.viewOnState(state);
58
+ }
59
+ enabledOn(state) {
60
+ return !this._disabled && this.enabledOnState(state);
61
+ }
62
+ setVisibility(visible, forced = null) {
63
+ this._visible = visible && true;
64
+ this.propagateVisible();
65
+ if (forced !== null) {
66
+ this._isForced = forced;
67
+ this._visibleForced = visible;
68
+ }
69
+ const formerVisibleOnState = this.visibleOnState;
70
+ this.visibleOnState = this.visible && this.viewOnState(this._formState);
71
+ if (formerVisibleOnState !== this.visibleOnState) {
72
+ this.propagateAttribute('visible', this.visibleOnState);
73
+ }
74
+ }
75
+ show(forced = null) {
76
+ this.setVisibility(true, forced);
77
+ }
78
+ hide(forced = null) {
79
+ this.setVisibility(false, forced);
80
+ }
81
+ get disabled() { return this._disabled; }
82
+ get enabled() { return !this._disabled; }
83
+ get editable() { return !this._disabled; }
84
+ set enabled(enabled) {
85
+ this._disabled = !enabled;
86
+ const formerDisableOnState = this.disabledOnState;
87
+ this.disabledOnState = this._disabled || !this.enabledOnState(this._formState);
88
+ if (formerDisableOnState !== this.disabledOnState) {
89
+ this.propagateDisabled();
90
+ }
91
+ }
92
+ enable() { this.enabled = true; }
93
+ disable() { this.enabled = false; }
94
+ subscribeFormStateChange(formChangeSubject) {
95
+ this.formStateChangeCustom(formChangeSubject);
96
+ formChangeSubject.subscribe(event => {
97
+ const { state } = event ?? {};
98
+ if (state) {
99
+ this._formState = state;
100
+ this.visibleOnState = this.visible && this.viewOnState(state);
101
+ this.disabledOnState = this._disabled || !this.enabledOnState(state);
102
+ this.propagateVisible();
103
+ this.propagateDisabled();
104
+ }
105
+ });
106
+ }
107
+ formStateChangeCustom(formChangeSubject) { }
108
+ propagateVisible() {
109
+ this.propagateAttribute('visible', this.visibleOnState);
110
+ }
111
+ propagateDisabled() {
112
+ this.propagateAttribute('disabled', this.disabledOnState);
113
+ }
114
+ }
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGllY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL3BpZWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkMsTUFBTSxPQUFPLFNBQVM7SUFnQnBCLFlBQVksZUFBb0IsRUFBRSxVQUFlO1FBZjlCLHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO1FBQzNELGVBQVUsR0FBVyxFQUFFLENBQUM7UUFHeEIsYUFBUSxHQUFZLElBQUksQ0FBQztRQUN6QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBRTNCLGtCQUFhLEdBQW9CLElBQUksQ0FBQztRQUN0QyxrQkFBYSxHQUFvQixJQUFJLENBQUM7UUFHekMsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFDL0Isb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFDakMscUJBQWdCLEdBQVEsRUFBRSxDQUFDO1FBR2hDLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVyRCxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsZUFBZSxFQUFFLFFBQVEsSUFBSSxLQUFLLENBQUM7UUFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLEVBQUUsZ0JBQWdCLElBQUks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QUFDLENBQUM7SUFDdkMsT0FBTyxLQUFXLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUV6Qyx3QkFBd0IsQ0FBQyxpQkFBaUI7UUFDeEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDOUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzlCLElBQUksS0FBSyxFQUFFO2dCQUNULElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2dCQUN4QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDckUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2FBQzFCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQscUJBQXFCLENBQUMsaUJBQWlCLElBQUksQ0FBQztJQUU1QyxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDNUQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjbGFzcyBGb3JtUGllY2Uge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2F0dHJpYnV0ZUNoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgcHJvdGVjdGVkIF9mb3JtU3RhdGU6IHN0cmluZyA9ICcnO1xuICBwcm90ZWN0ZWQgX3Zpc2libGVGb3JjZWQ6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBfaXNGb3JjZWQ6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBfdmlzaWJsZTogYm9vbGVhbiA9IHRydWU7XG4gIHByb3RlY3RlZCBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgdmlzaWJsZVN0YXRlczogc3RyaW5nW10gfCBudWxsID0gbnVsbDtcbiAgcHJvdGVjdGVkIGVuYWJsZWRTdGF0ZXM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIF9mb3JtQ29uZmlnOiBhbnk7XG4gIHB1YmxpYyB2aXNpYmxlT25TdGF0ZTogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyBkaXNhYmxlZE9uU3RhdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGN1c3RvbUF0dHJpYnV0ZXM6IGFueSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHBpZWNlRGVmaW5pdGlvbjogYW55LCBmb3JtQ29uZmlnOiBhbnkpIHtcbiAgICB0aGlzLl9mb3JtQ29uZmlnID0gZm9ybUNvbmZpZztcbiAgICB0aGlzLl9pc0ZvcmNlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3Zpc2libGVGb3JjZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNldFZpc2libGVTdGF0ZXMocGllY2VEZWZpbml0aW9uLnZpc2libGVTdGF0ZXMpO1xuICAgIHRoaXMuc2V0RW5hYmxlZFN0YXRlcyhwaWVjZURlZmluaXRpb24uZW5hYmxlZFN0YXRlcyk7XG5cbiAgICB0aGlzLmVuYWJsZWQgPSAhcGllY2VEZWZpbml0aW9uPy5kaXNhYmxlZCA/PyBmYWxzZTtcbiAgICB0aGlzLnNldFZpc2liaWxpdHkocGllY2VEZWZpbml0aW9uPy52aXNpYmxlID8/IHRydWUpO1xuICAgIHRoaXMuY3VzdG9tQXR0cmlidXRlcyA9IHBpZWNlRGVmaW5pdGlvbj8uY3VzdG9tQXR0cmlidXRlcyA/PyB7fTtcbiAgICBpZiAocGllY2VEZWZpbml0aW9uPy5jdXN0b21BdHRyaWJ1dGVzKSB7XG4gICAgICBPYmplY3Qua2V5cyhwaWVjZURlZmluaXRpb24/LmN1c3RvbUF0dHJpYnV0ZXMpXG4gICAgICAgID8uZm9yRWFjaChhdHRyID0+IHRoaXMuY3VzdG9tQXR0cmlidXRlc1thdHRyXSA9IHBpZWNlRGVmaW5pdGlvbj8uY3VzdG9tQXR0cmlidXRlc1thdHRyXSlcbiAgICB9XG4gIH1cblxuICBnZXRDdXN0b21BdHRyaWJ1dGUobmFtZTogc3RyaW5nKTogYW55IHsgcmV0dXJuIHRoaXMuY3VzdG9tQXR0cmlidXRlcz8uW25hbWVdID8/IG51bGw7IH1cbiAgc2V0Q3VzdG9tQXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQgeyBpZiAobmFtZSkgeyB0aGlzLmN1c3RvbUF0dHJpYnV0ZXNbbmFtZV0gPSB2YWx1ZTsgfSB9XG5cbiAgc2V0Q3VzdG9tQXR0cmlidXRlcyhhdHRyaWJ1dGVzOiBhbnkpOiB2b2lkIHtcbiAgICBPYmplY3QuZW50cmllcyhhdHRyaWJ1dGVzKS5mb3JFYWNoKChbbmFtZSwgdmFsdWVdKSA9PiB7XG4gICAgICB0aGlzLnNldEN1c3RvbUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBtYXRjaEF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuY3VzdG9tQXR0cmlidXRlcz8uW25hbWVdID09PSB2YWx1ZTsgfVxuXG4gIGdldCBhdHRyaWJ1dGVDaGFuZ2UoKSB7IHJldHVybiB0aGlzLl9hdHRyaWJ1dGVDaGFuZ2U7IH1cblxuICBwcm9wYWdhdGVBdHRyaWJ1dGUobmFtZSwgdmFsdWUpIHtcbiAgICB0aGlzLl9hdHRyaWJ1dGVDaGFuZ2UubmV4dCh7IG5hbWUsIHZhbHVlIH0pO1xuICB9XG5cbiAgc2V0VmlzaWJsZVN0YXRlcyhuZXdTdGF0ZXM6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHZpc2libGVTdGF0ZXMgPSAoIUFycmF5LmlzQXJyYXkobmV3U3RhdGVzKSAmJiB0eXBlb2YgbmV3U3RhdGVzID09PSAnc3RyaW5nJylcbiAgICAgID8gbmV3U3RhdGVzLnNwbGl0KCcsJykubWFwKHN0YXRlID0+IHN0YXRlLnRyaW0oKSkuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApXG4gICAgICA6IG5ld1N0YXRlcztcbiAgICB0aGlzLnZpc2libGVTdGF0ZXMgPSAoQXJyYXkuaXNBcnJheSh2aXNpYmxlU3RhdGVzKSkgPyB2aXNpYmxlU3RhdGVzIDogW107XG4gIH1cblxuICBzZXRFbmFibGVkU3RhdGVzKG5ld1N0YXRlczogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZW5hYmxlZFN0YXRlcyA9ICghQXJyYXkuaXNBcnJheShuZXdTdGF0ZXMpICYmIHR5cGVvZiBuZXdTdGF0ZXMgPT09ICdzdHJpbmcnKVxuICAgICAgPyBuZXdTdGF0ZXMuc3BsaXQoJywnKS5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKS5maWx0ZXIoc3RhdGUgPT4gc3RhdGUubGVuZ3RoID4gMClcbiAgICAgIDogbmV3U3RhdGVzO1xuICAgIHRoaXMuZW5hYmxlZFN0YXRlcyA9IChBcnJheS5pc0FycmF5KGVuYWJsZWRTdGF0ZXMpKSA/IGVuYWJsZWRTdGF0ZXMgOiBbXTtcbiAgfVxuXG4gIHZpZXdPblN0YXRlKHN0YXRlOiBzdHJpbmcpOiBib29sZWFuIHsgcmV0dXJuICh0aGlzLnZpc2libGVTdGF0ZXMgJiYgc3RhdGUpID8gdGhpcy52aXNpYmxlU3RhdGVzLmluY2x1ZGVzKHN0YXRlKSA6IGZhbHNlOyB9XG4gIGVuYWJsZWRPblN0YXRlKHN0YXRlOiBzdHJpbmcpOiBib29sZWFuIHsgcmV0dXJuICh0aGlzLmVuYWJsZWRTdGF0ZXMgJiYgc3RhdGUpID8gdGhpcy5lbmFibGVkU3RhdGVzLmluY2x1ZGVzKHN0YXRlKSA6IGZhbHNlOyB9XG5cbiAgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl92aXNpYmxlOyB9XG4gIHNldCB2aXNpYmxlKHZpc2libGU6IGJvb2xlYW4pIHsgdGhpcy5zZXRWaXNpYmlsaXR5KHZpc2libGUpOyB9XG5cbiAgdmlzaWJsZU9uKHN0YXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlICYmIHRoaXMudmlld09uU3RhdGUoc3RhdGUpO1xuICB9XG5cbiAgZW5hYmxlZE9uKHN0YXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuX2Rpc2FibGVkICYmIHRoaXMuZW5hYmxlZE9uU3RhdGUoc3RhdGUpO1xuICB9XG5cbiAgc2V0VmlzaWJpbGl0eSh2aXNpYmxlOiBib29sZWFuLCBmb3JjZWQ6IGJvb2xlYW4gfCBudWxsID0gbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuX3Zpc2libGUgPSB2aXNpYmxlICYmIHRydWU7XG4gICAgdGhpcy5wcm9wYWdhdGVWaXNpYmxlKCk7XG4gICAgaWYgKGZvcmNlZCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5faXNGb3JjZWQgPSBmb3JjZWQ7XG4gICAgICB0aGlzLl92aXNpYmxlRm9yY2VkID0gdmlzaWJsZTtcbiAgICB9XG4gICAgY29uc3QgZm9ybWVyVmlzaWJsZU9uU3RhdGUgPSB0aGlzLnZpc2libGVPblN0YXRlO1xuICAgIHRoaXMudmlzaWJsZU9uU3RhdGUgPSB0aGlzLnZpc2libGUgJiYgdGhpcy52aWV3T25TdGF0ZSh0aGlzLl9mb3JtU3RhdGUpO1xuICAgIGlmIChmb3JtZXJWaXNpYmxlT25TdGF0ZSAhPT0gdGhpcy52aXNpYmxlT25TdGF0ZSkge1xuICAgICAgdGhpcy5wcm9wYWdhdGVBdHRyaWJ1dGUoJ3Zpc2libGUnLCB0aGlzLnZpc2libGVPblN0YXRlKTtcbiAgICB9XG4gIH1cblxuICBzaG93KGZvcmNlZDogYm9vbGVhbiB8IG51bGwgPSBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5zZXRWaXNpYmlsaXR5KHRydWUsIGZvcmNlZCk7XG4gIH1cblxuICBoaWRlKGZvcmNlZDogYm9vbGVhbiB8IG51bGwgPSBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5zZXRWaXNpYmlsaXR5KGZhbHNlLCBmb3JjZWQpO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7IH1cbiAgZ2V0IGVuYWJsZWQoKTogYm9vbGVhbiB7IHJldHVybiAhdGhpcy5fZGlzYWJsZWQ7IH1cbiAgZ2V0IGVkaXRhYmxlKCk6IGJvb2xlYW4geyByZXR1cm4gIXRoaXMuX2Rpc2FibGVkOyB9XG5cbiAgc2V0IGVuYWJsZWQoZW5hYmxlZCkge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gIWVuYWJsZWQ7XG4gICAgY29uc3QgZm9ybWVyRGlzYWJsZU9uU3RhdGUgPSB0aGlzLmRpc2FibGVkT25TdGF0ZTtcbiAgICB0aGlzLmRpc2FibGVkT25TdGF0ZSA9IHRoaXMuX2Rpc2FibGVkIHx8ICF0aGlzLmVuYWJsZWRPblN0YXRlKHRoaXMuX2Zvcm1TdGF0ZSk7XG4gICAgaWYgKGZvcm1lckRpc2FibGVPblN0YXRlICE9PSB0aGlzLmRpc2FibGVkT25TdGF0ZSkge1xuICAgICAgdGhpcy5wcm9wYWdhdGVEaXNhYmxlZCgpO1xuICAgIH1cbiAgfVxuXG4gIGVuYWJsZSgpOiB2b2lkIHsgdGhpcy5lbmFibGVkID0gdHJ1ZTsgfVxuICBkaXNhYmxlKCk6IHZvaWQgeyB0aGlzLmVuYWJsZWQgPSBmYWxzZTsgfVxuXG4gIHN1YnNjcmliZUZvcm1TdGF0ZUNoYW5nZShmb3JtQ2hhbmdlU3ViamVjdCkge1xuICAgIHRoaXMuZm9ybVN0YXRlQ2hhbmdlQ3VzdG9tKGZvcm1DaGFuZ2VTdWJqZWN0KTtcbiAgICBmb3JtQ2hhbmdlU3ViamVjdC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgY29uc3QgeyBzdGF0ZSB9ID0gZXZlbnQgPz8ge307XG4gICAgICBpZiAoc3RhdGUpIHtcbiAgICAgICAgdGhpcy5fZm9ybVN0YXRlID0gc3RhdGU7XG4gICAgICAgIHRoaXMudmlzaWJsZU9uU3RhdGUgPSB0aGlzLnZpc2libGUgJiYgdGhpcy52aWV3T25TdGF0ZShzdGF0ZSk7XG4gICAgICAgIHRoaXMuZGlzYWJsZWRPblN0YXRlID0gdGhpcy5fZGlzYWJsZWQgfHwgIXRoaXMuZW5hYmxlZE9uU3RhdGUoc3RhdGUpO1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZVZpc2libGUoKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVEaXNhYmxlZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZm9ybVN0YXRlQ2hhbmdlQ3VzdG9tKGZvcm1DaGFuZ2VTdWJqZWN0KSB7IH1cblxuICBwcm9wYWdhdGVWaXNpYmxlKCkge1xuICAgIHRoaXMucHJvcGFnYXRlQXR0cmlidXRlKCd2aXNpYmxlJywgdGhpcy52aXNpYmxlT25TdGF0ZSk7XG4gIH1cblxuICBwcm9wYWdhdGVEaXNhYmxlZCgpIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUF0dHJpYnV0ZSgnZGlzYWJsZWQnLCB0aGlzLmRpc2FibGVkT25TdGF0ZSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,19 +1,22 @@
1
1
  import { Subject } from 'rxjs';
2
+ import { FormPiece } from './piece';
2
3
  import { RecordFormSubSection } from './subsection';
3
- export class RecordFormSection {
4
- constructor(sectionReceived, formObject) {
4
+ export class RecordFormSection extends FormPiece {
5
+ constructor(sectionReceived, formObject, formConfig) {
6
+ super(sectionReceived, formConfig);
5
7
  this._activation = new Subject();
6
8
  this._inactivation = new Subject();
7
9
  this.active = false;
8
- this.customAttributes = {};
10
+ this.sectionId = null;
11
+ this.sectionCode = null;
12
+ this.sectionTitle = null;
13
+ this.subSections = [];
9
14
  if (!sectionReceived) {
10
15
  return;
11
16
  }
12
- this.visible = true;
13
17
  this.sectionId = (sectionReceived.sectionId) ? sectionReceived.sectionId.toString() : '';
14
18
  this.sectionCode = (sectionReceived.sectionCode) ? sectionReceived.sectionCode : '';
15
19
  this.sectionTitle = (sectionReceived.sectionTitle) ? sectionReceived.sectionTitle : '';
16
- this.visibleStates = sectionReceived.visibleStates || [];
17
20
  this.subSections = [];
18
21
  this.subSectionsObj = {};
19
22
  if (sectionReceived.subsections) {
@@ -33,7 +36,7 @@ export class RecordFormSection {
33
36
  return { ...objDef, visibleStates };
34
37
  });
35
38
  for (const subsectionReceived of subsections) {
36
- const subSectionToAdd = new RecordFormSubSection(subsectionReceived, formObject);
39
+ const subSectionToAdd = new RecordFormSubSection(subsectionReceived, formObject, formConfig);
37
40
  const subsectionCode = subSectionToAdd.subsectionCode;
38
41
  if (subsectionCode) {
39
42
  this.subSections.push(subSectionToAdd);
@@ -41,36 +44,22 @@ export class RecordFormSection {
41
44
  }
42
45
  }
43
46
  }
44
- if (sectionReceived?.customAttributes) {
45
- Object.keys(sectionReceived?.customAttributes)
46
- ?.forEach(attr => this.customAttributes[attr] = sectionReceived?.customAttributes[attr]);
47
- }
48
- }
49
- getCustomAttribute(name) { return this.customAttributes?.[name] ?? null; }
50
- setCustomAttribute(name, value) { return name && (this.customAttributes[name] = value); }
51
- setCustomAttributes(attributes) {
52
- Object.entries(attributes).forEach(([name, value]) => {
53
- this.setCustomAttribute(name, value);
54
- });
55
47
  }
56
- matchAttribute(name, value) { return this.customAttributes?.[name] === value; }
57
48
  get code() { return this.sectionCode; }
58
49
  get activation() { return this._activation; }
59
50
  get inactivation() { return this._inactivation; }
60
51
  activate() {
61
52
  if (!this.active) {
62
53
  this.active = true;
63
- this._activation.next(this.sectionCode);
54
+ this.sectionCode && this._activation.next(this.sectionCode);
64
55
  }
65
56
  }
66
57
  inactivate() {
67
58
  if (this.active) {
68
59
  this.active = false;
69
- this._inactivation.next(this.sectionCode);
60
+ this.sectionCode && this._inactivation.next(this.sectionCode);
70
61
  }
71
62
  }
72
- show() { this.visible = true; }
73
- hide() { this.visible = false; }
74
63
  get title() { return this.sectionTitle; }
75
64
  set title(title) { this.sectionTitle = title; }
76
65
  getVisibleSubsections(state) {
@@ -86,7 +75,10 @@ export class RecordFormSection {
86
75
  let fieldsArray = [];
87
76
  if (this.subSections && this.subSections.length > 0) {
88
77
  for (const subSection of this.subSections) {
89
- fieldsArray = fieldsArray.concat(subSection.getFields());
78
+ const subsectionFields = subSection.getFields() ?? [];
79
+ if (subsectionFields?.length > 0) {
80
+ fieldsArray = fieldsArray.concat(subsectionFields);
81
+ }
90
82
  }
91
83
  }
92
84
  return fieldsArray;
@@ -95,7 +87,10 @@ export class RecordFormSection {
95
87
  let actionArray = [];
96
88
  if (this.subSections && this.subSections.length > 0) {
97
89
  for (const subSection of this.subSections) {
98
- actionArray = actionArray.concat(subSection.getActions());
90
+ const subSectionActions = subSection.getActions() ?? [];
91
+ if (subSectionActions?.length > 0) {
92
+ actionArray = actionArray.concat(subSectionActions);
93
+ }
99
94
  }
100
95
  }
101
96
  return actionArray;
@@ -130,8 +125,10 @@ export class RecordFormSection {
130
125
  }
131
126
  return null;
132
127
  }
133
- supportState(state) { return this.viewOnState(state); }
134
- viewOnState(state) { return this.visibleStates.includes(state); }
135
- supportMode(state) { return this.viewOnState(state); }
128
+ formStateChangeCustom(formChangeSubject) {
129
+ this.subSections?.forEach(subsection => {
130
+ subsection?.subscribeFormStateChange(formChangeSubject);
131
+ });
132
+ }
136
133
  }
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvc2VjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVwRCxNQUFNLE9BQU8saUJBQWlCO0lBZTVCLFlBQVksZUFBZSxFQUFFLFVBQVU7UUFkdEIsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ3BDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUl2RCxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBSWYscUJBQWdCLEdBQVEsRUFBRSxDQUFDO1FBTXpCLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFBRSxPQUFPO1NBQUU7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3pGLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNwRixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdkYsSUFBSSxDQUFDLGFBQWEsR0FBRyxlQUFlLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztRQUN6RCxJQUFJ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SSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3ZEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybUFjdGlvbiB9IGZyb20gJy4vYWN0aW9uJztcbmltcG9ydCB7IFJlY29yZEZvcm1TdWJTZWN0aW9uIH0gZnJvbSAnLi9zdWJzZWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIFJlY29yZEZvcm1TZWN0aW9uIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZhdGlvbiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5hY3RpdmF0aW9uID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICB2aXNpYmxlOiBib29sZWFuO1xuICB2aXNpYmxlU3RhdGVzOiBzdHJpbmdbXTtcblxuICBhY3RpdmUgPSBmYWxzZTtcbiAgc2VjdGlvbklkOiBzdHJpbmc7XG4gIHNlY3Rpb25Db2RlOiBzdHJpbmc7XG4gIHNlY3Rpb25UaXRsZTogc3RyaW5nO1xuICBjdXN0b21BdHRyaWJ1dGVzOiBhbnkgPSB7fTtcblxuICBzdWJTZWN0aW9uczogUmVjb3JkRm9ybVN1YlNlY3Rpb25bXTtcbiAgc3ViU2VjdGlvbnNPYmo6IGFueTtcblxuICBjb25zdHJ1Y3RvcihzZWN0aW9uUmVjZWl2ZWQsIGZvcm1PYmplY3QpIHtcbiAgICBpZiAoIXNlY3Rpb25SZWNlaXZlZCkgeyByZXR1cm47IH1cbiAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xuICAgIHRoaXMuc2VjdGlvbklkID0gKHNlY3Rpb25SZWNlaXZlZC5zZWN0aW9uSWQpID8gc2VjdGlvblJlY2VpdmVkLnNlY3Rpb25JZC50b1N0cmluZygpIDogJyc7XG4gICAgdGhpcy5zZWN0aW9uQ29kZSA9IChzZWN0aW9uUmVjZWl2ZWQuc2VjdGlvbkNvZGUpID8gc2VjdGlvblJlY2VpdmVkLnNlY3Rpb25Db2RlIDogJyc7XG4gICAgdGhpcy5zZWN0aW9uVGl0bGUgPSAoc2VjdGlvblJlY2VpdmVkLnNlY3Rpb25UaXRsZSkgPyBzZWN0aW9uUmVjZWl2ZWQuc2VjdGlvblRpdGxlIDogJyc7XG4gICAgdGhpcy52aXNpYmxlU3RhdGVzID0gc2VjdGlvblJlY2VpdmVkLnZpc2libGVTdGF0ZXMgfHwgW107XG4gICAgdGhpcy5zdWJTZWN0aW9ucyA9IFtdO1xuICAgIHRoaXMuc3ViU2VjdGlvbnNPYmogPSB7fTtcbiAgICBpZiAoc2VjdGlvblJlY2VpdmVkLnN1YnNlY3Rpb25zKSB7XG4gICAgICBjb25zdCBzdWJzZWN0aW9ucyA9IHNlY3Rpb25SZWNlaXZlZC5zdWJzZWN0aW9ucy5tYXAob2JqRGVmID0+IHtcbiAgICAgICAgbGV0IHZpc2libGVTdGF0ZXMgPSBvYmpEZWYudmlzaWJsZVN0YXRlcztcbiAgICAgICAgaWYgKCF2aXNpYmxlU3RhdGVzKSB7XG4gICAgICAgICAgdmlzaWJsZVN0YXRlcyA9IChvYmpEZWYuc3Vic2VjdGlvbk1vZGVzIHx8ICcnKS5zcGxpdCgnLCcpXG4gICAgICAgICAgICAubWFwKHN0YXRlID0+IHN0YXRlLnRyaW0oKSlcbiAgICAgICAgICAgIC5maWx0ZXIoc3RhdGUgPT4gc3RhdGUubGVuZ3RoID4gMCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF2aXNpYmxlU3RhdGVzIHx8IHZpc2libGVTdGF0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdmlzaWJsZVN0YXRlcyA9IHRoaXMudmlzaWJsZVN0YXRlcztcbiAgICAgICAgfVxuICAgICAgICBpZiAob2JqRGVmLmVsZW1lbnRzICYmIEFycmF5LmlzQXJyYXkob2JqRGVmLmVsZW1lbnRzKSkge1xuICAgICAgICAgIG9iakRlZi5lbGVtZW50cyA9IG9iakRlZi5lbGVtZW50cy5tYXAoZWxtID0+ICh7IGNvZGU6IGVsbS5lbGVtZW50Q29kZSwgdHlwZTogZWxtLmVsZW1lbnRUeXBlTmFtZSB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgLi4ub2JqRGVmLCB2aXNpYmxlU3RhdGVzIH07XG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3Qgc3Vic2VjdGlvblJlY2VpdmVkIG9mIHN1YnNlY3Rpb25zKSB7XG4gICAgICAgIGNvbnN0IHN1YlNlY3Rpb25Ub0FkZCA9IG5ldyBSZWNvcmRGb3JtU3ViU2VjdGlvbihzdWJzZWN0aW9uUmVjZWl2ZWQsIGZvcm1PYmplY3QpO1xuICAgICAgICBjb25zdCBzdWJzZWN0aW9uQ29kZSA9IHN1YlNlY3Rpb25Ub0FkZC5zdWJzZWN0aW9uQ29kZTtcbiAgICAgICAgaWYgKHN1YnNlY3Rpb25Db2RlKSB7XG4gICAgICAgICAgdGhpcy5zdWJTZWN0aW9ucy5wdXNoKHN1YlNlY3Rpb25Ub0FkZCk7XG4gICAgICAgICAgdGhpcy5zdWJTZWN0aW9uc09ialtzdWJzZWN0aW9uQ29kZV0gPSBzdWJTZWN0aW9uVG9BZGQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNlY3Rpb25SZWNlaXZlZD8uY3VzdG9tQXR0cmlidXRlcykge1xuICAgICAgT2JqZWN0LmtleXMoc2VjdGlvblJlY2VpdmVkPy5jdXN0b21BdHRyaWJ1dGVzKVxuICAgICAgICA/LmZvckVhY2goYXR0ciA9PiB0aGlzLmN1c3RvbUF0dHJpYnV0ZXNbYXR0cl0gPSBzZWN0aW9uUmVjZWl2ZWQ/LmN1c3RvbUF0dHJpYnV0ZXNbYXR0cl0pXG4gICAgfVxuICB9XG5cbiAgZ2V0Q3VzdG9tQXR0cmlidXRlKG5hbWUpIHsgcmV0dXJuIHRoaXMuY3VzdG9tQXR0cmlidXRlcz8uW25hbWVdID8/IG51bGw7IH1cbiAgc2V0Q3VzdG9tQXR0cmlidXRlKG5hbWUsIHZhbHVlKSB7IHJldHVybiBuYW1lICYmICh0aGlzLmN1c3RvbUF0dHJpYnV0ZXNbbmFtZV0gPSB2YWx1ZSk7IH1cblxuICBzZXRDdXN0b21BdHRyaWJ1dGVzKGF0dHJpYnV0ZXM6IGFueSk6IHZvaWQge1xuICAgIE9iamVjdC5lbnRyaWVzKGF0dHJpYnV0ZXMpLmZvckVhY2goKFtuYW1lLCB2YWx1ZV0pID0+IHtcbiAgICAgIHRoaXMuc2V0Q3VzdG9tQXR0cmlidXRlKG5hbWUsIHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIG1hdGNoQXR0cmlidXRlKG5hbWUsIHZhbHVlKSB7IHJldHVybiB0aGlzLmN1c3RvbUF0dHJpYnV0ZXM/LltuYW1lXSA9PT0gdmFsdWU7IH1cblxuICBnZXQgY29kZSgpIHsgcmV0dXJuIHRoaXMuc2VjdGlvbkNvZGU7IH1cbiAgZ2V0IGFjdGl2YXRpb24oKSB7IHJldHVybiB0aGlzLl9hY3RpdmF0aW9uOyB9XG4gIGdldCBpbmFjdGl2YXRpb24oKSB7IHJldHVybiB0aGlzLl9pbmFjdGl2YXRpb247IH1cblxuICBhY3RpdmF0ZSgpIHtcbiAgICBpZiAoIXRoaXMuYWN0aXZlKSB7XG4gICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gICAgICB0aGlzLl9hY3RpdmF0aW9uLm5leHQodGhpcy5zZWN0aW9uQ29kZSk7XG4gICAgfVxuICB9XG5cbiAgaW5hY3RpdmF0ZSgpIHtcbiAgICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XG4gICAgICB0aGlzLl9pbmFjdGl2YXRpb24ubmV4dCh0aGlzLnNlY3Rpb25Db2RlKTtcbiAgICB9XG4gIH1cblxuICBzaG93KCkgeyB0aGlzLnZpc2libGUgPSB0cnVlOyB9XG4gIGhpZGUoKSB7IHRoaXMudmlzaWJsZSA9IGZhbHNlOyB9XG4gIGdldCB0aXRsZSgpIHsgcmV0dXJuIHRoaXMuc2VjdGlvblRpdGxlOyB9XG4gIHNldCB0aXRsZSh0aXRsZSkgeyB0aGlzLnNlY3Rpb25UaXRsZSA9IHRpdGxlOyB9XG5cbiAgZ2V0VmlzaWJsZVN1YnNlY3Rpb25zKHN0YXRlKSB7XG4gICAgcmV0dXJuIHRoaXMuc3ViU2VjdGlvbnMuZmlsdGVyKHN1YlNlY3Rpb24gPT4ge1xuICAgICAgcmV0dXJuIHN1YlNlY3Rpb24udmlzaWJsZSAmJiBzdWJTZWN0aW9uLnZpZXdPblN0YXRlKHN0YXRlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldFN1YnNlY3Rpb24oc3ViU2VjdGlvbkNvZGUpIHtcbiAgICByZXR1cm4gKHRoaXMuc3ViU2VjdGlvbnNPYmogJiYgdGhpcy5zdWJTZWN0aW9uc09ialtzdWJTZWN0aW9uQ29kZV0pXG4gICAgICA/IHRoaXMuc3ViU2VjdGlvbnNPYmpbc3ViU2VjdGlvbkNvZGVdIDogbnVsbDtcbiAgfVxuXG4gIGdldEZpZWxkcygpIHtcbiAgICBsZXQgZmllbGRzQXJyYXkgPSBbXTtcbiAgICBpZiAodGhpcy5zdWJTZWN0aW9ucyAmJiB0aGlzLnN1YlNlY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3Qgc3ViU2VjdGlvbiBvZiB0aGlzLnN1YlNlY3Rpb25zKSB7XG4gICAgICAgIGZpZWxkc0FycmF5ID0gZmllbGRzQXJyYXkuY29uY2F0KHN1YlNlY3Rpb24uZ2V0RmllbGRzKCkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmllbGRzQXJyYXk7XG4gIH1cblxuICBnZXRBY3Rpb25zKCk6IEZvcm1BY3Rpb25bXSB7XG4gICAgbGV0IGFjdGlvbkFycmF5ID0gW107XG4gICAgaWYgKHRoaXMuc3ViU2VjdGlvbnMgJiYgdGhpcy5zdWJTZWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IHN1YlNlY3Rpb24gb2YgdGhpcy5zdWJTZWN0aW9ucykge1xuICAgICAgICBhY3Rpb25BcnJheSA9IGFjdGlvbkFycmF5LmNvbmNhdChzdWJTZWN0aW9uLmdldEFjdGlvbnMoKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhY3Rpb25BcnJheTtcbiAgfVxuXG4gIGdldEFjdGlvbk5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICBsZXQgYWN0aW9uQXJyYXkgPSBbXTtcbiAgICBpZiAodGhpcy5zdWJTZWN0aW9ucyAmJiB0aGlzLnN1YlNlY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3Qgc3ViU2VjdGlvbiBvZiB0aGlzLnN1YlNlY3Rpb25zKSB7XG4gICAgICAgIGFjdGlvbkFycmF5ID0gYWN0aW9uQXJyYXkuY29uY2F0KHN1YlNlY3Rpb24uZ2V0QWN0aW9uTmFtZXMoKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhY3Rpb25BcnJheTtcbiAgfVxuXG4gIGdldEZpZWxkTmFtZXMoKSB7XG4gICAgbGV0IGZpZWxkc0FycmF5ID0gW107XG4gICAgaWYgKHRoaXMuc3ViU2VjdGlvbnMgJiYgdGhpcy5zdWJTZWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IHN1YlNlY3Rpb24gb2YgdGhpcy5zdWJTZWN0aW9ucykge1xuICAgICAgICBmaWVsZHNBcnJheSA9IGZpZWxkc0FycmF5LmNvbmNhdChzdWJTZWN0aW9uLmdldEZpZWxkTmFtZXMoKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmaWVsZHNBcnJheTtcbiAgfVxuXG4gIGdldEZpZWxkKG5hbWUpIHtcbiAgICBsZXQgZmllbGQgPSBudWxsO1xuICAgIGlmICh0aGlzLnN1YlNlY3Rpb25zICYmIHRoaXMuc3ViU2VjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBzdWJTZWN0aW9uIG9mIHRoaXMuc3ViU2VjdGlvbnMpIHtcbiAgICAgICAgZmllbGQgPSBzdWJTZWN0aW9uLmdldEZpZWxkKG5hbWUpO1xuICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBzdXBwb3J0U3RhdGUoc3RhdGUpIHsgcmV0dXJuIHRoaXMudmlld09uU3RhdGUoc3RhdGUpOyB9XG4gIHZpZXdPblN0YXRlKHN0YXRlKSB7IHJldHVybiB0aGlzLnZpc2libGVTdGF0ZXMuaW5jbHVkZXMoc3RhdGUpOyB9XG4gIHN1cHBvcnRNb2RlKHN0YXRlKSB7IHJldHVybiB0aGlzLnZpZXdPblN0YXRlKHN0YXRlKTsgfVxufVxuIl19
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvc2VjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXBELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxTQUFTO0lBVzlDLFlBQVksZUFBZSxFQUFFLFVBQVUsRUFBRSxVQUFVO1FBQ2pELEtBQUssQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFYcEIsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ3BDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUV2RCxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFDaEMsZ0JBQVcsR0FBa0IsSUFBSSxDQUFDO1FBQ2xDLGlCQUFZLEdBQWtCLElBQUksQ0FBQztRQUNuQyxnQkFBVyxHQUEyQixFQUFFLENBQUM7UUFLdkMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUFFLE9BQU87U0FBRTtRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDekYsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3BGLElBQUksQ0FBQyxZQUFZLEdB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QUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNuRCxLQUFLLE1BQU0sVUFBVSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3pDLEtBQUssR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsQyxJQUFJLEtBQUssRUFBRTtvQkFDVCxPQUFPLEtBQUssQ0FBQztpQkFDZDthQUNGO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFUSxxQkFBcUIsQ0FBQyxpQkFBaUI7UUFDOUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDckMsVUFBVSxFQUFFLHdCQUF3QixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGb3JtUGllY2UgfSBmcm9tICcuL3BpZWNlJztcbmltcG9ydCB7IEZvcm1BY3Rpb24gfSBmcm9tICcuL2FjdGlvbic7XG5pbXBvcnQgeyBSZWNvcmRGb3JtU3ViU2VjdGlvbiB9IGZyb20gJy4vc3Vic2VjdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBSZWNvcmRGb3JtU2VjdGlvbiBleHRlbmRzIEZvcm1QaWVjZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2YXRpb24gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2luYWN0aXZhdGlvbiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICBhY3RpdmUgPSBmYWxzZTtcbiAgc2VjdGlvbklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgc2VjdGlvbkNvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBzZWN0aW9uVGl0bGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBzdWJTZWN0aW9uczogUmVjb3JkRm9ybVN1YlNlY3Rpb25bXSA9IFtdO1xuICBzdWJTZWN0aW9uc09iajogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHNlY3Rpb25SZWNlaXZlZCwgZm9ybU9iamVjdCwgZm9ybUNvbmZpZykge1xuICAgIHN1cGVyKHNlY3Rpb25SZWNlaXZlZCwgZm9ybUNvbmZpZyk7XG4gICAgaWYgKCFzZWN0aW9uUmVjZWl2ZWQpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5zZWN0aW9uSWQgPSAoc2VjdGlvblJlY2VpdmVkLnNlY3Rpb25JZCkgPyBzZWN0aW9uUmVjZWl2ZWQuc2VjdGlvbklkLnRvU3RyaW5nKCkgOiAnJztcbiAgICB0aGlzLnNlY3Rpb25Db2RlID0gKHNlY3Rpb25SZWNlaXZlZC5zZWN0aW9uQ29kZSkgPyBzZWN0aW9uUmVjZWl2ZWQuc2VjdGlvbkNvZGUgOiAnJztcbiAgICB0aGlzLnNlY3Rpb25UaXRsZSA9IChzZWN0aW9uUmVjZWl2ZWQuc2VjdGlvblRpdGxlKSA/IHNlY3Rpb25SZWNlaXZlZC5zZWN0aW9uVGl0bGUgOiAnJztcbiAgICB0aGlzLnN1YlNlY3Rpb25zID0gW107XG4gICAgdGhpcy5zdWJTZWN0aW9uc09iaiA9IHt9O1xuICAgIGlmIChzZWN0aW9uUmVjZWl2ZWQuc3Vic2VjdGlvbnMpIHtcbiAgICAgIGNvbnN0IHN1YnNlY3Rpb25zID0gc2VjdGlvblJlY2VpdmVkLnN1YnNlY3Rpb25zLm1hcChvYmpEZWYgPT4ge1xuICAgICAgICBsZXQgdmlzaWJsZVN0YXRlcyA9IG9iakRlZi52aXNpYmxlU3RhdGVzO1xuICAgICAgICBpZiAoIXZpc2libGVTdGF0ZXMpIHtcbiAgICAgICAgICB2aXNpYmxlU3RhdGVzID0gKG9iakRlZi5zdWJzZWN0aW9uTW9kZXMgfHwgJycpLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKVxuICAgICAgICAgICAgLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXZpc2libGVTdGF0ZXMgfHwgdmlzaWJsZVN0YXRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB2aXNpYmxlU3RhdGVzID0gdGhpcy52aXNpYmxlU3RhdGVzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvYmpEZWYuZWxlbWVudHMgJiYgQXJyYXkuaXNBcnJheShvYmpEZWYuZWxlbWVudHMpKSB7XG4gICAgICAgICAgb2JqRGVmLmVsZW1lbnRzID0gb2JqRGVmLmVsZW1lbnRzLm1hcChlbG0gPT4gKHsgY29kZTogZWxtLmVsZW1lbnRDb2RlLCB0eXBlOiBlbG0uZWxlbWVudFR5cGVOYW1lIH0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyAuLi5vYmpEZWYsIHZpc2libGVTdGF0ZXMgfTtcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCBzdWJzZWN0aW9uUmVjZWl2ZWQgb2Ygc3Vic2VjdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgc3ViU2VjdGlvblRvQWRkID0gbmV3IFJlY29yZEZvcm1TdWJTZWN0aW9uKHN1YnNlY3Rpb25SZWNlaXZlZCwgZm9ybU9iamVjdCwgZm9ybUNvbmZpZyk7XG4gICAgICAgIGNvbnN0IHN1YnNlY3Rpb25Db2RlID0gc3ViU2VjdGlvblRvQWRkLnN1YnNlY3Rpb25Db2RlO1xuICAgICAgICBpZiAoc3Vic2VjdGlvbkNvZGUpIHtcbiAgICAgICAgICB0aGlzLnN1YlNlY3Rpb25zLnB1c2goc3ViU2VjdGlvblRvQWRkKTtcbiAgICAgICAgICB0aGlzLnN1YlNlY3Rpb25zT2JqW3N1YnNlY3Rpb25Db2RlXSA9IHN1YlNlY3Rpb25Ub0FkZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBjb2RlKCkgeyByZXR1cm4gdGhpcy5zZWN0aW9uQ29kZTsgfVxuICBnZXQgYWN0aXZhdGlvbigpIHsgcmV0dXJuIHRoaXMuX2FjdGl2YXRpb247IH1cbiAgZ2V0IGluYWN0aXZhdGlvbigpIHsgcmV0dXJuIHRoaXMuX2luYWN0aXZhdGlvbjsgfVxuXG4gIGFjdGl2YXRlKCkge1xuICAgIGlmICghdGhpcy5hY3RpdmUpIHtcbiAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VjdGlvbkNvZGUgJiYgdGhpcy5fYWN0aXZhdGlvbi5uZXh0KHRoaXMuc2VjdGlvbkNvZGUpO1xuICAgIH1cbiAgfVxuXG4gIGluYWN0aXZhdGUoKSB7XG4gICAgaWYgKHRoaXMuYWN0aXZlKSB7XG4gICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWN0aW9uQ29kZSAmJiB0aGlzLl9pbmFjdGl2YXRpb24ubmV4dCh0aGlzLnNlY3Rpb25Db2RlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdGl0bGUoKSB7IHJldHVybiB0aGlzLnNlY3Rpb25UaXRsZTsgfVxuICBzZXQgdGl0bGUodGl0bGUpIHsgdGhpcy5zZWN0aW9uVGl0bGUgPSB0aXRsZTsgfVxuXG4gIGdldFZpc2libGVTdWJzZWN0aW9ucyhzdGF0ZSkge1xuICAgIHJldHVybiB0aGlzLnN1YlNlY3Rpb25zLmZpbHRlcihzdWJTZWN0aW9uID0+IHtcbiAgICAgIHJldHVybiBzdWJTZWN0aW9uLnZpc2libGUgJiYgc3ViU2VjdGlvbi52aWV3T25TdGF0ZShzdGF0ZSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRTdWJzZWN0aW9uKHN1YlNlY3Rpb25Db2RlKSB7XG4gICAgcmV0dXJuICh0aGlzLnN1YlNlY3Rpb25zT2JqICYmIHRoaXMuc3ViU2VjdGlvbnNPYmpbc3ViU2VjdGlvbkNvZGVdKVxuICAgICAgPyB0aGlzLnN1YlNlY3Rpb25zT2JqW3N1YlNlY3Rpb25Db2RlXSA6IG51bGw7XG4gIH1cblxuICBnZXRGaWVsZHMoKSB7XG4gICAgbGV0IGZpZWxkc0FycmF5OiBhbnlbXSA9IFtdO1xuICAgIGlmICh0aGlzLnN1YlNlY3Rpb25zICYmIHRoaXMuc3ViU2VjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBzdWJTZWN0aW9uIG9mIHRoaXMuc3ViU2VjdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgc3Vic2VjdGlvbkZpZWxkczogYW55W10gPSBzdWJTZWN0aW9uLmdldEZpZWxkcygpID8/IFtdO1xuICAgICAgICBpZiAoc3Vic2VjdGlvbkZpZWxkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGZpZWxkc0FycmF5ID0gZmllbGRzQXJyYXkuY29uY2F0KHN1YnNlY3Rpb25GaWVsZHMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmaWVsZHNBcnJheTtcbiAgfVxuXG4gIGdldEFjdGlvbnMoKTogRm9ybUFjdGlvbltdIHtcbiAgICBsZXQgYWN0aW9uQXJyYXk6IGFueVtdID0gW107XG4gICAgaWYgKHRoaXMuc3ViU2VjdGlvbnMgJiYgdGhpcy5zdWJTZWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IHN1YlNlY3Rpb24gb2YgdGhpcy5zdWJTZWN0aW9ucykge1xuICAgICAgICBjb25zdCBzdWJTZWN0aW9uQWN0aW9ucyA9IHN1YlNlY3Rpb24uZ2V0QWN0aW9ucygpID8/IFtdO1xuICAgICAgICBpZiAoc3ViU2VjdGlvbkFjdGlvbnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBhY3Rpb25BcnJheSA9IGFjdGlvbkFycmF5LmNvbmNhdChzdWJTZWN0aW9uQWN0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFjdGlvbkFycmF5O1xuICB9XG5cbiAgZ2V0QWN0aW9uTmFtZXMoKTogc3RyaW5nW10ge1xuICAgIGxldCBhY3Rpb25BcnJheTogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAodGhpcy5zdWJTZWN0aW9ucyAmJiB0aGlzLnN1YlNlY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3Qgc3ViU2VjdGlvbiBvZiB0aGlzLnN1YlNlY3Rpb25zKSB7XG4gICAgICAgIGFjdGlvbkFycmF5ID0gYWN0aW9uQXJyYXkuY29uY2F0KHN1YlNlY3Rpb24uZ2V0QWN0aW9uTmFtZXMoKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhY3Rpb25BcnJheTtcbiAgfVxuXG4gIGdldEZpZWxkTmFtZXMoKSB7XG4gICAgbGV0IGZpZWxkc0FycmF5OiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmICh0aGlzLnN1YlNlY3Rpb25zICYmIHRoaXMuc3ViU2VjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBzdWJTZWN0aW9uIG9mIHRoaXMuc3ViU2VjdGlvbnMpIHtcbiAgICAgICAgZmllbGRzQXJyYXkgPSBmaWVsZHNBcnJheS5jb25jYXQoc3ViU2VjdGlvbi5nZXRGaWVsZE5hbWVzKCkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmllbGRzQXJyYXk7XG4gIH1cblxuICBnZXRGaWVsZChuYW1lKSB7XG4gICAgbGV0IGZpZWxkID0gbnVsbDtcbiAgICBpZiAodGhpcy5zdWJTZWN0aW9ucyAmJiB0aGlzLnN1YlNlY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3Qgc3ViU2VjdGlvbiBvZiB0aGlzLnN1YlNlY3Rpb25zKSB7XG4gICAgICAgIGZpZWxkID0gc3ViU2VjdGlvbi5nZXRGaWVsZChuYW1lKTtcbiAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgb3ZlcnJpZGUgZm9ybVN0YXRlQ2hhbmdlQ3VzdG9tKGZvcm1DaGFuZ2VTdWJqZWN0KSB7XG4gICAgdGhpcy5zdWJTZWN0aW9ucz8uZm9yRWFjaChzdWJzZWN0aW9uID0+IHtcbiAgICAgIHN1YnNlY3Rpb24/LnN1YnNjcmliZUZvcm1TdGF0ZUNoYW5nZShmb3JtQ2hhbmdlU3ViamVjdCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==