fabrikantencore 2.31.12 → 2.31.13

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.
@@ -113,7 +113,7 @@ class FabTextureConfiguratorComponent {
113
113
  if (this.Loading) {
114
114
  return true;
115
115
  }
116
- if (this.FabrikantenService.Loading) {
116
+ if (this.FabrikantenService.IsLoading()) {
117
117
  return true;
118
118
  }
119
119
  return false;
@@ -595,4 +595,4 @@ class StoneRowObject {
595
595
  }
596
596
  }
597
597
  }
598
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLXRleHR1cmUtY29uZmlndXJhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItdGV4dHVyZS1jb25maWd1cmF0b3IvZmFiLXRleHR1cmUtY29uZmlndXJhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItdGV4dHVyZS1jb25maWd1cmF0b3IvZmFiLXRleHR1cmUtY29uZmlndXJhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQXFCLFNBQVMsRUFBMEMsTUFBTSxlQUFlLENBQUM7QUFNckcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHNCQUFzQixFQUF5SSxtQkFBbUIsRUFBeUUsZ0NBQWdDLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHL1YsTUFNYSwrQkFBK0I7SUFrQ2pDO0lBQ0E7SUFDQTtJQUNDO0lBQ0Q7SUFDQztJQUNBO0lBdENWLElBQVcsbUJBQW1CO1FBQzVCLE9BQU8sbUJBQW1CLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsc0JBQXNCO1FBQy9CLE9BQU8sc0JBQXNCLENBQUM7SUFDaEMsQ0FBQztJQUVNLGlCQUFpQixHQUFXLENBQUMsQ0FBQyxDQUFDO0lBQy9CLGNBQWMsR0FBVyxDQUFDLENBQUMsQ0FBQztJQUM1QixRQUFRLEdBQVcsRUFBRSxDQUFDO0lBQ3RCLFdBQVcsR0FBVyxDQUFDLENBQUM7SUFDeEIsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUN6QixTQUFTLEdBQVcsRUFBRSxDQUFDO0lBQ3ZCLFlBQVks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QUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzVDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUU7Z0JBRTFCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtvQkFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzlCO3FCQUNJO29CQUNILElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO3dCQUNwRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDOUI7aUJBQ0Y7YUFDRjtTQUNGO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25DaGFuZ2VzLCBEb0NoZWNrLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdExlZ2FjeURpYWxvZyBhcyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRmFicmlrYW50ZW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmFicmlrYW50ZW4uc2VydmljZSc7XG5pbXBvcnQgeyBNb2JpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbW9iaWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uQ2F0ZWdvcnksIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnksIEZhYnJpa2FudGVuVGV4dHVyZUJhc2VWaWV3TW9kZWwsIEZhYnJpa2FudGVuRmlsdGVyVmlld01vZGVsLCBGYWJyaWthbnRlbklucHV0Vmlld01vZGVsLCBGYWJyaWthbnRlblByb2R1Y3RWaWV3TW9kZWwsIFRleHR1cmVBcGlDbGllbnQsIFRleHR1cmVSZXF1ZXN0TW9kZWwsIFRleHR1cmVSZXNwb25zZU1vZGVsLCBUZXh0dXJlTWl4UmVzcG9uc2VNb2RlbCwgVGV4dHVyZU1peFJlcXVlc3RNb2RlbCwgRmFicmlrYW50ZW5GaWx0ZXJPcHRpb25WaWV3TW9kZWwgfSBmcm9tICcuLi8uLi9zd2FnZ2VyL1N3YWdnZXJDbGllbnQnO1xuaW1wb3J0IHsgRmFiRGlzcGxheVBob3RvRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vZmFiLWRpc3BsYXktcGhvdG8tZGlhbG9nL2ZhYi1kaXNwbGF5LXBob3RvLWRpYWxvZy5jb21wb25lbnQnO1xyXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1mYWItdGV4dHVyZS1jb25maWd1cmF0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vZmFiLXRleHR1cmUtY29uZmlndXJhdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmFiLXRleHR1cmUtY29uZmlndXJhdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgRmFiVGV4dHVyZUNvbmZpZ3VyYXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgRG9DaGVjayB7XG5cbiAgcHVibGljIGdldCBUcmFuc2xhdGlvbkNhdGVnb3J5KCkge1xuICAgIHJldHVybiBUcmFuc2xhdGlvbkNhdGVnb3J5O1xuICB9XG5cbiAgcHVibGljIGdldCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5KCkge1xuICAgIHJldHVybiBUcmFuc2xhdGlvblN1YkNhdGVnb3J5O1xuICB9XG5cbiAgcHVibGljIFNlbGVjdGVkVmVyYmFuZElkOiBudW1iZXIgPSAtMTtcbiAgcHVibGljIFNlbGVjdGVkVm9lZ0lkOiBudW1iZXIgPSAtMTtcbiAgcHVibGljIExpbnR2b2VnOiBudW1iZXIgPSAxMjtcbiAgcHVibGljIExpbnR2b2VnTWluOiBudW1iZXIgPSA2O1xuICBwdWJsaWMgTGludHZvZWdNYXg6IG51bWJlciA9IDE0O1xuICBwdWJsaWMgU3Rvb3R2b2VnOiBudW1iZXIgPSAxMDtcbiAgcHVibGljIFN0b290dm9lZ01pbjogbnVtYmVyID0gNjtcbiAgcHVibGljIFN0b290dm9lZ01heDogbnVtYmVyID0gMTQ7XG5cbiAgcHVibGljIEFhbnRhbFN0ZW5lbjogbnVtYmVyID0gMTAwO1xuXG4gIHB1YmxpYyBIaVJlczogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgU2hhZGU6IGJvb2xlYW4gPSB0cnVlO1xuICBwdWJsaWMgTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgU2luZ2xlU3RvbmVNb2RlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIFRleHR1cmVSZXNwb25zZU1vZGVsOiBUZXh0dXJlUmVzcG9uc2VNb2RlbCB8IG51bGwgPSBudWxsO1xuICBwdWJsaWMgVGV4dHVyZU1peFJlc3BvbnNlTW9kZWw6IFRleHR1cmVNaXhSZXNwb25zZU1vZGVsIHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIFNlbGVjdGVkRm9ybWFhdDogRmFicmlrYW50ZW5GaWx0ZXJPcHRpb25WaWV3TW9kZWwgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgU3RvbmVSb3dPYmplY3RzOiBBcnJheTxTdG9uZVJvd09iamVjdD4gPSBuZXcgQXJyYXk8U3RvbmVSb3dPYmplY3Q+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIE1vYmlsZVNlcnZpY2U6IE1vYmlsZVNlcnZpY2UsXG4gICAgcHVibGljIEZhYnJpa2FudGVuU2VydmljZTogRmFicmlrYW50ZW5TZXJ2aWNlLFxuICAgIHB1YmxpYyBUcmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgQWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIFRleHR1cmVBcGlDbGllbnQ6IFRleHR1cmVBcGlDbGllbnQsXG4gICAgcHJpdmF0ZSBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLlByb2Nlc3NQYXJhbWV0ZXJzKHRoaXMuQWN0aXZhdGVkUm91dGUsIHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICB9XG5cbiAgbmdEb0NoZWNrKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLklzTG9hZGluZygpKSB7XHJcbiAgICAgIGlmICh0aGlzLlN0b25lUm93T2JqZWN0cy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgIHRoaXMuRmlsbEFycmF5cygpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5TZWxlY3RlZFZlcmJhbmRJZCA9PSAtMSkge1xyXG4gICAgICAgIHZhciB2ZXJiYW5kZW4gPSB0aGlzLkdldFZlcmJhbmRlbigpXHJcbiAgICAgICAgdGhpcy5TZWxlY3RlZFZlcmJhbmRJZCA9IHZlcmJhbmRlblswXS5pZDtcclxuXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2ZXJiYW5kZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmICh2ZXJiYW5kZW5baV0uZ3JvdXAgPT0gXCJkZWZhdWx0XCIpIHtcclxuICAgICAgICAgICAgdGhpcy5TZWxlY3RlZFZlcmJhbmRJZCA9IHZlcmJhbmRlbltpXS5pZDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuU2VsZWN0ZWRWb2VnSWQgPT0gLTEpIHtcclxuICAgICAgICB2YXIgdm9lZyA9IHRoaXMuR2V0Vm9lZygpO1xyXG5cclxuICAgICAgICBpZiAodm9lZz8uZmlsdGVyPy5vcHRpb25zICE9IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuU2VsZWN0ZWRWb2VnSWQgPSB2b2VnLmZpbHRlci5vcHRpb25zWzBdLmlkO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5Mb2FkRmFicmlrYW50ZW5WaWV3TW9kZWwodGhpcy5DaGFuZ2VEZXRlY3RvclJlZiwgdGhpcy5BY3RpdmF0ZWRSb3V0ZSwgKCkgPT4ge1xuICAgICAgdGhpcy5GaWxsQXJyYXlzKCk7XG5cbiAgICAgIHZhciBzdG9uZSA9IHRoaXMuQWN0aXZhdGVkUm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KCdzdG9uZScpO1xyXG4gICAgICB2YXIgZm9ybWF0ID0gdGhpcy5BY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ2Zvcm1hdCcpO1xyXG5cclxuICAgICAgaWYgKHN0b25lICE9IG51bGwpIHtcclxuICAgICAgICB2YXIgc3RvbmVfZm9ybWF0ID0gc3RvbmUgKyBcIl9cIiArIGZvcm1hdDtcclxuXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLlN0b25lUm93T2JqZWN0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0aGlzLlN0b25lUm93T2JqZWN0c1tpXS5vcHRpb25zLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLlN0b25lUm93T2JqZWN0c1tpXS5vcHRpb25zW2pdLnVybE5hbWUgPT0gc3RvbmVfZm9ybWF0KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5TdG9uZVJvd09iamVjdHNbaV0uU2VsZWN0KHRoaXMuU3RvbmVSb3dPYmplY3RzW2ldLm9wdGlvbnNbal0pO1xyXG5cclxuICAgICAgICAgICAgICB2YXIgZm9ybWF0cyA9IHRoaXMuR2V0Rm9ybWFhdCgpO1xyXG5cclxuICAgICAgICAgICAgICBmb3IgKHZhciBwID0gMDsgcCA8IGZvcm1hdHMubGVuZ3RoOyBwKyspIHtcclxuICAgICAgICAgICAgICAgIGlmIChmb3JtYXRzW3BdLnVybE5hbWUgPT0gZm9ybWF0KSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuU3RvbmVSb3dPYmplY3RzW2ldLkZhYlRleHR1cmVDb25maWd1cmF0b3JDb21wb25lbnQuU2VsZWN0ZWRGb3JtYWF0ID0gZm9ybWF0c1twXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuU2luZ2xlU3RvbmVNb2RlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgSXNMb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLkxvYWRpbmcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkxvYWRpbmcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cblxuICBwdWJsaWMgTm9TdG9uZVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5TdG9uZVJvd09iamVjdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLlN0b25lUm93T2JqZWN0c1tpXS5IYXNTdG9uZVNlbGVjdGVkKCkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cblxuICBwdWJsaWMgR2V0U3RlZW4oKTogRmFicmlrYW50ZW5GaWx0ZXJPcHRpb25WaWV3TW9kZWxbXSB7XG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsPy5pbnB1dHMgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLmlucHV0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhciBmaWx0ZXIgPSB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5pbnB1dHNbaV0uZmlsdGVyO1xyXG4gICAgICAgIGlmIChmaWx0ZXIgIT0gbnVsbCAmJiBmaWx0ZXIubmFtZSA9PSBcIlN0ZWVuIDFcIikge1xyXG4gICAgICAgICAgdmFyIG9wdGlvbnMgPSBmaWx0ZXIub3B0aW9ucztcclxuXHJcbiAgICAgICAgICBpZiAob3B0aW9ucyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBBcnJheTxGYWJyaWthbnRlbkZpbHRlck9wdGlvblZpZXdNb2RlbD4oKTtcclxuICB9XG5cbiAgcHVibGljIEdlbmVyYXRlRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5TZWxlY3RlZFZlcmJhbmRJZCA9PSAtMSkge1xuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuU2VsZWN0ZWRWb2VnSWQgPT0gLTEpIHtcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBzdG9uZXMgPSB0aGlzLkdldFNlbGVjdGVkU3RvbmVzKCk7XG5cbiAgICBpZiAoc3RvbmVzLmxlbmd0aCA9PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XG5cbiAgcHVibGljIFNob3dUZXh0dXJlKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuVGV4dHVyZVJlc3BvbnNlTW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxuXG4gIHB1YmxpYyBHZXRTZWxlY3RlZFN0b25lcygpOiBGYWJyaWthbnRlbkZpbHRlck9wdGlvblZpZXdNb2RlbFtdIHtcbiAgICB2YXIgc3RvbmVzID0gbmV3IEFycmF5PEZhYnJpa2FudGVuRmlsdGVyT3B0aW9uVmlld01vZGVsPigpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLlN0b25lUm93T2JqZWN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5TdG9uZVJvd09iamVjdHNbaV0uR2V0U2VsZWN0ZWRTdG9uZXMoc3RvbmVzKTtcclxuICAgIH1cblxuICAgIHJldHVybiBzdG9uZXM7XHJcbiAgfVxuXG4gIHB1YmxpYyBHZXRGb3JtYWF0KCk6IEZhYnJpa2FudGVuRmlsdGVyT3B0aW9uVmlld01vZGVsW10ge1xuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbD8uaW5wdXRzICE9IHVuZGVmaW5lZCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5pbnB1dHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YXIgZmlsdGVyID0gdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuaW5wdXRzW2ldLmZpbHRlcjtcclxuICAgICAgICBpZiAoZmlsdGVyICE9IG51bGwgJiYgZmlsdGVyLm5hbWUgPT0gXCJGb3JtYWF0XCIpIHtcclxuICAgICAgICAgIHZhciBvcHRpb25zID0gZmlsdGVyLm9wdGlvbnM7XHJcblxyXG4gICAgICAgICAgaWYgKG9wdGlvbnMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gb3B0aW9ucztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cblxuICAgIHJldHVybiBuZXcgQXJyYXk8RmFicmlrYW50ZW5GaWx0ZXJPcHRpb25WaWV3TW9kZWw+KCk7XHJcbiAgfVxuXG4gIHB1YmxpYyBHZXRWb2VnKCk6IEZhYnJpa2FudGVuSW5wdXRWaWV3TW9kZWwgfCBudWxsIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbD8uaW5wdXRzICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLmlucHV0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5pbnB1dHNbaV0uZmlsdGVyPy5uYW1lID09IFwiVm9lZ1wiKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuaW5wdXRzW2ldO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFZvZWdCeUlkKGlkOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLkdldFZvZWcoKT8uZmlsdGVyPy5vcHRpb25zOyAvLyBvZiBjYWNoZSBkZXplIGxpanN0IGluIGVlbiBwcm9wZXJ0eVxyXG4gICAgcmV0dXJuIGxpc3Q/LmZpbmQodiA9PiB2LmlkID09PSBpZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0VmVyYmFuZGVuKCk6IEZhYnJpa2FudGVuUHJvZHVjdFZpZXdNb2RlbFtdIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbD8ucHJvZHVjdHMgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbD8ucHJvZHVjdHM7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIG5ldyBBcnJheTxGYWJyaWthbnRlblByb2R1Y3RWaWV3TW9kZWw+KCk7XHJcbiAgICB9XHJcblxyXG4gIH1cblxuICBwdWJsaWMgR2V0VmVyYmFuZEJ5SWQoaWQ6IG51bWJlcikge1xyXG4gICAgY29uc3QgbGlzdCA9IHRoaXMuR2V0VmVyYmFuZGVuKCk7IC8vIG9mIGNhY2hlIGRlemUgbGlqc3QgaW4gZWVuIHByb3BlcnR5XHJcbiAgICByZXR1cm4gbGlzdD8uZmluZCh2ID0+IHYuaWQgPT09IGlkKTtcclxuICB9XG5cbiAgcHVibGljIEdldEltYWdlUGF0aChvcHRpb246IEZhYnJpa2FudGVuRmlsdGVyT3B0aW9uVmlld01vZGVsKTogc3RyaW5nIHtcclxuICAgIHZhciB2YWx1ZSA9IG9wdGlvbi5pbWFnZVBhdGggKyBcIlwiO1xyXG5cclxuICAgIGlmICh2YWx1ZS5pbmRleE9mKFwiI0JDQiNcIikgIT0gLTEpIHtcclxuICAgICAgdmFyIGJjYnVybCA9IHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwuYmNiV2Vic2VydmljZVVSTEJhc2UgKyBcIlwiO1xyXG4gICAgICBiY2J1cmwgPSBiY2J1cmwuc3Vic3RyaW5nKDAsIGJjYnVybC5sZW5ndGggLSAxKTtcclxuXHJcbiAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShcIiNCQ0IjXCIsIGJjYnVybCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldEltYWdlUGF0aFByb2R1Y3Qob3B0aW9uOiBGYWJyaWthbnRlblByb2R1Y3RWaWV3TW9kZWwpOiBzdHJpbmcge1xyXG4gICAgdmFyIHZhbHVlID0gb3B0aW9uLmltYWdlUGF0aCArIFwiXCI7XHJcblxyXG4gICAgaWYgKHZhbHVlLmluZGV4T2YoXCIjQkNCI1wiKSAhPSAtMSkge1xyXG4gICAgICB2YXIgYmNidXJsID0gdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5iY2JXZWJzZXJ2aWNlVVJMQmFzZSArIFwiXCI7XHJcbiAgICAgIGJjYnVybCA9IGJjYnVybC5zdWJzdHJpbmcoMCwgYmNidXJsLmxlbmd0aCAtIDEpO1xyXG5cclxuICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKFwiI0JDQiNcIiwgYmNidXJsKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxuXG4gIHB1YmxpYyBHZXRQYXRyb29uRG93bmxvYWRVUkwoKTogc3RyaW5nIHtcclxuXHJcbiAgICB2YXIgdXJsID0gdGhpcy5UZXh0dXJlUmVzcG9uc2VNb2RlbD8ucGF0cm9vblVSTCArIFwiXCI7XHJcblxyXG4gICAgdXJsID0gdXJsLnJlcGxhY2UodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5iY2JXZWJzZXJ2aWNlVVJMQmFzZSArIFwiXCIsIFwiXCIpO1xyXG5cclxuICAgIHZhciB0ZW1wID1cclxuICAgICAgdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5iY2JXZWJzZXJ2aWNlVVJMQmFzZSArXHJcbiAgICAgIFwiRG93bmxvYWQuYXNweD9maWxlPVwiICtcclxuICAgICAgdXJsICtcclxuICAgICAgXCImZG9lbD1cIiArXHJcbiAgICAgIHRoaXMuR2V0RG93bmxvYWROYW1lKCkgK1xyXG4gICAgICBcIi5wbmdcIjtcclxuXHJcbiAgICByZXR1cm4gdGVtcDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRCdW1wRG93bmxvYWRVUkwoKTogc3RyaW5nIHtcclxuICAgIHZhciB1cmwgPSB0aGlzLlRleHR1cmVSZXNwb25zZU1vZGVsPy5idW1wVVJMICsgXCJcIjtcclxuXHJcbiAgICB1cmwgPSB1cmwucmVwbGFjZSh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsLmJjYldlYnNlcnZpY2VVUkxCYXNlICsgXCJcIiwgXCJcIik7XHJcblxyXG4gICAgdmFyIHRlbXAgPVxyXG4gICAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsLmJjYldlYnNlcnZpY2VVUkxCYXNlICtcclxuICAgICAgXCJEb3dubG9hZC5hc3B4P2ZpbGU9XCIgK1xyXG4gICAgICB1cmwgK1xyXG4gICAgICBcIiZkb2VsPVwiICtcclxuICAgICAgdGhpcy5HZXREb3dubG9hZE5hbWUoKSArXHJcbiAgICAgIFwiX2J1bXAucG5nXCI7XHJcblxyXG4gICAgcmV0dXJuIHRlbXA7XHJcbiAgfVxuXG4gIHB1YmxpYyBHZXREb3dubG9hZE5hbWUoKTogc3RyaW5nIHtcclxuICAgIHZhciBib25kID0gdGhpcy5HZXRWZXJiYW5kQnlJZCh0aGlzLlNlbGVjdGVkVmVyYmFuZElkKTtcclxuICAgIHZhciBib25kX3N0ciA9IHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LlByb2R1Y3QsIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuTmFtZSwgYm9uZD8uaWQpLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgdmFyIHZvZWcgPSB0aGlzLkdldFZvZWdCeUlkKHRoaXMuU2VsZWN0ZWRWb2VnSWQpO1xyXG4gICAgdmFyIHZvZWdfc3RyID0gdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuRmlsdGVyT3B0aW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5Lk5hbWUsIHZvZWc/LmlkKS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgIHZhciByZXNvID0gXCJMUVwiO1xyXG5cclxuICAgIGlmICh0aGlzLkhpUmVzKSB7XHJcbiAgICAgIHJlc28gPSBcIkhRXCI7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuR2V0QWN0aXZlU3RlZW4oKS5yZXBsYWNlKFwiX1wiLCBcIiBcIikgKyBcIl9cIiArIHRoaXMuR2V0RGltZW5zaW9uKCkgKyBcIl9cIiArIGJvbmRfc3RyICsgXCJfXCIgKyB2b2VnX3N0ciArIFwiX1wiICsgcmVzbztcclxuICB9XG5cbiAgcHVibGljIEdldEFjdGl2ZVN0ZWVuKCk6IHN0cmluZyB7XHJcbiAgICB2YXIgc3RvbmVzID0gdGhpcy5HZXRTZWxlY3RlZFN0b25lcygpO1xyXG5cclxuICAgIGlmIChzdG9uZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICByZXR1cm4gc3RvbmVzWzBdLnVybE5hbWUgKyBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cblxuICBwdWJsaWMgRmlsbEFycmF5cygpIHtcbiAgICB0aGlzLlN0b25lUm93T2JqZWN0cyA9IG5ldyBBcnJheTxTdG9uZVJvd09iamVjdD4oKTtcclxuXHJcbiAgICB2YXIgZm9ybWFhdCA9IHRoaXMuR2V0U3RlZW4oKTtcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZvcm1hYXQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdmFyIG5hbWU6IHN0cmluZyA9IGZvcm1hYXRbaV0ubmFtZSArIFwiXCI7XHJcbiAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cmluZygwLCBuYW1lLmluZGV4T2YoJygnKSkgKyBcIlwiO1xyXG5cclxuICAgICAgdmFyIHN0b25lcm93b2JqZWN0OiBTdG9uZVJvd09iamVjdCB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0aGlzLlN0b25lUm93T2JqZWN0cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGlmICh0aGlzLlN0b25lUm93T2JqZWN0c1tqXS5uYW1lID09IG5hbWUpIHtcclxuICAgICAgICAgIHN0b25lcm93b2JqZWN0ID0gdGhpcy5TdG9uZVJvd09iamVjdHNbal07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoc3RvbmVyb3dvYmplY3QgPT0gbnVsbCkge1xyXG4gICAgICAgIHN0b25lcm93b2JqZWN0ID0gbmV3IFN0b25lUm93T2JqZWN0KG5hbWUsIHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLCB0aGlzKTtcclxuICAgICAgICB0aGlzLlN0b25lUm93T2JqZWN0cy5wdXNoKHN0b25lcm93b2JqZWN0KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgc3RvbmVyb3dvYmplY3QuQWRkT3B0aW9uKGZvcm1hYXRbaV0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuU3RvbmVSb3dPYmplY3RzLnNvcnQoZnVuY3Rpb24gKHN0b25lMSwgc3RvbmUyKSB7IHJldHVybiBzdG9uZTEubmFtZS5sb2NhbGVDb21wYXJlKHN0b25lMi5uYW1lKSB9KTtcclxuICB9XG5cbiAgcHVibGljIElzUmF0aW9CbG9ja2luZygpOiBib29sZWFuIHtcbiAgICB2YXIgdmVyYmFuZCA9IHRoaXMuR2V0VmVyYmFuZEJ5SWQodGhpcy5TZWxlY3RlZFZlcmJhbmRJZCk7XG5cbiAgICBpZiAodmVyYmFuZD8uaW5mbyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgdmFyIG9iamVjdCA9IEpTT04ucGFyc2UodmVyYmFuZC5pbmZvKTtcclxuICAgICAgdmFyIHN0ciA9IHRoaXMuR2V0TGVuZ3RlKCkgKyBcIiA9PSBcIiArICgyICogdGhpcy5HZXRCcmVlZHRlKCkpICsgXCIgKyBcIiArIHRoaXMuU3Rvb3R2b2VnO1xyXG4gICAgICAvL2FsZXJ0KG9iamVjdC5yYXRpbyArIFwiOiBcIiArIHN0ciArIFwiIDogXCIgKyBldmFsKHN0cikpO1xyXG4gICAgICB2YXIgZXZhbFN0ciA9IG9iamVjdC5yYXRpbyArIFwiXCI7XHJcbiAgICAgIGV2YWxTdHIgPSBldmFsU3RyLnJlcGxhY2UoXCJicmVlZHRlXCIsIHRoaXMuR2V0QnJlZWR0ZSgpLnRvU3RyaW5nKCkpO1xyXG4gICAgICBldmFsU3RyID0gZXZhbFN0ci5yZXBsYWNlKFwibGVuZ3RlXCIsIHRoaXMuR2V0TGVuZ3RlKCkudG9TdHJpbmcoKSk7XHJcbiAgICAgIGV2YWxTdHIgPSBldmFsU3RyLnJlcGxhY2UoXCJ2b2VnYnJlZWR0ZVwiLCB0aGlzLlN0b290dm9lZy50b1N0cmluZygpKTtcclxuXHJcbiAgICAgIGlmIChldmFsKGV2YWxTdHIpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBtZXNzYWdlID0gdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LlJhdGlvV2FybmluZyk7XHJcbiAgICAgICAgbWVzc2FnZSArPSBcIlxcclxcblwiO1xyXG4gICAgICAgIG1lc3NhZ2UgKz0gXCJcXHJcXG5cIjtcclxuICAgICAgICBtZXNzYWdlICs9IHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5QaWNrZWRCb25kKSArIFwiOiBcIiArIHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LlByb2R1Y3QsIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuTmFtZSwgdmVyYmFuZC5pZCk7XHJcbiAgICAgICAgbWVzc2FnZSArPSBcIlxcclxcblwiO1xyXG4gICAgICAgIG1lc3NhZ2UgKz0gdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LlJhdGlvQm9uZCkgKyBcIjogXCIgKyBvYmplY3QucmF0aW87XHJcbiAgICAgICAgbWVzc2FnZSArPSBcIlxcclxcblwiO1xyXG4gICAgICAgIG1lc3NhZ2UgKz0gXCJcXHJcXG5cIjtcclxuICAgICAgICBtZXNzYWdlICs9IHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5TdG9uZUxlbmd0ZSkgKyBcIjogXCIgKyB0aGlzLkdldExlbmd0ZSgpO1xyXG4gICAgICAgIG1lc3NhZ2UgKz0gXCJcXHJcXG5cIjtcclxuICAgICAgICBtZXNzYWdlICs9IHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5TdG9uZVdpZHRoKSArIFwiOiBcIiArIHRoaXMuR2V0QnJlZWR0ZSgpO1xyXG4gICAgICAgIG1lc3NhZ2UgKz0gXCJcXHJcXG5cIjtcclxuICAgICAgICBtZXNzYWdlICs9IHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5TdG9vdHZvZWcpICsgXCI6IFwiICsgdGhpcy5TdG9vdHZvZWc7XHJcbiAgICAgICAgbWVzc2FnZSArPSBcIlxcclxcblwiO1xyXG4gICAgICAgIG1lc3NhZ2UgKz0gXCJcXHJcXG5cIjtcclxuICAgICAgICBtZXNzYWdlICs9IHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5TdG9uZUNvbXBsZXRlKSArIFwiOiBcIiArIGV2YWxTdHI7XHJcblxyXG4gICAgICAgIGFsZXJ0KG1lc3NhZ2UpO1xyXG5cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cblxuICBwdWJsaWMgVGV4dHV1ckdlbmVyZXJlbigpOiB2b2lkIHtcclxuICAgIHZhciB2YWxpZCA9IHRydWU7XHJcblxyXG4gICAgaWYgKHRoaXMuSXNSYXRpb0Jsb2NraW5nKCkpIHtcclxuICAgICAgdmFsaWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodmFsaWQpIHtcclxuICAgICAgdmFyIHN0b25lcyA9IHRoaXMuR2V0U2VsZWN0ZWRTdG9uZXMoKTtcclxuICAgICAgaWYgKHN0b25lcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICB2YXIgcmVxdWVzdCA9IG5ldyBUZXh0dXJlUmVxdWVzdE1vZGVsKCk7XHJcblxyXG4gICAgICAgIHJlcXVlc3QudmVyYmFuZElkID0gdGhpcy5TZWxlY3RlZFZlcmJhbmRJZDtcclxuICAgICAgICByZXF1ZXN0LnN0ZWVuSWQgPSBzdG9uZXNbMF0uaWQ7XHJcbiAgICAgICAgcmVxdWVzdC5zdGVlblJhdGlvID0gc3RvbmVzWzBdLm1peFJhdGlvO1xyXG4gICAgICAgIHJlcXVlc3Qudm9lZ0lkID0gdGhpcy5TZWxlY3RlZFZvZWdJZDtcclxuICAgICAgICByZXF1ZXN0LmhpZ2hSZXNvbHV0aW9uID0gdGhpcy5IaVJlcztcclxuICAgICAgICByZXF1ZXN0LnNoYWR1dyA9IHRoaXMuU2hhZGU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLkhpUmVzKSB7XHJcbiAgICAgICAgICByZXF1ZXN0Lm1pbkFhbnRhbEJpdG1hcCA9IDEwMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICByZXF1ZXN0Lm1pbkFhbnRhbEJpdG1hcCA9IHRoaXMuQWFudGFsU3RlbmVuO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIGlmIChzdG9uZXMubGVuZ3RoIDwgMikge1xyXG4gICAgICAgICAgcmVxdWVzdC5zdGVlbjJJZCA9IC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHJlcXVlc3Quc3RlZW4ySWQgPSBzdG9uZXNbMV0uaWQ7XHJcbiAgICAgICAgICByZXF1ZXN0LnN0ZWVuMlJhdGlvID0gc3RvbmVzWzFdLm1peFJhdGlvO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHN0b25lcy5sZW5ndGggPCAzKSB7XHJcbiAgICAgICAgICByZXF1ZXN0LnN0ZWVuM0lkID0gLTE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgcmVxdWVzdC5zdGVlbjNJZCA9IHN0b25lc1syXS5pZDtcclxuICAgICAgICAgIHJlcXVlc3Quc3RlZW4zUmF0aW8gPSBzdG9uZXNbMl0ubWl4UmF0aW87XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc3RvbmVzLmxlbmd0aCA8IDQpIHtcclxuICAgICAgICAgIHJlcXVlc3Quc3RlZW40SWQgPSAtMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICByZXF1ZXN0LnN0ZWVuNElkID0gc3RvbmVzWzNdLmlkO1xyXG4gICAgICAgICAgcmVxdWVzdC5zdGVlbjRSYXRpbyA9IHN0b25lc1szXS5taXhSYXRpbztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChzdG9uZXMubGVuZ3RoIDwgNSkge1xyXG4gICAgICAgICAgcmVxdWVzdC5zdGVlbjVJZCA9IC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHJlcXVlc3Quc3RlZW41SWQgPSBzdG9uZXNbNF0uaWQ7XHJcbiAgICAgICAgICByZXF1ZXN0LnN0ZWVuNVJhdGlvID0gc3RvbmVzWzRdLm1peFJhdGlvO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuU3Rvb3R2b2VnIDwgdGhpcy5TdG9vdHZvZWdNaW4pIHtcclxuICAgICAgICAgIHRoaXMuU3Rvb3R2b2VnID0gdGhpcy5TdG9vdHZvZWdNaW47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5TdG9vdHZvZWcgPiB0aGlzLlN0b290dm9lZ01heCkge1xyXG4gICAgICAgICAgdGhpcy5TdG9vdHZvZWcgPSB0aGlzLlN0b290dm9lZ01heDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJlcXVlc3QuYnJlZWR0ZVN0b290dm9lZyA9IHRoaXMuU3Rvb3R2b2VnO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5MaW50dm9lZyA8IHRoaXMuTGludHZvZWdNaW4pIHtcclxuICAgICAgICAgIHRoaXMuTGludHZvZWcgPSB0aGlzLkxpbnR2b2VnTWluO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuTGludHZvZWcgPiB0aGlzLkxpbnR2b2VnTWF4KSB7XHJcbiAgICAgICAgICB0aGlzLkxpbnR2b2VnID0gdGhpcy5MaW50dm9lZ01heDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJlcXVlc3QuaG9vZ3RlTGludHZvZWcgPSB0aGlzLkxpbnR2b2VnO1xyXG5cclxuICAgICAgICB0aGlzLlRleHR1cmVBcGlDbGllbnQuZ2V0VGV4dHVyZShyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBUZXh0dXJlUmVzcG9uc2VNb2RlbCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5UZXh0dXJlUmVzcG9uc2VNb2RlbCA9IG1vZGVsO1xyXG4gICAgICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XG5cbiAgcHVibGljIFNldE1peFJhdGlvcygpOiB2b2lkIHtcbiAgICB2YXIgc3RvbmVzID0gdGhpcy5HZXRTZWxlY3RlZFN0b25lcygpO1xuXG4gICAgaWYgKHN0b25lcy5sZW5ndGggIT0gMCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLlN0b25lUm93T2JqZWN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMuU3RvbmVSb3dPYmplY3RzW2ldLm9wdGlvbnMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgIGZvciAodmFyIHMgPSAwOyBzIDwgc3RvbmVzLmxlbmd0aDsgcysrKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLlN0b25lUm93T2JqZWN0c1tpXS5vcHRpb25zW2pdLmlkID09IHN0b25lc1tzXS5pZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuU3RvbmVSb3dPYmplY3RzW2ldLm9wdGlvbnNbal0ubWl4UmF0aW8gPSBNYXRoLnJvdW5kKDEwMCAvIHN0b25lcy5sZW5ndGgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxuXG4gIHB1YmxpYyBHZXRGb3JtYWF0U3RyKCk6IHN0cmluZyB7XG4gICAgdmFyIHN0b25lcyA9IHRoaXMuR2V0U2VsZWN0ZWRTdG9uZXMoKTtcblxuICAgIGlmIChzdG9uZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB2YXIgbmFtZTogc3RyaW5nID0gc3RvbmVzWzBdLm5hbWUgKyBcIlwiO1xyXG4gICAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmcobmFtZS5pbmRleE9mKCcoJykpICsgXCJcIjtcclxuXHJcblxyXG4gICAgICByZXR1cm4gbmFtZTtcclxuICAgIH1cblxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxuXG4gIHB1YmxpYyBHZXREaW1lbnNpb24oKTogc3RyaW5nIHtcbiAgICB2YXIgZm9ybWFhdCA9IHRoaXMuR2V0Rm9ybWFhdFN0cigpO1xuXG4gICAgc3dpdGNoIChmb3JtYWF0KSB7XG4gICAgICBjYXNlIFwiKG5vcm1hYWxmb3JtYWF0KVwiOlxyXG4gICAgICAgIHJldHVybiBcIjI0MHgxMTV4NzFcIjtcclxuICAgICAgY2FzZSBcIihkdW5uZm9ybWFhdClcIjpcclxuICAgICAgICByZXR1cm4gXCIyNDB4MTE1eDUyXCI7XHJcbiAgICAgIGNhc2UgXCIobW9kdXVsZm9ybWFhdCA1MilcIjpcclxuICAgICAgICByZXR1cm4gXCIyOTB4OTB4NTJcIjtcclxuICAgICAgY2FzZSBcIih3YWFsZm9ybWFhdClcIjpcclxuICAgICAgICByZXR1cm4gXCIyMTB4MTAweDUyXCI7XHJcbiAgICB9XG5cbiAgICByZXR1cm4gXCJcIjtcclxuICB9XG5cbiAgcHVibGljIEdldExlbmd0ZSgpOiBudW1iZXIge1xuICAgIHZhciBmb3JtYWF0ID0gdGhpcy5HZXRGb3JtYWF0U3RyKCk7XG5cbiAgICBzd2l0Y2ggKGZvcm1hYXQpIHtcbiAgICAgIGNhc2UgXCIobm9ybWFhbGZvcm1hYXQpXCI6XHJcbiAgICAgICAgcmV0dXJuIDI0MDtcclxuICAgICAgY2FzZSBcIihkdW5uZm9ybWFhdClcIjpcclxuICAgICAgICByZXR1cm4gMjQwO1xyXG4gICAgICBjYXNlIFwiKG1vZHV1bGZvcm1hYXQgNTIpXCI6XHJcbiAgICAgICAgcmV0dXJuIDI5MDtcclxuICAgICAgY2FzZSBcIih3YWFsZm9ybWFhdClcIjpcclxuICAgICAgICByZXR1cm4gMjEwO1xyXG4gICAgfVxuXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cblxuICBwdWJsaWMgR2V0QnJlZWR0ZSgpOiBudW1iZXIge1xuICAgIHZhciBmb3JtYWF0ID0gdGhpcy5HZXRGb3JtYWF0U3RyKCk7XG5cbiAgICBzd2l0Y2ggKGZvcm1hYXQpIHtcbiAgICAgIGNhc2UgXCIobm9ybWFhbGZvcm1hYXQpXCI6XHJcbiAgICAgICAgcmV0dXJuIDExNTtcclxuICAgICAgY2FzZSBcIihkdW5uZm9ybWFhdClcIjpcclxuICAgICAgICByZXR1cm4gMTE1O1xyXG4gICAgICBjYXNlIFwiKG1vZHV1bGZvcm1hYXQgNTIpXCI6XHJcbiAgICAgICAgcmV0dXJuIDkwO1xyXG4gICAgICBjYXNlIFwiKHdhYWxmb3JtYWF0KVwiOlxyXG4gICAgICAgIHJldHVybiAxMDA7XHJcbiAgICB9XG5cbiAgICByZXR1cm4gLTE7XHJcbiAgfVxufVxuXG5jbGFzcyBTdG9uZVJvd09iamVjdCB7XG4gIG5hbWU6IHN0cmluZztcclxuICBkb3VibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWxlY3RlZGRvdWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBvcHRpb25zOiBGYWJyaWthbnRlbkZpbHRlck9wdGlvblZpZXdNb2RlbFtdID0gbmV3IEFycmF5PEZhYnJpa2FudGVuRmlsdGVyT3B0aW9uVmlld01vZGVsPigpO1xyXG5cclxuICBwcml2YXRlIEZhYnJpa2FudGVuU2VydmljZTogRmFicmlrYW50ZW5TZXJ2aWNlO1xyXG4gIHB1YmxpYyBGYWJUZXh0dXJlQ29uZmlndXJhdG9yQ29tcG9uZW50OiBGYWJUZXh0dXJlQ29uZmlndXJhdG9yQ29tcG9uZW50O1xyXG5cclxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIEZhYnJpa2FudGVuU2VydmljZTogRmFicmlrYW50ZW5TZXJ2aWNlLCBGYWJUZXh0dXJlQ29uZmlndXJhdG9yQ29tcG9uZW50OiBGYWJUZXh0dXJlQ29uZmlndXJhdG9yQ29tcG9uZW50KSB7XHJcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5GYWJyaWthbnRlblNlcnZpY2UgPSBGYWJyaWthbnRlblNlcnZpY2U7XHJcbiAgICB0aGlzLkZhYlRleHR1cmVDb25maWd1cmF0b3JDb21wb25lbnQgPSBGYWJUZXh0dXJlQ29uZmlndXJhdG9yQ29tcG9uZW50O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNlbGVjdChvcHRpb246IEZhYnJpa2FudGVuRmlsdGVyT3B0aW9uVmlld01vZGVsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuQ2FuU2VsZWN0U3RvbmUob3B0aW9uKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YXIgbmFtZSA9IHRoaXMub3B0aW9uc1tpXS5uYW1lO1xyXG4gICAgICAgIGlmIChuYW1lICE9IG51bGwgJiYgb3B0aW9uLm5hbWUgIT0gbnVsbCAmJiBuYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihvcHRpb24ubmFtZS50b0xvd2VyQ2FzZSgpKSAhPSAtMSkge1xyXG5cclxuICAgICAgICAgIHRoaXMub3B0aW9uc1tpXS5oaWRkZW4gPSAhdGhpcy5vcHRpb25zW2ldLmhpZGRlbjtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zW2ldLmhpZGRlbikge1xyXG4gICAgICAgICAgICB0aGlzLkZhYlRleHR1cmVDb25maWd1cmF0b3JDb21wb25lbnQuU2VsZWN0ZWRGb3JtYWF0ID0gb3B0aW9uO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLkZhYlRleHR1cmVDb25maWd1cmF0b3JDb21wb25lbnQuTm9TdG9uZVNlbGVjdGVkKCkpIHtcclxuICAgICAgICAgICAgICB0aGlzLkZhYlRleHR1cmVDb25maWd1cmF0b3JDb21wb25lbnQuU2VsZWN0ZWRGb3JtYWF0ID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5GYWJUZXh0dXJlQ29uZmlndXJhdG9yQ29tcG9uZW50LlNldE1peFJhdGlvcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIEFkZE9wdGlvbihvcHRpb246IEZhYnJpa2FudGVuRmlsdGVyT3B0aW9uVmlld01vZGVsKTogdm9pZCB7XG4gICAgdmFyIG5hbWUgPSBvcHRpb24ubmFtZTtcblxuICAgIGlmIChuYW1lICE9IG51bGwpIHtcbiAgICAgIGlmIChuYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcInZvb3J6aWpkZVwiKSAhPSAtMSB8fFxyXG4gICAgICAgIG5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwiYWNodGVyemlqZGVcIikgIT0gLTEpIHtcclxuICAgICAgICB0aGlzLmRvdWJsZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cblxuICAgIHRoaXMub3B0aW9ucy5wdXNoKG9wdGlvbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQ2FuU2VsZWN0U3RvbmUob3B0aW9uOiBGYWJyaWthbnRlbkZpbHRlck9wdGlvblZpZXdNb2RlbCk6IGJvb2xlYW4ge1xuICAgIHZhciBzdG9uZXMgPSB0aGlzLkZhYlRleHR1cmVDb25maWd1cmF0b3JDb21wb25lbnQuR2V0U2VsZWN0ZWRTdG9uZXMoKTtcblxuICAgIGlmIChzdG9uZXMubGVuZ3RoID09IDUpIHtcbiAgICAgIHJldHVybiB0aGlzLklzU2VsZWN0ZWQob3B0aW9uKTtcclxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmICh0aGlzLkZhYlRleHR1cmVDb25maWd1cmF0b3JDb21wb25lbnQuU2VsZWN0ZWRGb3JtYWF0ID09IG51bGwgfHxcbiAgICAgICAgdGhpcy5GYWJUZXh0dXJlQ29uZmlndXJhdG9yQ29tcG9uZW50LlNlbGVjdGVkRm9ybWFhdC5pZCA9PSBvcHRpb24uaWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIERpc2FibGVUb2dnbGUoKTogYm9vbGVhbiB7XG4gICAgdmFyIHN0b25lcyA9IHRoaXMuRmFiVGV4dHVyZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5HZXRTZWxlY3RlZFN0b25lcygpO1xuXG4gICAgcmV0dXJuIHN0b25lcy5sZW5ndGggPT0gNTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBIYXNTdG9uZShvcHRpb246IEZhYnJpa2FudGVuRmlsdGVyT3B0aW9uVmlld01vZGVsKTogYm9vbGVhbiB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdmFyIG5hbWUgPSB0aGlzLm9wdGlvbnNbaV0ubmFtZTtcclxuICAgICAgaWYgKG5hbWUgIT0gbnVsbCAmJiBvcHRpb24ubmFtZSAhPSBudWxsICYmIG5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKG9wdGlvbi5uYW1lLnRvTG93ZXJDYXNlKCkpICE9IC0xKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBIYXNTdG9uZVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnNbaV0uaGlkZGVuKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBJc1NlbGVjdGVkKG9wdGlvbjogRmFicmlrYW50ZW5GaWx0ZXJPcHRpb25WaWV3TW9kZWwpOiBib29sZWFuIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB2YXIgbmFtZSA9IHRoaXMub3B0aW9uc1tpXS5uYW1lO1xyXG4gICAgICBpZiAobmFtZSAhPSBudWxsICYmIG9wdGlvbi5uYW1lICE9IG51bGwgJiYgbmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yob3B0aW9uLm5hbWUudG9Mb3dlckNhc2UoKSkgIT0gLTEpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zW2ldLmhpZGRlbjtcclxuICAgICAgfVxyXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldEltYWdlKG9wdGlvbjogRmFicmlrYW50ZW5GaWx0ZXJPcHRpb25WaWV3TW9kZWwpOiBzdHJpbmcge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHZhciBuYW1lID0gdGhpcy5vcHRpb25zW2ldLm5hbWU7XHJcbiAgICAgIGlmIChuYW1lICE9IG51bGwgJiYgb3B0aW9uLm5hbWUgIT0gbnVsbCAmJiBuYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihvcHRpb24ubmFtZS50b0xvd2VyQ2FzZSgpKSAhPSAtMSkge1xyXG5cclxuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLm9wdGlvbnNbaV0uaW1hZ2VQYXRoICsgXCJcIjtcclxuXHJcbiAgICAgICAgaWYgKHZhbHVlLmluZGV4T2YoXCIjQkNCI1wiKSAhPSAtMSkge1xyXG4gICAgICAgICAgdmFyIGJjYnVybCA9IHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwuYmNiV2Vic2VydmljZVVSTEJhc2UgKyBcIlwiO1xyXG4gICAgICAgICAgYmNidXJsID0gYmNidXJsLnN1YnN0cmluZygwLCBiY2J1cmwubGVuZ3RoIC0gMSk7XHJcblxyXG4gICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKFwiI0JDQiNcIiwgYmNidXJsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0U3RvbmUob3B0aW9uOiBGYWJyaWthbnRlbkZpbHRlck9wdGlvblZpZXdNb2RlbCk6IEZhYnJpa2FudGVuRmlsdGVyT3B0aW9uVmlld01vZGVsIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB2YXIgbmFtZSA9IHRoaXMub3B0aW9uc1tpXS5uYW1lO1xyXG4gICAgICBpZiAobmFtZSAhPSBudWxsICYmIG9wdGlvbi5uYW1lICE9IG51bGwgJiYgbmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yob3B0aW9uLm5hbWUudG9Mb3dlckNhc2UoKSkgIT0gLTEpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zW2ldO1xyXG4gICAgICB9XHJcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEZhYnJpa2FudGVuRmlsdGVyT3B0aW9uVmlld01vZGVsKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0U2VsZWN0ZWRTdG9uZXMoc3RvbmVzOiBBcnJheTxGYWJyaWthbnRlbkZpbHRlck9wdGlvblZpZXdNb2RlbD4pOiB2b2lkIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zW2ldLmhpZGRlbikge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZGRvdWJsZSkge1xyXG4gICAgICAgICAgc3RvbmVzLnB1c2godGhpcy5vcHRpb25zW2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zW2ldLm5hbWU/LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImFjaHRlcnppamRlXCIpID09IC0xKSB7XHJcbiAgICAgICAgICAgIHN0b25lcy5wdXNoKHRoaXMub3B0aW9uc1tpXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XG4iLCI8ZGl2ICpuZ0lmPVwiSXNMb2FkaW5nKClcIiBjbGFzcz1cImxvYWRlclwiPlxyXG4gIDxtYXQtY2FyZCBjbGFzcz1cImxvYWRlci1jYXJkXCI+XHJcbiAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgPG1hdC1zcGlubmVyIGNsYXNzPVwibG9hZGVyLXNwaW5uZXJcIiBbZGlhbWV0ZXJdPVwiODBcIj48L21hdC1zcGlubmVyPlxyXG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgPG1hdC1jYXJkLXN1YnRpdGxlIGNsYXNzPVwibG9hZGVyLXN1YnRpdGxlXCIgKm5nSWY9XCIhRmFicmlrYW50ZW5TZXJ2aWNlLklzU3RhcnRpbmdEb3dubG9hZCgpXCI+XHJcbiAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuUHJvZHVjdHNMb2FkaW5nKSB9fVxyXG4gICAgPC9tYXQtY2FyZC1zdWJ0aXRsZT5cclxuICA8L21hdC1jYXJkPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgKm5nSWY9XCIhSXNMb2FkaW5nKClcIj5cclxuICA8ZGl2IGNsYXNzPVwiY2VudGVyLWJsb2NrXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyXCIgKm5nSWY9XCIhdGhpcy5TaW5nbGVTdG9uZU1vZGVcIj5cclxuICAgICAgPHRhYmxlIGNsYXNzPVwibWFpbi10YWJsZVwiPlxyXG4gICAgICAgIDx0ciBjbGFzcz1cIm1haW4tdGFibGUtdG9wLXJvd1wiPlxyXG4gICAgICAgICAgPHRkIGNsYXNzPVwibWFpbi10YWJsZS10b3Atcm93LWZpcnN0IG1haW4tdGFibGUtdG9wLXJvdy10ZFwiPjwvdGQ+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgR2V0Rm9ybWFhdCgpXCI+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm1haW4tdGFibGUtdG9wLXJvdy1vdGhlciBtYWluLXRhYmxlLXRvcC1yb3ctdGRcIj5cclxuICAgICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuRmlsdGVyT3B0aW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5Lk5hbWUsIG9wdGlvbi5pZCkgfX1cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3RvbmUgb2YgU3RvbmVSb3dPYmplY3RzXCI+XHJcbiAgICAgICAgICA8dHIgY2xhc3M9XCJtYWluLXRhYmxlLXJvd1wiPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJtYWluLXRhYmxlLXJvdy10ZCBtYWluLXRhYmxlLXJvdy10ZC1maXJzdFwiPlxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbi10YWJsZS1yb3ctdGQtbmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBzdG9uZS5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdG9uZS5kb3VibGVcIiBjbGFzcz1cImxzd3MtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsc3dzLWl0ZW1cIj5MUzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibHN3cy1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJzdG9uZS5zZWxlY3RlZGRvdWJsZVwiIFtkaXNhYmxlZF09XCJzdG9uZS5EaXNhYmxlVG9nZ2xlKClcIj48L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibHN3cy1pdGVtXCI+V1M8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIEdldEZvcm1hYXQoKVwiPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm1haW4tdGFibGUtcm93LXRkIG1haW4tdGFibGUtcm93LXRkLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdG9uZS5IYXNTdG9uZShvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0b25lLXRpbGVcIiAoY2xpY2spPVwic3RvbmUuU2VsZWN0KG9wdGlvbilcIiBbY2xhc3Muc2VsZWN0ZWRdPVwic3RvbmUuSXNTZWxlY3RlZChvcHRpb24pXCIgW2NsYXNzLm5vdC1zZWxlY3RhYmxlXT1cIiFzdG9uZS5DYW5TZWxlY3RTdG9uZShvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwic3RvbmUuR2V0SW1hZ2Uob3B0aW9uKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1peC1ibG9ja1wiICpuZ0lmPVwiR2V0U2VsZWN0ZWRTdG9uZXMoKS5sZW5ndGggPiAxICYmIHN0b25lLklzU2VsZWN0ZWQob3B0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgY2xhc3M9XCJzbWFsbC1pbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1peCAlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cIm51bWJlclwiIG1pbj1cIjFcIiBtYXg9XCIxMDBcIiBbKG5nTW9kZWwpXT1cInN0b25lLkdldFN0b25lKG9wdGlvbikubWl4UmF0aW9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3RhYmxlPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInRleHR1cmUtY29udGFpbmVyXCIgW2NsYXNzLnRleHR1cmUtY29udGFpbmVyLW1hcmdpbl09XCJ0aGlzLlNpbmdsZVN0b25lTW9kZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dHVyZS1jb250YWluZXItZmx5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRpc3BsYXlmbGV4XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcG9uZW50LWJsb2NrIGZpcnN0LXJvd1wiPlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiBjbGFzcz1cImZ1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJzZWxlY3QtbWF0LWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LlZlcmJhbmQpIH19XHJcbiAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJTZWxlY3RlZFZlcmJhbmRJZFwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QtdHJpZ2dlcj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlNlbGVjdGVkVmVyYmFuZElkIGFzIGlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkdldFZlcmJhbmRCeUlkKGlkKSBhcyB2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdC10cmlnZ2VyLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItb3B0aW9uLWltYWdlLW1pbmktZGl2XCIgKm5nSWY9XCJ2LmltYWdlUGF0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJHZXRJbWFnZVBhdGhQcm9kdWN0KHYpXCIgY2xhc3M9XCJmaWx0ZXItb3B0aW9uLWltYWdlXCIgYWx0PVwiXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdC10cmlnZ2VyLWNvbnRlbnQtdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Qcm9kdWN0LCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5Lk5hbWUsIHYuaWQpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3QtdHJpZ2dlcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2ZXJiYW5kIG9mIEdldFZlcmJhbmRlbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJ2ZXJiYW5kLmlkXCIgY2xhc3M9XCJzZWxlY3QtbWF0LW9wdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2ZXJiYW5kLmltYWdlUGF0aCAhPSBudWxsICYmIHZlcmJhbmQuaW1hZ2VQYXRoICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLW9wdGlvbi1pbWFnZS1taW5pLWRpdlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cInt7IEdldEltYWdlUGF0aFByb2R1Y3QodmVyYmFuZCkgfX1cIiBjbGFzcz1cImZpbHRlci1vcHRpb24taW1hZ2VcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LlByb2R1Y3QsIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuTmFtZSwgdmVyYmFuZC5pZCkgfX1cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBvbmVudC1ibG9jayBmaXJzdC1yb3dcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkdldFZvZWcoKSAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgY2xhc3M9XCJmdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJzZWxlY3QtbWF0LWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuVm9lZykgfX1cclxuICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJTZWxlY3RlZFZvZWdJZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdC10cmlnZ2VyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJTZWxlY3RlZFZvZWdJZCBhcyBpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkdldFZvZWdCeUlkKGlkKSBhcyB2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0LXRyaWdnZXItY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLW9wdGlvbi1pbWFnZS1taW5pLWRpdlwiICpuZ0lmPVwidi5pbWFnZVBhdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJHZXRJbWFnZVBhdGhQcm9kdWN0KHYpXCIgY2xhc3M9XCJmaWx0ZXItb3B0aW9uLWltYWdlXCIgYWx0PVwiXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3QtdHJpZ2dlci1jb250ZW50LXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5GaWx0ZXJPcHRpb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuTmFtZSwgdi5pZCkgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3QtdHJpZ2dlcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZvZWcgb2YgR2V0Vm9lZygpLmZpbHRlci5vcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInZvZWcuaWRcIiBjbGFzcz1cInNlbGVjdC1tYXQtb3B0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidm9lZy5pbWFnZVBhdGggIT0gbnVsbCAmJiB2b2VnLmltYWdlUGF0aCAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLW9wdGlvbi1pbWFnZS1taW5pLWRpdlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwie3sgR2V0SW1hZ2VQYXRoKHZvZWcpIH19XCIgY2xhc3M9XCJmaWx0ZXItb3B0aW9uLWltYWdlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5GaWx0ZXJPcHRpb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuTmFtZSwgdm9lZy5pZCkgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBvbmVudC1ibG9ja1wiPlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiBjbGFzcz1cInNtYWxsLWlucHV0XCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuU3Rvb3R2b2VnKSB9fVxyXG4gICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwibnVtYmVyXCIgbWluPVwie3sgU3Rvb3R2b2VnTWluIH19XCIgbWF4PVwie3sgU3Rvb3R2b2VnTWF4IH19XCIgWyhuZ01vZGVsKV09XCJTdG9vdHZvZWdcIj5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wb25lbnQtYmxvY2tcIj5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgY2xhc3M9XCJzbWFsbC1pbnB1dFwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LkxpbnR2b2VnKSB9fVxyXG4gICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwibnVtYmVyXCIgbWluPVwie3sgTGludHZvZWdNaW4gfX1cIiBtYXg9XCJ7eyBMaW50dm9lZ01heCB9fVwiIFsobmdNb2RlbCldPVwiTGludHZvZWdcIj5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2xpZGVyLWJsb2NrXCIgKm5nSWY9XCIhSGlSZXNcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZXItYmxvY2stbmFtZVwiPlxyXG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LkFhbnRhbFN0ZW5lbikgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlci1ibG9jay1zbGlkZXJcIj5cclxuICAgICAgICAgICAgPG1hdC1zbGlkZXIgbWluPVwiMTAwXCIgbWF4PVwiMjAwMFwiIHN0ZXA9XCI1MFwiIHNob3dUaWNrTWFya3MgZGlzY3JldGUgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgbWF0U2xpZGVyVGh1bWIgWyhuZ01vZGVsKV09XCJBYW50YWxTdGVuZW5cIj5cclxuICAgICAgICAgICAgPC9tYXQtc2xpZGVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2xpZGVyLWJsb2NrLWFtb3VudFwiPlxyXG4gICAgICAgICAgICB7eyBBYW50YWxTdGVuZW4gfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGlnaC1yZXMtY2hlY2tib3gtZGl2XCI+XHJcbiAgICAgICAgICA8bWF0LWNoZWNrYm94IFsobmdNb2RlbCldPVwiSGlSZXNcIiBjbGFzcz1cImhpZ2gtcmVzLWNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuSG9nZVJlc29sdXRpZSkgfX1cclxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGlnaC1yZXMtY2hlY2tib3gtZGl2XCI+XHJcbiAgICAgICAgICA8bWF0LWNoZWNrYm94IFsobmdNb2RlbCldPVwiU2hhZGVcIiBjbGFzcz1cImhpZ2gtcmVzLWNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuU2hhZHV3KSB9fVxyXG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25yb3dcIj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIlNpbmdsZVN0b25lTW9kZSA9IGZhbHNlO1wiIGNsYXNzPVwibGluayB0ZXh0dXVyLWtub3BcIiAqbmdJZj1cIlNpbmdsZVN0b25lTW9kZVwiPlxyXG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5Lk1peCkgfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIlRleHR1dXJHZW5lcmVyZW4oKVwiIGNsYXNzPVwibGluayB0ZXh0dXVyLWtub3BcIiBbZGlzYWJsZWRdPVwiR2VuZXJhdGVEaXNhYmxlZCgpXCI+XHJcbiAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuVGV4dHV1ckdlbmVyZXJlbikgfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiU2hvd1RleHR1cmUoKVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLXJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8YSBocmVmPVwie3sgVGV4dHVyZVJlc3BvbnNlTW9kZWwucGF0cm9vblVSTCB9fVwiIHRhcmdldD1cIl9ibGFua1wiPlxyXG4gICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1hZ2UgaW1hZ2UtcGF0cm9vblwiIHNyYz1cInt7IFRleHR1cmVSZXNwb25zZU1vZGVsLnBhdHJvb25VUkwgfX1cIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8YSBocmVmPVwie3sgR2V0UGF0cm9vbkRvd25sb2FkVVJMKCkgfX1cIiB0YXJnZXQ9XCJfYmxhbmtcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjbGFzcz1cImxpbmsgdGV4dHV1ci1rbm9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5Eb3dubG9hZFRleHR1cmUpIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8YSBocmVmPVwie3sgR2V0QnVtcERvd25sb2FkVVJMKCkgfX1cIiB0YXJnZXQ9XCJfYmxhbmtcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjbGFzcz1cImxpbmsgdGV4dHV1ci1rbm9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5Eb3dubG9hZEJ1bXApIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
598
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLXRleHR1cmUtY29uZmlndXJhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItdGV4dHVyZS1jb25maWd1cmF0b3IvZmFiLXRleHR1cmUtY29uZmlndXJhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItdGV4dHVyZS1jb25maWd1cmF0b3IvZmFiLXRleHR1cmUtY29uZmlndXJhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQXFCLFNBQVMsRUFBMEMsTUFBTSxlQUFlLENBQUM7QUFNckcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHNCQUFzQixFQUF5SSxtQkFBbUIsRUFBeUUsZ0NBQWdDLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHL1YsTUFNYSwrQkFBK0I7SUFrQ2pDO0lBQ0E7SUFDQTtJQUNDO0lBQ0Q7SUFDQztJQUNBO0lBdENWLElBQVcsbUJBQW1CO1FBQzVCLE9BQU8sbUJBQW1CLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsc0JBQXNCO1FBQy9CLE9BQU8sc0JBQXNCLENBQUM7SUFDaEMsQ0FBQztJQUVNLGlCQUFpQixHQUFXLENBQUMsQ0FBQyxDQUFDO0lBQy9CLGNBQWMsR0FBVyxDQUFDLENBQUMsQ0FBQztJQUM1QixRQUFRLEdBQVcsRUFBRSxDQUFDO0lBQ3RCLFdBQVcsR0FBVyxDQUFDLENBQUM7SUFDeEIsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUN6QixTQUFTLEdBQVcsRUFBRSxDQUFDO0lBQ3ZCLFlBQVks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QUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDNUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRTtnQkFFMUIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO29CQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDOUI7cUJBQ0k7b0JBQ0gsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7d0JBQ3BFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUM5QjtpQkFDRjthQUNGO1NBQ0Y7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkNoYW5nZXMsIERvQ2hlY2ssIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0TGVnYWN5RGlhbG9nIGFzIE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1kaWFsb2cnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBGYWJyaWthbnRlblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mYWJyaWthbnRlbi5zZXJ2aWNlJztcbmltcG9ydCB7IE1vYmlsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tb2JpbGUuc2VydmljZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25DYXRlZ29yeSwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeSwgRmFicmlrYW50ZW5UZXh0dXJlQmFzZVZpZXdNb2RlbCwgRmFicmlrYW50ZW5GaWx0ZXJWaWV3TW9kZWwsIEZhYnJpa2FudGVuSW5wdXRWaWV3TW9kZWwsIEZhYnJpa2FudGVuUHJvZHVjdFZpZXdNb2RlbCwgVGV4dHVyZUFwaUNsaWVudCwgVGV4dHVyZVJlcXVlc3RNb2RlbCwgVGV4dHVyZVJlc3BvbnNlTW9kZWwsIFRleHR1cmVNaXhSZXNwb25zZU1vZGVsLCBUZXh0dXJlTWl4UmVxdWVzdE1vZGVsLCBGYWJyaWthbnRlbkZpbHRlck9wdGlvblZpZXdNb2RlbCB9IGZyb20gJy4uLy4uL3N3YWdnZXIvU3dhZ2dlckNsaWVudCc7XG5pbXBvcnQgeyBGYWJEaXNwbGF5UGhvdG9EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9mYWItZGlzcGxheS1waG90by1kaWFsb2cvZmFiLWRpc3BsYXktcGhvdG8tZGlhbG9nLmNvbXBvbmVudCc7XHJcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZhYi10ZXh0dXJlLWNvbmZpZ3VyYXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9mYWItdGV4dHVyZS1jb25maWd1cmF0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mYWItdGV4dHVyZS1jb25maWd1cmF0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBGYWJUZXh0dXJlQ29uZmlndXJhdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBEb0NoZWNrIHtcblxuICBwdWJsaWMgZ2V0IFRyYW5zbGF0aW9uQ2F0ZWdvcnkoKSB7XG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uQ2F0ZWdvcnk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkoKSB7XG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnk7XG4gIH1cblxuICBwdWJsaWMgU2VsZWN0ZWRWZXJiYW5kSWQ6IG51bWJlciA9IC0xO1xuICBwdWJsaWMgU2VsZWN0ZWRWb2VnSWQ6IG51bWJlciA9IC0xO1xuICBwdWJsaWMgTGludHZvZWc6IG51bWJlciA9IDEyO1xuICBwdWJsaWMgTGludHZvZWdNaW46IG51bWJlciA9IDY7XG4gIHB1YmxpYyBMaW50dm9lZ01heDogbnVtYmVyID0gMTQ7XG4gIHB1YmxpYyBTdG9vdHZvZWc6IG51bWJlciA9IDEwO1xuICBwdWJsaWMgU3Rvb3R2b2VnTWluOiBudW1iZXIgPSA2O1xuICBwdWJsaWMgU3Rvb3R2b2VnTWF4OiBudW1iZXIgPSAxNDtcblxuICBwdWJsaWMgQWFudGFsU3RlbmVuOiBudW1iZXIgPSAxMDA7XG5cbiAgcHVibGljIEhpUmVzOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBTaGFkZTogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyBMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBTaW5nbGVTdG9uZU1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgVGV4dHVyZVJlc3BvbnNlTW9kZWw6IFRleHR1cmVSZXNwb25zZU1vZGVsIHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBUZXh0dXJlTWl4UmVzcG9uc2VNb2RlbDogVGV4dHVyZU1peFJlc3BvbnNlTW9kZWwgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgU2VsZWN0ZWRGb3JtYWF0OiBGYWJyaWthbnRlbkZpbHRlck9wdGlvblZpZXdNb2RlbCB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBTdG9uZVJvd09iamVjdHM6IEFycmF5PFN0b25lUm93T2JqZWN0PiA9IG5ldyBBcnJheTxTdG9uZVJvd09iamVjdD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgTW9iaWxlU2VydmljZTogTW9iaWxlU2VydmljZSxcbiAgICBwdWJsaWMgRmFicmlrYW50ZW5TZXJ2aWNlOiBGYWJyaWthbnRlblNlcnZpY2UsXG4gICAgcHVibGljIFRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBBY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgVGV4dHVyZUFwaUNsaWVudDogVGV4dHVyZUFwaUNsaWVudCxcbiAgICBwcml2YXRlIENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuUHJvY2Vzc1BhcmFtZXRlcnModGhpcy5BY3RpdmF0ZWRSb3V0ZSwgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZik7XG4gIH1cblxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuSXNMb2FkaW5nKCkpIHtcclxuICAgICAgaWYgKHRoaXMuU3RvbmVSb3dPYmplY3RzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgdGhpcy5GaWxsQXJyYXlzKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLlNlbGVjdGVkVmVyYmFuZElkID09IC0xKSB7XHJcbiAgICAgICAgdmFyIHZlcmJhbmRlbiA9IHRoaXMuR2V0VmVyYmFuZGVuKClcclxuICAgICAgICB0aGlzLlNlbGVjdGVkVmVyYmFuZElkID0gdmVyYmFuZGVuWzBdLmlkO1xyXG5cclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZlcmJhbmRlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKHZlcmJhbmRlbltpXS5ncm91cCA9PSBcImRlZmF1bHRcIikge1xyXG4gICAgICAgICAgICB0aGlzLlNlbGVjdGVkVmVyYmFuZElkID0gdmVyYmFuZGVuW2ldLmlkO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5TZWxlY3RlZFZvZWdJZCA9PSAtMSkge1xyXG4gICAgICAgIHZhciB2b2VnID0gdGhpcy5HZXRWb2VnKCk7XHJcblxyXG4gICAgICAgIGlmICh2b2VnPy5maWx0ZXI/Lm9wdGlvbnMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5TZWxlY3RlZFZvZWdJZCA9IHZvZWcuZmlsdGVyLm9wdGlvbnNbMF0uaWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkxvYWRGYWJyaWthbnRlblZpZXdNb2RlbCh0aGlzLkNoYW5nZURldGVjdG9yUmVmLCB0aGlzLkFjdGl2YXRlZFJvdXRlLCAoKSA9PiB7XG4gICAgICB0aGlzLkZpbGxBcnJheXMoKTtcblxuICAgICAgdmFyIHN0b25lID0gdGhpcy5BY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ3N0b25lJyk7XHJcbiAgICAgIHZhciBmb3JtYXQgPSB0aGlzLkFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnZm9ybWF0Jyk7XHJcblxyXG4gICAgICBpZiAoc3RvbmUgIT0gbnVsbCkge1xyXG4gICAgICAgIHZhciBzdG9uZV9mb3JtYXQgPSBzdG9uZSArIFwiX1wiICsgZm9ybWF0O1xyXG5cclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuU3RvbmVSb3dPYmplY3RzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMuU3RvbmVSb3dPYmplY3RzW2ldLm9wdGlvbnMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuU3RvbmVSb3dPYmplY3RzW2ldLm9wdGlvbnNbal0udXJsTmFtZSA9PSBzdG9uZV9mb3JtYXQpIHtcclxuICAgICAgICAgICAgICB0aGlzLlN0b25lUm93T2JqZWN0c1tpXS5TZWxlY3QodGhpcy5TdG9uZVJvd09iamVjdHNbaV0ub3B0aW9uc1tqXSk7XHJcblxyXG4gICAgICAgICAgICAgIHZhciBmb3JtYXRzID0gdGhpcy5HZXRGb3JtYWF0KCk7XHJcblxyXG4gICAgICAgICAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgZm9ybWF0cy5sZW5ndGg7IHArKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGZvcm1hdHNbcF0udXJsTmFtZSA9PSBmb3JtYXQpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5TdG9uZVJvd09iamVjdHNbaV0uRmFiVGV4dHVyZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5TZWxlY3RlZEZvcm1hYXQgPSBmb3JtYXRzW3BdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5TaW5nbGVTdG9uZU1vZGUgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBJc0xvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuTG9hZGluZykge1xuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XG5cbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuSXNMb2FkaW5nKCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cblxuICBwdWJsaWMgTm9TdG9uZVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5TdG9uZVJvd09iamVjdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLlN0b25lUm93T2JqZWN0c1tpXS5IYXNTdG9uZVNlbGVjdGVkKCkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cblxuICBwdWJsaWMgR2V0U3RlZW4oKTogRmFicmlrYW50ZW5GaWx0ZXJPcHRpb25WaWV3TW9kZWxbXSB7XG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsPy5pbnB1dHMgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLmlucHV0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhciBmaWx0ZXIgPSB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5pbnB1dHNbaV0uZmlsdGVyO1xyXG4gICAgICAgIGlmIChmaWx0ZXIgIT0gbnVsbCAmJiBmaWx0ZXIubmFtZSA9PSBcIlN0ZWVuIDFcIikge1xyXG4gICAgICAgICAgdmFyIG9wdGlvbnMgPSBmaWx0ZXIub3B0aW9ucztcclxuXHJcbiAgICAgICAgICBpZiAob3B0aW9ucyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBBcnJheTxGYWJyaWthbnRlbkZpbHRlck9wdGlvblZpZXdNb2RlbD4oKTtcclxuICB9XG5cbiAgcHVibGljIEdlbmVyYXRlRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5TZWxlY3RlZFZlcmJhbmRJZCA9PSAtMSkge1xuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuU2VsZWN0ZWRWb2VnSWQgPT0gLTEpIHtcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBzdG9uZXMgPSB0aGlzLkdldFNlbGVjdGVkU3RvbmVzKCk7XG5cbiAgICBpZiAoc3RvbmVzLmxlbmd0aCA9PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XG5cbiAgcHVibGljIFNob3dUZXh0dXJlKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuVGV4dHVyZVJlc3BvbnNlTW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxuXG4gIHB1YmxpYyBHZXRTZWxlY3RlZFN0b25lcygpOiBGYWJyaWthbnRlbkZpbHRlck9wdGlvblZpZXdNb2RlbFtdIHtcbiAgICB2YXIgc3RvbmVzID0gbmV3IEFycmF5PEZhYnJpa2FudGVuRmlsdGVyT3B0aW9uVmlld01vZGVsPigpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLlN0b25lUm93T2JqZWN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5TdG9uZVJvd09iamVjdHNbaV0uR2V0U2VsZWN0ZWRTdG9uZXMoc3RvbmVzKTtcclxuICAgIH1cblxuICAgIHJldHVybiBzdG9uZXM7XHJcbiAgfVxuXG4gIHB1YmxpYyBHZXRGb3JtYWF0KCk6IEZhYnJpa2FudGVuRmlsdGVyT3B0aW9uVmlld01vZGVsW10ge1xuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbD8uaW5wdXRzICE9IHVuZGVmaW5lZCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5pbnB1dHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YXIgZmlsdGVyID0gdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuaW5wdXRzW2ldLmZpbHRlcjtcclxuICAgICAgICBpZiAoZmlsdGVyICE9IG51bGwgJiYgZmlsdGVyLm5hbWUgPT0gXCJGb3JtYWF0XCIpIHtcclxuICAgICAgICAgIHZhciBvcHRpb25zID0gZmlsdGVyLm9wdGlvbnM7XHJcblxyXG4gICAgICAgICAgaWYgKG9wdGlvbnMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gb3B0aW9ucztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cblxuICAgIHJldHVybiBuZXcgQXJyYXk8RmFicmlrYW50ZW5GaWx0ZXJPcHRpb25WaWV3TW9kZWw+KCk7XHJcbiAgfVxuXG4gIHB1YmxpYyBHZXRWb2VnKCk6IEZhYnJpa2FudGVuSW5wdXRWaWV3TW9kZWwgfCBudWxsIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbD8uaW5wdXRzICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLmlucHV0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5pbnB1dHNbaV0uZmlsdGVyPy5uYW1lID09IFwiVm9lZ1wiKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuaW5wdXRzW2ldO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFZvZWdCeUlkKGlkOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLkdldFZvZWcoKT8uZmlsdGVyPy5vcHRpb25zOyAvLyBvZiBjYWNoZSBkZXplIGxpanN0IGluIGVlbiBwcm9wZXJ0eVxyXG4gICAgcmV0dXJuIGxpc3Q/LmZpbmQodiA9PiB2LmlkID09PSBpZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0VmVyYmFuZGVuKCk6IEZhYnJpa2FudGVuUHJvZHVjdFZpZXdNb2RlbFtdIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbD8ucHJvZHVjdHMgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbD8ucHJvZHVjdHM7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIG5ldyBBcnJheTxGYWJyaWthbnRlblByb2R1Y3RWaWV3TW9kZWw+KCk7XHJcbiAgICB9XHJcblxyXG4gIH1cblxuICBwdWJsaWMgR2V0VmVyYmFuZEJ5SWQoaWQ6IG51bWJlcikge1xyXG4gICAgY29uc3QgbGlzdCA9IHRoaXMuR2V0VmVyYmFuZGVuKCk7IC8vIG9mIGNhY2hlIGRlemUgbGlqc3QgaW4gZWVuIHByb3BlcnR5XHJcbiAgICByZXR1cm4gbGlzdD8uZmluZCh2ID0+IHYuaWQgPT09IGlkKTtcclxuICB9XG5cbiAgcHVibGljIEdldEltYWdlUGF0aChvcHRpb246IEZhYnJpa2FudGVuRmlsdGVyT3B0aW9uVmlld01vZGVsKTogc3RyaW5nIHtcclxuICAgIHZhciB2YWx1ZSA9IG9wdGlvbi5pbWFnZVBhdGggKyBcIlwiO1xyXG5cclxuICAgIGlmICh2YWx1ZS5pbmRleE9mKFwiI0JDQiNcIikgIT0gLTEpIHtcclxuICAgICAgdmFyIGJjYnVybCA9IHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwuYmNiV2Vic2VydmljZVVSTEJhc2UgKyBcIlwiO1xyXG4gICAgICBiY2J1cmwgPSBiY2J1cmwuc3Vic3RyaW5nKDAsIGJjYnVybC5sZW5ndGggLSAxKTtcclxuXHJcbiAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShcIiNCQ0IjXCIsIGJjYnVybCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldEltYWdlUGF0aFByb2R1Y3Qob3B0aW9uOiBGYWJyaWthbnRlblByb2R1Y3RWaWV3TW9kZWwpOiBzdHJpbmcge1xyXG4gICAgdmFyIHZhbHVlID0gb3B0aW9uLmltYWdlUGF0aCArIFwiXCI7XHJcblxyXG4gICAgaWYgKHZhbHVlLmluZGV4T2YoXCIjQkNCI1wiKSAhPSAtMSkge1xyXG4gICAgICB2YXIgYmNidXJsID0gdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5iY2JXZWJzZXJ2aWNlVVJMQmFzZSArIFwiXCI7XHJcbiAgICAgIGJjYnVybCA9IGJjYnVybC5zdWJzdHJpbmcoMCwgYmNidXJsLmxlbmd0aCAtIDEpO1xyXG5cclxuICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKFwiI0JDQiNcIiwgYmNidXJsKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxuXG4gIHB1YmxpYyBHZXRQYXRyb29uRG93bmxvYWRVUkwoKTogc3RyaW5nIHtcclxuXHJcbiAgICB2YXIgdXJsID0gdGhpcy5UZXh0dXJlUmVzcG9uc2VNb2RlbD8ucGF0cm9vblVSTCArIFwiXCI7XHJcblxyXG4gICAgdXJsID0gdXJsLnJlcGxhY2UodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5iY2JXZWJzZXJ2aWNlVVJMQmFzZSArIFwiXCIsIFwiXCIpO1xyXG5cclxuICAgIHZhciB0ZW1wID1cclxuICAgICAgdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5iY2JXZWJzZXJ2aWNlVVJMQmFzZSArXHJcbiAgICAgIFwiRG93bmxvYWQuYXNweD9maWxlPVwiICtcclxuICAgICAgdXJsICtcclxuICAgICAgXCImZG9lbD1cIiArXHJcbiAgICAgIHRoaXMuR2V0RG93bmxvYWROYW1lKCkgK1xyXG4gICAgICBcIi5wbmdcIjtcclxuXHJcbiAgICByZXR1cm4gdGVtcDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRCdW1wRG93bmxvYWRVUkwoKTogc3RyaW5nIHtcclxuICAgIHZhciB1cmwgPSB0aGlzLlRleHR1cmVSZXNwb25zZU1vZGVsPy5idW1wVVJMICsgXCJcIjtcclxuXHJcbiAgICB1cmwgPSB1cmwucmVwbGFjZSh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsLmJjYldlYnNlcnZpY2VVUkxCYXNlICsgXCJcIiwgXCJcIik7XHJcblxyXG4gICAgdmFyIHRlbXAgPVxyXG4gICAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsLmJjYldlYnNlcnZpY2VVUkxCYXNlICtcclxuICAgICAgXCJEb3dubG9hZC5hc3B4P2ZpbGU9XCIgK1xyXG4gICAgICB1cmwgK1xyXG4gICAgICBcIiZkb2VsPVwiICtcclxuICAgICAgdGhpcy5HZXREb3dubG9hZE5hbWUoKSArXHJcbiAgICAgIFwiX2J1bXAucG5nXCI7XHJcblxyXG4gICAgcmV0dXJuIHRlbXA7XHJcbiAgfVxuXG4gIHB1YmxpYyBHZXREb3dubG9hZE5hbWUoKTogc3RyaW5nIHtcclxuICAgIHZhciBib25kID0gdGhpcy5HZXRWZXJiYW5kQnlJZCh0aGlzLlNlbGVjdGVkVmVyYmFuZElkKTtcclxuICAgIHZhciBib25kX3N0ciA9IHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LlByb2R1Y3QsIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuTmFtZSwgYm9uZD8uaWQpLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgdmFyIHZvZWcgPSB0aGlzLkdldFZvZWdCeUlkKHRoaXMuU2VsZWN0ZWRWb2VnSWQpO1xyXG4gICAgdmFyIHZvZWdfc3RyID0gdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuRmlsdGVyT3B0aW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5Lk5hbWUsIHZvZWc/LmlkKS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgIHZhciByZXNvID0gXCJMUVwiO1xyXG5cclxuICAgIGlmICh0aGlzLkhpUmVzKSB7XHJcbiAgICAgIHJlc28gPSBcIkhRXCI7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuR2V0QWN0aXZlU3RlZW4oKS5yZXBsYWNlKFwiX1wiLCBcIiBcIikgKyBcIl9cIiArIHRoaXMuR2V0RGltZW5zaW9uKCkgKyBcIl9cIiArIGJvbmRfc3RyICsgXCJfXCIgKyB2b2VnX3N0ciArIFwiX1wiICsgcmVzbztcclxuICB9XG5cbiAgcHVibGljIEdldEFjdGl2ZVN0ZWVuKCk6IHN0cmluZyB7XHJcbiAgICB2YXIgc3RvbmVzID0gdGhpcy5HZXRTZWxlY3RlZFN0b25lcygpO1xyXG5cclxuICAgIGlmIChzdG9uZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICByZXR1cm4gc3RvbmVzWzBdLnVybE5hbWUgKyBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cblxuICBwdWJsaWMgRmlsbEFycmF5cygpIHtcbiAgICB0aGlzLlN0b25lUm93T2JqZWN0cyA9IG5ldyBBcnJheTxTdG9uZVJvd09iamVjdD4oKTtcclxuXHJcbiAgICB2YXIgZm9ybWFhdCA9IHRoaXMuR2V0U3RlZW4oKTtcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZvcm1hYXQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdmFyIG5hbWU6IHN0cmluZyA9IGZvcm1hYXRbaV0ubmFtZSArIFwiXCI7XHJcbiAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cmluZygwLCBuYW1lLmluZGV4T2YoJygnKSkgKyBcIlwiO1xyXG5cclxuICAgICAgdmFyIHN0b25lcm93b2JqZWN0OiBTdG9uZVJvd09iamVjdCB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0aGlzLlN0b25lUm93T2JqZWN0cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGlmICh0aGlzLlN0b25lUm93T2JqZWN0c1tqXS5uYW1lID09IG5hbWUpIHtcclxuICAgICAgICAgIHN0b25lcm93b2JqZWN0ID0gdGhpcy5TdG9uZVJvd09iamVjdHNbal07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoc3RvbmVyb3dvYmplY3QgPT0gbnVsbCkge1xyXG4gICAgICAgIHN0b25lcm93b2JqZWN0ID0gbmV3IFN0b25lUm93T2JqZWN0KG5hbWUsIHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLCB0aGlzKTtcclxuICAgICAgICB0aGlzLlN0b25lUm93T2JqZWN0cy5wdXNoKHN0b25lcm93b2JqZWN0KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgc3RvbmVyb3dvYmplY3QuQWRkT3B0aW9uKGZvcm1hYXRbaV0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuU3RvbmVSb3dPYmplY3RzLnNvcnQoZnVuY3Rpb24gKHN0b25lMSwgc3RvbmUyKSB7IHJldHVybiBzdG9uZTEubmFtZS5sb2NhbGVDb21wYXJlKHN0b25lMi5uYW1lKSB9KTtcclxuICB9XG5cbiAgcHVibGljIElzUmF0aW9CbG9ja2luZygpOiBib29sZWFuIHtcbiAgICB2YXIgdmVyYmFuZCA9IHRoaXMuR2V0VmVyYmFuZEJ5SWQodGhpcy5TZWxlY3RlZFZlcmJhbmRJZCk7XG5cbiAgICBpZiAodmVyYmFuZD8uaW5mbyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgdmFyIG9iamVjdCA9IEpTT04ucGFyc2UodmVyYmFuZC5pbmZvKTtcclxuICAgICAgdmFyIHN0ciA9IHRoaXMuR2V0TGVuZ3RlKCkgKyBcIiA9PSBcIiArICgyICogdGhpcy5HZXRCcmVlZHRlKCkpICsgXCIgKyBcIiArIHRoaXMuU3Rvb3R2b2VnO1xyXG4gICAgICAvL2FsZXJ0KG9iamVjdC5yYXRpbyArIFwiOiBcIiArIHN0ciArIFwiIDogXCIgKyBldmFsKHN0cikpO1xyXG4gICAgICB2YXIgZXZhbFN0ciA9IG9iamVjdC5yYXRpbyArIFwiXCI7XHJcbiAgICAgIGV2YWxTdHIgPSBldmFsU3RyLnJlcGxhY2UoXCJicmVlZHRlXCIsIHRoaXMuR2V0QnJlZWR0ZSgpLnRvU3RyaW5nKCkpO1xyXG4gICAgICBldmFsU3RyID0gZXZhbFN0ci5yZXBsYWNlKFwibGVuZ3RlXCIsIHRoaXMuR2V0TGVuZ3RlKCkudG9TdHJpbmcoKSk7XHJcbiAgICAgIGV2YWxTdHIgPSBldmFsU3RyLnJlcGxhY2UoXCJ2b2VnYnJlZWR0ZVwiLCB0aGlzLlN0b290dm9lZy50b1N0cmluZygpKTtcclxuXHJcbiAgICAgIGlmIChldmFsKGV2YWxTdHIpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBtZXNzYWdlID0gdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LlJhdGlvV2FybmluZyk7XHJcbiAgICAgICAgbWVzc2FnZSArPSBcIlxcclxcblwiO1xyXG4gICAgICAgIG1lc3NhZ2UgKz0gXCJcXHJcXG5cIjtcclxuICAgICAgICBtZXNzYWdlICs9IHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5QaWNrZWRCb25kKSArIFwiOiBcIiArIHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LlByb2R1Y3QsIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuTmFtZSwgdmVyYmFuZC5pZCk7XHJcbiAgICAgICAgbWVzc2FnZSArPSBcIlxcclxcblwiO1xyXG4gICAgICAgIG1lc3NhZ2UgKz0gdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LlJhdGlvQm9uZCkgKyBcIjogXCIgKyBvYmplY3QucmF0aW87XHJcbiAgICAgICAgbWVzc2FnZSArPSBcIlxcclxcblwiO1xyXG4gICAgICAgIG1lc3NhZ2UgKz0gXCJcXHJcXG5cIjtcclxuICAgICAgICBtZXNzYWdlICs9IHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5TdG9uZUxlbmd0ZSkgKyBcIjogXCIgKyB0aGlzLkdldExlbmd0ZSgpO1xyXG4gICAgICAgIG1lc3NhZ2UgKz0gXCJcXHJcXG5cIjtcclxuICAgICAgICBtZXNzYWdlICs9IHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5TdG9uZVdpZHRoKSArIFwiOiBcIiArIHRoaXMuR2V0QnJlZWR0ZSgpO1xyXG4gICAgICAgIG1lc3NhZ2UgKz0gXCJcXHJcXG5cIjtcclxuICAgICAgICBtZXNzYWdlICs9IHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5TdG9vdHZvZWcpICsgXCI6IFwiICsgdGhpcy5TdG9vdHZvZWc7XHJcbiAgICAgICAgbWVzc2FnZSArPSBcIlxcclxcblwiO1xyXG4gICAgICAgIG1lc3NhZ2UgKz0gXCJcXHJcXG5cIjtcclxuICAgICAgICBtZXNzYWdlICs9IHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5TdG9uZUNvbXBsZXRlKSArIFwiOiBcIiArIGV2YWxTdHI7XHJcblxyXG4gICAgICAgIGFsZXJ0KG1lc3NhZ2UpO1xyXG5cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cblxuICBwdWJsaWMgVGV4dHV1ckdlbmVyZXJlbigpOiB2b2lkIHtcclxuICAgIHZhciB2YWxpZCA9IHRydWU7XHJcblxyXG4gICAgaWYgKHRoaXMuSXNSYXRpb0Jsb2NraW5nKCkpIHtcclxuICAgICAgdmFsaWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodmFsaWQpIHtcclxuICAgICAgdmFyIHN0b25lcyA9IHRoaXMuR2V0U2VsZWN0ZWRTdG9uZXMoKTtcclxuICAgICAgaWYgKHN0b25lcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICB2YXIgcmVxdWVzdCA9IG5ldyBUZXh0dXJlUmVxdWVzdE1vZGVsKCk7XHJcblxyXG4gICAgICAgIHJlcXVlc3QudmVyYmFuZElkID0gdGhpcy5TZWxlY3RlZFZlcmJhbmRJZDtcclxuICAgICAgICByZXF1ZXN0LnN0ZWVuSWQgPSBzdG9uZXNbMF0uaWQ7XHJcbiAgICAgICAgcmVxdWVzdC5zdGVlblJhdGlvID0gc3RvbmVzWzBdLm1peFJhdGlvO1xyXG4gICAgICAgIHJlcXVlc3Qudm9lZ0lkID0gdGhpcy5TZWxlY3RlZFZvZWdJZDtcclxuICAgICAgICByZXF1ZXN0LmhpZ2hSZXNvbHV0aW9uID0gdGhpcy5IaVJlcztcclxuICAgICAgICByZXF1ZXN0LnNoYWR1dyA9IHRoaXMuU2hhZGU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLkhpUmVzKSB7XHJcbiAgICAgICAgICByZXF1ZXN0Lm1pbkFhbnRhbEJpdG1hcCA9IDEwMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICByZXF1ZXN0Lm1pbkFhbnRhbEJpdG1hcCA9IHRoaXMuQWFudGFsU3RlbmVuO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIGlmIChzdG9uZXMubGVuZ3RoIDwgMikge1xyXG4gICAgICAgICAgcmVxdWVzdC5zdGVlbjJJZCA9IC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHJlcXVlc3Quc3RlZW4ySWQgPSBzdG9uZXNbMV0uaWQ7XHJcbiAgICAgICAgICByZXF1ZXN0LnN0ZWVuMlJhdGlvID0gc3RvbmVzWzFdLm1peFJhdGlvO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHN0b25lcy5sZW5ndGggPCAzKSB7XHJcbiAgICAgICAgICByZXF1ZXN0LnN0ZWVuM0lkID0gLTE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgcmVxdWVzdC5zdGVlbjNJZCA9IHN0b25lc1syXS5pZDtcclxuICAgICAgICAgIHJlcXVlc3Quc3RlZW4zUmF0aW8gPSBzdG9uZXNbMl0ubWl4UmF0aW87XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc3RvbmVzLmxlbmd0aCA8IDQpIHtcclxuICAgICAgICAgIHJlcXVlc3Quc3RlZW40SWQgPSAtMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICByZXF1ZXN0LnN0ZWVuNElkID0gc3RvbmVzWzNdLmlkO1xyXG4gICAgICAgICAgcmVxdWVzdC5zdGVlbjRSYXRpbyA9IHN0b25lc1szXS5taXhSYXRpbztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChzdG9uZXMubGVuZ3RoIDwgNSkge1xyXG4gICAgICAgICAgcmVxdWVzdC5zdGVlbjVJZCA9IC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHJlcXVlc3Quc3RlZW41SWQgPSBzdG9uZXNbNF0uaWQ7XHJcbiAgICAgICAgICByZXF1ZXN0LnN0ZWVuNVJhdGlvID0gc3RvbmVzWzRdLm1peFJhdGlvO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuU3Rvb3R2b2VnIDwgdGhpcy5TdG9vdHZvZWdNaW4pIHtcclxuICAgICAgICAgIHRoaXMuU3Rvb3R2b2VnID0gdGhpcy5TdG9vdHZvZWdNaW47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5TdG9vdHZvZWcgPiB0aGlzLlN0b290dm9lZ01heCkge1xyXG4gICAgICAgICAgdGhpcy5TdG9vdHZvZWcgPSB0aGlzLlN0b290dm9lZ01heDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJlcXVlc3QuYnJlZWR0ZVN0b290dm9lZyA9IHRoaXMuU3Rvb3R2b2VnO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5MaW50dm9lZyA8IHRoaXMuTGludHZvZWdNaW4pIHtcclxuICAgICAgICAgIHRoaXMuTGludHZvZWcgPSB0aGlzLkxpbnR2b2VnTWluO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuTGludHZvZWcgPiB0aGlzLkxpbnR2b2VnTWF4KSB7XHJcbiAgICAgICAgICB0aGlzLkxpbnR2b2VnID0gdGhpcy5MaW50dm9lZ01heDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJlcXVlc3QuaG9vZ3RlTGludHZvZWcgPSB0aGlzLkxpbnR2b2VnO1xyXG5cclxuICAgICAgICB0aGlzLlRleHR1cmVBcGlDbGllbnQuZ2V0VGV4dHVyZShyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBUZXh0dXJlUmVzcG9uc2VNb2RlbCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5UZXh0dXJlUmVzcG9uc2VNb2RlbCA9IG1vZGVsO1xyXG4gICAgICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XG5cbiAgcHVibGljIFNldE1peFJhdGlvcygpOiB2b2lkIHtcbiAgICB2YXIgc3RvbmVzID0gdGhpcy5HZXRTZWxlY3RlZFN0b25lcygpO1xuXG4gICAgaWYgKHN0b25lcy5sZW5ndGggIT0gMCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLlN0b25lUm93T2JqZWN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMuU3RvbmVSb3dPYmplY3RzW2ldLm9wdGlvbnMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgIGZvciAodmFyIHMgPSAwOyBzIDwgc3RvbmVzLmxlbmd0aDsgcysrKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLlN0b25lUm93T2JqZWN0c1tpXS5vcHRpb25zW2pdLmlkID09IHN0b25lc1tzXS5pZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuU3RvbmVSb3dPYmplY3RzW2ldLm9wdGlvbnNbal0ubWl4UmF0aW8gPSBNYXRoLnJvdW5kKDEwMCAvIHN0b25lcy5sZW5ndGgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxuXG4gIHB1YmxpYyBHZXRGb3JtYWF0U3RyKCk6IHN0cmluZyB7XG4gICAgdmFyIHN0b25lcyA9IHRoaXMuR2V0U2VsZWN0ZWRTdG9uZXMoKTtcblxuICAgIGlmIChzdG9uZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB2YXIgbmFtZTogc3RyaW5nID0gc3RvbmVzWzBdLm5hbWUgKyBcIlwiO1xyXG4gICAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmcobmFtZS5pbmRleE9mKCcoJykpICsgXCJcIjtcclxuXHJcblxyXG4gICAgICByZXR1cm4gbmFtZTtcclxuICAgIH1cblxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxuXG4gIHB1YmxpYyBHZXREaW1lbnNpb24oKTogc3RyaW5nIHtcbiAgICB2YXIgZm9ybWFhdCA9IHRoaXMuR2V0Rm9ybWFhdFN0cigpO1xuXG4gICAgc3dpdGNoIChmb3JtYWF0KSB7XG4gICAgICBjYXNlIFwiKG5vcm1hYWxmb3JtYWF0KVwiOlxyXG4gICAgICAgIHJldHVybiBcIjI0MHgxMTV4NzFcIjtcclxuICAgICAgY2FzZSBcIihkdW5uZm9ybWFhdClcIjpcclxuICAgICAgICByZXR1cm4gXCIyNDB4MTE1eDUyXCI7XHJcbiAgICAgIGNhc2UgXCIobW9kdXVsZm9ybWFhdCA1MilcIjpcclxuICAgICAgICByZXR1cm4gXCIyOTB4OTB4NTJcIjtcclxuICAgICAgY2FzZSBcIih3YWFsZm9ybWFhdClcIjpcclxuICAgICAgICByZXR1cm4gXCIyMTB4MTAweDUyXCI7XHJcbiAgICB9XG5cbiAgICByZXR1cm4gXCJcIjtcclxuICB9XG5cbiAgcHVibGljIEdldExlbmd0ZSgpOiBudW1iZXIge1xuICAgIHZhciBmb3JtYWF0ID0gdGhpcy5HZXRGb3JtYWF0U3RyKCk7XG5cbiAgICBzd2l0Y2ggKGZvcm1hYXQpIHtcbiAgICAgIGNhc2UgXCIobm9ybWFhbGZvcm1hYXQpXCI6XHJcbiAgICAgICAgcmV0dXJuIDI0MDtcclxuICAgICAgY2FzZSBcIihkdW5uZm9ybWFhdClcIjpcclxuICAgICAgICByZXR1cm4gMjQwO1xyXG4gICAgICBjYXNlIFwiKG1vZHV1bGZvcm1hYXQgNTIpXCI6XHJcbiAgICAgICAgcmV0dXJuIDI5MDtcclxuICAgICAgY2FzZSBcIih3YWFsZm9ybWFhdClcIjpcclxuICAgICAgICByZXR1cm4gMjEwO1xyXG4gICAgfVxuXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cblxuICBwdWJsaWMgR2V0QnJlZWR0ZSgpOiBudW1iZXIge1xuICAgIHZhciBmb3JtYWF0ID0gdGhpcy5HZXRGb3JtYWF0U3RyKCk7XG5cbiAgICBzd2l0Y2ggKGZvcm1hYXQpIHtcbiAgICAgIGNhc2UgXCIobm9ybWFhbGZvcm1hYXQpXCI6XHJcbiAgICAgICAgcmV0dXJuIDExNTtcclxuICAgICAgY2FzZSBcIihkdW5uZm9ybWFhdClcIjpcclxuICAgICAgICByZXR1cm4gMTE1O1xyXG4gICAgICBjYXNlIFwiKG1vZHV1bGZvcm1hYXQgNTIpXCI6XHJcbiAgICAgICAgcmV0dXJuIDkwO1xyXG4gICAgICBjYXNlIFwiKHdhYWxmb3JtYWF0KVwiOlxyXG4gICAgICAgIHJldHVybiAxMDA7XHJcbiAgICB9XG5cbiAgICByZXR1cm4gLTE7XHJcbiAgfVxufVxuXG5jbGFzcyBTdG9uZVJvd09iamVjdCB7XG4gIG5hbWU6IHN0cmluZztcclxuICBkb3VibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWxlY3RlZGRvdWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBvcHRpb25zOiBGYWJyaWthbnRlbkZpbHRlck9wdGlvblZpZXdNb2RlbFtdID0gbmV3IEFycmF5PEZhYnJpa2FudGVuRmlsdGVyT3B0aW9uVmlld01vZGVsPigpO1xyXG5cclxuICBwcml2YXRlIEZhYnJpa2FudGVuU2VydmljZTogRmFicmlrYW50ZW5TZXJ2aWNlO1xyXG4gIHB1YmxpYyBGYWJUZXh0dXJlQ29uZmlndXJhdG9yQ29tcG9uZW50OiBGYWJUZXh0dXJlQ29uZmlndXJhdG9yQ29tcG9uZW50O1xyXG5cclxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIEZhYnJpa2FudGVuU2VydmljZTogRmFicmlrYW50ZW5TZXJ2aWNlLCBGYWJUZXh0dXJlQ29uZmlndXJhdG9yQ29tcG9uZW50OiBGYWJUZXh0dXJlQ29uZmlndXJhdG9yQ29tcG9uZW50KSB7XHJcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5GYWJyaWthbnRlblNlcnZpY2UgPSBGYWJyaWthbnRlblNlcnZpY2U7XHJcbiAgICB0aGlzLkZhYlRleHR1cmVDb25maWd1cmF0b3JDb21wb25lbnQgPSBGYWJUZXh0dXJlQ29uZmlndXJhdG9yQ29tcG9uZW50O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNlbGVjdChvcHRpb246IEZhYnJpa2FudGVuRmlsdGVyT3B0aW9uVmlld01vZGVsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuQ2FuU2VsZWN0U3RvbmUob3B0aW9uKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YXIgbmFtZSA9IHRoaXMub3B0aW9uc1tpXS5uYW1lO1xyXG4gICAgICAgIGlmIChuYW1lICE9IG51bGwgJiYgb3B0aW9uLm5hbWUgIT0gbnVsbCAmJiBuYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihvcHRpb24ubmFtZS50b0xvd2VyQ2FzZSgpKSAhPSAtMSkge1xyXG5cclxuICAgICAgICAgIHRoaXMub3B0aW9uc1tpXS5oaWRkZW4gPSAhdGhpcy5vcHRpb25zW2ldLmhpZGRlbjtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zW2ldLmhpZGRlbikge1xyXG4gICAgICAgICAgICB0aGlzLkZhYlRleHR1cmVDb25maWd1cmF0b3JDb21wb25lbnQuU2VsZWN0ZWRGb3JtYWF0ID0gb3B0aW9uO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLkZhYlRleHR1cmVDb25maWd1cmF0b3JDb21wb25lbnQuTm9TdG9uZVNlbGVjdGVkKCkpIHtcclxuICAgICAgICAgICAgICB0aGlzLkZhYlRleHR1cmVDb25maWd1cmF0b3JDb21wb25lbnQuU2VsZWN0ZWRGb3JtYWF0ID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5GYWJUZXh0dXJlQ29uZmlndXJhdG9yQ29tcG9uZW50LlNldE1peFJhdGlvcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIEFkZE9wdGlvbihvcHRpb246IEZhYnJpa2FudGVuRmlsdGVyT3B0aW9uVmlld01vZGVsKTogdm9pZCB7XG4gICAgdmFyIG5hbWUgPSBvcHRpb24ubmFtZTtcblxuICAgIGlmIChuYW1lICE9IG51bGwpIHtcbiAgICAgIGlmIChuYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcInZvb3J6aWpkZVwiKSAhPSAtMSB8fFxyXG4gICAgICAgIG5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwiYWNodGVyemlqZGVcIikgIT0gLTEpIHtcclxuICAgICAgICB0aGlzLmRvdWJsZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cblxuICAgIHRoaXMub3B0aW9ucy5wdXNoKG9wdGlvbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQ2FuU2VsZWN0U3RvbmUob3B0aW9uOiBGYWJyaWthbnRlbkZpbHRlck9wdGlvblZpZXdNb2RlbCk6IGJvb2xlYW4ge1xuICAgIHZhciBzdG9uZXMgPSB0aGlzLkZhYlRleHR1cmVDb25maWd1cmF0b3JDb21wb25lbnQuR2V0U2VsZWN0ZWRTdG9uZXMoKTtcblxuICAgIGlmIChzdG9uZXMubGVuZ3RoID09IDUpIHtcbiAgICAgIHJldHVybiB0aGlzLklzU2VsZWN0ZWQob3B0aW9uKTtcclxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmICh0aGlzLkZhYlRleHR1cmVDb25maWd1cmF0b3JDb21wb25lbnQuU2VsZWN0ZWRGb3JtYWF0ID09IG51bGwgfHxcbiAgICAgICAgdGhpcy5GYWJUZXh0dXJlQ29uZmlndXJhdG9yQ29tcG9uZW50LlNlbGVjdGVkRm9ybWFhdC5pZCA9PSBvcHRpb24uaWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIERpc2FibGVUb2dnbGUoKTogYm9vbGVhbiB7XG4gICAgdmFyIHN0b25lcyA9IHRoaXMuRmFiVGV4dHVyZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5HZXRTZWxlY3RlZFN0b25lcygpO1xuXG4gICAgcmV0dXJuIHN0b25lcy5sZW5ndGggPT0gNTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBIYXNTdG9uZShvcHRpb246IEZhYnJpa2FudGVuRmlsdGVyT3B0aW9uVmlld01vZGVsKTogYm9vbGVhbiB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdmFyIG5hbWUgPSB0aGlzLm9wdGlvbnNbaV0ubmFtZTtcclxuICAgICAgaWYgKG5hbWUgIT0gbnVsbCAmJiBvcHRpb24ubmFtZSAhPSBudWxsICYmIG5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKG9wdGlvbi5uYW1lLnRvTG93ZXJDYXNlKCkpICE9IC0xKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBIYXNTdG9uZVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnNbaV0uaGlkZGVuKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBJc1NlbGVjdGVkKG9wdGlvbjogRmFicmlrYW50ZW5GaWx0ZXJPcHRpb25WaWV3TW9kZWwpOiBib29sZWFuIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB2YXIgbmFtZSA9IHRoaXMub3B0aW9uc1tpXS5uYW1lO1xyXG4gICAgICBpZiAobmFtZSAhPSBudWxsICYmIG9wdGlvbi5uYW1lICE9IG51bGwgJiYgbmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yob3B0aW9uLm5hbWUudG9Mb3dlckNhc2UoKSkgIT0gLTEpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zW2ldLmhpZGRlbjtcclxuICAgICAgfVxyXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldEltYWdlKG9wdGlvbjogRmFicmlrYW50ZW5GaWx0ZXJPcHRpb25WaWV3TW9kZWwpOiBzdHJpbmcge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHZhciBuYW1lID0gdGhpcy5vcHRpb25zW2ldLm5hbWU7XHJcbiAgICAgIGlmIChuYW1lICE9IG51bGwgJiYgb3B0aW9uLm5hbWUgIT0gbnVsbCAmJiBuYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihvcHRpb24ubmFtZS50b0xvd2VyQ2FzZSgpKSAhPSAtMSkge1xyXG5cclxuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLm9wdGlvbnNbaV0uaW1hZ2VQYXRoICsgXCJcIjtcclxuXHJcbiAgICAgICAgaWYgKHZhbHVlLmluZGV4T2YoXCIjQkNCI1wiKSAhPSAtMSkge1xyXG4gICAgICAgICAgdmFyIGJjYnVybCA9IHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwuYmNiV2Vic2VydmljZVVSTEJhc2UgKyBcIlwiO1xyXG4gICAgICAgICAgYmNidXJsID0gYmNidXJsLnN1YnN0cmluZygwLCBiY2J1cmwubGVuZ3RoIC0gMSk7XHJcblxyXG4gICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKFwiI0JDQiNcIiwgYmNidXJsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0U3RvbmUob3B0aW9uOiBGYWJyaWthbnRlbkZpbHRlck9wdGlvblZpZXdNb2RlbCk6IEZhYnJpa2FudGVuRmlsdGVyT3B0aW9uVmlld01vZGVsIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB2YXIgbmFtZSA9IHRoaXMub3B0aW9uc1tpXS5uYW1lO1xyXG4gICAgICBpZiAobmFtZSAhPSBudWxsICYmIG9wdGlvbi5uYW1lICE9IG51bGwgJiYgbmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yob3B0aW9uLm5hbWUudG9Mb3dlckNhc2UoKSkgIT0gLTEpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zW2ldO1xyXG4gICAgICB9XHJcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEZhYnJpa2FudGVuRmlsdGVyT3B0aW9uVmlld01vZGVsKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0U2VsZWN0ZWRTdG9uZXMoc3RvbmVzOiBBcnJheTxGYWJyaWthbnRlbkZpbHRlck9wdGlvblZpZXdNb2RlbD4pOiB2b2lkIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zW2ldLmhpZGRlbikge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZGRvdWJsZSkge1xyXG4gICAgICAgICAgc3RvbmVzLnB1c2godGhpcy5vcHRpb25zW2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zW2ldLm5hbWU/LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImFjaHRlcnppamRlXCIpID09IC0xKSB7XHJcbiAgICAgICAgICAgIHN0b25lcy5wdXNoKHRoaXMub3B0aW9uc1tpXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XG4iLCI8ZGl2ICpuZ0lmPVwiSXNMb2FkaW5nKClcIiBjbGFzcz1cImxvYWRlclwiPlxyXG4gIDxtYXQtY2FyZCBjbGFzcz1cImxvYWRlci1jYXJkXCI+XHJcbiAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgPG1hdC1zcGlubmVyIGNsYXNzPVwibG9hZGVyLXNwaW5uZXJcIiBbZGlhbWV0ZXJdPVwiODBcIj48L21hdC1zcGlubmVyPlxyXG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgPG1hdC1jYXJkLXN1YnRpdGxlIGNsYXNzPVwibG9hZGVyLXN1YnRpdGxlXCIgKm5nSWY9XCIhRmFicmlrYW50ZW5TZXJ2aWNlLklzU3RhcnRpbmdEb3dubG9hZCgpXCI+XHJcbiAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuUHJvZHVjdHNMb2FkaW5nKSB9fVxyXG4gICAgPC9tYXQtY2FyZC1zdWJ0aXRsZT5cclxuICA8L21hdC1jYXJkPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgKm5nSWY9XCIhSXNMb2FkaW5nKClcIj5cclxuICA8ZGl2IGNsYXNzPVwiY2VudGVyLWJsb2NrXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyXCIgKm5nSWY9XCIhdGhpcy5TaW5nbGVTdG9uZU1vZGVcIj5cclxuICAgICAgPHRhYmxlIGNsYXNzPVwibWFpbi10YWJsZVwiPlxyXG4gICAgICAgIDx0ciBjbGFzcz1cIm1haW4tdGFibGUtdG9wLXJvd1wiPlxyXG4gICAgICAgICAgPHRkIGNsYXNzPVwibWFpbi10YWJsZS10b3Atcm93LWZpcnN0IG1haW4tdGFibGUtdG9wLXJvdy10ZFwiPjwvdGQ+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgR2V0Rm9ybWFhdCgpXCI+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm1haW4tdGFibGUtdG9wLXJvdy1vdGhlciBtYWluLXRhYmxlLXRvcC1yb3ctdGRcIj5cclxuICAgICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuRmlsdGVyT3B0aW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5Lk5hbWUsIG9wdGlvbi5pZCkgfX1cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3RvbmUgb2YgU3RvbmVSb3dPYmplY3RzXCI+XHJcbiAgICAgICAgICA8dHIgY2xhc3M9XCJtYWluLXRhYmxlLXJvd1wiPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJtYWluLXRhYmxlLXJvdy10ZCBtYWluLXRhYmxlLXJvdy10ZC1maXJzdFwiPlxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbi10YWJsZS1yb3ctdGQtbmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBzdG9uZS5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdG9uZS5kb3VibGVcIiBjbGFzcz1cImxzd3MtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsc3dzLWl0ZW1cIj5MUzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibHN3cy1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJzdG9uZS5zZWxlY3RlZGRvdWJsZVwiIFtkaXNhYmxlZF09XCJzdG9uZS5EaXNhYmxlVG9nZ2xlKClcIj48L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibHN3cy1pdGVtXCI+V1M8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIEdldEZvcm1hYXQoKVwiPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm1haW4tdGFibGUtcm93LXRkIG1haW4tdGFibGUtcm93LXRkLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdG9uZS5IYXNTdG9uZShvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0b25lLXRpbGVcIiAoY2xpY2spPVwic3RvbmUuU2VsZWN0KG9wdGlvbilcIiBbY2xhc3Muc2VsZWN0ZWRdPVwic3RvbmUuSXNTZWxlY3RlZChvcHRpb24pXCIgW2NsYXNzLm5vdC1zZWxlY3RhYmxlXT1cIiFzdG9uZS5DYW5TZWxlY3RTdG9uZShvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwic3RvbmUuR2V0SW1hZ2Uob3B0aW9uKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1peC1ibG9ja1wiICpuZ0lmPVwiR2V0U2VsZWN0ZWRTdG9uZXMoKS5sZW5ndGggPiAxICYmIHN0b25lLklzU2VsZWN0ZWQob3B0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgY2xhc3M9XCJzbWFsbC1pbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1peCAlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cIm51bWJlclwiIG1pbj1cIjFcIiBtYXg9XCIxMDBcIiBbKG5nTW9kZWwpXT1cInN0b25lLkdldFN0b25lKG9wdGlvbikubWl4UmF0aW9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3RhYmxlPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInRleHR1cmUtY29udGFpbmVyXCIgW2NsYXNzLnRleHR1cmUtY29udGFpbmVyLW1hcmdpbl09XCJ0aGlzLlNpbmdsZVN0b25lTW9kZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dHVyZS1jb250YWluZXItZmx5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRpc3BsYXlmbGV4XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcG9uZW50LWJsb2NrIGZpcnN0LXJvd1wiPlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiBjbGFzcz1cImZ1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJzZWxlY3QtbWF0LWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LlZlcmJhbmQpIH19XHJcbiAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJTZWxlY3RlZFZlcmJhbmRJZFwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QtdHJpZ2dlcj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlNlbGVjdGVkVmVyYmFuZElkIGFzIGlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkdldFZlcmJhbmRCeUlkKGlkKSBhcyB2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdC10cmlnZ2VyLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItb3B0aW9uLWltYWdlLW1pbmktZGl2XCIgKm5nSWY9XCJ2LmltYWdlUGF0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJHZXRJbWFnZVBhdGhQcm9kdWN0KHYpXCIgY2xhc3M9XCJmaWx0ZXItb3B0aW9uLWltYWdlXCIgYWx0PVwiXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdC10cmlnZ2VyLWNvbnRlbnQtdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Qcm9kdWN0LCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5Lk5hbWUsIHYuaWQpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3QtdHJpZ2dlcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2ZXJiYW5kIG9mIEdldFZlcmJhbmRlbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJ2ZXJiYW5kLmlkXCIgY2xhc3M9XCJzZWxlY3QtbWF0LW9wdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2ZXJiYW5kLmltYWdlUGF0aCAhPSBudWxsICYmIHZlcmJhbmQuaW1hZ2VQYXRoICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLW9wdGlvbi1pbWFnZS1taW5pLWRpdlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cInt7IEdldEltYWdlUGF0aFByb2R1Y3QodmVyYmFuZCkgfX1cIiBjbGFzcz1cImZpbHRlci1vcHRpb24taW1hZ2VcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LlByb2R1Y3QsIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuTmFtZSwgdmVyYmFuZC5pZCkgfX1cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBvbmVudC1ibG9jayBmaXJzdC1yb3dcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkdldFZvZWcoKSAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgY2xhc3M9XCJmdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJzZWxlY3QtbWF0LWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuVm9lZykgfX1cclxuICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJTZWxlY3RlZFZvZWdJZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdC10cmlnZ2VyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJTZWxlY3RlZFZvZWdJZCBhcyBpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkdldFZvZWdCeUlkKGlkKSBhcyB2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0LXRyaWdnZXItY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLW9wdGlvbi1pbWFnZS1taW5pLWRpdlwiICpuZ0lmPVwidi5pbWFnZVBhdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJHZXRJbWFnZVBhdGhQcm9kdWN0KHYpXCIgY2xhc3M9XCJmaWx0ZXItb3B0aW9uLWltYWdlXCIgYWx0PVwiXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3QtdHJpZ2dlci1jb250ZW50LXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5GaWx0ZXJPcHRpb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuTmFtZSwgdi5pZCkgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3QtdHJpZ2dlcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZvZWcgb2YgR2V0Vm9lZygpLmZpbHRlci5vcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInZvZWcuaWRcIiBjbGFzcz1cInNlbGVjdC1tYXQtb3B0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidm9lZy5pbWFnZVBhdGggIT0gbnVsbCAmJiB2b2VnLmltYWdlUGF0aCAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLW9wdGlvbi1pbWFnZS1taW5pLWRpdlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwie3sgR2V0SW1hZ2VQYXRoKHZvZWcpIH19XCIgY2xhc3M9XCJmaWx0ZXItb3B0aW9uLWltYWdlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5GaWx0ZXJPcHRpb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuTmFtZSwgdm9lZy5pZCkgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBvbmVudC1ibG9ja1wiPlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiBjbGFzcz1cInNtYWxsLWlucHV0XCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuU3Rvb3R2b2VnKSB9fVxyXG4gICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwibnVtYmVyXCIgbWluPVwie3sgU3Rvb3R2b2VnTWluIH19XCIgbWF4PVwie3sgU3Rvb3R2b2VnTWF4IH19XCIgWyhuZ01vZGVsKV09XCJTdG9vdHZvZWdcIj5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wb25lbnQtYmxvY2tcIj5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgY2xhc3M9XCJzbWFsbC1pbnB1dFwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LkxpbnR2b2VnKSB9fVxyXG4gICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwibnVtYmVyXCIgbWluPVwie3sgTGludHZvZWdNaW4gfX1cIiBtYXg9XCJ7eyBMaW50dm9lZ01heCB9fVwiIFsobmdNb2RlbCldPVwiTGludHZvZWdcIj5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2xpZGVyLWJsb2NrXCIgKm5nSWY9XCIhSGlSZXNcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZXItYmxvY2stbmFtZVwiPlxyXG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LkFhbnRhbFN0ZW5lbikgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlci1ibG9jay1zbGlkZXJcIj5cclxuICAgICAgICAgICAgPG1hdC1zbGlkZXIgbWluPVwiMTAwXCIgbWF4PVwiMjAwMFwiIHN0ZXA9XCI1MFwiIHNob3dUaWNrTWFya3MgZGlzY3JldGUgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgbWF0U2xpZGVyVGh1bWIgWyhuZ01vZGVsKV09XCJBYW50YWxTdGVuZW5cIj5cclxuICAgICAgICAgICAgPC9tYXQtc2xpZGVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2xpZGVyLWJsb2NrLWFtb3VudFwiPlxyXG4gICAgICAgICAgICB7eyBBYW50YWxTdGVuZW4gfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGlnaC1yZXMtY2hlY2tib3gtZGl2XCI+XHJcbiAgICAgICAgICA8bWF0LWNoZWNrYm94IFsobmdNb2RlbCldPVwiSGlSZXNcIiBjbGFzcz1cImhpZ2gtcmVzLWNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuSG9nZVJlc29sdXRpZSkgfX1cclxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGlnaC1yZXMtY2hlY2tib3gtZGl2XCI+XHJcbiAgICAgICAgICA8bWF0LWNoZWNrYm94IFsobmdNb2RlbCldPVwiU2hhZGVcIiBjbGFzcz1cImhpZ2gtcmVzLWNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuU2hhZHV3KSB9fVxyXG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25yb3dcIj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIlNpbmdsZVN0b25lTW9kZSA9IGZhbHNlO1wiIGNsYXNzPVwibGluayB0ZXh0dXVyLWtub3BcIiAqbmdJZj1cIlNpbmdsZVN0b25lTW9kZVwiPlxyXG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5Lk1peCkgfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIlRleHR1dXJHZW5lcmVyZW4oKVwiIGNsYXNzPVwibGluayB0ZXh0dXVyLWtub3BcIiBbZGlzYWJsZWRdPVwiR2VuZXJhdGVEaXNhYmxlZCgpXCI+XHJcbiAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuVGV4dHV1ckdlbmVyZXJlbikgfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiU2hvd1RleHR1cmUoKVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLXJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8YSBocmVmPVwie3sgVGV4dHVyZVJlc3BvbnNlTW9kZWwucGF0cm9vblVSTCB9fVwiIHRhcmdldD1cIl9ibGFua1wiPlxyXG4gICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1hZ2UgaW1hZ2UtcGF0cm9vblwiIHNyYz1cInt7IFRleHR1cmVSZXNwb25zZU1vZGVsLnBhdHJvb25VUkwgfX1cIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8YSBocmVmPVwie3sgR2V0UGF0cm9vbkRvd25sb2FkVVJMKCkgfX1cIiB0YXJnZXQ9XCJfYmxhbmtcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjbGFzcz1cImxpbmsgdGV4dHV1ci1rbm9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5Eb3dubG9hZFRleHR1cmUpIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8YSBocmVmPVwie3sgR2V0QnVtcERvd25sb2FkVVJMKCkgfX1cIiB0YXJnZXQ9XCJfYmxhbmtcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjbGFzcz1cImxpbmsgdGV4dHV1ci1rbm9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5Eb3dubG9hZEJ1bXApIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -48,7 +48,7 @@ class BcbProductInstanceService {
48
48
  this.LoadingCustomFormInstance ||
49
49
  this.LoadingConfigurations ||
50
50
  this.SavingConfiguration ||
51
- this.FabrikantenService.Loading;
51
+ this.FabrikantenService.IsLoading();
52
52
  }
