@quadrel-enterprise-ui/framework 18.24.0 → 18.24.2

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.
@@ -118,11 +118,8 @@ export class QdCalendarComponent {
118
118
  this.weeks = Array.from({ length: Math.ceil(dates.length / 7) }, () => dates.splice(0, 7));
119
119
  }
120
120
  fillDates(momentObj) {
121
- const firstOfMonth = moment(momentObj).startOf('month').day();
122
121
  const lastOfMonth = moment(momentObj).endOf('month').day();
123
- const firstDayOfGrid = moment(momentObj)
124
- .startOf('month')
125
- .subtract(firstOfMonth === 0 ? 6 : firstOfMonth - 1, 'days');
122
+ const firstDayOfGrid = moment(momentObj).locale(this.language).startOf('month').startOf('week');
126
123
  const lastDayOfGrid = moment(momentObj).endOf('month').subtract(lastOfMonth, 'days').add(7, 'days');
127
124
  const startCalendar = firstDayOfGrid.date();
128
125
  return range(startCalendar, startCalendar + lastDayOfGrid.diff(firstDayOfGrid, 'days')).map(date => {
@@ -183,4 +180,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
183
180
  }], selectedChange: [{
184
181
  type: Output
185
182
  }] } });
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL2Zvcm1zL2RhdGVwaWNrZXIvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL2Zvcm1zL2RhdGVwaWNrZXIvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxNQUFrQixNQUFNLFFBQVEsQ0FBQztBQUN4QyxPQUFPLEVBQWlCLGNBQWMsRUFBbUIsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFFeEQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQztBQVFyQixNQUFNLE9BQU8sbUJBQW1CO0lBQzlCOzs7O09BSUc7SUFFSCxZQUFZLENBQTZCO0lBRXpDOzs7O09BSUc7SUFFSCxRQUFRLENBQVM7SUFFakI7Ozs7O09BS0c7SUFFSCxhQUFhLENBQW9CO0lBRWpDOztPQUVHO0lBRUgsY0FBYyxHQUFHLElBQUksWUFBWSxFQUE4QixDQUFDO0lBRWhFLFdBQVcsQ0FBUztJQUNwQixTQUFTLENBQVM7SUFFbEIsUUFBUSxDQUFXO0lBQ25CLEtBQUssR0FBMkIsRUFBRSxDQUFDO0lBQ25DLE1BQU0sQ0FBVztJQUNqQixLQUFLLENBQVc7SUFFaEIsSUFBSSxHQUFtQixjQUFjLENBQUMsT0FBTyxD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QyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3VHQTlMVSxtQkFBbUI7MkZBQW5CLG1CQUFtQix1TkN6QmhDLHF1RUEyRUE7OzJGRGxEYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsYUFBYSxtQkFHTix1QkFBdUIsQ0FBQyxNQUFNOzhCQVMvQyxZQUFZO3NCQURYLEtBQUs7Z0JBU04sUUFBUTtzQkFEUCxLQUFLO2dCQVVOLGFBQWE7c0JBRFosS0FBSztnQkFPTixjQUFjO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtc3RyaWN0LWlnbm9yZVxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHJhbmdlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQsIHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IFFkQ2FsZW5kYXJEYXksIFFkQ2FsZW5kYXJNb2RlLCBRZERpc2FibGVkRGF0ZXMgfSBmcm9tICcuLi8uLi9tb2RlbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IFFkRGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi9hZGFwdGVyL2RhdGUtYWRhcHRlcic7XG5cbmNvbnN0IFllYXJzQmVmb3JlID0gOTtcbmNvbnN0IFllYXJzQWZ0ZXIgPSAyO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxZC1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFFkQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGlzIHVzZWQgdG8gaGlnaGxpZ2h0IHRoZSBzZWxlY3RlZCBkYXRlIGluIHRoZSBjYWxlbmRhci4gSXQgc2hvdWxkIGJlIGluIHRoZSBmb3JtYXQgZm9yIGV4YW1wbGUgJ0RELk1NLllZWVknIG9yICdNTS9ERC9ZWVlZJyBkZXBlbmRpbmcgb24gdGhlIGxhbmd1YWdlIHVzZWQuXG4gICAqXG4gICAqIEBleGFtcGxlICcyMDIyLTEyLTI1J1xuICAgKi9cbiAgQElucHV0KClcbiAgc2VsZWN0ZWREYXRlOiBRZENhbGVuZGFyRGF5Wydmb3JtYXR0ZWQnXTtcblxuICAvKipcbiAgICogVGhpcyBwcm9wZXJ0eSBkZXRlcm1pbmVzIHRoZSBsYW5ndWFnZSB1c2VkIGZvciBkaXNwbGF5aW5nIHRoZSB3ZWVrZGF5cyBhbmQgZm9ybWF0dGluZyB0aGUgZGF0ZXMgaW4gdGhlIGNhbGVuZGFyLiBJdCBzaG91bGQgYmUgYSB2YWxpZCBsYW5ndWFnZSBjb2RlIHN1cHBvcnRlZCBieSB0aGUgbW9tZW50LmpzIGxpYnJhcnkuXG4gICAqXG4gICAqIEBleGFtcGxlICdkZSdcbiAgICovXG4gIEBJbnB1dCgpXG4gIGxhbmd1YWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoaXMgcHJvcGVydHkgZGlzYWJsZXMgdGhlIGdpdmVuIGRhdGUgcmFuZ2VzLlRoZSByYW5nZXMgaGF2ZSBhIFwiZnJvbVwiIGFuZCBcInRvXCIgZGF0ZS5cbiAgICogSWYgXCJmcm9tXCIgaXMgZW1wdHksIGl0IHdpbGwgc2V0IHRoZSBkZWZhdWx0IHZhbHVlIDE5MDBcbiAgICogSWYgXCJ0b1wiIGlzIGVtcHR5LCBpdCB3aWxsIGJlIHNldCB0byB0aGUgZGVmYXVsdCAyMTAwXG4gICAqXG4gICAqL1xuICBASW5wdXQoKVxuICBkaXNhYmxlZERhdGVzOiBRZERpc2FibGVkRGF0ZXNbXTtcblxuICAvKipcbiAgICogT3V0cHV0cyBhIHZhbHVlIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyBhIGRhdGUgaW4gdGhlIGNhbGVuZGFyLiBUaGUgbmV3bHkgc2VsZWN0ZWQgZGF0ZSBpcyBvdXRwdXQgYXMgYSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFFkQ2FsZW5kYXJEYXlbJ2Zvcm1hdHRlZCddPigpO1xuXG4gIGN1cnJlbnREYXRlOiBNb21lbnQ7XG4gIHRvZGF5RGF0ZTogTW9tZW50O1xuXG4gIHdlZWtkYXlzOiBzdHJpbmdbXTtcbiAgd2Vla3M6IEFycmF5PFFkQ2FsZW5kYXJEYXlbXT4gPSBbXTtcbiAgbW9udGhzOiBzdHJpbmdbXTtcbiAgeWVhcnM6IG51bWJlcltdO1xuXG4gIG1vZGU6IFFkQ2FsZW5kYXJNb2RlID0gUWRDYWxlbmRhck1vZGUuRGVmYXVsdDtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgUWRDYWxlbmRhck1vZGUgPSBRZENhbGVuZGFyTW9kZTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBtb21lbnQubG9jYWxlKHRoaXMubGFuZ3VhZ2UpO1xuXG4gICAgdGhpcy53ZWVrZGF5cyA9IG1vbWVudC53ZWVrZGF5c01pbih0cnVlKTtcbiAgICB0aGlzLnRvZGF5RGF0ZSA9IG1vbWVudCgpO1xuXG4gICAgdGhpcy5tb250aHMgPSBtb21lbnQubW9udGhzKCk7XG4gICAgdGhpcy55ZWFycyA9IHRoaXMuZ2V0WWVhcnMoXG4gICAgICAoUWREYXRlQWRhcHRlci5wYXJzZVRvTW9tZW50KHRoaXMuc2VsZWN0ZWREYXRlKT8uaXNWYWxpZCgpXG4gICAgICAgID8gbW9tZW50KHRoaXMuc2VsZWN0ZWREYXRlLCAnTCcsIHRoaXMubGFuZ3VhZ2UpXG4gICAgICAgIDogdGhpcy50b2RheURhdGVcbiAgICAgICkueWVhcigpXG4gICAgKTtcblxuICAgIHRoaXMuc2V0Q3VycmVudERhdGUoKTtcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIodGhpcy5jdXJyZW50RGF0ZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2xhbmd1YWdlJ10pIG1vbWVudC5sb2NhbGUodGhpcy5sYW5ndWFnZSk7XG4gICAgaWYgKGNoYW5nZXNbJ2Rpc2FibGVkRGF0ZXMnXSAmJiAhY2hhbmdlc1snZGlzYWJsZWREYXRlcyddLmlzRmlyc3RDaGFuZ2UoKSkgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKHRoaXMuY3VycmVudERhdGUpO1xuICB9XG5cbiAgaXNTYW1lWWVhck1vbnRoKGRheTogTW9tZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGRheS5pc1NhbWUodGhpcy5jdXJyZW50RGF0ZSwgJ21vbnRoJyk7XG4gIH1cblxuICBpc1NhbWVNb250aChtb250aCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnREYXRlLm1vbnRoKCkgPT09IG1vbnRoO1xuICB9XG5cbiAgaXNTYW1lWWVhcih5ZWFyOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gUWREYXRlQWRhcHRlci5wYXJzZVRvTW9tZW50KHRoaXMuc2VsZWN0ZWREYXRlKS55ZWFyKCkgPT09IHllYXI7XG4gIH1cblxuICBwcmV2KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vZGUgPT09IFFkQ2FsZW5kYXJNb2RlLkRlZmF1bHQpIHtcbiAgICAgIHRoaXMuY3VycmVudERhdGUuc3VidHJhY3QoMSwgJ21vbnRocycpO1xuICAgICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKHRoaXMuY3VycmVudERhdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSBRZENhbGVuZGFyTW9kZS5ZZWFyUGlja2VyKSB7XG4gICAgICB0aGlzLmN1cnJlbnREYXRlLnNldCgneWVhcicsIHRoaXMuY3VycmVudERhdGUueWVhcigpIC0gKFllYXJzQmVmb3JlICsgWWVhcnNBZnRlciArIDEpKTtcbiAgICAgIHRoaXMueWVhcnMgPSB0aGlzLmdldFllYXJzKHRoaXMuY3VycmVudERhdGUueWVhcigpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5zZXQoJ3llYXInLCB0aGlzLmN1cnJlbnREYXRlLnllYXIoKSAtIDEpO1xuICAgIH1cbiAgfVxuXG4gIG5leHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gUWRDYWxlbmRhck1vZGUuRGVmYXVsdCkge1xuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5hZGQoMSwgJ21vbnRocycpO1xuICAgICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKHRoaXMuY3VycmVudERhdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSBRZENhbGVuZGFyTW9kZS5ZZWFyUGlja2VyKSB7XG4gICAgICB0aGlzLmN1cnJlbnREYXRlLnNldCgneWVhcicsIHRoaXMuY3VycmVudERhdGUueWVhcigpICsgKFllYXJzQmVmb3JlICsgWWVhcnNBZnRlciArIDEpKTtcbiAgICAgIHRoaXMueWVhcnMgPSB0aGlzLmdldFllYXJzKHRoaXMuY3VycmVudERhdGUueWVhcigpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5zZXQoJ3llYXInLCB0aGlzLmN1cnJlbnREYXRlLnllYXIoKSArIDEpO1xuICAgIH1cbiAgfVxuXG4gIGlzU2VsZWN0ZWQobW9tZW50T2JqOiBNb21lbnQpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWREYXRlKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gUWREYXRlQWRhcHRlci5mb3JtYXRUb0xvY2FsaXplZERhdGVTdHJpbmcobW9tZW50T2JqKSA9PT0gdGhpcy5zZWxlY3RlZERhdGU7XG4gIH1cblxuICBzZWxlY3REYXRlKGRhdGU6IFFkQ2FsZW5kYXJEYXkgfCBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQoZGF0ZS5mb3JtYXR0ZWQpO1xuICB9XG5cbiAgc2VsZWN0WWVhcih5ZWFyOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnREYXRlLnNldCgneWVhcicsIHllYXIpO1xuICAgIHRoaXMubW9kZSA9IFFkQ2FsZW5kYXJNb2RlLk1vbnRoUGlja2VyO1xuICB9XG5cbiAgc2VsZWN0TW9udGgobW9udGg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudERhdGUuc2V0KCdtb250aCcsIG1vbnRoKTtcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIodGhpcy5jdXJyZW50RGF0ZSk7XG4gICAgdGhpcy5tb2RlID0gUWRDYWxlbmRhck1vZGUuRGVmYXVsdDtcbiAgfVxuXG4gIGNoYW5nZU1vZGUobnI6IFFkQ2FsZW5kYXJNb2RlKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlID0gbnI7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQ2FsZW5kYXIobW9tZW50T2JqOiBNb21lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlcyA9IHRoaXMuZmlsbERhdGVzKG1vbWVudE9iaik7XG4gICAgdGhpcy53ZWVrcyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IE1hdGguY2VpbChkYXRlcy5sZW5ndGggLyA3KSB9LCAoKSA9PiBkYXRlcy5zcGxpY2UoMCwgNykpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWxsRGF0ZXMobW9tZW50T2JqOiBNb21lbnQpOiBRZENhbGVuZGFyRGF5W10ge1xuICAgIGNvbnN0IGZpcnN0T2ZNb250aCA9IG1vbWVudChtb21lbnRPYmopLnN0YXJ0T2YoJ21vbnRoJykuZGF5KCk7XG4gICAgY29uc3QgbGFzdE9mTW9udGggPSBtb21lbnQobW9tZW50T2JqKS5lbmRPZignbW9udGgnKS5kYXkoKTtcbiAgICBjb25zdCBmaXJzdERheU9mR3JpZCA9IG1vbWVudChtb21lbnRPYmopXG4gICAgICAuc3RhcnRPZignbW9udGgnKVxuICAgICAgLnN1YnRyYWN0KGZpcnN0T2ZNb250aCA9PT0gMCA/IDYgOiBmaXJzdE9mTW9udGggLSAxLCAnZGF5cycpO1xuICAgIGNvbnN0IGxhc3REYXlPZkdyaWQgPSBtb21lbnQobW9tZW50T2JqKS5lbmRPZignbW9udGgnKS5zdWJ0cmFjdChsYXN0T2ZNb250aCwgJ2RheXMnKS5hZGQoNywgJ2RheXMnKTtcbiAgICBjb25zdCBzdGFydENhbGVuZGFyID0gZmlyc3REYXlPZkdyaWQuZGF0ZSgpO1xuXG4gICAgcmV0dXJuIHJhbmdlKHN0YXJ0Q2FsZW5kYXIsIHN0YXJ0Q2FsZW5kYXIgKyBsYXN0RGF5T2ZHcmlkLmRpZmYoZmlyc3REYXlPZkdyaWQsICdkYXlzJykpLm1hcChkYXRlID0+IHtcbiAgICAgIGNvbnN0IG5ld0RhdGUgPSBtb21lbnQoZmlyc3REYXlPZkdyaWQpLmRhdGUoZGF0ZSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZvcm1hdHRlZDogUWREYXRlQWRhcHRlci5mb3JtYXRUb0xvY2FsaXplZERhdGVTdHJpbmcobmV3RGF0ZSksXG4gICAgICAgIG1vbWVudDogbmV3RGF0ZSxcbiAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuaXNTZWxlY3RlZChuZXdEYXRlKSxcbiAgICAgICAgdG9kYXk6IHRoaXMuaXNUb2RheShuZXdEYXRlKSxcbiAgICAgICAgZGlzYWJsZWQ6IHRoaXMuaXNEaXNhYmxlZChuZXdEYXRlKVxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNUb2RheShtb21lbnRPYmo6IE1vbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRvZGF5RGF0ZS5pc1NhbWUobW9tZW50T2JqLCAnZGF5Jyk7XG4gIH1cblxuICBwcml2YXRlIHNldEN1cnJlbnREYXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnREYXRlOiBNb21lbnQgPSAodGhpcy5jdXJyZW50RGF0ZSA9IFFkRGF0ZUFkYXB0ZXIucGFyc2VUb01vbWVudCh0aGlzLnNlbGVjdGVkRGF0ZSk/LmlzVmFsaWQoKVxuICAgICAgPyBtb21lbnQodGhpcy5zZWxlY3RlZERhdGUsICdMJywgJ2RlJylcbiAgICAgIDogdGhpcy50b2RheURhdGUpO1xuXG4gICAgdGhpcy5jdXJyZW50RGF0ZSA9IGN1cnJlbnREYXRlO1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gUWREYXRlQWRhcHRlci5mb3JtYXRUb0xvY2FsaXplZERhdGVTdHJpbmcoY3VycmVudERhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRZZWFycyh5ZWFyOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gICAgY29uc3QgeWVhcnNCZWZvcmUgPSBZZWFyc0JlZm9yZTtcbiAgICBjb25zdCB5ZWFyc0FmdGVyID0gWWVhcnNBZnRlcjtcbiAgICBjb25zdCByZXN1bHQ6IG51bWJlcltdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0geWVhciAtIHllYXJzQmVmb3JlOyBpIDw9IHllYXIgKyB5ZWFyc0FmdGVyOyBpKyspIHtcbiAgICAgIHJlc3VsdC5wdXNoKGkpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGlzRGlzYWJsZWQoZGF0ZTogTW9tZW50KTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkRGF0ZXMpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZERhdGVzLnNvbWUoZGlzYWJsZWREYXRlID0+IHtcbiAgICAgIGxldCBmcm9tRGF0ZSA9IG1vbWVudChkaXNhYmxlZERhdGUuZnJvbSk7XG4gICAgICBsZXQgdG9EYXRlID0gbW9tZW50KGRpc2FibGVkRGF0ZS50byk7XG4gICAgICBpZiAoIWRpc2FibGVkRGF0ZS5mcm9tKSBmcm9tRGF0ZSA9IG1vbWVudCgnMTkwMC0wMS0wMVQwMDowMDowMC4wMDBaJyk7XG4gICAgICBpZiAoIWRpc2FibGVkRGF0ZS50bykgdG9EYXRlID0gbW9tZW50KCcyMTAwLTAxLTAxVDAwOjAwOjAwLjAwMFonKTtcblxuICAgICAgcmV0dXJuIGRhdGUuaXNBZnRlcihmcm9tRGF0ZSwgJ2RheScpICYmIGRhdGUuaXNCZWZvcmUodG9EYXRlLCAnZGF5Jyk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJuYXZcIj5cbiAgPGJ1dHRvbiAoY2xpY2spPVwicHJldigpXCI+XG4gICAgPHFkLWljb24gaWNvbj1cImFycm93TGVmdFwiPjwvcWQtaWNvbj5cbiAgPC9idXR0b24+XG5cbiAgPG5nLWNvbnRhaW5lcj5cbiAgICA8c3BhblxuICAgICAgKm5nSWY9XCJtb2RlID09PSBRZENhbGVuZGFyTW9kZS5EZWZhdWx0XCJcbiAgICAgIGNsYXNzPVwiY3VycmVudC1tb250aC15ZWFyXCJcbiAgICAgIChjbGljayk9XCJjaGFuZ2VNb2RlKFFkQ2FsZW5kYXJNb2RlLlllYXJQaWNrZXIpXCJcbiAgICA+XG4gICAgICB7eyBjdXJyZW50RGF0ZS5sb2NhbGUobGFuZ3VhZ2UpLmZvcm1hdChcIk1NTU1cIikgfX0ge3sgY3VycmVudERhdGU/LmZvcm1hdChcIllZWVlcIikgfX1cbiAgICA8L3NwYW4+XG4gICAgPHNwYW5cbiAgICAgICpuZ0lmPVwibW9kZSA9PT0gUWRDYWxlbmRhck1vZGUuWWVhclBpY2tlclwiXG4gICAgICBjbGFzcz1cImN1cnJlbnQteWVhcnMtbGlzdFwiXG4gICAgICAoY2xpY2spPVwiY2hhbmdlTW9kZShRZENhbGVuZGFyTW9kZS5Nb250aFBpY2tlcilcIlxuICAgID5cbiAgICAgIHt7IHllYXJzWzBdIH19IC0ge3sgeWVhcnNbeWVhcnMubGVuZ3RoIC0gMV0gfX1cbiAgICA8L3NwYW4+XG4gICAgPHNwYW5cbiAgICAgICpuZ0lmPVwibW9kZSA9PT0gUWRDYWxlbmRhck1vZGUuTW9udGhQaWNrZXJcIlxuICAgICAgY2xhc3M9XCJjdXJyZW50LXllYXJcIlxuICAgICAgKGNsaWNrKT1cImNoYW5nZU1vZGUoUWRDYWxlbmRhck1vZGUuWWVhclBpY2tlcilcIlxuICAgID5cbiAgICAgIHt7IGN1cnJlbnREYXRlPy5mb3JtYXQoXCJZWVlZXCIpIH19XG4gICAgPC9zcGFuPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8YnV0dG9uIChjbGljayk9XCJuZXh0KClcIj5cbiAgICA8cWQtaWNvbiBpY29uPVwiYXJyb3dSaWdodFwiPjwvcWQtaWNvbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cblxuPHRhYmxlICpuZ0lmPVwibW9kZSA9PT0gUWRDYWxlbmRhck1vZGUuRGVmYXVsdFwiPlxuICA8dGhlYWQ+PC90aGVhZD5cbiAgPHRib2R5PlxuICAgIDx0cj5cbiAgICAgIDx0ZCBjbGFzcz1cIndlZWtkYXlcIiAqbmdGb3I9XCJsZXQgbmFtZSBvZiB3ZWVrZGF5c1wiPnt7IG5hbWUgfX08L3RkPlxuICAgIDwvdHI+XG4gICAgPHRyICpuZ0Zvcj1cImxldCB3ZWVrIG9mIHdlZWtzXCI+XG4gICAgICA8dGRcbiAgICAgICAgY2xhc3M9XCJkYXkge3sgZGF5Lm1vbWVudC5kYXRlKCkgfX1cIlxuICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIHdlZWtcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF0ZShkYXkpXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgIHRvZGF5OiBkYXkudG9kYXksXG4gICAgICAgICAgc2VsZWN0ZWQ6IGRheS5zZWxlY3RlZCxcbiAgICAgICAgICBoaWRkZW46ICFpc1NhbWVZZWFyTW9udGgoZGF5Lm1vbWVudCksXG4gICAgICAgICAgZGlzYWJsZWQ6IGRheS5kaXNhYmxlZFxuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAge3sgZGF5Lm1vbWVudC5kYXRlKCkgfX1cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgPC90Ym9keT5cbjwvdGFibGU+XG5cbjxkaXYgY2xhc3M9XCJjYWxlbmRhclwiICpuZ0lmPVwibW9kZSAhPT0gUWRDYWxlbmRhck1vZGUuRGVmYXVsdFwiPlxuICA8ZGl2IGNsYXNzPVwicGlja2VyXCIgKm5nSWY9XCJtb2RlID09PSBRZENhbGVuZGFyTW9kZS5ZZWFyUGlja2VyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbCB7eyB5ZWFyIH19XCIgKm5nRm9yPVwibGV0IHllYXIgb2YgeWVhcnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeVwiIChjbGljayk9XCJzZWxlY3RZZWFyKHllYXIpXCIgW25nQ2xhc3NdPVwieyBzZWxlY3RlZDogaXNTYW1lWWVhcih5ZWFyKSB9XCI+XG4gICAgICAgIHt7IHllYXIgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicGlja2VyXCIgKm5nSWY9XCJtb2RlID09PSBRZENhbGVuZGFyTW9kZS5Nb250aFBpY2tlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wge3sgbW9udGggfX1cIiAqbmdGb3I9XCJsZXQgbW9udGggb2YgbW9udGhzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZW50cnlcIiAoY2xpY2spPVwic2VsZWN0TW9udGgoaSlcIiBbbmdDbGFzc109XCJ7IHNlbGVjdGVkOiBpc1NhbWVNb250aChpKSwgbW9udGggfVwiPlxuICAgICAgICB7eyBtb250aCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL2Zvcm1zL2RhdGVwaWNrZXIvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL2Zvcm1zL2RhdGVwaWNrZXIvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxNQUFrQixNQUFNLFFBQVEsQ0FBQztBQUN4QyxPQUFPLEVBQWlCLGNBQWMsRUFBbUIsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFFeEQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQztBQVFyQixNQUFNLE9BQU8sbUJBQW1CO0lBQzlCOzs7O09BSUc7SUFFSCxZQUFZLENBQTZCO0lBRXpDOzs7O09BSUc7SUFFSCxRQUFRLENBQVM7SUFFakI7Ozs7O09BS0c7SUFFSCxhQUFhLENBQW9CO0lBRWpDOztPQUVHO0lBRUgsY0FBYyxHQUFHLElBQUksWUFBWSxFQUE4QixDQUFDO0lBRWhFLFdBQVcsQ0FBUztJQUNwQixTQUFTLENBQVM7SUFFbEIsUUFBUSxDQUFXO0lBQ25CLEtBQUssR0FBMkIsRUFBRSxDQUFDO0lBQ25DLE1BQU0sQ0FBVztJQUNqQixLQUFLLENBQVc7SUFFaEIsSUFBSSxHQUFtQixjQUFjLENBQUMsT0FBTyxD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LFNBQVM7K0JBQ0UsYUFBYSxtQkFHTix1QkFBdUIsQ0FBQyxNQUFNOzhCQVMvQyxZQUFZO3NCQURYLEtBQUs7Z0JBU04sUUFBUTtzQkFEUCxLQUFLO2dCQVVOLGFBQWE7c0JBRFosS0FBSztnQkFPTixjQUFjO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtc3RyaWN0LWlnbm9yZVxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHJhbmdlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQsIHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IFFkQ2FsZW5kYXJEYXksIFFkQ2FsZW5kYXJNb2RlLCBRZERpc2FibGVkRGF0ZXMgfSBmcm9tICcuLi8uLi9tb2RlbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IFFkRGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi9hZGFwdGVyL2RhdGUtYWRhcHRlcic7XG5cbmNvbnN0IFllYXJzQmVmb3JlID0gOTtcbmNvbnN0IFllYXJzQWZ0ZXIgPSAyO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxZC1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFFkQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGlzIHVzZWQgdG8gaGlnaGxpZ2h0IHRoZSBzZWxlY3RlZCBkYXRlIGluIHRoZSBjYWxlbmRhci4gSXQgc2hvdWxkIGJlIGluIHRoZSBmb3JtYXQgZm9yIGV4YW1wbGUgJ0RELk1NLllZWVknIG9yICdNTS9ERC9ZWVlZJyBkZXBlbmRpbmcgb24gdGhlIGxhbmd1YWdlIHVzZWQuXG4gICAqXG4gICAqIEBleGFtcGxlICcyMDIyLTEyLTI1J1xuICAgKi9cbiAgQElucHV0KClcbiAgc2VsZWN0ZWREYXRlOiBRZENhbGVuZGFyRGF5Wydmb3JtYXR0ZWQnXTtcblxuICAvKipcbiAgICogVGhpcyBwcm9wZXJ0eSBkZXRlcm1pbmVzIHRoZSBsYW5ndWFnZSB1c2VkIGZvciBkaXNwbGF5aW5nIHRoZSB3ZWVrZGF5cyBhbmQgZm9ybWF0dGluZyB0aGUgZGF0ZXMgaW4gdGhlIGNhbGVuZGFyLiBJdCBzaG91bGQgYmUgYSB2YWxpZCBsYW5ndWFnZSBjb2RlIHN1cHBvcnRlZCBieSB0aGUgbW9tZW50LmpzIGxpYnJhcnkuXG4gICAqXG4gICAqIEBleGFtcGxlICdkZSdcbiAgICovXG4gIEBJbnB1dCgpXG4gIGxhbmd1YWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoaXMgcHJvcGVydHkgZGlzYWJsZXMgdGhlIGdpdmVuIGRhdGUgcmFuZ2VzLlRoZSByYW5nZXMgaGF2ZSBhIFwiZnJvbVwiIGFuZCBcInRvXCIgZGF0ZS5cbiAgICogSWYgXCJmcm9tXCIgaXMgZW1wdHksIGl0IHdpbGwgc2V0IHRoZSBkZWZhdWx0IHZhbHVlIDE5MDBcbiAgICogSWYgXCJ0b1wiIGlzIGVtcHR5LCBpdCB3aWxsIGJlIHNldCB0byB0aGUgZGVmYXVsdCAyMTAwXG4gICAqXG4gICAqL1xuICBASW5wdXQoKVxuICBkaXNhYmxlZERhdGVzOiBRZERpc2FibGVkRGF0ZXNbXTtcblxuICAvKipcbiAgICogT3V0cHV0cyBhIHZhbHVlIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyBhIGRhdGUgaW4gdGhlIGNhbGVuZGFyLiBUaGUgbmV3bHkgc2VsZWN0ZWQgZGF0ZSBpcyBvdXRwdXQgYXMgYSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFFkQ2FsZW5kYXJEYXlbJ2Zvcm1hdHRlZCddPigpO1xuXG4gIGN1cnJlbnREYXRlOiBNb21lbnQ7XG4gIHRvZGF5RGF0ZTogTW9tZW50O1xuXG4gIHdlZWtkYXlzOiBzdHJpbmdbXTtcbiAgd2Vla3M6IEFycmF5PFFkQ2FsZW5kYXJEYXlbXT4gPSBbXTtcbiAgbW9udGhzOiBzdHJpbmdbXTtcbiAgeWVhcnM6IG51bWJlcltdO1xuXG4gIG1vZGU6IFFkQ2FsZW5kYXJNb2RlID0gUWRDYWxlbmRhck1vZGUuRGVmYXVsdDtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgUWRDYWxlbmRhck1vZGUgPSBRZENhbGVuZGFyTW9kZTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBtb21lbnQubG9jYWxlKHRoaXMubGFuZ3VhZ2UpO1xuXG4gICAgdGhpcy53ZWVrZGF5cyA9IG1vbWVudC53ZWVrZGF5c01pbih0cnVlKTtcbiAgICB0aGlzLnRvZGF5RGF0ZSA9IG1vbWVudCgpO1xuXG4gICAgdGhpcy5tb250aHMgPSBtb21lbnQubW9udGhzKCk7XG4gICAgdGhpcy55ZWFycyA9IHRoaXMuZ2V0WWVhcnMoXG4gICAgICAoUWREYXRlQWRhcHRlci5wYXJzZVRvTW9tZW50KHRoaXMuc2VsZWN0ZWREYXRlKT8uaXNWYWxpZCgpXG4gICAgICAgID8gbW9tZW50KHRoaXMuc2VsZWN0ZWREYXRlLCAnTCcsIHRoaXMubGFuZ3VhZ2UpXG4gICAgICAgIDogdGhpcy50b2RheURhdGVcbiAgICAgICkueWVhcigpXG4gICAgKTtcblxuICAgIHRoaXMuc2V0Q3VycmVudERhdGUoKTtcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIodGhpcy5jdXJyZW50RGF0ZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2xhbmd1YWdlJ10pIG1vbWVudC5sb2NhbGUodGhpcy5sYW5ndWFnZSk7XG4gICAgaWYgKGNoYW5nZXNbJ2Rpc2FibGVkRGF0ZXMnXSAmJiAhY2hhbmdlc1snZGlzYWJsZWREYXRlcyddLmlzRmlyc3RDaGFuZ2UoKSkgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKHRoaXMuY3VycmVudERhdGUpO1xuICB9XG5cbiAgaXNTYW1lWWVhck1vbnRoKGRheTogTW9tZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGRheS5pc1NhbWUodGhpcy5jdXJyZW50RGF0ZSwgJ21vbnRoJyk7XG4gIH1cblxuICBpc1NhbWVNb250aChtb250aCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnREYXRlLm1vbnRoKCkgPT09IG1vbnRoO1xuICB9XG5cbiAgaXNTYW1lWWVhcih5ZWFyOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gUWREYXRlQWRhcHRlci5wYXJzZVRvTW9tZW50KHRoaXMuc2VsZWN0ZWREYXRlKS55ZWFyKCkgPT09IHllYXI7XG4gIH1cblxuICBwcmV2KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vZGUgPT09IFFkQ2FsZW5kYXJNb2RlLkRlZmF1bHQpIHtcbiAgICAgIHRoaXMuY3VycmVudERhdGUuc3VidHJhY3QoMSwgJ21vbnRocycpO1xuICAgICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKHRoaXMuY3VycmVudERhdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSBRZENhbGVuZGFyTW9kZS5ZZWFyUGlja2VyKSB7XG4gICAgICB0aGlzLmN1cnJlbnREYXRlLnNldCgneWVhcicsIHRoaXMuY3VycmVudERhdGUueWVhcigpIC0gKFllYXJzQmVmb3JlICsgWWVhcnNBZnRlciArIDEpKTtcbiAgICAgIHRoaXMueWVhcnMgPSB0aGlzLmdldFllYXJzKHRoaXMuY3VycmVudERhdGUueWVhcigpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5zZXQoJ3llYXInLCB0aGlzLmN1cnJlbnREYXRlLnllYXIoKSAtIDEpO1xuICAgIH1cbiAgfVxuXG4gIG5leHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gUWRDYWxlbmRhck1vZGUuRGVmYXVsdCkge1xuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5hZGQoMSwgJ21vbnRocycpO1xuICAgICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKHRoaXMuY3VycmVudERhdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSBRZENhbGVuZGFyTW9kZS5ZZWFyUGlja2VyKSB7XG4gICAgICB0aGlzLmN1cnJlbnREYXRlLnNldCgneWVhcicsIHRoaXMuY3VycmVudERhdGUueWVhcigpICsgKFllYXJzQmVmb3JlICsgWWVhcnNBZnRlciArIDEpKTtcbiAgICAgIHRoaXMueWVhcnMgPSB0aGlzLmdldFllYXJzKHRoaXMuY3VycmVudERhdGUueWVhcigpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5zZXQoJ3llYXInLCB0aGlzLmN1cnJlbnREYXRlLnllYXIoKSArIDEpO1xuICAgIH1cbiAgfVxuXG4gIGlzU2VsZWN0ZWQobW9tZW50T2JqOiBNb21lbnQpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWREYXRlKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gUWREYXRlQWRhcHRlci5mb3JtYXRUb0xvY2FsaXplZERhdGVTdHJpbmcobW9tZW50T2JqKSA9PT0gdGhpcy5zZWxlY3RlZERhdGU7XG4gIH1cblxuICBzZWxlY3REYXRlKGRhdGU6IFFkQ2FsZW5kYXJEYXkgfCBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQoZGF0ZS5mb3JtYXR0ZWQpO1xuICB9XG5cbiAgc2VsZWN0WWVhcih5ZWFyOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnREYXRlLnNldCgneWVhcicsIHllYXIpO1xuICAgIHRoaXMubW9kZSA9IFFkQ2FsZW5kYXJNb2RlLk1vbnRoUGlja2VyO1xuICB9XG5cbiAgc2VsZWN0TW9udGgobW9udGg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudERhdGUuc2V0KCdtb250aCcsIG1vbnRoKTtcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIodGhpcy5jdXJyZW50RGF0ZSk7XG4gICAgdGhpcy5tb2RlID0gUWRDYWxlbmRhck1vZGUuRGVmYXVsdDtcbiAgfVxuXG4gIGNoYW5nZU1vZGUobnI6IFFkQ2FsZW5kYXJNb2RlKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlID0gbnI7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQ2FsZW5kYXIobW9tZW50T2JqOiBNb21lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlcyA9IHRoaXMuZmlsbERhdGVzKG1vbWVudE9iaik7XG4gICAgdGhpcy53ZWVrcyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IE1hdGguY2VpbChkYXRlcy5sZW5ndGggLyA3KSB9LCAoKSA9PiBkYXRlcy5zcGxpY2UoMCwgNykpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWxsRGF0ZXMobW9tZW50T2JqOiBNb21lbnQpOiBRZENhbGVuZGFyRGF5W10ge1xuICAgIGNvbnN0IGxhc3RPZk1vbnRoID0gbW9tZW50KG1vbWVudE9iaikuZW5kT2YoJ21vbnRoJykuZGF5KCk7XG4gICAgY29uc3QgZmlyc3REYXlPZkdyaWQgPSBtb21lbnQobW9tZW50T2JqKS5sb2NhbGUodGhpcy5sYW5ndWFnZSkuc3RhcnRPZignbW9udGgnKS5zdGFydE9mKCd3ZWVrJyk7XG4gICAgY29uc3QgbGFzdERheU9mR3JpZCA9IG1vbWVudChtb21lbnRPYmopLmVuZE9mKCdtb250aCcpLnN1YnRyYWN0KGxhc3RPZk1vbnRoLCAnZGF5cycpLmFkZCg3LCAnZGF5cycpO1xuICAgIGNvbnN0IHN0YXJ0Q2FsZW5kYXIgPSBmaXJzdERheU9mR3JpZC5kYXRlKCk7XG5cbiAgICByZXR1cm4gcmFuZ2Uoc3RhcnRDYWxlbmRhciwgc3RhcnRDYWxlbmRhciArIGxhc3REYXlPZkdyaWQuZGlmZihmaXJzdERheU9mR3JpZCwgJ2RheXMnKSkubWFwKGRhdGUgPT4ge1xuICAgICAgY29uc3QgbmV3RGF0ZSA9IG1vbWVudChmaXJzdERheU9mR3JpZCkuZGF0ZShkYXRlKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZm9ybWF0dGVkOiBRZERhdGVBZGFwdGVyLmZvcm1hdFRvTG9jYWxpemVkRGF0ZVN0cmluZyhuZXdEYXRlKSxcbiAgICAgICAgbW9tZW50OiBuZXdEYXRlLFxuICAgICAgICBzZWxlY3RlZDogdGhpcy5pc1NlbGVjdGVkKG5ld0RhdGUpLFxuICAgICAgICB0b2RheTogdGhpcy5pc1RvZGF5KG5ld0RhdGUpLFxuICAgICAgICBkaXNhYmxlZDogdGhpcy5pc0Rpc2FibGVkKG5ld0RhdGUpXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1RvZGF5KG1vbWVudE9iajogTW9tZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9kYXlEYXRlLmlzU2FtZShtb21lbnRPYmosICdkYXknKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q3VycmVudERhdGUoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudERhdGU6IE1vbWVudCA9ICh0aGlzLmN1cnJlbnREYXRlID0gUWREYXRlQWRhcHRlci5wYXJzZVRvTW9tZW50KHRoaXMuc2VsZWN0ZWREYXRlKT8uaXNWYWxpZCgpXG4gICAgICA/IG1vbWVudCh0aGlzLnNlbGVjdGVkRGF0ZSwgJ0wnLCAnZGUnKVxuICAgICAgOiB0aGlzLnRvZGF5RGF0ZSk7XG5cbiAgICB0aGlzLmN1cnJlbnREYXRlID0gY3VycmVudERhdGU7XG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBRZERhdGVBZGFwdGVyLmZvcm1hdFRvTG9jYWxpemVkRGF0ZVN0cmluZyhjdXJyZW50RGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldFllYXJzKHllYXI6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICBjb25zdCB5ZWFyc0JlZm9yZSA9IFllYXJzQmVmb3JlO1xuICAgIGNvbnN0IHllYXJzQWZ0ZXIgPSBZZWFyc0FmdGVyO1xuICAgIGNvbnN0IHJlc3VsdDogbnVtYmVyW10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSB5ZWFyIC0geWVhcnNCZWZvcmU7IGkgPD0geWVhciArIHllYXJzQWZ0ZXI7IGkrKykge1xuICAgICAgcmVzdWx0LnB1c2goaSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgaXNEaXNhYmxlZChkYXRlOiBNb21lbnQpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWREYXRlcykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVkRGF0ZXMuc29tZShkaXNhYmxlZERhdGUgPT4ge1xuICAgICAgbGV0IGZyb21EYXRlID0gbW9tZW50KGRpc2FibGVkRGF0ZS5mcm9tKTtcbiAgICAgIGxldCB0b0RhdGUgPSBtb21lbnQoZGlzYWJsZWREYXRlLnRvKTtcbiAgICAgIGlmICghZGlzYWJsZWREYXRlLmZyb20pIGZyb21EYXRlID0gbW9tZW50KCcxOTAwLTAxLTAxVDAwOjAwOjAwLjAwMFonKTtcbiAgICAgIGlmICghZGlzYWJsZWREYXRlLnRvKSB0b0RhdGUgPSBtb21lbnQoJzIxMDAtMDEtMDFUMDA6MDA6MDAuMDAwWicpO1xuXG4gICAgICByZXR1cm4gZGF0ZS5pc0FmdGVyKGZyb21EYXRlLCAnZGF5JykgJiYgZGF0ZS5pc0JlZm9yZSh0b0RhdGUsICdkYXknKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm5hdlwiPlxuICA8YnV0dG9uIChjbGljayk9XCJwcmV2KClcIj5cbiAgICA8cWQtaWNvbiBpY29uPVwiYXJyb3dMZWZ0XCI+PC9xZC1pY29uPlxuICA8L2J1dHRvbj5cblxuICA8bmctY29udGFpbmVyPlxuICAgIDxzcGFuXG4gICAgICAqbmdJZj1cIm1vZGUgPT09IFFkQ2FsZW5kYXJNb2RlLkRlZmF1bHRcIlxuICAgICAgY2xhc3M9XCJjdXJyZW50LW1vbnRoLXllYXJcIlxuICAgICAgKGNsaWNrKT1cImNoYW5nZU1vZGUoUWRDYWxlbmRhck1vZGUuWWVhclBpY2tlcilcIlxuICAgID5cbiAgICAgIHt7IGN1cnJlbnREYXRlLmxvY2FsZShsYW5ndWFnZSkuZm9ybWF0KFwiTU1NTVwiKSB9fSB7eyBjdXJyZW50RGF0ZT8uZm9ybWF0KFwiWVlZWVwiKSB9fVxuICAgIDwvc3Bhbj5cbiAgICA8c3BhblxuICAgICAgKm5nSWY9XCJtb2RlID09PSBRZENhbGVuZGFyTW9kZS5ZZWFyUGlja2VyXCJcbiAgICAgIGNsYXNzPVwiY3VycmVudC15ZWFycy1saXN0XCJcbiAgICAgIChjbGljayk9XCJjaGFuZ2VNb2RlKFFkQ2FsZW5kYXJNb2RlLk1vbnRoUGlja2VyKVwiXG4gICAgPlxuICAgICAge3sgeWVhcnNbMF0gfX0gLSB7eyB5ZWFyc1t5ZWFycy5sZW5ndGggLSAxXSB9fVxuICAgIDwvc3Bhbj5cbiAgICA8c3BhblxuICAgICAgKm5nSWY9XCJtb2RlID09PSBRZENhbGVuZGFyTW9kZS5Nb250aFBpY2tlclwiXG4gICAgICBjbGFzcz1cImN1cnJlbnQteWVhclwiXG4gICAgICAoY2xpY2spPVwiY2hhbmdlTW9kZShRZENhbGVuZGFyTW9kZS5ZZWFyUGlja2VyKVwiXG4gICAgPlxuICAgICAge3sgY3VycmVudERhdGU/LmZvcm1hdChcIllZWVlcIikgfX1cbiAgICA8L3NwYW4+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxidXR0b24gKGNsaWNrKT1cIm5leHQoKVwiPlxuICAgIDxxZC1pY29uIGljb249XCJhcnJvd1JpZ2h0XCI+PC9xZC1pY29uPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuXG48dGFibGUgKm5nSWY9XCJtb2RlID09PSBRZENhbGVuZGFyTW9kZS5EZWZhdWx0XCI+XG4gIDx0aGVhZD48L3RoZWFkPlxuICA8dGJvZHk+XG4gICAgPHRyPlxuICAgICAgPHRkIGNsYXNzPVwid2Vla2RheVwiICpuZ0Zvcj1cImxldCBuYW1lIG9mIHdlZWtkYXlzXCI+e3sgbmFtZSB9fTwvdGQ+XG4gICAgPC90cj5cbiAgICA8dHIgKm5nRm9yPVwibGV0IHdlZWsgb2Ygd2Vla3NcIj5cbiAgICAgIDx0ZFxuICAgICAgICBjbGFzcz1cImRheSB7eyBkYXkubW9tZW50LmRhdGUoKSB9fVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2Ygd2Vla1wiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3REYXRlKGRheSlcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgdG9kYXk6IGRheS50b2RheSxcbiAgICAgICAgICBzZWxlY3RlZDogZGF5LnNlbGVjdGVkLFxuICAgICAgICAgIGhpZGRlbjogIWlzU2FtZVllYXJNb250aChkYXkubW9tZW50KSxcbiAgICAgICAgICBkaXNhYmxlZDogZGF5LmRpc2FibGVkXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICB7eyBkYXkubW9tZW50LmRhdGUoKSB9fVxuICAgICAgPC90ZD5cbiAgICA8L3RyPlxuICA8L3Rib2R5PlxuPC90YWJsZT5cblxuPGRpdiBjbGFzcz1cImNhbGVuZGFyXCIgKm5nSWY9XCJtb2RlICE9PSBRZENhbGVuZGFyTW9kZS5EZWZhdWx0XCI+XG4gIDxkaXYgY2xhc3M9XCJwaWNrZXJcIiAqbmdJZj1cIm1vZGUgPT09IFFkQ2FsZW5kYXJNb2RlLlllYXJQaWNrZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sIHt7IHllYXIgfX1cIiAqbmdGb3I9XCJsZXQgeWVhciBvZiB5ZWFyc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImVudHJ5XCIgKGNsaWNrKT1cInNlbGVjdFllYXIoeWVhcilcIiBbbmdDbGFzc109XCJ7IHNlbGVjdGVkOiBpc1NhbWVZZWFyKHllYXIpIH1cIj5cbiAgICAgICAge3sgeWVhciB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJwaWNrZXJcIiAqbmdJZj1cIm1vZGUgPT09IFFkQ2FsZW5kYXJNb2RlLk1vbnRoUGlja2VyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbCB7eyBtb250aCB9fVwiICpuZ0Zvcj1cImxldCBtb250aCBvZiBtb250aHM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeVwiIChjbGljayk9XCJzZWxlY3RNb250aChpKVwiIFtuZ0NsYXNzXT1cInsgc2VsZWN0ZWQ6IGlzU2FtZU1vbnRoKGkpLCBtb250aCB9XCI+XG4gICAgICAgIHt7IG1vbnRoIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -397,13 +397,13 @@ export class QdMultiInputComponent {
397
397
  return this.optionsListForView.findIndex(option => this.getTranslation(option) === optionName);
398
398
  }
