@entake/particle 17.0.0 → 17.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -279,12 +279,15 @@ export class ThemingService {
279
279
  }
280
280
  if (theme.stylingVariables.borderColor) {
281
281
  style.appendChild(document.createTextNode(`.${prefix}ptl_brdr_color{border-color: ${this.addHashmark(theme.stylingVariables.borderColor)};}`));
282
+ rootVars += `--${prefix}ptl-brdr-color: ${this.addHashmark(theme.stylingVariables.borderColor)};`;
282
283
  }
283
284
  if (theme.stylingVariables.borderSize) {
284
285
  style.appendChild(document.createTextNode(`.${prefix}ptl_brdr_size{border-width: ${theme.stylingVariables.borderSize};border-style:solid;}`));
286
+ rootVars += `--${prefix}ptl-brdr-size: ${theme.stylingVariables.borderSize};`;
285
287
  }
286
288
  if (theme.stylingVariables.borderRadius) {
287
289
  style.appendChild(document.createTextNode(`.${prefix}ptl_brdr_radius{border-radius: ${theme.stylingVariables.borderRadius};}`));
290
+ rootVars += `--${prefix}ptl-brdr-radius: ${theme.stylingVariables.borderRadius};`;
288
291
  }
289
292
  if (theme.stylingVariables.inputHeight) {
290
293
  style.appendChild(document.createTextNode(`.${prefix}ptl_input_height{height: ${theme.stylingVariables.inputHeight};}`));
@@ -504,4 +507,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImpor
504
507
  providedIn: 'root'
505
508
  }]
506
509
  }], ctorParameters: () => [{ type: i1.LocalStorageService }, { type: i2.ThemeChangeDetectionService }] });
