raain-app 1.5.21 → 1.5.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.5.21] - 2025-06-09
11
+
10
12
  ## [1.5.20] - 2025-06-09
11
13
 
12
14
  ### Fixed
@@ -172,7 +172,8 @@ export class CompareManager {
172
172
  const dates = targetsOrdered.map((t) => t.date);
173
173
  const qualities = dates
174
174
  .filter((d) => !!d)
175
- .map((d) => this.getRainComputationQuality(d));
175
+ .map((d) => this.getRainComputationQuality(d))
176
+ .filter((rcq) => !!rcq);
176
177
  this.buildCompares = SpeedMatrixContainer.BuildCompares(qualities, !withCompareDuplicate);
177
178
  return this.buildCompares;
178
179
  }
@@ -253,4 +254,4 @@ export class CompareManager {
253
254
  this.selectGaugeInCompare();
254
255
  }
255
256
  }
256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcGFyZU1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9zaGFyZWQvdG9vbHMvQ29tcGFyZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNuQyxPQUFPLEVBT0gsb0JBQW9CLEdBQ3ZCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFtQmpDLE1BQU0sT0FBTyxjQUFjO0lBNkJ2QixZQUNjLGNBQThCLEVBQ2pDLFlBQXdCLEdBQUcsRUFBRSxHQUFFLENBQUM7UUFEN0IsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ2pDLGNBQVMsR0FBVCxTQUFTLENBQXVCO1FBRXZDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBSUQsSUFBVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFXLFFBQVEsQ0FBQyxRQUFrQjtRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztJQUM5QixDQUFDO0lBRVMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFXLEVBQUUsS0FBVyxFQUFFLE9BQWU7UUFDbEUsTUFBTSxXQUFXLEdBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDcEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDNUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDdkQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxTQUFTLENBQUMsT0FBTyxF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Q0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWFwTGF0TG5nfSBmcm9tICdyYWFpbi11aSc7XG5pbXBvcnQge1xuICAgIElDb21wYXJlUGVyRGF0ZSxcbiAgICBJQ29tcGFyZXMsXG4gICAgUG9zaXRpb25WYWx1ZSxcbiAgICBRdWFsaXR5UG9pbnQsXG4gICAgUmFpbkNvbXB1dGF0aW9uUXVhbGl0eSxcbiAgICBSYWluTm9kZSxcbiAgICBTcGVlZE1hdHJpeENvbnRhaW5lcixcbn0gZnJvbSAncmFhaW4tbW9kZWwnO1xuaW1wb3J0IHtYWVR5cGV9IGZyb20gJy4uL3h5dHlwZSc7XG5pbXBvcnQge1Byb2ZpbGVTZXJ2aWNlfSBmcm9tICcuLi9wcm9maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHtGcmFtZVNldH0gZnJvbSAnLi9GcmFtZVNldCc7XG5pbXBvcnQge0dhdWdlTm9kZUZpbHRlcn0gZnJvbSAnLi9HYXVnZU5vZGVGaWx0ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDb21wYXJlVGFyZ2V0IHtcbiAgICBkYXRlOiBEYXRlO1xuICAgIHJhaW5Db21wdXRhdGlvbklkOiBzdHJpbmc7XG4gICAgcmFpbkNvbXB1dGF0aW9uUXVhbGl0eUlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVVJQ29tcGFyZSB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGNvbXBhcmVQb2ludHM6IFhZVHlwZVtdO1xuICAgIGNvbXBhcmVQb2ludHNNYXg6IFhZVHlwZTtcbiAgICBjb21wYXJlUG9pbnRzSGlzdG9yeTogUXVhbGl0eVBvaW50W107XG4gICAgcmVtYXJrczogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ29tcGFyZU1hbmFnZXIge1xuICAgIHB1YmxpYyBnYXVnZXNUb0ZpbHRlcjogR2F1Z2VOb2RlRmlsdGVyW107XG4gICAgcHVibGljIHJhaW5Ob2RlR2F1Z2VzOiBzdHJpbmdbXTtcblxuICAgIHB1YmxpYyBnYXVnZXNJbk1hcDogTWFwTGF0TG5nW107XG4gICAgcHVibGljIGdhdWdlc0luQ29tcGFyZTogTWFwTGF0TG5nW107XG4gICAgcHVibGljIHNlbGVjdGVkR2F1Z2VzOiBNYXBMYXRMbmdbXTtcbiAgICBwdWJsaWMgc2VsZWN0ZWRQaXhlbHM6IE1hcExhdExuZ1tdO1xuICAgIHB1YmxpYyBwaXhlbHNTb2x1dGlvbnM6IE1hcExhdExuZ1tdW107XG5cbiAgICAvLyBmcm9tIGNvbXBhcmVzVGltZWxpbmVcbiAgICBwdWJsaWMgY29tcGFyZU5hbWVzOiBzdHJpbmdbXTtcbiAgICBwdWJsaWMgdWlDb21wYXJlczogSVVJQ29tcGFyZVtdO1xuICAgIHB1YmxpYyBjb21wYXJlU3BlZWRNYXRyaXg6IFBvc2l0aW9uVmFsdWVbXTtcbiAgICBwdWJsaWMgY29tcGFyZVZlcnNpb246IHN0cmluZztcbiAgICBwdWJsaWMgY29tcGFyZVRydXN0ZWRJbmRpY2F0b3I6IG51bWJlcjtcblxuICAgIHB1YmxpYyBjdXJyZW50UXVhbGl0eURvbmVEYXRlOiBEYXRlO1xuICAgIHB1YmxpYyBjdXJyZW50UXVhbGl0eUxhdW5jaGVkQnk6IHN0cmluZztcbiAgICBwdWJsaWMgY3VycmVudFF1YWxpdHlUaW1lU3BlbnRJbk1zOiBudW1iZXI7XG4gICAgcHVibGljIGdsb2JhbENvbXBhcmVQb2ludHM6IFhZVHlwZVtdO1xuICAgIHB1YmxpYyBnbG9iYWxDb21wYXJlUG9pbnRzTWF4OiBYWVR5cGU7XG5cbiAgICBwcm90ZWN0ZWQgYnVpbGRDb21wYXJlczogSUNvbXBhcmVzO1xuICAgIHByb3RlY3RlZCBzZWxlY3RlZEdhdWdlOiBRdWFsaXR5UG9pbnQ7XG4gICAgcHJvdGVjdGVkIHNlbGVjdGVkR2F1Z2VJblBvaW50czogUXVhbGl0eVBvaW50O1xuICAgIHByb3RlY3RlZCBzZWxlY3RlZEdhdWdlSW5Qb2ludHNEZXRhaWw6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgcmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzUGVyRGF0ZTogYW55O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBwcm9maWxlU2VydmljZTogUHJvZmlsZVNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBvbkNoYW5nZXM6ICgpID0+IHZvaWQgPSAoKSA9PiB7fVxuICAgICkge1xuICAgICAgICB0aGlzLmNsZWFuQWxsKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9yYWluTm9kZTogUmFpbk5vZGU7XG5cbiAgICBwdWJsaWMgZ2V0IHJhaW5Ob2RlKCk6IFJhaW5Ob2RlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JhaW5Ob2RlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgcmFpbk5vZGUocmFpbk5vZGU6IFJhaW5Ob2RlKSB7XG4gICAgICAgIHRoaXMuX3JhaW5Ob2RlID0gcmFpbk5vZGU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBDb21wYXJlRGF0ZShkYXRlMTogRGF0ZSwgZGF0ZTI6IERhdGUsIG1pbnV0ZXM6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBkYXRlMUFzRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKGRhdGUxLmdldFRpbWUoKSk7XG4gICAgICAgIGNvbnN0IGRhdGUyRGlmZiA9IG5ldyBEYXRlKGRhdGUyLmdldFRpbWUoKSk7XG4gICAgICAgIGRhdGUyRGlmZi5zZXRNaW51dGVzKGRhdGUyRGlmZi5nZXRNaW51dGVzKCkgKyBtaW51dGVzKTtcbiAgICAgICAgY29uc3QgZGlmZiA9IE1hdGgucm91bmQoKGRhdGUxQXNEYXRlLmdldFRpbWUoKSAtIGRhdGUyRGlmZi5nZXRUaW1lKCkpIC8gKDYwICogMTAwMCkpO1xuICAgICAgICByZXR1cm4gZGlmZiA9PT0gMDtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYW5BbGwoKSB7XG4gICAgICAgIHRoaXMuZ2F1Z2VzSW5NYXAgPSBbXTtcbiAgICAgICAgdGhpcy5nYXVnZXNUb0ZpbHRlciA9IFtdO1xuICAgICAgICB0aGlzLnJhaW5Ob2RlR2F1Z2VzID0gW107XG4gICAgICAgIHRoaXMuZ2F1Z2VzSW5Db21wYXJlID0gW107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRHYXVnZXMgPSBbXTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFBpeGVscyA9IFtdO1xuICAgICAgICB0aGlzLnBpeGVsc1NvbHV0aW9ucyA9IFtdO1xuXG4gICAgICAgIHRoaXMuYnVpbGRDb21wYXJlcyA9IHtcbiAgICAgICAgICAgIGNvbXBhcmVzUGVyRGF0ZTogW10sXG4gICAgICAgICAgICBjb21wYXJlQ3VtdWxhdGl2ZTogbnVsbCxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5nbG9iYWxDb21wYXJlUG9pbnRzID0gW107XG4gICAgICAgIHRoaXMuZ2xvYmFsQ29tcGFyZVBvaW50c01heCA9IG5ldyBYWVR5cGUoMCwgMCk7XG4gICAgICAgIHRoaXMucmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzUGVyRGF0ZSA9IHt9O1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRHYXVnZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRHYXVnZUluUG9pbnRzID0gbnVsbDtcbiAgICAgICAgdGhpcy5jbGVhbkNvbXBhcmVRdWFsaXR5KCdubyBjb21wYXJlIHlldCcpO1xuICAgIH1cblxuICAgIGFzeW5jIHJlZnJlc2hDb21wYXJlUXVhbGl0eShmcmFtZVNldDogRnJhbWVTZXQpIHtcbiAgICAgICAgY29uc3QgY29tcGFyZVBlckRhdGUgPSB0aGlzLmdldENvbXBhcmVQZXJEYXRlKGZyYW1lU2V0LmRhdGUpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFjb21wYXJlUGVyRGF0ZSB8fFxuICAgICAgICAgICAgIWNvbXBhcmVQZXJEYXRlLnJhaW5Db21wdXRhdGlvblF1YWxpdHk/LnF1YWxpdHlTcGVlZE1hdHJpeENvbnRhaW5lclxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYW5Db21wYXJlUXVhbGl0eShcbiAgICAgICAgICAgICAgICAnbm8gY3VycmVudCBxdWFsaXR5ICcgKyBPYmplY3Qua2V5cyh0aGlzLnJhaW5Db21wdXRhdGlvblF1YWxpdGllc1BlckRhdGUpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZXMoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVpQ29tcGFyZXM6IElVSUNvbXBhcmVbXSA9IGNvbXBhcmVQZXJEYXRlLmNvbXBhcmVUaW1lbGluZS5tYXAoKGMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbmFtZTogYy5uYW1lLFxuICAgICAgICAgICAgICAgIGNvbXBhcmVQb2ludHM6IGMucXVhbGl0eVBvaW50cy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFhZVHlwZShwLmdldEdhdWdlVmFsdWUoKSwgcC5nZXRSYWluVmFsdWUoKSwgMiwgcC5nYXVnZUxhYmVsLCBwLmdhdWdlSWQpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjb21wYXJlUG9pbnRzTWF4OiBuZXcgWFlUeXBlKGMubWF4VmFsdWUgKiAxLjIsIGMubWF4VmFsdWUgKiAxLjIpLFxuICAgICAgICAgICAgICAgIGNvbXBhcmVQb2ludHNIaXN0b3J5OiBjLnF1YWxpdHlQb2ludHNMZWdhY3ksXG4gICAgICAgICAgICAgICAgcmVtYXJrczogYy5yZW1hcmtzLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jdXJyZW50UXVhbGl0eURvbmVEYXRlID0gY29tcGFyZVBlckRhdGUucmFpbkNvbXB1dGF0aW9uUXVhbGl0eS5pc0RvbmVEYXRlO1xuICAgICAgICB0aGlzLmN1cnJlbnRRdWFsaXR5VGltZVNwZW50SW5NcyA9IGNvbXBhcmVQZXJEYXRlLnJhaW5Db21wdXRhdGlvblF1YWxpdHkudGltZVNwZW50SW5NcztcbiAgICAgICAgdGhpcy5jdXJyZW50UXVhbGl0eUxhdW5jaGVkQnkgPSBjb21wYXJlUGVyRGF0ZS5yYWluQ29tcHV0YXRpb25RdWFsaXR5LmxhdW5jaGVkQnk7XG4gICAgICAgIHRoaXMuY29tcGFyZVZlcnNpb24gPSBjb21wYXJlUGVyRGF0ZS5yYWluQ29tcHV0YXRpb25RdWFsaXR5LmdldFZlcnNpb24oKTtcbiAgICAgICAgdGhpcy5jb21wYXJlU3BlZWRNYXRyaXggPVxuICAgICAgICAgICAgY29tcGFyZVBlckRhdGUucmFpbkNvbXB1dGF0aW9uUXVhbGl0eS5xdWFsaXR5U3BlZWRNYXRyaXhDb250YWluZXIucmVuZGVyTWVyZ2VkTWF0cml4KHtcbiAgICAgICAgICAgICAgICBub3JtYWxpemU6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb21wYXJlVHJ1c3RlZEluZGljYXRvciA9XG4gICAgICAgICAgICBjb21wYXJlUGVyRGF0ZS5yYWluQ29tcHV0YXRpb25RdWFsaXR5LnF1YWxpdHlTcGVlZE1hdHJpeENvbnRhaW5lci5nZXRUcnVzdGVkSW5kaWNhdG9ycygpWzBdO1xuICAgICAgICB0aGlzLmNvbXBhcmVOYW1lcyA9IHVpQ29tcGFyZXMubWFwKChjKSA9PiBjLm5hbWUpO1xuICAgICAgICB0aGlzLnVpQ29tcGFyZXMgPSB1aUNvbXBhcmVzO1xuXG4gICAgICAgIHRoaXMub25DaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVmcmVzaEdsb2JhbENvbXBhcmVRdWFsaXR5KFxuICAgICAgICB0YXJnZXRzT3JkZXJlZDogSUNvbXBhcmVUYXJnZXRbXSxcbiAgICAgICAgd2l0aENvbXBhcmVEdXBsaWNhdGU6IGJvb2xlYW5cbiAgICApIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hSYWluQ29tcHV0YXRpb25RdWFsaXRpZXModGFyZ2V0c09yZGVyZWQpO1xuXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmJ1aWxkQ29tcGFyZXNUaW1lbGluZSh0YXJnZXRzT3JkZXJlZCwgd2l0aENvbXBhcmVEdXBsaWNhdGUpO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuYnVpbGRDb21wYXJlcy5jb21wYXJlQ3VtdWxhdGl2ZSkge1xuICAgICAgICAgICAgICAgIC8vIHRocm93IEVycm9yKCduZWVkcyBjdW11bGF0aXZlIGNvbXBhcmUnKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNvdW50Rm9yQXZlcmFnZSA9IHRhcmdldHNPcmRlcmVkLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IG1heFZhbHVlID0gKHRoaXMuYnVpbGRDb21wYXJlcy5jb21wYXJlQ3VtdWxhdGl2ZS5tYXhWYWx1ZSAvIDEyKSAqIDEuMjtcbiAgICAgICAgICAgIHRoaXMuZ2xvYmFsQ29tcGFyZVBvaW50cyA9IHRoaXMuYnVpbGRDb21wYXJlcy5jb21wYXJlQ3VtdWxhdGl2ZS5xdWFsaXR5UG9pbnRzLm1hcChcbiAgICAgICAgICAgICAgICAocXApID0+XG4gICAgICAgICAgICAgICAgICAgIG5ldyBYWVR5cGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBxcC5nZXRHYXVnZVZhbHVlKCkgLyAxMixcbiAgICAgICAgICAgICAgICAgICAgICAgIHFwLmdldFJhaW5WYWx1ZSgpIC8gMTIsXG4gICAgICAgICAgICAgICAgICAgICAgICAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgcXAuZ2F1Z2VMYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHFwLmdhdWdlSWRcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZ2xvYmFsQ29tcGFyZVBvaW50c01heCA9IG5ldyBYWVR5cGUobWF4VmFsdWUsIG1heFZhbHVlKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgc2V0R2F1Z2VzSW5NYXAoKSB7XG4gICAgICAgIGNvbnN0IGdhdWdlc1RvRmlsdGVyID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRHYXVnZXModGhpcy5yYWluTm9kZT8uaWQpO1xuICAgICAgICB0aGlzLmdhdWdlc1RvRmlsdGVyID0gZ2F1Z2VzVG9GaWx0ZXJcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgYS5hcHByb3hEaXN0YW5jZUZyb20odGhpcy5yYWluTm9kZS5nZXRDZW50ZXIoKSkgLVxuICAgICAgICAgICAgICAgICAgICBiLmFwcHJveERpc3RhbmNlRnJvbSh0aGlzLnJhaW5Ob2RlLmdldENlbnRlcigpKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmZpbHRlcigodiwgaW5kZXgpID0+IGluZGV4IDwgMjAwKTtcblxuICAgICAgICB0aGlzLnJhaW5Ob2RlR2F1Z2VzID0gdGhpcy5yYWluTm9kZS5nZXRMaW5rcygnZ2F1Z2UnKS5tYXAoKGwpID0+IGwuZ2V0SWQoKSk7XG5cbiAgICAgICAgY29uc3QgdmlzaWJsZUdhdWdlcyA9IHRoaXMuZ2F1Z2VzVG9GaWx0ZXIuZmlsdGVyKFxuICAgICAgICAgICAgKGcpID0+IHRoaXMucmFpbk5vZGVHYXVnZXMuaW5kZXhPZihnLmlkKSA+IC0xXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IG1hcExhdExuZzogTWFwTGF0TG5nW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBnYXVnZSBvZiB2aXNpYmxlR2F1Z2VzKSB7XG4gICAgICAgICAgICBtYXBMYXRMbmcucHVzaChcbiAgICAgICAgICAgICAgICBuZXcgTWFwTGF0TG5nKGdhdWdlLmxhdGl0dWRlLCBnYXVnZS5sb25naXR1ZGUsIHVuZGVmaW5lZCwgZ2F1Z2UuaWQsIGdhdWdlLm5hbWUpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ2F1Z2VzSW5NYXAgPSBtYXBMYXRMbmc7XG4gICAgfVxuXG4gICAgYXN5bmMgc2V0R2F1Z2VzSW5Db21wYXJlKCkge1xuICAgICAgICBjb25zdCBxdWFsaXR5UG9pbnRzOiBRdWFsaXR5UG9pbnRbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbXBhcmUgb2YgdGhpcy51aUNvbXBhcmVzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHF1YWxpdHlQb2ludCBvZiBjb21wYXJlLmNvbXBhcmVQb2ludHNIaXN0b3J5KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWxyZWFkeUFkZGVkID0gcXVhbGl0eVBvaW50cy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChwKSA9PiBwPy5nYXVnZUlkID09PSBxdWFsaXR5UG9pbnQuZ2F1Z2VJZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKGFscmVhZHlBZGRlZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcXVhbGl0eVBvaW50cy5wdXNoKHF1YWxpdHlQb2ludCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5nYXVnZXNJbkNvbXBhcmUgPSBxdWFsaXR5UG9pbnRzLm1hcCgocCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBNYXBMYXRMbmcoXG4gICAgICAgICAgICAgICAgcC5nYXVnZUNhcnRlc2lhblZhbHVlLmxhdCxcbiAgICAgICAgICAgICAgICBwLmdhdWdlQ2FydGVzaWFuVmFsdWUubG5nLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgcC5nYXVnZUlkLFxuICAgICAgICAgICAgICAgIHAuZ2F1Z2VMYWJlbCArICc+JyArIHAuZ2V0R2F1Z2VWYWx1ZSgpLFxuICAgICAgICAgICAgICAgIHAuZ2V0R2F1Z2VWYWx1ZSgpXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnJlc2V0U2VsZWN0ZWRHYXVnZXMoKTtcbiAgICB9XG5cbiAgICBhc3luYyBzZWxlY3RHYXVnZShnYXVnZUlkOiBzdHJpbmcsIGNvbXBhcmVJbmRleDogbnVtYmVyKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdzZWxlY3RHYXVnZScsIGdhdWdlSWQsIGNvbXBhcmVJbmRleCk7XG5cbiAgICAgICAgaWYgKGdhdWdlSWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHh5cyA9IHRoaXMuZ2V0Q3VycmVudFF1YWxpdHlQb2ludHMoY29tcGFyZUluZGV4KS5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKHApID0+IHAuZ2F1Z2VJZCA9PT0gZ2F1Z2VJZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRHYXVnZSA9IHh5cy5sZW5ndGggPT09IDEgPyB4eXNbMF0gOiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEdhdWdlID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZEdhdWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXNldFNlbGVjdGVkR2F1Z2VzKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZWxlY3RlZEdhdWdlSW5Qb2ludHMgPSB0aGlzLmdldEN1cnJlbnRRdWFsaXR5UG9pbnRzKGNvbXBhcmVJbmRleCkuZmlsdGVyKFxuICAgICAgICAgICAgKHApID0+IHAuZ2F1Z2VJZCA9PT0gdGhpcy5zZWxlY3RlZEdhdWdlLmdhdWdlSWRcbiAgICAgICAgKTtcbiAgICAgICAgbGV0IHBpeGVsc1NvbHV0aW9uczogTWFwTGF0TG5nW11bXSA9IFtdO1xuXG4gICAgICAgIGlmIChzZWxlY3RlZEdhdWdlSW5Qb2ludHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCByZW1hcmtzID0gSlNPTi5wYXJzZShzZWxlY3RlZEdhdWdlSW5Qb2ludHNbMF0ucmVtYXJrKS5zb3J0KFxuICAgICAgICAgICAgICAgIChhLCBiKSA9PiBhLmNyaXRlcmlhQXR0ZW1wdGVkVG9CZU1pbmltdW0gLSBiLmNyaXRlcmlhQXR0ZW1wdGVkVG9CZU1pbmltdW1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhyZW1hcmtzKTtcbiAgICAgICAgICAgIHBpeGVsc1NvbHV0aW9ucyA9IHJlbWFya3MubWFwKChyZW1hcmspID0+XG4gICAgICAgICAgICAgICAgcmVtYXJrLnNvbHV0aW9uRm9yR2F1Z2UucGl4ZWxzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgTWFwTGF0TG5nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAueSArIDAuMDA1LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAueCArIDAuMDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJyArICFyZW1hcmsubm90UG9zc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJycgKyAhcmVtYXJrLm5vdFBvc3NpYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCB0aW1lRGVsdGFJbk1pbnV0ZXMgPSBzZWxlY3RlZEdhdWdlSW5Qb2ludHNbMF0uZ2V0VGltZURlbHRhSW5NaW51dGVzKCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50c0RldGFpbCA9XG4gICAgICAgICAgICAgICAgJycgK1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkR2F1Z2VJblBvaW50c1swXS5nYXVnZUxhYmVsICtcbiAgICAgICAgICAgICAgICAnID4gJyArXG4gICAgICAgICAgICAgICAgTWF0aC5yb3VuZChzZWxlY3RlZEdhdWdlSW5Qb2ludHNbMF0uZ2V0R2F1Z2VWYWx1ZSgpICogMTAwKSAvIDEwMCArXG4gICAgICAgICAgICAgICAgJyAvICcgK1xuICAgICAgICAgICAgICAgIE1hdGgucm91bmQoc2VsZWN0ZWRHYXVnZUluUG9pbnRzWzBdLmdldFJhaW5WYWx1ZSgpICogMTAwKSAvIDEwMCArXG4gICAgICAgICAgICAgICAgJyBkVD0nICtcbiAgICAgICAgICAgICAgICB0aW1lRGVsdGFJbk1pbnV0ZXM7XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRHYXVnZUluUG9pbnRzID0gc2VsZWN0ZWRHYXVnZUluUG9pbnRzWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEdhdWdlSW5Qb2ludHMgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEdhdWdlcyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFBpeGVscyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5waXhlbHNTb2x1dGlvbnMgPSBbXTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRHYXVnZXMgPSBbXG4gICAgICAgICAgICBuZXcgTWFwTGF0TG5nKFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRHYXVnZUluUG9pbnRzLmdhdWdlQ2FydGVzaWFuVmFsdWUubGF0LFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRHYXVnZUluUG9pbnRzLmdhdWdlQ2FydGVzaWFuVmFsdWUubG5nLFxuICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cy5nYXVnZUlkLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRHYXVnZUluUG9pbnRzLmdhdWdlTGFiZWwgK1xuICAgICAgICAgICAgICAgICAgICAnPicgK1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cy5nYXVnZUNhcnRlc2lhblZhbHVlLnZhbHVlLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRHYXVnZUluUG9pbnRzLmdhdWdlQ2FydGVzaWFuVmFsdWUudmFsdWVcbiAgICAgICAgICAgICksXG4gICAgICAgIF07XG5cbiAgICAgICAgdGhpcy5zZWxlY3RHYXVnZUluQ29tcGFyZSgpO1xuXG4gICAgICAgIGNvbnN0IHBpeGVsczogTWFwTGF0TG5nW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCByYWluQ2FydGVzaWFuVmFsdWUgb2YgdGhpcy5zZWxlY3RlZEdhdWdlSW5Qb2ludHMucmFpbkNhcnRlc2lhblZhbHVlcykge1xuICAgICAgICAgICAgcGl4ZWxzLnB1c2goXG4gICAgICAgICAgICAgICAgbmV3IE1hcExhdExuZyhyYWluQ2FydGVzaWFuVmFsdWUubGF0ICsgMC4wMDUsIHJhaW5DYXJ0ZXNpYW5WYWx1ZS5sbmcgKyAwLjAxKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkUGl4ZWxzID0gcGl4ZWxzO1xuXG4gICAgICAgIHRoaXMucGl4ZWxzU29sdXRpb25zID0gcGl4ZWxzU29sdXRpb25zO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBidWlsZENvbXBhcmVzVGltZWxpbmUoXG4gICAgICAgIHRhcmdldHNPcmRlcmVkOiBJQ29tcGFyZVRhcmdldFtdLFxuICAgICAgICB3aXRoQ29tcGFyZUR1cGxpY2F0ZTogYm9vbGVhblxuICAgICk6IFByb21pc2U8SUNvbXBhcmVzPiB7XG4gICAgICAgIGNvbnN0IGRhdGVzOiBEYXRlW10gPSB0YXJnZXRzT3JkZXJlZC5tYXAoKHQpID0+IHQuZGF0ZSk7XG4gICAgICAgIGNvbnN0IHF1YWxpdGllczogUmFpbkNvbXB1dGF0aW9uUXVhbGl0eVtdID0gZGF0ZXNcbiAgICAgICAgICAgIC5maWx0ZXIoKGQpID0+ICEhZClcbiAgICAgICAgICAgIC5tYXAoKGQpID0+IHRoaXMuZ2V0UmFpbkNvbXB1dGF0aW9uUXVhbGl0eShkKSk7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wYXJlcyA9IFNwZWVkTWF0cml4Q29udGFpbmVyLkJ1aWxkQ29tcGFyZXMocXVhbGl0aWVzLCAhd2l0aENvbXBhcmVEdXBsaWNhdGUpO1xuICAgICAgICByZXR1cm4gdGhpcy5idWlsZENvbXBhcmVzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRDb21wYXJlUGVyRGF0ZShkYXRlOiBEYXRlKTogSUNvbXBhcmVQZXJEYXRlIHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmJ1aWxkQ29tcGFyZXMuY29tcGFyZXNQZXJEYXRlLmZpbHRlcihcbiAgICAgICAgICAgIChjKSA9PiBjLmRhdGUuZ2V0VGltZSgpID09PSBkYXRlLmdldFRpbWUoKVxuICAgICAgICApO1xuICAgICAgICBpZiAoZXhpc3RpbmcubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gZXhpc3RpbmdbMF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEN1cnJlbnRRdWFsaXR5UG9pbnRzKGNvbXBhcmVJbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmIChjb21wYXJlSW5kZXggPCAwIHx8IHRoaXMuY29tcGFyZU5hbWVzLmxlbmd0aCA8IGNvbXBhcmVJbmRleCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudWlDb21wYXJlc1tjb21wYXJlSW5kZXhdLmNvbXBhcmVQb2ludHNIaXN0b3J5O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjbGVhbkNvbXBhcmVRdWFsaXR5KGRldGFpbHM/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jb21wYXJlVmVyc2lvbiA9IGRldGFpbHM7XG4gICAgICAgIHRoaXMuY29tcGFyZU5hbWVzID0gW107XG4gICAgICAgIHRoaXMudWlDb21wYXJlcyA9IFtdO1xuICAgICAgICB0aGlzLmNvbXBhcmVTcGVlZE1hdHJpeCA9IFtdO1xuICAgICAgICB0aGlzLmNvbXBhcmVUcnVzdGVkSW5kaWNhdG9yID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIHRoaXMuY3VycmVudFF1YWxpdHlEb25lRGF0ZSA9IG5ldyBEYXRlKC0xKTtcbiAgICAgICAgdGhpcy5jdXJyZW50UXVhbGl0eUxhdW5jaGVkQnkgPSAnJztcbiAgICAgICAgdGhpcy5jdXJyZW50UXVhbGl0eVRpbWVTcGVudEluTXMgPSAtMTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgZmV0Y2hSYWluQ29tcHV0YXRpb25RdWFsaXRpZXModGFyZ2V0c09yZGVyZWQ6IElDb21wYXJlVGFyZ2V0W10pIHtcbiAgICAgICAgZm9yIChjb25zdCB0YXJnZXQgb2YgdGFyZ2V0c09yZGVyZWQpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhdGhpcy5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXNQZXJEYXRlW3RhcmdldC5kYXRlLnRvSVNPU3RyaW5nKCldICYmXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnJhaW5Db21wdXRhdGlvblF1YWxpdHlJZFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmFpbkNvbXB1dGF0aW9uUXVhbGl0eSA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0UmFpbkNvbXBhcmVCeURhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJhaW5Ob2RlLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnJhaW5Db21wdXRhdGlvbklkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmRhdGVcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJhaW5Db21wdXRhdGlvblF1YWxpdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzUGVyRGF0ZVt0YXJnZXQuZGF0ZS50b0lTT1N0cmluZygpXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpbkNvbXB1dGF0aW9uUXVhbGl0eTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRSYWluQ29tcHV0YXRpb25RdWFsaXR5KGRhdGU6IERhdGUpOiBSYWluQ29tcHV0YXRpb25RdWFsaXR5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzUGVyRGF0ZVtkYXRlLnRvSVNPU3RyaW5nKCldO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZWxlY3RHYXVnZUluQ29tcGFyZSgpIHtcbiAgICAgICAgY29uc3QgZ2xvYmFsQ29tcGFyZVBvaW50cyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5nbG9iYWxDb21wYXJlUG9pbnRzKSk7XG4gICAgICAgIGZvciAoY29uc3QgcCBvZiBnbG9iYWxDb21wYXJlUG9pbnRzKSB7XG4gICAgICAgICAgICBpZiAocC5pZCA9PT0gdGhpcy5zZWxlY3RlZEdhdWdlSW5Qb2ludHM/LmdhdWdlSWQpIHtcbiAgICAgICAgICAgICAgICBwLnIgPSAxMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcC5yID0gMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdsb2JhbENvbXBhcmVQb2ludHMgPSBnbG9iYWxDb21wYXJlUG9pbnRzO1xuXG4gICAgICAgIGZvciAoY29uc3QgY29tcGFyZSBvZiB0aGlzLnVpQ29tcGFyZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBhcmVQb2ludHMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbXBhcmUuY29tcGFyZVBvaW50cykpO1xuICAgICAgICAgICAgY29tcGFyZVBvaW50cy5mb3JFYWNoKChwKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHAuaWQgPT09IHRoaXMuc2VsZWN0ZWRHYXVnZUluUG9pbnRzPy5nYXVnZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHAuciA9IDEwO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHAuciA9IDM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb21wYXJlLmNvbXBhcmVQb2ludHMgPSBjb21wYXJlUG9pbnRzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc2V0U2VsZWN0ZWRHYXVnZXMoKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdyZXNldFNlbGVjdGVkR2F1Z2VzIHJlc2V0Jyk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRHYXVnZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRHYXVnZUluUG9pbnRzID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdhdWdlcyA9IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkUGl4ZWxzID0gW107XG4gICAgICAgIHRoaXMucGl4ZWxzU29sdXRpb25zID0gW107XG4gICAgICAgIHRoaXMuc2VsZWN0R2F1Z2VJbkNvbXBhcmUoKTtcbiAgICB9XG59XG4iXX0=
257
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcGFyZU1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9zaGFyZWQvdG9vbHMvQ29tcGFyZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNuQyxPQUFPLEVBT0gsb0JBQW9CLEdBQ3ZCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFtQmpDLE1BQU0sT0FBTyxjQUFjO0lBNkJ2QixZQUNjLGNBQThCLEVBQ2pDLFlBQXdCLEdBQUcsRUFBRSxHQUFFLENBQUM7UUFEN0IsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ2pDLGNBQVMsR0FBVCxTQUFTLENBQXVCO1FBRXZDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBSUQsSUFBVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFXLFFBQVEsQ0FBQyxRQUFrQjtRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztJQUM5QixDQUFDO0lBRVMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFXLEVBQUUsS0FBVyxFQUFFLE9BQWU7UUFDbEUsTUFBTSxXQUFXLEdBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDcEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDNUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDdkQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxTQUFTLENBQUMsT0FBTyxF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QUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01hcExhdExuZ30gZnJvbSAncmFhaW4tdWknO1xuaW1wb3J0IHtcbiAgICBJQ29tcGFyZVBlckRhdGUsXG4gICAgSUNvbXBhcmVzLFxuICAgIFBvc2l0aW9uVmFsdWUsXG4gICAgUXVhbGl0eVBvaW50LFxuICAgIFJhaW5Db21wdXRhdGlvblF1YWxpdHksXG4gICAgUmFpbk5vZGUsXG4gICAgU3BlZWRNYXRyaXhDb250YWluZXIsXG59IGZyb20gJ3JhYWluLW1vZGVsJztcbmltcG9ydCB7WFlUeXBlfSBmcm9tICcuLi94eXR5cGUnO1xuaW1wb3J0IHtQcm9maWxlU2VydmljZX0gZnJvbSAnLi4vcHJvZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7RnJhbWVTZXR9IGZyb20gJy4vRnJhbWVTZXQnO1xuaW1wb3J0IHtHYXVnZU5vZGVGaWx0ZXJ9IGZyb20gJy4vR2F1Z2VOb2RlRmlsdGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBJQ29tcGFyZVRhcmdldCB7XG4gICAgZGF0ZTogRGF0ZTtcbiAgICByYWluQ29tcHV0YXRpb25JZDogc3RyaW5nO1xuICAgIHJhaW5Db21wdXRhdGlvblF1YWxpdHlJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElVSUNvbXBhcmUge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBjb21wYXJlUG9pbnRzOiBYWVR5cGVbXTtcbiAgICBjb21wYXJlUG9pbnRzTWF4OiBYWVR5cGU7XG4gICAgY29tcGFyZVBvaW50c0hpc3Rvcnk6IFF1YWxpdHlQb2ludFtdO1xuICAgIHJlbWFya3M6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIENvbXBhcmVNYW5hZ2VyIHtcbiAgICBwdWJsaWMgZ2F1Z2VzVG9GaWx0ZXI6IEdhdWdlTm9kZUZpbHRlcltdO1xuICAgIHB1YmxpYyByYWluTm9kZUdhdWdlczogc3RyaW5nW107XG5cbiAgICBwdWJsaWMgZ2F1Z2VzSW5NYXA6IE1hcExhdExuZ1tdO1xuICAgIHB1YmxpYyBnYXVnZXNJbkNvbXBhcmU6IE1hcExhdExuZ1tdO1xuICAgIHB1YmxpYyBzZWxlY3RlZEdhdWdlczogTWFwTGF0TG5nW107XG4gICAgcHVibGljIHNlbGVjdGVkUGl4ZWxzOiBNYXBMYXRMbmdbXTtcbiAgICBwdWJsaWMgcGl4ZWxzU29sdXRpb25zOiBNYXBMYXRMbmdbXVtdO1xuXG4gICAgLy8gZnJvbSBjb21wYXJlc1RpbWVsaW5lXG4gICAgcHVibGljIGNvbXBhcmVOYW1lczogc3RyaW5nW107XG4gICAgcHVibGljIHVpQ29tcGFyZXM6IElVSUNvbXBhcmVbXTtcbiAgICBwdWJsaWMgY29tcGFyZVNwZWVkTWF0cml4OiBQb3NpdGlvblZhbHVlW107XG4gICAgcHVibGljIGNvbXBhcmVWZXJzaW9uOiBzdHJpbmc7XG4gICAgcHVibGljIGNvbXBhcmVUcnVzdGVkSW5kaWNhdG9yOiBudW1iZXI7XG5cbiAgICBwdWJsaWMgY3VycmVudFF1YWxpdHlEb25lRGF0ZTogRGF0ZTtcbiAgICBwdWJsaWMgY3VycmVudFF1YWxpdHlMYXVuY2hlZEJ5OiBzdHJpbmc7XG4gICAgcHVibGljIGN1cnJlbnRRdWFsaXR5VGltZVNwZW50SW5NczogbnVtYmVyO1xuICAgIHB1YmxpYyBnbG9iYWxDb21wYXJlUG9pbnRzOiBYWVR5cGVbXTtcbiAgICBwdWJsaWMgZ2xvYmFsQ29tcGFyZVBvaW50c01heDogWFlUeXBlO1xuXG4gICAgcHJvdGVjdGVkIGJ1aWxkQ29tcGFyZXM6IElDb21wYXJlcztcbiAgICBwcm90ZWN0ZWQgc2VsZWN0ZWRHYXVnZTogUXVhbGl0eVBvaW50O1xuICAgIHByb3RlY3RlZCBzZWxlY3RlZEdhdWdlSW5Qb2ludHM6IFF1YWxpdHlQb2ludDtcbiAgICBwcm90ZWN0ZWQgc2VsZWN0ZWRHYXVnZUluUG9pbnRzRGV0YWlsOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIHJhaW5Db21wdXRhdGlvblF1YWxpdGllc1BlckRhdGU6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgcHJvZmlsZVNlcnZpY2U6IFByb2ZpbGVTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgb25DaGFuZ2VzOiAoKSA9PiB2b2lkID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgICAgdGhpcy5jbGVhbkFsbCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcmFpbk5vZGU6IFJhaW5Ob2RlO1xuXG4gICAgcHVibGljIGdldCByYWluTm9kZSgpOiBSYWluTm9kZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yYWluTm9kZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IHJhaW5Ob2RlKHJhaW5Ob2RlOiBSYWluTm9kZSkge1xuICAgICAgICB0aGlzLl9yYWluTm9kZSA9IHJhaW5Ob2RlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgQ29tcGFyZURhdGUoZGF0ZTE6IERhdGUsIGRhdGUyOiBEYXRlLCBtaW51dGVzOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZGF0ZTFBc0RhdGU6IERhdGUgPSBuZXcgRGF0ZShkYXRlMS5nZXRUaW1lKCkpO1xuICAgICAgICBjb25zdCBkYXRlMkRpZmYgPSBuZXcgRGF0ZShkYXRlMi5nZXRUaW1lKCkpO1xuICAgICAgICBkYXRlMkRpZmYuc2V0TWludXRlcyhkYXRlMkRpZmYuZ2V0TWludXRlcygpICsgbWludXRlcyk7XG4gICAgICAgIGNvbnN0IGRpZmYgPSBNYXRoLnJvdW5kKChkYXRlMUFzRGF0ZS5nZXRUaW1lKCkgLSBkYXRlMkRpZmYuZ2V0VGltZSgpKSAvICg2MCAqIDEwMDApKTtcbiAgICAgICAgcmV0dXJuIGRpZmYgPT09IDA7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFuQWxsKCkge1xuICAgICAgICB0aGlzLmdhdWdlc0luTWFwID0gW107XG4gICAgICAgIHRoaXMuZ2F1Z2VzVG9GaWx0ZXIgPSBbXTtcbiAgICAgICAgdGhpcy5yYWluTm9kZUdhdWdlcyA9IFtdO1xuICAgICAgICB0aGlzLmdhdWdlc0luQ29tcGFyZSA9IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VzID0gW107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQaXhlbHMgPSBbXTtcbiAgICAgICAgdGhpcy5waXhlbHNTb2x1dGlvbnMgPSBbXTtcblxuICAgICAgICB0aGlzLmJ1aWxkQ29tcGFyZXMgPSB7XG4gICAgICAgICAgICBjb21wYXJlc1BlckRhdGU6IFtdLFxuICAgICAgICAgICAgY29tcGFyZUN1bXVsYXRpdmU6IG51bGwsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZ2xvYmFsQ29tcGFyZVBvaW50cyA9IFtdO1xuICAgICAgICB0aGlzLmdsb2JhbENvbXBhcmVQb2ludHNNYXggPSBuZXcgWFlUeXBlKDAsIDApO1xuICAgICAgICB0aGlzLnJhaW5Db21wdXRhdGlvblF1YWxpdGllc1BlckRhdGUgPSB7fTtcblxuICAgICAgICB0aGlzLnNlbGVjdGVkR2F1Z2UgPSBudWxsO1xuICAgICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cyA9IG51bGw7XG4gICAgICAgIHRoaXMuY2xlYW5Db21wYXJlUXVhbGl0eSgnbm8gY29tcGFyZSB5ZXQnKTtcbiAgICB9XG5cbiAgICBhc3luYyByZWZyZXNoQ29tcGFyZVF1YWxpdHkoZnJhbWVTZXQ6IEZyYW1lU2V0KSB7XG4gICAgICAgIGNvbnN0IGNvbXBhcmVQZXJEYXRlID0gdGhpcy5nZXRDb21wYXJlUGVyRGF0ZShmcmFtZVNldC5kYXRlKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhY29tcGFyZVBlckRhdGUgfHxcbiAgICAgICAgICAgICFjb21wYXJlUGVyRGF0ZS5yYWluQ29tcHV0YXRpb25RdWFsaXR5Py5xdWFsaXR5U3BlZWRNYXRyaXhDb250YWluZXJcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFuQ29tcGFyZVF1YWxpdHkoXG4gICAgICAgICAgICAgICAgJ25vIGN1cnJlbnQgcXVhbGl0eSAnICsgT2JqZWN0LmtleXModGhpcy5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXNQZXJEYXRlKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2VzKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1aUNvbXBhcmVzOiBJVUlDb21wYXJlW10gPSBjb21wYXJlUGVyRGF0ZS5jb21wYXJlVGltZWxpbmUubWFwKChjKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG5hbWU6IGMubmFtZSxcbiAgICAgICAgICAgICAgICBjb21wYXJlUG9pbnRzOiBjLnF1YWxpdHlQb2ludHMubWFwKFxuICAgICAgICAgICAgICAgICAgICAocCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBYWVR5cGUocC5nZXRHYXVnZVZhbHVlKCksIHAuZ2V0UmFpblZhbHVlKCksIDIsIHAuZ2F1Z2VMYWJlbCwgcC5nYXVnZUlkKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgY29tcGFyZVBvaW50c01heDogbmV3IFhZVHlwZShjLm1heFZhbHVlICogMS4yLCBjLm1heFZhbHVlICogMS4yKSxcbiAgICAgICAgICAgICAgICBjb21wYXJlUG9pbnRzSGlzdG9yeTogYy5xdWFsaXR5UG9pbnRzTGVnYWN5LFxuICAgICAgICAgICAgICAgIHJlbWFya3M6IGMucmVtYXJrcyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY3VycmVudFF1YWxpdHlEb25lRGF0ZSA9IGNvbXBhcmVQZXJEYXRlLnJhaW5Db21wdXRhdGlvblF1YWxpdHkuaXNEb25lRGF0ZTtcbiAgICAgICAgdGhpcy5jdXJyZW50UXVhbGl0eVRpbWVTcGVudEluTXMgPSBjb21wYXJlUGVyRGF0ZS5yYWluQ29tcHV0YXRpb25RdWFsaXR5LnRpbWVTcGVudEluTXM7XG4gICAgICAgIHRoaXMuY3VycmVudFF1YWxpdHlMYXVuY2hlZEJ5ID0gY29tcGFyZVBlckRhdGUucmFpbkNvbXB1dGF0aW9uUXVhbGl0eS5sYXVuY2hlZEJ5O1xuICAgICAgICB0aGlzLmNvbXBhcmVWZXJzaW9uID0gY29tcGFyZVBlckRhdGUucmFpbkNvbXB1dGF0aW9uUXVhbGl0eS5nZXRWZXJzaW9uKCk7XG4gICAgICAgIHRoaXMuY29tcGFyZVNwZWVkTWF0cml4ID1cbiAgICAgICAgICAgIGNvbXBhcmVQZXJEYXRlLnJhaW5Db21wdXRhdGlvblF1YWxpdHkucXVhbGl0eVNwZWVkTWF0cml4Q29udGFpbmVyLnJlbmRlck1lcmdlZE1hdHJpeCh7XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29tcGFyZVRydXN0ZWRJbmRpY2F0b3IgPVxuICAgICAgICAgICAgY29tcGFyZVBlckRhdGUucmFpbkNvbXB1dGF0aW9uUXVhbGl0eS5xdWFsaXR5U3BlZWRNYXRyaXhDb250YWluZXIuZ2V0VHJ1c3RlZEluZGljYXRvcnMoKVswXTtcbiAgICAgICAgdGhpcy5jb21wYXJlTmFtZXMgPSB1aUNvbXBhcmVzLm1hcCgoYykgPT4gYy5uYW1lKTtcbiAgICAgICAgdGhpcy51aUNvbXBhcmVzID0gdWlDb21wYXJlcztcblxuICAgICAgICB0aGlzLm9uQ2hhbmdlcygpO1xuICAgIH1cblxuICAgIGFzeW5jIHJlZnJlc2hHbG9iYWxDb21wYXJlUXVhbGl0eShcbiAgICAgICAgdGFyZ2V0c09yZGVyZWQ6IElDb21wYXJlVGFyZ2V0W10sXG4gICAgICAgIHdpdGhDb21wYXJlRHVwbGljYXRlOiBib29sZWFuXG4gICAgKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmZldGNoUmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzKHRhcmdldHNPcmRlcmVkKTtcblxuICAgICAgICAgICAgYXdhaXQgdGhpcy5idWlsZENvbXBhcmVzVGltZWxpbmUodGFyZ2V0c09yZGVyZWQsIHdpdGhDb21wYXJlRHVwbGljYXRlKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmJ1aWxkQ29tcGFyZXMuY29tcGFyZUN1bXVsYXRpdmUpIHtcbiAgICAgICAgICAgICAgICAvLyB0aHJvdyBFcnJvcignbmVlZHMgY3VtdWxhdGl2ZSBjb21wYXJlJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjb3VudEZvckF2ZXJhZ2UgPSB0YXJnZXRzT3JkZXJlZC5sZW5ndGg7XG4gICAgICAgICAgICBjb25zdCBtYXhWYWx1ZSA9ICh0aGlzLmJ1aWxkQ29tcGFyZXMuY29tcGFyZUN1bXVsYXRpdmUubWF4VmFsdWUgLyAxMikgKiAxLjI7XG4gICAgICAgICAgICB0aGlzLmdsb2JhbENvbXBhcmVQb2ludHMgPSB0aGlzLmJ1aWxkQ29tcGFyZXMuY29tcGFyZUN1bXVsYXRpdmUucXVhbGl0eVBvaW50cy5tYXAoXG4gICAgICAgICAgICAgICAgKHFwKSA9PlxuICAgICAgICAgICAgICAgICAgICBuZXcgWFlUeXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgcXAuZ2V0R2F1Z2VWYWx1ZSgpIC8gMTIsXG4gICAgICAgICAgICAgICAgICAgICAgICBxcC5nZXRSYWluVmFsdWUoKSAvIDEyLFxuICAgICAgICAgICAgICAgICAgICAgICAgMixcbiAgICAgICAgICAgICAgICAgICAgICAgIHFwLmdhdWdlTGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBxcC5nYXVnZUlkXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmdsb2JhbENvbXBhcmVQb2ludHNNYXggPSBuZXcgWFlUeXBlKG1heFZhbHVlLCBtYXhWYWx1ZSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIHNldEdhdWdlc0luTWFwKCkge1xuICAgICAgICBjb25zdCBnYXVnZXNUb0ZpbHRlciA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0R2F1Z2VzKHRoaXMucmFpbk5vZGU/LmlkKTtcbiAgICAgICAgdGhpcy5nYXVnZXNUb0ZpbHRlciA9IGdhdWdlc1RvRmlsdGVyXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIGEuYXBwcm94RGlzdGFuY2VGcm9tKHRoaXMucmFpbk5vZGUuZ2V0Q2VudGVyKCkpIC1cbiAgICAgICAgICAgICAgICAgICAgYi5hcHByb3hEaXN0YW5jZUZyb20odGhpcy5yYWluTm9kZS5nZXRDZW50ZXIoKSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5maWx0ZXIoKHYsIGluZGV4KSA9PiBpbmRleCA8IDIwMCk7XG5cbiAgICAgICAgdGhpcy5yYWluTm9kZUdhdWdlcyA9IHRoaXMucmFpbk5vZGUuZ2V0TGlua3MoJ2dhdWdlJykubWFwKChsKSA9PiBsLmdldElkKCkpO1xuXG4gICAgICAgIGNvbnN0IHZpc2libGVHYXVnZXMgPSB0aGlzLmdhdWdlc1RvRmlsdGVyLmZpbHRlcihcbiAgICAgICAgICAgIChnKSA9PiB0aGlzLnJhaW5Ob2RlR2F1Z2VzLmluZGV4T2YoZy5pZCkgPiAtMVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBtYXBMYXRMbmc6IE1hcExhdExuZ1tdID0gW107XG4gICAgICAgIGZvciAoY29uc3QgZ2F1Z2Ugb2YgdmlzaWJsZUdhdWdlcykge1xuICAgICAgICAgICAgbWFwTGF0TG5nLnB1c2goXG4gICAgICAgICAgICAgICAgbmV3IE1hcExhdExuZyhnYXVnZS5sYXRpdHVkZSwgZ2F1Z2UubG9uZ2l0dWRlLCB1bmRlZmluZWQsIGdhdWdlLmlkLCBnYXVnZS5uYW1lKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdhdWdlc0luTWFwID0gbWFwTGF0TG5nO1xuICAgIH1cblxuICAgIGFzeW5jIHNldEdhdWdlc0luQ29tcGFyZSgpIHtcbiAgICAgICAgY29uc3QgcXVhbGl0eVBvaW50czogUXVhbGl0eVBvaW50W10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBjb21wYXJlIG9mIHRoaXMudWlDb21wYXJlcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBxdWFsaXR5UG9pbnQgb2YgY29tcGFyZS5jb21wYXJlUG9pbnRzSGlzdG9yeSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFscmVhZHlBZGRlZCA9IHF1YWxpdHlQb2ludHMuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAocCkgPT4gcD8uZ2F1Z2VJZCA9PT0gcXVhbGl0eVBvaW50LmdhdWdlSWRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChhbHJlYWR5QWRkZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHF1YWxpdHlQb2ludHMucHVzaChxdWFsaXR5UG9pbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZ2F1Z2VzSW5Db21wYXJlID0gcXVhbGl0eVBvaW50cy5tYXAoKHApID0+IHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTWFwTGF0TG5nKFxuICAgICAgICAgICAgICAgIHAuZ2F1Z2VDYXJ0ZXNpYW5WYWx1ZS5sYXQsXG4gICAgICAgICAgICAgICAgcC5nYXVnZUNhcnRlc2lhblZhbHVlLmxuZyxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIHAuZ2F1Z2VJZCxcbiAgICAgICAgICAgICAgICBwLmdhdWdlTGFiZWwgKyAnPicgKyBwLmdldEdhdWdlVmFsdWUoKSxcbiAgICAgICAgICAgICAgICBwLmdldEdhdWdlVmFsdWUoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5yZXNldFNlbGVjdGVkR2F1Z2VzKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgc2VsZWN0R2F1Z2UoZ2F1Z2VJZDogc3RyaW5nLCBjb21wYXJlSW5kZXg6IG51bWJlcikge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnc2VsZWN0R2F1Z2UnLCBnYXVnZUlkLCBjb21wYXJlSW5kZXgpO1xuXG4gICAgICAgIGlmIChnYXVnZUlkKSB7XG4gICAgICAgICAgICBjb25zdCB4eXMgPSB0aGlzLmdldEN1cnJlbnRRdWFsaXR5UG9pbnRzKGNvbXBhcmVJbmRleCkuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChwKSA9PiBwLmdhdWdlSWQgPT09IGdhdWdlSWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkR2F1Z2UgPSB4eXMubGVuZ3RoID09PSAxID8geHlzWzBdIDogbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRHYXVnZSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRHYXVnZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVzZXRTZWxlY3RlZEdhdWdlcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRHYXVnZUluUG9pbnRzID0gdGhpcy5nZXRDdXJyZW50UXVhbGl0eVBvaW50cyhjb21wYXJlSW5kZXgpLmZpbHRlcihcbiAgICAgICAgICAgIChwKSA9PiBwLmdhdWdlSWQgPT09IHRoaXMuc2VsZWN0ZWRHYXVnZS5nYXVnZUlkXG4gICAgICAgICk7XG4gICAgICAgIGxldCBwaXhlbHNTb2x1dGlvbnM6IE1hcExhdExuZ1tdW10gPSBbXTtcblxuICAgICAgICBpZiAoc2VsZWN0ZWRHYXVnZUluUG9pbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgY29uc3QgcmVtYXJrcyA9IEpTT04ucGFyc2Uoc2VsZWN0ZWRHYXVnZUluUG9pbnRzWzBdLnJlbWFyaykuc29ydChcbiAgICAgICAgICAgICAgICAoYSwgYikgPT4gYS5jcml0ZXJpYUF0dGVtcHRlZFRvQmVNaW5pbXVtIC0gYi5jcml0ZXJpYUF0dGVtcHRlZFRvQmVNaW5pbXVtXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc29sZS5sb2cocmVtYXJrcyk7XG4gICAgICAgICAgICBwaXhlbHNTb2x1dGlvbnMgPSByZW1hcmtzLm1hcCgocmVtYXJrKSA9PlxuICAgICAgICAgICAgICAgIHJlbWFyay5zb2x1dGlvbkZvckdhdWdlLnBpeGVscy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE1hcExhdExuZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLnkgKyAwLjAwNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLnggKyAwLjAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJycgKyAhcmVtYXJrLm5vdFBvc3NpYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnICsgIXJlbWFyay5ub3RQb3NzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgdGltZURlbHRhSW5NaW51dGVzID0gc2VsZWN0ZWRHYXVnZUluUG9pbnRzWzBdLmdldFRpbWVEZWx0YUluTWludXRlcygpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEdhdWdlSW5Qb2ludHNEZXRhaWwgPVxuICAgICAgICAgICAgICAgICcnICtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEdhdWdlSW5Qb2ludHNbMF0uZ2F1Z2VMYWJlbCArXG4gICAgICAgICAgICAgICAgJyA+ICcgK1xuICAgICAgICAgICAgICAgIE1hdGgucm91bmQoc2VsZWN0ZWRHYXVnZUluUG9pbnRzWzBdLmdldEdhdWdlVmFsdWUoKSAqIDEwMCkgLyAxMDAgK1xuICAgICAgICAgICAgICAgICcgLyAnICtcbiAgICAgICAgICAgICAgICBNYXRoLnJvdW5kKHNlbGVjdGVkR2F1Z2VJblBvaW50c1swXS5nZXRSYWluVmFsdWUoKSAqIDEwMCkgLyAxMDAgK1xuICAgICAgICAgICAgICAgICcgZFQ9JyArXG4gICAgICAgICAgICAgICAgdGltZURlbHRhSW5NaW51dGVzO1xuXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cyA9IHNlbGVjdGVkR2F1Z2VJblBvaW50c1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRHYXVnZUluUG9pbnRzID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRHYXVnZXMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQaXhlbHMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMucGl4ZWxzU29sdXRpb25zID0gW107XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VzID0gW1xuICAgICAgICAgICAgbmV3IE1hcExhdExuZyhcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cy5nYXVnZUNhcnRlc2lhblZhbHVlLmxhdCxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cy5nYXVnZUNhcnRlc2lhblZhbHVlLmxuZyxcbiAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEdhdWdlSW5Qb2ludHMuZ2F1Z2VJZCxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cy5nYXVnZUxhYmVsICtcbiAgICAgICAgICAgICAgICAgICAgJz4nICtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEdhdWdlSW5Qb2ludHMuZ2F1Z2VDYXJ0ZXNpYW5WYWx1ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cy5nYXVnZUNhcnRlc2lhblZhbHVlLnZhbHVlXG4gICAgICAgICAgICApLFxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0R2F1Z2VJbkNvbXBhcmUoKTtcblxuICAgICAgICBjb25zdCBwaXhlbHM6IE1hcExhdExuZ1tdID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcmFpbkNhcnRlc2lhblZhbHVlIG9mIHRoaXMuc2VsZWN0ZWRHYXVnZUluUG9pbnRzLnJhaW5DYXJ0ZXNpYW5WYWx1ZXMpIHtcbiAgICAgICAgICAgIHBpeGVscy5wdXNoKFxuICAgICAgICAgICAgICAgIG5ldyBNYXBMYXRMbmcocmFpbkNhcnRlc2lhblZhbHVlLmxhdCArIDAuMDA1LCByYWluQ2FydGVzaWFuVmFsdWUubG5nICsgMC4wMSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RlZFBpeGVscyA9IHBpeGVscztcblxuICAgICAgICB0aGlzLnBpeGVsc1NvbHV0aW9ucyA9IHBpeGVsc1NvbHV0aW9ucztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRDb21wYXJlc1RpbWVsaW5lKFxuICAgICAgICB0YXJnZXRzT3JkZXJlZDogSUNvbXBhcmVUYXJnZXRbXSxcbiAgICAgICAgd2l0aENvbXBhcmVEdXBsaWNhdGU6IGJvb2xlYW5cbiAgICApOiBQcm9taXNlPElDb21wYXJlcz4ge1xuICAgICAgICBjb25zdCBkYXRlczogRGF0ZVtdID0gdGFyZ2V0c09yZGVyZWQubWFwKCh0KSA9PiB0LmRhdGUpO1xuICAgICAgICBjb25zdCBxdWFsaXRpZXM6IFJhaW5Db21wdXRhdGlvblF1YWxpdHlbXSA9IGRhdGVzXG4gICAgICAgICAgICAuZmlsdGVyKChkKSA9PiAhIWQpXG4gICAgICAgICAgICAubWFwKChkKSA9PiB0aGlzLmdldFJhaW5Db21wdXRhdGlvblF1YWxpdHkoZCkpXG4gICAgICAgICAgICAuZmlsdGVyKChyY3EpID0+ICEhcmNxKTtcbiAgICAgICAgdGhpcy5idWlsZENvbXBhcmVzID0gU3BlZWRNYXRyaXhDb250YWluZXIuQnVpbGRDb21wYXJlcyhxdWFsaXRpZXMsICF3aXRoQ29tcGFyZUR1cGxpY2F0ZSk7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkQ29tcGFyZXM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldENvbXBhcmVQZXJEYXRlKGRhdGU6IERhdGUpOiBJQ29tcGFyZVBlckRhdGUge1xuICAgICAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuYnVpbGRDb21wYXJlcy5jb21wYXJlc1BlckRhdGUuZmlsdGVyKFxuICAgICAgICAgICAgKGMpID0+IGMuZGF0ZS5nZXRUaW1lKCkgPT09IGRhdGUuZ2V0VGltZSgpXG4gICAgICAgICk7XG4gICAgICAgIGlmIChleGlzdGluZy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBleGlzdGluZ1swXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0Q3VycmVudFF1YWxpdHlQb2ludHMoY29tcGFyZUluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKGNvbXBhcmVJbmRleCA8IDAgfHwgdGhpcy5jb21wYXJlTmFtZXMubGVuZ3RoIDwgY29tcGFyZUluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy51aUNvbXBhcmVzW2NvbXBhcmVJbmRleF0uY29tcGFyZVBvaW50c0hpc3Rvcnk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNsZWFuQ29tcGFyZVF1YWxpdHkoZGV0YWlscz86IHN0cmluZykge1xuICAgICAgICB0aGlzLmNvbXBhcmVWZXJzaW9uID0gZGV0YWlscztcbiAgICAgICAgdGhpcy5jb21wYXJlTmFtZXMgPSBbXTtcbiAgICAgICAgdGhpcy51aUNvbXBhcmVzID0gW107XG4gICAgICAgIHRoaXMuY29tcGFyZVNwZWVkTWF0cml4ID0gW107XG4gICAgICAgIHRoaXMuY29tcGFyZVRydXN0ZWRJbmRpY2F0b3IgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGhpcy5jdXJyZW50UXVhbGl0eURvbmVEYXRlID0gbmV3IERhdGUoLTEpO1xuICAgICAgICB0aGlzLmN1cnJlbnRRdWFsaXR5TGF1bmNoZWRCeSA9ICcnO1xuICAgICAgICB0aGlzLmN1cnJlbnRRdWFsaXR5VGltZVNwZW50SW5NcyA9IC0xO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBmZXRjaFJhaW5Db21wdXRhdGlvblF1YWxpdGllcyh0YXJnZXRzT3JkZXJlZDogSUNvbXBhcmVUYXJnZXRbXSkge1xuICAgICAgICBmb3IgKGNvbnN0IHRhcmdldCBvZiB0YXJnZXRzT3JkZXJlZCkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICF0aGlzLnJhaW5Db21wdXRhdGlvblF1YWxpdGllc1BlckRhdGVbdGFyZ2V0LmRhdGUudG9JU09TdHJpbmcoKV0gJiZcbiAgICAgICAgICAgICAgICB0YXJnZXQucmFpbkNvbXB1dGF0aW9uUXVhbGl0eUlkXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByYWluQ29tcHV0YXRpb25RdWFsaXR5ID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRSYWluQ29tcGFyZUJ5RGF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmFpbk5vZGUuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQucmFpbkNvbXB1dGF0aW9uSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuZGF0ZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmFpbkNvbXB1dGF0aW9uUXVhbGl0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXNQZXJEYXRlW3RhcmdldC5kYXRlLnRvSVNPU3RyaW5nKCldID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWluQ29tcHV0YXRpb25RdWFsaXR5O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFJhaW5Db21wdXRhdGlvblF1YWxpdHkoZGF0ZTogRGF0ZSk6IFJhaW5Db21wdXRhdGlvblF1YWxpdHkge1xuICAgICAgICByZXR1cm4gdGhpcy5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXNQZXJEYXRlW2RhdGUudG9JU09TdHJpbmcoKV07XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNlbGVjdEdhdWdlSW5Db21wYXJlKCkge1xuICAgICAgICBjb25zdCBnbG9iYWxDb21wYXJlUG9pbnRzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmdsb2JhbENvbXBhcmVQb2ludHMpKTtcbiAgICAgICAgZm9yIChjb25zdCBwIG9mIGdsb2JhbENvbXBhcmVQb2ludHMpIHtcbiAgICAgICAgICAgIGlmIChwLmlkID09PSB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cz8uZ2F1Z2VJZCkge1xuICAgICAgICAgICAgICAgIHAuciA9IDEwO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwLnIgPSAyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ2xvYmFsQ29tcGFyZVBvaW50cyA9IGdsb2JhbENvbXBhcmVQb2ludHM7XG5cbiAgICAgICAgZm9yIChjb25zdCBjb21wYXJlIG9mIHRoaXMudWlDb21wYXJlcykge1xuICAgICAgICAgICAgY29uc3QgY29tcGFyZVBvaW50cyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY29tcGFyZS5jb21wYXJlUG9pbnRzKSk7XG4gICAgICAgICAgICBjb21wYXJlUG9pbnRzLmZvckVhY2goKHApID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocC5pZCA9PT0gdGhpcy5zZWxlY3RlZEdhdWdlSW5Qb2ludHM/LmdhdWdlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcC5yID0gMTA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcC5yID0gMztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbXBhcmUuY29tcGFyZVBvaW50cyA9IGNvbXBhcmVQb2ludHM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzZXRTZWxlY3RlZEdhdWdlcygpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ3Jlc2V0U2VsZWN0ZWRHYXVnZXMgcmVzZXQnKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdhdWdlID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdhdWdlSW5Qb2ludHMgPSBudWxsO1xuICAgICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VzID0gW107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQaXhlbHMgPSBbXTtcbiAgICAgICAgdGhpcy5waXhlbHNTb2x1dGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5zZWxlY3RHYXVnZUluQ29tcGFyZSgpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,6 +1,7 @@
1
1
  import { Subject, takeUntil, timer } from 'rxjs';