399
399
  addItem(option) {
400
+ this.filterOptions = '';
400
401
  if (this.formArray) {
401
402
  this.formArray.push(option.value);
402
403
  this.formArray.markAsTouched();
403
404
  return;
404
405
  }
405
406
  this.multiInputService.addSelectedItem(option);
406
- this.filterOptions = '';
407
407
  this.changeValue();
408
408
  this.writeValue(this.multiInputService.getItemValues());
409
409
  }
@@ -537,4 +537,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
537
537
  type: HostListener,
538
538
  args: ['document:click', ['$event']]
539
539
  }] } });
540
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL2Zvcm1zL211bHRpLWlucHV0L211bHRpLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9mb3Jtcy9tdWx0aS1pbnB1dC9tdWx0aS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLElBQUksRUFDSixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFLTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxRQUFRLEVBQ1IsU0FBUyxFQUNULFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZ0JBQWdCLEVBR2hCLGlCQUFpQixFQUVsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sT0FBTyxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHbEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ2xHLE9BQU8sRUFDTCxXQUFXLEVBQ1gsYUFBYSxFQUNiLFFBQVEsRUFDUixvQkFBb0IsRUFDcEIsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2xCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0s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QTJCOztzQkFDdkMsV0FBVzt1QkFBQyxtQ0FBbUM7Z0JBTWhELFFBQVE7c0JBSFAsV0FBVzt1QkFBQyx3QkFBd0I7O3NCQUNwQyxXQUFXO3VCQUFDLCtCQUErQjs7c0JBQzNDLFdBQVc7dUJBQUMsb0NBQW9DO2dCQUlqRCxRQUFRO3NCQURQLFdBQVc7dUJBQUMsNEJBQTRCO2dCQUtyQyxRQUFRO3NCQUZYLFdBQVc7dUJBQUMscUJBQXFCOztzQkFDakMsV0FBVzt1QkFBQyw0QkFBNEI7Z0JBS0csWUFBWTtzQkFBdkQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1zdHJpY3QtaWdub3JlXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0LFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgTmdJdGVyYWJsZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTa2lwU2VsZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW5cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sQ29udGFpbmVyLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUNvbnRyb2wsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBVbnR5cGVkRm9ybUNvbnRyb2xcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XG5cbmltcG9ydCB7IFFkRm9ybU11bHRpSW5wdXRDb25maWd1cmF0aW9uLCBRZE11bHRpSW5wdXRPcHRpb24gfSBmcm9tICcuLi9tb2RlbC9mb3Jtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUWRGb3JtQXJyYXkgfSBmcm9tICcuLi9yZWFjdGl2ZS1mb3Jtcy9jb250cm9scy9mb3JtLWFycmF5JztcbmltcG9ydCB7IFFkRm9ybUFycmF5RmFjdG9yeVNlcnZpY2UgfSBmcm9tICcuLi9yZWFjdGl2ZS1mb3Jtcy9jb250cm9scy9mb3JtLWFycmF5LWZhY3Rvcnkuc2VydmljZSc7XG5pbXBvcnQge1xuICBnZXREaXNhYmxlZCxcbiAgZ2V0SGludEFjdGlvbixcbiAgZ2V0TGFiZWwsXG4gIGdldE11bHRpSW5wdXRPcHRpb25zLFxuICBnZXRSZWFkb25seSxcbiAgZ2V0UmVhZG9ubHlBY3Rpb24sXG4gIGdldFZpZXdvbmx5LFxuICBnZXRWaWV3b25seUFjdGlvblxufSBmcm9tICcuLi9zaGFyZWQvaGVscGVycy9mb3Jtcy5oZWxwZXJzJztcbmltcG9ydCB7IFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9hY3Rpb24tZW1pdHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkTXVsdGlJbnB1dFNlcnZpY2UgfSBmcm9tICcuL211bHRpLWlucHV0LXNlcnZpY2UvbXVsdGktaW5wdXQuc2VydmljZSc7XG5pbXBvcnQgeyBRZFBvcG92ZXJPbkNsaWNrRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vY29yZS9wb3BvdmVyL3BvcG92ZXItb24tY2xpY2svcG9wb3Zlci1vbi1jbGljay5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUWRNdWx0aUlucHV0TWVudUNvbXBvbmVudCB9IGZyb20gJy4vbXVsdGktaW5wdXQtbWVudS9tdWx0aS1pbnB1dC1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBRZEV2ZW50QnJva2VyU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvZXZlbnQtYnJva2VyLnNlcnZpY2UnO1xuXG4vKipcbiAqIFRoZSAqKlFkTXVsdGlJbnB1dCoqIGlzIGEgY29tcG9uZW50IHRoYXQgcHJvdmlkZXMgYSB1c2VyIGludGVyZmFjZSBmb3IgZW50ZXJpbmcgbXVsdGlwbGUgaW5wdXRzLjxiciAvPlxuICogSXQgaXMgZGVzaWduZWQgdG8gZW5oYW5jZSB0aGUgdXNlciBleHBlcmllbmNlIHdoZW4gZGVhbGluZyB3aXRoIG11bHRpcGxlIGlucHV0cyBhbmQgY2FuIGJlIHVzZWQgd2l0aCBRdWFkcmVsIFJlYWN0aXZlIEZvcm1zIG9yIHdpdGggbW9kZWwgYmluZGluZy5cbiAqXG4gKiAjIyMjKipVc2FnZSB3aXRoIFJlYWN0aXZlIEZvcm1zKipcbiAqXG4gKiBgYGB0c1xuICogZm9ybSA9IG5ldyBRZEZvcm1Hcm91cCh7XG4gKiAgIG11bHRpSW5wdXQ6IG5ldyBRZEZvcm1BcnJheSgpXG4gKiB9KTtcbiAqIGBgYFxuICogYGBgaHRtbFxuICogPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gKiAgIDxxZC1tdWx0aS1pbnB1dCBbZm9ybUFycmF5TmFtZV09XCJtdWx0aUlucHV0XCIgW2NvbmZpZ109XCJjb25maWdcIj48L3FkLW11bHRpLWlucHV0PlxuICogPC9mb3JtPlxuICogYGBgXG4gKlxuICogIyMjIyoqVXNhZ2Ugd2l0aCBNb2RlbCBCaW5kaW5nKipcbiAqIGBgYHRzXG4gKiB2YWx1ZXM7XG4gKiBgYGBcbiAqIGBgYGh0bWxcbiAqIDxxZC1tdWx0aS1pbnB1dCBbKHZhbHVlcyldPVwidmFsdWVzXCIgW2NvbmZpZ109XCJjb25maWdcIj48L3FkLW11bHRpLWlucHV0PlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3FkLW11bHRpLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbXVsdGktaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogUWRNdWx0aUlucHV0Q29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIFFkTXVsdGlJbnB1dFNlcnZpY2UsXG4gICAgUWRGb3Jtc0FjdGlvbkVtaXR0ZXJTZXJ2aWNlXG4gIF0sXG4gIGhvc3Q6IHsgY2xhc3M6ICdxZC1tdWx0aS1pbnB1dCcgfSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUWRNdWx0aUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBIZXJlIGFuIGlkIGNhbiBiZSBhc3NpZ25lZCwgd2l0aCB3aGljaCBhIHZhbHVlIGNhbiBiZSBsaW5rZWQgdG8gYSBjb3JyZXNwb25kaW5nIGxhYmVsLlxuICAgKi9cbiAgQElucHV0KCkgaWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGZvcm0gaXRlbSB2YWx1ZXMsIGlmIHlvdSBhcmUgd29ya2luZyB3aXRoIE1vZGVsIEJpbmRpbmcuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIDxxZC1tdWx0aS1pbnB1dCBbKHZhbHVlcyldPVwidmFsdWVzXCIgW2NvbmZpZ109XCJjb25maWdcIj48L3FkLW11bHRpLWlucHV0PlxuICAgKi9cbiAgQElucHV0KCkgc2V0IHZhbHVlcyh2YWx1ZXM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fdmFsdWVzID0gdmFsdWVzO1xuICB9XG5cbiAgZ2V0IHZhbHVlcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlcztcbiAgfVxuXG4gIC8qKlxuICAgKiAqIEBkZXByZWNhdGVkXG4gICAqIFRPRE8gcmVtb3ZlIGxvZ2ljIGZvciBzdXBwb3J0IG9mIFtmb3JtQ29udHJvbE5hbWVdIGRpcmVjdGl2ZSBhbmQgRm9ybUNvbnRyb2wgd2l0aCBhbmd1bGFyIDE0IHVwZGF0ZVxuICAgKi9cbiAgQElucHV0KCkgc2V0IGZvcm1Db250cm9sTmFtZShmb3JtQ29udHJvbE5hbWU6IHN0cmluZykge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgICdRRC1VSSB8IFFkTXVsdGlJbnB1dENvbXBvbmVudCAtIFBsZWFzZSB1c2UgdGhlIE11bHRpSW5wdXQgd2l0aCB0aGUgUWRGb3JtQXJyYXkgZm9ybSBjb250cm9sIGFuZCB0aGUgW2Zvcm1BcnJheU5hbWVdIGRpcmVjdGl2ZSEnXG4gICAgKTtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE5hbWUgPSBmb3JtQ29udHJvbE5hbWU7XG4gIH1cblxuICBnZXQgZm9ybUNvbnRyb2xOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1Db250cm9sTmFtZTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBmb3JtQXJyYXlOYW1lKGZvcm1BcnJheU5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuX2Zvcm1BcnJheU5hbWUgPSBmb3JtQXJyYXlOYW1lO1xuICB9XG5cbiAgZ2V0IGZvcm1BcnJheU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybUFycmF5TmFtZSB8fCB0aGlzLmZvcm1Db250cm9sTmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBmb3JtIGl0ZW1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICoge1xuICAgKiAgIGxhYmVsOiB7IGkxOG46ICdteS1sYWJlbCcgfSxcbiAgICogICBoaW50OiB7IGkxOG46ICdteS1oaW50JyB9LFxuICAgKiAgIG9wdGlvbnM6IFtcbiAgICogICAgIHsgaTE4bjogJ2kxOG4ucWQuZXhhbXBsZUZvcm1GaWVsZC5nb29kc0RlY2xhcmF0aW9uLmltcG9ydCcsIHZhbHVlOiAnaW1wb3J0JyB9LFxuICAgKiAgICAgeyBpMThuOiAnaTE4bi5xZC5leGFtcGxlRm9ybUZpZWxkLmdvb2RzRGVjbGFyYXRpb24uZXhwb3J0JywgdmFsdWU6ICdleHBvcnQnIH0sXG4gICAqICAgICB7IGkxOG46ICdpMThuLnFkLmV4YW1wbGVGb3JtRmllbGQuZ29vZHNEZWNsYXJhdGlvbi50cmFuc2l0JywgdmFsdWU6ICd0cmFuc2l0JyB9XG4gICAqICAgXVxuICAgKiB9O1xuICAgKi9cbiAgQElucHV0KCkgY29uZmlnOiBRZEZvcm1NdWx0aUlucHV0Q29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogQSBzdGF0aWMgdGVzdCBJRCBmb3IgaW50ZWdyYXRpb24gdGVzdHMgY2FuIGJlIHNldC4gPGJyIC8+XG4gICAqIFRoZSB2YWx1ZSBmb3IgdGhlIEhUTUwgYXR0cmlidXRlIFtkYXRhLXRlc3QtaWRdLlxuICAgKi9cbiAgQElucHV0KCdkYXRhLXRlc3QtaWQnKSB0ZXN0SWQgPSAnbXVsdGktaW5wdXQnO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBldmVudCB3aGVuIHRoZSB2YWx1ZXMgY2hhbmdlLiBSZXR1cm4gdmFsdWVzIG1hdGNoIHRoZSBjdXJyZW50IHZhbHVlcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSB2YWx1ZXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBldmVudCB3aGVuIHRoZSBoaW50IGlzIGNsaWNrZWQvdGFwcGVkLiBgaGludEFjdGlvbmAgbXVzdCBiZSBzZXQgdG8gYHRydWVgIGZvciB0aGlzLlxuICAgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGNsaWNrSGludCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiBhIHJlYWRvbmx5IHZhbHVlIGlzIGNsaWNrZWQvdGFwcGVkLiBgY2xpY2tSZWFkb25seSBgIG11c3QgYmUgc2V0IHRvIGB0cnVlYCBmb3IgdGhpcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja1JlYWRvbmx5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBldmVudCB3aGVuIGEgdmlld29ubHkgdmFsdWUgaXMgY2xpY2tlZC90YXBwZWQuIGBjbGlja1ZpZXdvbmx5IGAgbXVzdCBiZSBzZXQgdG8gYHRydWVgIGZvciB0aGlzLlxuICAgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGNsaWNrVmlld29ubHkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dEZpZWxkOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKGZvcndhcmRSZWYoKCkgPT4gUWRNdWx0aUlucHV0TWVudUNvbXBvbmVudCkpIG11bHRpSW5wdXRNZW51OiBRZE11bHRpSW5wdXRNZW51Q29tcG9uZW50O1xuICBAVmlld0NoaWxkKFFkUG9wb3Zlck9uQ2xpY2tEaXJlY3RpdmUpIHBvcG92ZXJPbkNsaWNrRGlyZWN0aXZlOiBRZFBvcG92ZXJPbkNsaWNrRGlyZWN0aXZlO1xuICBAVmlld0NoaWxkcmVuKCdlcnJvclRvb2x0aXBzJykgZXJyb3JUb29sdGlwczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuICBAVmlld0NoaWxkcmVuKCdkcm9wZG93bk9wdGlvbicpIGRyb3Bkb3duT3B0aW9uczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtbXVsdGktaW5wdXQtcmVhZG9ubHknKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLW11bHRpLWlucHV0LWNoaXAtcmVhZG9ubHknKVxuICByZWFkb25seSA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtbXVsdGktaW5wdXQtLXJlYWRvbmx5LWFjdGlvbicpXG4gIHJlYWRvbmx5QWN0aW9uID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1tdWx0aS1pbnB1dC12aWV3b25seScpXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtbXVsdGktaW5wdXQtY2hpcC12aWV3b25seScpXG4gIHZpZXdvbmx5ID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1tdWx0aS1pbnB1dC0tdmlld29ubHktYWN0aW9uJylcbiAgdmlld29ubHlBY3Rpb24gPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWZvcm0taGludC1hY3Rpb24nKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLW11bHRpLWlucHV0LS1oaW50LWFjdGlvbicpXG4gIGhpbnRBY3Rpb24gPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWZvcm0tZGlzYWJsZWQnKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLW11bHRpLWlucHV0LWRpc2FibGVkJylcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1tdWx0aS1pbnB1dC1jaGlwLWRpc2FibGVkJylcbiAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLW11bHRpLWlucHV0LWZvY3VzJylcbiAgaGFzRm9jdXMgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWZvcm0tZXJyb3InKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLW11bHRpLWlucHV0LWVycm9yJylcbiAgZ2V0IGhhc0Vycm9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZvcm1BcnJheSA/IHRoaXMuZm9ybUFycmF5LnRvdWNoZWQgJiYgdGhpcy5mb3JtQXJyYXkuaW52YWxpZCA6IGZhbHNlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKSBjbGlja091dHNpZGUoJGV2ZW50KTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdHlwZW9mICRldmVudC50YXJnZXQuY2xhc3NOYW1lID09PSAnc3RyaW5nJyAmJlxuICAgICAgISRldmVudC50YXJnZXQuY2xhc3NOYW1lLmluY2x1ZGVzKCdxZC1tdWx0aS1pbnB1dCcpICYmXG4gICAgICB0aGlzLm9wZW5cbiAgICApIHtcbiAgICAgIHRoaXMuX29uVG91Y2goKTtcbiAgICAgIGlmICgkZXZlbnQ/LnBvaW50ZXJJZCAhPT0gLTEpIHRoaXMuY2xvc2VQb3BvdmVyKCk7XG4gICAgfVxuICB9XG5cbiAgbGFiZWw6IHN0cmluZztcbiAgb3B0aW9uczogUWRNdWx0aUlucHV0T3B0aW9uW107XG4gIG9wZW4gPSBmYWxzZTtcbiAgb3B0aW9uc0xpc3RGb3JWaWV3OiBRZE11bHRpSW5wdXRPcHRpb25bXTtcbiAgZmlsdGVyT3B0aW9uczogc3RyaW5nO1xuICBmb3JtQXJyYXk6IFFkRm9ybUFycmF5PHN0cmluZz47XG5cbiAgcHJpdmF0ZSBfdmFsdWVzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSBfZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgX2Zvcm1BcnJheU5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBfb25EaXNhYmxlZENoYW5nZTtcbiAgcHJpdmF0ZSBfc3VicyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuICBwcml2YXRlIF9vbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gIHByaXZhdGUgX29uVG91Y2g6IGFueSA9ICgpID0+IHt9O1xuXG4gIGdldCBoYXNIaW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5oaW50ICYmIHRoaXMuY29uZmlnLmhpbnQuaTE4biAmJiAhdGhpcy5jb25maWcuaGludC5kaXNhYmxlZDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaG9zdFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBtdWx0aUlucHV0U2VydmljZTogUWRNdWx0aUlucHV0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbkVtaXR0ZXJTZXJ2aWNlOiBRZEZvcm1zQWN0aW9uRW1pdHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBxZEZvcm1BcnJheUZhY3RvcnlTZXJ2aWNlOiBRZEZvcm1BcnJheUZhY3RvcnlTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBIb3N0KCkgQFNraXBTZWxmKCkgcHJpdmF0ZSByZWFkb25seSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRCcm9rZXJTZXJ2aWNlOiBRZEV2ZW50QnJva2VyU2VydmljZVxuICApIHtcbiAgICBpZiAoIXRoaXMuaWQpIHRoaXMuaWQgPSB1dWlkKCk7XG5cbiAgICB0aGlzLm11bHRpSW5wdXRTZXJ2aWNlLm9wdGlvbnNMaXN0Rm9yVmlldyQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKGxpc3QgPT4ge1xuICAgICAgdGhpcy5vcHRpb25zTGlzdEZvclZpZXcgPSBsaXN0O1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVDb25maWd1cmF0aW9uKCk7XG5cbiAgICB0aGlzLm11bHRpSW5wdXRTZXJ2aWNlLnNldE9wdGlvbnNMaXN0KHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy5tdWx0aUlucHV0U2VydmljZS5zZXRTZWxlY3RlZEl0ZW1zKHRoaXMudmFsdWVzKTtcblxuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuYWN0aW9uRW1pdHRlclNlcnZpY2UuaGludEV2ZW50RW1pdHRlciQuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xpY2tIaW50LmVtaXQoKSkpO1xuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuYWN0aW9uRW1pdHRlclNlcnZpY2UucmVhZG9ubHlFdmVudEVtaXR0ZXIkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsaWNrUmVhZG9ubHkuZW1pdCgpKSk7XG4gICAgdGhpcy5fc3Vicy5hZGQodGhpcy5hY3Rpb25FbWl0dGVyU2VydmljZS52aWV3b25seUV2ZW50RW1pdHRlciQuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xpY2tWaWV3b25seS5lbWl0KCkpKTtcbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmluaXRPcE1vZGVTdWJzY3JpcHRpb24oKSk7XG5cbiAgICBpZiAoIXRoaXMuY29udHJvbENvbnRhaW5lcikgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuZm9ybUFycmF5TmFtZSkge1xuICAgICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5jb250cm9sQ29udGFpbmVyLmNvbnRyb2wuZ2V0KHRoaXMuZm9ybUFycmF5TmFtZSk7XG5cbiAgICAgIC8vIFVwZGF0aW5nIGZvcm0gYXJyYXkgcHJvZ3JhbW1hdGljYWxseSBmcm9tIG91dHNpZGVcbiAgICAgIHRoaXMuX3N1YnMuYWRkKFxuICAgICAgICBmb3JtQXJyYXkudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5tdWx0aUlucHV0U2VydmljZS5zZXRTZWxlY3RlZEl0ZW1zKHRoaXMuZm9ybUFycmF5LnZhbHVlKTtcbiAgICAgICAgICB0aGlzLnZhbHVlc0NoYW5nZS5lbWl0KHRoaXMuZm9ybUFycmF5LnZhbHVlKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAgIGlmIChmb3JtQXJyYXkgaW5zdGFuY2VvZiBRZEZvcm1BcnJheSkge1xuICAgICAgICB0aGlzLmZvcm1BcnJheSA9IGZvcm1BcnJheTtcbiAgICAgICAgdGhpcy5tdWx0aUlucHV0U2VydmljZS5zZXRTZWxlY3RlZEl0ZW1zKHRoaXMuZm9ybUFycmF5LnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFRPRE8gcmVtb3ZlIGxvZ2ljIGZvciBzdXBwb3J0IG9mIEFuZ3VsYXIgRm9ybUNvbnRyb2wgd2l0aCBhbmd1bGFyIDE5IHVwZGF0ZVxuICAgICAgICB0aGlzLmZvcm1BcnJheSA9IHRoaXMucWRGb3JtQXJyYXlGYWN0b3J5U2VydmljZS5jcmVhdGVRZEZvcm1BcnJheUZyb21Gb3JtQ29udHJvbChcbiAgICAgICAgICBmb3JtQXJyYXkgYXMgVW50eXBlZEZvcm1Db250cm9sXG4gICAgICAgICk7XG4gICAgICAgIGNvbnNvbGUud2FybignUUQtVUkgfCBRZE11bHRpSW5wdXRDb21wb25lbnQgLSBQbGVhc2UgdXNlIHRoZSBNdWx0aUlucHV0IHdpdGggdGhlIFFkRm9ybUFycmF5IGZvcm0gY29udHJvbCEnKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGlzYWJsZWQgPSBmb3JtQXJyYXkuZGlzYWJsZWQ7XG4gICAgICB0aGlzLl9vbkRpc2FibGVkQ2hhbmdlID0gKGRpc2FibGVkKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICAgIH07XG4gICAgICB0aGlzLmZvcm1BcnJheS5yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UodGhpcy5fb25EaXNhYmxlZENoYW5nZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ1FELVVJIHwgUWRNdWx0aUlucHV0Q29tcG9uZW50IC0gTWlzc2luZyBbZm9ybUFycmF5TmFtZV0gZGlyZWN0aXZlIGZyb20gaG9zdCBlbGVtZW50IG9mIHRoZSBjb21wb25lbnQnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5jb25maWcpIHtcbiAgICAgIHRoaXMudXBkYXRlQ29uZmlndXJhdGlvbigpO1xuICAgICAgaWYgKHRoaXMuaGF2ZU9wdGlvbnNDaGFuZ2VkKGNoYW5nZXMpKSB7XG4gICAgICAgIHRoaXMubXVsdGlJbnB1dFNlcnZpY2Uuc2V0T3B0aW9uc0xpc3QodGhpcy5vcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsaWNrT3V0c2lkZSA9ICgpOiB2b2lkID0+IHt9O1xuICAgIHRoaXMuX3N1YnM/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcblxuICAgIGlmICh0aGlzLmZvcm1BcnJheSAmJiB0aGlzLl9vbkRpc2FibGVkQ2hhbmdlKSB0aGlzLmZvcm1BcnJheS5fdW5yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UodGhpcy5fb25EaXNhYmxlZENoYW5nZSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoID0gZm47XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29udHJvbENvbnRhaW5lcikgdGhpcy5nZXRJdGVtcygpO1xuXG4gICAgdGhpcy52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgdGhpcy52YWx1ZXNDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlcyk7XG4gIH1cblxuICBnZXRJdGVtcygpOiBRZE11bHRpSW5wdXRPcHRpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMubXVsdGlJbnB1dFNlcnZpY2UuZ2V0SXRlbXMoKTtcbiAgfVxuXG4gIGhhc0l0ZW1zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm11bHRpSW5wdXRTZXJ2aWNlLmdldEl0ZW1zKCkubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGdldFRyYW5zbGF0aW9uKG9wdGlvbjogUWRNdWx0aUlucHV0T3B0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tdWx0aUlucHV0U2VydmljZS5nZXRUcmFuc2xhdGlvbihvcHRpb24pO1xuICB9XG5cbiAgb3BlblBvcG92ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVhZG9ubHkgfHwgdGhpcy52aWV3b25seSB8fCB0aGlzLmRpc2FibGVkIHx8IHRoaXMub3B0aW9ucy5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIHRoaXMucG9wb3Zlck9uQ2xpY2tEaXJlY3RpdmU/Lm9wZW4oKTtcbiAgfVxuXG4gIGNsb3NlUG9wb3ZlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWFkb25seSB8fCB0aGlzLnZpZXdvbmx5IHx8IHRoaXMuZGlzYWJsZWQpIHJldHVybjtcblxuICAgIHRoaXMucG9wb3Zlck9uQ2xpY2tEaXJlY3RpdmU/LmNsb3NlKCk7XG4gIH1cblxuICBoYW5kbGVDbGljayhvcHRpb246IFFkTXVsdGlJbnB1dE9wdGlvbik6IHZvaWQge1xuICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmFkZEl0ZW0ob3B0aW9uKTtcbiAgICAgIHRoaXMuY2xvc2VQb3BvdmVyKCk7XG4gICAgfVxuXG4gICAgdGhpcy5mb2N1cygpO1xuICB9XG5cbiAgaGFuZGxlQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLmhhc0ZvY3VzID0gZmFsc2U7XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnRW50ZXInOiB7XG4gICAgICAgIGNvbnN0IG5ld09wdGlvbiA9IHRoaXMubXVsdGlJbnB1dE1lbnU/LmtleU1hbmFnZXI/LmFjdGl2ZUl0ZW0/Lm9wdGlvbjtcbiAgICAgICAgaWYgKG5ld09wdGlvbj8uZGlzYWJsZWQpIHJldHVybjtcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5vcHRpb25zTGlzdEZvclZpZXcuZmluZChzID0+IHMudmFsdWUgPT09IG5ld09wdGlvbj8udmFsdWUpIHx8IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5hZGRDaGlwKG9wdGlvbik7XG4gICAgICAgIHRoaXMub3BlblBvcG92ZXIoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICB0aGlzLmNsb3NlUG9wb3ZlcigpO1xuICAgICAgICB0aGlzLmJsdXIoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB0aGlzLm9wZW5Qb3BvdmVyKCk7XG4gICAgICAgIHRoaXMubXVsdGlJbnB1dE1lbnU/LmhhbmRsZUFycm93S2V5KCd1cCcsIGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIHRoaXMub3BlblBvcG92ZXIoKTtcbiAgICAgICAgdGhpcy5tdWx0aUlucHV0TWVudT8uaGFuZGxlQXJyb3dLZXkoJ2Rvd24nLCBldmVudCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLm9wZW5Qb3BvdmVyKCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlVmFsdWUoKTogdm9pZCB7XG4gICAgdGhpcy5tdWx0aUlucHV0U2VydmljZS5zZXRDdXJyZW50SW5wdXQodGhpcy5maWx0ZXJPcHRpb25zKTtcbiAgICB0aGlzLm9wZW5Qb3BvdmVyKCk7XG4gICAgdGhpcy5tdWx0aUlucHV0TWVudT8ucmVzZXRDaGVja2VkT3B0aW9uKCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBjbG9zZShpbmRleCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvcm1BcnJheSkge1xuICAgICAgdGhpcy5mb3JtQXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xuICAgICAgdGhpcy5mb3JtQXJyYXkubWFya0FzVG91Y2hlZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubXVsdGlJbnB1dFNlcnZpY2UucmVtb3ZlSXRlbUF0SW5kZXgoaW5kZXgpO1xuICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLm11bHRpSW5wdXRTZXJ2aWNlLmdldEl0ZW1WYWx1ZXMoKSk7XG4gICAgdGhpcy5mb2N1cygpO1xuICB9XG5cbiAgZ2V0SXRlcmFibGVFbGVtZW50cygpOiBOZ0l0ZXJhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmdldEl0ZW1zQXJyYXkoKTtcbiAgfVxuXG4gIGdldFZhbHVlcygpOiBRZE11bHRpSW5wdXRPcHRpb25bXSB7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5nZXRJdGVtc0FycmF5KCkubWFwKGkgPT4gdGhpcy5tdWx0aUlucHV0U2VydmljZS5maW5kT3B0aW9uKGkudmFsdWUpKTtcbiAgICByZXR1cm4gdmFsdWVzO1xuICB9XG5cbiAgaGFuZGxlQ2hpcENsaWNrKCRldmVudCk6IHZvaWQge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmZvY3VzKCk7XG4gICAgaWYgKHRoaXMucmVhZG9ubHlBY3Rpb24pIHRoaXMuaGFuZGxlUmVhZE9ubHlBY3Rpb24oJGV2ZW50KTtcbiAgICBpZiAodGhpcy52aWV3b25seUFjdGlvbikgdGhpcy5oYW5kbGVWaWV3T25seUFjdGlvbigkZXZlbnQpO1xuICB9XG5cbiAgaGFuZGxlUmVhZE9ubHlBY3Rpb24oJGV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5jbGlja1JlYWRvbmx5LmVtaXQoJGV2ZW50LnRhcmdldC5kYXRhc2V0LnZhbHVlKTtcbiAgfVxuXG4gIGhhbmRsZVZpZXdPbmx5QWN0aW9uKCRldmVudCk6IHZvaWQge1xuICAgIHRoaXMuY2xpY2tWaWV3b25seS5lbWl0KCRldmVudC50YXJnZXQuZGF0YXNldC52YWx1ZSk7XG4gIH1cblxuICBmb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0RmllbGQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmxhYmVsID0gZ2V0TGFiZWwodGhpcy5jb25maWcpO1xuICAgIHRoaXMucmVhZG9ubHkgPSBnZXRSZWFkb25seSh0aGlzLmNvbmZpZywgdGhpcy5yZWFkb25seSk7XG4gICAgdGhpcy52aWV3b25seSA9IGdldFZpZXdvbmx5KHRoaXMuY29uZmlnLCB0aGlzLnZpZXdvbmx5KTtcbiAgICB0aGlzLmhpbnRBY3Rpb24gPSBnZXRIaW50QWN0aW9uKHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLnJlYWRvbmx5QWN0aW9uID0gZ2V0UmVhZG9ubHlBY3Rpb24odGhpcy5jb25maWcpO1xuICAgIHRoaXMudmlld29ubHlBY3Rpb24gPSBnZXRWaWV3b25seUFjdGlvbih0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGdldERpc2FibGVkKHRoaXMuY29uZmlnKSB8fCAhIXRoaXMuZm9ybUFycmF5Py5kaXNhYmxlZDtcbiAgICB0aGlzLm9wdGlvbnMgPSBnZXRNdWx0aUlucHV0T3B0aW9ucyh0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIGFkZENoaXAob3B0aW9uPzogUWRNdWx0aUlucHV0T3B0aW9uKTogdm9pZCB7XG4gICAgaWYgKCFvcHRpb24gfHwgIXRoaXMub3B0aW9uc0xpc3RGb3JWaWV3Lm1hcChvcHRpb25zID0+IG9wdGlvbnMudmFsdWUpLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkpIHtcbiAgICAgIGlmICh0aGlzLmlucHV0RmllbGQubmF0aXZlRWxlbWVudC52YWx1ZSA9PT0gJycpIHJldHVybjtcblxuICAgICAgdGhpcy5oYW5kbGVVc2VySW5wdXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZGRJdGVtKG9wdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVVc2VySW5wdXQoKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbXM6IFFkTXVsdGlJbnB1dE9wdGlvbltdID0gW107XG4gICAgaWYgKHRoaXMuZmlsdGVyT3B0aW9ucyAhPT0gJycgJiYgIXRoaXMuY29uZmlnLmRpc2FibGVGcmVldGV4dCkge1xuICAgICAgY29uc3Qgb3B0aW9uSW5kZXggPSB0aGlzLmZpbmRPcHRpb25JbmRleCh0aGlzLmZpbHRlck9wdGlvbnMpO1xuICAgICAgaWYgKG9wdGlvbkluZGV4ID09PSAtMSkge1xuICAgICAgICBpdGVtcy5wdXNoKC4uLnRoaXMuZ2V0U3BsaXRPcHRpb25zKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXRlbXMucHVzaCh0aGlzLm9wdGlvbnNMaXN0Rm9yVmlld1tvcHRpb25JbmRleF0pO1xuICAgICAgfVxuICAgICAgdGhpcy5hZGRJdGVtc1RvQ2hpcFNldChpdGVtcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRJdGVtc1RvQ2hpcFNldChpdGVtczogUWRNdWx0aUlucHV0T3B0aW9uW10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtQXJyYXkpIHtcbiAgICAgIGl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIHRoaXMuZm9ybUFycmF5LnB1c2goaXRlbS52YWx1ZSk7XG4gICAgICAgIHRoaXMubXVsdGlJbnB1dFNlcnZpY2UuYWRkU2VsZWN0ZWRJdGVtKGl0ZW0pO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmZpbHRlck9wdGlvbnMgPSAnJztcbiAgICAgIHRoaXMuY2hhbmdlVmFsdWUoKTtcbiAgICAgIHRoaXMuZm9ybUFycmF5Lm1hcmtBc1RvdWNoZWQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHRoaXMuYWRkSXRlbShpdGVtKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRTcGxpdE9wdGlvbnMoKTogUWRNdWx0aUlucHV0T3B0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLm11bHRpSW5wdXRTZXJ2aWNlLnNwbGl0RmlsdGVyT3B0aW9ucyh0aGlzLmZpbHRlck9wdGlvbnMsIHRoaXMuY29uZmlnLmlucHV0U3BsaXR0ZXJzKTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZE9wdGlvbkluZGV4KG9wdGlvbk5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uc0xpc3RGb3JWaWV3LmZpbmRJbmRleChvcHRpb24gPT4gdGhpcy5nZXRUcmFuc2xhdGlvbihvcHRpb24pID09PSBvcHRpb25OYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkSXRlbShvcHRpb246IFFkTXVsdGlJbnB1dE9wdGlvbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvcm1BcnJheSkge1xuICAgICAgdGhpcy5mb3JtQXJyYXkucHVzaChvcHRpb24udmFsdWUpO1xuICAgICAgdGhpcy5mb3JtQXJyYXkubWFya0FzVG91Y2hlZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubXVsdGlJbnB1dFNlcnZpY2UuYWRkU2VsZWN0ZWRJdGVtKG9wdGlvbik7XG4gICAgdGhpcy5maWx0ZXJPcHRpb25zID0gJyc7XG4gICAgdGhpcy5jaGFuZ2VWYWx1ZSgpO1xuICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLm11bHRpSW5wdXRTZXJ2aWNlLmdldEl0ZW1WYWx1ZXMoKSk7XG4gIH1cblxuICBwcml2YXRlIGhhdmVPcHRpb25zQ2hhbmdlZChjaGFuZ2VzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFpc0VxdWFsKGNoYW5nZXMuY29uZmlnLnByZXZpb3VzVmFsdWU/Lm9wdGlvbnMsIGNoYW5nZXMuY29uZmlnLmN1cnJlbnRWYWx1ZT8ub3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dEZpZWxkPy5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SXRlbXNBcnJheSgpOiAoRm9ybUNvbnRyb2wgfCBRZE11bHRpSW5wdXRPcHRpb24pW10ge1xuICAgIHJldHVybiB0aGlzLmZvcm1BcnJheSA/ICh0aGlzLmZvcm1BcnJheS5jb250cm9scyBhcyBGb3JtQ29udHJvbFtdKSA6IHRoaXMuZ2V0SXRlbXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdE9wTW9kZVN1YnNjcmlwdGlvbigpOiBTdWJzY3JpcHRpb24gfCB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZXZlbnRCcm9rZXJTZXJ2aWNlKSByZXR1cm47XG5cbiAgICByZXR1cm4gdGhpcy5ldmVudEJyb2tlclNlcnZpY2UuY29uc3VtZTx7IGlzVmlld29ubHk6IGJvb2xlYW4gfT4oJ29wZXJhdGlvbl9tb2RlX2NoYW5nZWQnKS5zdWJzY3JpYmUodG9waWMgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbmZpZy52aWV3b25seSA9PT0gJ2Jvb2xlYW4nKSByZXR1cm47XG5cbiAgICAgIHRoaXMudmlld29ubHkgPSBnZXRWaWV3b25seSh0aGlzLmNvbmZpZywgdG9waWMucGF5bG9hZC5pc1ZpZXdvbmx5KTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPHFkLWZvcm0tbGFiZWxcbiAgW2xhYmVsXT1cImxhYmVsXCJcbiAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgW3ZpZXdvbmx5XT1cInZpZXdvbmx5XCJcbiAgW2NvbnRyb2xdPVwiZm9ybUFycmF5XCJcbiAgW3Rvb2x0aXBdPVwiY29uZmlnPy50b29sdGlwXCJcbiAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuPjwvcWQtZm9ybS1sYWJlbD5cblxuPGRpdlxuICAqbmdJZj1cIiFyZWFkb25seSAmJiAhdmlld29ubHlcIlxuICBjbGFzcz1cInFkLW11bHRpLWlucHV0X19pbnB1dC1jaGlwLWJveFwiXG4gIChjbGljayk9XCJmb2N1cygpXCJcbiAgKG9wZW5lZCk9XCJvcGVuID0gdHJ1ZVwiXG4gIChjbG9zZWQpPVwib3BlbiA9IGZhbHNlXCJcbiAgW3FkUG9wb3Zlck9uQ2xpY2tdPVwibWVudVwiXG4gIFtxZFBvcG92ZXJDbG9zZVN0cmF0ZWd5XT1cIidvbk91dHNpZGVDbGljaydcIlxuICBbcWRQb3BvdmVyRGlzYWJsZWRdPVwib3B0aW9ucy5sZW5ndGggPT09IDBcIlxuICBbcWRQb3BvdmVyQXV0b1NpemVdPVwieyB3aWR0aDogdHJ1ZSB9XCJcbiAgW3FkUG9wb3ZlckJhY2tncm91bmRDb2xvcl09XCIndHJhbnNwYXJlbnQnXCJcbiAgW3Bvc2l0aW9uU3RyYXRlZ3ldPVwiW1xuICAgIHtcbiAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgb2Zmc2V0WDogLTJcbiAgICB9LFxuICAgIHtcbiAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgd2VpZ2h0OiAwLjgsXG4gICAgICBvZmZzZXRYOiAtMlxuICAgIH1cbiAgXVwiXG4+XG4gIDxkaXYgW25nQ2xhc3NdPVwiaGFzSXRlbXMoKSA/ICdxZC1tdWx0aS1pbnB1dF9fY2hpcC1tYXJnaW4nIDogJydcIj5cbiAgICA8cWQtbXVsdGktaW5wdXQtY2hpcFxuICAgICAgKm5nRm9yPVwibGV0IGVsZW1lbnQgb2YgZ2V0SXRlcmFibGVFbGVtZW50cygpOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICBbY2xvc2VdPVwiIWRpc2FibGVkICYmICFyZWFkb25seSAmJiAhdmlld29ubHlcIlxuICAgICAgW2l0ZW1Db250cm9sXT1cImZvcm1BcnJheSA/IGVsZW1lbnQgOiB1bmRlZmluZWRcIlxuICAgICAgW3ZhbHVlXT1cImZvcm1BcnJheSA/IHVuZGVmaW5lZCA6IGdldFRyYW5zbGF0aW9uKGVsZW1lbnQpXCJcbiAgICAgIChjbG9zZUNsaWNrRW1pdHRlcik9XCJjbG9zZShpbmRleClcIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZUNoaXBDbGljaygkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9xZC1tdWx0aS1pbnB1dC1jaGlwPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicWQtbXVsdGktaW5wdXRfX3dyYXBwZXJcIj5cbiAgICA8aW5wdXRcbiAgICAgICNpbnB1dFxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgY2xhc3M9XCJxZC1tdWx0aS1pbnB1dF9fYm94XCJcbiAgICAgICpuZ0lmPVwiIXJlYWRvbmx5ICYmICF2aWV3b25seVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXJPcHRpb25zXCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZVZhbHVlKClcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgKGZvY3VzKT1cImhhc0ZvY3VzID0gdHJ1ZVwiXG4gICAgICAoYmx1cik9XCJoYW5kbGVCbHVyKClcIlxuICAgICAgW25nQ2xhc3NdPVwib3BlbiA/ICdxZC1tdWx0aS1pbnB1dF9fYm94LS1vcGVuJyA6ICcnXCJcbiAgICAgIFthdHRyLmRhdGEtdGVzdC1pZF09XCJ0ZXN0SWQgKyAnLWlucHV0J1wiXG4gICAgLz5cblxuICAgIDxkaXYgY2xhc3M9XCJxZC1tdWx0aS1pbnB1dF9fYm94IHFkLW11bHRpLWlucHV0X19ib3gtLXJlYWRvbmx5XCIgKm5nSWY9XCJyZWFkb25seSAmJiAhaGFzSXRlbXMoKVwiPiZuYnNwOzwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInFkLW11bHRpLWlucHV0X19ib3ggcWQtbXVsdGktaW5wdXRfX2JveC0tdmlld29ubHlcIiAqbmdJZj1cInZpZXdvbmx5ICYmICFoYXNJdGVtcygpXCI+Jm5ic3A7PC9kaXY+XG5cbiAgICA8bmctdGVtcGxhdGUgI21lbnU+XG4gICAgICA8cWQtbXVsdGktaW5wdXQtbWVudVxuICAgICAgICBbb3B0aW9uc0xpc3RGb3JWaWV3XT1cIm9wdGlvbnNMaXN0Rm9yVmlld1wiXG4gICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkXCJcbiAgICAgICAgKGl0ZW1DbGljayk9XCJoYW5kbGVDbGljaygkZXZlbnQpXCJcbiAgICAgID48L3FkLW11bHRpLWlucHV0LW1lbnU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZyAmJiAhcmVhZG9ubHkgJiYgIXZpZXdvbmx5XCI+XG4gIDxxZC1mb3JtLWhpbnRcbiAgICBbaGludF09XCJoYXNIaW50ID8gY29uZmlnLmhpbnQuaTE4biA6ICcnXCJcbiAgICBbY29udHJvbF09XCJmb3JtQXJyYXlcIlxuICAgIFtoYXNFcnJvcl09XCJoYXNFcnJvclwiXG4gICAgW2hpbnRBY3Rpb25dPVwiaGludEFjdGlvblwiXG4gICAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuICA+PC9xZC1mb3JtLWhpbnQ+XG48L25nLWNvbnRhaW5lcj5cblxuPHFkLWZvcm0tcmVhZG9ubHlcbiAgKm5nSWY9XCJyZWFkb25seVwiXG4gIFt2YWx1ZXNdPVwiZ2V0VmFsdWVzKClcIlxuICBbcmVhZG9ubHlBY3Rpb25dPVwicmVhZG9ubHlBY3Rpb25cIlxuICBbZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4+PC9xZC1mb3JtLXJlYWRvbmx5PlxuXG48cWQtZm9ybS12aWV3b25seVxuICAqbmdJZj1cInZpZXdvbmx5XCJcbiAgW3ZhbHVlc109XCJnZXRWYWx1ZXMoKVwiXG4gIFt2aWV3b25seUFjdGlvbl09XCJ2aWV3b25seUFjdGlvblwiXG4gIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkXCJcbj48L3FkLWZvcm0tdmlld29ubHk+XG4iXX0=
540
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL2Zvcm1zL211bHRpLWlucHV0L211bHRpLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9mb3Jtcy9tdWx0aS1pbnB1dC9tdWx0aS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLElBQUksRUFDSixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFLTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxRQUFRLEVBQ1IsU0FBUyxFQUNULFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZ0JBQWdCLEVBR2hCLGlCQUFpQixFQUVsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sT0FBTyxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHbEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ2xHLE9BQU8sRUFDTCxXQUFXLEVBQ1gsYUFBYSxFQUNiLFFBQVEsRUFDUixvQkFBb0IsRUFDcEIsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2xCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0s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QTJCOztzQkFDdkMsV0FBVzt1QkFBQyxtQ0FBbUM7Z0JBTWhELFFBQVE7c0JBSFAsV0FBVzt1QkFBQyx3QkFBd0I7O3NCQUNwQyxXQUFXO3VCQUFDLCtCQUErQjs7c0JBQzNDLFdBQVc7dUJBQUMsb0NBQW9DO2dCQUlqRCxRQUFRO3NCQURQLFdBQVc7dUJBQUMsNEJBQTRCO2dCQUtyQyxRQUFRO3NCQUZYLFdBQVc7dUJBQUMscUJBQXFCOztzQkFDakMsV0FBVzt1QkFBQyw0QkFBNEI7Z0JBS0csWUFBWTtzQkFBdkQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1zdHJpY3QtaWdub3JlXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0LFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgTmdJdGVyYWJsZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTa2lwU2VsZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW5cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sQ29udGFpbmVyLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUNvbnRyb2wsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBVbnR5cGVkRm9ybUNvbnRyb2xcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XG5cbmltcG9ydCB7IFFkRm9ybU11bHRpSW5wdXRDb25maWd1cmF0aW9uLCBRZE11bHRpSW5wdXRPcHRpb24gfSBmcm9tICcuLi9tb2RlbC9mb3Jtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUWRGb3JtQXJyYXkgfSBmcm9tICcuLi9yZWFjdGl2ZS1mb3Jtcy9jb250cm9scy9mb3JtLWFycmF5JztcbmltcG9ydCB7IFFkRm9ybUFycmF5RmFjdG9yeVNlcnZpY2UgfSBmcm9tICcuLi9yZWFjdGl2ZS1mb3Jtcy9jb250cm9scy9mb3JtLWFycmF5LWZhY3Rvcnkuc2VydmljZSc7XG5pbXBvcnQge1xuICBnZXREaXNhYmxlZCxcbiAgZ2V0SGludEFjdGlvbixcbiAgZ2V0TGFiZWwsXG4gIGdldE11bHRpSW5wdXRPcHRpb25zLFxuICBnZXRSZWFkb25seSxcbiAgZ2V0UmVhZG9ubHlBY3Rpb24sXG4gIGdldFZpZXdvbmx5LFxuICBnZXRWaWV3b25seUFjdGlvblxufSBmcm9tICcuLi9zaGFyZWQvaGVscGVycy9mb3Jtcy5oZWxwZXJzJztcbmltcG9ydCB7IFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9hY3Rpb24tZW1pdHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkTXVsdGlJbnB1dFNlcnZpY2UgfSBmcm9tICcuL211bHRpLWlucHV0LXNlcnZpY2UvbXVsdGktaW5wdXQuc2VydmljZSc7XG5pbXBvcnQgeyBRZFBvcG92ZXJPbkNsaWNrRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vY29yZS9wb3BvdmVyL3BvcG92ZXItb24tY2xpY2svcG9wb3Zlci1vbi1jbGljay5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUWRNdWx0aUlucHV0TWVudUNvbXBvbmVudCB9IGZyb20gJy4vbXVsdGktaW5wdXQtbWVudS9tdWx0aS1pbnB1dC1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBRZEV2ZW50QnJva2VyU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvZXZlbnQtYnJva2VyLnNlcnZpY2UnO1xuXG4vKipcbiAqIFRoZSAqKlFkTXVsdGlJbnB1dCoqIGlzIGEgY29tcG9uZW50IHRoYXQgcHJvdmlkZXMgYSB1c2VyIGludGVyZmFjZSBmb3IgZW50ZXJpbmcgbXVsdGlwbGUgaW5wdXRzLjxiciAvPlxuICogSXQgaXMgZGVzaWduZWQgdG8gZW5oYW5jZSB0aGUgdXNlciBleHBlcmllbmNlIHdoZW4gZGVhbGluZyB3aXRoIG11bHRpcGxlIGlucHV0cyBhbmQgY2FuIGJlIHVzZWQgd2l0aCBRdWFkcmVsIFJlYWN0aXZlIEZvcm1zIG9yIHdpdGggbW9kZWwgYmluZGluZy5cbiAqXG4gKiAjIyMjKipVc2FnZSB3aXRoIFJlYWN0aXZlIEZvcm1zKipcbiAqXG4gKiBgYGB0c1xuICogZm9ybSA9IG5ldyBRZEZvcm1Hcm91cCh7XG4gKiAgIG11bHRpSW5wdXQ6IG5ldyBRZEZvcm1BcnJheSgpXG4gKiB9KTtcbiAqIGBgYFxuICogYGBgaHRtbFxuICogPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gKiAgIDxxZC1tdWx0aS1pbnB1dCBbZm9ybUFycmF5TmFtZV09XCJtdWx0aUlucHV0XCIgW2NvbmZpZ109XCJjb25maWdcIj48L3FkLW11bHRpLWlucHV0PlxuICogPC9mb3JtPlxuICogYGBgXG4gKlxuICogIyMjIyoqVXNhZ2Ugd2l0aCBNb2RlbCBCaW5kaW5nKipcbiAqIGBgYHRzXG4gKiB2YWx1ZXM7XG4gKiBgYGBcbiAqIGBgYGh0bWxcbiAqIDxxZC1tdWx0aS1pbnB1dCBbKHZhbHVlcyldPVwidmFsdWVzXCIgW2NvbmZpZ109XCJjb25maWdcIj48L3FkLW11bHRpLWlucHV0PlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3FkLW11bHRpLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbXVsdGktaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogUWRNdWx0aUlucHV0Q29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIFFkTXVsdGlJbnB1dFNlcnZpY2UsXG4gICAgUWRGb3Jtc0FjdGlvbkVtaXR0ZXJTZXJ2aWNlXG4gIF0sXG4gIGhvc3Q6IHsgY2xhc3M6ICdxZC1tdWx0aS1pbnB1dCcgfSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUWRNdWx0aUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBIZXJlIGFuIGlkIGNhbiBiZSBhc3NpZ25lZCwgd2l0aCB3aGljaCBhIHZhbHVlIGNhbiBiZSBsaW5rZWQgdG8gYSBjb3JyZXNwb25kaW5nIGxhYmVsLlxuICAgKi9cbiAgQElucHV0KCkgaWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGZvcm0gaXRlbSB2YWx1ZXMsIGlmIHlvdSBhcmUgd29ya2luZyB3aXRoIE1vZGVsIEJpbmRpbmcuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIDxxZC1tdWx0aS1pbnB1dCBbKHZhbHVlcyldPVwidmFsdWVzXCIgW2NvbmZpZ109XCJjb25maWdcIj48L3FkLW11bHRpLWlucHV0PlxuICAgKi9cbiAgQElucHV0KCkgc2V0IHZhbHVlcyh2YWx1ZXM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fdmFsdWVzID0gdmFsdWVzO1xuICB9XG5cbiAgZ2V0IHZhbHVlcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlcztcbiAgfVxuXG4gIC8qKlxuICAgKiAqIEBkZXByZWNhdGVkXG4gICAqIFRPRE8gcmVtb3ZlIGxvZ2ljIGZvciBzdXBwb3J0IG9mIFtmb3JtQ29udHJvbE5hbWVdIGRpcmVjdGl2ZSBhbmQgRm9ybUNvbnRyb2wgd2l0aCBhbmd1bGFyIDE0IHVwZGF0ZVxuICAgKi9cbiAgQElucHV0KCkgc2V0IGZvcm1Db250cm9sTmFtZShmb3JtQ29udHJvbE5hbWU6IHN0cmluZykge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgICdRRC1VSSB8IFFkTXVsdGlJbnB1dENvbXBvbmVudCAtIFBsZWFzZSB1c2UgdGhlIE11bHRpSW5wdXQgd2l0aCB0aGUgUWRGb3JtQXJyYXkgZm9ybSBjb250cm9sIGFuZCB0aGUgW2Zvcm1BcnJheU5hbWVdIGRpcmVjdGl2ZSEnXG4gICAgKTtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE5hbWUgPSBmb3JtQ29udHJvbE5hbWU7XG4gIH1cblxuICBnZXQgZm9ybUNvbnRyb2xOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1Db250cm9sTmFtZTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBmb3JtQXJyYXlOYW1lKGZvcm1BcnJheU5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuX2Zvcm1BcnJheU5hbWUgPSBmb3JtQXJyYXlOYW1lO1xuICB9XG5cbiAgZ2V0IGZvcm1BcnJheU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybUFycmF5TmFtZSB8fCB0aGlzLmZvcm1Db250cm9sTmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBmb3JtIGl0ZW1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICoge1xuICAgKiAgIGxhYmVsOiB7IGkxOG46ICdteS1sYWJlbCcgfSxcbiAgICogICBoaW50OiB7IGkxOG46ICdteS1oaW50JyB9LFxuICAgKiAgIG9wdGlvbnM6IFtcbiAgICogICAgIHsgaTE4bjogJ2kxOG4ucWQuZXhhbXBsZUZvcm1GaWVsZC5nb29kc0RlY2xhcmF0aW9uLmltcG9ydCcsIHZhbHVlOiAnaW1wb3J0JyB9LFxuICAgKiAgICAgeyBpMThuOiAnaTE4bi5xZC5leGFtcGxlRm9ybUZpZWxkLmdvb2RzRGVjbGFyYXRpb24uZXhwb3J0JywgdmFsdWU6ICdleHBvcnQnIH0sXG4gICAqICAgICB7IGkxOG46ICdpMThuLnFkLmV4YW1wbGVGb3JtRmllbGQuZ29vZHNEZWNsYXJhdGlvbi50cmFuc2l0JywgdmFsdWU6ICd0cmFuc2l0JyB9XG4gICAqICAgXVxuICAgKiB9O1xuICAgKi9cbiAgQElucHV0KCkgY29uZmlnOiBRZEZvcm1NdWx0aUlucHV0Q29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogQSBzdGF0aWMgdGVzdCBJRCBmb3IgaW50ZWdyYXRpb24gdGVzdHMgY2FuIGJlIHNldC4gPGJyIC8+XG4gICAqIFRoZSB2YWx1ZSBmb3IgdGhlIEhUTUwgYXR0cmlidXRlIFtkYXRhLXRlc3QtaWRdLlxuICAgKi9cbiAgQElucHV0KCdkYXRhLXRlc3QtaWQnKSB0ZXN0SWQgPSAnbXVsdGktaW5wdXQnO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBldmVudCB3aGVuIHRoZSB2YWx1ZXMgY2hhbmdlLiBSZXR1cm4gdmFsdWVzIG1hdGNoIHRoZSBjdXJyZW50IHZhbHVlcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSB2YWx1ZXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBldmVudCB3aGVuIHRoZSBoaW50IGlzIGNsaWNrZWQvdGFwcGVkLiBgaGludEFjdGlvbmAgbXVzdCBiZSBzZXQgdG8gYHRydWVgIGZvciB0aGlzLlxuICAgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGNsaWNrSGludCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiBhIHJlYWRvbmx5IHZhbHVlIGlzIGNsaWNrZWQvdGFwcGVkLiBgY2xpY2tSZWFkb25seSBgIG11c3QgYmUgc2V0IHRvIGB0cnVlYCBmb3IgdGhpcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja1JlYWRvbmx5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBldmVudCB3aGVuIGEgdmlld29ubHkgdmFsdWUgaXMgY2xpY2tlZC90YXBwZWQuIGBjbGlja1ZpZXdvbmx5IGAgbXVzdCBiZSBzZXQgdG8gYHRydWVgIGZvciB0aGlzLlxuICAgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGNsaWNrVmlld29ubHkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dEZpZWxkOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKGZvcndhcmRSZWYoKCkgPT4gUWRNdWx0aUlucHV0TWVudUNvbXBvbmVudCkpIG11bHRpSW5wdXRNZW51OiBRZE11bHRpSW5wdXRNZW51Q29tcG9uZW50O1xuICBAVmlld0NoaWxkKFFkUG9wb3Zlck9uQ2xpY2tEaXJlY3RpdmUpIHBvcG92ZXJPbkNsaWNrRGlyZWN0aXZlOiBRZFBvcG92ZXJPbkNsaWNrRGlyZWN0aXZlO1xuICBAVmlld0NoaWxkcmVuKCdlcnJvclRvb2x0aXBzJykgZXJyb3JUb29sdGlwczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuICBAVmlld0NoaWxkcmVuKCdkcm9wZG93bk9wdGlvbicpIGRyb3Bkb3duT3B0aW9uczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtbXVsdGktaW5wdXQtcmVhZG9ubHknKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLW11bHRpLWlucHV0LWNoaXAtcmVhZG9ubHknKVxuICByZWFkb25seSA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtbXVsdGktaW5wdXQtLXJlYWRvbmx5LWFjdGlvbicpXG4gIHJlYWRvbmx5QWN0aW9uID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1tdWx0aS1pbnB1dC12aWV3b25seScpXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtbXVsdGktaW5wdXQtY2hpcC12aWV3b25seScpXG4gIHZpZXdvbmx5ID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1tdWx0aS1pbnB1dC0tdmlld29ubHktYWN0aW9uJylcbiAgdmlld29ubHlBY3Rpb24gPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWZvcm0taGludC1hY3Rpb24nKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLW11bHRpLWlucHV0LS1oaW50LWFjdGlvbicpXG4gIGhpbnRBY3Rpb24gPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWZvcm0tZGlzYWJsZWQnKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLW11bHRpLWlucHV0LWRpc2FibGVkJylcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1tdWx0aS1pbnB1dC1jaGlwLWRpc2FibGVkJylcbiAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLW11bHRpLWlucHV0LWZvY3VzJylcbiAgaGFzRm9jdXMgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWZvcm0tZXJyb3InKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLW11bHRpLWlucHV0LWVycm9yJylcbiAgZ2V0IGhhc0Vycm9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZvcm1BcnJheSA/IHRoaXMuZm9ybUFycmF5LnRvdWNoZWQgJiYgdGhpcy5mb3JtQXJyYXkuaW52YWxpZCA6IGZhbHNlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKSBjbGlja091dHNpZGUoJGV2ZW50KTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdHlwZW9mICRldmVudC50YXJnZXQuY2xhc3NOYW1lID09PSAnc3RyaW5nJyAmJlxuICAgICAgISRldmVudC50YXJnZXQuY2xhc3NOYW1lLmluY2x1ZGVzKCdxZC1tdWx0aS1pbnB1dCcpICYmXG4gICAgICB0aGlzLm9wZW5cbiAgICApIHtcbiAgICAgIHRoaXMuX29uVG91Y2goKTtcbiAgICAgIGlmICgkZXZlbnQ/LnBvaW50ZXJJZCAhPT0gLTEpIHRoaXMuY2xvc2VQb3BvdmVyKCk7XG4gICAgfVxuICB9XG5cbiAgbGFiZWw6IHN0cmluZztcbiAgb3B0aW9uczogUWRNdWx0aUlucHV0T3B0aW9uW107XG4gIG9wZW4gPSBmYWxzZTtcbiAgb3B0aW9uc0xpc3RGb3JWaWV3OiBRZE11bHRpSW5wdXRPcHRpb25bXTtcbiAgZmlsdGVyT3B0aW9uczogc3RyaW5nO1xuICBmb3JtQXJyYXk6IFFkRm9ybUFycmF5PHN0cmluZz47XG5cbiAgcHJpdmF0ZSBfdmFsdWVzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSBfZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgX2Zvcm1BcnJheU5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBfb25EaXNhYmxlZENoYW5nZTtcbiAgcHJpdmF0ZSBfc3VicyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuICBwcml2YXRlIF9vbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gIHByaXZhdGUgX29uVG91Y2g6IGFueSA9ICgpID0+IHt9O1xuXG4gIGdldCBoYXNIaW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5oaW50ICYmIHRoaXMuY29uZmlnLmhpbnQuaTE4biAmJiAhdGhpcy5jb25maWcuaGludC5kaXNhYmxlZDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaG9zdFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBtdWx0aUlucHV0U2VydmljZTogUWRNdWx0aUlucHV0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbkVtaXR0ZXJTZXJ2aWNlOiBRZEZvcm1zQWN0aW9uRW1pdHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBxZEZvcm1BcnJheUZhY3RvcnlTZXJ2aWNlOiBRZEZvcm1BcnJheUZhY3RvcnlTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBIb3N0KCkgQFNraXBTZWxmKCkgcHJpdmF0ZSByZWFkb25seSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRCcm9rZXJTZXJ2aWNlOiBRZEV2ZW50QnJva2VyU2VydmljZVxuICApIHtcbiAgICBpZiAoIXRoaXMuaWQpIHRoaXMuaWQgPSB1dWlkKCk7XG5cbiAgICB0aGlzLm11bHRpSW5wdXRTZXJ2aWNlLm9wdGlvbnNMaXN0Rm9yVmlldyQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKGxpc3QgPT4ge1xuICAgICAgdGhpcy5vcHRpb25zTGlzdEZvclZpZXcgPSBsaXN0O1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVDb25maWd1cmF0aW9uKCk7XG5cbiAgICB0aGlzLm11bHRpSW5wdXRTZXJ2aWNlLnNldE9wdGlvbnNMaXN0KHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy5tdWx0aUlucHV0U2VydmljZS5zZXRTZWxlY3RlZEl0ZW1zKHRoaXMudmFsdWVzKTtcblxuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuYWN0aW9uRW1pdHRlclNlcnZpY2UuaGludEV2ZW50RW1pdHRlciQuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xpY2tIaW50LmVtaXQoKSkpO1xuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuYWN0aW9uRW1pdHRlclNlcnZpY2UucmVhZG9ubHlFdmVudEVtaXR0ZXIkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsaWNrUmVhZG9ubHkuZW1pdCgpKSk7XG4gICAgdGhpcy5fc3Vicy5hZGQodGhpcy5hY3Rpb25FbWl0dGVyU2VydmljZS52aWV3b25seUV2ZW50RW1pdHRlciQuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xpY2tWaWV3b25seS5lbWl0KCkpKTtcbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmluaXRPcE1vZGVTdWJzY3JpcHRpb24oKSk7XG5cbiAgICBpZiAoIXRoaXMuY29udHJvbENvbnRhaW5lcikgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuZm9ybUFycmF5TmFtZSkge1xuICAgICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5jb250cm9sQ29udGFpbmVyLmNvbnRyb2wuZ2V0KHRoaXMuZm9ybUFycmF5TmFtZSk7XG5cbiAgICAgIC8vIFVwZGF0aW5nIGZvcm0gYXJyYXkgcHJvZ3JhbW1hdGljYWxseSBmcm9tIG91dHNpZGVcbiAgICAgIHRoaXMuX3N1YnMuYWRkKFxuICAgICAgICBmb3JtQXJyYXkudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5tdWx0aUlucHV0U2VydmljZS5zZXRTZWxlY3RlZEl0ZW1zKHRoaXMuZm9ybUFycmF5LnZhbHVlKTtcbiAgICAgICAgICB0aGlzLnZhbHVlc0NoYW5nZS5lbWl0KHRoaXMuZm9ybUFycmF5LnZhbHVlKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAgIGlmIChmb3JtQXJyYXkgaW5zdGFuY2VvZiBRZEZvcm1BcnJheSkge1xuICAgICAgICB0aGlzLmZvcm1BcnJheSA9IGZvcm1BcnJheTtcbiAgICAgICAgdGhpcy5tdWx0aUlucHV0U2VydmljZS5zZXRTZWxlY3RlZEl0ZW1zKHRoaXMuZm9ybUFycmF5LnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFRPRE8gcmVtb3ZlIGxvZ2ljIGZvciBzdXBwb3J0IG9mIEFuZ3VsYXIgRm9ybUNvbnRyb2wgd2l0aCBhbmd1bGFyIDE5IHVwZGF0ZVxuICAgICAgICB0aGlzLmZvcm1BcnJheSA9IHRoaXMucWRGb3JtQXJyYXlGYWN0b3J5U2VydmljZS5jcmVhdGVRZEZvcm1BcnJheUZyb21Gb3JtQ29udHJvbChcbiAgICAgICAgICBmb3JtQXJyYXkgYXMgVW50eXBlZEZvcm1Db250cm9sXG4gICAgICAgICk7XG4gICAgICAgIGNvbnNvbGUud2FybignUUQtVUkgfCBRZE11bHRpSW5wdXRDb21wb25lbnQgLSBQbGVhc2UgdXNlIHRoZSBNdWx0aUlucHV0IHdpdGggdGhlIFFkRm9ybUFycmF5IGZvcm0gY29udHJvbCEnKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGlzYWJsZWQgPSBmb3JtQXJyYXkuZGlzYWJsZWQ7XG4gICAgICB0aGlzLl9vbkRpc2FibGVkQ2hhbmdlID0gKGRpc2FibGVkKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICAgIH07XG4gICAgICB0aGlzLmZvcm1BcnJheS5yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UodGhpcy5fb25EaXNhYmxlZENoYW5nZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ1FELVVJIHwgUWRNdWx0aUlucHV0Q29tcG9uZW50IC0gTWlzc2luZyBbZm9ybUFycmF5TmFtZV0gZGlyZWN0aXZlIGZyb20gaG9zdCBlbGVtZW50IG9mIHRoZSBjb21wb25lbnQnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5jb25maWcpIHtcbiAgICAgIHRoaXMudXBkYXRlQ29uZmlndXJhdGlvbigpO1xuICAgICAgaWYgKHRoaXMuaGF2ZU9wdGlvbnNDaGFuZ2VkKGNoYW5nZXMpKSB7XG4gICAgICAgIHRoaXMubXVsdGlJbnB1dFNlcnZpY2Uuc2V0T3B0aW9uc0xpc3QodGhpcy5vcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsaWNrT3V0c2lkZSA9ICgpOiB2b2lkID0+IHt9O1xuICAgIHRoaXMuX3N1YnM/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcblxuICAgIGlmICh0aGlzLmZvcm1BcnJheSAmJiB0aGlzLl9vbkRpc2FibGVkQ2hhbmdlKSB0aGlzLmZvcm1BcnJheS5fdW5yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UodGhpcy5fb25EaXNhYmxlZENoYW5nZSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoID0gZm47XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29udHJvbENvbnRhaW5lcikgdGhpcy5nZXRJdGVtcygpO1xuXG4gICAgdGhpcy52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgdGhpcy52YWx1ZXNDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlcyk7XG4gIH1cblxuICBnZXRJdGVtcygpOiBRZE11bHRpSW5wdXRPcHRpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMubXVsdGlJbnB1dFNlcnZpY2UuZ2V0SXRlbXMoKTtcbiAgfVxuXG4gIGhhc0l0ZW1zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm11bHRpSW5wdXRTZXJ2aWNlLmdldEl0ZW1zKCkubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGdldFRyYW5zbGF0aW9uKG9wdGlvbjogUWRNdWx0aUlucHV0T3B0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tdWx0aUlucHV0U2VydmljZS5nZXRUcmFuc2xhdGlvbihvcHRpb24pO1xuICB9XG5cbiAgb3BlblBvcG92ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVhZG9ubHkgfHwgdGhpcy52aWV3b25seSB8fCB0aGlzLmRpc2FibGVkIHx8IHRoaXMub3B0aW9ucy5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIHRoaXMucG9wb3Zlck9uQ2xpY2tEaXJlY3RpdmU/Lm9wZW4oKTtcbiAgfVxuXG4gIGNsb3NlUG9wb3ZlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWFkb25seSB8fCB0aGlzLnZpZXdvbmx5IHx8IHRoaXMuZGlzYWJsZWQpIHJldHVybjtcblxuICAgIHRoaXMucG9wb3Zlck9uQ2xpY2tEaXJlY3RpdmU/LmNsb3NlKCk7XG4gIH1cblxuICBoYW5kbGVDbGljayhvcHRpb246IFFkTXVsdGlJbnB1dE9wdGlvbik6IHZvaWQge1xuICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmFkZEl0ZW0ob3B0aW9uKTtcbiAgICAgIHRoaXMuY2xvc2VQb3BvdmVyKCk7XG4gICAgfVxuXG4gICAgdGhpcy5mb2N1cygpO1xuICB9XG5cbiAgaGFuZGxlQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLmhhc0ZvY3VzID0gZmFsc2U7XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnRW50ZXInOiB7XG4gICAgICAgIGNvbnN0IG5ld09wdGlvbiA9IHRoaXMubXVsdGlJbnB1dE1lbnU/LmtleU1hbmFnZXI/LmFjdGl2ZUl0ZW0/Lm9wdGlvbjtcbiAgICAgICAgaWYgKG5ld09wdGlvbj8uZGlzYWJsZWQpIHJldHVybjtcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5vcHRpb25zTGlzdEZvclZpZXcuZmluZChzID0+IHMudmFsdWUgPT09IG5ld09wdGlvbj8udmFsdWUpIHx8IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5hZGRDaGlwKG9wdGlvbik7XG4gICAgICAgIHRoaXMub3BlblBvcG92ZXIoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICB0aGlzLmNsb3NlUG9wb3ZlcigpO1xuICAgICAgICB0aGlzLmJsdXIoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB0aGlzLm9wZW5Qb3BvdmVyKCk7XG4gICAgICAgIHRoaXMubXVsdGlJbnB1dE1lbnU/LmhhbmRsZUFycm93S2V5KCd1cCcsIGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIHRoaXMub3BlblBvcG92ZXIoKTtcbiAgICAgICAgdGhpcy5tdWx0aUlucHV0TWVudT8uaGFuZGxlQXJyb3dLZXkoJ2Rvd24nLCBldmVudCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLm9wZW5Qb3BvdmVyKCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlVmFsdWUoKTogdm9pZCB7XG4gICAgdGhpcy5tdWx0aUlucHV0U2VydmljZS5zZXRDdXJyZW50SW5wdXQodGhpcy5maWx0ZXJPcHRpb25zKTtcbiAgICB0aGlzLm9wZW5Qb3BvdmVyKCk7XG4gICAgdGhpcy5tdWx0aUlucHV0TWVudT8ucmVzZXRDaGVja2VkT3B0aW9uKCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBjbG9zZShpbmRleCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvcm1BcnJheSkge1xuICAgICAgdGhpcy5mb3JtQXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xuICAgICAgdGhpcy5mb3JtQXJyYXkubWFya0FzVG91Y2hlZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubXVsdGlJbnB1dFNlcnZpY2UucmVtb3ZlSXRlbUF0SW5kZXgoaW5kZXgpO1xuICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLm11bHRpSW5wdXRTZXJ2aWNlLmdldEl0ZW1WYWx1ZXMoKSk7XG4gICAgdGhpcy5mb2N1cygpO1xuICB9XG5cbiAgZ2V0SXRlcmFibGVFbGVtZW50cygpOiBOZ0l0ZXJhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmdldEl0ZW1zQXJyYXkoKTtcbiAgfVxuXG4gIGdldFZhbHVlcygpOiBRZE11bHRpSW5wdXRPcHRpb25bXSB7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5nZXRJdGVtc0FycmF5KCkubWFwKGkgPT4gdGhpcy5tdWx0aUlucHV0U2VydmljZS5maW5kT3B0aW9uKGkudmFsdWUpKTtcbiAgICByZXR1cm4gdmFsdWVzO1xuICB9XG5cbiAgaGFuZGxlQ2hpcENsaWNrKCRldmVudCk6IHZvaWQge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmZvY3VzKCk7XG4gICAgaWYgKHRoaXMucmVhZG9ubHlBY3Rpb24pIHRoaXMuaGFuZGxlUmVhZE9ubHlBY3Rpb24oJGV2ZW50KTtcbiAgICBpZiAodGhpcy52aWV3b25seUFjdGlvbikgdGhpcy5oYW5kbGVWaWV3T25seUFjdGlvbigkZXZlbnQpO1xuICB9XG5cbiAgaGFuZGxlUmVhZE9ubHlBY3Rpb24oJGV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5jbGlja1JlYWRvbmx5LmVtaXQoJGV2ZW50LnRhcmdldC5kYXRhc2V0LnZhbHVlKTtcbiAgfVxuXG4gIGhhbmRsZVZpZXdPbmx5QWN0aW9uKCRldmVudCk6IHZvaWQge1xuICAgIHRoaXMuY2xpY2tWaWV3b25seS5lbWl0KCRldmVudC50YXJnZXQuZGF0YXNldC52YWx1ZSk7XG4gIH1cblxuICBmb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0RmllbGQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmxhYmVsID0gZ2V0TGFiZWwodGhpcy5jb25maWcpO1xuICAgIHRoaXMucmVhZG9ubHkgPSBnZXRSZWFkb25seSh0aGlzLmNvbmZpZywgdGhpcy5yZWFkb25seSk7XG4gICAgdGhpcy52aWV3b25seSA9IGdldFZpZXdvbmx5KHRoaXMuY29uZmlnLCB0aGlzLnZpZXdvbmx5KTtcbiAgICB0aGlzLmhpbnRBY3Rpb24gPSBnZXRIaW50QWN0aW9uKHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLnJlYWRvbmx5QWN0aW9uID0gZ2V0UmVhZG9ubHlBY3Rpb24odGhpcy5jb25maWcpO1xuICAgIHRoaXMudmlld29ubHlBY3Rpb24gPSBnZXRWaWV3b25seUFjdGlvbih0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGdldERpc2FibGVkKHRoaXMuY29uZmlnKSB8fCAhIXRoaXMuZm9ybUFycmF5Py5kaXNhYmxlZDtcbiAgICB0aGlzLm9wdGlvbnMgPSBnZXRNdWx0aUlucHV0T3B0aW9ucyh0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIGFkZENoaXAob3B0aW9uPzogUWRNdWx0aUlucHV0T3B0aW9uKTogdm9pZCB7XG4gICAgaWYgKCFvcHRpb24gfHwgIXRoaXMub3B0aW9uc0xpc3RGb3JWaWV3Lm1hcChvcHRpb25zID0+IG9wdGlvbnMudmFsdWUpLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkpIHtcbiAgICAgIGlmICh0aGlzLmlucHV0RmllbGQubmF0aXZlRWxlbWVudC52YWx1ZSA9PT0gJycpIHJldHVybjtcblxuICAgICAgdGhpcy5oYW5kbGVVc2VySW5wdXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZGRJdGVtKG9wdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVVc2VySW5wdXQoKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbXM6IFFkTXVsdGlJbnB1dE9wdGlvbltdID0gW107XG4gICAgaWYgKHRoaXMuZmlsdGVyT3B0aW9ucyAhPT0gJycgJiYgIXRoaXMuY29uZmlnLmRpc2FibGVGcmVldGV4dCkge1xuICAgICAgY29uc3Qgb3B0aW9uSW5kZXggPSB0aGlzLmZpbmRPcHRpb25JbmRleCh0aGlzLmZpbHRlck9wdGlvbnMpO1xuICAgICAgaWYgKG9wdGlvbkluZGV4ID09PSAtMSkge1xuICAgICAgICBpdGVtcy5wdXNoKC4uLnRoaXMuZ2V0U3BsaXRPcHRpb25zKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXRlbXMucHVzaCh0aGlzLm9wdGlvbnNMaXN0Rm9yVmlld1tvcHRpb25JbmRleF0pO1xuICAgICAgfVxuICAgICAgdGhpcy5hZGRJdGVtc1RvQ2hpcFNldChpdGVtcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRJdGVtc1RvQ2hpcFNldChpdGVtczogUWRNdWx0aUlucHV0T3B0aW9uW10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtQXJyYXkpIHtcbiAgICAgIGl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIHRoaXMuZm9ybUFycmF5LnB1c2goaXRlbS52YWx1ZSk7XG4gICAgICAgIHRoaXMubXVsdGlJbnB1dFNlcnZpY2UuYWRkU2VsZWN0ZWRJdGVtKGl0ZW0pO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmZpbHRlck9wdGlvbnMgPSAnJztcbiAgICAgIHRoaXMuY2hhbmdlVmFsdWUoKTtcbiAgICAgIHRoaXMuZm9ybUFycmF5Lm1hcmtBc1RvdWNoZWQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHRoaXMuYWRkSXRlbShpdGVtKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRTcGxpdE9wdGlvbnMoKTogUWRNdWx0aUlucHV0T3B0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLm11bHRpSW5wdXRTZXJ2aWNlLnNwbGl0RmlsdGVyT3B0aW9ucyh0aGlzLmZpbHRlck9wdGlvbnMsIHRoaXMuY29uZmlnLmlucHV0U3BsaXR0ZXJzKTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZE9wdGlvbkluZGV4KG9wdGlvbk5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uc0xpc3RGb3JWaWV3LmZpbmRJbmRleChvcHRpb24gPT4gdGhpcy5nZXRUcmFuc2xhdGlvbihvcHRpb24pID09PSBvcHRpb25OYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkSXRlbShvcHRpb246IFFkTXVsdGlJbnB1dE9wdGlvbik6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyT3B0aW9ucyA9ICcnO1xuXG4gICAgaWYgKHRoaXMuZm9ybUFycmF5KSB7XG4gICAgICB0aGlzLmZvcm1BcnJheS5wdXNoKG9wdGlvbi52YWx1ZSk7XG4gICAgICB0aGlzLmZvcm1BcnJheS5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tdWx0aUlucHV0U2VydmljZS5hZGRTZWxlY3RlZEl0ZW0ob3B0aW9uKTtcbiAgICB0aGlzLmNoYW5nZVZhbHVlKCk7XG4gICAgdGhpcy53cml0ZVZhbHVlKHRoaXMubXVsdGlJbnB1dFNlcnZpY2UuZ2V0SXRlbVZhbHVlcygpKTtcbiAgfVxuXG4gIHByaXZhdGUgaGF2ZU9wdGlvbnNDaGFuZ2VkKGNoYW5nZXMpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIWlzRXF1YWwoY2hhbmdlcy5jb25maWcucHJldmlvdXNWYWx1ZT8ub3B0aW9ucywgY2hhbmdlcy5jb25maWcuY3VycmVudFZhbHVlPy5vcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgYmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0RmllbGQ/Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJdGVtc0FycmF5KCk6IChGb3JtQ29udHJvbCB8IFFkTXVsdGlJbnB1dE9wdGlvbilbXSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUFycmF5ID8gKHRoaXMuZm9ybUFycmF5LmNvbnRyb2xzIGFzIEZvcm1Db250cm9sW10pIDogdGhpcy5nZXRJdGVtcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0T3BNb2RlU3Vic2NyaXB0aW9uKCk6IFN1YnNjcmlwdGlvbiB8IHZvaWQge1xuICAgIGlmICghdGhpcy5ldmVudEJyb2tlclNlcnZpY2UpIHJldHVybjtcblxuICAgIHJldHVybiB0aGlzLmV2ZW50QnJva2VyU2VydmljZS5jb25zdW1lPHsgaXNWaWV3b25seTogYm9vbGVhbiB9Pignb3BlcmF0aW9uX21vZGVfY2hhbmdlZCcpLnN1YnNjcmliZSh0b3BpYyA9PiB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmlnLnZpZXdvbmx5ID09PSAnYm9vbGVhbicpIHJldHVybjtcblxuICAgICAgdGhpcy52aWV3b25seSA9IGdldFZpZXdvbmx5KHRoaXMuY29uZmlnLCB0b3BpYy5wYXlsb2FkLmlzVmlld29ubHkpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8cWQtZm9ybS1sYWJlbFxuICBbbGFiZWxdPVwibGFiZWxcIlxuICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICBbdmlld29ubHldPVwidmlld29ubHlcIlxuICBbY29udHJvbF09XCJmb3JtQXJyYXlcIlxuICBbdG9vbHRpcF09XCJjb25maWc/LnRvb2x0aXBcIlxuICBbZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4+PC9xZC1mb3JtLWxhYmVsPlxuXG48ZGl2XG4gICpuZ0lmPVwiIXJlYWRvbmx5ICYmICF2aWV3b25seVwiXG4gIGNsYXNzPVwicWQtbXVsdGktaW5wdXRfX2lucHV0LWNoaXAtYm94XCJcbiAgKGNsaWNrKT1cImZvY3VzKClcIlxuICAob3BlbmVkKT1cIm9wZW4gPSB0cnVlXCJcbiAgKGNsb3NlZCk9XCJvcGVuID0gZmFsc2VcIlxuICBbcWRQb3BvdmVyT25DbGlja109XCJtZW51XCJcbiAgW3FkUG9wb3ZlckNsb3NlU3RyYXRlZ3ldPVwiJ29uT3V0c2lkZUNsaWNrJ1wiXG4gIFtxZFBvcG92ZXJEaXNhYmxlZF09XCJvcHRpb25zLmxlbmd0aCA9PT0gMFwiXG4gIFtxZFBvcG92ZXJBdXRvU2l6ZV09XCJ7IHdpZHRoOiB0cnVlIH1cIlxuICBbcWRQb3BvdmVyQmFja2dyb3VuZENvbG9yXT1cIid0cmFuc3BhcmVudCdcIlxuICBbcG9zaXRpb25TdHJhdGVneV09XCJbXG4gICAge1xuICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICBvZmZzZXRYOiAtMlxuICAgIH0sXG4gICAge1xuICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICB3ZWlnaHQ6IDAuOCxcbiAgICAgIG9mZnNldFg6IC0yXG4gICAgfVxuICBdXCJcbj5cbiAgPGRpdiBbbmdDbGFzc109XCJoYXNJdGVtcygpID8gJ3FkLW11bHRpLWlucHV0X19jaGlwLW1hcmdpbicgOiAnJ1wiPlxuICAgIDxxZC1tdWx0aS1pbnB1dC1jaGlwXG4gICAgICAqbmdGb3I9XCJsZXQgZWxlbWVudCBvZiBnZXRJdGVyYWJsZUVsZW1lbnRzKCk7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgICAgIFtjbG9zZV09XCIhZGlzYWJsZWQgJiYgIXJlYWRvbmx5ICYmICF2aWV3b25seVwiXG4gICAgICBbaXRlbUNvbnRyb2xdPVwiZm9ybUFycmF5ID8gZWxlbWVudCA6IHVuZGVmaW5lZFwiXG4gICAgICBbdmFsdWVdPVwiZm9ybUFycmF5ID8gdW5kZWZpbmVkIDogZ2V0VHJhbnNsYXRpb24oZWxlbWVudClcIlxuICAgICAgKGNsb3NlQ2xpY2tFbWl0dGVyKT1cImNsb3NlKGluZGV4KVwiXG4gICAgICAoY2xpY2spPVwiaGFuZGxlQ2hpcENsaWNrKCRldmVudClcIlxuICAgID5cbiAgICA8L3FkLW11bHRpLWlucHV0LWNoaXA+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJxZC1tdWx0aS1pbnB1dF9fd3JhcHBlclwiPlxuICAgIDxpbnB1dFxuICAgICAgI2lucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBjbGFzcz1cInFkLW11bHRpLWlucHV0X19ib3hcIlxuICAgICAgKm5nSWY9XCIhcmVhZG9ubHkgJiYgIXZpZXdvbmx5XCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbKG5nTW9kZWwpXT1cImZpbHRlck9wdGlvbnNcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlVmFsdWUoKVwiXG4gICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAoZm9jdXMpPVwiaGFzRm9jdXMgPSB0cnVlXCJcbiAgICAgIChibHVyKT1cImhhbmRsZUJsdXIoKVwiXG4gICAgICBbbmdDbGFzc109XCJvcGVuID8gJ3FkLW11bHRpLWlucHV0X19ib3gtLW9wZW4nIDogJydcIlxuICAgICAgW2F0dHIuZGF0YS10ZXN0LWlkXT1cInRlc3RJZCArICctaW5wdXQnXCJcbiAgICAvPlxuXG4gICAgPGRpdiBjbGFzcz1cInFkLW11bHRpLWlucHV0X19ib3ggcWQtbXVsdGktaW5wdXRfX2JveC0tcmVhZG9ubHlcIiAqbmdJZj1cInJlYWRvbmx5ICYmICFoYXNJdGVtcygpXCI+Jm5ic3A7PC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicWQtbXVsdGktaW5wdXRfX2JveCBxZC1tdWx0aS1pbnB1dF9fYm94LS12aWV3b25seVwiICpuZ0lmPVwidmlld29ubHkgJiYgIWhhc0l0ZW1zKClcIj4mbmJzcDs8L2Rpdj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjbWVudT5cbiAgICAgIDxxZC1tdWx0aS1pbnB1dC1tZW51XG4gICAgICAgIFtvcHRpb25zTGlzdEZvclZpZXddPVwib3B0aW9uc0xpc3RGb3JWaWV3XCJcbiAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuICAgICAgICAoaXRlbUNsaWNrKT1cImhhbmRsZUNsaWNrKCRldmVudClcIlxuICAgICAgPjwvcWQtbXVsdGktaW5wdXQtbWVudT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnICYmICFyZWFkb25seSAmJiAhdmlld29ubHlcIj5cbiAgPHFkLWZvcm0taGludFxuICAgIFtoaW50XT1cImhhc0hpbnQgPyBjb25maWcuaGludC5pMThuIDogJydcIlxuICAgIFtjb250cm9sXT1cImZvcm1BcnJheVwiXG4gICAgW2hhc0Vycm9yXT1cImhhc0Vycm9yXCJcbiAgICBbaGludEFjdGlvbl09XCJoaW50QWN0aW9uXCJcbiAgICBbZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4gID48L3FkLWZvcm0taGludD5cbjwvbmctY29udGFpbmVyPlxuXG48cWQtZm9ybS1yZWFkb25seVxuICAqbmdJZj1cInJlYWRvbmx5XCJcbiAgW3ZhbHVlc109XCJnZXRWYWx1ZXMoKVwiXG4gIFtyZWFkb25seUFjdGlvbl09XCJyZWFkb25seUFjdGlvblwiXG4gIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkXCJcbj48L3FkLWZvcm0tcmVhZG9ubHk+XG5cbjxxZC1mb3JtLXZpZXdvbmx5XG4gICpuZ0lmPVwidmlld29ubHlcIlxuICBbdmFsdWVzXT1cImdldFZhbHVlcygpXCJcbiAgW3ZpZXdvbmx5QWN0aW9uXT1cInZpZXdvbmx5QWN0aW9uXCJcbiAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuPjwvcWQtZm9ybS12aWV3b25seT5cbiJdfQ==
@@ -10639,11 +10639,8 @@ class QdCalendarComponent {
10639
10639
  this.weeks = Array.from({ length: Math.ceil(dates.length / 7) }, () => dates.splice(0, 7));
10640
10640
  }
