ng-zenduit 1.0.34 → 1.0.35

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.
@@ -234,7 +234,7 @@ export class ZenduDatepickerComponent {
234
234
  if (!this.currentSlot) {
235
235
  this.currentSlot = new Date();
236
236
  }
237
- const enMonth = moment(this.date).format("MMM");
237
+ const enMonth = moment(this.currentSlot).format("MMM");
238
238
  const translatedMonth = this._translate.instant(enMonth);
239
239
  this.daysTitle = moment(this.currentSlot).format("MMM yyyy").replace(enMonth, translatedMonth);
240
240
  this.dayRows = [];
@@ -562,4 +562,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
562
562
  type: HostListener,
563
563
  args: ['window:scroll', []]
564
564
  }] } });
565
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemVuZHUtZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy16ZW5kdWl0L3NyYy9saWIvZGF0ZXBpY2tlci96ZW5kdS1kYXRlcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9kYXRlcGlja2VyL3plbmR1LWRhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFDN0MsTUFBTSxFQUE4QixTQUFTLEVBQzNELE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUduQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBR3JELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQztBQUMxQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUM7QUFDM0IsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDO0FBTzVCLE1BQU0sT0FBTyx3QkFBd0I7SUF3RmpDLFlBQ1ksUUFBb0IsRUFDcEIsT0FBZ0IsRUFDaEIsZ0JBQWtDLEVBQ2xDLFVBQTRCO1FBSDVCLGFBQVEsR0FBUixRQUFRLENBQVk7UUFDcEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBckZ4Qzs7V0FFRztRQUNPLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXZDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsYUFBUSxHQUFHLElBQUksQ0FBQztRQUVoQixvQkFBZSxHQUF1QixJQUFJLENB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QUM7UUFDaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDMUYsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEI7SUFDTCxDQUFDO0lBRU0sTUFBTTtRQUNULElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDYixPQUFPO1NBQ1Y7UUFDRCxJQUFJLEVBQUUsQ0FBQztRQUNQLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0sUUFBUTtRQUNYLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDYixPQUFPO1NBQ1Y7UUFDRCxJQUFJLEVBQUUsQ0FBQztRQUNQLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0sS0FBSztRQUNSLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0IsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDWixPQUFPO1NBQ1Y7UUFDRCxHQUFHLEVBQUUsQ0FBQztRQUNOLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0s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R0FBeEIsd0JBQXdCLGk4QkNyQnJDLDR1VEF1TkE7NEZEbE1hLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDSSxnQkFBZ0I7cUxBU2pCLElBQUk7c0JBQVosS0FBSztnQkFLSSxVQUFVO3NCQUFuQixNQUFNO2dCQUVFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csY0FBYztzQkFBdEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFaUIsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUVPLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFFSyxnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCO2dCQThDN0IsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWE1QyxNQUFNO3NCQURMLFlBQVk7dUJBQUMsZUFBZSxFQUFFLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LFxuICAgIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcbmltcG9ydCB7IERhdGVQaWNrZXJEYXkgfSBmcm9tICcuL2RhdGUtcGlja2VyLWRheSc7XG5pbXBvcnQgeyBEYXRlUGlja2VySGludCB9IGZyb20gXCIuL2RhdGUtcGlja2VyLWhpbnRcIjtcbmltcG9ydCB7IERBVEVQSUNLRVJfUE9TSVRJT04gfSBmcm9tICcuL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgT3ZlcmxheVJlZiwgT3ZlcmxheSwgQ29ubmVjdGVkUG9zaXRpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5jb25zdCBkZWZhdWx0SG91cnMgPSAnMTInO1xuY29uc3QgZGVmYXVsdE1pbnV0cyA9ICcwMCc7XG5jb25zdCBkZWZhdWx0U2Vjb25kcyA9ICcwMCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnemVuLWRhdGVwaWNrZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi96ZW5kdS1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi96ZW5kdS1kYXRlcGlja2VyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgWmVuZHVEYXRlcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcblxuICAgIC8qKlxuICAgICAqIENvbXBvbmVudCBwcm9wZXJ0eVxuICAgICAqL1xuICAgIEBJbnB1dCgpIGRhdGU6IERhdGU7XG5cbiAgICAvKipcbiAgICAgKiBjYWxsYmFjayB0byBlbWl0IGNoYW5nZXMgZm9yIHBhcmVudCBjb21wb25lbnRcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcblxuICAgIEBJbnB1dCgpIHNob3dUaW1lID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBzaG93RGF0ZSA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBwYXJlbnRDb250YWluZXI6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKSBjb250YWluZXJDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbWluRGF0ZTogRGF0ZTtcblxuICAgIEBJbnB1dCgpIG1heERhdGU6IERhdGU7XG5cbiAgICBASW5wdXQoKSBib3hEZXNpZ246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGhpZ2hsaWdodERheXM6IG51bWJlcltdID0gW107XG5cbiAgICBASW5wdXQoKSBhdXRvQ29uZmlybTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgaGludDogRGF0ZVBpY2tlckhpbnQ7XG5cbiAgICAvKipcbiAgICAgKiBkYXRlcGlja2VyIHN0YXRlc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGhpZ2hsaWdodEVycm9yOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHhQb3NpdGlvbjogREFURVBJQ0tFUl9QT1NJVElPTiA9IERBVEVQSUNLRVJfUE9TSVRJT04uQVVUTztcblxuICAgIEBJbnB1dCgpIHlQb3NpdGlvbjogREFURVBJQ0tFUl9QT1NJVElPTiA9IERBVEVQSUNLRVJfUE9TSVRJT04uQVVUTztcblxuICAgIEBJbnB1dCgpIGRpc3BhbHlPdmVyUGFyZW50OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBAVmlld0NoaWxkKCdkYXRlTWVudScpIGRhdGVNZW51ITogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ3RyaWdnZXJCdXR0b24nKSB0cmlnZ2VyQnV0dG9uITogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ2RhdGVNZW51VGVtcGxhdGUnKSBkYXRlTWVudVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAgIHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcblxuICAgIHB1YmxpYyBzZWxlY3RlZFRpbWU6IHsgSHI6IG51bWJlciwgTWluOiBudW1iZXIsIFNlYzogbnVtYmVyIH0gPSB7IEhyOiAxLCBNaW46IDAsIFNlYzogMCB9O1xuXG4gICAgcHVibGljIGlzUGlja2VyVmlzaWJsZSA9IGZhbHNlO1xuXG4gICAgcHVibGljIGRheVJvd3M6IEFycmF5PHsgZGF5czogRGF0ZVBpY2tlckRheVtdIH0+ID0gW107XG5cbiAgICBwdWJsaWMgZGF5c1RpdGxlID0gXCJcIjtcblxuICAgIHB1YmxpYyB3ZWVrRGF5cyA9IFtcIk1vXCIsIFwiVHVcIiwgXCJXZVwiLCBcIlRoXCIsIFwiRnJpXCIsIFwiU2FcIiwgXCJTdVwiXTtcblxuICAgIHB1YmxpYyBjdXJyZW50U2xvdCA9IG5ldyBEYXRlKCk7XG5cbiAgICBwdWJsaWMgaG91ciA9IGRlZmF1bHRIb3VycztcblxuICAgIHB1YmxpYyBtaW4gPSBkZWZhdWx0TWludXRzO1xuXG4gICAgcHVibGljIHNlYyA9IGRlZmF1bHRTZWNvbmRzO1xuXG4gICAgcHVibGljIGlzUE0gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBfZGF0ZVRvU2V0OiBEYXRlO1xuXG4gICAgcHVibGljIG1vbnRocyA9IFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLCAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXTtcblxuICAgIHB1YmxpYyB5ZWFycyA9IFtdO1xuXG4gICAgcHVibGljIG1vbnRoUGlja2VyVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIHllYXJQaWNrZXJWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICByaWdodDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGJvdHRvbTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgICApIHsgfVxuXG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgICBvdXRzaWRlSGFuZGxpbmcoZXZlbnQpIHtcbiAgICAgICAgaWYgKCFkb2N1bWVudC5ib2R5LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgIC8vIGVsZW1lbnQgbm90IGluIHRoZSBET01cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhpZGVUaW1lUGlja2VyKClcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6c2Nyb2xsJywgW10pXG4gICAgc2Nyb2xsKCkge1xuICAgICAgICB0aGlzLnVwZGF0ZVBsYWNlbWVudCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGVUb1NldCA9IG5ldyBEYXRlKHRoaXMuZGF0ZSk7XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lID0ge1xuICAgICAgICAgICAgICAgIEhyOiBtb21lbnQodGhpcy5kYXRlKS5ob3VycygpLFxuICAgICAgICAgICAgICAgIE1pbjogbW9tZW50KHRoaXMuZGF0ZSkubWludXRlcygpLFxuICAgICAgICAgICAgICAgIFNlYzogbW9tZW50KHRoaXMuZGF0ZSkuc2Vjb25kcygpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZVBsYWNlbWVudCgpIHtcbiAgICAgICAgdGhpcy5yaWdodCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJvdHRvbSA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy54UG9zaXRpb24gPT09IERBVEVQSUNLRVJfUE9TSVRJT04uQVVUTyAmJiB0aGlzLmdldEhvcml6b250YWxNZW51RGlyZWN0aW9uKCkgPT09IERBVEVQSUNLRVJfUE9TSVRJT04uTEVGVCkge1xuICAgICAgICAgICAgdGhpcy5yaWdodCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMueVBvc2l0aW9uID09PSBEQVRFUElDS0VSX1BPU0lUSU9OLkFVVE8gJiYgdGhpcy5nZXRWZXJ0aWNhbE1lbnVEaXJlY3Rpb24oKSA9PT0gREFURVBJQ0tFUl9QT1NJVElPTi5UT1ApIHtcbiAgICAgICAgICAgIHRoaXMuYm90dG9tID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy54UG9zaXRpb24gPT09IERBVEVQSUNLRVJfUE9TSVRJT04uUklHSFQpIHtcbiAgICAgICAgICAgIHRoaXMucmlnaHQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnlQb3NpdGlvbiA9PT0gREFURVBJQ0tFUl9QT1NJVElPTi5UT1ApIHtcbiAgICAgICAgICAgIHRoaXMuYm90dG9tID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmVydGljYWxNZW51RGlyZWN0aW9uKCk6IERBVEVQSUNLRVJfUE9TSVRJT04ge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCB0b3AgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgICBpZiAodG9wID4gKGhlaWdodCAvIDIpKSB7XG4gICAgICAgICAgICByZXR1cm4gREFURVBJQ0tFUl9QT1NJVElPTi5UT1BcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBEQVRFUElDS0VSX1BPU0lUSU9OLkJPVFRPTTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gZ2V0IGRhdGVwaWNrZXIgcG9zaXRpb25cbiAgICAgKiBAcmV0dXJucyBlaXRoZXIgXCJsZWZ0XCIgb3IgXCJyaWdodFwiXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRIb3Jpem9udGFsTWVudURpcmVjdGlvbigpOiBEQVRFUElDS0VSX1BPU0lUSU9OIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgbGVmdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgICAgY29uc3Qgd2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgaWYgKGxlZnQgPiAod2lkdGggLyAyKSkge1xuICAgICAgICAgICAgcmV0dXJuIERBVEVQSUNLRVJfUE9TSVRJT04uTEVGVDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBEQVRFUElDS0VSX1BPU0lUSU9OLlJJR0hUO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBwdWJsaWMgdG9nZ2xlUGlja2VyKCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuX2RhdGVUb1NldCA9IHRoaXMuZGF0ZSA/IG5ldyBEYXRlKHRoaXMuZGF0ZSkgOiBudWxsO1xuXG4gICAgICAgIHRoaXMuaXNQaWNrZXJWaXNpYmxlID0gIXRoaXMuaXNQaWNrZXJWaXNpYmxlO1xuICAgICAgICBpZiAodGhpcy5zaG93RGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U2xvdCA9IHRoaXMuX2RhdGVUb1NldCB8fCBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVEYXlzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2hvd1RpbWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lID0ge1xuICAgICAgICAgICAgICAgIEhyOiBtb21lbnQodGhpcy5kYXRlKS5ob3VycygpLFxuICAgICAgICAgICAgICAgIE1pbjogbW9tZW50KHRoaXMuZGF0ZSkubWludXRlcygpLFxuICAgICAgICAgICAgICAgIFNlYzogbW9tZW50KHRoaXMuZGF0ZSkuc2Vjb25kcygpXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAodGhpcy5kYXRlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gbW9tZW50KHRoaXMuZGF0ZSkuZm9ybWF0KCdoaDptbSBBJyk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmlzUE0gPSBmb3JtYXR0ZWQuaW5jbHVkZXMoJ1BNJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5ob3VyID0gZm9ybWF0dGVkLnNsaWNlKDAsIDIpO1xuICAgICAgICAgICAgICAgIHRoaXMubWluID0gZm9ybWF0dGVkLnNsaWNlKDMsIDUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzUGlja2VyVmlzaWJsZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGlzcGFseU92ZXJQYXJlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZU92ZXJsYXkoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQbGFjZW1lbnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN5bmNNZW51UG9zaXRpb25XaXRoRGVsYXkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlT3ZlcmxheSgpIHtcbiAgICAgICAgY29uc3QgdmVydGljYWxEaXJlY3Rpb24gPSB0aGlzLmdldFZlcnRpY2FsTWVudURpcmVjdGlvbigpO1xuICAgICAgICBjb25zdCBob3Jpem9udGFsRGlyZWN0aW9uID0gdGhpcy5nZXRIb3Jpem9udGFsTWVudURpcmVjdGlvbigpO1xuXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgICAgICAgICAgIG9yaWdpblg6IGhvcml6b250YWxEaXJlY3Rpb24gPT09IERBVEVQSUNLRVJfUE9TSVRJT04uUklHSFQgPyAnc3RhcnQnIDogJ2VuZCcsXG4gICAgICAgICAgICBvcmlnaW5ZOiB2ZXJ0aWNhbERpcmVjdGlvbiA9PT0gREFURVBJQ0tFUl9QT1NJVElPTi5CT1RUT00gPyAnYm90dG9tJyA6ICd0b3AnLFxuICAgICAgICAgICAgb3ZlcmxheVg6IGhvcml6b250YWxEaXJlY3Rpb24gPT09IERBVEVQSUNLRVJfUE9TSVRJT04uUklHSFQgPyAnc3RhcnQnIDogJ2VuZCcsXG4gICAgICAgICAgICBvdmVybGF5WTogdmVydGljYWxEaXJlY3Rpb24gPT09IERBVEVQSUNLRVJfUE9TSVRJT04uQk9UVE9NID8gJ3RvcCcgOiAnYm90dG9tJ1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIERldGVybWluZSB0aGUgdmVydGljYWwgcG9zaXRpb24gKGJlbG93IG9yIGFib3ZlKSBhbmQgc2V0IHRoZSB2ZXJ0aWNhbCBvZmZzZXQgKDAgZm9yIGJlbG93LCAtMjAgZm9yIGFib3ZlKVxuICAgICAgICBjb25zdCBpc0JlbG93ID0gdmVydGljYWxEaXJlY3Rpb24gPT09IERBVEVQSUNLRVJfUE9TSVRJT04uQk9UVE9NO1xuICAgICAgICBjb25zdCBvZmZzZXRZID0gaXNCZWxvdyA/IDAgOiAtMjA7XG5cbiAgICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpXG4gICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLnRyaWdnZXJCdXR0b24pXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgICAgICAgICAgcG9zaXRpb25cbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAvLyBEaXNhYmxlIGZsZXhpYmxlIGRpbWVuc2lvbnMsIG1lYW5pbmcgdGhlIG92ZXJsYXkgd2lsbCBub3QgcmVzaXplIGF1dG9tYXRpY2FsbHlcbiAgICAgICAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxuICAgICAgICAgICAgLy8gU2V0IHRoZSB2ZXJ0aWNhbCBvZmZzZXQgdG8gYXZvaWQgb3ZlcmxhcHBpbmcgd2l0aCB0aGUgcGFyZW50IGJ1dHRvbiBcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdE9mZnNldFkob2Zmc2V0WSlcbiAgICAgICAgICAgIC8vIERpc2FibGUgYXV0b21hdGljIHJlcG9zaXRpb25pbmcgb2YgdGhlIG92ZXJsYXkgdG8gYXZvaWQgb3ZlcmxhcCB3aXRoIG90aGVyIGVsZW1lbnRzXG4gICAgICAgICAgICAud2l0aFB1c2goZmFsc2UpO1xuXG5cbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgICAgICBiYWNrZHJvcENsYXNzOiAnY3VzdG9tLWJhY2tkcm9wJyxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICdjdXN0b20tb3ZlcmxheScsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMuZGF0ZU1lbnVUZW1wbGF0ZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKSk7XG5cbiAgICAgICAgdGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLmRldGFjaCgpO1xuICAgICAgICAgICAgdGhpcy5pc1BpY2tlclZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICAvLyBNZXRob2QgdG8gY2xvc2UgdGhlIG92ZXJsYXlcbiAgICBwdWJsaWMgY2xvc2VQaWNrZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZi5kZXRhY2goKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzUGlja2VyVmlzaWJsZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENsZWFudXAgb3ZlcmxheSBvbiBjb21wb25lbnQgZGVzdHJ1Y3Rpb25cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd0RhdGVQaWNrZXIoKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZU1lbnUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVNZW51Lm5hdGl2ZUVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMClcbiAgICB9XG5cbiAgICBwcml2YXRlIHN5bmNNZW51UG9zaXRpb25XaXRoRGVsYXkoKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJlbnRDb250YWluZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0RhdGVQaWNrZXIoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudFJlY3QgPSB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRSZWN0ID0gdGhpcy5wYXJlbnRDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgdG9wIGRpZmZlcmVuY2UgYmV0d2VlbiBlbGVtZW50IGFuZCBwYXJlbnQgKGlmIGF2YWlsYWJsZSlcbiAgICAgICAgICAgIGNvbnN0IHRvcCA9IHRoaXMuY2FsY3VsYXRlVG9wUG9zaXRpb24oZWxlbWVudFJlY3QsIHBhcmVudFJlY3QpO1xuXG4gICAgICAgICAgICBjb25zdCBkYXRlTWVudVJlY3QgPSB0aGlzLmRhdGVNZW51Py5uYXRpdmVFbGVtZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIHRoaXMuYm90dG9tID0gZGF0ZU1lbnVSZWN0Py5oZWlnaHQgPCB0b3A7XG4gICAgICAgICAgICB0aGlzLnNob3dEYXRlUGlja2VyKCk7XG4gICAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlVG9wUG9zaXRpb24oZWxlbWVudFJlY3Q6IERPTVJlY3QsIHBhcmVudFJlY3Q6IERPTVJlY3QpOiBudW1iZXIge1xuICAgICAgICBsZXQgdG9wOiBudW1iZXI7XG4gICAgICAgIGlmIChlbGVtZW50UmVjdC50b3AgPCBwYXJlbnRSZWN0LnRvcCkge1xuICAgICAgICAgICAgdG9wID0gcGFyZW50UmVjdC50b3AgLSBlbGVtZW50UmVjdC50b3A7IC8vIFJldmVyc2Ugb3JkZXIgaWYgY29uZGl0aW9uIGlzIG1ldFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdG9wID0gZWxlbWVudFJlY3QudG9wIC0gcGFyZW50UmVjdC50b3A7IC8vIE5vcm1hbCBjYWxjdWxhdGlvblxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b3A7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVEYXlzKCkge1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFNsb3QpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNsb3QgPSBuZXcgRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZW5Nb250aCA9IG1vbWVudCh0aGlzLmRhdGUpLmZvcm1hdChcIk1NTVwiKTtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRlZE1vbnRoID0gdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoZW5Nb250aCk7XG5cbiAgICAgICAgdGhpcy5kYXlzVGl0bGUgPSBtb21lbnQodGhpcy5jdXJyZW50U2xvdCkuZm9ybWF0KFwiTU1NIHl5eXlcIikucmVwbGFjZShlbk1vbnRoLCB0cmFuc2xhdGVkTW9udGgpO1xuICAgICAgICB0aGlzLmRheVJvd3MgPSBbXTtcbiAgICAgICAgbGV0IGN1cnJlbnQgPSBtb21lbnQodGhpcy5jdXJyZW50U2xvdCkuc3RhcnRPZihcIm1vbnRoXCIpLnN0YXJ0T2YoXCJ3ZWVrXCIpLmFkZCgxLCBcImRheVwiKTtcbiAgICAgICAgbGV0IGVuZCA9IG1vbWVudCh0aGlzLmN1cnJlbnRTbG90KS5lbmRPZihcIm1vbnRoXCIpLmVuZE9mKFwid2Vla1wiKS5hZGQoMSwgXCJkYXlcIik7XG5cbiAgICAgICAgY29uc3QgY3VycmVudE1vbnRoID0gbW9tZW50KHRoaXMuY3VycmVudFNsb3QpLm1vbnRoKCk7XG5cbiAgICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudCh0aGlzLl9kYXRlVG9TZXQpO1xuXG4gICAgICAgIHdoaWxlIChjdXJyZW50IDw9IGVuZCkge1xuICAgICAgICAgICAgY29uc3Qgcm93ID0geyBkYXlzOiBbXSBhcyBEYXRlUGlja2VyRGF5W10gfTtcbiAgICAgICAgICAgIHRoaXMuZGF5Um93cy5wdXNoKHJvdyk7XG4gICAgICAgICAgICBmb3IgKGxldCBpZHggPSAwOyBpZHggPCA3OyBpZHgrKykge1xuXG4gICAgICAgICAgICAgICAgbGV0IGlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAoZGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkID0gY3VycmVudC5kYXRlKCkgPT0gZGF0ZS5kYXRlKCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUubW9udGgoKSA9PSBjdXJyZW50Lm1vbnRoKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IGlzT3V0c2lkZSA9IGN1cnJlbnRNb250aCAhPSBjdXJyZW50Lm1vbnRoKCk7XG5cbiAgICAgICAgICAgICAgICBsZXQgaXNEaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWluRGF0ZSAmJiBjdXJyZW50LnRvRGF0ZSgpIDwgdGhpcy5taW5EYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5tYXhEYXRlICYmIGN1cnJlbnQudG9EYXRlKCkgPiB0aGlzLm1heERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IGlzSGlnaGxpZ2h0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmhpZ2hsaWdodERheXMgJiYgdGhpcy5oaWdobGlnaHREYXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBpc0hpZ2hsaWdodGVkID0gdGhpcy5oaWdobGlnaHREYXlzLmluZGV4T2YoY3VycmVudC52YWx1ZU9mKCkpID49IDA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcm93LmRheXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGRhdGU6IGN1cnJlbnQudG9EYXRlKCksXG4gICAgICAgICAgICAgICAgICAgIGxibDogbW9tZW50KGN1cnJlbnQpLmRhdGUoKS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICBpc091dHNpZGU6IGlzT3V0c2lkZSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGlzU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgIGlzSGlnaGxpZ2h0ZWQ6IGlzSGlnaGxpZ2h0ZWRcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBtb21lbnQoY3VycmVudCkuYWRkKDEsIFwiZGF5XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5leHRNb250aCgpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50U2xvdCA9IG1vbWVudCh0aGlzLmN1cnJlbnRTbG90KS5hZGQoMSwgXCJtb250aFwiKS50b0RhdGUoKTtcbiAgICAgICAgdGhpcy51cGRhdGVEYXlzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHByZXZNb250aCgpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50U2xvdCA9IG1vbWVudCh0aGlzLmN1cnJlbnRTbG90KS5zdWJ0cmFjdCgxLCBcIm1vbnRoXCIpLnRvRGF0ZSgpO1xuICAgICAgICB0aGlzLnVwZGF0ZURheXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmV4dFllYXIoKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFNsb3QgPSBtb21lbnQodGhpcy5jdXJyZW50U2xvdCkuYWRkKDEsIFwieWVhclwiKS50b0RhdGUoKTtcbiAgICAgICAgdGhpcy51cGRhdGVEYXlzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHByZXZZZWFyKCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRTbG90ID0gbW9tZW50KHRoaXMuY3VycmVudFNsb3QpLnN1YnRyYWN0KDEsIFwieWVhclwiKS50b0RhdGUoKTtcbiAgICAgICAgdGhpcy51cGRhdGVEYXlzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5leHRZZWFyR3JvdXAoKSB7XG4gICAgICAgIHRoaXMueWVhcnMgPSB0aGlzLnllYXJzLm1hcCh5ZWFyID0+IHllYXIgKyAxNSk7XG4gICAgfVxuXG4gICAgcHVibGljIHByZXZZZWFyR3JvdXAoKSB7XG4gICAgICAgIHRoaXMueWVhcnMgPSB0aGlzLnllYXJzLm1hcCh5ZWFyID0+IHllYXIgLSAxNSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdERheShkYXk6IERhdGVQaWNrZXJEYXkpIHtcbiAgICAgICAgaWYgKGRheS5pc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAvLyBkYXkgaXMgZGlzYWJsZWRcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNob3dUaW1lKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRlVG9TZXQgPSBtb21lbnQoZGF5LmRhdGUpLmhvdXIodGhpcy5zZWxlY3RlZFRpbWUuSHIpLm1pbnV0ZSh0aGlzLnNlbGVjdGVkVGltZS5NaW4pLnNlY29uZCh0aGlzLnNlbGVjdGVkVGltZS5TZWMpLnRvRGF0ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZGF0ZVRvU2V0ID0gbmV3IERhdGUoZGF5LmRhdGUpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5hdXRvQ29uZmlybSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwbHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlRGF5cygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWxlY3RNb250aChtb250aDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRTbG90KTtcbiAgICAgICAgbmV3RGF0ZS5zZXRNb250aChtb250aCk7XG4gICAgICAgIHRoaXMuY3VycmVudFNsb3QgPSBuZXdEYXRlO1xuICAgICAgICB0aGlzLnVwZGF0ZURheXMoKTtcbiAgICAgICAgdGhpcy5tb250aFBpY2tlclZpc2libGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0WWVhcih5ZWFyOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKHRoaXMuY3VycmVudFNsb3QpO1xuICAgICAgICBuZXdEYXRlLnNldEZ1bGxZZWFyKHllYXIpO1xuICAgICAgICB0aGlzLmN1cnJlbnRTbG90ID0gbmV3RGF0ZTtcbiAgICAgICAgdGhpcy51cGRhdGVEYXlzKCk7XG4gICAgICAgIHRoaXMueWVhclBpY2tlclZpc2libGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGlkZVRpbWVQaWNrZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNwYWx5T3ZlclBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5pc1BpY2tlclZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgcHVibGljIHRpbWVDaGFuZ2VkKCkge1xuICAgICAgICBsZXQgbWluID0gcGFyc2VJbnQodGhpcy5taW4pO1xuICAgICAgICBsZXQgaG91ciA9IHBhcnNlSW50KHRoaXMuaG91cik7XG4gICAgICAgIC8vIFJlcGxhY2UgJzAnIHdpdGggYHRoaXMuc2VjYC5cbiAgICAgICAgLy8gQXMgb2Ygbm93IHdlIGRvIG5vdCBoYXZlIGFwcGxpY2F0aW9uIG9mIG1ha2luZyB0aGUgdXNlciBzZWxlY3Qgc2Vjb25kcyBzbyB3ZSBzZXQgaXQgdG8gMC5cbiAgICAgICAgbGV0IHNlYyA9IHBhcnNlSW50KCcwJyk7XG4gICAgICAgIGlmIChpc05hTihob3VyKSB8fCBpc05hTihtaW4pIHx8IGlzTmFOKHNlYykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGhvdXIgPSBNYXRoLm1pbihob3VyLCAxMik7XG4gICAgICAgIGhvdXIgPSBNYXRoLm1heChob3VyLCAxKTtcblxuICAgICAgICBtaW4gPSBNYXRoLm1pbihtaW4sIDU5KTtcbiAgICAgICAgbWluID0gTWF0aC5tYXgobWluLCAwKTtcblxuICAgICAgICBzZWMgPSBNYXRoLm1pbihzZWMsIDU5KTtcbiAgICAgICAgc2VjID0gTWF0aC5tYXgoc2VjLCAwKTtcblxuICAgICAgICBjb25zdCB0aW1lID0gbW9tZW50KGAke2hvdXJ9ICR7bWlufSAke3RoaXMuaXNQTSA/IFwicG1cIiA6IFwiYW1cIn1gLCBcImg6bSBhXCIpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lID0ge1xuICAgICAgICAgICAgSHI6IHRpbWUuaG91cnMoKSxcbiAgICAgICAgICAgIE1pbjogdGltZS5taW51dGVzKCksXG4gICAgICAgICAgICBTZWM6IHRpbWUuc2Vjb25kcygpXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gYWRkZWQgYmVsb3cgY29uZGl0aW9uIGJlY2F1c2Ugd2UgY2FuIHNlbGVjdCB0aGUgdGltZSB3aXRob3V0IGRhdGUsIGFuZCBpdCB3YXMgc2hvd2luZyBpbnZhbGlkIGRhdGUgaW4gdGhlIGlucHV0IGJveFxuICAgICAgICAvLyBzZWNvbmQgY29uZGl0aW9uIGlzIHJlcXVpcmVkIHRvIGRpc2FibGUgYXBwbHkgYnV0dG9uIHdoZW4gZGF0ZSBpcyBub3Qgc2VsZWN0ZWRcbiAgICAgICAgaWYgKHRoaXMuX2RhdGVUb1NldCkge1xuICAgICAgICAgICAgdGhpcy5fZGF0ZVRvU2V0ID0gbW9tZW50KHRoaXMuX2RhdGVUb1NldCkuaG91cih0aGlzLnNlbGVjdGVkVGltZS5IcikubWludXRlKHRoaXMuc2VsZWN0ZWRUaW1lLk1pbikuc2Vjb25kKHRoaXMuc2VsZWN0ZWRUaW1lLlNlYykudG9EYXRlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuc2hvd0RhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGVUb1NldCA9IG1vbWVudCgpLmhvdXIodGhpcy5zZWxlY3RlZFRpbWUuSHIpLm1pbnV0ZSh0aGlzLnNlbGVjdGVkVGltZS5NaW4pLnNlY29uZCh0aGlzLnNlbGVjdGVkVGltZS5TZWMpLnRvRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZm9ybWF0XG4gICAgICAgIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgIHRoaXMuaG91ciA9IGAwJHtob3VyfWA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhvdXIgPSBgJHtob3VyfWA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWluIDwgMTApIHtcbiAgICAgICAgICAgIHRoaXMubWluID0gYDAke21pbn1gO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5taW4gPSBgJHttaW59YDtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgcHVibGljIGZvcm1hdHRlZERhdGUoKSB7XG4gICAgICAgIGlmICghdGhpcy5kYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmJveERlc2lnbiAmJiBtb21lbnQodGhpcy5kYXRlKS5pc1NhbWUobW9tZW50KCksIFwiZGF5XCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ1RvZGF5JztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGdldCB0aGUgdHJhbnNsYXRlZCB0ZXh0IGZvciBkYXkgYW5kIG1vbnRoXG4gICAgICAgIGNvbnN0IGVuTW9udGggPSBtb21lbnQodGhpcy5kYXRlKS5mb3JtYXQoXCJNTU1cIik7XG4gICAgICAgIGNvbnN0IGVuRGF5ID0gbW9tZW50KHRoaXMuZGF0ZSkuZm9ybWF0KFwiZGRkXCIpO1xuICAgICAgICBjb25zdCB0cmFuc2xhdGVkTW9udGggPSB0aGlzLl90cmFuc2xhdGUuaW5zdGFudChlbk1vbnRoKTtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRlZERheSA9IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KGVuRGF5KTtcblxuICAgICAgICBpZiAodGhpcy5zaG93RGF0ZSAmJiAhdGhpcy5zaG93VGltZSAmJiAhdGhpcy5ib3hEZXNpZ24pIHtcbiAgICAgICAgICAgIC8vIEV4cGFuZGVkIGZvcm1hdHRpbmcgZm9yIGRhdGUgb25seSBwaWNrZXJcbiAgICAgICAgICAgIHJldHVybiBtb21lbnQodGhpcy5kYXRlKS5mb3JtYXQoXCJkZGQsIEREIE1NTSBZWVlZXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoZW5EYXksIHRyYW5zbGF0ZWREYXkpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoZW5Nb250aCwgdHJhbnNsYXRlZE1vbnRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtb21lbnQodGhpcy5kYXRlKS5mb3JtYXQoXCJNTU0gREQsIFlZXCIpLnJlcGxhY2UoZW5Nb250aCwgdHJhbnNsYXRlZE1vbnRoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9ybWF0dGVkVGltZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtb21lbnQodGhpcy5kYXRlKS5mb3JtYXQoXCJoOm1tIEFcIik7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZVRpbWUoKSB7XG4gICAgICAgIHRoaXMuaXNQTSA9ICF0aGlzLmlzUE07XG4gICAgICAgIHRoaXMudGltZUNoYW5nZWQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvd01vbnRoUGlja2VyKCkge1xuICAgICAgICB0aGlzLm1vbnRoUGlja2VyVmlzaWJsZSA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dZZWFyUGlja2VyKCkge1xuICAgICAgICB0aGlzLnllYXJQaWNrZXJWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy55ZWFycyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5jdXJyZW50U2xvdC5nZXRGdWxsWWVhcigpIC0gNzsgaSA8IHRoaXMuY3VycmVudFNsb3QuZ2V0RnVsbFllYXIoKSArIDg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy55ZWFycy5wdXNoKGkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhvdXJVcCgpIHtcbiAgICAgICAgbGV0IGhvdXIgPSBwYXJzZUludCh0aGlzLmhvdXIpO1xuICAgICAgICBpZiAoaXNOYU4oaG91cikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBob3VyKys7XG4gICAgICAgIHRoaXMuaG91ciA9IGhvdXIudG9TdHJpbmcoKTtcbiAgICAgICAgdGhpcy50aW1lQ2hhbmdlZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBob3VyRG93bigpIHtcbiAgICAgICAgbGV0IGhvdXIgPSBwYXJzZUludCh0aGlzLmhvdXIpO1xuICAgICAgICBpZiAoaXNOYU4oaG91cikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBob3VyLS07XG4gICAgICAgIHRoaXMuaG91ciA9IGhvdXIudG9TdHJpbmcoKTtcbiAgICAgICAgdGhpcy50aW1lQ2hhbmdlZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBtaW5VcCgpIHtcbiAgICAgICAgbGV0IG1pbiA9IHBhcnNlSW50KHRoaXMubWluKTtcbiAgICAgICAgaWYgKGlzTmFOKG1pbikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBtaW4rKztcbiAgICAgICAgdGhpcy5taW4gPSBtaW4udG9TdHJpbmcoKTtcbiAgICAgICAgdGhpcy50aW1lQ2hhbmdlZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBtaW5Eb3duKCkge1xuICAgICAgICBsZXQgbWluID0gcGFyc2VJbnQodGhpcy5taW4pO1xuICAgICAgICBpZiAoaXNOYU4obWluKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIG1pbi0tO1xuICAgICAgICB0aGlzLm1pbiA9IG1pbi50b1N0cmluZygpO1xuICAgICAgICB0aGlzLnRpbWVDaGFuZ2VkKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFwcGx5KCkge1xuICAgICAgICBpZiAodGhpcy5fZGF0ZVRvU2V0KSB7XG4gICAgICAgICAgICAvLyBJZiB0aW1lIHNlbGVjdGlvbiBoYXMgZW5hYmxlZCBhbmQgdXNlciBrZWVwcyBkZWZhdWx0IHRpbWUgdGhlbiB0cmlnZ2VyaW5nIHRoZSB0aW1lQ2hhbmdlZCBmdW5jdGlvblxuICAgICAgICAgICAgaWYgKHRoaXMuc2hvd1RpbWUgJiYgdGhpcy5ob3VyID09PSBkZWZhdWx0SG91cnMgJiYgdGhpcy5taW4gPT09IGRlZmF1bHRNaW51dHMgJiYgdGhpcy5zZWMgPT09IGRlZmF1bHRTZWNvbmRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50aW1lQ2hhbmdlZCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmRhdGUgPSBuZXcgRGF0ZSh0aGlzLl9kYXRlVG9TZXQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KHRoaXMuZGF0ZSk7XG4gICAgICAgIHRoaXMuZGlzcGFseU92ZXJQYXJlbnQgPyB0aGlzLmNsb3NlUGlja2VyKCkgOiB0aGlzLmhpZGVUaW1lUGlja2VyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNhbmNlbCgpIHtcbiAgICAgICAgdGhpcy5kaXNwYWx5T3ZlclBhcmVudCA/IHRoaXMuY2xvc2VQaWNrZXIoKSA6IHRoaXMuaGlkZVRpbWVQaWNrZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXIoKSB7XG4gICAgICAgIHRoaXMuX2RhdGVUb1NldCA9IG51bGw7XG4gICAgICAgIHRoaXMuaG91ciA9IGRlZmF1bHRIb3VycztcbiAgICAgICAgdGhpcy5taW4gPSBkZWZhdWx0TWludXRzO1xuICAgICAgICB0aGlzLmRhdGUgPSBudWxsO1xuICAgICAgICB0aGlzLmFwcGx5KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEljb24oKSB7XG4gICAgICAgIC8vIENoYW5nZSBwaWNrZXIgaWNvbiBiYXNlZCBvbiBtb2RlXG4gICAgICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgY2FzZSB0aGlzLnNob3dEYXRlICYmIHRoaXMuc2hvd1RpbWU6XG4gICAgICAgICAgICAgICAgLy8gRGF0ZSArIFRpbWVcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2Fzc2V0cy9uZy16ZW5kdWl0L2ljb25zL2RhdGUuc3ZnJztcbiAgICAgICAgICAgIGNhc2UgdGhpcy5zaG93RGF0ZSAmJiAhdGhpcy5zaG93VGltZTpcbiAgICAgICAgICAgICAgICAvLyBEYXRlIG9ubHlcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2Fzc2V0cy9uZy16ZW5kdWl0L2ljb25zL2NhbGVuZGFyLnN2Zyc7XG4gICAgICAgICAgICBjYXNlICF0aGlzLnNob3dEYXRlICYmIHRoaXMuc2hvd1RpbWU6XG4gICAgICAgICAgICAgICAgLy8gVGltZSBvbmx5XG4gICAgICAgICAgICAgICAgcmV0dXJuICdhc3NldHMvbmctemVuZHVpdC9pY29ucy90aW1lLnN2Zyc7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAnYXNzZXRzL25nLXplbmR1aXQvaWNvbnMvZGF0ZS5zdmcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdEhpbnREYXRlKGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFkYXRlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdJbnZhbGlkIGhpbnQnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2RhdGVUb1NldCA9IG5ldyBEYXRlKGRhdGUpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGltZSA9IHtcbiAgICAgICAgICAgIEhyOiBtb21lbnQoZGF0ZSkuaG91cnMoKSxcbiAgICAgICAgICAgIE1pbjogbW9tZW50KGRhdGUpLm1pbnV0ZXMoKSxcbiAgICAgICAgICAgIFNlYzogbW9tZW50KGRhdGUpLnNlY29uZHMoKVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLmF1dG9Db25maXJtKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGx5KCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZURheXMoKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGF0ZS1jb21wb25lbnRcIj5cbiAgICA8IS0tIE1hdGVyaWFsIGRlc2lnbiBkYXRlcGlja2VyIHRvZ2dsZSAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWJveERlc2lnblwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZGF0ZS10b2dnbGVcIlxuICAgICAgICAgICAgICAgICN0cmlnZ2VyQnV0dG9uXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUGlja2VyKClcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNQaWNrZXJWaXNpYmxlLCdlcnJvcic6IGhpZ2hsaWdodEVycm9yLCdyZWFkb25seSc6IHJlYWRvbmx5fVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtY29udGVudFwiPlxuICAgICAgICAgICAgICAgIDwhLS0gZGF0ZSBwbGFjZWhvbGRlciAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFkYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7XCJTZWxlY3QgRGF0ZVwiIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwhLS0gU2VsZWN0ZWQgZGF0ZXRpbWUgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzaG93RGF0ZVwiPnt7Zm9ybWF0dGVkRGF0ZSgpfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd1RpbWVcIj4mbmJzcDt7e2Zvcm1hdHRlZFRpbWUoKX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gRGF0ZXBpY2tlciBpY29uLCBkZXBlbmRzIG9uIHBpY2tlciB0eXBlIC0tPlxuICAgICAgICAgICAgPHplbi1pY29uIGNsYXNzPVwiZGF0ZS1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImdldEljb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydmaWxsZWQnOiBkYXRlfVwiPlxuICAgICAgICAgICAgPC96ZW4taWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIEJveCBkZXNpZ24gZGF0ZXBpY2tlciB0b2dnbGUgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJveERlc2lnblwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZGF0ZS10b2dnbGUgbmV3LWJveC1kZXNpZ25cIlxuICAgICAgICAgICAgICAgICN0cmlnZ2VyQnV0dG9uXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUGlja2VyKClcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNQaWNrZXJWaXNpYmxlLCdlcnJvcic6IGhpZ2hsaWdodEVycm9yLCdyZWFkb25seSc6IHJlYWRvbmx5fVwiPlxuXG4gICAgICAgICAgICA8IS0tIERhdGVwaWNrZXIgaWNvbiwgZGVwZW5kcyBvbiBwaWNrZXIgdHlwZSAtLT5cbiAgICAgICAgICAgIDx6ZW4taWNvbiBjbGFzcz1cImRhdGUtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJnZXRJY29uKClcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZmlsbGVkJzogZGF0ZX1cIj5cbiAgICAgICAgICAgIDwvemVuLWljb24+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLWNvbnRlbnQgbmV3LWJveC1kZXNpZ25cIj5cbiAgICAgICAgICAgICAgICA8IS0tIGRhdGUgcGxhY2Vob2xkZXIgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtcGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICB7e1wiU2VsZWN0IERhdGVcIiB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIFNlbGVjdGVkIGRhdGV0aW1lIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd0RhdGVcIj57e2Zvcm1hdHRlZERhdGUoKX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNob3dUaW1lXCI+Jm5ic3A7e3tmb3JtYXR0ZWRUaW1lKCl9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gRGF0ZXBpY2tlciBwb3B1cCAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZU1lbnVUZW1wbGF0ZVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNkYXRlTWVudVRlbXBsYXRlPlxuICAgICAgICA8ZGl2ICNkYXRlTWVudVxuICAgICAgICAgICAgICpuZ0lmPVwiaXNQaWNrZXJWaXNpYmxlXCJcbiAgICAgICAgICAgICBjbGFzcz1cImRhdGUtbWVudVwiXG4gICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncmlnaHQnOiByaWdodCwgJ2JvdHRvbSc6IGJvdHRvbSB9XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1tb2RhbFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF5cy10b29sYmFyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSAoY2xpY2spPVwicHJldk1vbnRoKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPm5hdmlnYXRlX2JlZm9yZTwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dNb250aFBpY2tlcigpXCI+e3tkYXlzVGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIChjbGljayk9XCJuZXh0TW9udGgoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+bmF2aWdhdGVfbmV4dDwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXlzLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndlZWstZGF5c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHdlZWtEYXkgb2Ygd2Vla0RheXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3ZWVrLWRheVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3dlZWtEYXl9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByb3cgb2YgZGF5Um93c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF5LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRheSBvZiByb3cuZGF5c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF5KGRheSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXktaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Mub3VzaWRlUmFuZ2VdPVwiZGF5LmlzT3V0c2lkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiZGF5LnNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZERheV09XCJkYXkuaXNEaXNhYmxlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RheS5sYmwgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8emVuLWljb24gKm5nSWY9XCJkYXkuaXNIaWdobGlnaHRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhpZ2hsaWdodC1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9uZy16ZW5kdWl0L2ljb25zL3BsYXkuc3ZnXCI+PC96ZW4taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93VGltZVwiXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRpbWUtY29udGFpbmVyXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtbGJsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e1wiU2VsZWN0IFRpbWVcIiB8IHRyYW5zbGF0ZX19OlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1waWNrZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHplbi1pY29uIChjbGljayk9XCJob3VyVXAoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9uZy16ZW5kdWl0L2ljb25zL2Fycm93LXVwLXNtYWxsLnN2Z1wiPjwvemVuLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwiaG91clwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRpbWVDaGFuZ2VkKClcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4taWNvbiAoY2xpY2spPVwiaG91ckRvd24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9uZy16ZW5kdWl0L2ljb25zL2Fycm93LWRvd24tc21hbGwuc3ZnXCI+PC96ZW4taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjo8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8emVuLWljb24gKGNsaWNrKT1cIm1pblVwKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvbmctemVuZHVpdC9pY29ucy9hcnJvdy11cC1zbWFsbC5zdmdcIj48L3plbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT1cIm1pblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRpbWVDaGFuZ2VkKClcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4taWNvbiAoY2xpY2spPVwibWluRG93bigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL25nLXplbmR1aXQvaWNvbnMvYXJyb3ctZG93bi1zbWFsbC5zdmdcIj48L3plbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW0tcG0tcGlja2VyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVRpbWUoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhpc1BNID8gJ1BNJyA6ICdBTScpIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVUaW1lKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3soaXNQTSA/ICdBTScgOiAnUE0nKSB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGludFwiXG4gICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImhpbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpbnQtZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7aGludC5kZXNjcmlwdGlvbiB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGludC1kYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0SGludERhdGUoaGludC5kYXRlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3toaW50Lm1hc2tUZXh0IHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWF1dG9Db25maXJtIHx8IHNob3dUaW1lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJkYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXIoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24tc3Ryb2tlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tcIkNsZWFyXCIgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFkYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uLXN0cm9rZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7XCJDYW5jZWxcIiB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCIhX2RhdGVUb1NldFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uLWZsYXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7XCJBcHBseVwiIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9udGhQaWNrZXJWaXNpYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb250aC1waWNrZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXlzLXRvb2xiYXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAoY2xpY2spPVwicHJldlllYXIoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPm5hdmlnYXRlX2JlZm9yZTwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd1llYXJQaWNrZXIoKVwiPnt7IGN1cnJlbnRTbG90IHwgZGF0ZTogJ3l5eXknIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIChjbGljayk9XCJuZXh0WWVhcigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+bmF2aWdhdGVfbmV4dDwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vbnRocy1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9udGgtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbW9udGggb2YgbW9udGhzOyBpbmRleCBhcyBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0TW9udGgoaW5kZXgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG1vbnRoIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwieWVhclBpY2tlclZpc2libGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoLXBpY2tlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRheXMtdG9vbGJhclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIChjbGljayk9XCJwcmV2WWVhckdyb3VwKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5uYXZpZ2F0ZV9iZWZvcmU8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dZZWFyUGlja2VyKClcIj57eyBjdXJyZW50U2xvdCB8IGRhdGU6ICd5eXl5JyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAoY2xpY2spPVwibmV4dFllYXJHcm91cCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+bmF2aWdhdGVfbmV4dDwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vbnRocy1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9udGgtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgeWVhciBvZiB5ZWFyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0WWVhcih5ZWFyKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB5ZWFyIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLW1vZGFsLWV4dHJhLXNwYWNlXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
565
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemVuZHUtZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy16ZW5kdWl0L3NyYy9saWIvZGF0ZXBpY2tlci96ZW5kdS1kYXRlcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9kYXRlcGlja2VyL3plbmR1LWRhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFDN0MsTUFBTSxFQUE4QixTQUFTLEVBQzNELE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUduQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBR3JELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQztBQUMxQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUM7QUFDM0IsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDO0FBTzVCLE1BQU0sT0FBTyx3QkFBd0I7SUF3RmpDLFlBQ1ksUUFBb0IsRUFDcEIsT0FBZ0IsRUFDaEIsZ0JBQWtDLEVBQ2xDLFVBQTRCO1FBSDVCLGFBQVEsR0FBUixRQUFRLENBQVk7UUFDcEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBckZ4Qzs7V0FFRztRQUNPLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXZDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsYUFBUSxHQUFHLElBQUksQ0FBQztRQUVoQixvQkFBZSxHQUF1QixJQUFJLENB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QUM7UUFDaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDMUYsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEI7SUFDTCxDQUFDO0lBRU0sTUFBTTtRQUNULElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDYixPQUFPO1NBQ1Y7UUFDRCxJQUFJLEVBQUUsQ0FBQztRQUNQLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0sUUFBUTtRQUNYLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDYixPQUFPO1NBQ1Y7UUFDRCxJQUFJLEVBQUUsQ0FBQztRQUNQLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0sS0FBSztRQUNSLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0IsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDWixPQUFPO1NBQ1Y7UUFDRCxHQUFHLEVBQUUsQ0FBQztRQUNOLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0sT0FBTztRQUNWLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0IsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDWixPQUFPO1NBQ1Y7UUFDRCxHQUFHLEVBQUUsQ0FBQztRQUNOLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0sS0FBSztRQUNSLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixxR0FBcUc7WUFDckcsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssYUFBYSxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssY0FBYyxFQUFFO2dCQUMxRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDdEI7WUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN6QztRQUNELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hFLENBQUM7SUFFTSxNQUFNO1FBQ1QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4RSxDQUFDO0lBRU0sS0FBSztRQUNSLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxHQUFHLEdBQUcsYUFBYSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRU0sT0FBTztRQUNWLG1DQUFtQztRQUNuQyxRQUFRLElBQUksRUFBRTtZQUNWLEtBQUssSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUTtnQkFDL0IsY0FBYztnQkFDZCxPQUFPLGtDQUFrQyxDQUFDO1lBQzlDLEtBQUssSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO2dCQUNoQyxZQUFZO2dCQUNaLE9BQU8sc0NBQXNDLENBQUM7WUFDbEQsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVE7Z0JBQ2hDLFlBQVk7Z0JBQ1osT0FBTyxrQ0FBa0MsQ0FBQztZQUM5QztnQkFDSSxPQUFPLGtDQUFrQyxDQUFDO1NBQ2pEO0lBQ0wsQ0FBQztJQUVNLGNBQWMsQ0FBQyxJQUFVO1FBQzVCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDUCxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzlCLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRztZQUNoQixFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtZQUN4QixHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRTtZQUMzQixHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRTtTQUM5QixDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNoQjtRQUVELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDOztzSEF2bkJRLHdCQUF3QjswR0FBeEIsd0JBQXdCLGk4QkNyQnJDLDR1VEF1TkE7NEZEbE1hLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDSSxnQkFBZ0I7cUxBU2pCLElBQUk7c0JBQVosS0FBSztnQkFLSSxVQUFVO3NCQUFuQixNQUFNO2dCQUVFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csY0FBYztzQkFBdEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFaUIsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUVPLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFFSyxnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCO2dCQThDN0IsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWE1QyxNQUFNO3NCQURMLFlBQVk7dUJBQUMsZUFBZSxFQUFFLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LFxuICAgIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcbmltcG9ydCB7IERhdGVQaWNrZXJEYXkgfSBmcm9tICcuL2RhdGUtcGlja2VyLWRheSc7XG5pbXBvcnQgeyBEYXRlUGlja2VySGludCB9IGZyb20gXCIuL2RhdGUtcGlja2VyLWhpbnRcIjtcbmltcG9ydCB7IERBVEVQSUNLRVJfUE9TSVRJT04gfSBmcm9tICcuL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgT3ZlcmxheVJlZiwgT3ZlcmxheSwgQ29ubmVjdGVkUG9zaXRpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5jb25zdCBkZWZhdWx0SG91cnMgPSAnMTInO1xuY29uc3QgZGVmYXVsdE1pbnV0cyA9ICcwMCc7XG5jb25zdCBkZWZhdWx0U2Vjb25kcyA9ICcwMCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnemVuLWRhdGVwaWNrZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi96ZW5kdS1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi96ZW5kdS1kYXRlcGlja2VyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgWmVuZHVEYXRlcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcblxuICAgIC8qKlxuICAgICAqIENvbXBvbmVudCBwcm9wZXJ0eVxuICAgICAqL1xuICAgIEBJbnB1dCgpIGRhdGU6IERhdGU7XG5cbiAgICAvKipcbiAgICAgKiBjYWxsYmFjayB0byBlbWl0IGNoYW5nZXMgZm9yIHBhcmVudCBjb21wb25lbnRcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcblxuICAgIEBJbnB1dCgpIHNob3dUaW1lID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBzaG93RGF0ZSA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBwYXJlbnRDb250YWluZXI6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKSBjb250YWluZXJDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbWluRGF0ZTogRGF0ZTtcblxuICAgIEBJbnB1dCgpIG1heERhdGU6IERhdGU7XG5cbiAgICBASW5wdXQoKSBib3hEZXNpZ246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGhpZ2hsaWdodERheXM6IG51bWJlcltdID0gW107XG5cbiAgICBASW5wdXQoKSBhdXRvQ29uZmlybTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgaGludDogRGF0ZVBpY2tlckhpbnQ7XG5cbiAgICAvKipcbiAgICAgKiBkYXRlcGlja2VyIHN0YXRlc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGhpZ2hsaWdodEVycm9yOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHhQb3NpdGlvbjogREFURVBJQ0tFUl9QT1NJVElPTiA9IERBVEVQSUNLRVJfUE9TSVRJT04uQVVUTztcblxuICAgIEBJbnB1dCgpIHlQb3NpdGlvbjogREFURVBJQ0tFUl9QT1NJVElPTiA9IERBVEVQSUNLRVJfUE9TSVRJT04uQVVUTztcblxuICAgIEBJbnB1dCgpIGRpc3BhbHlPdmVyUGFyZW50OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBAVmlld0NoaWxkKCdkYXRlTWVudScpIGRhdGVNZW51ITogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ3RyaWdnZXJCdXR0b24nKSB0cmlnZ2VyQnV0dG9uITogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ2RhdGVNZW51VGVtcGxhdGUnKSBkYXRlTWVudVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAgIHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcblxuICAgIHB1YmxpYyBzZWxlY3RlZFRpbWU6IHsgSHI6IG51bWJlciwgTWluOiBudW1iZXIsIFNlYzogbnVtYmVyIH0gPSB7IEhyOiAxLCBNaW46IDAsIFNlYzogMCB9O1xuXG4gICAgcHVibGljIGlzUGlja2VyVmlzaWJsZSA9IGZhbHNlO1xuXG4gICAgcHVibGljIGRheVJvd3M6IEFycmF5PHsgZGF5czogRGF0ZVBpY2tlckRheVtdIH0+ID0gW107XG5cbiAgICBwdWJsaWMgZGF5c1RpdGxlID0gXCJcIjtcblxuICAgIHB1YmxpYyB3ZWVrRGF5cyA9IFtcIk1vXCIsIFwiVHVcIiwgXCJXZVwiLCBcIlRoXCIsIFwiRnJpXCIsIFwiU2FcIiwgXCJTdVwiXTtcblxuICAgIHB1YmxpYyBjdXJyZW50U2xvdCA9IG5ldyBEYXRlKCk7XG5cbiAgICBwdWJsaWMgaG91ciA9IGRlZmF1bHRIb3VycztcblxuICAgIHB1YmxpYyBtaW4gPSBkZWZhdWx0TWludXRzO1xuXG4gICAgcHVibGljIHNlYyA9IGRlZmF1bHRTZWNvbmRzO1xuXG4gICAgcHVibGljIGlzUE0gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBfZGF0ZVRvU2V0OiBEYXRlO1xuXG4gICAgcHVibGljIG1vbnRocyA9IFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLCAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXTtcblxuICAgIHB1YmxpYyB5ZWFycyA9IFtdO1xuXG4gICAgcHVibGljIG1vbnRoUGlja2VyVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIHllYXJQaWNrZXJWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICByaWdodDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGJvdHRvbTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgICApIHsgfVxuXG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgICBvdXRzaWRlSGFuZGxpbmcoZXZlbnQpIHtcbiAgICAgICAgaWYgKCFkb2N1bWVudC5ib2R5LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgIC8vIGVsZW1lbnQgbm90IGluIHRoZSBET01cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhpZGVUaW1lUGlja2VyKClcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6c2Nyb2xsJywgW10pXG4gICAgc2Nyb2xsKCkge1xuICAgICAgICB0aGlzLnVwZGF0ZVBsYWNlbWVudCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGVUb1NldCA9IG5ldyBEYXRlKHRoaXMuZGF0ZSk7XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lID0ge1xuICAgICAgICAgICAgICAgIEhyOiBtb21lbnQodGhpcy5kYXRlKS5ob3VycygpLFxuICAgICAgICAgICAgICAgIE1pbjogbW9tZW50KHRoaXMuZGF0ZSkubWludXRlcygpLFxuICAgICAgICAgICAgICAgIFNlYzogbW9tZW50KHRoaXMuZGF0ZSkuc2Vjb25kcygpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZVBsYWNlbWVudCgpIHtcbiAgICAgICAgdGhpcy5yaWdodCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJvdHRvbSA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy54UG9zaXRpb24gPT09IERBVEVQSUNLRVJfUE9TSVRJT04uQVVUTyAmJiB0aGlzLmdldEhvcml6b250YWxNZW51RGlyZWN0aW9uKCkgPT09IERBVEVQSUNLRVJfUE9TSVRJT04uTEVGVCkge1xuICAgICAgICAgICAgdGhpcy5yaWdodCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMueVBvc2l0aW9uID09PSBEQVRFUElDS0VSX1BPU0lUSU9OLkFVVE8gJiYgdGhpcy5nZXRWZXJ0aWNhbE1lbnVEaXJlY3Rpb24oKSA9PT0gREFURVBJQ0tFUl9QT1NJVElPTi5UT1ApIHtcbiAgICAgICAgICAgIHRoaXMuYm90dG9tID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy54UG9zaXRpb24gPT09IERBVEVQSUNLRVJfUE9TSVRJT04uUklHSFQpIHtcbiAgICAgICAgICAgIHRoaXMucmlnaHQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnlQb3NpdGlvbiA9PT0gREFURVBJQ0tFUl9QT1NJVElPTi5UT1ApIHtcbiAgICAgICAgICAgIHRoaXMuYm90dG9tID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmVydGljYWxNZW51RGlyZWN0aW9uKCk6IERBVEVQSUNLRVJfUE9TSVRJT04ge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCB0b3AgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgICBpZiAodG9wID4gKGhlaWdodCAvIDIpKSB7XG4gICAgICAgICAgICByZXR1cm4gREFURVBJQ0tFUl9QT1NJVElPTi5UT1BcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBEQVRFUElDS0VSX1BPU0lUSU9OLkJPVFRPTTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gZ2V0IGRhdGVwaWNrZXIgcG9zaXRpb25cbiAgICAgKiBAcmV0dXJucyBlaXRoZXIgXCJsZWZ0XCIgb3IgXCJyaWdodFwiXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRIb3Jpem9udGFsTWVudURpcmVjdGlvbigpOiBEQVRFUElDS0VSX1BPU0lUSU9OIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgbGVmdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgICAgY29uc3Qgd2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgaWYgKGxlZnQgPiAod2lkdGggLyAyKSkge1xuICAgICAgICAgICAgcmV0dXJuIERBVEVQSUNLRVJfUE9TSVRJT04uTEVGVDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBEQVRFUElDS0VSX1BPU0lUSU9OLlJJR0hUO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBwdWJsaWMgdG9nZ2xlUGlja2VyKCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuX2RhdGVUb1NldCA9IHRoaXMuZGF0ZSA/IG5ldyBEYXRlKHRoaXMuZGF0ZSkgOiBudWxsO1xuXG4gICAgICAgIHRoaXMuaXNQaWNrZXJWaXNpYmxlID0gIXRoaXMuaXNQaWNrZXJWaXNpYmxlO1xuICAgICAgICBpZiAodGhpcy5zaG93RGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U2xvdCA9IHRoaXMuX2RhdGVUb1NldCB8fCBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVEYXlzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2hvd1RpbWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lID0ge1xuICAgICAgICAgICAgICAgIEhyOiBtb21lbnQodGhpcy5kYXRlKS5ob3VycygpLFxuICAgICAgICAgICAgICAgIE1pbjogbW9tZW50KHRoaXMuZGF0ZSkubWludXRlcygpLFxuICAgICAgICAgICAgICAgIFNlYzogbW9tZW50KHRoaXMuZGF0ZSkuc2Vjb25kcygpXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAodGhpcy5kYXRlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gbW9tZW50KHRoaXMuZGF0ZSkuZm9ybWF0KCdoaDptbSBBJyk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmlzUE0gPSBmb3JtYXR0ZWQuaW5jbHVkZXMoJ1BNJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5ob3VyID0gZm9ybWF0dGVkLnNsaWNlKDAsIDIpO1xuICAgICAgICAgICAgICAgIHRoaXMubWluID0gZm9ybWF0dGVkLnNsaWNlKDMsIDUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzUGlja2VyVmlzaWJsZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGlzcGFseU92ZXJQYXJlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZU92ZXJsYXkoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQbGFjZW1lbnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN5bmNNZW51UG9zaXRpb25XaXRoRGVsYXkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlT3ZlcmxheSgpIHtcbiAgICAgICAgY29uc3QgdmVydGljYWxEaXJlY3Rpb24gPSB0aGlzLmdldFZlcnRpY2FsTWVudURpcmVjdGlvbigpO1xuICAgICAgICBjb25zdCBob3Jpem9udGFsRGlyZWN0aW9uID0gdGhpcy5nZXRIb3Jpem9udGFsTWVudURpcmVjdGlvbigpO1xuXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgICAgICAgICAgIG9yaWdpblg6IGhvcml6b250YWxEaXJlY3Rpb24gPT09IERBVEVQSUNLRVJfUE9TSVRJT04uUklHSFQgPyAnc3RhcnQnIDogJ2VuZCcsXG4gICAgICAgICAgICBvcmlnaW5ZOiB2ZXJ0aWNhbERpcmVjdGlvbiA9PT0gREFURVBJQ0tFUl9QT1NJVElPTi5CT1RUT00gPyAnYm90dG9tJyA6ICd0b3AnLFxuICAgICAgICAgICAgb3ZlcmxheVg6IGhvcml6b250YWxEaXJlY3Rpb24gPT09IERBVEVQSUNLRVJfUE9TSVRJT04uUklHSFQgPyAnc3RhcnQnIDogJ2VuZCcsXG4gICAgICAgICAgICBvdmVybGF5WTogdmVydGljYWxEaXJlY3Rpb24gPT09IERBVEVQSUNLRVJfUE9TSVRJT04uQk9UVE9NID8gJ3RvcCcgOiAnYm90dG9tJ1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIERldGVybWluZSB0aGUgdmVydGljYWwgcG9zaXRpb24gKGJlbG93IG9yIGFib3ZlKSBhbmQgc2V0IHRoZSB2ZXJ0aWNhbCBvZmZzZXQgKDAgZm9yIGJlbG93LCAtMjAgZm9yIGFib3ZlKVxuICAgICAgICBjb25zdCBpc0JlbG93ID0gdmVydGljYWxEaXJlY3Rpb24gPT09IERBVEVQSUNLRVJfUE9TSVRJT04uQk9UVE9NO1xuICAgICAgICBjb25zdCBvZmZzZXRZID0gaXNCZWxvdyA/IDAgOiAtMjA7XG5cbiAgICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpXG4gICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLnRyaWdnZXJCdXR0b24pXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgICAgICAgICAgcG9zaXRpb25cbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAvLyBEaXNhYmxlIGZsZXhpYmxlIGRpbWVuc2lvbnMsIG1lYW5pbmcgdGhlIG92ZXJsYXkgd2lsbCBub3QgcmVzaXplIGF1dG9tYXRpY2FsbHlcbiAgICAgICAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxuICAgICAgICAgICAgLy8gU2V0IHRoZSB2ZXJ0aWNhbCBvZmZzZXQgdG8gYXZvaWQgb3ZlcmxhcHBpbmcgd2l0aCB0aGUgcGFyZW50IGJ1dHRvbiBcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdE9mZnNldFkob2Zmc2V0WSlcbiAgICAgICAgICAgIC8vIERpc2FibGUgYXV0b21hdGljIHJlcG9zaXRpb25pbmcgb2YgdGhlIG92ZXJsYXkgdG8gYXZvaWQgb3ZlcmxhcCB3aXRoIG90aGVyIGVsZW1lbnRzXG4gICAgICAgICAgICAud2l0aFB1c2goZmFsc2UpO1xuXG5cbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgICAgICBiYWNrZHJvcENsYXNzOiAnY3VzdG9tLWJhY2tkcm9wJyxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICdjdXN0b20tb3ZlcmxheScsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMuZGF0ZU1lbnVUZW1wbGF0ZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKSk7XG5cbiAgICAgICAgdGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLmRldGFjaCgpO1xuICAgICAgICAgICAgdGhpcy5pc1BpY2tlclZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICAvLyBNZXRob2QgdG8gY2xvc2UgdGhlIG92ZXJsYXlcbiAgICBwdWJsaWMgY2xvc2VQaWNrZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZi5kZXRhY2goKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzUGlja2VyVmlzaWJsZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENsZWFudXAgb3ZlcmxheSBvbiBjb21wb25lbnQgZGVzdHJ1Y3Rpb25cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd0RhdGVQaWNrZXIoKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZU1lbnUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVNZW51Lm5hdGl2ZUVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMClcbiAgICB9XG5cbiAgICBwcml2YXRlIHN5bmNNZW51UG9zaXRpb25XaXRoRGVsYXkoKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJlbnRDb250YWluZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0RhdGVQaWNrZXIoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudFJlY3QgPSB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRSZWN0ID0gdGhpcy5wYXJlbnRDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgdG9wIGRpZmZlcmVuY2UgYmV0d2VlbiBlbGVtZW50IGFuZCBwYXJlbnQgKGlmIGF2YWlsYWJsZSlcbiAgICAgICAgICAgIGNvbnN0IHRvcCA9IHRoaXMuY2FsY3VsYXRlVG9wUG9zaXRpb24oZWxlbWVudFJlY3QsIHBhcmVudFJlY3QpO1xuXG4gICAgICAgICAgICBjb25zdCBkYXRlTWVudVJlY3QgPSB0aGlzLmRhdGVNZW51Py5uYXRpdmVFbGVtZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIHRoaXMuYm90dG9tID0gZGF0ZU1lbnVSZWN0Py5oZWlnaHQgPCB0b3A7XG4gICAgICAgICAgICB0aGlzLnNob3dEYXRlUGlja2VyKCk7XG4gICAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlVG9wUG9zaXRpb24oZWxlbWVudFJlY3Q6IERPTVJlY3QsIHBhcmVudFJlY3Q6IERPTVJlY3QpOiBudW1iZXIge1xuICAgICAgICBsZXQgdG9wOiBudW1iZXI7XG4gICAgICAgIGlmIChlbGVtZW50UmVjdC50b3AgPCBwYXJlbnRSZWN0LnRvcCkge1xuICAgICAgICAgICAgdG9wID0gcGFyZW50UmVjdC50b3AgLSBlbGVtZW50UmVjdC50b3A7IC8vIFJldmVyc2Ugb3JkZXIgaWYgY29uZGl0aW9uIGlzIG1ldFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdG9wID0gZWxlbWVudFJlY3QudG9wIC0gcGFyZW50UmVjdC50b3A7IC8vIE5vcm1hbCBjYWxjdWxhdGlvblxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b3A7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVEYXlzKCkge1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFNsb3QpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNsb3QgPSBuZXcgRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZW5Nb250aCA9IG1vbWVudCh0aGlzLmN1cnJlbnRTbG90KS5mb3JtYXQoXCJNTU1cIik7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0ZWRNb250aCA9IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KGVuTW9udGgpO1xuXG4gICAgICAgIHRoaXMuZGF5c1RpdGxlID0gbW9tZW50KHRoaXMuY3VycmVudFNsb3QpLmZvcm1hdChcIk1NTSB5eXl5XCIpLnJlcGxhY2UoZW5Nb250aCwgdHJhbnNsYXRlZE1vbnRoKTtcbiAgICAgICAgdGhpcy5kYXlSb3dzID0gW107XG4gICAgICAgIGxldCBjdXJyZW50ID0gbW9tZW50KHRoaXMuY3VycmVudFNsb3QpLnN0YXJ0T2YoXCJtb250aFwiKS5zdGFydE9mKFwid2Vla1wiKS5hZGQoMSwgXCJkYXlcIik7XG4gICAgICAgIGxldCBlbmQgPSBtb21lbnQodGhpcy5jdXJyZW50U2xvdCkuZW5kT2YoXCJtb250aFwiKS5lbmRPZihcIndlZWtcIikuYWRkKDEsIFwiZGF5XCIpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRNb250aCA9IG1vbWVudCh0aGlzLmN1cnJlbnRTbG90KS5tb250aCgpO1xuXG4gICAgICAgIGNvbnN0IGRhdGUgPSBtb21lbnQodGhpcy5fZGF0ZVRvU2V0KTtcblxuICAgICAgICB3aGlsZSAoY3VycmVudCA8PSBlbmQpIHtcbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IHsgZGF5czogW10gYXMgRGF0ZVBpY2tlckRheVtdIH07XG4gICAgICAgICAgICB0aGlzLmRheVJvd3MucHVzaChyb3cpO1xuICAgICAgICAgICAgZm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgNzsgaWR4KyspIHtcblxuICAgICAgICAgICAgICAgIGxldCBpc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZCA9IGN1cnJlbnQuZGF0ZSgpID09IGRhdGUuZGF0ZSgpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlLm1vbnRoKCkgPT0gY3VycmVudC5tb250aCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBpc091dHNpZGUgPSBjdXJyZW50TW9udGggIT0gY3VycmVudC5tb250aCgpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGlzRGlzYWJsZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1pbkRhdGUgJiYgY3VycmVudC50b0RhdGUoKSA8IHRoaXMubWluRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBpc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubWF4RGF0ZSAmJiBjdXJyZW50LnRvRGF0ZSgpID4gdGhpcy5tYXhEYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBpc0hpZ2hsaWdodGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5oaWdobGlnaHREYXlzICYmIHRoaXMuaGlnaGxpZ2h0RGF5cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNIaWdobGlnaHRlZCA9IHRoaXMuaGlnaGxpZ2h0RGF5cy5pbmRleE9mKGN1cnJlbnQudmFsdWVPZigpKSA+PSAwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJvdy5kYXlzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBkYXRlOiBjdXJyZW50LnRvRGF0ZSgpLFxuICAgICAgICAgICAgICAgICAgICBsYmw6IG1vbWVudChjdXJyZW50KS5kYXRlKCkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgaXNPdXRzaWRlOiBpc091dHNpZGUsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBpc1NlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICBpc0hpZ2hsaWdodGVkOiBpc0hpZ2hsaWdodGVkXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBjdXJyZW50ID0gbW9tZW50KGN1cnJlbnQpLmFkZCgxLCBcImRheVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZXh0TW9udGgoKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFNsb3QgPSBtb21lbnQodGhpcy5jdXJyZW50U2xvdCkuYWRkKDEsIFwibW9udGhcIikudG9EYXRlKCk7XG4gICAgICAgIHRoaXMudXBkYXRlRGF5cygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmV2TW9udGgoKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFNsb3QgPSBtb21lbnQodGhpcy5jdXJyZW50U2xvdCkuc3VidHJhY3QoMSwgXCJtb250aFwiKS50b0RhdGUoKTtcbiAgICAgICAgdGhpcy51cGRhdGVEYXlzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5leHRZZWFyKCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRTbG90ID0gbW9tZW50KHRoaXMuY3VycmVudFNsb3QpLmFkZCgxLCBcInllYXJcIikudG9EYXRlKCk7XG4gICAgICAgIHRoaXMudXBkYXRlRGF5cygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmV2WWVhcigpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50U2xvdCA9IG1vbWVudCh0aGlzLmN1cnJlbnRTbG90KS5zdWJ0cmFjdCgxLCBcInllYXJcIikudG9EYXRlKCk7XG4gICAgICAgIHRoaXMudXBkYXRlRGF5cygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZXh0WWVhckdyb3VwKCkge1xuICAgICAgICB0aGlzLnllYXJzID0gdGhpcy55ZWFycy5tYXAoeWVhciA9PiB5ZWFyICsgMTUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmV2WWVhckdyb3VwKCkge1xuICAgICAgICB0aGlzLnllYXJzID0gdGhpcy55ZWFycy5tYXAoeWVhciA9PiB5ZWFyIC0gMTUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWxlY3REYXkoZGF5OiBEYXRlUGlja2VyRGF5KSB7XG4gICAgICAgIGlmIChkYXkuaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgLy8gZGF5IGlzIGRpc2FibGVkXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zaG93VGltZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0ZVRvU2V0ID0gbW9tZW50KGRheS5kYXRlKS5ob3VyKHRoaXMuc2VsZWN0ZWRUaW1lLkhyKS5taW51dGUodGhpcy5zZWxlY3RlZFRpbWUuTWluKS5zZWNvbmQodGhpcy5zZWxlY3RlZFRpbWUuU2VjKS50b0RhdGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGVUb1NldCA9IG5ldyBEYXRlKGRheS5kYXRlKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuYXV0b0NvbmZpcm0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGx5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZURheXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0TW9udGgobW9udGg6IG51bWJlcikge1xuICAgICAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUodGhpcy5jdXJyZW50U2xvdCk7XG4gICAgICAgIG5ld0RhdGUuc2V0TW9udGgobW9udGgpO1xuICAgICAgICB0aGlzLmN1cnJlbnRTbG90ID0gbmV3RGF0ZTtcbiAgICAgICAgdGhpcy51cGRhdGVEYXlzKCk7XG4gICAgICAgIHRoaXMubW9udGhQaWNrZXJWaXNpYmxlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdFllYXIoeWVhcjogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRTbG90KTtcbiAgICAgICAgbmV3RGF0ZS5zZXRGdWxsWWVhcih5ZWFyKTtcbiAgICAgICAgdGhpcy5jdXJyZW50U2xvdCA9IG5ld0RhdGU7XG4gICAgICAgIHRoaXMudXBkYXRlRGF5cygpO1xuICAgICAgICB0aGlzLnllYXJQaWNrZXJWaXNpYmxlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGhpZGVUaW1lUGlja2VyKCkge1xuICAgICAgICBpZiAoIXRoaXMuZGlzcGFseU92ZXJQYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNQaWNrZXJWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIHB1YmxpYyB0aW1lQ2hhbmdlZCgpIHtcbiAgICAgICAgbGV0IG1pbiA9IHBhcnNlSW50KHRoaXMubWluKTtcbiAgICAgICAgbGV0IGhvdXIgPSBwYXJzZUludCh0aGlzLmhvdXIpO1xuICAgICAgICAvLyBSZXBsYWNlICcwJyB3aXRoIGB0aGlzLnNlY2AuXG4gICAgICAgIC8vIEFzIG9mIG5vdyB3ZSBkbyBub3QgaGF2ZSBhcHBsaWNhdGlvbiBvZiBtYWtpbmcgdGhlIHVzZXIgc2VsZWN0IHNlY29uZHMgc28gd2Ugc2V0IGl0IHRvIDAuXG4gICAgICAgIGxldCBzZWMgPSBwYXJzZUludCgnMCcpO1xuICAgICAgICBpZiAoaXNOYU4oaG91cikgfHwgaXNOYU4obWluKSB8fCBpc05hTihzZWMpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBob3VyID0gTWF0aC5taW4oaG91ciwgMTIpO1xuICAgICAgICBob3VyID0gTWF0aC5tYXgoaG91ciwgMSk7XG5cbiAgICAgICAgbWluID0gTWF0aC5taW4obWluLCA1OSk7XG4gICAgICAgIG1pbiA9IE1hdGgubWF4KG1pbiwgMCk7XG5cbiAgICAgICAgc2VjID0gTWF0aC5taW4oc2VjLCA1OSk7XG4gICAgICAgIHNlYyA9IE1hdGgubWF4KHNlYywgMCk7XG5cbiAgICAgICAgY29uc3QgdGltZSA9IG1vbWVudChgJHtob3VyfSAke21pbn0gJHt0aGlzLmlzUE0gPyBcInBtXCIgOiBcImFtXCJ9YCwgXCJoOm0gYVwiKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGVkVGltZSA9IHtcbiAgICAgICAgICAgIEhyOiB0aW1lLmhvdXJzKCksXG4gICAgICAgICAgICBNaW46IHRpbWUubWludXRlcygpLFxuICAgICAgICAgICAgU2VjOiB0aW1lLnNlY29uZHMoKVxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIGFkZGVkIGJlbG93IGNvbmRpdGlvbiBiZWNhdXNlIHdlIGNhbiBzZWxlY3QgdGhlIHRpbWUgd2l0aG91dCBkYXRlLCBhbmQgaXQgd2FzIHNob3dpbmcgaW52YWxpZCBkYXRlIGluIHRoZSBpbnB1dCBib3hcbiAgICAgICAgLy8gc2Vjb25kIGNvbmRpdGlvbiBpcyByZXF1aXJlZCB0byBkaXNhYmxlIGFwcGx5IGJ1dHRvbiB3aGVuIGRhdGUgaXMgbm90IHNlbGVjdGVkXG4gICAgICAgIGlmICh0aGlzLl9kYXRlVG9TZXQpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGVUb1NldCA9IG1vbWVudCh0aGlzLl9kYXRlVG9TZXQpLmhvdXIodGhpcy5zZWxlY3RlZFRpbWUuSHIpLm1pbnV0ZSh0aGlzLnNlbGVjdGVkVGltZS5NaW4pLnNlY29uZCh0aGlzLnNlbGVjdGVkVGltZS5TZWMpLnRvRGF0ZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLnNob3dEYXRlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRlVG9TZXQgPSBtb21lbnQoKS5ob3VyKHRoaXMuc2VsZWN0ZWRUaW1lLkhyKS5taW51dGUodGhpcy5zZWxlY3RlZFRpbWUuTWluKS5zZWNvbmQodGhpcy5zZWxlY3RlZFRpbWUuU2VjKS50b0RhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGZvcm1hdFxuICAgICAgICBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICB0aGlzLmhvdXIgPSBgMCR7aG91cn1gO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5ob3VyID0gYCR7aG91cn1gO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1pbiA8IDEwKSB7XG4gICAgICAgICAgICB0aGlzLm1pbiA9IGAwJHttaW59YDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubWluID0gYCR7bWlufWA7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHB1YmxpYyBmb3JtYXR0ZWREYXRlKCkge1xuICAgICAgICBpZiAoIXRoaXMuZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5ib3hEZXNpZ24gJiYgbW9tZW50KHRoaXMuZGF0ZSkuaXNTYW1lKG1vbWVudCgpLCBcImRheVwiKSkge1xuICAgICAgICAgICAgcmV0dXJuICdUb2RheSc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBnZXQgdGhlIHRyYW5zbGF0ZWQgdGV4dCBmb3IgZGF5IGFuZCBtb250aFxuICAgICAgICBjb25zdCBlbk1vbnRoID0gbW9tZW50KHRoaXMuZGF0ZSkuZm9ybWF0KFwiTU1NXCIpO1xuICAgICAgICBjb25zdCBlbkRheSA9IG1vbWVudCh0aGlzLmRhdGUpLmZvcm1hdChcImRkZFwiKTtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRlZE1vbnRoID0gdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoZW5Nb250aCk7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0ZWREYXkgPSB0aGlzLl90cmFuc2xhdGUuaW5zdGFudChlbkRheSk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2hvd0RhdGUgJiYgIXRoaXMuc2hvd1RpbWUgJiYgIXRoaXMuYm94RGVzaWduKSB7XG4gICAgICAgICAgICAvLyBFeHBhbmRlZCBmb3JtYXR0aW5nIGZvciBkYXRlIG9ubHkgcGlja2VyXG4gICAgICAgICAgICByZXR1cm4gbW9tZW50KHRoaXMuZGF0ZSkuZm9ybWF0KFwiZGRkLCBERCBNTU0gWVlZWVwiKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKGVuRGF5LCB0cmFuc2xhdGVkRGF5KVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKGVuTW9udGgsIHRyYW5zbGF0ZWRNb250aCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbW9tZW50KHRoaXMuZGF0ZSkuZm9ybWF0KFwiTU1NIERELCBZWVwiKS5yZXBsYWNlKGVuTW9udGgsIHRyYW5zbGF0ZWRNb250aCk7XG4gICAgfVxuXG4gICAgcHVibGljIGZvcm1hdHRlZFRpbWUoKSB7XG4gICAgICAgIGlmICghdGhpcy5kYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbW9tZW50KHRoaXMuZGF0ZSkuZm9ybWF0KFwiaDptbSBBXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGVUaW1lKCkge1xuICAgICAgICB0aGlzLmlzUE0gPSAhdGhpcy5pc1BNO1xuICAgICAgICB0aGlzLnRpbWVDaGFuZ2VkKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dNb250aFBpY2tlcigpIHtcbiAgICAgICAgdGhpcy5tb250aFBpY2tlclZpc2libGUgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93WWVhclBpY2tlcigpIHtcbiAgICAgICAgdGhpcy55ZWFyUGlja2VyVmlzaWJsZSA9IHRydWU7XG4gICAgICAgIHRoaXMueWVhcnMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuY3VycmVudFNsb3QuZ2V0RnVsbFllYXIoKSAtIDc7IGkgPCB0aGlzLmN1cnJlbnRTbG90LmdldEZ1bGxZZWFyKCkgKyA4OyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMueWVhcnMucHVzaChpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBob3VyVXAoKSB7XG4gICAgICAgIGxldCBob3VyID0gcGFyc2VJbnQodGhpcy5ob3VyKTtcbiAgICAgICAgaWYgKGlzTmFOKGhvdXIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaG91cisrO1xuICAgICAgICB0aGlzLmhvdXIgPSBob3VyLnRvU3RyaW5nKCk7XG4gICAgICAgIHRoaXMudGltZUNoYW5nZWQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaG91ckRvd24oKSB7XG4gICAgICAgIGxldCBob3VyID0gcGFyc2VJbnQodGhpcy5ob3VyKTtcbiAgICAgICAgaWYgKGlzTmFOKGhvdXIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaG91ci0tO1xuICAgICAgICB0aGlzLmhvdXIgPSBob3VyLnRvU3RyaW5nKCk7XG4gICAgICAgIHRoaXMudGltZUNoYW5nZWQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWluVXAoKSB7XG4gICAgICAgIGxldCBtaW4gPSBwYXJzZUludCh0aGlzLm1pbik7XG4gICAgICAgIGlmIChpc05hTihtaW4pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbWluKys7XG4gICAgICAgIHRoaXMubWluID0gbWluLnRvU3RyaW5nKCk7XG4gICAgICAgIHRoaXMudGltZUNoYW5nZWQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWluRG93bigpIHtcbiAgICAgICAgbGV0IG1pbiA9IHBhcnNlSW50KHRoaXMubWluKTtcbiAgICAgICAgaWYgKGlzTmFOKG1pbikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBtaW4tLTtcbiAgICAgICAgdGhpcy5taW4gPSBtaW4udG9TdHJpbmcoKTtcbiAgICAgICAgdGhpcy50aW1lQ2hhbmdlZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhcHBseSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGVUb1NldCkge1xuICAgICAgICAgICAgLy8gSWYgdGltZSBzZWxlY3Rpb24gaGFzIGVuYWJsZWQgYW5kIHVzZXIga2VlcHMgZGVmYXVsdCB0aW1lIHRoZW4gdHJpZ2dlcmluZyB0aGUgdGltZUNoYW5nZWQgZnVuY3Rpb25cbiAgICAgICAgICAgIGlmICh0aGlzLnNob3dUaW1lICYmIHRoaXMuaG91ciA9PT0gZGVmYXVsdEhvdXJzICYmIHRoaXMubWluID09PSBkZWZhdWx0TWludXRzICYmIHRoaXMuc2VjID09PSBkZWZhdWx0U2Vjb25kcykge1xuICAgICAgICAgICAgICAgIHRoaXMudGltZUNoYW5nZWQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5kYXRlID0gbmV3IERhdGUodGhpcy5fZGF0ZVRvU2V0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdCh0aGlzLmRhdGUpO1xuICAgICAgICB0aGlzLmRpc3BhbHlPdmVyUGFyZW50ID8gdGhpcy5jbG9zZVBpY2tlcigpIDogdGhpcy5oaWRlVGltZVBpY2tlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjYW5jZWwoKSB7XG4gICAgICAgIHRoaXMuZGlzcGFseU92ZXJQYXJlbnQgPyB0aGlzLmNsb3NlUGlja2VyKCkgOiB0aGlzLmhpZGVUaW1lUGlja2VyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyKCkge1xuICAgICAgICB0aGlzLl9kYXRlVG9TZXQgPSBudWxsO1xuICAgICAgICB0aGlzLmhvdXIgPSBkZWZhdWx0SG91cnM7XG4gICAgICAgIHRoaXMubWluID0gZGVmYXVsdE1pbnV0cztcbiAgICAgICAgdGhpcy5kYXRlID0gbnVsbDtcbiAgICAgICAgdGhpcy5hcHBseSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJY29uKCkge1xuICAgICAgICAvLyBDaGFuZ2UgcGlja2VyIGljb24gYmFzZWQgb24gbW9kZVxuICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgIGNhc2UgdGhpcy5zaG93RGF0ZSAmJiB0aGlzLnNob3dUaW1lOlxuICAgICAgICAgICAgICAgIC8vIERhdGUgKyBUaW1lXG4gICAgICAgICAgICAgICAgcmV0dXJuICdhc3NldHMvbmctemVuZHVpdC9pY29ucy9kYXRlLnN2Zyc7XG4gICAgICAgICAgICBjYXNlIHRoaXMuc2hvd0RhdGUgJiYgIXRoaXMuc2hvd1RpbWU6XG4gICAgICAgICAgICAgICAgLy8gRGF0ZSBvbmx5XG4gICAgICAgICAgICAgICAgcmV0dXJuICdhc3NldHMvbmctemVuZHVpdC9pY29ucy9jYWxlbmRhci5zdmcnO1xuICAgICAgICAgICAgY2FzZSAhdGhpcy5zaG93RGF0ZSAmJiB0aGlzLnNob3dUaW1lOlxuICAgICAgICAgICAgICAgIC8vIFRpbWUgb25seVxuICAgICAgICAgICAgICAgIHJldHVybiAnYXNzZXRzL25nLXplbmR1aXQvaWNvbnMvdGltZS5zdmcnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2Fzc2V0cy9uZy16ZW5kdWl0L2ljb25zL2RhdGUuc3ZnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZWxlY3RIaW50RGF0ZShkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgICAgIGlmICghZGF0ZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignSW52YWxpZCBoaW50Jyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kYXRlVG9TZXQgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRpbWUgPSB7XG4gICAgICAgICAgICBIcjogbW9tZW50KGRhdGUpLmhvdXJzKCksXG4gICAgICAgICAgICBNaW46IG1vbWVudChkYXRlKS5taW51dGVzKCksXG4gICAgICAgICAgICBTZWM6IG1vbWVudChkYXRlKS5zZWNvbmRzKClcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5hdXRvQ29uZmlybSkge1xuICAgICAgICAgICAgdGhpcy5hcHBseSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVEYXlzKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRhdGUtY29tcG9uZW50XCI+XG4gICAgPCEtLSBNYXRlcmlhbCBkZXNpZ24gZGF0ZXBpY2tlciB0b2dnbGUgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFib3hEZXNpZ25cIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRhdGUtdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICAjdHJpZ2dlckJ1dHRvblxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBpY2tlcigpXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGlzUGlja2VyVmlzaWJsZSwnZXJyb3InOiBoaWdobGlnaHRFcnJvciwncmVhZG9ubHknOiByZWFkb25seX1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8IS0tIGRhdGUgcGxhY2Vob2xkZXIgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtcGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICB7e1wiU2VsZWN0IERhdGVcIiB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIFNlbGVjdGVkIGRhdGV0aW1lIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd0RhdGVcIj57e2Zvcm1hdHRlZERhdGUoKX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNob3dUaW1lXCI+Jm5ic3A7e3tmb3JtYXR0ZWRUaW1lKCl9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIERhdGVwaWNrZXIgaWNvbiwgZGVwZW5kcyBvbiBwaWNrZXIgdHlwZSAtLT5cbiAgICAgICAgICAgIDx6ZW4taWNvbiBjbGFzcz1cImRhdGUtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJnZXRJY29uKClcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZmlsbGVkJzogZGF0ZX1cIj5cbiAgICAgICAgICAgIDwvemVuLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBCb3ggZGVzaWduIGRhdGVwaWNrZXIgdG9nZ2xlIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJib3hEZXNpZ25cIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRhdGUtdG9nZ2xlIG5ldy1ib3gtZGVzaWduXCJcbiAgICAgICAgICAgICAgICAjdHJpZ2dlckJ1dHRvblxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBpY2tlcigpXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGlzUGlja2VyVmlzaWJsZSwnZXJyb3InOiBoaWdobGlnaHRFcnJvciwncmVhZG9ubHknOiByZWFkb25seX1cIj5cblxuICAgICAgICAgICAgPCEtLSBEYXRlcGlja2VyIGljb24sIGRlcGVuZHMgb24gcGlja2VyIHR5cGUgLS0+XG4gICAgICAgICAgICA8emVuLWljb24gY2xhc3M9XCJkYXRlLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiZ2V0SWNvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2ZpbGxlZCc6IGRhdGV9XCI+XG4gICAgICAgICAgICA8L3plbi1pY29uPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1jb250ZW50IG5ldy1ib3gtZGVzaWduXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBkYXRlIHBsYWNlaG9sZGVyIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAge3tcIlNlbGVjdCBEYXRlXCIgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBTZWxlY3RlZCBkYXRldGltZSAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNob3dEYXRlXCI+e3tmb3JtYXR0ZWREYXRlKCl9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzaG93VGltZVwiPiZuYnNwO3t7Zm9ybWF0dGVkVGltZSgpfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIERhdGVwaWNrZXIgcG9wdXAgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRhdGVNZW51VGVtcGxhdGVcIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjZGF0ZU1lbnVUZW1wbGF0ZT5cbiAgICAgICAgPGRpdiAjZGF0ZU1lbnVcbiAgICAgICAgICAgICAqbmdJZj1cImlzUGlja2VyVmlzaWJsZVwiXG4gICAgICAgICAgICAgY2xhc3M9XCJkYXRlLW1lbnVcIlxuICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3JpZ2h0JzogcmlnaHQsICdib3R0b20nOiBib3R0b20gfVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtbW9kYWxcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0RhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRheXMtdG9vbGJhclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgKGNsaWNrKT1cInByZXZNb250aCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5uYXZpZ2F0ZV9iZWZvcmU8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93TW9udGhQaWNrZXIoKVwiPnt7ZGF5c1RpdGxlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSAoY2xpY2spPVwibmV4dE1vbnRoKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPm5hdmlnYXRlX25leHQ8L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF5cy1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrLWRheXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB3ZWVrRGF5IG9mIHdlZWtEYXlzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2Vlay1kYXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3t3ZWVrRGF5fX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcm93IG9mIGRheVJvd3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRheS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkYXkgb2Ygcm93LmRheXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdERheShkYXkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF5LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm91c2lkZVJhbmdlXT1cImRheS5pc091dHNpZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImRheS5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWREYXldPVwiZGF5LmlzRGlzYWJsZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXkubGJsIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHplbi1pY29uICpuZ0lmPVwiZGF5LmlzSGlnaGxpZ2h0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoaWdobGlnaHQtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvbmctemVuZHVpdC9pY29ucy9wbGF5LnN2Z1wiPjwvemVuLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd1RpbWVcIlxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0aW1lLWNvbnRhaW5lclwiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWxibFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tcIlNlbGVjdCBUaW1lXCIgfCB0cmFuc2xhdGV9fTpcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtcGlja2VyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4taWNvbiAoY2xpY2spPVwiaG91clVwKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvbmctemVuZHVpdC9pY29ucy9hcnJvdy11cC1zbWFsbC5zdmdcIj48L3plbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT1cImhvdXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0aW1lQ2hhbmdlZCgpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8emVuLWljb24gKGNsaWNrKT1cImhvdXJEb3duKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvbmctemVuZHVpdC9pY29ucy9hcnJvdy1kb3duLXNtYWxsLnN2Z1wiPjwvemVuLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD46PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHplbi1pY29uIChjbGljayk9XCJtaW5VcCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL25nLXplbmR1aXQvaWNvbnMvYXJyb3ctdXAtc21hbGwuc3ZnXCI+PC96ZW4taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJtaW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0aW1lQ2hhbmdlZCgpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8emVuLWljb24gKGNsaWNrKT1cIm1pbkRvd24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9uZy16ZW5kdWl0L2ljb25zL2Fycm93LWRvd24tc21hbGwuc3ZnXCI+PC96ZW4taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFtLXBtLXBpY2tlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVUaW1lKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3soaXNQTSA/ICdQTScgOiAnQU0nKSB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1YlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlVGltZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KGlzUE0gPyAnQU0nIDogJ1BNJykgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpbnRcIlxuICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoaW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaW50LWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e2hpbnQuZGVzY3JpcHRpb24gfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpbnQtZGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEhpbnREYXRlKGhpbnQuZGF0ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7aGludC5tYXNrVGV4dCB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3RlclwiXG4gICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFhdXRvQ29uZmlybSB8fCBzaG93VGltZVwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uLXN0cm9rZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7XCJDbGVhclwiIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhZGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbi1zdHJva2VkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e1wiQ2FuY2VsXCIgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiIV9kYXRlVG9TZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbi1mbGF0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e1wiQXBwbHlcIiB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vbnRoUGlja2VyVmlzaWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9udGgtcGlja2VyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF5cy10b29sYmFyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKGNsaWNrKT1cInByZXZZZWFyKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5uYXZpZ2F0ZV9iZWZvcmU8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dZZWFyUGlja2VyKClcIj57eyBjdXJyZW50U2xvdCB8IGRhdGU6ICd5eXl5JyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAoY2xpY2spPVwibmV4dFllYXIoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPm5hdmlnYXRlX25leHQ8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb250aHMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG1vbnRoIG9mIG1vbnRoczsgaW5kZXggYXMgaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE1vbnRoKGluZGV4KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtb250aCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInllYXJQaWNrZXJWaXNpYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb250aC1waWNrZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXlzLXRvb2xiYXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAoY2xpY2spPVwicHJldlllYXJHcm91cCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+bmF2aWdhdGVfYmVmb3JlPC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93WWVhclBpY2tlcigpXCI+e3sgY3VycmVudFNsb3QgfCBkYXRlOiAneXl5eScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKGNsaWNrKT1cIm5leHRZZWFyR3JvdXAoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPm5hdmlnYXRlX25leHQ8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb250aHMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHllYXIgb2YgeWVhcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFllYXIoeWVhcilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgeWVhciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1tb2RhbC1leHRyYS1zcGFjZVwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
@@ -844,7 +844,7 @@ class ZenduDatepickerComponent {
844
844
  if (!this.currentSlot) {
845
845
  this.currentSlot = new Date();
846
846
  }
847
- const enMonth = moment(this.date).format("MMM");
847
+ const enMonth = moment(this.currentSlot).format("MMM");
848
848
  const translatedMonth = this._translate.instant(enMonth);
849
849
  this.daysTitle = moment(this.currentSlot).format("MMM yyyy").replace(enMonth, translatedMonth);
850
850
  this.dayRows = [];