507
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3RoZW1pbmcvc2VydmljZXMvdGhlbWluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQW1CLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDOzs7O0FBT3ZFLE1BQU0sT0FBTyxjQUFjO0lBd0NmO0lBQ0E7SUF2Q1YsK0NBQStDO0lBQzlCLGVBQWUsR0FBa0I7UUFDaEQsY0FBYyxDQUFDLElBQUk7UUFDbkIsY0FBYyxDQUFDLEtBQUs7UUFDcEIsY0FBYyxDQUFDLE9BQU87UUFDdEIsY0FBYyxDQUFDLE1BQU07UUFDckIsY0FBYyxDQUFDLFlBQVk7S0FDNUIsQ0FBQztJQUVGOztPQUVHO0lBQ2MsU0FBUyxHQUFHLE9BQU8sQ0FBQztJQUVyQzs7T0FFRztJQUNLLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBVSxFQUFFLENBQUMsQ0FBQztJQUUxQyxjQUFjLEdBQUcsSUFBSSxlQUFlLENBQVEsSUFBVyxDQUFDLENBQUM7SUFFakUsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFHRDs7T0FFRztJQUNPLGVBQWUsR0FBVyxJQUFXLENBQUM7SUFFaEQ7Ozs7O09BS0c7SUFDSCxZQUNVLG1CQUF3QyxFQUN4QywyQkFBd0Q7UUFEeEQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxnQ0FBMkIsR0FBM0IsMkJBQTJCLENBQTZCO0lBRWxFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssV0FBVyxDQUFDLElBQVk7UUFDOUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFD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QUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFTyxjQUFjLENBQUMsUUFBZ0IsRUFBRSxRQUF1QjtRQUM5RCxJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFFNUMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO21CQUNyQyxRQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7bUJBQ3ZDLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQzttQkFDekMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO21CQUN4QyxRQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsRUFDakQsQ0FBQztnQkFDRCxnQkFBZ0IsR0FBRyxRQUFRLENBQUM7WUFDOUIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsd0VBQXdFLENBQUMsQ0FBQztZQUN6RixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLEtBQUssTUFBTSxNQUFNLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUN0QyxRQUFRLElBQUksT0FBTyxNQUFNLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQztRQUN2QyxDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzt1R0Fya0JVLGNBQWM7MkdBQWQsY0FBYyxjQUZiLE1BQU07OzJGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1RoZW1lLCBUaGVtZUZvbnQsIFpfSU5ERVhfTEFZRVJTfSBmcm9tICcuLi9tb2RlbHMvdGhlbWUubW9kZWwnO1xyXG5pbXBvcnQge1RoZW1lQ2hhbmdlRGV0ZWN0aW9uU2VydmljZX0gZnJvbSAnLi90aGVtZS1jaGFuZ2UtZGV0ZWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge0xvY2FsU3RvcmFnZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGhlbWluZ1NlcnZpY2Uge1xyXG5cclxuICAvLyBQU0E6IE9SREVSIE1BVFRFUlMsIERPIE5PVCBNT1ZFIElURU1TIEFST1VORFxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFpJbmRleGVzOiBBcnJheTxzdHJpbmc+ID0gW1xyXG4gICAgWl9JTkRFWF9MQVlFUlMuQkFTRSxcclxuICAgIFpfSU5ERVhfTEFZRVJTLkZSQU1FLFxyXG4gICAgWl9JTkRFWF9MQVlFUlMuT1ZFUkxBWSxcclxuICAgIFpfSU5ERVhfTEFZRVJTLkRJQUxPRyxcclxuICAgIFpfSU5ERVhfTEFZRVJTLk5PVElGSUNBVElPTlxyXG4gIF07XHJcblxyXG4gIC8qKlxyXG4gICAqIFByZWZpeCB1c2VkIHRvIGJ1aWxkIHRoZSBrZXkgZm9yIGxvY2FsIHN0b3JhZ2Ugb2YgdGhlIHRoZW1lXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBUSEVNRV9LRVkgPSAndGhlbWUnO1xyXG5cclxuICAvKipcclxuICAgKiBBIHByaXZhdGUgQmVoYXZpb3JTdWJqZWN0IHRvIHN0b3JlIHRoZSBsb2FkZWQgdGhlbWVzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB0aGVtZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRoZW1lW10+KFtdKTtcclxuXHJcbiAgcHJpdmF0ZSAkc2VsZWN0ZWRUaGVtZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGhlbWU+KG51bGwgYXMgYW55KTtcclxuXHJcbiAgZ2V0IHNlbGVjdGVkVGhlbWUoKTogT2JzZXJ2YWJsZTxUaGVtZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuJHNlbGVjdGVkVGhlbWUuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogS2V5IGZvciB0aGUgcHJvZHVjdCB0aGlzIGlzIGRlcGxveWVkIGludG9cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYXBwbGljYXRpb25OYW1lOiBzdHJpbmcgPSBudWxsIGFzIGFueTtcclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0b3JcclxuICAgKlxyXG4gICAqIEBwYXJhbSBsb2NhbFN0b3JhZ2VTZXJ2aWNlXHJcbiAgICogQHBhcmFtIHRoZW1lQ2hhbmdlRGV0ZWN0aW9uU2VydmljZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBsb2NhbFN0b3JhZ2VTZXJ2aWNlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0aGVtZUNoYW5nZURldGVjdGlvblNlcnZpY2U6IFRoZW1lQ2hhbmdlRGV0ZWN0aW9uU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udmVydHMgYSBKU09OIHByb3BlcnR5IG5hbWUgdG8gc25ha2UgY2FzZVxyXG4gICAqXHJcbiAgICogQHBhcmFtIHByb3BcclxuICAgKi9cclxuICBwcml2YXRlIHRvU25ha2VDYXNlKHByb3A6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gcHJvcC5zcGxpdCgvKD89W0EtWl0pLykuam9pbignXycpLnRvTG93ZXJDYXNlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvS2ViYWJDYXNlKHByb3A6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gcHJvcC5zcGxpdCgvKD89W0EtWl0pLykuam9pbignLScpLnRvTG93ZXJDYXNlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnZlcnRVbmRlcnNjb3JlVG9EYXNoKHByb3A6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gcHJvcC5zcGxpdCgnXycpLmpvaW4oJy0nKS50b0xvd2VyQ2FzZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9yIHRoZSBnaXZlbiBjb2xvciwgaXQnbGwgbGlnaHRlbiBvciBkYXJrZW4gdGhlIGNvbG9yIGJ5IHRoZSBwZXJjZW50YWdlIHN1cHBsaWVkLiBQb3NpdGl2ZSBwZXJjZW50IHdpbGwgbGlnaHRlbiwgbmVnYXRpdmUgdG8gZGFya2VuLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGNvbG9yXHJcbiAgICogQHBhcmFtIHBlcmNlbnRcclxuICAgKi9cclxuICBwcml2YXRlIGxpZ2h0ZW5EYXJrZW5Db2xvcihjb2xvcjogc3RyaW5nLCBwZXJjZW50OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHVzZVBvdW5kID0gZmFsc2U7XHJcbiAgICBpZiAoY29sb3JbMF0gPT09ICcjJykge1xyXG4gICAgICBjb2xvciA9IGNvbG9yLnNsaWNlKDEpO1xyXG4gICAgICB1c2VQb3VuZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbnVtID0gcGFyc2VJbnQoY29sb3IsIDE2KTtcclxuXHJcbiAgICBsZXQgciA9IChudW0gPj4gMTYpICsgcGVyY2VudDtcclxuICAgIGlmIChyID4gMjU1KSB7XHJcbiAgICAgIHIgPSAyNTU7XHJcbiAgICB9IGVsc2UgaWYgKHIgPCAwKSB7XHJcbiAgICAgIHIgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBiID0gKChudW0gPj4gOCkgJiAweDAwRkYpICsgcGVyY2VudDtcclxuICAgIGlmIChiID4gMjU1KSB7XHJcbiAgICAgIGIgPSAyNTU7XHJcbiAgICB9IGVsc2UgaWYgKGIgPCAwKSB7XHJcbiAgICAgIGIgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBnID0gKG51bSAmIDB4MDAwMEZGKSArIHBlcmNlbnQ7XHJcbiAgICBpZiAoZyA+IDI1NSkge1xyXG4gICAgICBnID0gMjU1O1xyXG4gICAgfSBlbHNlIGlmIChnIDwgMCkge1xyXG4gICAgICBnID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgbmV3Q29sb3IgPSAoZyB8IChiIDw8IDgpIHwgKHIgPDwgMTYpKS50b1N0cmluZygxNik7XHJcblxyXG4gICAgd2hpbGUgKG5ld0NvbG9yLmxlbmd0aCA8IDYpIHtcclxuICAgICAgbmV3Q29sb3IgPSAnMCcgKyBuZXdDb2xvcjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gKHVzZVBvdW5kID8gJyMnIDogJycpICsgbmV3Q29sb3I7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb252ZXJ0cyBhIGhleCB2YWx1ZSB0byBhIEphdmFzY3JpcHQgb2JqZWN0IHdpdGggcixnLCBhbmQgYiB2YXJpYWJsZXMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gaGV4XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoZXhUb1JnYihoZXg6IHN0cmluZyk6IGFueSB7XHJcbiAgICBjb25zdCByZXN1bHQgPSAvXiM/KFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pJC9pLmV4ZWMoaGV4KTtcclxuICAgIHJldHVybiByZXN1bHQgPyB7XHJcbiAgICAgIHI6IHBhcnNlSW50KHJlc3VsdFsxXSwgMTYpLFxyXG4gICAgICBnOiBwYXJzZUludChyZXN1bHRbMl0sIDE2KSxcclxuICAgICAgYjogcGFyc2VJbnQocmVzdWx0WzNdLCAxNilcclxuICAgIH0gOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIGEgcmFuZG9tIGhleCBjb2xvclxyXG4gICAqL1xyXG4gIGdldFJhbmRvbUNvbG9yKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gJyMnICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTY3NzcyMTUpLnRvU3RyaW5nKDE2KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIEFwcCBJbml0aWFsaXphdGlvbiAoaW4gYXBwLmNvbXBvbmVudC50cywgbmdPbkluaXQpIGNhbGwgdGhpcyB0byBsb2FkIHRoZW1lcyBhbmQgYXBwbHkgdGhlIHVzZXIgc2VsZWN0ZWQgdGhlbWUgb3IgZGVmYXVsdCB0aGVtZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBhcHBsaWNhdGlvbk5hbWVcclxuICAgKiBAcGFyYW0gdGhlbWVzXHJcbiAgICovXHJcbiAgYXBwSW5pdChhcHBsaWNhdGlvbk5hbWU6IHN0cmluZywgdGhlbWVzOiBUaGVtZVtdKTogdm9pZCB7XHJcbiAgICAgIGlmICghYXBwbGljYXRpb25OYW1lKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcHBsaWNhdGlvbiBOYW1lIHdhcyBub3Qgc3VwcGxpZWQuJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuYXBwbGljYXRpb25OYW1lID0gYXBwbGljYXRpb25OYW1lO1xyXG4gICAgICB0aGlzLnRoZW1lcy5uZXh0KHRoZW1lcyk7XHJcbiAgICAgIHRoaXMuYXBwbHlTZXR0aW5ncygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJuIHRoZSB0aGVtZXMgZm9yIHRoZSBjdXJyZW50IGFwcFxyXG4gICAqL1xyXG4gIGdldFRoZW1lcygpOiBPYnNlcnZhYmxlPFRoZW1lW10+IHtcclxuICAgIHJldHVybiB0aGlzLnRoZW1lcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFwcGx5IHRoZSBzZWxlY3RlZCB0aGVtZVxyXG4gICAqL1xyXG4gIGFwcGx5U2V0dGluZ3MoKTogdm9pZCB7XHJcbiAgICBjb25zdCBzZXR0aW5ncyA9IHRoaXMuZ2V0VGhlbWUoKTtcclxuICAgIHRoaXMuJHNlbGVjdGVkVGhlbWUubmV4dChzZXR0aW5ncyk7XHJcbiAgICB0aGlzLmNoYW5nZUNvbG9ycyhzZXR0aW5ncyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb25zdHJ1Y3RzIGEgdGhlbWUgb2JqZWN0IGJhc2VkIG9uIGFub3RoZXIgdGhlbWUgb2JqZWN0XHJcbiAgICpcclxuICAgKiBAcGFyYW0gdGhlbWVcclxuICAgKi9cclxuICBnZW5lcmF0ZVRoZW1lKHRoZW1lPzogVGhlbWUpOiBUaGVtZSB7XHJcbiAgICBsZXQgbmV3VGhlbWU6IFRoZW1lID0ge30gYXMgVGhlbWU7XHJcbiAgICBpZiAodGhlbWUpIHtcclxuICAgICAgZm9yIChjb25zdCBwcm9wIG9mIE9iamVjdC5rZXlzKHRoZW1lKSkge1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBuZXdUaGVtZVtwcm9wXSA9IHRoZW1lW3Byb3BdO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdUaGVtZSA9IHRoaXMudGhlbWVzLmdldFZhbHVlKCkuZmluZCh0aGVUaGVtZSA9PiB0aGVUaGVtZS5pc0RlZmF1bHQpIGFzIFRoZW1lO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBuZXdUaGVtZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIHRoZSBjb2xvciBjbGFzc2VzIHNwZWNpZmljYWxseSBiYXNlZCBvbiB0aGUgcHJvcGVydGllcyBvZiB0aGUgdGhlbWUgbW9kZWxcclxuICAgKi9cclxuICBnZXRDbGFzc2VzRnJvbVRoZW1lKHRoZW1lOiBUaGVtZSk6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IGNsYXNzZXMgPSBbXTtcclxuICAgIGZvciAoY29uc3QgcHJvcCBvZiBPYmplY3Qua2V5cyh0aGVtZSkpIHtcclxuICAgICAgaWYgKHByb3AudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnYmcnKSB8fCBwcm9wLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2NvbG9yJykpIHtcclxuICAgICAgICBjbGFzc2VzLnB1c2gocHJvcC5zcGxpdCgvKD89W0EtWl0pLykuam9pbignXycpLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNsYXNzZXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB1c2VyIHNlbGVjdGVkIHRoZW1lIGZyb20gbG9jYWwgc3RvcmFnZVxyXG4gICAqL1xyXG4gIGdldFRoZW1lKCk6IFRoZW1lIHtcclxuICAgIGNvbnN0IHRoZW1lSWQgPSB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UuZ2V0T2JqZWN0KHRoaXMuYXBwbGljYXRpb25OYW1lICsgdGhpcy5USEVNRV9LRVkpO1xyXG4gICAgbGV0IGRlZmF1bHRUaGVtZSA9IHRoaXMudGhlbWVzLnZhbHVlLmZpbHRlcih0aGVtZSA9PiB0aGVtZS5pc0RlZmF1bHQpWzBdO1xyXG5cclxuICAgIGZvciAoY29uc3QgdGhlbWUgb2YgdGhpcy50aGVtZXMudmFsdWUpIHtcclxuICAgICAgaWYgKHRoZW1lLnRoZW1lSWQgPT09IHRoZW1lSWQpIHtcclxuICAgICAgICByZXR1cm4gdGhlbWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZGVmYXVsdFRoZW1lO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGVyc2lzdHMgdGhlIHVzZXIgc2VsZWN0ZWQgdGhlbWUgaW4gbG9jYWwgc3RvcmFnZVxyXG4gICAqXHJcbiAgICogQHBhcmFtIHNldHRpbmdzXHJcbiAgICovXHJcbiAgc2F2ZVRoZW1lKHNldHRpbmdzOiBUaGVtZSk6IHZvaWQge1xyXG4gICAgdGhpcy4kc2VsZWN0ZWRUaGVtZS5uZXh0KHNldHRpbmdzKTtcclxuICAgIHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5wdXRPYmplY3QodGhpcy5hcHBsaWNhdGlvbk5hbWUgKyB0aGlzLlRIRU1FX0tFWSwgc2V0dGluZ3MudGhlbWVJZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXcml0ZXMgdGhlIHRoZW1lIGluZm9ybWF0aW9uIHRvIGEgc3R5bGUgdGFnIGluIHRoZSBoZWFkZXIgc28gdGhhdCB0aGUgdGhlbWUgaXMgYXBwbGllZC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB0aGVtZVxyXG4gICAqIEBwYXJhbSBwcmVmaXhcclxuICAgKi9cclxuICBjaGFuZ2VDb2xvcnModGhlbWU6IFRoZW1lLCBwcmVmaXg/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICghcHJlZml4KSB7XHJcbiAgICAgIHByZWZpeCA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcclxuICAgIGxldCByb290VmFycyA9ICc6cm9vdCB7JztcclxuXHJcbiAgICAvLyBSZW5kZXIgdGhlIGNvbG9yIHBhbGV0dGUgc3R5bGVzXHJcbiAgICBpZiAodGhlbWUuY29sb3JQYWxldHRlKSB7XHJcbiAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBPYmplY3Qua2V5cyh0aGVtZS5jb2xvclBhbGV0dGUpKSB7XHJcbiAgICAgICAgaWYgKHByb3AgIT09ICdleHRlbnNpb24nKSB7XHJcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9ICh0aGVtZS5jb2xvclBhbGV0dGUgYXMgYW55KVtwcm9wXSBhcyBzdHJpbmc7XHJcblxyXG4gICAgICAgICAgY29uc3QgY29sb3IgPSB0aGlzLmFkZEhhc2htYXJrKHZhbHVlKTtcclxuICAgICAgICAgIHRoaXMuZ2VuZXJhdGVDb2xvcnMoc3R5bGUsIGNvbG9yLCBwcmVmaXggKyB0aGlzLnRvU25ha2VDYXNlKHByb3ApKTtcclxuXHJcbiAgICAgICAgICByb290VmFycyArPSBgLS0ke3ByZWZpeH0ke3RoaXMudG9LZWJhYkNhc2UocHJvcCl9LWNvbG9yOiAke2NvbG9yfTtgO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yIChjb25zdCBleHRlbnNpb24gb2YgdGhlbWUuY29sb3JQYWxldHRlLmV4dGVuc2lvbikge1xyXG4gICAgICAgIGlmIChleHRlbnNpb24udGV4dENvbG9yICYmICFleHRlbnNpb24uY29sb3IpIHtcclxuICAgICAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAuJHtwcmVmaXh9JHtleHRlbnNpb24uY2xhc3NOYW1lfXtjb2xvcjogJHt0aGlzLmFkZEhhc2htYXJrKGV4dGVuc2lvbi50ZXh0Q29sb3IpfTt9YCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGV4dGVuc2lvbi5jb2xvcikge1xyXG4gICAgICAgICAgaWYgKCFleHRlbnNpb24udGV4dENvbG9yKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVDb2xvcnMoc3R5bGUsIHRoaXMuYWRkSGFzaG1hcmsoZXh0ZW5zaW9uLmNvbG9yIGFzIHN0cmluZyksIHByZWZpeCArIGV4dGVuc2lvbi5jbGFzc05hbWUpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYC4ke3ByZWZpeH0ke2V4dGVuc2lvbi5jbGFzc05hbWV9e2JhY2tncm91bmQtY29sb3I6ICR7dGhpcy5hZGRIYXNobWFyayhleHRlbnNpb24uY29sb3IpfTtjb2xvcjogJHt0aGlzLmFkZEhhc2htYXJrKGV4dGVuc2lvbi50ZXh0Q29sb3IpfTtmaWxsOiBjdXJyZW50Q29sb3I7fWApKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICByb290VmFycyArPSBgLS0ke3ByZWZpeH0ke3RoaXMuY29udmVydFVuZGVyc2NvcmVUb0Rhc2goZXh0ZW5zaW9uLmNsYXNzTmFtZSl9OiAke3RoaXMuYWRkSGFzaG1hcmsoZXh0ZW5zaW9uLmNvbG9yIGFzIHN0cmluZyl9O2A7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVuZGVyIHRoZSBsYXlvdXQgY29sb3Igc3R5bGVzXHJcbiAgICBpZiAodGhlbWUubGF5b3V0Q29sb3JzKSB7XHJcbiAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBPYmplY3Qua2V5cyh0aGVtZS5sYXlvdXRDb2xvcnMpKSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSAodGhlbWUubGF5b3V0Q29sb3JzIGFzIGFueSlbcHJvcF0gYXMgc3RyaW5nO1xyXG5cclxuICAgICAgICBjb25zdCBjb2xvciA9IHZhbHVlLnN0YXJ0c1dpdGgoJyMnKSA/IHZhbHVlIDogJyMnICsgdmFsdWU7XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZUNvbG9ycyhzdHlsZSwgY29sb3IsIHByZWZpeCArIHRoaXMudG9TbmFrZUNhc2UocHJvcCkpO1xyXG4gICAgICAgIHJvb3RWYXJzICs9IGAtLSR7cHJlZml4fSR7dGhpcy50b0tlYmFiQ2FzZShwcm9wKX06ICR7Y29sb3J9O2A7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmlzRGFya1RoZW1lKHRoZW1lLmxheW91dENvbG9ycy5ib2R5Q29sb3IpKSB7XHJcbiAgICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYC4ke3ByZWZpeH1iZ19vdmVybGF5e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwwLjA1KTtjb2xvcjppbmhlcml0O31gKSk7XHJcbiAgICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYC4ke3ByZWZpeH1iZ19vdmVybGF5X3JldntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMC4wNSk7Y29sb3I6aW5oZXJpdDt9YCkpO1xyXG4gICAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAuJHtwcmVmaXh9YnJkcntib3JkZXI6MXB4IHNvbGlkIHJnYmEoMTUwLDE1MCwxNTAsMC41KTt9YCkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAuJHtwcmVmaXh9Ymdfb3ZlcmxheXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMC4xKTtjb2xvcjppbmhlcml0O31gKSk7XHJcbiAgICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYC4ke3ByZWZpeH1iZ19vdmVybGF5X3JldntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMC4wNCk7Y29sb3I6aW5oZXJpdDt9YCkpO1xyXG4gICAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAuJHtwcmVmaXh9YnJkcntib3JkZXI6MXB4IHNvbGlkIHJnYmEoMTUwLDE1MCwxNTAsMC41KTt9YCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoZW1lLmFjY2Vzc2liaWxpdHkgJiYgdGhlbWUuYWNjZXNzaWJpbGl0eS5lbmFibGVkKSB7XHJcbiAgICAgIGNvbnN0IG91dGxpbmVDb2xvciA9IHRoZW1lLmFjY2Vzc2liaWxpdHkuaGlnaGxpZ2h0Q29sb3Iuc3RhcnRzV2l0aCgnIycpID8gdGhlbWUuYWNjZXNzaWJpbGl0eS5oaWdobGlnaHRDb2xvciA6ICcjJyArIHRoZW1lLmFjY2Vzc2liaWxpdHkuaGlnaGxpZ2h0Q29sb3I7XHJcbiAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAuJHtwcmVmaXh9YWNjZXNze291dGxpbmU6ICR7b3V0bGluZUNvbG9yfSAke3RoZW1lLmFjY2Vzc2liaWxpdHkuaGlnaGxpZ2h0VGhpY2tuZXNzfSBzb2xpZCAhaW1wb3J0YW50O291dGxpbmUtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7dHJhbnNpdGlvbjphbGwgMC4zcyBlYXNlLWluLW91dDt9YCkpO1xyXG4gICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgLiR7cHJlZml4fWFjY2Vzczpmb2N1c3tvdXRsaW5lOiAke291dGxpbmVDb2xvcn0gJHt0aGVtZS5hY2Nlc3NpYmlsaXR5LmhpZ2hsaWdodFRoaWNrbmVzc30gc29saWQgIWltcG9ydGFudDtvdXRsaW5lLW9mZnNldDogJHt0aGVtZS5hY2Nlc3NpYmlsaXR5LmhpZ2hsaWdodE9mZnNldH07fWApKTtcclxuXHJcbiAgICAgIGlmICh0aGVtZS5hY2Nlc3NpYmlsaXR5LmhvdmVyRW5hYmxlZCkge1xyXG4gICAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAuJHtwcmVmaXh9YWNjZXNzOmhvdmVye291dGxpbmU6ICR7b3V0bGluZUNvbG9yfSAke3RoZW1lLmFjY2Vzc2liaWxpdHkuaGlnaGxpZ2h0VGhpY2tuZXNzfSBzb2xpZCAhaW1wb3J0YW50O291dGxpbmUtb2Zmc2V0OiAke3RoZW1lLmFjY2Vzc2liaWxpdHkuaGlnaGxpZ2h0T2Zmc2V0fTt9YCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVuZGVyIHRoZSBidXR0b24gY29sb3Igc3R5bGVzXHJcbiAgICBpZiAodGhlbWUuYnV0dG9uQ29sb3JQYWxldHRlKSB7XHJcbiAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBPYmplY3Qua2V5cyh0aGVtZS5idXR0b25Db2xvclBhbGV0dGUpKSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSAodGhlbWUuYnV0dG9uQ29sb3JQYWxldHRlIGFzIGFueSlbcHJvcF0gYXMgc3RyaW5nO1xyXG5cclxuICAgICAgICBjb25zdCBjb2xvciA9IHZhbHVlLnN0YXJ0c1dpdGgoJyMnKSA/IHZhbHVlIDogJyMnICsgdmFsdWU7XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZUNvbG9ycyhzdHlsZSwgY29sb3IsIHByZWZpeCArIHRoaXMudG9TbmFrZUNhc2UocHJvcCkpO1xyXG5cclxuICAgICAgICByb290VmFycyArPSBgLS0ke3ByZWZpeH0ke3RoaXMudG9LZWJhYkNhc2UocHJvcCl9OiAke2NvbG9yfTtgO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoZW1lLnN0eWxpbmdWYXJpYWJsZXMpIHtcclxuICAgICAgaWYgKHRoZW1lLnN0eWxpbmdWYXJpYWJsZXMuaW5wdXRUZXh0U2l6ZSkge1xyXG4gICAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAuJHtwcmVmaXh9cHRsX2lucHV0X3RleHRfc2l6ZXtmb250LXNpemU6ICR7dGhlbWUuc3R5bGluZ1ZhcmlhYmxlcy5pbnB1dFRleHRTaXplfTt9YCkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhlbWUuc3R5bGluZ1ZhcmlhYmxlcy5pbnB1dExhYmVsU2l6ZSkge1xyXG4gICAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAuJHtwcmVmaXh9cHRsX2lucHV0X2xhYmVsX3NpemV7Zm9udC1zaXplOiAke3RoZW1lLnN0eWxpbmdWYXJpYWJsZXMuaW5wdXRMYWJlbFNpemV9O31gKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGVtZS5zdHlsaW5nVmFyaWFibGVzLmlucHV0QmdDb2xvcikge1xyXG4gICAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAuJHtwcmVmaXh9cHRsX2lucHV0X2JnX2NvbG9ye2JhY2tncm91bmQtY29sb3I6ICR7dGhpcy5hZGRIYXNobWFyayh0aGVtZS5zdHlsaW5nVmFyaWFibGVzLmlucHV0QmdDb2xvcil9O2NvbG9yOiAke3RoaXMuZ2V0VGV4dENvbG9yKHRoZW1lLnN0eWxpbmdWYXJpYWJsZXMuaW5wdXRCZ0NvbG9yKX19YCkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhlbWUuc3R5bGluZ1ZhcmlhYmxlcy5ib3JkZXJDb2xvcikge1xyXG4gICAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAuJHtwcmVmaXh9cHRsX2JyZHJfY29sb3J7Ym9yZGVyLWNvbG9yOiAke3RoaXMuYWRkSGFzaG1hcmsodGhlbWUuc3R5bGluZ1ZhcmlhYmxlcy5ib3JkZXJDb2xvcil9O31gKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGVtZS5zdHlsaW5nVmFyaWFibGVzLmJvcmRlclNpemUpIHtcclxuICAgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgLiR7cHJlZml4fXB0bF9icmRyX3NpemV7Ym9yZGVyLXdpZHRoOiAke3RoZW1lLnN0eWxpbmdWYXJpYWJsZXMuYm9yZGVyU2l6ZX07Ym9yZGVyLXN0eWxlOnNvbGlkO31gKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGVtZS5zdHlsaW5nVmFyaWFibGVzLmJvcmRlclJhZGl1cykge1xyXG4gICAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAuJHtwcmVmaXh9cHRsX2JyZHJfcmFkaXVze2JvcmRlci1yYWRpdXM6ICR7dGhlbWUuc3R5bGluZ1ZhcmlhYmxlcy5ib3JkZXJSYWRpdXN9O31gKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGVtZS5zdHlsaW5nVmFyaWFibGVzLmlucHV0SGVpZ2h0KSB7XHJcbiAgICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYC4ke3ByZWZpeH1wdGxfaW5wdXRfaGVpZ2h0e2hlaWdodDogJHt0aGVtZS5zdHlsaW5nVmFyaWFibGVzLmlucHV0SGVpZ2h0fTt9YCkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhlbWUuc3R5bGluZ1ZhcmlhYmxlcy5pbnB1dFBhZGRpbmcpIHtcclxuICAgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgLiR7cHJlZml4fXB0bF9pbnB1dF9wYWRkaW5ne3BhZGRpbmc6ICR7dGhlbWUuc3R5bGluZ1ZhcmlhYmxlcy5pbnB1dFBhZGRpbmd9O31gKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGVtZS5zdHlsaW5nVmFyaWFibGVzLnRvb2x0aXBUZXh0U2l6ZSB8fCB0aGVtZS5zdHlsaW5nVmFyaWFibGVzLnRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpIHtcclxuICAgICAgICBjb25zdCBiZ0NvbG9yID0gdGhlbWUuc3R5bGluZ1ZhcmlhYmxlcy50b29sdGlwQmFja2dyb3VuZENvbG9yO1xyXG4gICAgICAgIGNvbnN0IHRleHRTaXplID0gdGhlbWUuc3R5bGluZ1ZhcmlhYmxlcy50b29sdGlwVGV4dFNpemU7XHJcbiAgICAgICAgY29uc3QgYm9yZGVyU2l6ZSA9IHRoZW1lLnN0eWxpbmdWYXJpYWJsZXMudG9vbHRpcEJvcmRlclNpemU7XHJcbiAgICAgICAgY29uc3QgYm9yZGVyQ29sb3IgPSB0aGVtZS5zdHlsaW5nVmFyaWFibGVzLnRvb2x0aXBCb3JkZXJDb2xvcjtcclxuICAgICAgICBjb25zdCBjYXJldFNpemUgPSB0aGVtZS5zdHlsaW5nVmFyaWFibGVzLnRvb2x0aXBDYXJldFNpemUgPz8gJzZweCc7XHJcblxyXG4gICAgICAgIGxldCB0b29sdGlwU3R5bGUgPSAnLnBhcnRpY2xlX3Rvb2x0aXB7JztcclxuXHJcbiAgICAgICAgaWYgKGJnQ29sb3IpIHtcclxuICAgICAgICAgIGNvbnN0IHRleHRDb2xvciA9IHRoaXMuZ2V0VGV4dENvbG9yKGJnQ29sb3IpO1xyXG4gICAgICAgICAgdG9vbHRpcFN0eWxlICs9IGBjb2xvcjogJHt0ZXh0Q29sb3J9O2A7XHJcbiAgICAgICAgICB0b29sdGlwU3R5bGUgKz0gYGJhY2tncm91bmQtY29sb3I6ICR7YmdDb2xvcn07YDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChib3JkZXJDb2xvciAmJiBib3JkZXJTaXplKSB7XHJcbiAgICAgICAgICB0b29sdGlwU3R5bGUgKz0gYGJvcmRlcjogJHtib3JkZXJTaXplfSBzb2xpZCAke2JvcmRlckNvbG9yfTtgO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRleHRTaXplKSB7XHJcbiAgICAgICAgICB0b29sdGlwU3R5bGUgKz0gJ2ZvbnQtc2l6ZTogJyArIHRleHRTaXplICsgJzsnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdG9vbHRpcFN0eWxlICs9ICd9JztcclxuICAgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0b29sdGlwU3R5bGUpKTtcclxuXHJcbiAgICAgICAgbGV0IGNhcmV0U3R5bGVDb2xvcjogc3RyaW5nID0gbnVsbCBhcyBhbnk7XHJcbiAgICAgICAgaWYgKGJvcmRlckNvbG9yICYmIGJvcmRlclNpemUpIHtcclxuICAgICAgICAgIGNhcmV0U3R5bGVDb2xvciA9IGJvcmRlckNvbG9yO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoYmdDb2xvcikge1xyXG4gICAgICAgICAgY2FyZXRTdHlsZUNvbG9yID0gYmdDb2xvcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjYXJldFN0eWxlQ29sb3IpIHtcclxuICAgICAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAucGFydGljbGVfdG9vbHRpcC5yaWdodDo6YWZ0ZXJ7Ym9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAke2NhcmV0U3R5bGVDb2xvcn0gdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7bWFyZ2luLXRvcDogLSR7Y2FyZXRTaXplfTtib3JkZXItd2lkdGg6ICR7Y2FyZXRTaXplfTt9YCkpO1xyXG4gICAgICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYC5wYXJ0aWNsZV90b29sdGlwLmxlZnQ6OmFmdGVye2JvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgJHtjYXJldFN0eWxlQ29sb3J9O21hcmdpbi10b3A6IC0ke2NhcmV0U2l6ZX07Ym9yZGVyLXdpZHRoOiAke2NhcmV0U2l6ZX07fWApKTtcclxuICAgICAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAucGFydGljbGVfdG9vbHRpcC50b3A6OmFmdGVye2JvcmRlci1jb2xvcjogJHtjYXJldFN0eWxlQ29sb3J9IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O21hcmdpbi1sZWZ0OiAtJHtjYXJldFNpemV9O2JvcmRlci13aWR0aDogJHtjYXJldFNpemV9O31gKSk7XHJcbiAgICAgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgLnBhcnRpY2xlX3Rvb2x0aXAuYm90dG9tOjphZnRlcntib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICR7Y2FyZXRTdHlsZUNvbG9yfSB0cmFuc3BhcmVudDttYXJnaW4tbGVmdDogLSR7Y2FyZXRTaXplfTtib3JkZXItd2lkdGg6ICR7Y2FyZXRTaXplfTt9YCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGhlYWQgPSBkb2N1bWVudC5oZWFkIHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XHJcblxyXG4gICAgdGhpcy5yZW1vdmVUaGVtZUZyb21IZWFkZXIocHJlZml4KTtcclxuXHJcbiAgICAvLyBXcml0ZSB0aGUgZm9udHMgdG8gdGhlIGhlYWRlclxyXG4gICAgaWYgKHByZWZpeCA9PT0gJycpIHtcclxuICAgICAgdGhpcy5hZGRGb250cyh0aGVtZSwgaGVhZCwgc3R5bGUpO1xyXG4gICAgICByb290VmFycyA9IHRoaXMuY3JlYXRlWkluZGV4ZXMocm9vdFZhcnMsIHRoZW1lLnpJbmRleExpc3QgYXMgQXJyYXk8c3RyaW5nPik7XHJcbiAgICB9XHJcblxyXG4gICAgcm9vdFZhcnMgKz0gJ30nO1xyXG4gICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocm9vdFZhcnMpKTtcclxuICAgIHN0eWxlLnNldEF0dHJpYnV0ZSgnaWQnLCAocHJlZml4ID8gcHJlZml4ICsgJy0nIDogJycpICsgJ3BhcnRpY2xlLXRoZW1lJyk7XHJcbiAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcclxuXHJcbiAgICB0aGlzLnRoZW1lQ2hhbmdlRGV0ZWN0aW9uU2VydmljZS5jaGFuZ2VUaGVtZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRIYXNobWFyayhjb2xvcjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBjb2xvci5zdGFydHNXaXRoKCcjJykgPyBjb2xvciA6ICcjJyArIGNvbG9yO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRGb250cyh0aGVtZTogVGhlbWUsIGhlYWQ6IEhUTUxIZWFkRWxlbWVudCwgc3R5bGU6IEhUTUxTdHlsZUVsZW1lbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhlbWUuZm9udHMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBkZWZhdWx0Rm9udDogVGhlbWVGb250ID0gbnVsbCBhcyBhbnk7XHJcbiAgICBmb3IgKGNvbnN0IGZvbnQgb2YgdGhlbWUuZm9udHMpIHtcclxuICAgICAgaWYgKGZvbnQuaXNEZWZhdWx0IHx8IHRoZW1lLmZvbnRzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgIGRlZmF1bHRGb250ID0gZm9udDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF0aGlzLmZvbnRFeGlzdHMoaGVhZCwgZm9udCkpIHtcclxuICAgICAgICBsZXQgZWxlbWVudDogSFRNTExpbmtFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO1xyXG4gICAgICAgIGlmIChmb250LnNvdXJjZSA9PT0gJ2Fkb2JlJykge1xyXG4gICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBgaHR0cHM6Ly91c2UudHlwZWtpdC5uZXQvJHtmb250LmlkfS5jc3NgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBgaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PSR7Zm9udC5uYW1lLnJlcGxhY2UoJyAnLCAnKycpfSZkaXNwbGF5PXN3YXBgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3JlbCcsICdzdHlsZXNoZWV0Jyk7XHJcbiAgICAgICAgaGVhZC5hcHBlbmRDaGlsZChlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGBodG1sICogeyBmb250LWZhbWlseTogJHtkZWZhdWx0Rm9udC5uYW1lfSwgJHtkZWZhdWx0Rm9udC5pc1NlcmlmID8gJ3NlcmlmJyA6ICdzYW5zLXNlcmlmJ307IH1gKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvbnRFeGlzdHMoaGVhZDogSFRNTEhlYWRFbGVtZW50LCBmb250OiBUaGVtZUZvbnQpOiBib29sZWFuIHtcclxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgPGFueT5oZWFkLmNoaWxkTm9kZXMpIHtcclxuICAgICAgaWYgKGNoaWxkLmhyZWYgJiYgZm9udC5zb3VyY2UgPT09ICdhZG9iZScgJiYgY2hpbGQuaHJlZi5pbmRleE9mKGZvbnQuaWQpID4gLTEpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmIChjaGlsZC5ocmVmICYmIGNoaWxkLmhyZWYuaW5kZXhPZihmb250Lm5hbWUucmVwbGFjZSgnICcsICcrJykpID4gLTEpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVRoZW1lRnJvbUhlYWRlcihwcmVmaXg6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIDxhbnk+aGVhZC5jaGlsZE5vZGVzKSB7XHJcbiAgICAgIGlmICgoY2hpbGQgYXMgRWxlbWVudCkuaWQgPT09IChwcmVmaXggPyBwcmVmaXggKyAnLScgOiAnJykgKyAncGFydGljbGUtdGhlbWUnKSB7XHJcbiAgICAgICAgaGVhZC5yZW1vdmVDaGlsZChjaGlsZCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERldGVybWluZXMgdGhlIGNvbnRyYXN0IGJldHdlZW4gYSBnaXZlbiBjb2xvciBhbmQgaXRzIGF1dG8tc2VsZWN0ZWQgdGV4dCBjb2xvclxyXG4gICAqXHJcbiAgICogQHBhcmFtIGNvbG9yXHJcbiAgICovXHJcbiAgZ2V0Q29udHJhc3QoY29sb3I6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICBjb25zdCBjb2xvclJnYiA9IHRoaXMuaGV4VG9SZ2IoY29sb3IpO1xyXG4gICAgY29uc3QgdGV4dENvbG9yUmdiID0gdGhpcy5oZXhUb1JnYih0aGlzLmdldFRleHRDb2xvcihjb2xvcikpO1xyXG4gICAgcmV0dXJuIHRoaXMuY29udHJhc3QoY29sb3JSZ2IsIHRleHRDb2xvclJnYik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWxjdWxhdGVzIGx1bWluYW5jZVxyXG4gICAqXHJcbiAgICogQHBhcmFtIHJcclxuICAgKiBAcGFyYW0gZ1xyXG4gICAqIEBwYXJhbSBiXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsdW1pbmFuY2UocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBjb25zdCBhID0gW3IsIGcsIGJdLm1hcChmdW5jdGlvbiAodikge1xyXG4gICAgICB2IC89IDI1NTtcclxuICAgICAgcmV0dXJuIHYgPD0gMC4wMzkyOFxyXG4gICAgICAgID8gdiAvIDEyLjkyXHJcbiAgICAgICAgOiBNYXRoLnBvdygodiArIDAuMDU1KSAvIDEuMDU1LCAyLjQpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gYVswXSAqIDAuMjEyNiArIGFbMV0gKiAwLjcxNTIgKyBhWzJdICogMC4wNzIyO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0RhcmtUaGVtZShjb2xvcjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCByZ2IgPSB0aGlzLmhleFRvUmdiKGNvbG9yKTtcclxuICAgIHJldHVybiAodGhpcy5sdW1pbmFuY2UocmdiLnIsIHJnYi5nLCByZ2IuYikgKiAxMDApIDwgNTA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWxjdWxhdGVzIHRoZSBjb250cmFzdFxyXG4gICAqXHJcbiAgICogQHBhcmFtIHJnYjFcclxuICAgKiBAcGFyYW0gcmdiMlxyXG4gICAqL1xyXG4gIHByaXZhdGUgY29udHJhc3QocmdiMTogYW55LCByZ2IyOiBhbnkpOiBudW1iZXIge1xyXG4gICAgbGV0IGNvbnRyYXN0ID0gKHRoaXMubHVtaW5hbmNlKHJnYjEuciwgcmdiMS5nLCByZ2IxLmIpICsgMC4wNSlcclxuICAgICAgLyAodGhpcy5sdW1pbmFuY2UocmdiMi5yLCByZ2IyLmcsIHJnYjIuYikgKyAwLjA1KTtcclxuXHJcbiAgICBpZiAoY29udHJhc3QgPCAxKSB7XHJcbiAgICAgIGNvbnRyYXN0ID0gKHRoaXMubHVtaW5hbmNlKHJnYjIuciwgcmdiMi5nLCByZ2IyLmIpICsgMC4wNSlcclxuICAgICAgICAvICh0aGlzLmx1bWluYW5jZShyZ2IxLnIsIHJnYjEuZywgcmdiMS5iKSArIDAuMDUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb250cmFzdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIG1heGltYWxseSBjb250cmFzdGluZyB0ZXh0IGNvbG9yIGZvciB0aGUgc3VwcGxpZWQgYmFja2dyb3VuZCBjb2xvclxyXG4gICAqXHJcbiAgICogQHBhcmFtIGNvbG9yXHJcbiAgICovXHJcbiAgZ2V0VGV4dENvbG9yKGNvbG9yOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcmdiID0gdGhpcy5oZXhUb1JnYihjb2xvcik7XHJcbiAgICBsZXQgdGV4dFJnYiA9IHRoaXMuaGV4VG9SZ2IoJyNGRkZGRkYnKTtcclxuICAgIGNvbnN0IHdoaXRlQ29udHJhc3QgPSB0aGlzLmNvbnRyYXN0KHRleHRSZ2IsIHJnYik7XHJcblxyXG4gICAgdGV4dFJnYiA9IHRoaXMuaGV4VG9SZ2IoJyMyMjIyMjInKTtcclxuICAgIGNvbnN0IGJsYWNrQ29udHJhc3QgPSB0aGlzLmNvbnRyYXN0KHRleHRSZ2IsIHJnYik7XHJcblxyXG4gICAgLy8gNyBpcyB0aGUgY29udHJhc3QgcmF0aW8gZm9yIFdDQUcgQUFBLCBpZiB3ZSdyZSBsZXNzIHRoYW4gdGhhdCwgZ28gZnVsbCBibGFjayBmb3IgbWF4IGNvbnRyYXN0XHJcbiAgICBpZiAoYmxhY2tDb250cmFzdCA+IHdoaXRlQ29udHJhc3QgJiYgYmxhY2tDb250cmFzdCA8IDcpIHtcclxuICAgICAgcmV0dXJuICcjMDAwMDAwJztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gd2hpdGVDb250cmFzdCA+IGJsYWNrQ29udHJhc3QgPyAnI0ZGRkZGRicgOiAnIzIyMjIyMic7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZW5lcmF0ZXMgdGhlIENTUyBmb3IgZWFjaCBvZiB0aGUgY29sb3JzIGluIHRoZSB0aGVtZS4gV2lsbCB3cml0ZSB0aGUgYmFzZSBjb2xvciBhbmQgOSBsaWdodCBhbmQgZGFyayB2YXJpYW50cyBvZiB0aGUgZ2l2ZW4gY29sb3IuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gc3R5bGVcclxuICAgKiBAcGFyYW0gY29sb3JcclxuICAgKiBAcGFyYW0gY2xhc3NOYW1lXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZUNvbG9ycyhzdHlsZTogSFRNTFN0eWxlRWxlbWVudCwgY29sb3I6IHN0cmluZywgY2xhc3NOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICghY29sb3IpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCB0ZXh0Q29sb3IgPSB0aGlzLmdldFRleHRDb2xvcihjb2xvcik7XHJcbiAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgLiR7Y2xhc3NOYW1lfXtiYWNrZ3JvdW5kLWNvbG9yOiAke2NvbG9yfTtjb2xvcjogJHt0ZXh0Q29sb3J9O2ZpbGw6IGN1cnJlbnRDb2xvcjt9YCkpO1xyXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCAxMDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IG5ld0NvbG9yID0gdGhpcy5saWdodGVuRGFya2VuQ29sb3IoY29sb3IsIGkgKiAxMCk7XHJcbiAgICAgIHRleHRDb2xvciA9IHRoaXMuZ2V0VGV4dENvbG9yKG5ld0NvbG9yKTtcclxuXHJcbiAgICAgIHN0eWxlLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAuJHtjbGFzc05hbWV9X2xpZ2h0XyR7aX17YmFja2dyb3VuZC1jb2xvcjogJHtuZXdDb2xvcn07Y29sb3I6ICR7dGV4dENvbG9yfTtmaWxsOiBjdXJyZW50Q29sb3I7fWApKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IDEwOyBpKyspIHtcclxuICAgICAgY29uc3QgbmV3Q29sb3IgPSB0aGlzLmxpZ2h0ZW5EYXJrZW5Db2xvcihjb2xvciwgMCAtIChpICogMTApKTtcclxuICAgICAgdGV4dENvbG9yID0gdGhpcy5nZXRUZXh0Q29sb3IobmV3Q29sb3IpO1xyXG5cclxuICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYC4ke2NsYXNzTmFtZX1fZGFya18ke2l9e2JhY2tncm91bmQtY29sb3I6ICR7bmV3Q29sb3J9O2NvbG9yOiAke3RleHRDb2xvcn07ZmlsbDogY3VycmVudENvbG9yO31gKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXREZWZhdWx0WkluZGV4ZXMoKTogQXJyYXk8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0WkluZGV4ZXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVpJbmRleGVzKHJvb3RWYXJzOiBzdHJpbmcsIHpJbmRleGVzOiBBcnJheTxzdHJpbmc+KTogc3RyaW5nIHtcclxuICAgIGxldCB6SW5kZXhlc1RvQ3JlYXRlID0gdGhpcy5kZWZhdWx0WkluZGV4ZXM7XHJcblxyXG4gICAgaWYgKHpJbmRleGVzKSB7XHJcbiAgICAgIGlmICh6SW5kZXhlcy5pbmNsdWRlcyhaX0lOREVYX0xBWUVSUy5CQVNFKVxyXG4gICAgICAgICYmIHpJbmRleGVzLmluY2x1ZGVzKFpfSU5ERVhfTEFZRVJTLkZSQU1FKVxyXG4gICAgICAgICYmIHpJbmRleGVzLmluY2x1ZGVzKFpfSU5ERVhfTEFZRVJTLk9WRVJMQVkpXHJcbiAgICAgICAgJiYgekluZGV4ZXMuaW5jbHVkZXMoWl9JTkRFWF9MQVlFUlMuRElBTE9HKVxyXG4gICAgICAgICYmIHpJbmRleGVzLmluY2x1ZGVzKFpfSU5ERVhfTEFZRVJTLk5PVElGSUNBVElPTilcclxuICAgICAgKSB7XHJcbiAgICAgICAgekluZGV4ZXNUb0NyZWF0ZSA9IHpJbmRleGVzO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUud2FybignVEhFTUlORzogWiBJbmRleCBMaXN0IG1pc3NpbmcgcmVxdWlyZWQgbGF5ZXJzLCBpZ25vcmluZyBwcm92aWRlZCBsaXN0LicpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGkgPSAwO1xyXG4gICAgZm9yIChjb25zdCB6SW5kZXggb2YgekluZGV4ZXNUb0NyZWF0ZSkge1xyXG4gICAgICByb290VmFycyArPSBgLS16LSR7ekluZGV4fTogJHtpKyt9O2A7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJvb3RWYXJzO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
510
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3RoZW1pbmcvc2VydmljZXMvdGhlbWluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQW1CLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDOzs7O0FBT3ZFLE1BQU0sT0FBTyxjQUFjO0lBd0NmO0lBQ0E7SUF2Q1YsK0NBQStDO0lBQzlCLGVBQWUsR0FBa0I7UUFDaEQsY0FBYyxDQUFDLElBQUk7UUFDbkIsY0FBYyxDQUFDLEtBQUs7UUFDcEIsY0FBYyxDQUFDLE9BQU87UUFDdEIsY0FBYyxDQUFDLE1BQU07UUFDckIsY0FBYyxDQUFDLFlBQVk7S0FDNUIsQ0FBQztJQUVGOztPQUVHO0lBQ2MsU0FBUyxHQUFHLE9BQU8sQ0FBQztJQUVyQzs7T0FFRztJQUNLLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBVSxFQUFFLENBQUMsQ0FBQztJQUUxQyxjQUFjLEdBQUcsSUFBSSxlQUFlLENBQVEsSUFBVyxDQUFDLENBQUM7SUFFakUsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFHRDs7T0FFRztJQUNPLGVBQWUsR0FBVyxJQUFXLENBQUM7SUFFaEQ7Ozs7O09BS0c7SUFDSCxZQUNVLG1CQUF3QyxFQUN4QywyQkFBd0Q7UUFEeEQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxnQ0FBMkIsR0FBM0IsMkJBQTJCLENBQTZCO0lBRWxFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssV0FBVyxDQUFDLElBQVk7UUFDOUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFD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QU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7dUdBeGtCVSxjQUFjOzJHQUFkLGNBQWMsY0FGYixNQUFNOzsyRkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtUaGVtZSwgVGhlbWVGb250LCBaX0lOREVYX0xBWUVSU30gZnJvbSAnLi4vbW9kZWxzL3RoZW1lLm1vZGVsJztcclxuaW1wb3J0IHtUaGVtZUNoYW5nZURldGVjdGlvblNlcnZpY2V9IGZyb20gJy4vdGhlbWUtY2hhbmdlLWRldGVjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtMb2NhbFN0b3JhZ2VTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRoZW1pbmdTZXJ2aWNlIHtcclxuXHJcbiAgLy8gUFNBOiBPUkRFUiBNQVRURVJTLCBETyBOT1QgTU9WRSBJVEVNUyBBUk9VTkRcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRaSW5kZXhlczogQXJyYXk8c3RyaW5nPiA9IFtcclxuICAgIFpfSU5ERVhfTEFZRVJTLkJBU0UsXHJcbiAgICBaX0lOREVYX0xBWUVSUy5GUkFNRSxcclxuICAgIFpfSU5ERVhfTEFZRVJTLk9WRVJMQVksXHJcbiAgICBaX0lOREVYX0xBWUVSUy5ESUFMT0csXHJcbiAgICBaX0lOREVYX0xBWUVSUy5OT1RJRklDQVRJT05cclxuICBdO1xyXG5cclxuICAvKipcclxuICAgKiBQcmVmaXggdXNlZCB0byBidWlsZCB0aGUga2V5IGZvciBsb2NhbCBzdG9yYWdlIG9mIHRoZSB0aGVtZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgVEhFTUVfS0VZID0gJ3RoZW1lJztcclxuXHJcbiAgLyoqXHJcbiAgICogQSBwcml2YXRlIEJlaGF2aW9yU3ViamVjdCB0byBzdG9yZSB0aGUgbG9hZGVkIHRoZW1lc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgdGhlbWVzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUaGVtZVtdPihbXSk7XHJcblxyXG4gIHByaXZhdGUgJHNlbGVjdGVkVGhlbWUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRoZW1lPihudWxsIGFzIGFueSk7XHJcblxyXG4gIGdldCBzZWxlY3RlZFRoZW1lKCk6IE9ic2VydmFibGU8VGhlbWU+IHtcclxuICAgIHJldHVybiB0aGlzLiRzZWxlY3RlZFRoZW1lLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEtleSBmb3IgdGhlIHByb2R1Y3QgdGhpcyBpcyBkZXBsb3llZCBpbnRvXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGFwcGxpY2F0aW9uTmFtZTogc3RyaW5nID0gbnVsbCBhcyBhbnk7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdG9yXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbG9jYWxTdG9yYWdlU2VydmljZVxyXG4gICAqIEBwYXJhbSB0aGVtZUNoYW5nZURldGVjdGlvblNlcnZpY2VcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbG9jYWxTdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgdGhlbWVDaGFuZ2VEZXRlY3Rpb25TZXJ2aWNlOiBUaGVtZUNoYW5nZURldGVjdGlvblNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnZlcnRzIGEgSlNPTiBwcm9wZXJ0eSBuYW1lIHRvIHNuYWtlIGNhc2VcclxuICAgKlxyXG4gICAqIEBwYXJhbSBwcm9wXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB0b1NuYWtlQ2FzZShwcm9wOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHByb3Auc3BsaXQoLyg/PVtBLVpdKS8pLmpvaW4oJ18nKS50b0xvd2VyQ2FzZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b0tlYmFiQ2FzZShwcm9wOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHByb3Auc3BsaXQoLyg/PVtBLVpdKS8pLmpvaW4oJy0nKS50b0xvd2VyQ2FzZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb252ZXJ0VW5kZXJzY29yZVRvRGFzaChwcm9wOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHByb3Auc3BsaXQoJ18nKS5qb2luKCctJykudG9Mb3dlckNhc2UoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvciB0aGUgZ2l2ZW4gY29sb3IsIGl0J2xsIGxpZ2h0ZW4gb3IgZGFya2VuIHRoZSBjb2xvciBieSB0aGUgcGVyY2VudGFnZSBzdXBwbGllZC4gUG9zaXRpdmUgcGVyY2VudCB3aWxsIGxpZ2h0ZW4sIG5lZ2F0aXZlIHRvIGRhcmtlbi5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBjb2xvclxyXG4gICAqIEBwYXJhbSBwZXJjZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsaWdodGVuRGFya2VuQ29sb3IoY29sb3I6IHN0cmluZywgcGVyY2VudDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCB1c2VQb3VuZCA9IGZhbHNlO1xyXG4gICAgaWYgKGNvbG9yWzBdID09PSAnIycpIHtcclxuICAgICAgY29sb3IgPSBjb2xvci5zbGljZSgxKTtcclxuICAgICAgdXNlUG91bmQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG51bSA9IHBhcnNlSW50KGNvbG9yLCAxNik7XHJcblxyXG4gICAgbGV0IHIgPSAobnVtID4+IDE2KSArIHBlcmNlbnQ7XHJcbiAgICBpZiAociA+IDI1NSkge1xyXG4gICAgICByID0gMjU1O1xyXG4gICAgfSBlbHNlIGlmIChyIDwgMCkge1xyXG4gICAgICByID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgYiA9ICgobnVtID4+IDgpICYgMHgwMEZGKSArIHBlcmNlbnQ7XHJcbiAgICBpZiAoYiA+IDI1NSkge1xyXG4gICAgICBiID0gMjU1O1xyXG4gICAgfSBlbHNlIGlmIChiIDwgMCkge1xyXG4gICAgICBiID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZyA9IChudW0gJiAweDAwMDBGRikgKyBwZXJjZW50O1xyXG4gICAgaWYgKGcgPiAyNTUpIHtcclxuICAgICAgZyA9IDI1NTtcclxuICAgIH0gZWxzZSBpZiAoZyA8IDApIHtcclxuICAgICAgZyA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG5ld0NvbG9yID0gKGcgfCAoYiA8PCA4KSB8IChyIDw8IDE2KSkudG9TdHJpbmcoMTYpO1xyXG5cclxuICAgIHdoaWxlIChuZXdDb2xvci5sZW5ndGggPCA2KSB7XHJcbiAgICAgIG5ld0NvbG9yID0gJzAnICsgbmV3Q29sb3I7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICh1c2VQb3VuZCA/ICcjJyA6ICcnKSArIG5ld0NvbG9yO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udmVydHMgYSBoZXggdmFsdWUgdG8gYSBKYXZhc2NyaXB0IG9iamVjdCB3aXRoIHIsZywgYW5kIGIgdmFyaWFibGVzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGhleFxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGV4VG9SZ2IoaGV4OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgY29uc3QgcmVzdWx0ID0gL14jPyhbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KSQvaS5leGVjKGhleCk7XHJcbiAgICByZXR1cm4gcmVzdWx0ID8ge1xyXG4gICAgICByOiBwYXJzZUludChyZXN1bHRbMV0sIDE2KSxcclxuICAgICAgZzogcGFyc2VJbnQocmVzdWx0WzJdLCAxNiksXHJcbiAgICAgIGI6IHBhcnNlSW50KHJlc3VsdFszXSwgMTYpXHJcbiAgICB9IDogbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlcyBhIHJhbmRvbSBoZXggY29sb3JcclxuICAgKi9cclxuICBnZXRSYW5kb21Db2xvcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICcjJyArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDE2Nzc3MjE1KS50b1N0cmluZygxNik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPbiBBcHAgSW5pdGlhbGl6YXRpb24gKGluIGFwcC5jb21wb25lbnQudHMsIG5nT25Jbml0KSBjYWxsIHRoaXMgdG8gbG9hZCB0aGVtZXMgYW5kIGFwcGx5IHRoZSB1c2VyIHNlbGVjdGVkIHRoZW1lIG9yIGRlZmF1bHQgdGhlbWUuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gYXBwbGljYXRpb25OYW1lXHJcbiAgICogQHBhcmFtIHRoZW1lc1xyXG4gICAqL1xyXG4gIGFwcEluaXQoYXBwbGljYXRpb25OYW1lOiBzdHJpbmcsIHRoZW1lczogVGhlbWVbXSk6IHZvaWQge1xyXG4gICAgICBpZiAoIWFwcGxpY2F0aW9uTmFtZSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQXBwbGljYXRpb24gTmFtZSB3YXMgbm90IHN1cHBsaWVkLicpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmFwcGxpY2F0aW9uTmFtZSA9IGFwcGxpY2F0aW9uTmFtZTtcclxuICAgICAgdGhpcy50aGVtZXMubmV4dCh0aGVtZXMpO1xyXG4gICAgICB0aGlzLmFwcGx5U2V0dGluZ3MoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiB0aGUgdGhlbWVzIGZvciB0aGUgY3VycmVudCBhcHBcclxuICAgKi9cclxuICBnZXRUaGVtZXMoKTogT2JzZXJ2YWJsZTxUaGVtZVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy50aGVtZXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBseSB0aGUgc2VsZWN0ZWQgdGhlbWVcclxuICAgKi9cclxuICBhcHBseVNldHRpbmdzKCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLmdldFRoZW1lKCk7XHJcbiAgICB0aGlzLiRzZWxlY3RlZFRoZW1lLm5leHQoc2V0dGluZ3MpO1xyXG4gICAgdGhpcy5jaGFuZ2VDb2xvcnMoc2V0dGluZ3MpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyBhIHRoZW1lIG9iamVjdCBiYXNlZCBvbiBhbm90aGVyIHRoZW1lIG9iamVjdFxyXG4gICAqXHJcbiAgICogQHBhcmFtIHRoZW1lXHJcbiAgICovXHJcbiAgZ2VuZXJhdGVUaGVtZSh0aGVtZT86IFRoZW1lKTogVGhlbWUge1xyXG4gICAgbGV0IG5ld1RoZW1lOiBUaGVtZSA9IHt9IGFzIFRoZW1lO1xyXG4gICAgaWYgKHRoZW1lKSB7XHJcbiAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBPYmplY3Qua2V5cyh0aGVtZSkpIHtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgbmV3VGhlbWVbcHJvcF0gPSB0aGVtZVtwcm9wXTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3VGhlbWUgPSB0aGlzLnRoZW1lcy5nZXRWYWx1ZSgpLmZpbmQodGhlVGhlbWUgPT4gdGhlVGhlbWUuaXNEZWZhdWx0KSBhcyBUaGVtZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbmV3VGhlbWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiB0aGUgY29sb3IgY2xhc3NlcyBzcGVjaWZpY2FsbHkgYmFzZWQgb24gdGhlIHByb3BlcnRpZXMgb2YgdGhlIHRoZW1lIG1vZGVsXHJcbiAgICovXHJcbiAgZ2V0Q2xhc3Nlc0Zyb21UaGVtZSh0aGVtZTogVGhlbWUpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBjbGFzc2VzID0gW107XHJcbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgT2JqZWN0LmtleXModGhlbWUpKSB7XHJcbiAgICAgIGlmIChwcm9wLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2JnJykgfHwgcHJvcC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdjb2xvcicpKSB7XHJcbiAgICAgICAgY2xhc3Nlcy5wdXNoKHByb3Auc3BsaXQoLyg/PVtBLVpdKS8pLmpvaW4oJ18nKS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjbGFzc2VzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgdXNlciBzZWxlY3RlZCB0aGVtZSBmcm9tIGxvY2FsIHN0b3JhZ2VcclxuICAgKi9cclxuICBnZXRUaGVtZSgpOiBUaGVtZSB7XHJcbiAgICBjb25zdCB0aGVtZUlkID0gdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLmdldE9iamVjdCh0aGlzLmFwcGxpY2F0aW9uTmFtZSArIHRoaXMuVEhFTUVfS0VZKTtcclxuICAgIGxldCBkZWZhdWx0VGhlbWUgPSB0aGlzLnRoZW1lcy52YWx1ZS5maWx0ZXIodGhlbWUgPT4gdGhlbWUuaXNEZWZhdWx0KVswXTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IHRoZW1lIG9mIHRoaXMudGhlbWVzLnZhbHVlKSB7XHJcbiAgICAgIGlmICh0aGVtZS50aGVtZUlkID09PSB0aGVtZUlkKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoZW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRlZmF1bHRUaGVtZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBlcnNpc3RzIHRoZSB1c2VyIHNlbGVjdGVkIHRoZW1lIGluIGxvY2FsIHN0b3JhZ2VcclxuICAgKlxyXG4gICAqIEBwYXJhbSBzZXR0aW5nc1xyXG4gICAqL1xyXG4gIHNhdmVUaGVtZShzZXR0aW5nczogVGhlbWUpOiB2b2lkIHtcclxuICAgIHRoaXMuJHNlbGVjdGVkVGhlbWUubmV4dChzZXR0aW5ncyk7XHJcbiAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UucHV0T2JqZWN0KHRoaXMuYXBwbGljYXRpb25OYW1lICsgdGhpcy5USEVNRV9LRVksIHNldHRpbmdzLnRoZW1lSWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV3JpdGVzIHRoZSB0aGVtZSBpbmZvcm1hdGlvbiB0byBhIHN0eWxlIHRhZyBpbiB0aGUgaGVhZGVyIHNvIHRoYXQgdGhlIHRoZW1lIGlzIGFwcGxpZWQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdGhlbWVcclxuICAgKiBAcGFyYW0gcHJlZml4XHJcbiAgICovXHJcbiAgY2hhbmdlQ29sb3JzKHRoZW1lOiBUaGVtZSwgcHJlZml4Pzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoIXByZWZpeCkge1xyXG4gICAgICBwcmVmaXggPSAnJztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XHJcbiAgICBsZXQgcm9vdFZhcnMgPSAnOnJvb3Qgeyc7XHJcblxyXG4gICAgLy8gUmVuZGVyIHRoZSBjb2xvciBwYWxldHRlIHN0eWxlc1xyXG4gICAgaWYgKHRoZW1lLmNvbG9yUGFsZXR0ZSkge1xyXG4gICAgICBmb3IgKGNvbnN0IHByb3Agb2YgT2JqZWN0LmtleXModGhlbWUuY29sb3JQYWxldHRlKSkge1xyXG4gICAgICAgIGlmIChwcm9wICE9PSAnZXh0ZW5zaW9uJykge1xyXG4gICAgICAgICAgY29uc3QgdmFsdWUgPSAodGhlbWUuY29sb3JQYWxldHRlIGFzIGFueSlbcHJvcF0gYXMgc3RyaW5nO1xyXG5cclxuICAgICAgICAgIGNvbnN0IGNvbG9yID0gdGhpcy5hZGRIYXNobWFyayh2YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLmdlbmVyYXRlQ29sb3JzKHN0eWxlLCBjb2xvciwgcHJlZml4ICsgdGhpcy50b1NuYWtlQ2FzZShwcm9wKSk7XHJcblxyXG4gICAgICAgICAgcm9vdFZhcnMgKz0gYC0tJHtwcmVmaXh9JHt0aGlzLnRvS2ViYWJDYXNlKHByb3ApfS1jb2xvcjogJHtjb2xvcn07YDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGZvciAoY29uc3QgZXh0ZW5zaW9uIG9mIHRoZW1lLmNvbG9yUGFsZXR0ZS5leHRlbnNpb24pIHtcclxuICAgICAgICBpZiAoZXh0ZW5zaW9uLnRleHRDb2xvciAmJiAhZXh0ZW5zaW9uLmNvbG9yKSB7XHJcbiAgICAgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgLiR7cHJlZml4fSR7ZXh0ZW5zaW9uLmNsYXNzTmFtZX17Y29sb3I6ICR7dGhpcy5hZGRIYXNobWFyayhleHRlbnNpb24udGV4dENvbG9yKX07fWApKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChleHRlbnNpb24uY29sb3IpIHtcclxuICAgICAgICAgIGlmICghZXh0ZW5zaW9uLnRleHRDb2xvcikge1xyXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlQ29sb3JzKHN0eWxlLCB0aGlzLmFkZEhhc2htYXJrKGV4dGVuc2lvbi5jb2xvciBhcyBzdHJpbmcpLCBwcmVmaXggKyBleHRlbnNpb24uY2xhc3NOYW1lKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAuJHtwcmVmaXh9JHtleHRlbnNpb24uY2xhc3NOYW1lfXtiYWNrZ3JvdW5kLWNvbG9yOiAke3RoaXMuYWRkSGFzaG1hcmsoZXh0ZW5zaW9uLmNvbG9yKX07Y29sb3I6ICR7dGhpcy5hZGRIYXNobWFyayhleHRlbnNpb24udGV4dENvbG9yKX07ZmlsbDogY3VycmVudENvbG9yO31gKSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgcm9vdFZhcnMgKz0gYC0tJHtwcmVmaXh9JHt0aGlzLmNvbnZlcnRVbmRlcnNjb3JlVG9EYXNoKGV4dGVuc2lvbi5jbGFzc05hbWUpfTogJHt0aGlzLmFkZEhhc2htYXJrKGV4dGVuc2lvbi5jb2xvciBhcyBzdHJpbmcpfTtgO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFJlbmRlciB0aGUgbGF5b3V0IGNvbG9yIHN0eWxlc1xyXG4gICAgaWYgKHRoZW1lLmxheW91dENvbG9ycykge1xyXG4gICAgICBmb3IgKGNvbnN0IHByb3Agb2YgT2JqZWN0LmtleXModGhlbWUubGF5b3V0Q29sb3JzKSkge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gKHRoZW1lLmxheW91dENvbG9ycyBhcyBhbnkpW3Byb3BdIGFzIHN0cmluZztcclxuXHJcbiAgICAgICAgY29uc3QgY29sb3IgPSB2YWx1ZS5zdGFydHNXaXRoKCcjJykgPyB2YWx1ZSA6ICcjJyArIHZhbHVlO1xyXG4gICAgICAgIHRoaXMuZ2VuZXJhdGVDb2xvcnMoc3R5bGUsIGNvbG9yLCBwcmVmaXggKyB0aGlzLnRvU25ha2VDYXNlKHByb3ApKTtcclxuICAgICAgICByb290VmFycyArPSBgLS0ke3ByZWZpeH0ke3RoaXMudG9LZWJhYkNhc2UocHJvcCl9OiAke2NvbG9yfTtgO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5pc0RhcmtUaGVtZSh0aGVtZS5sYXlvdXRDb2xvcnMuYm9keUNvbG9yKSkge1xyXG4gICAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAuJHtwcmVmaXh9Ymdfb3ZlcmxheXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMC4wNSk7Y29sb3I6aW5oZXJpdDt9YCkpO1xyXG4gICAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAuJHtwcmVmaXh9Ymdfb3ZlcmxheV9yZXZ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDAuMDUpO2NvbG9yOmluaGVyaXQ7fWApKTtcclxuICAgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgLiR7cHJlZml4fWJyZHJ7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDE1MCwxNTAsMTUwLDAuNSk7fWApKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgLiR7cHJlZml4fWJnX292ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDAuMSk7Y29sb3I6aW5oZXJpdDt9YCkpO1xyXG4gICAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAuJHtwcmVmaXh9Ymdfb3ZlcmxheV9yZXZ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDAuMDQpO2NvbG9yOmluaGVyaXQ7fWApKTtcclxuICAgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgLiR7cHJlZml4fWJyZHJ7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDE1MCwxNTAsMTUwLDAuNSk7fWApKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGVtZS5hY2Nlc3NpYmlsaXR5ICYmIHRoZW1lLmFjY2Vzc2liaWxpdHkuZW5hYmxlZCkge1xyXG4gICAgICBjb25zdCBvdXRsaW5lQ29sb3IgPSB0aGVtZS5hY2Nlc3NpYmlsaXR5LmhpZ2hsaWdodENvbG9yLnN0YXJ0c1dpdGgoJyMnKSA/IHRoZW1lLmFjY2Vzc2liaWxpdHkuaGlnaGxpZ2h0Q29sb3IgOiAnIycgKyB0aGVtZS5hY2Nlc3NpYmlsaXR5LmhpZ2hsaWdodENvbG9yO1xyXG4gICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgLiR7cHJlZml4fWFjY2Vzc3tvdXRsaW5lOiAke291dGxpbmVDb2xvcn0gJHt0aGVtZS5hY2Nlc3NpYmlsaXR5LmhpZ2hsaWdodFRoaWNrbmVzc30gc29saWQgIWltcG9ydGFudDtvdXRsaW5lLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O3RyYW5zaXRpb246YWxsIDAuM3MgZWFzZS1pbi1vdXQ7fWApKTtcclxuICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYC4ke3ByZWZpeH1hY2Nlc3M6Zm9jdXN7b3V0bGluZTogJHtvdXRsaW5lQ29sb3J9ICR7dGhlbWUuYWNjZXNzaWJpbGl0eS5oaWdobGlnaHRUaGlja25lc3N9IHNvbGlkICFpbXBvcnRhbnQ7b3V0bGluZS1vZmZzZXQ6ICR7dGhlbWUuYWNjZXNzaWJpbGl0eS5oaWdobGlnaHRPZmZzZXR9O31gKSk7XHJcblxyXG4gICAgICBpZiAodGhlbWUuYWNjZXNzaWJpbGl0eS5ob3ZlckVuYWJsZWQpIHtcclxuICAgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgLiR7cHJlZml4fWFjY2Vzczpob3ZlcntvdXRsaW5lOiAke291dGxpbmVDb2xvcn0gJHt0aGVtZS5hY2Nlc3NpYmlsaXR5LmhpZ2hsaWdodFRoaWNrbmVzc30gc29saWQgIWltcG9ydGFudDtvdXRsaW5lLW9mZnNldDogJHt0aGVtZS5hY2Nlc3NpYmlsaXR5LmhpZ2hsaWdodE9mZnNldH07fWApKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFJlbmRlciB0aGUgYnV0dG9uIGNvbG9yIHN0eWxlc1xyXG4gICAgaWYgKHRoZW1lLmJ1dHRvbkNvbG9yUGFsZXR0ZSkge1xyXG4gICAgICBmb3IgKGNvbnN0IHByb3Agb2YgT2JqZWN0LmtleXModGhlbWUuYnV0dG9uQ29sb3JQYWxldHRlKSkge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gKHRoZW1lLmJ1dHRvbkNvbG9yUGFsZXR0ZSBhcyBhbnkpW3Byb3BdIGFzIHN0cmluZztcclxuXHJcbiAgICAgICAgY29uc3QgY29sb3IgPSB2YWx1ZS5zdGFydHNXaXRoKCcjJykgPyB2YWx1ZSA6ICcjJyArIHZhbHVlO1xyXG4gICAgICAgIHRoaXMuZ2VuZXJhdGVDb2xvcnMoc3R5bGUsIGNvbG9yLCBwcmVmaXggKyB0aGlzLnRvU25ha2VDYXNlKHByb3ApKTtcclxuXHJcbiAgICAgICAgcm9vdFZhcnMgKz0gYC0tJHtwcmVmaXh9JHt0aGlzLnRvS2ViYWJDYXNlKHByb3ApfTogJHtjb2xvcn07YDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGVtZS5zdHlsaW5nVmFyaWFibGVzKSB7XHJcbiAgICAgIGlmICh0aGVtZS5zdHlsaW5nVmFyaWFibGVzLmlucHV0VGV4dFNpemUpIHtcclxuICAgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgLiR7cHJlZml4fXB0bF9pbnB1dF90ZXh0X3NpemV7Zm9udC1zaXplOiAke3RoZW1lLnN0eWxpbmdWYXJpYWJsZXMuaW5wdXRUZXh0U2l6ZX07fWApKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoZW1lLnN0eWxpbmdWYXJpYWJsZXMuaW5wdXRMYWJlbFNpemUpIHtcclxuICAgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgLiR7cHJlZml4fXB0bF9pbnB1dF9sYWJlbF9zaXple2ZvbnQtc2l6ZTogJHt0aGVtZS5zdHlsaW5nVmFyaWFibGVzLmlucHV0TGFiZWxTaXplfTt9YCkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhlbWUuc3R5bGluZ1ZhcmlhYmxlcy5pbnB1dEJnQ29sb3IpIHtcclxuICAgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgLiR7cHJlZml4fXB0bF9pbnB1dF9iZ19jb2xvcntiYWNrZ3JvdW5kLWNvbG9yOiAke3RoaXMuYWRkSGFzaG1hcmsodGhlbWUuc3R5bGluZ1ZhcmlhYmxlcy5pbnB1dEJnQ29sb3IpfTtjb2xvcjogJHt0aGlzLmdldFRleHRDb2xvcih0aGVtZS5zdHlsaW5nVmFyaWFibGVzLmlucHV0QmdDb2xvcil9fWApKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoZW1lLnN0eWxpbmdWYXJpYWJsZXMuYm9yZGVyQ29sb3IpIHtcclxuICAgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgLiR7cHJlZml4fXB0bF9icmRyX2NvbG9ye2JvcmRlci1jb2xvcjogJHt0aGlzLmFkZEhhc2htYXJrKHRoZW1lLnN0eWxpbmdWYXJpYWJsZXMuYm9yZGVyQ29sb3IpfTt9YCkpO1xyXG4gICAgICAgIHJvb3RWYXJzICs9IGAtLSR7cHJlZml4fXB0bC1icmRyLWNvbG9yOiAke3RoaXMuYWRkSGFzaG1hcmsodGhlbWUuc3R5bGluZ1ZhcmlhYmxlcy5ib3JkZXJDb2xvcil9O2A7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGVtZS5zdHlsaW5nVmFyaWFibGVzLmJvcmRlclNpemUpIHtcclxuICAgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgLiR7cHJlZml4fXB0bF9icmRyX3NpemV7Ym9yZGVyLXdpZHRoOiAke3RoZW1lLnN0eWxpbmdWYXJpYWJsZXMuYm9yZGVyU2l6ZX07Ym9yZGVyLXN0eWxlOnNvbGlkO31gKSk7XHJcbiAgICAgICAgcm9vdFZhcnMgKz0gYC0tJHtwcmVmaXh9cHRsLWJyZHItc2l6ZTogJHt0aGVtZS5zdHlsaW5nVmFyaWFibGVzLmJvcmRlclNpemV9O2A7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGVtZS5zdHlsaW5nVmFyaWFibGVzLmJvcmRlclJhZGl1cykge1xyXG4gICAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAuJHtwcmVmaXh9cHRsX2JyZHJfcmFkaXVze2JvcmRlci1yYWRpdXM6ICR7dGhlbWUuc3R5bGluZ1ZhcmlhYmxlcy5ib3JkZXJSYWRpdXN9O31gKSk7XHJcbiAgICAgICAgcm9vdFZhcnMgKz0gYC0tJHtwcmVmaXh9cHRsLWJyZHItcmFkaXVzOiAke3RoZW1lLnN0eWxpbmdWYXJpYWJsZXMuYm9yZGVyUmFkaXVzfTtgO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhlbWUuc3R5bGluZ1ZhcmlhYmxlcy5pbnB1dEhlaWdodCkge1xyXG4gICAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAuJHtwcmVmaXh9cHRsX2lucHV0X2hlaWdodHtoZWlnaHQ6ICR7dGhlbWUuc3R5bGluZ1ZhcmlhYmxlcy5pbnB1dEhlaWdodH07fWApKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoZW1lLnN0eWxpbmdWYXJpYWJsZXMuaW5wdXRQYWRkaW5nKSB7XHJcbiAgICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYC4ke3ByZWZpeH1wdGxfaW5wdXRfcGFkZGluZ3twYWRkaW5nOiAke3RoZW1lLnN0eWxpbmdWYXJpYWJsZXMuaW5wdXRQYWRkaW5nfTt9YCkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhlbWUuc3R5bGluZ1ZhcmlhYmxlcy50b29sdGlwVGV4dFNpemUgfHwgdGhlbWUuc3R5bGluZ1ZhcmlhYmxlcy50b29sdGlwQmFja2dyb3VuZENvbG9yKSB7XHJcbiAgICAgICAgY29uc3QgYmdDb2xvciA9IHRoZW1lLnN0eWxpbmdWYXJpYWJsZXMudG9vbHRpcEJhY2tncm91bmRDb2xvcjtcclxuICAgICAgICBjb25zdCB0ZXh0U2l6ZSA9IHRoZW1lLnN0eWxpbmdWYXJpYWJsZXMudG9vbHRpcFRleHRTaXplO1xyXG4gICAgICAgIGNvbnN0IGJvcmRlclNpemUgPSB0aGVtZS5zdHlsaW5nVmFyaWFibGVzLnRvb2x0aXBCb3JkZXJTaXplO1xyXG4gICAgICAgIGNvbnN0IGJvcmRlckNvbG9yID0gdGhlbWUuc3R5bGluZ1ZhcmlhYmxlcy50b29sdGlwQm9yZGVyQ29sb3I7XHJcbiAgICAgICAgY29uc3QgY2FyZXRTaXplID0gdGhlbWUuc3R5bGluZ1ZhcmlhYmxlcy50b29sdGlwQ2FyZXRTaXplID8/ICc2cHgnO1xyXG5cclxuICAgICAgICBsZXQgdG9vbHRpcFN0eWxlID0gJy5wYXJ0aWNsZV90b29sdGlweyc7XHJcblxyXG4gICAgICAgIGlmIChiZ0NvbG9yKSB7XHJcbiAgICAgICAgICBjb25zdCB0ZXh0Q29sb3IgPSB0aGlzLmdldFRleHRDb2xvcihiZ0NvbG9yKTtcclxuICAgICAgICAgIHRvb2x0aXBTdHlsZSArPSBgY29sb3I6ICR7dGV4dENvbG9yfTtgO1xyXG4gICAgICAgICAgdG9vbHRpcFN0eWxlICs9IGBiYWNrZ3JvdW5kLWNvbG9yOiAke2JnQ29sb3J9O2A7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoYm9yZGVyQ29sb3IgJiYgYm9yZGVyU2l6ZSkge1xyXG4gICAgICAgICAgdG9vbHRpcFN0eWxlICs9IGBib3JkZXI6ICR7Ym9yZGVyU2l6ZX0gc29saWQgJHtib3JkZXJDb2xvcn07YDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0ZXh0U2l6ZSkge1xyXG4gICAgICAgICAgdG9vbHRpcFN0eWxlICs9ICdmb250LXNpemU6ICcgKyB0ZXh0U2l6ZSArICc7JztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRvb2x0aXBTdHlsZSArPSAnfSc7XHJcbiAgICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodG9vbHRpcFN0eWxlKSk7XHJcblxyXG4gICAgICAgIGxldCBjYXJldFN0eWxlQ29sb3I6IHN0cmluZyA9IG51bGwgYXMgYW55O1xyXG4gICAgICAgIGlmIChib3JkZXJDb2xvciAmJiBib3JkZXJTaXplKSB7XHJcbiAgICAgICAgICBjYXJldFN0eWxlQ29sb3IgPSBib3JkZXJDb2xvcjtcclxuICAgICAgICB9IGVsc2UgaWYgKGJnQ29sb3IpIHtcclxuICAgICAgICAgIGNhcmV0U3R5bGVDb2xvciA9IGJnQ29sb3I7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2FyZXRTdHlsZUNvbG9yKSB7XHJcbiAgICAgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgLnBhcnRpY2xlX3Rvb2x0aXAucmlnaHQ6OmFmdGVye2JvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgJHtjYXJldFN0eWxlQ29sb3J9IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O21hcmdpbi10b3A6IC0ke2NhcmV0U2l6ZX07Ym9yZGVyLXdpZHRoOiAke2NhcmV0U2l6ZX07fWApKTtcclxuICAgICAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAucGFydGljbGVfdG9vbHRpcC5sZWZ0OjphZnRlcntib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICR7Y2FyZXRTdHlsZUNvbG9yfTttYXJnaW4tdG9wOiAtJHtjYXJldFNpemV9O2JvcmRlci13aWR0aDogJHtjYXJldFNpemV9O31gKSk7XHJcbiAgICAgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgLnBhcnRpY2xlX3Rvb2x0aXAudG9wOjphZnRlcntib3JkZXItY29sb3I6ICR7Y2FyZXRTdHlsZUNvbG9yfSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDttYXJnaW4tbGVmdDogLSR7Y2FyZXRTaXplfTtib3JkZXItd2lkdGg6ICR7Y2FyZXRTaXplfTt9YCkpO1xyXG4gICAgICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYC5wYXJ0aWNsZV90b29sdGlwLmJvdHRvbTo6YWZ0ZXJ7Ym9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAke2NhcmV0U3R5bGVDb2xvcn0gdHJhbnNwYXJlbnQ7bWFyZ2luLWxlZnQ6IC0ke2NhcmV0U2l6ZX07Ym9yZGVyLXdpZHRoOiAke2NhcmV0U2l6ZX07fWApKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBoZWFkID0gZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xyXG5cclxuICAgIHRoaXMucmVtb3ZlVGhlbWVGcm9tSGVhZGVyKHByZWZpeCk7XHJcblxyXG4gICAgLy8gV3JpdGUgdGhlIGZvbnRzIHRvIHRoZSBoZWFkZXJcclxuICAgIGlmIChwcmVmaXggPT09ICcnKSB7XHJcbiAgICAgIHRoaXMuYWRkRm9udHModGhlbWUsIGhlYWQsIHN0eWxlKTtcclxuICAgICAgcm9vdFZhcnMgPSB0aGlzLmNyZWF0ZVpJbmRleGVzKHJvb3RWYXJzLCB0aGVtZS56SW5kZXhMaXN0IGFzIEFycmF5PHN0cmluZz4pO1xyXG4gICAgfVxyXG5cclxuICAgIHJvb3RWYXJzICs9ICd9JztcclxuICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHJvb3RWYXJzKSk7XHJcbiAgICBzdHlsZS5zZXRBdHRyaWJ1dGUoJ2lkJywgKHByZWZpeCA/IHByZWZpeCArICctJyA6ICcnKSArICdwYXJ0aWNsZS10aGVtZScpO1xyXG4gICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XHJcblxyXG4gICAgdGhpcy50aGVtZUNoYW5nZURldGVjdGlvblNlcnZpY2UuY2hhbmdlVGhlbWUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkSGFzaG1hcmsoY29sb3I6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gY29sb3Iuc3RhcnRzV2l0aCgnIycpID8gY29sb3IgOiAnIycgKyBjb2xvcjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkRm9udHModGhlbWU6IFRoZW1lLCBoZWFkOiBIVE1MSGVhZEVsZW1lbnQsIHN0eWxlOiBIVE1MU3R5bGVFbGVtZW50KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoZW1lLmZvbnRzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZGVmYXVsdEZvbnQ6IFRoZW1lRm9udCA9IG51bGwgYXMgYW55O1xyXG4gICAgZm9yIChjb25zdCBmb250IG9mIHRoZW1lLmZvbnRzKSB7XHJcbiAgICAgIGlmIChmb250LmlzRGVmYXVsdCB8fCB0aGVtZS5mb250cy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICBkZWZhdWx0Rm9udCA9IGZvbnQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghdGhpcy5mb250RXhpc3RzKGhlYWQsIGZvbnQpKSB7XHJcbiAgICAgICAgbGV0IGVsZW1lbnQ6IEhUTUxMaW5rRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtcclxuICAgICAgICBpZiAoZm9udC5zb3VyY2UgPT09ICdhZG9iZScpIHtcclxuICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdocmVmJywgYGh0dHBzOi8vdXNlLnR5cGVraXQubmV0LyR7Zm9udC5pZH0uY3NzYCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdocmVmJywgYGh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT0ke2ZvbnQubmFtZS5yZXBsYWNlKCcgJywgJysnKX0mZGlzcGxheT1zd2FwYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdyZWwnLCAnc3R5bGVzaGVldCcpO1xyXG4gICAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgaHRtbCAqIHsgZm9udC1mYW1pbHk6ICR7ZGVmYXVsdEZvbnQubmFtZX0sICR7ZGVmYXVsdEZvbnQuaXNTZXJpZiA/ICdzZXJpZicgOiAnc2Fucy1zZXJpZid9OyB9YCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb250RXhpc3RzKGhlYWQ6IEhUTUxIZWFkRWxlbWVudCwgZm9udDogVGhlbWVGb250KTogYm9vbGVhbiB7XHJcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIDxhbnk+aGVhZC5jaGlsZE5vZGVzKSB7XHJcbiAgICAgIGlmIChjaGlsZC5ocmVmICYmIGZvbnQuc291cmNlID09PSAnYWRvYmUnICYmIGNoaWxkLmhyZWYuaW5kZXhPZihmb250LmlkKSA+IC0xKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoY2hpbGQuaHJlZiAmJiBjaGlsZC5ocmVmLmluZGV4T2YoZm9udC5uYW1lLnJlcGxhY2UoJyAnLCAnKycpKSA+IC0xKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICByZW1vdmVUaGVtZUZyb21IZWFkZXIocHJlZml4OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGhlYWQgPSBkb2N1bWVudC5oZWFkIHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XHJcblxyXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiA8YW55PmhlYWQuY2hpbGROb2Rlcykge1xyXG4gICAgICBpZiAoKGNoaWxkIGFzIEVsZW1lbnQpLmlkID09PSAocHJlZml4ID8gcHJlZml4ICsgJy0nIDogJycpICsgJ3BhcnRpY2xlLXRoZW1lJykge1xyXG4gICAgICAgIGhlYWQucmVtb3ZlQ2hpbGQoY2hpbGQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXRlcm1pbmVzIHRoZSBjb250cmFzdCBiZXR3ZWVuIGEgZ2l2ZW4gY29sb3IgYW5kIGl0cyBhdXRvLXNlbGVjdGVkIHRleHQgY29sb3JcclxuICAgKlxyXG4gICAqIEBwYXJhbSBjb2xvclxyXG4gICAqL1xyXG4gIGdldENvbnRyYXN0KGNvbG9yOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgY29uc3QgY29sb3JSZ2IgPSB0aGlzLmhleFRvUmdiKGNvbG9yKTtcclxuICAgIGNvbnN0IHRleHRDb2xvclJnYiA9IHRoaXMuaGV4VG9SZ2IodGhpcy5nZXRUZXh0Q29sb3IoY29sb3IpKTtcclxuICAgIHJldHVybiB0aGlzLmNvbnRyYXN0KGNvbG9yUmdiLCB0ZXh0Q29sb3JSZ2IpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FsY3VsYXRlcyBsdW1pbmFuY2VcclxuICAgKlxyXG4gICAqIEBwYXJhbSByXHJcbiAgICogQHBhcmFtIGdcclxuICAgKiBAcGFyYW0gYlxyXG4gICAqL1xyXG4gIHByaXZhdGUgbHVtaW5hbmNlKHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgY29uc3QgYSA9IFtyLCBnLCBiXS5tYXAoZnVuY3Rpb24gKHYpIHtcclxuICAgICAgdiAvPSAyNTU7XHJcbiAgICAgIHJldHVybiB2IDw9IDAuMDM5MjhcclxuICAgICAgICA/IHYgLyAxMi45MlxyXG4gICAgICAgIDogTWF0aC5wb3coKHYgKyAwLjA1NSkgLyAxLjA1NSwgMi40KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGFbMF0gKiAwLjIxMjYgKyBhWzFdICogMC43MTUyICsgYVsyXSAqIDAuMDcyMjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNEYXJrVGhlbWUoY29sb3I6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcmdiID0gdGhpcy5oZXhUb1JnYihjb2xvcik7XHJcbiAgICByZXR1cm4gKHRoaXMubHVtaW5hbmNlKHJnYi5yLCByZ2IuZywgcmdiLmIpICogMTAwKSA8IDUwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FsY3VsYXRlcyB0aGUgY29udHJhc3RcclxuICAgKlxyXG4gICAqIEBwYXJhbSByZ2IxXHJcbiAgICogQHBhcmFtIHJnYjJcclxuICAgKi9cclxuICBwcml2YXRlIGNvbnRyYXN0KHJnYjE6IGFueSwgcmdiMjogYW55KTogbnVtYmVyIHtcclxuICAgIGxldCBjb250cmFzdCA9ICh0aGlzLmx1bWluYW5jZShyZ2IxLnIsIHJnYjEuZywgcmdiMS5iKSArIDAuMDUpXHJcbiAgICAgIC8gKHRoaXMubHVtaW5hbmNlKHJnYjIuciwgcmdiMi5nLCByZ2IyLmIpICsgMC4wNSk7XHJcblxyXG4gICAgaWYgKGNvbnRyYXN0IDwgMSkge1xyXG4gICAgICBjb250cmFzdCA9ICh0aGlzLmx1bWluYW5jZShyZ2IyLnIsIHJnYjIuZywgcmdiMi5iKSArIDAuMDUpXHJcbiAgICAgICAgLyAodGhpcy5sdW1pbmFuY2UocmdiMS5yLCByZ2IxLmcsIHJnYjEuYikgKyAwLjA1KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY29udHJhc3Q7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBtYXhpbWFsbHkgY29udHJhc3RpbmcgdGV4dCBjb2xvciBmb3IgdGhlIHN1cHBsaWVkIGJhY2tncm91bmQgY29sb3JcclxuICAgKlxyXG4gICAqIEBwYXJhbSBjb2xvclxyXG4gICAqL1xyXG4gIGdldFRleHRDb2xvcihjb2xvcjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHJnYiA9IHRoaXMuaGV4VG9SZ2IoY29sb3IpO1xyXG4gICAgbGV0IHRleHRSZ2IgPSB0aGlzLmhleFRvUmdiKCcjRkZGRkZGJyk7XHJcbiAgICBjb25zdCB3aGl0ZUNvbnRyYXN0ID0gdGhpcy5jb250cmFzdCh0ZXh0UmdiLCByZ2IpO1xyXG5cclxuICAgIHRleHRSZ2IgPSB0aGlzLmhleFRvUmdiKCcjMjIyMjIyJyk7XHJcbiAgICBjb25zdCBibGFja0NvbnRyYXN0ID0gdGhpcy5jb250cmFzdCh0ZXh0UmdiLCByZ2IpO1xyXG5cclxuICAgIC8vIDcgaXMgdGhlIGNvbnRyYXN0IHJhdGlvIGZvciBXQ0FHIEFBQSwgaWYgd2UncmUgbGVzcyB0aGFuIHRoYXQsIGdvIGZ1bGwgYmxhY2sgZm9yIG1heCBjb250cmFzdFxyXG4gICAgaWYgKGJsYWNrQ29udHJhc3QgPiB3aGl0ZUNvbnRyYXN0ICYmIGJsYWNrQ29udHJhc3QgPCA3KSB7XHJcbiAgICAgIHJldHVybiAnIzAwMDAwMCc7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHdoaXRlQ29udHJhc3QgPiBibGFja0NvbnRyYXN0ID8gJyNGRkZGRkYnIDogJyMyMjIyMjInO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIHRoZSBDU1MgZm9yIGVhY2ggb2YgdGhlIGNvbG9ycyBpbiB0aGUgdGhlbWUuIFdpbGwgd3JpdGUgdGhlIGJhc2UgY29sb3IgYW5kIDkgbGlnaHQgYW5kIGRhcmsgdmFyaWFudHMgb2YgdGhlIGdpdmVuIGNvbG9yLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHN0eWxlXHJcbiAgICogQHBhcmFtIGNvbG9yXHJcbiAgICogQHBhcmFtIGNsYXNzTmFtZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2VuZXJhdGVDb2xvcnMoc3R5bGU6IEhUTUxTdHlsZUVsZW1lbnQsIGNvbG9yOiBzdHJpbmcsIGNsYXNzTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoIWNvbG9yKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgdGV4dENvbG9yID0gdGhpcy5nZXRUZXh0Q29sb3IoY29sb3IpO1xyXG4gICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYC4ke2NsYXNzTmFtZX17YmFja2dyb3VuZC1jb2xvcjogJHtjb2xvcn07Y29sb3I6ICR7dGV4dENvbG9yfTtmaWxsOiBjdXJyZW50Q29sb3I7fWApKTtcclxuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgMTA7IGkrKykge1xyXG4gICAgICBjb25zdCBuZXdDb2xvciA9IHRoaXMubGlnaHRlbkRhcmtlbkNvbG9yKGNvbG9yLCBpICogMTApO1xyXG4gICAgICB0ZXh0Q29sb3IgPSB0aGlzLmdldFRleHRDb2xvcihuZXdDb2xvcik7XHJcblxyXG4gICAgICBzdHlsZS5hcHBlbmRDaGlsZChcclxuICAgICAgICBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgLiR7Y2xhc3NOYW1lfV9saWdodF8ke2l9e2JhY2tncm91bmQtY29sb3I6ICR7bmV3Q29sb3J9O2NvbG9yOiAke3RleHRDb2xvcn07ZmlsbDogY3VycmVudENvbG9yO31gKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCAxMDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IG5ld0NvbG9yID0gdGhpcy5saWdodGVuRGFya2VuQ29sb3IoY29sb3IsIDAgLSAoaSAqIDEwKSk7XHJcbiAgICAgIHRleHRDb2xvciA9IHRoaXMuZ2V0VGV4dENvbG9yKG5ld0NvbG9yKTtcclxuXHJcbiAgICAgIHN0eWxlLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAuJHtjbGFzc05hbWV9X2RhcmtfJHtpfXtiYWNrZ3JvdW5kLWNvbG9yOiAke25ld0NvbG9yfTtjb2xvcjogJHt0ZXh0Q29sb3J9O2ZpbGw6IGN1cnJlbnRDb2xvcjt9YCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RGVmYXVsdFpJbmRleGVzKCk6IEFycmF5PHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGVmYXVsdFpJbmRleGVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVaSW5kZXhlcyhyb290VmFyczogc3RyaW5nLCB6SW5kZXhlczogQXJyYXk8c3RyaW5nPik6IHN0cmluZyB7XHJcbiAgICBsZXQgekluZGV4ZXNUb0NyZWF0ZSA9IHRoaXMuZGVmYXVsdFpJbmRleGVzO1xyXG5cclxuICAgIGlmICh6SW5kZXhlcykge1xyXG4gICAgICBpZiAoekluZGV4ZXMuaW5jbHVkZXMoWl9JTkRFWF9MQVlFUlMuQkFTRSlcclxuICAgICAgICAmJiB6SW5kZXhlcy5pbmNsdWRlcyhaX0lOREVYX0xBWUVSUy5GUkFNRSlcclxuICAgICAgICAmJiB6SW5kZXhlcy5pbmNsdWRlcyhaX0lOREVYX0xBWUVSUy5PVkVSTEFZKVxyXG4gICAgICAgICYmIHpJbmRleGVzLmluY2x1ZGVzKFpfSU5ERVhfTEFZRVJTLkRJQUxPRylcclxuICAgICAgICAmJiB6SW5kZXhlcy5pbmNsdWRlcyhaX0lOREVYX0xBWUVSUy5OT1RJRklDQVRJT04pXHJcbiAgICAgICkge1xyXG4gICAgICAgIHpJbmRleGVzVG9DcmVhdGUgPSB6SW5kZXhlcztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oJ1RIRU1JTkc6IFogSW5kZXggTGlzdCBtaXNzaW5nIHJlcXVpcmVkIGxheWVycywgaWdub3JpbmcgcHJvdmlkZWQgbGlzdC4nKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBpID0gMDtcclxuICAgIGZvciAoY29uc3QgekluZGV4IG9mIHpJbmRleGVzVG9DcmVhdGUpIHtcclxuICAgICAgcm9vdFZhcnMgKz0gYC0tei0ke3pJbmRleH06ICR7aSsrfTtgO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByb290VmFycztcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGljbGUtY29tcG9uZW50LXRleHQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tb2RlbHMvcGFydGljbGUtY29tcG9uZW50LXRleHQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQWNjb3JkaW9uVGV4dCB7XHJcbiAgZXhwYW5kOiBzdHJpbmc7XHJcbiAgY29sbGFwc2U6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBCdXR0b25UZXh0IHtcclxuICBvazogc3RyaW5nO1xyXG4gIHNhdmU6IHN0cmluZztcclxuICBjYW5jZWw6IHN0cmluZztcclxuICBkZWxldGU6IHN0cmluZztcclxuICBuZXh0OiBzdHJpbmc7XHJcbiAgcHJldmlvdXM6IHN0cmluZztcclxuICBvcGVuOiBzdHJpbmc7XHJcbiAgY2xvc2U6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDYWxlbmRhclRleHQge1xyXG4gIHNlbGVjdEFZZWFyOiBzdHJpbmc7XHJcbiAgc2VsZWN0QU1vbnRoOiBzdHJpbmc7XHJcbiAgamFudWFyeTogc3RyaW5nO1xyXG4gIGZlYnJ1YXJ5OiBzdHJpbmc7XHJcbiAgbWFyY2g6IHN0cmluZztcclxuICBhcHJpbDogc3RyaW5nO1xyXG4gIG1heTogc3RyaW5nO1xyXG4gIGp1bmU6IHN0cmluZztcclxuICBqdWx5OiBzdHJpbmc7XHJcbiAgYXVndXN0OiBzdHJpbmc7XHJcbiAgc2VwdGVtYmVyOiBzdHJpbmc7XHJcbiAgb2N0b2Jlcjogc3RyaW5nO1xyXG4gIG5vdmVtYmVyOiBzdHJpbmc7XHJcbiAgZGVjZW1iZXI6IHN0cmluZztcclxuICBzdW5kYXlBYmJyOiBzdHJpbmc7XHJcbiAgbW9uZGF5QWJicjogc3RyaW5nO1xyXG4gIHR1ZXNkYXlBYmJyOiBzdHJpbmc7XHJcbiAgd2VkbmVzZGF5QWJicjogc3RyaW5nO1xyXG4gIHRodXJzZGF5QWJicjogc3RyaW5nO1xyXG4gIGZyaWRheUFiYnI6IHN0cmluZztcclxuICBzYXR1cmRheUFiYnI6IHN0cmluZztcclxuICBzdW5kYXk6IHN0cmluZztcclxuICBtb25kYXk6IHN0cmluZztcclxuICB0dWVzZGF5OiBzdHJpbmc7XHJcbiAgd2VkbmVzZGF5OiBzdHJpbmc7XHJcbiAgdGh1cnNkYXk6IHN0cmluZztcclxuICBmcmlkYXk6IHN0cmluZztcclxuICBzYXR1cmRheTogc3RyaW5nO1xyXG4gIHNlbGVjdDogc3RyaW5nO1xyXG4gIHRoZTogc3RyaW5nO1xyXG4gIHJlc2V0RGF0ZVRvVG9kYXk6IHN0cmluZztcclxuICBzZWxlY3RUb2RheTogc3RyaW5nO1xyXG4gIHNhdmVEYXRlOiBzdHJpbmc7XHJcbiAgZG9uZTogc3RyaW5nO1xyXG4gIG1pbkdyZWF0ZXJUaGVuTWF4OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tib3hUZXh0IHtcclxuICBjaGVjazogc3RyaW5nO1xyXG4gIHVuY2hlY2s6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb2xvclBpY2tlclRleHQge1xyXG4gIGNob29zZUNvbG9yOiBzdHJpbmc7XHJcbiAgZW50ZXJIZXhDb2RlOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVBpY2tlclRleHQge1xyXG4gIGNhbGVuZGFyVGV4dD86IENhbGVuZGFyVGV4dDtcclxuICBlbnRlckluRm9ybWF0OiBzdHJpbmc7XHJcbiAgb3BlbkNhbGVuZGFyOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVJhbmdlUGlja2VyVGV4dCB7XHJcbiAgY2FsZW5kYXJUZXh0PzogQ2FsZW5kYXJUZXh0O1xyXG4gIGJlZ2luOiBzdHJpbmc7XHJcbiAgZW5kOiBzdHJpbmc7XHJcbiAgZG9uZTogc3RyaW5nO1xyXG4gIGNsZWFyOiBzdHJpbmc7XHJcbiAgb3BlbkNhbGVuZGFyOiBzdHJpbmc7XHJcbiAgc2VsZWN0UmFuZ2U6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaWFsb2dUZXh0IHtcclxuICBjbG9zZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERyb3Bkb3duVGV4dCB7XHJcbiAgcGxhY2Vob2xkZXI6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFbmRwb2ludFN0YXRlVGV4dCB7XHJcbiAgbG9hZGluZ1RleHQ/OiBzdHJpbmc7XHJcbiAgbG9hZGluZ1N1YnRleHQ/OiBzdHJpbmc7XHJcbiAgbG9hZGluZ092ZXJsYXlUZXh0Pzogc3RyaW5nO1xyXG4gIGxvYWRpbmdPdmVybGF5U3VidGV4dD86IHN0cmluZztcclxuICBlbXB0eVRleHQ/OiBzdHJpbmc7XHJcbiAgZW1wdHlTdWJ0ZXh0Pzogc3RyaW5nO1xyXG4gIGVycm9yVGV4dD86IHN0cmluZztcclxuICBlcnJvclN1YnRleHQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSWNvblNlbGVjdFRleHQge1xyXG4gIHNlbGVjdEFuSWNvbjogc3RyaW5nO1xyXG4gIHNlZUFsbEljb25zOiBzdHJpbmc7XHJcbiAgZm9udEF3ZXNvbWVJY29uczogc3RyaW5nO1xyXG4gIGZpbHRlckJ5OiBzdHJpbmc7XHJcbiAgYWxsOiBzdHJpbmc7XHJcbiAgc29saWQ6IHN0cmluZztcclxuICByZWd1bGFyOiBzdHJpbmc7XHJcbiAgYnJhbmRzOiBzdHJpbmc7XHJcbiAgbGlnaHQ6IHN0cmluZztcclxuICBjdXN0b21JY29uczogc3RyaW5nO1xyXG4gIHByZXZpb3VzUGFnZTogc3RyaW5nO1xyXG4gIG5leHRQYWdlOiBzdHJpbmc7XHJcbiAgc2VhcmNoSWNvbnM6IHN0cmluZztcclxuICBzdWJtaXRTZWFyY2g6IHN0cmluZztcclxuICBjbGVhclJlc3VsdHM6IHN0cmluZztcclxuICBjb3VsZG50RmluZEFueXRoaW5nOiBzdHJpbmc7XHJcbiAgbW9kaWZ5U2VhcmNoQ3JpdGVyaWE6IHN0cmluZztcclxuICBzZWxlY3Rpb246IHN0cmluZztcclxuICBjb25maXJtOiBzdHJpbmc7XHJcbiAgc2VsZWN0OiBzdHJpbmc7XHJcbiAgY2xvc2U6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJZGxlVGltZW91dFRleHQge1xyXG4gIHNlc3Npb25FeHBpcmluZzogc3RyaW5nO1xyXG4gIHNlY29uZDogc3RyaW5nO1xyXG4gIHNlY29uZHM6IHN0cmluZztcclxuICBzdGF5TG9nZ2VkSW46IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMb2FkZXJUZXh0IHtcclxuICBsb2FkaW5nVGV4dD86IHN0cmluZztcclxuICBsb2FkaW5nU3VidGV4dD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNdWx0aVNlbGVjdFRleHQge1xyXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgb2Y6IHN0cmluZztcclxuICBvcHRpb25zU2VsZWN0ZWQ6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25UZXh0IHtcclxuICBkaXNtaXNzOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdG9yVGV4dCB7XHJcbiAgaXRlbXNQZXJQYWdlOiBzdHJpbmc7XHJcbiAgY2hvb3NlUGFnZVNpemU6IHN0cmluZztcclxuICBwcmV2aW91c1BhZ2U6IHN0cmluZztcclxuICBuZXh0UGFnZTogc3RyaW5nO1xyXG4gIGRpc2FibGVkOiBzdHJpbmc7XHJcbiAgZmlyc3RQYWdlOiBzdHJpbmc7XHJcbiAgbGFzdFBhZ2U6IHN0cmluZztcclxuICBqdW1wVG9QYWdlOiBzdHJpbmc7XHJcbiAgcGFnZTogc3RyaW5nO1xyXG4gIG91dE9mOiBzdHJpbmc7XHJcbiAgb2Y6IHN0cmluZztcclxuICByZXN1bHRzOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHVzaENvbnRhaW5lclRleHQge1xyXG4gIGNsb3NlOiBzdHJpbmc7XHJcbiAgZXhwYW5kOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmljaFRleHRFZGl0b3JUZXh0IHtcclxuICBoZWFkaW5nMTogc3RyaW5nO1xyXG4gIGhlYWRpbmcyOiBzdHJpbmc7XHJcbiAgYm9sZDogc3RyaW5nO1xyXG4gIGl0YWxpYzogc3RyaW5nO1xyXG4gIHN0cmlrZTogc3RyaW5nO1xyXG4gIGJ1bGxldGVkTGlzdDogc3RyaW5nO1xyXG4gIG9yZGVyZWRMaXN0OiBzdHJpbmc7XHJcbiAgbGVmdEFsaWduOiBzdHJpbmc7XHJcbiAgY2VudGVyQWxpZ246IHN0cmluZztcclxuICByaWdodEFsaWduOiBzdHJpbmc7XHJcbiAganVzdGlmeUFsaWduOiBzdHJpbmc7XHJcbiAgc2V0TGluazogc3RyaW5nO1xyXG4gIHJlbW92ZUxpbms6IHN0cmluZztcclxuICBjbGVhckZvcm1hdDogc3RyaW5nO1xyXG4gIG1vZGlmeUxpbms6IHN0cmluZztcclxuICBjYW5jZWw6IHN0cmluZztcclxuICB1cGRhdGU6IHN0cmluZztcclxuICB1cmw6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTY3JvbGxUb1RvcFRleHQge1xyXG4gIHNjcm9sbFRvVG9wOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2xpZGVvdmVyVGV4dCB7XHJcbiAgY2xvc2U6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTbGlkZXJUZXh0IHtcclxuICBzZWxlY3RBVmFsdWU6IHN0cmluZztcclxuICBlbnRlckFWYWx1ZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRoZW1pbmdUZXh0IHtcclxuICBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFdlZWtQaWNrZXJUZXh0IHtcclxuICBvcGVuQ2FsZW5kYXI6IHN0cmluZztcclxuICBzZWxlY3RXZWVrOiBzdHJpbmc7XHJcbiAgc2VsZWN0WWVhcjogc3RyaW5nO1xyXG4gIHNlbGVjdE1vbnRoOiBzdHJpbmc7XHJcbiAgamFudWFyeTogc3RyaW5nO1xyXG4gIGZlYnJ1YXJ5OiBzdHJpbmc7XHJcbiAgbWFyY2g6IHN0cmluZztcclxuICBhcHJpbDogc3RyaW5nO1xyXG4gIG1heTogc3RyaW5nO1xyXG4gIGp1bmU6IHN0cmluZztcclxuICBqdWx5OiBzdHJpbmc7XHJcbiAgYXVndXN0OiBzdHJpbmc7XHJcbiAgc2VwdGVtYmVyOiBzdHJpbmc7XHJcbiAgb2N0b2Jlcjogc3RyaW5nO1xyXG4gIG5vdmVtYmVyOiBzdHJpbmc7XHJcbiAgZGVjZW1iZXI6IHN0cmluZztcclxuICBzdW5kYXlBYmJyOiBzdHJpbmc7XHJcbiAgbW9uZGF5QWJicjogc3RyaW5nO1xyXG4gIHR1ZXNkYXlBYmJyOiBzdHJpbmc7XHJcbiAgd2VkbmVzZGF5QWJicjogc3RyaW5nO1xyXG4gIHRodXJzZGF5QWJicjogc3RyaW5nO1xyXG4gIGZyaWRheUFiYnI6IHN0cmluZztcclxuICBzYXR1cmRheUFiYnI6IHN0cmluZztcclxuICBzZWxlY3RMYXN0V2Vlazogc3RyaW5nO1xyXG4gIGxhc3RXZWVrOiBzdHJpbmc7XHJcbiAgcmVzZXRXZWVrU2VsZWN0aW9uOiBzdHJpbmc7XHJcbiAgc2VsZWN0TmV4dFdlZWs6IHN0cmluZztcclxuICBuZXh0V2Vlazogc3RyaW5nO1xyXG59XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGljbGUtY29tcG9uZW50LXRleHQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tb2RlbHMvcGFydGljbGUtY29tcG9uZW50LXRleHQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQWNjb3JkaW9uVGV4dCB7XHJcbiAgZXhwYW5kOiBzdHJpbmc7XHJcbiAgY29sbGFwc2U6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBCdXR0b25UZXh0IHtcclxuICBvazogc3RyaW5nO1xyXG4gIHNhdmU6IHN0cmluZztcclxuICBjYW5jZWw6IHN0cmluZztcclxuICBkZWxldGU6IHN0cmluZztcclxuICBuZXh0OiBzdHJpbmc7XHJcbiAgcHJldmlvdXM6IHN0cmluZztcclxuICBvcGVuOiBzdHJpbmc7XHJcbiAgY2xvc2U6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDYWxlbmRhclRleHQge1xyXG4gIHNlbGVjdEFZZWFyOiBzdHJpbmc7XHJcbiAgc2VsZWN0QU1vbnRoOiBzdHJpbmc7XHJcbiAgamFudWFyeTogc3RyaW5nO1xyXG4gIGZlYnJ1YXJ5OiBzdHJpbmc7XHJcbiAgbWFyY2g6IHN0cmluZztcclxuICBhcHJpbDogc3RyaW5nO1xyXG4gIG1heTogc3RyaW5nO1xyXG4gIGp1bmU6IHN0cmluZztcclxuICBqdWx5OiBzdHJpbmc7XHJcbiAgYXVndXN0OiBzdHJpbmc7XHJcbiAgc2VwdGVtYmVyOiBzdHJpbmc7XHJcbiAgb2N0b2Jlcjogc3RyaW5nO1xyXG4gIG5vdmVtYmVyOiBzdHJpbmc7XHJcbiAgZGVjZW1iZXI6IHN0cmluZztcclxuICBzdW5kYXlBYmJyOiBzdHJpbmc7XHJcbiAgbW9uZGF5QWJicjogc3RyaW5nO1xyXG4gIHR1ZXNkYXlBYmJyOiBzdHJpbmc7XHJcbiAgd2VkbmVzZGF5QWJicjogc3RyaW5nO1xyXG4gIHRodXJzZGF5QWJicjogc3RyaW5nO1xyXG4gIGZyaWRheUFiYnI6IHN0cmluZztcclxuICBzYXR1cmRheUFiYnI6IHN0cmluZztcclxuICBzdW5kYXk6IHN0cmluZztcclxuICBtb25kYXk6IHN0cmluZztcclxuICB0dWVzZGF5OiBzdHJpbmc7XHJcbiAgd2VkbmVzZGF5OiBzdHJpbmc7XHJcbiAgdGh1cnNkYXk6IHN0cmluZztcclxuICBmcmlkYXk6IHN0cmluZztcclxuICBzYXR1cmRheTogc3RyaW5nO1xyXG4gIHNlbGVjdDogc3RyaW5nO1xyXG4gIHRoZTogc3RyaW5nO1xyXG4gIHJlc2V0RGF0ZVRvVG9kYXk6IHN0cmluZztcclxuICBzZWxlY3RUb2RheTogc3RyaW5nO1xyXG4gIHNhdmVEYXRlOiBzdHJpbmc7XHJcbiAgZG9uZTogc3RyaW5nO1xyXG4gIG1pbkdyZWF0ZXJUaGVuTWF4OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tib3hUZXh0IHtcclxuICBjaGVjazogc3RyaW5nO1xyXG4gIHVuY2hlY2s6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb2xvclBpY2tlclRleHQge1xyXG4gIGNob29zZUNvbG9yOiBzdHJpbmc7XHJcbiAgZW50ZXJIZXhDb2RlOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVBpY2tlclRleHQge1xyXG4gIGNhbGVuZGFyVGV4dD86IENhbGVuZGFyVGV4dDtcclxuICBlbnRlckluRm9ybWF0OiBzdHJpbmc7XHJcbiAgb3BlbkNhbGVuZGFyOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVJhbmdlUGlja2VyVGV4dCB7XHJcbiAgY2FsZW5kYXJUZXh0PzogQ2FsZW5kYXJUZXh0O1xyXG4gIGJlZ2luOiBzdHJpbmc7XHJcbiAgZW5kOiBzdHJpbmc7XHJcbiAgZG9uZTogc3RyaW5nO1xyXG4gIGNsZWFyOiBzdHJpbmc7XHJcbiAgb3BlbkNhbGVuZGFyOiBzdHJpbmc7XHJcbiAgc2VsZWN0UmFuZ2U6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaWFsb2dUZXh0IHtcclxuICBjbG9zZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERyb3Bkb3duVGV4dCB7XHJcbiAgcGxhY2Vob2xkZXI6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFbmRwb2ludFN0YXRlVGV4dCB7XHJcbiAgbG9hZGluZ1RleHQ/OiBzdHJpbmc7XHJcbiAgbG9hZGluZ1N1YnRleHQ/OiBzdHJpbmc7XHJcbiAgbG9hZGluZ092ZXJsYXlUZXh0Pzogc3RyaW5nO1xyXG4gIGxvYWRpbmdPdmVybGF5U3VidGV4dD86IHN0cmluZztcclxuICBlbXB0eVRleHQ/OiBzdHJpbmc7XHJcbiAgZW1wdHlTdWJ0ZXh0Pzogc3RyaW5nO1xyXG4gIGVycm9yVGV4dD86IHN0cmluZztcclxuICBlcnJvclN1YnRleHQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSWNvblNlbGVjdFRleHQge1xyXG4gIHNlbGVjdEFuSWNvbjogc3RyaW5nO1xyXG4gIHNlZUFsbEljb25zOiBzdHJpbmc7XHJcbiAgZm9udEF3ZXNvbWVJY29uczogc3RyaW5nO1xyXG4gIGZpbHRlckJ5OiBzdHJpbmc7XHJcbiAgYWxsOiBzdHJpbmc7XHJcbiAgc29saWQ6IHN0cmluZztcclxuICByZWd1bGFyOiBzdHJpbmc7XHJcbiAgYnJhbmRzOiBzdHJpbmc7XHJcbiAgbGlnaHQ6IHN0cmluZztcclxuICBjdXN0b21JY29uczogc3RyaW5nO1xyXG4gIHByZXZpb3VzUGFnZTogc3RyaW5nO1xyXG4gIG5leHRQYWdlOiBzdHJpbmc7XHJcbiAgc2VhcmNoSWNvbnM6IHN0cmluZztcclxuICBzdWJtaXRTZWFyY2g6IHN0cmluZztcclxuICBjbGVhclJlc3VsdHM6IHN0cmluZztcclxuICBjb3VsZG50RmluZEFueXRoaW5nOiBzdHJpbmc7XHJcbiAgbW9kaWZ5U2VhcmNoQ3JpdGVyaWE6IHN0cmluZztcclxuICBzZWxlY3Rpb246IHN0cmluZztcclxuICBjb25maXJtOiBzdHJpbmc7XHJcbiAgc2VsZWN0OiBzdHJpbmc7XHJcbiAgY2xvc2U6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJZGxlVGltZW91dFRleHQge1xyXG4gIHNlc3Npb25FeHBpcmluZzogc3RyaW5nO1xyXG4gIHNlY29uZDogc3RyaW5nO1xyXG4gIHNlY29uZHM6IHN0cmluZztcclxuICBzdGF5TG9nZ2VkSW46IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMb2FkZXJUZXh0IHtcclxuICBsb2FkaW5nVGV4dD86IHN0cmluZztcclxuICBsb2FkaW5nU3VidGV4dD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNdWx0aVNlbGVjdFRleHQge1xyXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgb2Y6IHN0cmluZztcclxuICBvcHRpb25zU2VsZWN0ZWQ6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25UZXh0IHtcclxuICBkaXNtaXNzOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdG9yVGV4dCB7XHJcbiAgaXRlbXNQZXJQYWdlOiBzdHJpbmc7XHJcbiAgY2hvb3NlUGFnZVNpemU6IHN0cmluZztcclxuICBwcmV2aW91c1BhZ2U6IHN0cmluZztcclxuICBuZXh0UGFnZTogc3RyaW5nO1xyXG4gIGRpc2FibGVkOiBzdHJpbmc7XHJcbiAgZmlyc3RQYWdlOiBzdHJpbmc7XHJcbiAgbGFzdFBhZ2U6IHN0cmluZztcclxuICBqdW1wVG9QYWdlOiBzdHJpbmc7XHJcbiAgcGFnZTogc3RyaW5nO1xyXG4gIG91dE9mOiBzdHJpbmc7XHJcbiAgb2Y6IHN0cmluZztcclxuICByZXN1bHRzOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHVzaENvbnRhaW5lclRleHQge1xyXG4gIGNsb3NlOiBzdHJpbmc7XHJcbiAgZXhwYW5kOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmljaFRleHRFZGl0b3JUZXh0IHtcclxuICBoZWFkaW5nMTogc3RyaW5nO1xyXG4gIGhlYWRpbmcyOiBzdHJpbmc7XHJcbiAgYm9sZDogc3RyaW5nO1xyXG4gIGl0YWxpYzogc3RyaW5nO1xyXG4gIHN0cmlrZTogc3RyaW5nO1xyXG4gIGJ1bGxldGVkTGlzdDogc3RyaW5nO1xyXG4gIG9yZGVyZWRMaXN0OiBzdHJpbmc7XHJcbiAgbGVmdEFsaWduOiBzdHJpbmc7XHJcbiAgY2VudGVyQWxpZ246IHN0cmluZztcclxuICByaWdodEFsaWduOiBzdHJpbmc7XHJcbiAganVzdGlmeUFsaWduOiBzdHJpbmc7XHJcbiAgc2V0TGluazogc3RyaW5nO1xyXG4gIHJlbW92ZUxpbms6IHN0cmluZztcclxuICBjbGVhckZvcm1hdDogc3RyaW5nO1xyXG4gIG1vZGlmeUxpbms6IHN0cmluZztcclxuICBhZGRJbWFnZTogc3RyaW5nO1xyXG4gIG1vZGlmeUltYWdlOiBzdHJpbmc7XHJcbiAgY2FuY2VsOiBzdHJpbmc7XHJcbiAgdXBkYXRlOiBzdHJpbmc7XHJcbiAgdXJsOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2Nyb2xsVG9Ub3BUZXh0IHtcclxuICBzY3JvbGxUb1RvcDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNsaWRlb3ZlclRleHQge1xyXG4gIGNsb3NlOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2xpZGVyVGV4dCB7XHJcbiAgc2VsZWN0QVZhbHVlOiBzdHJpbmc7XHJcbiAgZW50ZXJBVmFsdWU6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUaGVtaW5nVGV4dCB7XHJcbiAgcGxhY2Vob2xkZXI6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBXZWVrUGlja2VyVGV4dCB7XHJcbiAgb3BlbkNhbGVuZGFyOiBzdHJpbmc7XHJcbiAgc2VsZWN0V2Vlazogc3RyaW5nO1xyXG4gIHNlbGVjdFllYXI6IHN0cmluZztcclxuICBzZWxlY3RNb250aDogc3RyaW5nO1xyXG4gIGphbnVhcnk6IHN0cmluZztcclxuICBmZWJydWFyeTogc3RyaW5nO1xyXG4gIG1hcmNoOiBzdHJpbmc7XHJcbiAgYXByaWw6IHN0cmluZztcclxuICBtYXk6IHN0cmluZztcclxuICBqdW5lOiBzdHJpbmc7XHJcbiAganVseTogc3RyaW5nO1xyXG4gIGF1Z3VzdDogc3RyaW5nO1xyXG4gIHNlcHRlbWJlcjogc3RyaW5nO1xyXG4gIG9jdG9iZXI6IHN0cmluZztcclxuICBub3ZlbWJlcjogc3RyaW5nO1xyXG4gIGRlY2VtYmVyOiBzdHJpbmc7XHJcbiAgc3VuZGF5QWJicjogc3RyaW5nO1xyXG4gIG1vbmRheUFiYnI6IHN0cmluZztcclxuICB0dWVzZGF5QWJicjogc3RyaW5nO1xyXG4gIHdlZG5lc2RheUFiYnI6IHN0cmluZztcclxuICB0aHVyc2RheUFiYnI6IHN0cmluZztcclxuICBmcmlkYXlBYmJyOiBzdHJpbmc7XHJcbiAgc2F0dXJkYXlBYmJyOiBzdHJpbmc7XHJcbiAgc2VsZWN0TGFzdFdlZWs6IHN0cmluZztcclxuICBsYXN0V2Vlazogc3RyaW5nO1xyXG4gIHJlc2V0V2Vla1NlbGVjdGlvbjogc3RyaW5nO1xyXG4gIHNlbGVjdE5leHRXZWVrOiBzdHJpbmc7XHJcbiAgbmV4dFdlZWs6IHN0cmluZztcclxufVxyXG4iXX0=