53
53
  DownloadPDF(languageId) {
54
54
  if (this.BCBProductInstanceViewModel != null) {
@@ -341,4 +341,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
341
341
  providedIn: 'root'
342
342
  }]
343
343
  }], ctorParameters: function () { return [{ type: i1.ConfiguratorApiClient }, { type: i1.FabrikantenApiClient }, { type: i1.FormApiClient }, { type: i2.AuthenticationService }, { type: i3.FabrikantenService }, { type: i4.SVGService }]; } });
344
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmNicHJvZHVjdGluc3RhbmNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL3NlcnZpY2VzL2JjYnByb2R1Y3RpbnN0YW5jZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBTTlELE9BQU8sRUFHTCw0QkFBNEIsRUFDNUIseUJBQXlCLEVBTXpCLDZCQUE2QixFQUM3QixvQ0FBb0MsRUFDcEMsZ0NBQWdDLEVBRWhDLDJCQUEyQixFQUMzQixRQUFRLEVBQ1IsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4Qiw2QkFBNkIsRUFFN0Isa0JBQWtCLEVBQ25CLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztBQUVsQyxNQUdhLHlCQUF5QjtJQW9CMUI7SUFDQTtJQUNBO0lBQ0Q7SUFDQTtJQUNBO0lBdkJGLGlCQUFpQixHQUFXLENBQUMsQ0FBQztJQUU3QixjQUFjLEdBQVksS0FBSyxDQUFDO0lBQ2hDLHlCQUF5QixHQUFZLEtBQUssQ0FBQztJQUMzQyxXQUFXLEdBQVksSUFBSSxDQUFDO0lBQzVCLGlCQUFpQixHQUFZLElBQUksQ0FBQztJQUNsQyxtQkFBbUIsR0FBWSxLQUFLLENBQUM7SUFDckMseUJBQXlCLEdBQVksS0FBSyxDQUFDO0lBQzNDLHFCQUFxQixHQUFZLElBQUksQ0FBQztJQUN0QyxtQkFBbUIsR0FBWSxLQUFLLENBQUM7SUFFdEMsZ0JBQWdCLEdBQTRCLElBQUksQ0FBQztJQUNqRCx1QkFBdUIsR0FBbUMsSUFBSSxDQUFDO0lBQy9ELHdCQUF3QixHQUFvQyxJQUFJLENBQUM7SUFDakUsOEJBQThCLEdBQW9DLElBQUksQ0FBQztJQUN2RSwyQkFBMkIsR0FBdUMsSUFBSSxDQUFDO0lBRTlFLFlBQ1UscUJBQTRDLEVBQzVDLG9CQUEwQyxFQUMxQyxhQUE0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QyxnQkFBZ0IsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsSUFBSSxTQUFTLEVBQUU7Z0JBQ3ZGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDckUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO3dCQUMzRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDakUsTUFBTTtxQkFDUDtpQkFDRjthQUNGO1lBRUQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztRQUNyQyxDQUFDLEVBQUUsQ0FBQyxLQUFlLEVBQUUsRUFBRTtZQUNyQixLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUVyQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0FyYVUseUJBQXlCOzRHQUF6Qix5QkFBeUIsY0FGeEIsTUFBTTs7U0FFUCx5QkFBeUI7NEZBQXpCLHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICcuL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmFicmlrYW50ZW5TZXJ2aWNlIH0gZnJvbSAnLi9mYWJyaWthbnRlbi5zZXJ2aWNlJztcbmltcG9ydCB7IFNWR1NlcnZpY2UgfSBmcm9tICcuL3N2Zy5zZXJ2aWNlJztcblxuaW1wb3J0IHtcbiAgRmFicmlrYW50ZW5Gb3JtVmlld01vZGVsLFxyXG4gIFByb2plY3RWaWV3TW9kZWwsXHJcbiAgQ3JlYXRlTmV3UHJvamVjdFJlcXVlc3RNb2RlbCxcclxuICBEZWxldGVQcm9qZWN0UmVxdWVzdE1vZGVsLFxyXG4gIEJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbCxcclxuICBDb25maWd1cmF0b3JBcGlDbGllbnQsXHJcbiAgRm9ybUFwaUNsaWVudCxcclxuICBGYWJyaWthbnRlbkFwaUNsaWVudCxcclxuICBDb25maWd1cmF0aW9uc1ZpZXdNb2RlbCxcclxuICBHZXRDb25maWd1cmF0aW9uc1JlcXVlc3RNb2RlbCxcclxuICBEZWxldGVCQ0JQcm9kdWN0SW5zdGFuY2VSZXF1ZXN0TW9kZWwsXHJcbiAgRmFicmlrYW50ZW5DcmVhdGVJbnN0YW5jZVJlcXVlc3QsXHJcbiAgRmFicmlrYW50ZW5JbnN0YW5jZVZpZXdNb2RlbCxcclxuICBGYWJyaWthbnRlbkZvcm1SZXF1ZXN0TW9kZWwsXHJcbiAgRm9ybVR5cGUsXHJcbiAgU2F2ZVByb2plY3RSZXF1ZXN0TW9kZWwsXHJcbiAgRm9ybUluc3RhbmNlUmVxdWVzdE1vZGVsLFxyXG4gIENyZWF0ZUJDQlByb2R1Y3RJbnN0YW5jZU1vZGVsLFxyXG4gIEZvcm1JbnN0YW5jZVZpZXdNb2RlbCxcclxuICBMb2dpblJlc3BvbnNlTW9kZWxcclxufSBmcm9tICcuLi9zd2FnZ2VyL1N3YWdnZXJDbGllbnQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBCY2JQcm9kdWN0SW5zdGFuY2VTZXJ2aWNlIHtcblxuICBwdWJsaWMgU2VsZWN0ZWRQcm9kdWN0SWQ6IG51bWJlciA9IDA7XG5cbiAgcHJpdmF0ZSBMb2FkaW5nUHJvamVjdDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIExvYWRpbmdCQ0JQcm9kdWN0SW5zdGFuY2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBMb2FkaW5nRm9ybTogYm9vbGVhbiA9IHRydWU7XG4gIHByaXZhdGUgTG9hZGluZ0N1c3RvbUZvcm06IGJvb2xlYW4gPSB0cnVlO1xuICBwcml2YXRlIExvYWRpbmdGb3JtSW5zdGFuY2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBMb2FkaW5nQ3VzdG9tRm9ybUluc3RhbmNlOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgTG9hZGluZ0NvbmZpZ3VyYXRpb25zOiBib29sZWFuID0gdHJ1ZTtcbiAgcHJpdmF0ZSBTYXZpbmdDb25maWd1cmF0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIFByb2plY3RWaWV3TW9kZWw6IFByb2plY3RWaWV3TW9kZWwgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIENvbmZpZ3VyYXRpb25zVmlld01vZGVsOiBDb25maWd1cmF0aW9uc1ZpZXdNb2RlbCB8IG51bGwgPSBudWxsO1xuICBwdWJsaWMgRmFicmlrYW50ZW5Gb3JtVmlld01vZGVsOiBGYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIEZhYnJpa2FudGVuQ3VzdG9tRm9ybVZpZXdNb2RlbDogRmFicmlrYW50ZW5Gb3JtVmlld01vZGVsIHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBCQ0JQcm9kdWN0SW5zdGFuY2VWaWV3TW9kZWw6IEJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbCB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgQ29uZmlndXJhdG9yQXBpQ2xpZW50OiBDb25maWd1cmF0b3JBcGlDbGllbnQsXG4gICAgcHJpdmF0ZSBGYWJyaWthbnRlbkFwaUNsaWVudDogRmFicmlrYW50ZW5BcGlDbGllbnQsXG4gICAgcHJpdmF0ZSBGb3JtQXBpQ2xpZW50OiBGb3JtQXBpQ2xpZW50LFxuICAgIHB1YmxpYyBhdXRoZW50aWNhdGlvblNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSxcbiAgICBwdWJsaWMgRmFicmlrYW50ZW5TZXJ2aWNlOiBGYWJyaWthbnRlblNlcnZpY2UsXG4gICAgcHVibGljIFNWR1NlcnZpY2U6IFNWR1NlcnZpY2VcbiAgKSB7IH1cblxuICBwdWJsaWMgSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLkxvYWRDb25maWd1cmF0aW9ucygpO1xyXG4gICAgdGhpcy5Mb2FkRm9ybSgpO1xyXG4gICAgdGhpcy5Mb2FkQ3VzdG9tRm9ybSgpO1xyXG4gIH1cblxuICBwdWJsaWMgSXNMb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLkxvYWRpbmdQcm9qZWN0IHx8XHJcbiAgICAgIHRoaXMuTG9hZGluZ0JDQlByb2R1Y3RJbnN0YW5jZSB8fFxyXG4gICAgICB0aGlzLkxvYWRpbmdGb3JtIHx8XHJcbiAgICAgIHRoaXMuTG9hZGluZ0N1c3RvbUZvcm0gfHxcclxuICAgICAgdGhpcy5Mb2FkaW5nRm9ybUluc3RhbmNlIHx8XHJcbiAgICAgIHRoaXMuTG9hZGluZ0N1c3RvbUZvcm1JbnN0YW5jZSB8fFxyXG4gICAgICB0aGlzLkxvYWRpbmdDb25maWd1cmF0aW9ucyB8fFxyXG4gICAgICB0aGlzLlNhdmluZ0NvbmZpZ3VyYXRpb24gfHxcclxuICAgICAgdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuTG9hZGluZztcclxuICB9XG5cbiAgcHVibGljIERvd25sb2FkUERGKGxhbmd1YWdlSWQ6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLkJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbCAhPSBudWxsKSB7XG4gICAgICB2YXIgdXJsID0gXCIvRG93bmxvYWQvQ3JlYXRlSW5zdGFuY2VQREY/cExhbmd1YWdlSWQ9XCIgKyBsYW5ndWFnZUlkO1xyXG4gICAgICB1cmwgKz0gXCImcFBERlRlbXBsYXRlSWQ9MVwiO1xyXG4gICAgICB1cmwgKz0gXCImcEJDQkluc3RhbmNlSWQ9XCIgKyB0aGlzLkJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbC5pZDtcclxuXHJcbiAgICAgIHdpbmRvdy5vcGVuKHVybCwgXCJfYmxhbmtcIik7XHJcbiAgICB9XHJcbiAgfVxuXG4gIHB1YmxpYyBTYXZlQ29uZmlndXJhdGlvbihDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAgIHRoaXMuU2F2ZUN1c3RvbUZvcm0oKTtcclxuXHJcbiAgICBpZiAodGhpcy5Qcm9qZWN0Vmlld01vZGVsICE9IG51bGwgJiYgdGhpcy5CQ0JQcm9kdWN0SW5zdGFuY2VWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLlNhdmluZ0NvbmZpZ3VyYXRpb24gPSB0cnVlO1xyXG4gICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICB2YXIgcmVxdWVzdCA9IG5ldyBGYWJyaWthbnRlbkNyZWF0ZUluc3RhbmNlUmVxdWVzdCgpO1xyXG5cclxuICAgICAgcmVxdWVzdC5zZXNzaW9uSWQgPSB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQ7XHJcbiAgICAgIHJlcXVlc3QucHJvamVjdElkID0gdGhpcy5Qcm9qZWN0Vmlld01vZGVsLmlkO1xyXG4gICAgICByZXF1ZXN0LnVuaXF1ZUNvZGUgPSB0aGlzLkJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbC51bmlxdWVDb2RlO1xyXG5cclxuICAgICAgdGhpcy5GYWJyaWthbnRlbkFwaUNsaWVudC5jcmVhdGVJbnN0YW5jZShyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBGYWJyaWthbnRlbkluc3RhbmNlVmlld01vZGVsKSA9PiB7XHJcbiAgICAgICAgdGhpcy5TYXZpbmdDb25maWd1cmF0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIHRoaXMuU2F2aW5nQ29uZmlndXJhdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxuXG4gIHB1YmxpYyBTZWxlY3RQcm9qZWN0KHByb2plY3Q6IFByb2plY3RWaWV3TW9kZWwpOiB2b2lkIHtcbiAgICB0aGlzLlByb2plY3RWaWV3TW9kZWwgPSBwcm9qZWN0O1xuICAgIHRoaXMuTG9hZEZvcm1JbnN0YW5jZSgpO1xuICB9XG5cbiAgcHVibGljIFVuc2VsZWN0UHJvamVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLlByb2plY3RWaWV3TW9kZWwgPSBudWxsO1xuICB9XG5cbiAgcHVibGljIERlbGV0ZVByb2plY3QocHJvamVjdDogUHJvamVjdFZpZXdNb2RlbCk6IHZvaWQge1xuICAgIGlmIChjb25maXJtKFwiV2VldCBqZSBoZXQgemVrZXI/XCIpKSB7XG4gICAgICB0aGlzLkxvYWRpbmdQcm9qZWN0ID0gdHJ1ZTtcblxuICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgRGVsZXRlUHJvamVjdFJlcXVlc3RNb2RlbCgpO1xuXG4gICAgICByZXF1ZXN0LmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XG4gICAgICByZXF1ZXN0LnByb2plY3RJZCA9IHByb2plY3QuaWQ7XG5cbiAgICAgIHRoaXMuQ29uZmlndXJhdG9yQXBpQ2xpZW50LmRlbGV0ZVByb2plY3QocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5Mb2FkQ29uZmlndXJhdGlvbnMoKTtcbiAgICAgICAgdGhpcy5Mb2FkaW5nUHJvamVjdCA9IGZhbHNlO1xuICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xuICAgICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XG5cbiAgICAgICAgdGhpcy5Mb2FkaW5nUHJvamVjdCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIFNhdmVQcm9qZWN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLlByb2plY3RWaWV3TW9kZWwgIT0gbnVsbCkge1xuICAgICAgdGhpcy5Mb2FkaW5nUHJvamVjdCA9IHRydWU7XG5cbiAgICAgIHZhciBtb2RlbCA9IG5ldyBTYXZlUHJvamVjdFJlcXVlc3RNb2RlbCgpO1xuXG4gICAgICBtb2RlbC5sb2dpblJlc3BvbnNlTW9kZWwgPSBuZXcgTG9naW5SZXNwb25zZU1vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpO1xuICAgICAgbW9kZWwucHJvamVjdFZpZXdNb2RlbCA9IHRoaXMuUHJvamVjdFZpZXdNb2RlbDtcblxuICAgICAgdGhpcy5Db25maWd1cmF0b3JBcGlDbGllbnQuc2F2ZVByb2plY3QobW9kZWwpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nUHJvamVjdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuU2F2ZUZvcm0oKTtcclxuICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nUHJvamVjdCA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XG5cbiAgcHVibGljIENyZWF0ZVByb2plY3QoKTogdm9pZCB7XG4gICAgdGhpcy5Mb2FkaW5nUHJvamVjdCA9IHRydWU7XG5cbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBDcmVhdGVOZXdQcm9qZWN0UmVxdWVzdE1vZGVsKCk7XG5cbiAgICByZXF1ZXN0LmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XG5cbiAgICB0aGlzLkNvbmZpZ3VyYXRvckFwaUNsaWVudC5jcmVhdGVOZXdQcm9qZWN0KHJlcXVlc3QpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLkxvYWRpbmdQcm9qZWN0ID0gZmFsc2U7XG4gICAgICB0aGlzLkxvYWRDb25maWd1cmF0aW9ucygpO1xuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcbiAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcblxuICAgICAgdGhpcy5Mb2FkaW5nUHJvamVjdCA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIFNlbGVjdEJDQlByb2R1Y3RJbnN0YW5jZShpbnN0YW5jZTogQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsLCBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcbiAgICB0aGlzLkJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbCA9IGluc3RhbmNlO1xuICAgIHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLk9wZW4oaW5zdGFuY2UudW5pcXVlQ29kZSArIFwiXCIsIENoYW5nZURldGVjdG9yUmVmKTtcbiAgICB0aGlzLkxvYWRDdXN0b21Gb3JtSW5zdGFuY2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBVbnNlbGVjdEJDQlByb2R1Y3RJbnN0YW5jZSgpOiB2b2lkIHtcbiAgICB0aGlzLkJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbCA9IG51bGw7XHJcbiAgICB0aGlzLlNWR1NlcnZpY2UuQ2xlYXJDYWNoZSgpO1xyXG4gIH1cblxuICBwdWJsaWMgRGVsZXRlQkNCUHJvZHVjdEluc3RhbmNlKGluc3RhbmNlOiBCQ0JQcm9kdWN0SW5zdGFuY2VWaWV3TW9kZWwpOiB2b2lkIHtcbiAgICBpZiAoY29uZmlybShcIldlZXQgamUgaGV0IHpla2VyP1wiKSkge1xuXG4gICAgICB0aGlzLkxvYWRpbmdCQ0JQcm9kdWN0SW5zdGFuY2UgPSB0cnVlO1xuXHJcbiAgICAgIHZhciByZXF1ZXN0ID0gbmV3IERlbGV0ZUJDQlByb2R1Y3RJbnN0YW5jZVJlcXVlc3RNb2RlbCgpO1xyXG5cclxuICAgICAgcmVxdWVzdC5sb2dpblJlc3BvbnNlTW9kZWwgPSBuZXcgTG9naW5SZXNwb25zZU1vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpO1xyXG4gICAgICByZXF1ZXN0LmJjYkluc3RhbmNlSWQgPSBpbnN0YW5jZS5pZDtcclxuXHJcbiAgICAgIHRoaXMuQ29uZmlndXJhdG9yQXBpQ2xpZW50LmRlbGV0ZUluc3RhbmNlKHJlcXVlc3QpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuUHJvamVjdFZpZXdNb2RlbD8uaW5zdGFuY2VzICE9IG51bGwpIHtcclxuICAgICAgICAgIHZhciBpbmRleCA9IDA7XHJcblxyXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLlByb2plY3RWaWV3TW9kZWwuaW5zdGFuY2VzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLlByb2plY3RWaWV3TW9kZWwuaW5zdGFuY2VzW2ldLmlkID09IGluc3RhbmNlLmlkKSB7XHJcbiAgICAgICAgICAgICAgaW5kZXggPSBpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5Qcm9qZWN0Vmlld01vZGVsLmluc3RhbmNlcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cclxuICAgICAgICAgIHRoaXMuTG9hZGluZ0JDQlByb2R1Y3RJbnN0YW5jZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxuXG4gIHB1YmxpYyBDcmVhdGVCQ0JQcm9kdWN0SW5zdGFuY2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuUHJvamVjdFZpZXdNb2RlbCAhPSBudWxsKSB7XG4gICAgICBpZiAoY29uZmlybShcIldlZXQgamUgaGV0IHpla2VyP1wiKSkge1xuXG4gICAgICAgIHRoaXMuTG9hZGluZ0JDQlByb2R1Y3RJbnN0YW5jZSA9IHRydWU7XG5cclxuICAgICAgICB2YXIgcmVxdWVzdCA9IG5ldyBDcmVhdGVCQ0JQcm9kdWN0SW5zdGFuY2VNb2RlbCgpO1xyXG5cclxuICAgICAgICByZXF1ZXN0LmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XHJcbiAgICAgICAgcmVxdWVzdC5wcm9kdWN0SWQgPSB0aGlzLlNlbGVjdGVkUHJvZHVjdElkO1xyXG4gICAgICAgIHJlcXVlc3QucHJvamVjdElkID0gdGhpcy5Qcm9qZWN0Vmlld01vZGVsLmlkO1xyXG5cclxuICAgICAgICB0aGlzLkNvbmZpZ3VyYXRvckFwaUNsaWVudC5jcmVhdGVCQ0JQcm9kdWN0SW5zdGFuY2UocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuTG9hZGluZ0JDQlByb2R1Y3RJbnN0YW5jZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5Mb2FkQ29uZmlndXJhdGlvbnMoKTtcclxuICAgICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XG5cbiAgcHVibGljIFNhdmVGb3JtKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbCAhPSBudWxsICYmIHRoaXMuUHJvamVjdFZpZXdNb2RlbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLkxvYWRpbmdGb3JtSW5zdGFuY2UgPSB0cnVlO1xuXG4gICAgICB0aGlzLkZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbC5jdXN0b21Db25uZWN0SWQgPSB0aGlzLlByb2plY3RWaWV3TW9kZWwuaWQ7XG5cbiAgICAgIHRoaXMuRm9ybUFwaUNsaWVudC5zYXZlRm9ybSh0aGlzLkZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLkxvYWRpbmdGb3JtSW5zdGFuY2UgPSBmYWxzZTtcclxuICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nRm9ybUluc3RhbmNlID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cblxuICBwcml2YXRlIExvYWRGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuTG9hZGluZ0Zvcm0gPSB0cnVlO1xuXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgRmFicmlrYW50ZW5Gb3JtUmVxdWVzdE1vZGVsKCk7XG5cbiAgICByZXF1ZXN0LmZvcm1UeXBlID0gRm9ybVR5cGUuUHJvamVjdEZvcm07XG5cbiAgICB0aGlzLkZvcm1BcGlDbGllbnQuZ2V0Rm9ybShyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBGYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwpID0+IHtcclxuICAgICAgdGhpcy5GYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwgPSBtb2RlbDtcclxuICAgICAgdGhpcy5Mb2FkaW5nRm9ybSA9IGZhbHNlO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmdGb3JtID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XG5cbiAgcHJpdmF0ZSBMb2FkRm9ybUluc3RhbmNlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbCAhPSBudWxsICYmIHRoaXMuUHJvamVjdFZpZXdNb2RlbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLkxvYWRpbmdGb3JtSW5zdGFuY2UgPSB0cnVlO1xuXG4gICAgICB2YXIgcmVxdWVzdCA9IG5ldyBGb3JtSW5zdGFuY2VSZXF1ZXN0TW9kZWwoKTtcblxuICAgICAgcmVxdWVzdC5jdXN0b21Db25uZWN0SWQgPSB0aGlzLlByb2plY3RWaWV3TW9kZWwuaWQ7XG4gICAgICByZXF1ZXN0LmZvcm1JZCA9IHRoaXMuRmFicmlrYW50ZW5Gb3JtVmlld01vZGVsLmlkO1xuICAgICAgcmVxdWVzdC5sb2dpblJlc3BvbnNlTW9kZWwgPSBuZXcgTG9naW5SZXNwb25zZU1vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpO1xuXG4gICAgICB0aGlzLkZvcm1BcGlDbGllbnQuZ2V0Rm9ybUluc3RhbmNlKHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IEZvcm1JbnN0YW5jZVZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbCAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLkZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbC5mb3JtSW5zdGFuY2VJZCA9IG1vZGVsLmlkO1xyXG5cclxuICAgICAgICAgIHZhciBpbnN0YW5jZXMgPSBtb2RlbC5mb3JtSW5wdXRJbnN0YW5jZXM7XHJcblxyXG4gICAgICAgICAgaWYgKGluc3RhbmNlcyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5zdGFuY2VzLmxlbmd0aDsgaSsrKSB7XHJcblxyXG4gICAgICAgICAgICAgIHZhciBmb3JtY2F0cyA9IHRoaXMuRmFicmlrYW50ZW5Gb3JtVmlld01vZGVsLmZvcm1DYXRlZ29yaWVzO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoZm9ybWNhdHMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBmb3JtY2F0cy5sZW5ndGg7IGorKykge1xyXG5cclxuICAgICAgICAgICAgICAgICAgdmFyIHJvd3MgPSBmb3JtY2F0c1tqXS5yb3dzO1xyXG5cclxuICAgICAgICAgICAgICAgICAgaWYgKHJvd3MgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgcm93cy5sZW5ndGg7IGsrKykge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIHZhciBpbnB1dHMgPSByb3dzW2tdLmlucHV0cztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRzICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IDA7IGwgPCBpbnB1dHMubGVuZ3RoOyBsKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRzW2xdLmlkID09IGluc3RhbmNlc1tpXS5mb3JtSW5wdXRJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRzW2xdLnZhbHVlID0gaW5zdGFuY2VzW2ldLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuTG9hZGluZ0Zvcm1JbnN0YW5jZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nRm9ybUluc3RhbmNlID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8vYWxlcnQoXCJlcnJvclwiKTtcclxuICAgIH1cclxuICB9XG5cbiAgcHVibGljIFNhdmVDdXN0b21Gb3JtKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuQ3VzdG9tRm9ybVZpZXdNb2RlbCAhPSBudWxsICYmIHRoaXMuUHJvamVjdFZpZXdNb2RlbCAhPSBudWxsICYmIHRoaXMuQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsICE9IG51bGwpIHtcbiAgICAgIHRoaXMuTG9hZGluZ0Zvcm1JbnN0YW5jZSA9IHRydWU7XG5cbiAgICAgIHRoaXMuRmFicmlrYW50ZW5DdXN0b21Gb3JtVmlld01vZGVsLmN1c3RvbUNvbm5lY3RJZCA9IHRoaXMuQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsLmlkO1xuXG4gICAgICB0aGlzLkZvcm1BcGlDbGllbnQuc2F2ZUZvcm0odGhpcy5GYWJyaWthbnRlbkN1c3RvbUZvcm1WaWV3TW9kZWwpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nRm9ybUluc3RhbmNlID0gZmFsc2U7XHJcbiAgICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcblxyXG4gICAgICAgIHRoaXMuTG9hZGluZ0Zvcm1JbnN0YW5jZSA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XG5cbiAgcHJpdmF0ZSBMb2FkQ3VzdG9tRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLkxvYWRpbmdDdXN0b21Gb3JtID0gdHJ1ZTtcblxuICAgIHZhciByZXF1ZXN0ID0gbmV3IEZhYnJpa2FudGVuRm9ybVJlcXVlc3RNb2RlbCgpO1xuXG4gICAgcmVxdWVzdC5mb3JtVHlwZSA9IEZvcm1UeXBlLkN1c3RvbUZvcm07XG5cbiAgICB0aGlzLkZvcm1BcGlDbGllbnQuZ2V0Rm9ybShyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBGYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwpID0+IHtcclxuICAgICAgdGhpcy5GYWJyaWthbnRlbkN1c3RvbUZvcm1WaWV3TW9kZWwgPSBtb2RlbDtcclxuICAgICAgdGhpcy5Mb2FkaW5nQ3VzdG9tRm9ybSA9IGZhbHNlO1xyXG5cclxuICAgICAgdGhpcy5Mb2FkQ3VzdG9tRm9ybUluc3RhbmNlKCk7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZ0Zvcm0gPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cblxuICBwcml2YXRlIExvYWRDdXN0b21Gb3JtSW5zdGFuY2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5DdXN0b21Gb3JtVmlld01vZGVsICE9IG51bGwgJiYgdGhpcy5Qcm9qZWN0Vmlld01vZGVsICE9IG51bGwgJiYgdGhpcy5CQ0JQcm9kdWN0SW5zdGFuY2VWaWV3TW9kZWwgIT0gbnVsbCkge1xuICAgICAgdGhpcy5Mb2FkaW5nQ3VzdG9tRm9ybUluc3RhbmNlID0gdHJ1ZTtcblxuICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgRm9ybUluc3RhbmNlUmVxdWVzdE1vZGVsKCk7XG5cbiAgICAgIHJlcXVlc3QuY3VzdG9tQ29ubmVjdElkID0gdGhpcy5CQ0JQcm9kdWN0SW5zdGFuY2VWaWV3TW9kZWwuaWQ7XG4gICAgICByZXF1ZXN0LmZvcm1JZCA9IHRoaXMuRmFicmlrYW50ZW5DdXN0b21Gb3JtVmlld01vZGVsLmlkO1xuICAgICAgcmVxdWVzdC5sb2dpblJlc3BvbnNlTW9kZWwgPSBuZXcgTG9naW5SZXNwb25zZU1vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpO1xuXG4gICAgICB0aGlzLkZvcm1BcGlDbGllbnQuZ2V0Rm9ybUluc3RhbmNlKHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IEZvcm1JbnN0YW5jZVZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuQ3VzdG9tRm9ybVZpZXdNb2RlbCAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLkZhYnJpa2FudGVuQ3VzdG9tRm9ybVZpZXdNb2RlbC5mb3JtSW5zdGFuY2VJZCA9IG1vZGVsLmlkO1xyXG5cclxuICAgICAgICAgIHZhciBpbnN0YW5jZXMgPSBtb2RlbC5mb3JtSW5wdXRJbnN0YW5jZXM7XHJcblxyXG4gICAgICAgICAgaWYgKGluc3RhbmNlcyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5zdGFuY2VzLmxlbmd0aDsgaSsrKSB7XHJcblxyXG4gICAgICAgICAgICAgIHZhciBmb3JtY2F0cyA9IHRoaXMuRmFicmlrYW50ZW5DdXN0b21Gb3JtVmlld01vZGVsLmZvcm1DYXRlZ29yaWVzO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoZm9ybWNhdHMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBmb3JtY2F0cy5sZW5ndGg7IGorKykge1xyXG5cclxuICAgICAgICAgICAgICAgICAgdmFyIHJvd3MgPSBmb3JtY2F0c1tqXS5yb3dzO1xyXG5cclxuICAgICAgICAgICAgICAgICAgaWYgKHJvd3MgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgcm93cy5sZW5ndGg7IGsrKykge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIHZhciBpbnB1dHMgPSByb3dzW2tdLmlucHV0cztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRzICE9IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGwgPSAwOyBsIDwgaW5wdXRzLmxlbmd0aDsgbCsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0c1tsXS5pZCA9PSBpbnN0YW5jZXNbaV0uZm9ybUlucHV0SWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0c1tsXS52YWx1ZSA9IGluc3RhbmNlc1tpXS52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmdDdXN0b21Gb3JtSW5zdGFuY2UgPSBmYWxzZTtcclxuICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nQ3VzdG9tRm9ybUluc3RhbmNlID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cblxuICBwcml2YXRlIExvYWRDb25maWd1cmF0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLkxvYWRpbmdDb25maWd1cmF0aW9ucyA9IHRydWU7XG5cbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBHZXRDb25maWd1cmF0aW9uc1JlcXVlc3RNb2RlbCgpO1xuXG4gICAgcmVxdWVzdC5sb2dpblJlc3BvbnNlTW9kZWwgPSBuZXcgTG9naW5SZXNwb25zZU1vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpO1xuXG4gICAgdGhpcy5Db25maWd1cmF0b3JBcGlDbGllbnQuZ2V0Q29uZmlndXJhdGlvbnMocmVxdWVzdCkuc3Vic2NyaWJlKChtb2RlbDogQ29uZmlndXJhdGlvbnNWaWV3TW9kZWwpID0+IHtcbiAgICAgIHRoaXMuQ29uZmlndXJhdGlvbnNWaWV3TW9kZWwgPSBtb2RlbDtcblxuICAgICAgaWYgKHRoaXMuU2VsZWN0ZWRQcm9kdWN0SWQgPT0gMCAmJiB0aGlzLkNvbmZpZ3VyYXRpb25zVmlld01vZGVsLnByb2R1Y3RzICE9IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLlNlbGVjdGVkUHJvZHVjdElkID0gdGhpcy5Db25maWd1cmF0aW9uc1ZpZXdNb2RlbC5wcm9kdWN0c1swXS5pZDtcclxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5Qcm9qZWN0Vmlld01vZGVsICE9IG51bGwgJiYgdGhpcy5Db25maWd1cmF0aW9uc1ZpZXdNb2RlbC5wcm9qZWN0cyAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLkNvbmZpZ3VyYXRpb25zVmlld01vZGVsLnByb2plY3RzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5Qcm9qZWN0Vmlld01vZGVsLmlkID09IHRoaXMuQ29uZmlndXJhdGlvbnNWaWV3TW9kZWwucHJvamVjdHNbaV0uaWQpIHtcclxuICAgICAgICAgICAgdGhpcy5Qcm9qZWN0Vmlld01vZGVsID0gdGhpcy5Db25maWd1cmF0aW9uc1ZpZXdNb2RlbC5wcm9qZWN0c1tpXTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XG5cbiAgICAgIHRoaXMuTG9hZGluZ0NvbmZpZ3VyYXRpb25zID0gZmFsc2U7XG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xuICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xuXG4gICAgICB0aGlzLkxvYWRpbmdDb25maWd1cmF0aW9ucyA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
344
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmNicHJvZHVjdGluc3RhbmNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL3NlcnZpY2VzL2JjYnByb2R1Y3RpbnN0YW5jZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBTTlELE9BQU8sRUFHTCw0QkFBNEIsRUFDNUIseUJBQXlCLEVBTXpCLDZCQUE2QixFQUM3QixvQ0FBb0MsRUFDcEMsZ0NBQWdDLEVBRWhDLDJCQUEyQixFQUMzQixRQUFRLEVBQ1IsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4Qiw2QkFBNkIsRUFFN0Isa0JBQWtCLEVBQ25CLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztBQUVsQyxNQUdhLHlCQUF5QjtJQW9CMUI7SUFDQTtJQUNBO0lBQ0Q7SUFDQTtJQUNBO0lBdkJGLGlCQUFpQixHQUFXLENBQUMsQ0FBQztJQUU3QixjQUFjLEdBQVksS0FBSyxDQUFDO0lBQ2hDLHlCQUF5QixHQUFZLEtBQUssQ0FBQztJQUMzQyxXQUFXLEdBQVksSUFBSSxDQUFDO0lBQzVCLGlCQUFpQixHQUFZLElBQUksQ0FBQztJQUNsQyxtQkFBbUIsR0FBWSxLQUFLLENBQUM7SUFDckMseUJBQXlCLEdBQVksS0FBSyxDQUFDO0lBQzNDLHFCQUFxQixHQUFZLElBQUksQ0FBQztJQUN0QyxtQkFBbUIsR0FBWSxLQUFLLENBQUM7SUFFdEMsZ0JBQWdCLEdBQTRCLElBQUksQ0FBQztJQUNqRCx1QkFBdUIsR0FBbUMsSUFBSSxDQUFDO0lBQy9ELHdCQUF3QixHQUFvQyxJQUFJLENBQUM7SUFDakUsOEJBQThCLEdBQW9DLElBQUksQ0FBQztJQUN2RSwyQkFBMkIsR0FBdUMsSUFBSSxDQUFDO0lBRTlFLFlBQ1UscUJBQTRDLEVBQzVDLG9CQUEwQyxFQUMxQyxhQUE0QixFQUM3QixxQkFBNEMsRUFDNUMsa0JBQXNDLEVBQ3RDLFVBQXNCO1FBTHJCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM3QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUMzQixDQUFDO0lBRUUsSUFBSTtRQUNULElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQyxjQUFjO1lBQ3hCLElBQUksQ0FBQyx5QkFBeUI7WUFDOUIsSUFBSSxDQUFDLFdBQVc7WUFDaEIsSUFBSSxDQUFDLGlCQUFpQjtZQUN0QixJQUFJLENBQUMsbUJBQW1CO1lBQ3hCLElBQUksQ0FBQyx5QkFBeUI7WUFDOUIsSUFBSSxDQUFDLHFCQUFxQjtZQUMxQixJQUFJLENBQUMsbUJBQW1CO1lBQ3hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRU0sV0FBVyxDQUFDLFVBQWtCO1FBQ25DLElBQUksSUFBSSxDQUFDLDJCQUEyQixJQUFJLElBQUksRUFBRTtZQUM1QyxJQUFJLEdBQUcsR0FBRywwQ0FBMEMsR0FBRyxVQUFVLENBQUM7WUFDbEUsR0FBRyxJQUFJLG1CQUFtQixDQUFDO1lBQzNCLEdBQUcsSUFBSSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsRUFBRSxDQUFDO1lBRWhFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVNLGlCQUFpQixDQUFDLGlCQUFvQztRQUMzRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFdEIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQywyQkFBMkIsSUFBSSxJQUFJLEVBQUU7WUFDN0UsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztZQUNoQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUVsQyxJQUFJLE9BQU8sR0FBRyxJQUFJLGdDQUFnQyxFQUFFLENBQUM7WUFFckQsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDO1lBQzNFLE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztZQUM3QyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxVQUFVLENBQUM7WUFFakUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFtQyxFQUFFLEVBQUU7Z0JBQ2xHLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7Z0JBQ2pDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3BDLENBQUMsRUFBRSxDQUFDLEtBQWUsRUFBRSxFQUFFO2dCQUNyQixLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztnQkFDckMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztnQkFDakMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDcEMsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFTSxhQUFhLENBQUMsT0FBeUI7UUFDNUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQztRQUNoQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU0sZUFBZTtRQUNwQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFTSxhQUFhLENBQUMsT0FBeUI7UUFDNUMsSUFBSSxPQUFPLENBQUMsb0JBQW9CLENBQUMsRUFBRTtZQUNqQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztZQUUzQixJQUFJLE9BQU8sR0FBRyxJQUFJLHlCQUF5QixFQUFFLENBQUM7WUFFOUMsT0FBTyxDQUFDLGtCQUFrQixHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDakcsT0FBTyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBRS9CLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDL0QsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBQzlCLENBQUMsRUFBRSxDQUFDLEtBQWUsRUFBRSxFQUFFO2dCQUNyQixLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztnQkFFckMsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDOUIsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksRUFBRTtZQUNqQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztZQUUzQixJQUFJLEtBQUssR0FBRyxJQUFJLHVCQUF1QixFQUFFLENBQUM7WUFFMUMsS0FBSyxDQUFDLGtCQUFrQixHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDL0YsS0FBSyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUUvQyxJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQzNELElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO2dCQUM1QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsQ0FBQyxFQUFFLENBQUMsS0FBZSxFQUFFLEVBQUU7Z0JBQ3JCLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO2dCQUVyQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztZQUM5QixDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVNLGFBQWE7UUFDbEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFFM0IsSUFBSSxPQUFPLEdBQUcsSUFBSSw0QkFBNEIsRUFBRSxDQUFDO1FBRWpELE9BQU8sQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRWpHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2xFLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBQzVCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVCLENBQUMsRUFBRSxDQUFDLEtBQWUsRUFBRSxFQUFFO1lBQ3JCLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1lBRXJDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLHdCQUF3QixDQUFDLFFBQXFDLEVBQUUsaUJBQW9DO1FBQ3pHLElBQUksQ0FBQywyQkFBMkIsR0FBRyxRQUFRLENBQUM7UUFDNUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSwwQkFBMEI7UUFDL0IsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQztRQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTSx3QkFBd0IsQ0FBQyxRQUFxQztRQUNuRSxJQUFJLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFO1lBRWpDLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7WUFFdEMsSUFBSSxPQUFPLEdBQUcsSUFBSSxvQ0FBb0MsRUFBRSxDQUFDO1lBRXpELE9BQU8sQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ2pHLE9BQU8sQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUVwQyxJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2hFLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLFNBQVMsSUFBSSxJQUFJLEVBQUU7b0JBQzVDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztvQkFFZCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7d0JBQy9ELElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRTs0QkFDeEQsS0FBSyxHQUFHLENBQUMsQ0FBQzt5QkFDWDtxQkFDRjtvQkFFRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBRWpELElBQUksQ0FBQyx5QkFBeUIsR0FBRyxLQUFLLENBQUM7aUJBQ3hDO1lBQ0gsQ0FBQyxFQUFFLENBQUMsS0FBZSxFQUFFLEVBQUU7Z0JBQ3JCLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRU0sd0JBQXdCO1FBQzdCLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksRUFBRTtZQUNqQyxJQUFJLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFO2dCQUVqQyxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDO2dCQUV0QyxJQUFJLE9BQU8sR0FBRyxJQUFJLDZCQUE2QixFQUFFLENBQUM7Z0JBRWxELE9BQU8sQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUNqRyxPQUFPLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztnQkFDM0MsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO2dCQUU3QyxJQUFJLENBQUMscUJBQXFCLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtvQkFDMUUsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQztvQkFDdkMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzVCLENBQUMsRUFBRSxDQUFDLEtBQWUsRUFBRSxFQUFFO29CQUNyQixLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztnQkFDdkMsQ0FBQyxDQUFDLENBQUM7YUFDSjtTQUNGO0lBQ0gsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLElBQUksQ0FBQyx3QkFBd0IsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksRUFBRTtZQUMxRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1lBRWhDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztZQUV6RSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUN4RSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1lBQ25DLENBQUMsRUFBRSxDQUFDLEtBQWUsRUFBRSxFQUFFO2dCQUNyQixLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztnQkFFckMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVPLFFBQVE7UUFDZCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUV4QixJQUFJLE9BQU8sR0FBRyxJQUFJLDJCQUEyQixFQUFFLENBQUM7UUFFaEQsT0FBTyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBRXhDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQStCLEVBQUUsRUFBRTtZQUNoRixJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQzNCLENBQUMsRUFBRSxDQUFDLEtBQWUsRUFBRSxFQUFFO1lBQ3JCLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1lBRXJDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLElBQUksQ0FBQyx3QkFBd0IsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksRUFBRTtZQUMxRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1lBRWhDLElBQUksT0FBTyxHQUFHLElBQUksd0JBQXdCLEVBQUUsQ0FBQztZQUU3QyxPQUFPLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDbkQsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUFDO1lBQ2xELE9BQU8sQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBRWpHLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQTRCLEVBQUUsRUFBRTtnQkFDckYsSUFBSSxJQUFJLENBQUMsd0JBQXdCLElBQUksSUFBSSxFQUFFO29CQUN6QyxJQUFJLENBQUMsd0JBQXdCLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBRXhELElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztvQkFFekMsSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFO3dCQUNyQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTs0QkFFekMsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGNBQWMsQ0FBQzs0QkFFNUQsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO2dDQUNwQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtvQ0FFeEMsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztvQ0FFNUIsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO3dDQUNoQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTs0Q0FFcEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQzs0Q0FFNUIsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO2dEQUNsQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtvREFDdEMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUU7d0RBQzVDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztxREFDdEM7aURBQ0Y7NkNBQ0Y7eUNBQ0Y7cUNBQ0Y7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7cUJBQ0Y7b0JBRUQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztpQkFDbEM7WUFDSCxDQUFDLEVBQUUsQ0FBQyxLQUFlLEVBQUUsRUFBRTtnQkFDckIsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7Z0JBRXJDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUNJO1lBQ0gsaUJBQWlCO1NBQ2xCO0lBQ0gsQ0FBQztJQUVNLGNBQWM7UUFDbkIsSUFBSSxJQUFJLENBQUMsOEJBQThCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLDJCQUEyQixJQUFJLElBQUksRUFBRTtZQUM1SCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1lBRWhDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEVBQUUsQ0FBQztZQUUxRixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUM5RSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1lBQ25DLENBQUMsRUFBRSxDQUFDLEtBQWUsRUFBRSxFQUFFO2dCQUNyQixLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztnQkFFckMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUU5QixJQUFJLE9BQU8sR0FBRyxJQUFJLDJCQUEyQixFQUFFLENBQUM7UUFFaEQsT0FBTyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBRXZDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQStCLEVBQUUsRUFBRTtZQUNoRixJQUFJLENBQUMsOEJBQThCLEdBQUcsS0FBSyxDQUFDO1lBQzVDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7WUFFL0IsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDaEMsQ0FBQyxFQUFFLENBQUMsS0FBZSxFQUFFLEVBQUU7WUFDckIsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7WUFFckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLElBQUksSUFBSSxDQUFDLDhCQUE4QixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQywyQkFBMkIsSUFBSSxJQUFJLEVBQUU7WUFDNUgsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztZQUV0QyxJQUFJLE9BQU8sR0FBRyxJQUFJLHdCQUF3QixFQUFFLENBQUM7WUFFN0MsT0FBTyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsRUFBRSxDQUFDO1lBQzlELE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEVBQUUsQ0FBQztZQUN4RCxPQUFPLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUVqRyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUE0QixFQUFFLEVBQUU7Z0JBQ3JGLElBQUksSUFBSSxDQUFDLDhCQUE4QixJQUFJLElBQUksRUFBRTtvQkFDL0MsSUFBSSxDQUFDLDhCQUE4QixDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUU5RCxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUM7b0JBRXpDLElBQUksU0FBUyxJQUFJLElBQUksRUFBRTt3QkFDckIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7NEJBRXpDLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxjQUFjLENBQUM7NEJBRWxFLElBQUksUUFBUSxJQUFJLElBQUksRUFBRTtnQ0FDcEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0NBRXhDLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7b0NBRTVCLElBQUksSUFBSSxJQUFJLElBQUksRUFBRTt3Q0FDaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7NENBRXBDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7NENBRTVCLElBQUksTUFBTSxJQUFJLElBQUksRUFBRTtnREFFbEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0RBQ3RDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFO3dEQUM1QyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7cURBQ3RDO2lEQUNGOzZDQUVGO3lDQUNGO3FDQUNGO2lDQUNGOzZCQUNGO3lCQUNGO3FCQUNGO2lCQUNGO2dCQUVELElBQUksQ0FBQyx5QkFBeUIsR0FBRyxLQUFLLENBQUM7WUFDekMsQ0FBQyxFQUFFLENBQUMsS0FBZSxFQUFFLEVBQUU7Z0JBQ3JCLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO2dCQUVyQyxJQUFJLENBQUMseUJBQXlCLEdBQUcsS0FBSyxDQUFDO1lBQ3pDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFFbEMsSUFBSSxPQUFPLEdBQUcsSUFBSSw2QkFBNkIsRUFBRSxDQUFDO1FBRWxELE9BQU8sQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRWpHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUE4QixFQUFFLEVBQUU7WUFDakcsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQztZQUVyQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsSUFBSSxTQUFTLEVBQUU7Z0JBQ3JGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUN0RTtZQUVELElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxJQUFJLFNBQVMsRUFBRTtnQkFDdkYsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUNyRSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7d0JBQzNFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNqRSxNQUFNO3FCQUNQO2lCQUNGO2FBQ0Y7WUFFRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLENBQUMsRUFBRSxDQUFDLEtBQWUsRUFBRSxFQUFFO1lBQ3JCLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1lBRXJDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3dHQXJhVSx5QkFBeUI7NEdBQXpCLHlCQUF5QixjQUZ4QixNQUFNOztTQUVQLHlCQUF5Qjs0RkFBekIseUJBQXlCO2tCQUhyQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4vYXV0aGVudGljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBGYWJyaWthbnRlblNlcnZpY2UgfSBmcm9tICcuL2ZhYnJpa2FudGVuLnNlcnZpY2UnO1xuaW1wb3J0IHsgU1ZHU2VydmljZSB9IGZyb20gJy4vc3ZnLnNlcnZpY2UnO1xuXG5pbXBvcnQge1xuICBGYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwsXHJcbiAgUHJvamVjdFZpZXdNb2RlbCxcclxuICBDcmVhdGVOZXdQcm9qZWN0UmVxdWVzdE1vZGVsLFxyXG4gIERlbGV0ZVByb2plY3RSZXF1ZXN0TW9kZWwsXHJcbiAgQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsLFxyXG4gIENvbmZpZ3VyYXRvckFwaUNsaWVudCxcclxuICBGb3JtQXBpQ2xpZW50LFxyXG4gIEZhYnJpa2FudGVuQXBpQ2xpZW50LFxyXG4gIENvbmZpZ3VyYXRpb25zVmlld01vZGVsLFxyXG4gIEdldENvbmZpZ3VyYXRpb25zUmVxdWVzdE1vZGVsLFxyXG4gIERlbGV0ZUJDQlByb2R1Y3RJbnN0YW5jZVJlcXVlc3RNb2RlbCxcclxuICBGYWJyaWthbnRlbkNyZWF0ZUluc3RhbmNlUmVxdWVzdCxcclxuICBGYWJyaWthbnRlbkluc3RhbmNlVmlld01vZGVsLFxyXG4gIEZhYnJpa2FudGVuRm9ybVJlcXVlc3RNb2RlbCxcclxuICBGb3JtVHlwZSxcclxuICBTYXZlUHJvamVjdFJlcXVlc3RNb2RlbCxcclxuICBGb3JtSW5zdGFuY2VSZXF1ZXN0TW9kZWwsXHJcbiAgQ3JlYXRlQkNCUHJvZHVjdEluc3RhbmNlTW9kZWwsXHJcbiAgRm9ybUluc3RhbmNlVmlld01vZGVsLFxyXG4gIExvZ2luUmVzcG9uc2VNb2RlbFxyXG59IGZyb20gJy4uL3N3YWdnZXIvU3dhZ2dlckNsaWVudCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEJjYlByb2R1Y3RJbnN0YW5jZVNlcnZpY2Uge1xuXG4gIHB1YmxpYyBTZWxlY3RlZFByb2R1Y3RJZDogbnVtYmVyID0gMDtcblxuICBwcml2YXRlIExvYWRpbmdQcm9qZWN0OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgTG9hZGluZ0JDQlByb2R1Y3RJbnN0YW5jZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIExvYWRpbmdGb3JtOiBib29sZWFuID0gdHJ1ZTtcbiAgcHJpdmF0ZSBMb2FkaW5nQ3VzdG9tRm9ybTogYm9vbGVhbiA9IHRydWU7XG4gIHByaXZhdGUgTG9hZGluZ0Zvcm1JbnN0YW5jZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIExvYWRpbmdDdXN0b21Gb3JtSW5zdGFuY2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBMb2FkaW5nQ29uZmlndXJhdGlvbnM6IGJvb2xlYW4gPSB0cnVlO1xuICBwcml2YXRlIFNhdmluZ0NvbmZpZ3VyYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgUHJvamVjdFZpZXdNb2RlbDogUHJvamVjdFZpZXdNb2RlbCB8IG51bGwgPSBudWxsO1xuICBwdWJsaWMgQ29uZmlndXJhdGlvbnNWaWV3TW9kZWw6IENvbmZpZ3VyYXRpb25zVmlld01vZGVsIHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBGYWJyaWthbnRlbkZvcm1WaWV3TW9kZWw6IEZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbCB8IG51bGwgPSBudWxsO1xuICBwdWJsaWMgRmFicmlrYW50ZW5DdXN0b21Gb3JtVmlld01vZGVsOiBGYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIEJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbDogQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBDb25maWd1cmF0b3JBcGlDbGllbnQ6IENvbmZpZ3VyYXRvckFwaUNsaWVudCxcbiAgICBwcml2YXRlIEZhYnJpa2FudGVuQXBpQ2xpZW50OiBGYWJyaWthbnRlbkFwaUNsaWVudCxcbiAgICBwcml2YXRlIEZvcm1BcGlDbGllbnQ6IEZvcm1BcGlDbGllbnQsXG4gICAgcHVibGljIGF1dGhlbnRpY2F0aW9uU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxuICAgIHB1YmxpYyBGYWJyaWthbnRlblNlcnZpY2U6IEZhYnJpa2FudGVuU2VydmljZSxcbiAgICBwdWJsaWMgU1ZHU2VydmljZTogU1ZHU2VydmljZVxuICApIHsgfVxuXG4gIHB1YmxpYyBJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuTG9hZENvbmZpZ3VyYXRpb25zKCk7XHJcbiAgICB0aGlzLkxvYWRGb3JtKCk7XHJcbiAgICB0aGlzLkxvYWRDdXN0b21Gb3JtKCk7XHJcbiAgfVxuXG4gIHB1YmxpYyBJc0xvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuTG9hZGluZ1Byb2plY3QgfHxcclxuICAgICAgdGhpcy5Mb2FkaW5nQkNCUHJvZHVjdEluc3RhbmNlIHx8XHJcbiAgICAgIHRoaXMuTG9hZGluZ0Zvcm0gfHxcclxuICAgICAgdGhpcy5Mb2FkaW5nQ3VzdG9tRm9ybSB8fFxyXG4gICAgICB0aGlzLkxvYWRpbmdGb3JtSW5zdGFuY2UgfHxcclxuICAgICAgdGhpcy5Mb2FkaW5nQ3VzdG9tRm9ybUluc3RhbmNlIHx8XHJcbiAgICAgIHRoaXMuTG9hZGluZ0NvbmZpZ3VyYXRpb25zIHx8XHJcbiAgICAgIHRoaXMuU2F2aW5nQ29uZmlndXJhdGlvbiB8fFxyXG4gICAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5Jc0xvYWRpbmcoKTtcclxuICB9XG5cbiAgcHVibGljIERvd25sb2FkUERGKGxhbmd1YWdlSWQ6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLkJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbCAhPSBudWxsKSB7XG4gICAgICB2YXIgdXJsID0gXCIvRG93bmxvYWQvQ3JlYXRlSW5zdGFuY2VQREY/cExhbmd1YWdlSWQ9XCIgKyBsYW5ndWFnZUlkO1xyXG4gICAgICB1cmwgKz0gXCImcFBERlRlbXBsYXRlSWQ9MVwiO1xyXG4gICAgICB1cmwgKz0gXCImcEJDQkluc3RhbmNlSWQ9XCIgKyB0aGlzLkJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbC5pZDtcclxuXHJcbiAgICAgIHdpbmRvdy5vcGVuKHVybCwgXCJfYmxhbmtcIik7XHJcbiAgICB9XHJcbiAgfVxuXG4gIHB1YmxpYyBTYXZlQ29uZmlndXJhdGlvbihDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAgIHRoaXMuU2F2ZUN1c3RvbUZvcm0oKTtcclxuXHJcbiAgICBpZiAodGhpcy5Qcm9qZWN0Vmlld01vZGVsICE9IG51bGwgJiYgdGhpcy5CQ0JQcm9kdWN0SW5zdGFuY2VWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLlNhdmluZ0NvbmZpZ3VyYXRpb24gPSB0cnVlO1xyXG4gICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICB2YXIgcmVxdWVzdCA9IG5ldyBGYWJyaWthbnRlbkNyZWF0ZUluc3RhbmNlUmVxdWVzdCgpO1xyXG5cclxuICAgICAgcmVxdWVzdC5zZXNzaW9uSWQgPSB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQ7XHJcbiAgICAgIHJlcXVlc3QucHJvamVjdElkID0gdGhpcy5Qcm9qZWN0Vmlld01vZGVsLmlkO1xyXG4gICAgICByZXF1ZXN0LnVuaXF1ZUNvZGUgPSB0aGlzLkJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbC51bmlxdWVDb2RlO1xyXG5cclxuICAgICAgdGhpcy5GYWJyaWthbnRlbkFwaUNsaWVudC5jcmVhdGVJbnN0YW5jZShyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBGYWJyaWthbnRlbkluc3RhbmNlVmlld01vZGVsKSA9PiB7XHJcbiAgICAgICAgdGhpcy5TYXZpbmdDb25maWd1cmF0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIHRoaXMuU2F2aW5nQ29uZmlndXJhdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxuXG4gIHB1YmxpYyBTZWxlY3RQcm9qZWN0KHByb2plY3Q6IFByb2plY3RWaWV3TW9kZWwpOiB2b2lkIHtcbiAgICB0aGlzLlByb2plY3RWaWV3TW9kZWwgPSBwcm9qZWN0O1xuICAgIHRoaXMuTG9hZEZvcm1JbnN0YW5jZSgpO1xuICB9XG5cbiAgcHVibGljIFVuc2VsZWN0UHJvamVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLlByb2plY3RWaWV3TW9kZWwgPSBudWxsO1xuICB9XG5cbiAgcHVibGljIERlbGV0ZVByb2plY3QocHJvamVjdDogUHJvamVjdFZpZXdNb2RlbCk6IHZvaWQge1xuICAgIGlmIChjb25maXJtKFwiV2VldCBqZSBoZXQgemVrZXI/XCIpKSB7XG4gICAgICB0aGlzLkxvYWRpbmdQcm9qZWN0ID0gdHJ1ZTtcblxuICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgRGVsZXRlUHJvamVjdFJlcXVlc3RNb2RlbCgpO1xuXG4gICAgICByZXF1ZXN0LmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XG4gICAgICByZXF1ZXN0LnByb2plY3RJZCA9IHByb2plY3QuaWQ7XG5cbiAgICAgIHRoaXMuQ29uZmlndXJhdG9yQXBpQ2xpZW50LmRlbGV0ZVByb2plY3QocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5Mb2FkQ29uZmlndXJhdGlvbnMoKTtcbiAgICAgICAgdGhpcy5Mb2FkaW5nUHJvamVjdCA9IGZhbHNlO1xuICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xuICAgICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XG5cbiAgICAgICAgdGhpcy5Mb2FkaW5nUHJvamVjdCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIFNhdmVQcm9qZWN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLlByb2plY3RWaWV3TW9kZWwgIT0gbnVsbCkge1xuICAgICAgdGhpcy5Mb2FkaW5nUHJvamVjdCA9IHRydWU7XG5cbiAgICAgIHZhciBtb2RlbCA9IG5ldyBTYXZlUHJvamVjdFJlcXVlc3RNb2RlbCgpO1xuXG4gICAgICBtb2RlbC5sb2dpblJlc3BvbnNlTW9kZWwgPSBuZXcgTG9naW5SZXNwb25zZU1vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpO1xuICAgICAgbW9kZWwucHJvamVjdFZpZXdNb2RlbCA9IHRoaXMuUHJvamVjdFZpZXdNb2RlbDtcblxuICAgICAgdGhpcy5Db25maWd1cmF0b3JBcGlDbGllbnQuc2F2ZVByb2plY3QobW9kZWwpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nUHJvamVjdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuU2F2ZUZvcm0oKTtcclxuICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nUHJvamVjdCA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XG5cbiAgcHVibGljIENyZWF0ZVByb2plY3QoKTogdm9pZCB7XG4gICAgdGhpcy5Mb2FkaW5nUHJvamVjdCA9IHRydWU7XG5cbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBDcmVhdGVOZXdQcm9qZWN0UmVxdWVzdE1vZGVsKCk7XG5cbiAgICByZXF1ZXN0LmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XG5cbiAgICB0aGlzLkNvbmZpZ3VyYXRvckFwaUNsaWVudC5jcmVhdGVOZXdQcm9qZWN0KHJlcXVlc3QpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLkxvYWRpbmdQcm9qZWN0ID0gZmFsc2U7XG4gICAgICB0aGlzLkxvYWRDb25maWd1cmF0aW9ucygpO1xuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcbiAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcblxuICAgICAgdGhpcy5Mb2FkaW5nUHJvamVjdCA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIFNlbGVjdEJDQlByb2R1Y3RJbnN0YW5jZShpbnN0YW5jZTogQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsLCBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcbiAgICB0aGlzLkJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbCA9IGluc3RhbmNlO1xuICAgIHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLk9wZW4oaW5zdGFuY2UudW5pcXVlQ29kZSArIFwiXCIsIENoYW5nZURldGVjdG9yUmVmKTtcbiAgICB0aGlzLkxvYWRDdXN0b21Gb3JtSW5zdGFuY2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBVbnNlbGVjdEJDQlByb2R1Y3RJbnN0YW5jZSgpOiB2b2lkIHtcbiAgICB0aGlzLkJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbCA9IG51bGw7XHJcbiAgICB0aGlzLlNWR1NlcnZpY2UuQ2xlYXJDYWNoZSgpO1xyXG4gIH1cblxuICBwdWJsaWMgRGVsZXRlQkNCUHJvZHVjdEluc3RhbmNlKGluc3RhbmNlOiBCQ0JQcm9kdWN0SW5zdGFuY2VWaWV3TW9kZWwpOiB2b2lkIHtcbiAgICBpZiAoY29uZmlybShcIldlZXQgamUgaGV0IHpla2VyP1wiKSkge1xuXG4gICAgICB0aGlzLkxvYWRpbmdCQ0JQcm9kdWN0SW5zdGFuY2UgPSB0cnVlO1xuXHJcbiAgICAgIHZhciByZXF1ZXN0ID0gbmV3IERlbGV0ZUJDQlByb2R1Y3RJbnN0YW5jZVJlcXVlc3RNb2RlbCgpO1xyXG5cclxuICAgICAgcmVxdWVzdC5sb2dpblJlc3BvbnNlTW9kZWwgPSBuZXcgTG9naW5SZXNwb25zZU1vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpO1xyXG4gICAgICByZXF1ZXN0LmJjYkluc3RhbmNlSWQgPSBpbnN0YW5jZS5pZDtcclxuXHJcbiAgICAgIHRoaXMuQ29uZmlndXJhdG9yQXBpQ2xpZW50LmRlbGV0ZUluc3RhbmNlKHJlcXVlc3QpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuUHJvamVjdFZpZXdNb2RlbD8uaW5zdGFuY2VzICE9IG51bGwpIHtcclxuICAgICAgICAgIHZhciBpbmRleCA9IDA7XHJcblxyXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLlByb2plY3RWaWV3TW9kZWwuaW5zdGFuY2VzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLlByb2plY3RWaWV3TW9kZWwuaW5zdGFuY2VzW2ldLmlkID09IGluc3RhbmNlLmlkKSB7XHJcbiAgICAgICAgICAgICAgaW5kZXggPSBpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5Qcm9qZWN0Vmlld01vZGVsLmluc3RhbmNlcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cclxuICAgICAgICAgIHRoaXMuTG9hZGluZ0JDQlByb2R1Y3RJbnN0YW5jZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxuXG4gIHB1YmxpYyBDcmVhdGVCQ0JQcm9kdWN0SW5zdGFuY2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuUHJvamVjdFZpZXdNb2RlbCAhPSBudWxsKSB7XG4gICAgICBpZiAoY29uZmlybShcIldlZXQgamUgaGV0IHpla2VyP1wiKSkge1xuXG4gICAgICAgIHRoaXMuTG9hZGluZ0JDQlByb2R1Y3RJbnN0YW5jZSA9IHRydWU7XG5cclxuICAgICAgICB2YXIgcmVxdWVzdCA9IG5ldyBDcmVhdGVCQ0JQcm9kdWN0SW5zdGFuY2VNb2RlbCgpO1xyXG5cclxuICAgICAgICByZXF1ZXN0LmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XHJcbiAgICAgICAgcmVxdWVzdC5wcm9kdWN0SWQgPSB0aGlzLlNlbGVjdGVkUHJvZHVjdElkO1xyXG4gICAgICAgIHJlcXVlc3QucHJvamVjdElkID0gdGhpcy5Qcm9qZWN0Vmlld01vZGVsLmlkO1xyXG5cclxuICAgICAgICB0aGlzLkNvbmZpZ3VyYXRvckFwaUNsaWVudC5jcmVhdGVCQ0JQcm9kdWN0SW5zdGFuY2UocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuTG9hZGluZ0JDQlByb2R1Y3RJbnN0YW5jZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5Mb2FkQ29uZmlndXJhdGlvbnMoKTtcclxuICAgICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XG5cbiAgcHVibGljIFNhdmVGb3JtKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbCAhPSBudWxsICYmIHRoaXMuUHJvamVjdFZpZXdNb2RlbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLkxvYWRpbmdGb3JtSW5zdGFuY2UgPSB0cnVlO1xuXG4gICAgICB0aGlzLkZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbC5jdXN0b21Db25uZWN0SWQgPSB0aGlzLlByb2plY3RWaWV3TW9kZWwuaWQ7XG5cbiAgICAgIHRoaXMuRm9ybUFwaUNsaWVudC5zYXZlRm9ybSh0aGlzLkZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLkxvYWRpbmdGb3JtSW5zdGFuY2UgPSBmYWxzZTtcclxuICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nRm9ybUluc3RhbmNlID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cblxuICBwcml2YXRlIExvYWRGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuTG9hZGluZ0Zvcm0gPSB0cnVlO1xuXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgRmFicmlrYW50ZW5Gb3JtUmVxdWVzdE1vZGVsKCk7XG5cbiAgICByZXF1ZXN0LmZvcm1UeXBlID0gRm9ybVR5cGUuUHJvamVjdEZvcm07XG5cbiAgICB0aGlzLkZvcm1BcGlDbGllbnQuZ2V0Rm9ybShyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBGYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwpID0+IHtcclxuICAgICAgdGhpcy5GYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwgPSBtb2RlbDtcclxuICAgICAgdGhpcy5Mb2FkaW5nRm9ybSA9IGZhbHNlO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmdGb3JtID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XG5cbiAgcHJpdmF0ZSBMb2FkRm9ybUluc3RhbmNlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbCAhPSBudWxsICYmIHRoaXMuUHJvamVjdFZpZXdNb2RlbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLkxvYWRpbmdGb3JtSW5zdGFuY2UgPSB0cnVlO1xuXG4gICAgICB2YXIgcmVxdWVzdCA9IG5ldyBGb3JtSW5zdGFuY2VSZXF1ZXN0TW9kZWwoKTtcblxuICAgICAgcmVxdWVzdC5jdXN0b21Db25uZWN0SWQgPSB0aGlzLlByb2plY3RWaWV3TW9kZWwuaWQ7XG4gICAgICByZXF1ZXN0LmZvcm1JZCA9IHRoaXMuRmFicmlrYW50ZW5Gb3JtVmlld01vZGVsLmlkO1xuICAgICAgcmVxdWVzdC5sb2dpblJlc3BvbnNlTW9kZWwgPSBuZXcgTG9naW5SZXNwb25zZU1vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpO1xuXG4gICAgICB0aGlzLkZvcm1BcGlDbGllbnQuZ2V0Rm9ybUluc3RhbmNlKHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IEZvcm1JbnN0YW5jZVZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbCAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLkZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbC5mb3JtSW5zdGFuY2VJZCA9IG1vZGVsLmlkO1xyXG5cclxuICAgICAgICAgIHZhciBpbnN0YW5jZXMgPSBtb2RlbC5mb3JtSW5wdXRJbnN0YW5jZXM7XHJcblxyXG4gICAgICAgICAgaWYgKGluc3RhbmNlcyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5zdGFuY2VzLmxlbmd0aDsgaSsrKSB7XHJcblxyXG4gICAgICAgICAgICAgIHZhciBmb3JtY2F0cyA9IHRoaXMuRmFicmlrYW50ZW5Gb3JtVmlld01vZGVsLmZvcm1DYXRlZ29yaWVzO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoZm9ybWNhdHMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBmb3JtY2F0cy5sZW5ndGg7IGorKykge1xyXG5cclxuICAgICAgICAgICAgICAgICAgdmFyIHJvd3MgPSBmb3JtY2F0c1tqXS5yb3dzO1xyXG5cclxuICAgICAgICAgICAgICAgICAgaWYgKHJvd3MgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgcm93cy5sZW5ndGg7IGsrKykge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIHZhciBpbnB1dHMgPSByb3dzW2tdLmlucHV0cztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRzICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IDA7IGwgPCBpbnB1dHMubGVuZ3RoOyBsKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRzW2xdLmlkID09IGluc3RhbmNlc1tpXS5mb3JtSW5wdXRJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRzW2xdLnZhbHVlID0gaW5zdGFuY2VzW2ldLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuTG9hZGluZ0Zvcm1JbnN0YW5jZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nRm9ybUluc3RhbmNlID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8vYWxlcnQoXCJlcnJvclwiKTtcclxuICAgIH1cclxuICB9XG5cbiAgcHVibGljIFNhdmVDdXN0b21Gb3JtKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuQ3VzdG9tRm9ybVZpZXdNb2RlbCAhPSBudWxsICYmIHRoaXMuUHJvamVjdFZpZXdNb2RlbCAhPSBudWxsICYmIHRoaXMuQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsICE9IG51bGwpIHtcbiAgICAgIHRoaXMuTG9hZGluZ0Zvcm1JbnN0YW5jZSA9IHRydWU7XG5cbiAgICAgIHRoaXMuRmFicmlrYW50ZW5DdXN0b21Gb3JtVmlld01vZGVsLmN1c3RvbUNvbm5lY3RJZCA9IHRoaXMuQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsLmlkO1xuXG4gICAgICB0aGlzLkZvcm1BcGlDbGllbnQuc2F2ZUZvcm0odGhpcy5GYWJyaWthbnRlbkN1c3RvbUZvcm1WaWV3TW9kZWwpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nRm9ybUluc3RhbmNlID0gZmFsc2U7XHJcbiAgICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcblxyXG4gICAgICAgIHRoaXMuTG9hZGluZ0Zvcm1JbnN0YW5jZSA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XG5cbiAgcHJpdmF0ZSBMb2FkQ3VzdG9tRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLkxvYWRpbmdDdXN0b21Gb3JtID0gdHJ1ZTtcblxuICAgIHZhciByZXF1ZXN0ID0gbmV3IEZhYnJpa2FudGVuRm9ybVJlcXVlc3RNb2RlbCgpO1xuXG4gICAgcmVxdWVzdC5mb3JtVHlwZSA9IEZvcm1UeXBlLkN1c3RvbUZvcm07XG5cbiAgICB0aGlzLkZvcm1BcGlDbGllbnQuZ2V0Rm9ybShyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBGYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwpID0+IHtcclxuICAgICAgdGhpcy5GYWJyaWthbnRlbkN1c3RvbUZvcm1WaWV3TW9kZWwgPSBtb2RlbDtcclxuICAgICAgdGhpcy5Mb2FkaW5nQ3VzdG9tRm9ybSA9IGZhbHNlO1xyXG5cclxuICAgICAgdGhpcy5Mb2FkQ3VzdG9tRm9ybUluc3RhbmNlKCk7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZ0Zvcm0gPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cblxuICBwcml2YXRlIExvYWRDdXN0b21Gb3JtSW5zdGFuY2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5DdXN0b21Gb3JtVmlld01vZGVsICE9IG51bGwgJiYgdGhpcy5Qcm9qZWN0Vmlld01vZGVsICE9IG51bGwgJiYgdGhpcy5CQ0JQcm9kdWN0SW5zdGFuY2VWaWV3TW9kZWwgIT0gbnVsbCkge1xuICAgICAgdGhpcy5Mb2FkaW5nQ3VzdG9tRm9ybUluc3RhbmNlID0gdHJ1ZTtcblxuICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgRm9ybUluc3RhbmNlUmVxdWVzdE1vZGVsKCk7XG5cbiAgICAgIHJlcXVlc3QuY3VzdG9tQ29ubmVjdElkID0gdGhpcy5CQ0JQcm9kdWN0SW5zdGFuY2VWaWV3TW9kZWwuaWQ7XG4gICAgICByZXF1ZXN0LmZvcm1JZCA9IHRoaXMuRmFicmlrYW50ZW5DdXN0b21Gb3JtVmlld01vZGVsLmlkO1xuICAgICAgcmVxdWVzdC5sb2dpblJlc3BvbnNlTW9kZWwgPSBuZXcgTG9naW5SZXNwb25zZU1vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpO1xuXG4gICAgICB0aGlzLkZvcm1BcGlDbGllbnQuZ2V0Rm9ybUluc3RhbmNlKHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IEZvcm1JbnN0YW5jZVZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuQ3VzdG9tRm9ybVZpZXdNb2RlbCAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLkZhYnJpa2FudGVuQ3VzdG9tRm9ybVZpZXdNb2RlbC5mb3JtSW5zdGFuY2VJZCA9IG1vZGVsLmlkO1xyXG5cclxuICAgICAgICAgIHZhciBpbnN0YW5jZXMgPSBtb2RlbC5mb3JtSW5wdXRJbnN0YW5jZXM7XHJcblxyXG4gICAgICAgICAgaWYgKGluc3RhbmNlcyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5zdGFuY2VzLmxlbmd0aDsgaSsrKSB7XHJcblxyXG4gICAgICAgICAgICAgIHZhciBmb3JtY2F0cyA9IHRoaXMuRmFicmlrYW50ZW5DdXN0b21Gb3JtVmlld01vZGVsLmZvcm1DYXRlZ29yaWVzO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoZm9ybWNhdHMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBmb3JtY2F0cy5sZW5ndGg7IGorKykge1xyXG5cclxuICAgICAgICAgICAgICAgICAgdmFyIHJvd3MgPSBmb3JtY2F0c1tqXS5yb3dzO1xyXG5cclxuICAgICAgICAgICAgICAgICAgaWYgKHJvd3MgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgcm93cy5sZW5ndGg7IGsrKykge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIHZhciBpbnB1dHMgPSByb3dzW2tdLmlucHV0cztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRzICE9IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGwgPSAwOyBsIDwgaW5wdXRzLmxlbmd0aDsgbCsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0c1tsXS5pZCA9PSBpbnN0YW5jZXNbaV0uZm9ybUlucHV0SWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0c1tsXS52YWx1ZSA9IGluc3RhbmNlc1tpXS52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmdDdXN0b21Gb3JtSW5zdGFuY2UgPSBmYWxzZTtcclxuICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nQ3VzdG9tRm9ybUluc3RhbmNlID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cblxuICBwcml2YXRlIExvYWRDb25maWd1cmF0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLkxvYWRpbmdDb25maWd1cmF0aW9ucyA9IHRydWU7XG5cbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBHZXRDb25maWd1cmF0aW9uc1JlcXVlc3RNb2RlbCgpO1xuXG4gICAgcmVxdWVzdC5sb2dpblJlc3BvbnNlTW9kZWwgPSBuZXcgTG9naW5SZXNwb25zZU1vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpO1xuXG4gICAgdGhpcy5Db25maWd1cmF0b3JBcGlDbGllbnQuZ2V0Q29uZmlndXJhdGlvbnMocmVxdWVzdCkuc3Vic2NyaWJlKChtb2RlbDogQ29uZmlndXJhdGlvbnNWaWV3TW9kZWwpID0+IHtcbiAgICAgIHRoaXMuQ29uZmlndXJhdGlvbnNWaWV3TW9kZWwgPSBtb2RlbDtcblxuICAgICAgaWYgKHRoaXMuU2VsZWN0ZWRQcm9kdWN0SWQgPT0gMCAmJiB0aGlzLkNvbmZpZ3VyYXRpb25zVmlld01vZGVsLnByb2R1Y3RzICE9IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLlNlbGVjdGVkUHJvZHVjdElkID0gdGhpcy5Db25maWd1cmF0aW9uc1ZpZXdNb2RlbC5wcm9kdWN0c1swXS5pZDtcclxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5Qcm9qZWN0Vmlld01vZGVsICE9IG51bGwgJiYgdGhpcy5Db25maWd1cmF0aW9uc1ZpZXdNb2RlbC5wcm9qZWN0cyAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLkNvbmZpZ3VyYXRpb25zVmlld01vZGVsLnByb2plY3RzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5Qcm9qZWN0Vmlld01vZGVsLmlkID09IHRoaXMuQ29uZmlndXJhdGlvbnNWaWV3TW9kZWwucHJvamVjdHNbaV0uaWQpIHtcclxuICAgICAgICAgICAgdGhpcy5Qcm9qZWN0Vmlld01vZGVsID0gdGhpcy5Db25maWd1cmF0aW9uc1ZpZXdNb2RlbC5wcm9qZWN0c1tpXTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XG5cbiAgICAgIHRoaXMuTG9hZGluZ0NvbmZpZ3VyYXRpb25zID0gZmFsc2U7XG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xuICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xuXG4gICAgICB0aGlzLkxvYWRpbmdDb25maWd1cmF0aW9ucyA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG59XG4iXX0=