10641
10641
  fillDates(momentObj) {
10642
- const firstOfMonth = moment(momentObj).startOf('month').day();
10643
10642
  const lastOfMonth = moment(momentObj).endOf('month').day();
10644
- const firstDayOfGrid = moment(momentObj)
10645
- .startOf('month')
10646
- .subtract(firstOfMonth === 0 ? 6 : firstOfMonth - 1, 'days');
10643
+ const firstDayOfGrid = moment(momentObj).locale(this.language).startOf('month').startOf('week');
10647
10644
  const lastDayOfGrid = moment(momentObj).endOf('month').subtract(lastOfMonth, 'days').add(7, 'days');
10648
10645
  const startCalendar = firstDayOfGrid.date();
10649
10646
  return range(startCalendar, startCalendar + lastDayOfGrid.diff(firstDayOfGrid, 'days')).map(date => {
@@ -14747,13 +14744,13 @@ class QdMultiInputComponent {
14747
14744
  return this.optionsListForView.findIndex(option => this.getTranslation(option) === optionName);
14748
14745
  }
14749
14746
  addItem(option) {
14747
+ this.filterOptions = '';
14750
14748
  if (this.formArray) {
14751
14749
  this.formArray.push(option.value);
14752
14750
  this.formArray.markAsTouched();
14753
14751
  return;
14754
14752
  }
14755
14753
  this.multiInputService.addSelectedItem(option);
14756
- this.filterOptions = '';
14757
14754
  this.changeValue();
14758
14755
  this.writeValue(this.multiInputService.getItemValues());
14759
14756
  }