2
2
  import { switchMap } from 'rxjs/operators';
3
3
  import { TimeframeContainers } from 'raain-ui';
4
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
4
5
  export class RefreshManager {
5
6
  constructor(radarService, profileService, compareManager) {
6
7
  this.radarService = radarService;
@@ -146,7 +147,7 @@ export class RefreshManager {
146
147
  async refreshPeriodInsidePolling() {
147
148
  let done = false;
148
149
  try {
149
- done = this.refreshCheckIfDone();
150
+ done = await this.refreshCheckIfDone();
150
151
  // behind refresh
151
152
  await this.refreshTimeframesFromRadars(done);
152
153
  this.refreshGlobalCompareReport(done).then((ignored) => { });
@@ -157,10 +158,10 @@ export class RefreshManager {
157
158
  }
158
159
  return done;
159
160
  }
160
- refreshCheckIfDone() {
161
- // console.log('refreshPeriodInsidePolling', this.countsPeriod.computationsByTeam, this.countsPeriod.radarMeasures)
162
- // return this.countsPeriod.computationsByTeam === this.countsPeriod.radarMeasures;
163
- return this.countsPeriod.queueRunning === 0;
161
+ async refreshCheckIfDone() {
162
+ // TODO return this.countsPeriod.queueRunning === 0;
163
+ await sleep(5000);
164
+ return true;
164
165
  }
165
166
  async refreshTimeframesFromRadars(done) {
166
167
  if (!done) {
@@ -239,4 +240,4 @@ export class RefreshManager {
239
240
  await this.compareManager.setGaugesInCompare();
240
241
  }
241
242
  }
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVmcmVzaE1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9zaGFyZWQvdG9vbHMvUmVmcmVzaE1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6QyxPQUFPLEVBQXFCLG1CQUFtQixFQUFDLE1BQU0sVUFBVSxDQUFDO0FBTWpFLE1BQU0sT0FBTyxjQUFjO0lBMEJ2QixZQUNjLFlBQTBCLEVBQzFCLGNBQThCLEVBQzlCLGNBQThCO1FBRjlCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFFeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFDLEtBQUssRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFDaEQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFJRCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQVcsUUFBUSxDQUFDLFFBQWtCO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFJRCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLE1BQWdDO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENB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Q0FBQyxjQUFjLENBQUMsa0NBQWtDLENBQy9FLFFBQVEsQ0FBQyxFQUFFLEVBQ1gsTUFBTSxDQUFDLGlCQUFpQixDQUMzQixDQUFDO2FBQ0w7aUJBQU07Z0JBQ0gsb0JBQW9CO29CQUNoQixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsbUNBQW1DLENBQ3pELFFBQVEsQ0FBQyxFQUFFLEVBQ1gsTUFBTSxDQUFDLGlCQUFpQixFQUN4QixNQUFNLENBQUMsZUFBZSxDQUN6QixDQUFDO2FBQ1Q7WUFFRCxJQUFJLG9CQUFvQixFQUFFO2dCQUN0Qiw2QkFBNkIsQ0FBQyx5QkFBeUIsQ0FDbkQsb0JBQW9CLEVBQ3BCLEtBQUssQ0FDUixDQUFDO2dCQUVGLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUM7Z0JBQ3hELElBQUksQ0FBQywwQkFBMEIsR0FBRyxvQkFBb0IsQ0FBQyxVQUFVLENBQUM7Z0JBQ2xFLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxvQkFBb0IsQ0FBQyxVQUFVLENBQUM7Z0JBQ3BFLElBQUksQ0FBQywrQkFBK0IsR0FBRyxvQkFBb0IsQ0FBQyxhQUFhLENBQUM7YUFDN0U7U0FDSjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsT0FBTyxDQUFDLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDN0U7UUFFRCxPQUFPLDZCQUE2QixDQUFDO0lBQ3pDLENBQUM7SUFFUyxLQUFLLENBQUMscUJBQXFCLENBQUMsUUFBa0I7UUFDcEQsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFELE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ25ELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RnJhbWVTZXR9IGZyb20gJy4vRnJhbWVTZXQnO1xuaW1wb3J0IHtTdWJqZWN0LCB0YWtlVW50aWwsIHRpbWVyfSBmcm9tICdyeGpzJztcbmltcG9ydCB7c3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1JhaW5Ob2RlfSBmcm9tICdyYWFpbi1tb2RlbCc7XG5pbXBvcnQge1RpbWVmcmFtZUNvbnRhaW5lciwgVGltZWZyYW1lQ29udGFpbmVyc30gZnJvbSAncmFhaW4tdWknO1xuaW1wb3J0IHtSYWRhclNlcnZpY2V9IGZyb20gJy4uL3JhZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHtQcm9maWxlU2VydmljZX0gZnJvbSAnLi4vcHJvZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7Q29tcGFyZU1hbmFnZXJ9IGZyb20gJy4vQ29tcGFyZU1hbmFnZXInO1xuaW1wb3J0IHtYWVR5cGV9IGZyb20gJy4uL3h5dHlwZSc7XG5cbmV4cG9ydCBjbGFzcyBSZWZyZXNoTWFuYWdlciB7XG4gICAgcHVibGljIHJhaW5Db21wdXRhdGlvbk1hcERhdGU6IERhdGU7XG4gICAgcHVibGljIHJhaW5Db21wdXRhdGlvbk1hcERvbmVEYXRlOiBEYXRlO1xuICAgIHB1YmxpYyByYWluQ29tcHV0YXRpb25NYXBMYXVuY2hlZEJ5OiBzdHJpbmc7XG4gICAgcHVibGljIHJhaW5Db21wdXRhdGlvbk1hcFRpbWVTcGVudEluTXM6IG51bWJlcjtcbiAgICBwcm90ZWN0ZWQgY2xvc2VSZWZyZXNoVGltZXI6IFN1YmplY3Q8dW5rbm93bj47XG4gICAgcHJvdGVjdGVkIGNvdW50c1BlcmlvZDoge1xuICAgICAgICBwZXJjZW50SW1hZ2VzPzogWFlUeXBlW107XG4gICAgICAgIHF1ZXVlUnVubmluZz86IG51bWJlcjtcbiAgICB9O1xuICAgIHByb3RlY3RlZCB0aW1lZnJhbWVzRnJvbVJhZGFyczogRnJhbWVTZXRbXTtcbiAgICBwcm90ZWN0ZWQgdGltZWZyYW1lc0Zyb21SYWRhcnNFeHRlbmRlZDogRnJhbWVTZXRbXTtcbiAgICBwcm90ZWN0ZWQgdGltZWxpbmVTZWxlY3RlZEZyYW1lU2V0OiBGcmFtZVNldDtcbiAgICBwcm90ZWN0ZWQgdGltZWZyYW1lRGF0ZXM6IERhdGVbXTtcbiAgICBwcm90ZWN0ZWQgcmVtb3ZlRHVwbGljYXRlOiBib29sZWFuO1xuICAgIHByb3RlY3RlZCBkYXRhSW50ZXJuYWw6IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIG9uUmVmcmVzaEluUHJvZ3Jlc3M6IChcbiAgICAgICAgY291bnRQZXJpb2RzOiB7XG4gICAgICAgICAgICBwZXJjZW50SW1hZ2VzPzogWFlUeXBlW107XG4gICAgICAgICAgICBxdWV1ZVJ1bm5pbmc/OiBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHRpbWVmcmFtZURhdGVzOiBEYXRlW11cbiAgICApID0+IFByb21pc2U8dm9pZD47XG4gICAgcHJvdGVjdGVkIG9uUmVmcmVzaERvbmU6ICh0aW1lZnJhbWVEYXRlczogRGF0ZVtdKSA9PiBQcm9taXNlPHZvaWQ+O1xuICAgIHByb3RlY3RlZCBvbkZldGNoRG9uZTogKHRpbWVmcmFtZUNvbnRhaW5lcnM6IFRpbWVmcmFtZUNvbnRhaW5lcnMpID0+IFByb21pc2U8dm9pZD47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIHJhZGFyU2VydmljZTogUmFkYXJTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgcHJvZmlsZVNlcnZpY2U6IFByb2ZpbGVTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgY29tcGFyZU1hbmFnZXI6IENvbXBhcmVNYW5hZ2VyXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX3BlcmlvZCA9IHtiZWdpbjogbmV3IERhdGUoKSwgZW5kOiBuZXcgRGF0ZSgpfTtcbiAgICAgICAgdGhpcy5jbG9zZVJlZnJlc2hUaW1lciA9IG5ldyBTdWJqZWN0PHVua25vd24+KCk7XG4gICAgICAgIHRoaXMuY2xlYW5BbGwoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3JhaW5Ob2RlOiBSYWluTm9kZTtcblxuICAgIHB1YmxpYyBnZXQgcmFpbk5vZGUoKTogUmFpbk5vZGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmFpbk5vZGU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCByYWluTm9kZShyYWluTm9kZTogUmFpbk5vZGUpIHtcbiAgICAgICAgdGhpcy5fcmFpbk5vZGUgPSByYWluTm9kZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wZXJpb2Q6IHtiZWdpbjogRGF0ZTsgZW5kOiBEYXRlfTtcblxuICAgIGdldCBwZXJpb2QoKToge2JlZ2luOiBEYXRlOyBlbmQ6IERhdGV9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BlcmlvZDtcbiAgICB9XG5cbiAgICBzZXQgcGVyaW9kKHBlcmlvZDoge2JlZ2luOiBEYXRlOyBlbmQ6IERhdGV9KSB7XG4gICAgICAgIHRoaXMuX3BlcmlvZC5iZWdpbiA9IG5ldyBEYXRlKHBlcmlvZC5iZWdpbik7XG4gICAgICAgIHRoaXMuX3BlcmlvZC5lbmQgPSBuZXcgRGF0ZShwZXJpb2QuZW5kKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoQ291bnRzKCkudGhlbigoaWdub3JlZCkgPT4ge30pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgRGVsYXkobXM6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0TWV0aG9kcyhcbiAgICAgICAgb25SZWZyZXNoSW5Qcm9ncmVzczogKFxuICAgICAgICAgICAgY291bnRQZXJpb2RzOiB7XG4gICAgICAgICAgICAgICAgcGVyY2VudEltYWdlcz86IFhZVHlwZVtdO1xuICAgICAgICAgICAgICAgIHF1ZXVlUnVubmluZz86IG51bWJlcjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aW1lZnJhbWVEYXRlczogRGF0ZVtdXG4gICAgICAgICkgPT4gUHJvbWlzZTx2b2lkPixcbiAgICAgICAgb25SZWZyZXNoRG9uZTogKHRpbWVmcmFtZURhdGVzOiBEYXRlW10pID0+IFByb21pc2U8dm9pZD4sXG4gICAgICAgIG9uRmV0Y2hEb25lOiAodGltZWZyYW1lQ29udGFpbmVyczogVGltZWZyYW1lQ29udGFpbmVycykgPT4gUHJvbWlzZTx2b2lkPlxuICAgICkge1xuICAgICAgICB0aGlzLm9uUmVmcmVzaEluUHJvZ3Jlc3MgPSBvblJlZnJlc2hJblByb2dyZXNzO1xuICAgICAgICB0aGlzLm9uUmVmcmVzaERvbmUgPSBvblJlZnJlc2hEb25lO1xuICAgICAgICB0aGlzLm9uRmV0Y2hEb25lID0gb25GZXRjaERvbmU7XG4gICAgfVxuXG4gICAgY2xlYW5BbGwoKSB7XG4gICAgICAgIHRoaXMuY291bnRzUGVyaW9kID0ge307XG4gICAgICAgIHRoaXMudGltZWZyYW1lc0Zyb21SYWRhcnMgPSBbXTtcbiAgICAgICAgdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFyc0V4dGVuZGVkID0gW107XG4gICAgICAgIHRoaXMudGltZWZyYW1lRGF0ZXMgPSBbXTtcbiAgICAgICAgdGhpcy5yZW1vdmVEdXBsaWNhdGUgPSB0cnVlO1xuICAgICAgICB0aGlzLmNsb3NlUmVmcmVzaFRpbWVyPy5uZXh0KG51bGwpO1xuICAgIH1cblxuICAgIGFzeW5jIGZldGNoKFxuICAgICAgICBkYXRlU2hvd246IERhdGUsXG4gICAgICAgIHdpdGhHYXVnZXNNZWFzdXJlczogYm9vbGVhbixcbiAgICAgICAgY3VtdWxhdGl2ZUhvdXJzID0gMFxuICAgICk6IFByb21pc2U8RnJhbWVTZXQ+IHtcbiAgICAgICAgLy8gc2V0IHRoZSB0YXJnZXRcbiAgICAgICAgY29uc3QgY3VycmVudHMgPSB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWQuZmlsdGVyKFxuICAgICAgICAgICAgKHQpID0+IHQuZGF0ZS5nZXRUaW1lKCkgPT09IGRhdGVTaG93bi5nZXRUaW1lKClcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGN1cnJlbnRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ25vIGNvcnJlY3QgZGF0ZVNob3duJywgZGF0ZVNob3duLCB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gYnVpbGQgW2N1cnJlbnQsIHByZXZpb3VzLCBuZXh0XSB0YXJnZXRzXG4gICAgICAgIGNvbnN0IGN1cnJlbnQ6IEZyYW1lU2V0ID0gY3VycmVudHNbMF07XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFyc0V4dGVuZGVkLmluZGV4T2YoY3VycmVudCk7XG4gICAgICAgIGxldCBwcmV2aW91czogRnJhbWVTZXQgPSBudWxsLFxuICAgICAgICAgICAgbmV4dDogRnJhbWVTZXQgPSBudWxsO1xuICAgICAgICBjb25zdCBwb3NpdGlvbk5hbWVzOiBzdHJpbmdbXSA9IFsnJyArIGN1cnJlbnQuZGF0ZS5nZXRUaW1lKCldO1xuICAgICAgICBjb25zdCBmcmFtZVNldHMgPSB7fTtcbiAgICAgICAgZnJhbWVTZXRzWycnICsgY3VycmVudC5kYXRlLmdldFRpbWUoKV0gPSBjdXJyZW50O1xuICAgICAgICBpZiAocG9zaXRpb24gPiAwKSB7XG4gICAgICAgICAgICBwcmV2aW91cyA9IHRoaXMudGltZWZyYW1lc0Zyb21SYWRhcnNFeHRlbmRlZFtwb3NpdGlvbiAtIDFdO1xuICAgICAgICAgICAgcG9zaXRpb25OYW1lcy5wdXNoKCcnICsgcHJldmlvdXMuZGF0ZS5nZXRUaW1lKCkpO1xuICAgICAgICAgICAgZnJhbWVTZXRzWycnICsgcHJldmlvdXMuZGF0ZS5nZXRUaW1lKCldID0gcHJldmlvdXM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvc2l0aW9uIDwgdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFyc0V4dGVuZGVkLmxlbmd0aCkge1xuICAgICAgICAgICAgbmV4dCA9IHRoaXMudGltZWZyYW1lc0Zyb21SYWRhcnNFeHRlbmRlZFtwb3NpdGlvbiArIDFdO1xuICAgICAgICAgICAgaWYgKG5leHQ/LmRhdGUpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbk5hbWVzLnB1c2goJycgKyBuZXh0LmRhdGUuZ2V0VGltZSgpKTtcbiAgICAgICAgICAgICAgICBmcmFtZVNldHNbJycgKyBuZXh0LmRhdGUuZ2V0VGltZSgpXSA9IG5leHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhbGlnbiBNYXAgd2l0aCB0YXJnZXRzXG4gICAgICAgIGNvbnN0IHRhcmdldHM6IHtcbiAgICAgICAgICAgIGRhdGU6IERhdGU7XG4gICAgICAgICAgICByYWluQ29tcHV0YXRpb25JZDogc3RyaW5nO1xuICAgICAgICAgICAgcmFpbkNvbXB1dGF0aW9uUXVhbGl0eUlkOiBzdHJpbmc7XG4gICAgICAgICAgICBjdW11bGF0aXZlSG91cnM6IG51bWJlcjtcbiAgICAgICAgfVtdID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcG9zaXRpb25OYW1lIG9mIHBvc2l0aW9uTmFtZXMpIHtcbiAgICAgICAgICAgIGlmIChmcmFtZVNldHNbcG9zaXRpb25OYW1lXSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGZyYW1lU2V0c1twb3NpdGlvbk5hbWVdO1xuICAgICAgICAgICAgICAgIHRhcmdldC5yYWluQ29tcHV0YXRpb25RdWFsaXR5SWQgPSB0aGlzLmdldFJhaW5Db21wdXRhdGlvblF1YWxpdHlUYXJnZXQodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICB0YXJnZXQud2l0aEdhdWdlID0gd2l0aEdhdWdlc01lYXN1cmVzO1xuICAgICAgICAgICAgICAgIHRhcmdldC5jdW11bGF0aXZlSG91cnMgPSBjdW11bGF0aXZlSG91cnM7XG4gICAgICAgICAgICAgICAgdGFyZ2V0cy5wdXNoKHRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0aW1lZnJhbWVDb250YWluZXJzID0gYXdhaXQgdGhpcy5yZWZyZXNoTWFwVGltZWZyYW1lQ29udGFpbmVycyh0YXJnZXQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uTmFtZSA9PT0gJycgKyBjdXJyZW50LmRhdGUuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25GZXRjaERvbmUodGltZWZyYW1lQ29udGFpbmVycykudGhlbigoaWdub3JlZCkgPT4ge30pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGFsaWduIENvbXBhcmUgd2l0aCBjdXJyZW50IGRhdGVcbiAgICAgICAgdGhpcy5yZWZyZXNoQ29tcGFyZVF1YWxpdHkoY3VycmVudCkudGhlbigoaWdub3JlZCkgPT4ge30pO1xuXG4gICAgICAgIHRoaXMudGltZWxpbmVTZWxlY3RlZEZyYW1lU2V0ID0gY3VycmVudDtcbiAgICB9XG5cbiAgICBnZXRUaW1lbGluZUZyYW1lU2V0KCk6IEZyYW1lU2V0W10ge1xuICAgICAgICByZXR1cm4gdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFycztcbiAgICB9XG5cbiAgICBnZXRUaW1lbGluZVNlbGVjdGVkRnJhbWVTZXQoKTogRnJhbWVTZXQge1xuICAgICAgICByZXR1cm4gdGhpcy50aW1lbGluZVNlbGVjdGVkRnJhbWVTZXQ7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVmcmVzaChsYXVuY2hRdWFsaXR5QWZ0ZXI6IGJvb2xlYW4sIGRhdGFJbnRlcm5hbDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmNoZWNrUGVyaW9kKCk7XG5cbiAgICAgICAgdGhpcy5kYXRhSW50ZXJuYWwgPSBkYXRhSW50ZXJuYWw7XG4gICAgICAgIHRoaXMuY29tcGFyZU1hbmFnZXIuY2xlYW5BbGwoKTtcbiAgICAgICAgbGV0IHJlZnJlc2hJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIGxldCByZWZyZXNoRG9uZSA9IGZhbHNlO1xuXG4gICAgICAgIHRpbWVyKDEwMDAsIDE1MDAwKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlZnJlc2hJblByb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVmcmVzaERvbmU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25SZWZyZXNoSW5Qcm9ncmVzcyhhd2FpdCB0aGlzLnJlZnJlc2hDb3VudHMoKSwgdGhpcy50aW1lZnJhbWVEYXRlcykudGhlbihcbiAgICAgICAgICAgICAgICAgICAgICAgIChpZ25vcmVkKSA9PiB7fVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICByZWZyZXNoRG9uZSA9IGF3YWl0IHRoaXMucmVmcmVzaFBlcmlvZEluc2lkZVBvbGxpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWZyZXNoRG9uZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVmcmVzaERvbmU7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuY2xvc2VSZWZyZXNoVGltZXIpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiBhc3luYyAocmVmcmVzaEZpbmlzaGVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWZyZXNoRmluaXNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VSZWZyZXNoVGltZXIubmV4dChudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMub25SZWZyZXNoRG9uZSh0aGlzLnRpbWVmcmFtZURhdGVzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2Vycm9yIGluIHJlZnJlc2gnLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldFJlbW92ZUR1cGxpY2F0ZShiOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlRHVwbGljYXRlID0gYjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY2hlY2tQZXJpb2QoKSB7XG4gICAgICAgIGlmICh0aGlzLnBlcmlvZC5iZWdpbi5nZXRUaW1lKCkgPT09IHRoaXMucGVyaW9kLmVuZC5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbmVlZCBhIHBlcmlvZCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIHJlZnJlc2hDb3VudHMoKSB7XG4gICAgICAgIHRoaXMuY291bnRzUGVyaW9kID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRDb3VudHModGhpcy5yYWluTm9kZS5pZCwge1xuICAgICAgICAgICAgcmFuZ2U6ICdkYXknLFxuICAgICAgICAgICAgcGVyaW9kQmVnaW46IHRoaXMuX3BlcmlvZC5iZWdpbixcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLmNvdW50c1BlcmlvZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0UmFpbkNvbXB1dGF0aW9uUXVhbGl0eVRhcmdldChmcmFtZXNldDogRnJhbWVTZXQpOiBzdHJpbmcge1xuICAgICAgICBpZiAoZnJhbWVzZXQucmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzLmxlbmd0aCA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmcmFtZXNldC5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXNbMF0uaWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIHJlZnJlc2hQZXJpb2RJbnNpZGVQb2xsaW5nKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBsZXQgZG9uZSA9IGZhbHNlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZG9uZSA9IHRoaXMucmVmcmVzaENoZWNrSWZEb25lKCk7XG5cbiAgICAgICAgICAgIC8vIGJlaGluZCByZWZyZXNoXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hUaW1lZnJhbWVzRnJvbVJhZGFycyhkb25lKTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEdsb2JhbENvbXBhcmVSZXBvcnQoZG9uZSkudGhlbigoaWdub3JlZCkgPT4ge30pO1xuXG4gICAgICAgICAgICByZXR1cm4gZG9uZTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRvbmU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlZnJlc2hDaGVja0lmRG9uZSgpOiBib29sZWFuIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ3JlZnJlc2hQZXJpb2RJbnNpZGVQb2xsaW5nJywgdGhpcy5jb3VudHNQZXJpb2QuY29tcHV0YXRpb25zQnlUZWFtLCB0aGlzLmNvdW50c1BlcmlvZC5yYWRhck1lYXN1cmVzKVxuICAgICAgICAvLyByZXR1cm4gdGhpcy5jb3VudHNQZXJpb2QuY29tcHV0YXRpb25zQnlUZWFtID09PSB0aGlzLmNvdW50c1BlcmlvZC5yYWRhck1lYXN1cmVzO1xuICAgICAgICByZXR1cm4gdGhpcy5jb3VudHNQZXJpb2QucXVldWVSdW5uaW5nID09PSAwO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyByZWZyZXNoVGltZWZyYW1lc0Zyb21SYWRhcnMoZG9uZTogYm9vbGVhbikge1xuICAgICAgICBpZiAoIWRvbmUpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBiZWdpbkV4dGVuZGVkID0gbmV3IERhdGUodGhpcy5wZXJpb2QuYmVnaW4pO1xuICAgICAgICAgICAgY29uc3QgZW5kRXh0ZW5kZWQgPSBuZXcgRGF0ZSh0aGlzLnBlcmlvZC5lbmQpO1xuICAgICAgICAgICAgYmVnaW5FeHRlbmRlZC5zZXRNaW51dGVzKGJlZ2luRXh0ZW5kZWQuZ2V0TWludXRlcygpIC0gNyk7XG4gICAgICAgICAgICBlbmRFeHRlbmRlZC5zZXRNaW51dGVzKGVuZEV4dGVuZGVkLmdldE1pbnV0ZXMoKSArIDcpO1xuICAgICAgICAgICAgdGhpcy5yYWluTm9kZSA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0UmFpblRpbWVmcmFtZShcbiAgICAgICAgICAgICAgICB0aGlzLnJhaW5Ob2RlLmlkLFxuICAgICAgICAgICAgICAgIGJlZ2luRXh0ZW5kZWQsXG4gICAgICAgICAgICAgICAgZW5kRXh0ZW5kZWQsXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhSW50ZXJuYWxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMudGltZWZyYW1lc0Zyb21SYWRhcnNFeHRlbmRlZCA9IGF3YWl0IHRoaXMucmFkYXJTZXJ2aWNlLmdldFRpbWVsaW5lKHRoaXMucmFpbk5vZGUpO1xuICAgICAgICAgICAgdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFycyA9IHRoaXMudGltZWZyYW1lc0Zyb21SYWRhcnNFeHRlbmRlZFxuICAgICAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChmcmFtZVNldCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGVyaW9kLmJlZ2luLmdldFRpbWUoKSA8PSBmcmFtZVNldC5kYXRlLmdldFRpbWUoKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVTZXQuZGF0ZS5nZXRUaW1lKCkgPD0gdGhpcy5wZXJpb2QuZW5kLmdldFRpbWUoKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5kYXRlLmdldFRpbWUoKSAtIGIuZGF0ZS5nZXRUaW1lKCkpO1xuXG4gICAgICAgICAgICBjb25zb2xlLmxvZygndGltZWZyYW1lc0Zyb21SYWRhcnNFeHRlbmRlZDonLCB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWQpO1xuXG4gICAgICAgICAgICB0aGlzLnRpbWVmcmFtZURhdGVzID0gdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFycy5tYXAoKGZyYW1lU2V0KSA9PiBmcmFtZVNldC5kYXRlKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdyZWZyZXNoVGltZWZyYW1lc0Zyb21SYWRhcnMnLCBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgcmVmcmVzaEdsb2JhbENvbXBhcmVSZXBvcnQoZG9uZTogYm9vbGVhbikge1xuICAgICAgICBpZiAoIWRvbmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRzID0gW107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZyYW1lU2V0IG9mIHRoaXMudGltZWZyYW1lc0Zyb21SYWRhcnNFeHRlbmRlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZnJhbWVTZXQpKTtcbiAgICAgICAgICAgICAgICB0YXJnZXQuZGF0ZSA9IG5ldyBEYXRlKHRhcmdldC5kYXRlKTtcbiAgICAgICAgICAgICAgICB0YXJnZXQucmFpbkNvbXB1dGF0aW9uUXVhbGl0eUlkID0gdGhpcy5nZXRSYWluQ29tcHV0YXRpb25RdWFsaXR5VGFyZ2V0KGZyYW1lU2V0KTtcbiAgICAgICAgICAgICAgICB0YXJnZXRzLnB1c2godGFyZ2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY29tcGFyZU1hbmFnZXIucmVmcmVzaEdsb2JhbENvbXBhcmVRdWFsaXR5KHRhcmdldHMsICF0aGlzLnJlbW92ZUR1cGxpY2F0ZSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3JlZnJlc2hHbG9iYWxDb21wYXJlUmVwb3J0JywgZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgcmVmcmVzaE1hcFRpbWVmcmFtZUNvbnRhaW5lcnModGFyZ2V0OiB7XG4gICAgICAgIGRhdGU6IERhdGU7XG4gICAgICAgIHJhaW5Db21wdXRhdGlvbklkOiBzdHJpbmc7XG4gICAgICAgIHdpdGhHYXVnZTogYm9vbGVhbjtcbiAgICAgICAgY3VtdWxhdGl2ZUhvdXJzOiBudW1iZXI7XG4gICAgfSkge1xuICAgICAgICBpZiAoIXRhcmdldCB8fCAhdGFyZ2V0LnJhaW5Db21wdXRhdGlvbklkKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1BiIHdpdGggcmVmcmVzaE1hcFRpbWVmcmFtZUNvbnRhaW5lcnMgaW5zaWdodHMnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJhaW5Ob2RlID0gdGhpcy5yYWluTm9kZTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyczogVGltZWZyYW1lQ29udGFpbmVyW10gPSBbXTtcbiAgICAgICAgY29uc3QgbmV3Q3JlYXRlZFRpbWVmcmFtZUNvbnRhaW5lcnMgPSBuZXcgVGltZWZyYW1lQ29udGFpbmVycyhjb250YWluZXJzKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCByYWluTm9kZUNhcnRlc2lhbk1hcDtcblxuICAgICAgICAgICAgaWYgKCF0YXJnZXQuY3VtdWxhdGl2ZUhvdXJzKSB7XG4gICAgICAgICAgICAgICAgcmFpbk5vZGVDYXJ0ZXNpYW5NYXAgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldFJhaW5Db21wdXRhdGlvbkNhcnRlc2lhbk1hcEJ5SWQoXG4gICAgICAgICAgICAgICAgICAgIHJhaW5Ob2RlLmlkLFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQucmFpbkNvbXB1dGF0aW9uSWRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByYWluTm9kZUNhcnRlc2lhbk1hcCA9XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0UmFpbkNvbXB1dGF0aW9uQ3VtdWxhdGl2ZU1hcEJ5SWQoXG4gICAgICAgICAgICAgICAgICAgICAgICByYWluTm9kZS5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5yYWluQ29tcHV0YXRpb25JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5jdW11bGF0aXZlSG91cnNcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJhaW5Ob2RlQ2FydGVzaWFuTWFwKSB7XG4gICAgICAgICAgICAgICAgbmV3Q3JlYXRlZFRpbWVmcmFtZUNvbnRhaW5lcnMuYWRkRnJvbVJhaW5Db21wdXRhdGlvbk1hcChcbiAgICAgICAgICAgICAgICAgICAgcmFpbk5vZGVDYXJ0ZXNpYW5NYXAsXG4gICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIHRoaXMucmFpbkNvbXB1dGF0aW9uTWFwRGF0ZSA9IHJhaW5Ob2RlQ2FydGVzaWFuTWFwLmRhdGU7XG4gICAgICAgICAgICAgICAgdGhpcy5yYWluQ29tcHV0YXRpb25NYXBEb25lRGF0ZSA9IHJhaW5Ob2RlQ2FydGVzaWFuTWFwLmlzRG9uZURhdGU7XG4gICAgICAgICAgICAgICAgdGhpcy5yYWluQ29tcHV0YXRpb25NYXBMYXVuY2hlZEJ5ID0gcmFpbk5vZGVDYXJ0ZXNpYW5NYXAubGF1bmNoZWRCeTtcbiAgICAgICAgICAgICAgICB0aGlzLnJhaW5Db21wdXRhdGlvbk1hcFRpbWVTcGVudEluTXMgPSByYWluTm9kZUNhcnRlc2lhbk1hcC50aW1lU3BlbnRJbk1zO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1BiIHdpdGggY29tcHV0YXRpb25zIGZvciBpZDonLCB0YXJnZXQucmFpbkNvbXB1dGF0aW9uSWQsIGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ld0NyZWF0ZWRUaW1lZnJhbWVDb250YWluZXJzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyByZWZyZXNoQ29tcGFyZVF1YWxpdHkoZnJhbWVTZXQ6IEZyYW1lU2V0KSB7XG4gICAgICAgIGF3YWl0IHRoaXMuY29tcGFyZU1hbmFnZXIucmVmcmVzaENvbXBhcmVRdWFsaXR5KGZyYW1lU2V0KTtcbiAgICAgICAgYXdhaXQgdGhpcy5jb21wYXJlTWFuYWdlci5zZXRHYXVnZXNJbkNvbXBhcmUoKTtcbiAgICB9XG59XG4iXX0=
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVmcmVzaE1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9zaGFyZWQvdG9vbHMvUmVmcmVzaE1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6QyxPQUFPLEVBQXFCLG1CQUFtQixFQUFDLE1BQU0sVUFBVSxDQUFDO0FBTWpFLE1BQU0sS0FBSyxHQUFHLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRWhGLE1BQU0sT0FBTyxjQUFjO0lBMEJ2QixZQUNjLFlBQTBCLEVBQzFCLGNBQThCLEVBQzlCLGNBQThCO1FBRjlCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFFeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFDLEtBQUssRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFDaEQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFJRCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQVcsUUFBUSxDQUFDLFFBQWtCO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFJRCxJQUFJLE1BQU07UUFDTixPQUFP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QUFDLGtCQUFrQixFQUFFLENBQUM7SUFDbkQsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtGcmFtZVNldH0gZnJvbSAnLi9GcmFtZVNldCc7XG5pbXBvcnQge1N1YmplY3QsIHRha2VVbnRpbCwgdGltZXJ9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtzd2l0Y2hNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7UmFpbk5vZGV9IGZyb20gJ3JhYWluLW1vZGVsJztcbmltcG9ydCB7VGltZWZyYW1lQ29udGFpbmVyLCBUaW1lZnJhbWVDb250YWluZXJzfSBmcm9tICdyYWFpbi11aSc7XG5pbXBvcnQge1JhZGFyU2VydmljZX0gZnJvbSAnLi4vcmFkYXIuc2VydmljZSc7XG5pbXBvcnQge1Byb2ZpbGVTZXJ2aWNlfSBmcm9tICcuLi9wcm9maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHtDb21wYXJlTWFuYWdlcn0gZnJvbSAnLi9Db21wYXJlTWFuYWdlcic7XG5pbXBvcnQge1hZVHlwZX0gZnJvbSAnLi4veHl0eXBlJztcblxuY29uc3Qgc2xlZXAgPSAobXM6IG51bWJlcikgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcblxuZXhwb3J0IGNsYXNzIFJlZnJlc2hNYW5hZ2VyIHtcbiAgICBwdWJsaWMgcmFpbkNvbXB1dGF0aW9uTWFwRGF0ZTogRGF0ZTtcbiAgICBwdWJsaWMgcmFpbkNvbXB1dGF0aW9uTWFwRG9uZURhdGU6IERhdGU7XG4gICAgcHVibGljIHJhaW5Db21wdXRhdGlvbk1hcExhdW5jaGVkQnk6IHN0cmluZztcbiAgICBwdWJsaWMgcmFpbkNvbXB1dGF0aW9uTWFwVGltZVNwZW50SW5NczogbnVtYmVyO1xuICAgIHByb3RlY3RlZCBjbG9zZVJlZnJlc2hUaW1lcjogU3ViamVjdDx1bmtub3duPjtcbiAgICBwcm90ZWN0ZWQgY291bnRzUGVyaW9kOiB7XG4gICAgICAgIHBlcmNlbnRJbWFnZXM/OiBYWVR5cGVbXTtcbiAgICAgICAgcXVldWVSdW5uaW5nPzogbnVtYmVyO1xuICAgIH07XG4gICAgcHJvdGVjdGVkIHRpbWVmcmFtZXNGcm9tUmFkYXJzOiBGcmFtZVNldFtdO1xuICAgIHByb3RlY3RlZCB0aW1lZnJhbWVzRnJvbVJhZGFyc0V4dGVuZGVkOiBGcmFtZVNldFtdO1xuICAgIHByb3RlY3RlZCB0aW1lbGluZVNlbGVjdGVkRnJhbWVTZXQ6IEZyYW1lU2V0O1xuICAgIHByb3RlY3RlZCB0aW1lZnJhbWVEYXRlczogRGF0ZVtdO1xuICAgIHByb3RlY3RlZCByZW1vdmVEdXBsaWNhdGU6IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIGRhdGFJbnRlcm5hbDogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgb25SZWZyZXNoSW5Qcm9ncmVzczogKFxuICAgICAgICBjb3VudFBlcmlvZHM6IHtcbiAgICAgICAgICAgIHBlcmNlbnRJbWFnZXM/OiBYWVR5cGVbXTtcbiAgICAgICAgICAgIHF1ZXVlUnVubmluZz86IG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgdGltZWZyYW1lRGF0ZXM6IERhdGVbXVxuICAgICkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgICBwcm90ZWN0ZWQgb25SZWZyZXNoRG9uZTogKHRpbWVmcmFtZURhdGVzOiBEYXRlW10pID0+IFByb21pc2U8dm9pZD47XG4gICAgcHJvdGVjdGVkIG9uRmV0Y2hEb25lOiAodGltZWZyYW1lQ29udGFpbmVyczogVGltZWZyYW1lQ29udGFpbmVycykgPT4gUHJvbWlzZTx2b2lkPjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgcmFkYXJTZXJ2aWNlOiBSYWRhclNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBwcm9maWxlU2VydmljZTogUHJvZmlsZVNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBjb21wYXJlTWFuYWdlcjogQ29tcGFyZU1hbmFnZXJcbiAgICApIHtcbiAgICAgICAgdGhpcy5fcGVyaW9kID0ge2JlZ2luOiBuZXcgRGF0ZSgpLCBlbmQ6IG5ldyBEYXRlKCl9O1xuICAgICAgICB0aGlzLmNsb3NlUmVmcmVzaFRpbWVyID0gbmV3IFN1YmplY3Q8dW5rbm93bj4oKTtcbiAgICAgICAgdGhpcy5jbGVhbkFsbCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcmFpbk5vZGU6IFJhaW5Ob2RlO1xuXG4gICAgcHVibGljIGdldCByYWluTm9kZSgpOiBSYWluTm9kZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yYWluTm9kZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IHJhaW5Ob2RlKHJhaW5Ob2RlOiBSYWluTm9kZSkge1xuICAgICAgICB0aGlzLl9yYWluTm9kZSA9IHJhaW5Ob2RlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BlcmlvZDoge2JlZ2luOiBEYXRlOyBlbmQ6IERhdGV9O1xuXG4gICAgZ2V0IHBlcmlvZCgpOiB7YmVnaW46IERhdGU7IGVuZDogRGF0ZX0ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGVyaW9kO1xuICAgIH1cblxuICAgIHNldCBwZXJpb2QocGVyaW9kOiB7YmVnaW46IERhdGU7IGVuZDogRGF0ZX0pIHtcbiAgICAgICAgdGhpcy5fcGVyaW9kLmJlZ2luID0gbmV3IERhdGUocGVyaW9kLmJlZ2luKTtcbiAgICAgICAgdGhpcy5fcGVyaW9kLmVuZCA9IG5ldyBEYXRlKHBlcmlvZC5lbmQpO1xuICAgICAgICB0aGlzLnJlZnJlc2hDb3VudHMoKS50aGVuKChpZ25vcmVkKSA9PiB7fSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBEZWxheShtczogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRNZXRob2RzKFxuICAgICAgICBvblJlZnJlc2hJblByb2dyZXNzOiAoXG4gICAgICAgICAgICBjb3VudFBlcmlvZHM6IHtcbiAgICAgICAgICAgICAgICBwZXJjZW50SW1hZ2VzPzogWFlUeXBlW107XG4gICAgICAgICAgICAgICAgcXVldWVSdW5uaW5nPzogbnVtYmVyO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRpbWVmcmFtZURhdGVzOiBEYXRlW11cbiAgICAgICAgKSA9PiBQcm9taXNlPHZvaWQ+LFxuICAgICAgICBvblJlZnJlc2hEb25lOiAodGltZWZyYW1lRGF0ZXM6IERhdGVbXSkgPT4gUHJvbWlzZTx2b2lkPixcbiAgICAgICAgb25GZXRjaERvbmU6ICh0aW1lZnJhbWVDb250YWluZXJzOiBUaW1lZnJhbWVDb250YWluZXJzKSA9PiBQcm9taXNlPHZvaWQ+XG4gICAgKSB7XG4gICAgICAgIHRoaXMub25SZWZyZXNoSW5Qcm9ncmVzcyA9IG9uUmVmcmVzaEluUHJvZ3Jlc3M7XG4gICAgICAgIHRoaXMub25SZWZyZXNoRG9uZSA9IG9uUmVmcmVzaERvbmU7XG4gICAgICAgIHRoaXMub25GZXRjaERvbmUgPSBvbkZldGNoRG9uZTtcbiAgICB9XG5cbiAgICBjbGVhbkFsbCgpIHtcbiAgICAgICAgdGhpcy5jb3VudHNQZXJpb2QgPSB7fTtcbiAgICAgICAgdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFycyA9IFtdO1xuICAgICAgICB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWQgPSBbXTtcbiAgICAgICAgdGhpcy50aW1lZnJhbWVEYXRlcyA9IFtdO1xuICAgICAgICB0aGlzLnJlbW92ZUR1cGxpY2F0ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuY2xvc2VSZWZyZXNoVGltZXI/Lm5leHQobnVsbCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZmV0Y2goXG4gICAgICAgIGRhdGVTaG93bjogRGF0ZSxcbiAgICAgICAgd2l0aEdhdWdlc01lYXN1cmVzOiBib29sZWFuLFxuICAgICAgICBjdW11bGF0aXZlSG91cnMgPSAwXG4gICAgKTogUHJvbWlzZTxGcmFtZVNldD4ge1xuICAgICAgICAvLyBzZXQgdGhlIHRhcmdldFxuICAgICAgICBjb25zdCBjdXJyZW50cyA9IHRoaXMudGltZWZyYW1lc0Zyb21SYWRhcnNFeHRlbmRlZC5maWx0ZXIoXG4gICAgICAgICAgICAodCkgPT4gdC5kYXRlLmdldFRpbWUoKSA9PT0gZGF0ZVNob3duLmdldFRpbWUoKVxuICAgICAgICApO1xuICAgICAgICBpZiAoY3VycmVudHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnbm8gY29ycmVjdCBkYXRlU2hvd24nLCBkYXRlU2hvd24sIHRoaXMudGltZWZyYW1lc0Zyb21SYWRhcnNFeHRlbmRlZCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBidWlsZCBbY3VycmVudCwgcHJldmlvdXMsIG5leHRdIHRhcmdldHNcbiAgICAgICAgY29uc3QgY3VycmVudDogRnJhbWVTZXQgPSBjdXJyZW50c1swXTtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWQuaW5kZXhPZihjdXJyZW50KTtcbiAgICAgICAgbGV0IHByZXZpb3VzOiBGcmFtZVNldCA9IG51bGwsXG4gICAgICAgICAgICBuZXh0OiBGcmFtZVNldCA9IG51bGw7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uTmFtZXM6IHN0cmluZ1tdID0gWycnICsgY3VycmVudC5kYXRlLmdldFRpbWUoKV07XG4gICAgICAgIGNvbnN0IGZyYW1lU2V0cyA9IHt9O1xuICAgICAgICBmcmFtZVNldHNbJycgKyBjdXJyZW50LmRhdGUuZ2V0VGltZSgpXSA9IGN1cnJlbnQ7XG4gICAgICAgIGlmIChwb3NpdGlvbiA+IDApIHtcbiAgICAgICAgICAgIHByZXZpb3VzID0gdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFyc0V4dGVuZGVkW3Bvc2l0aW9uIC0gMV07XG4gICAgICAgICAgICBwb3NpdGlvbk5hbWVzLnB1c2goJycgKyBwcmV2aW91cy5kYXRlLmdldFRpbWUoKSk7XG4gICAgICAgICAgICBmcmFtZVNldHNbJycgKyBwcmV2aW91cy5kYXRlLmdldFRpbWUoKV0gPSBwcmV2aW91cztcbiAgICAgICAgfVxuICAgICAgICBpZiAocG9zaXRpb24gPCB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWQubGVuZ3RoKSB7XG4gICAgICAgICAgICBuZXh0ID0gdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFyc0V4dGVuZGVkW3Bvc2l0aW9uICsgMV07XG4gICAgICAgICAgICBpZiAobmV4dD8uZGF0ZSkge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uTmFtZXMucHVzaCgnJyArIG5leHQuZGF0ZS5nZXRUaW1lKCkpO1xuICAgICAgICAgICAgICAgIGZyYW1lU2V0c1snJyArIG5leHQuZGF0ZS5nZXRUaW1lKCldID0gbmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGFsaWduIE1hcCB3aXRoIHRhcmdldHNcbiAgICAgICAgY29uc3QgdGFyZ2V0czoge1xuICAgICAgICAgICAgZGF0ZTogRGF0ZTtcbiAgICAgICAgICAgIHJhaW5Db21wdXRhdGlvbklkOiBzdHJpbmc7XG4gICAgICAgICAgICByYWluQ29tcHV0YXRpb25RdWFsaXR5SWQ6IHN0cmluZztcbiAgICAgICAgICAgIGN1bXVsYXRpdmVIb3VyczogbnVtYmVyO1xuICAgICAgICB9W10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBwb3NpdGlvbk5hbWUgb2YgcG9zaXRpb25OYW1lcykge1xuICAgICAgICAgICAgaWYgKGZyYW1lU2V0c1twb3NpdGlvbk5hbWVdKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZnJhbWVTZXRzW3Bvc2l0aW9uTmFtZV07XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnJhaW5Db21wdXRhdGlvblF1YWxpdHlJZCA9IHRoaXMuZ2V0UmFpbkNvbXB1dGF0aW9uUXVhbGl0eVRhcmdldCh0YXJnZXQpO1xuICAgICAgICAgICAgICAgIHRhcmdldC53aXRoR2F1Z2UgPSB3aXRoR2F1Z2VzTWVhc3VyZXM7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LmN1bXVsYXRpdmVIb3VycyA9IGN1bXVsYXRpdmVIb3VycztcbiAgICAgICAgICAgICAgICB0YXJnZXRzLnB1c2godGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVmcmFtZUNvbnRhaW5lcnMgPSBhd2FpdCB0aGlzLnJlZnJlc2hNYXBUaW1lZnJhbWVDb250YWluZXJzKHRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBpZiAocG9zaXRpb25OYW1lID09PSAnJyArIGN1cnJlbnQuZGF0ZS5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkZldGNoRG9uZSh0aW1lZnJhbWVDb250YWluZXJzKS50aGVuKChpZ25vcmVkKSA9PiB7fSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gYWxpZ24gQ29tcGFyZSB3aXRoIGN1cnJlbnQgZGF0ZVxuICAgICAgICB0aGlzLnJlZnJlc2hDb21wYXJlUXVhbGl0eShjdXJyZW50KS50aGVuKChpZ25vcmVkKSA9PiB7fSk7XG5cbiAgICAgICAgdGhpcy50aW1lbGluZVNlbGVjdGVkRnJhbWVTZXQgPSBjdXJyZW50O1xuICAgIH1cblxuICAgIGdldFRpbWVsaW5lRnJhbWVTZXQoKTogRnJhbWVTZXRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzO1xuICAgIH1cblxuICAgIGdldFRpbWVsaW5lU2VsZWN0ZWRGcmFtZVNldCgpOiBGcmFtZVNldCB7XG4gICAgICAgIHJldHVybiB0aGlzLnRpbWVsaW5lU2VsZWN0ZWRGcmFtZVNldDtcbiAgICB9XG5cbiAgICBhc3luYyByZWZyZXNoKGxhdW5jaFF1YWxpdHlBZnRlcjogYm9vbGVhbiwgZGF0YUludGVybmFsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuY2hlY2tQZXJpb2QoKTtcblxuICAgICAgICB0aGlzLmRhdGFJbnRlcm5hbCA9IGRhdGFJbnRlcm5hbDtcbiAgICAgICAgdGhpcy5jb21wYXJlTWFuYWdlci5jbGVhbkFsbCgpO1xuICAgICAgICBsZXQgcmVmcmVzaEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgbGV0IHJlZnJlc2hEb25lID0gZmFsc2U7XG5cbiAgICAgICAgdGltZXIoMTAwMCwgMTUwMDApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVmcmVzaEluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWZyZXNoRG9uZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hJblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblJlZnJlc2hJblByb2dyZXNzKGF3YWl0IHRoaXMucmVmcmVzaENvdW50cygpLCB0aGlzLnRpbWVmcmFtZURhdGVzKS50aGVuKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGlnbm9yZWQpID0+IHt9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hEb25lID0gYXdhaXQgdGhpcy5yZWZyZXNoUGVyaW9kSW5zaWRlUG9sbGluZygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlZnJlc2hEb25lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWZyZXNoRG9uZTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5jbG9zZVJlZnJlc2hUaW1lcilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IGFzeW5jIChyZWZyZXNoRmluaXNoZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlZnJlc2hGaW5pc2hlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZVJlZnJlc2hUaW1lci5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5vblJlZnJlc2hEb25lKHRoaXMudGltZWZyYW1lRGF0ZXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignZXJyb3IgaW4gcmVmcmVzaCcsIGVycm9yKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0UmVtb3ZlRHVwbGljYXRlKGI6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5yZW1vdmVEdXBsaWNhdGUgPSBiO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjaGVja1BlcmlvZCgpIHtcbiAgICAgICAgaWYgKHRoaXMucGVyaW9kLmJlZ2luLmdldFRpbWUoKSA9PT0gdGhpcy5wZXJpb2QuZW5kLmdldFRpbWUoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCduZWVkIGEgcGVyaW9kJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgcmVmcmVzaENvdW50cygpIHtcbiAgICAgICAgdGhpcy5jb3VudHNQZXJpb2QgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldENvdW50cyh0aGlzLnJhaW5Ob2RlLmlkLCB7XG4gICAgICAgICAgICByYW5nZTogJ2RheScsXG4gICAgICAgICAgICBwZXJpb2RCZWdpbjogdGhpcy5fcGVyaW9kLmJlZ2luLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY291bnRzUGVyaW9kO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRSYWluQ29tcHV0YXRpb25RdWFsaXR5VGFyZ2V0KGZyYW1lc2V0OiBGcmFtZVNldCk6IHN0cmluZyB7XG4gICAgICAgIGlmIChmcmFtZXNldC5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXMubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZyYW1lc2V0LnJhaW5Db21wdXRhdGlvblF1YWxpdGllc1swXS5pZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgcmVmcmVzaFBlcmlvZEluc2lkZVBvbGxpbmcoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGxldCBkb25lID0gZmFsc2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBkb25lID0gYXdhaXQgdGhpcy5yZWZyZXNoQ2hlY2tJZkRvbmUoKTtcblxuICAgICAgICAgICAgLy8gYmVoaW5kIHJlZnJlc2hcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaFRpbWVmcmFtZXNGcm9tUmFkYXJzKGRvbmUpO1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoR2xvYmFsQ29tcGFyZVJlcG9ydChkb25lKS50aGVuKChpZ25vcmVkKSA9PiB7fSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkb25lO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZG9uZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgcmVmcmVzaENoZWNrSWZEb25lKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICAvLyBUT0RPIHJldHVybiB0aGlzLmNvdW50c1BlcmlvZC5xdWV1ZVJ1bm5pbmcgPT09IDA7XG4gICAgICAgIGF3YWl0IHNsZWVwKDUwMDApO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgcmVmcmVzaFRpbWVmcmFtZXNGcm9tUmFkYXJzKGRvbmU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKCFkb25lKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgYmVnaW5FeHRlbmRlZCA9IG5ldyBEYXRlKHRoaXMucGVyaW9kLmJlZ2luKTtcbiAgICAgICAgICAgIGNvbnN0IGVuZEV4dGVuZGVkID0gbmV3IERhdGUodGhpcy5wZXJpb2QuZW5kKTtcbiAgICAgICAgICAgIGJlZ2luRXh0ZW5kZWQuc2V0TWludXRlcyhiZWdpbkV4dGVuZGVkLmdldE1pbnV0ZXMoKSAtIDcpO1xuICAgICAgICAgICAgZW5kRXh0ZW5kZWQuc2V0TWludXRlcyhlbmRFeHRlbmRlZC5nZXRNaW51dGVzKCkgKyA3KTtcbiAgICAgICAgICAgIHRoaXMucmFpbk5vZGUgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldFJhaW5UaW1lZnJhbWUoXG4gICAgICAgICAgICAgICAgdGhpcy5yYWluTm9kZS5pZCxcbiAgICAgICAgICAgICAgICBiZWdpbkV4dGVuZGVkLFxuICAgICAgICAgICAgICAgIGVuZEV4dGVuZGVkLFxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YUludGVybmFsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWQgPSBhd2FpdCB0aGlzLnJhZGFyU2VydmljZS5nZXRUaW1lbGluZSh0aGlzLnJhaW5Ob2RlKTtcbiAgICAgICAgICAgIHRoaXMudGltZWZyYW1lc0Zyb21SYWRhcnMgPSB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWRcbiAgICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoZnJhbWVTZXQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBlcmlvZC5iZWdpbi5nZXRUaW1lKCkgPD0gZnJhbWVTZXQuZGF0ZS5nZXRUaW1lKCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lU2V0LmRhdGUuZ2V0VGltZSgpIDw9IHRoaXMucGVyaW9kLmVuZC5nZXRUaW1lKClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuZGF0ZS5nZXRUaW1lKCkgLSBiLmRhdGUuZ2V0VGltZSgpKTtcblxuICAgICAgICAgICAgY29uc29sZS5sb2coJ3RpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWQ6JywgdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFyc0V4dGVuZGVkKTtcblxuICAgICAgICAgICAgdGhpcy50aW1lZnJhbWVEYXRlcyA9IHRoaXMudGltZWZyYW1lc0Zyb21SYWRhcnMubWFwKChmcmFtZVNldCkgPT4gZnJhbWVTZXQuZGF0ZSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFycztcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcigncmVmcmVzaFRpbWVmcmFtZXNGcm9tUmFkYXJzJywgZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIHJlZnJlc2hHbG9iYWxDb21wYXJlUmVwb3J0KGRvbmU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKCFkb25lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0cyA9IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCBmcmFtZVNldCBvZiB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGZyYW1lU2V0KSk7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LmRhdGUgPSBuZXcgRGF0ZSh0YXJnZXQuZGF0ZSk7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnJhaW5Db21wdXRhdGlvblF1YWxpdHlJZCA9IHRoaXMuZ2V0UmFpbkNvbXB1dGF0aW9uUXVhbGl0eVRhcmdldChmcmFtZVNldCk7XG4gICAgICAgICAgICAgICAgdGFyZ2V0cy5wdXNoKHRhcmdldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNvbXBhcmVNYW5hZ2VyLnJlZnJlc2hHbG9iYWxDb21wYXJlUXVhbGl0eSh0YXJnZXRzLCAhdGhpcy5yZW1vdmVEdXBsaWNhdGUpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdyZWZyZXNoR2xvYmFsQ29tcGFyZVJlcG9ydCcsIGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIHJlZnJlc2hNYXBUaW1lZnJhbWVDb250YWluZXJzKHRhcmdldDoge1xuICAgICAgICBkYXRlOiBEYXRlO1xuICAgICAgICByYWluQ29tcHV0YXRpb25JZDogc3RyaW5nO1xuICAgICAgICB3aXRoR2F1Z2U6IGJvb2xlYW47XG4gICAgICAgIGN1bXVsYXRpdmVIb3VyczogbnVtYmVyO1xuICAgIH0pIHtcbiAgICAgICAgaWYgKCF0YXJnZXQgfHwgIXRhcmdldC5yYWluQ29tcHV0YXRpb25JZCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdQYiB3aXRoIHJlZnJlc2hNYXBUaW1lZnJhbWVDb250YWluZXJzIGluc2lnaHRzJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByYWluTm9kZSA9IHRoaXMucmFpbk5vZGU7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcnM6IFRpbWVmcmFtZUNvbnRhaW5lcltdID0gW107XG4gICAgICAgIGNvbnN0IG5ld0NyZWF0ZWRUaW1lZnJhbWVDb250YWluZXJzID0gbmV3IFRpbWVmcmFtZUNvbnRhaW5lcnMoY29udGFpbmVycyk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgcmFpbk5vZGVDYXJ0ZXNpYW5NYXA7XG5cbiAgICAgICAgICAgIGlmICghdGFyZ2V0LmN1bXVsYXRpdmVIb3Vycykge1xuICAgICAgICAgICAgICAgIHJhaW5Ob2RlQ2FydGVzaWFuTWFwID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRSYWluQ29tcHV0YXRpb25DYXJ0ZXNpYW5NYXBCeUlkKFxuICAgICAgICAgICAgICAgICAgICByYWluTm9kZS5pZCxcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnJhaW5Db21wdXRhdGlvbklkXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmFpbk5vZGVDYXJ0ZXNpYW5NYXAgPVxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldFJhaW5Db21wdXRhdGlvbkN1bXVsYXRpdmVNYXBCeUlkKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmFpbk5vZGUuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQucmFpbkNvbXB1dGF0aW9uSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuY3VtdWxhdGl2ZUhvdXJzXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyYWluTm9kZUNhcnRlc2lhbk1hcCkge1xuICAgICAgICAgICAgICAgIG5ld0NyZWF0ZWRUaW1lZnJhbWVDb250YWluZXJzLmFkZEZyb21SYWluQ29tcHV0YXRpb25NYXAoXG4gICAgICAgICAgICAgICAgICAgIHJhaW5Ob2RlQ2FydGVzaWFuTWFwLFxuICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJhaW5Db21wdXRhdGlvbk1hcERhdGUgPSByYWluTm9kZUNhcnRlc2lhbk1hcC5kYXRlO1xuICAgICAgICAgICAgICAgIHRoaXMucmFpbkNvbXB1dGF0aW9uTWFwRG9uZURhdGUgPSByYWluTm9kZUNhcnRlc2lhbk1hcC5pc0RvbmVEYXRlO1xuICAgICAgICAgICAgICAgIHRoaXMucmFpbkNvbXB1dGF0aW9uTWFwTGF1bmNoZWRCeSA9IHJhaW5Ob2RlQ2FydGVzaWFuTWFwLmxhdW5jaGVkQnk7XG4gICAgICAgICAgICAgICAgdGhpcy5yYWluQ29tcHV0YXRpb25NYXBUaW1lU3BlbnRJbk1zID0gcmFpbk5vZGVDYXJ0ZXNpYW5NYXAudGltZVNwZW50SW5NcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdQYiB3aXRoIGNvbXB1dGF0aW9ucyBmb3IgaWQ6JywgdGFyZ2V0LnJhaW5Db21wdXRhdGlvbklkLCBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXdDcmVhdGVkVGltZWZyYW1lQ29udGFpbmVycztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgcmVmcmVzaENvbXBhcmVRdWFsaXR5KGZyYW1lU2V0OiBGcmFtZVNldCkge1xuICAgICAgICBhd2FpdCB0aGlzLmNvbXBhcmVNYW5hZ2VyLnJlZnJlc2hDb21wYXJlUXVhbGl0eShmcmFtZVNldCk7XG4gICAgICAgIGF3YWl0IHRoaXMuY29tcGFyZU1hbmFnZXIuc2V0R2F1Z2VzSW5Db21wYXJlKCk7XG4gICAgfVxufVxuIl19
@@ -1367,7 +1367,8 @@ class CompareManager {
1367
1367
  const dates = targetsOrdered.map((t) => t.date);
1368
1368
  const qualities = dates
1369
1369
  .filter((d) => !!d)
1370
- .map((d) => this.getRainComputationQuality(d));
1370
+ .map((d) => this.getRainComputationQuality(d))
1371
+ .filter((rcq) => !!rcq);
1371
1372
  this.buildCompares = SpeedMatrixContainer.BuildCompares(qualities, !withCompareDuplicate);
1372
1373
  return this.buildCompares;
1373
1374
  });
@@ -1486,6 +1487,7 @@ class GaugeNodeFilter extends GaugeNode {
1486
1487
  }
1487
1488
  }
1488
1489
 
1490
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
1489
1491
  class RefreshManager {
1490
1492
  constructor(radarService, profileService, compareManager) {
1491
1493
  this.radarService = radarService;
@@ -1639,7 +1641,7 @@ class RefreshManager {
1639
1641
  return __awaiter(this, void 0, void 0, function* () {
1640
1642
  let done = false;
1641
1643
  try {
1642
- done = this.refreshCheckIfDone();
1644
+ done = yield this.refreshCheckIfDone();
1643
1645
  // behind refresh
1644
1646
  yield this.refreshTimeframesFromRadars(done);
1645
1647
  this.refreshGlobalCompareReport(done).then((ignored) => { });
@@ -1652,9 +1654,11 @@ class RefreshManager {
1652
1654
  });
1653
1655
  }
1654
1656
  refreshCheckIfDone() {
1655
- // console.log('refreshPeriodInsidePolling', this.countsPeriod.computationsByTeam, this.countsPeriod.radarMeasures)
1656
- // return this.countsPeriod.computationsByTeam === this.countsPeriod.radarMeasures;
1657
- return this.countsPeriod.queueRunning === 0;
1657
+ return __awaiter(this, void 0, void 0, function* () {
1658
+ // TODO return this.countsPeriod.queueRunning === 0;
1659
+ yield sleep(5000);
1660
+ return true;
1661
+ });
1658
1662
  }
1659
1663
  refreshTimeframesFromRadars(done) {
1660
1664
  return __awaiter(this, void 0, void 0, function* () {