@seniorsistemas/components-ai 1.0.1 → 1.1.0

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.
Files changed (41) hide show
  1. package/esm2022/lib/components/dynamic-form/dynamic-form.component.mjs +4 -1
  2. package/esm2022/lib/components/dynamic-form/fields/dynamic-field-lookup.component.mjs +4 -1
  3. package/esm2022/lib/components/dynamic-form/fields/dynamic-field-text.component.mjs +12 -12
  4. package/esm2022/lib/components/dynamic-form/fields/dynamic-field-wrapper.component.mjs +6 -6
  5. package/esm2022/lib/components/dynamic-form/models/dynamic-form.models.mjs +1 -1
  6. package/esm2022/lib/directives/money-mask.directive.mjs +60 -0
  7. package/esm2022/lib/directives/phone-mask.directive.mjs +27 -33
  8. package/esm2022/lib/directives/postal-code-mask.directive.mjs +70 -0
  9. package/esm2022/lib/i18n/en-US.json +7 -1
  10. package/esm2022/lib/i18n/es-ES.json +7 -1
  11. package/esm2022/lib/i18n/pt-BR.json +7 -1
  12. package/esm2022/lib/models/entity-list.config.mjs +1 -1
  13. package/esm2022/lib/pipes/cnpj.pipe.mjs +21 -0
  14. package/esm2022/lib/pipes/cpf.pipe.mjs +21 -0
  15. package/esm2022/lib/pipes/document.pipe.mjs +26 -0
  16. package/esm2022/lib/pipes/money.pipe.mjs +27 -0
  17. package/esm2022/lib/pipes/phone.pipe.mjs +26 -0
  18. package/esm2022/lib/pipes/postal-code.pipe.mjs +26 -0
  19. package/esm2022/lib/services/mask.service.mjs +171 -78
  20. package/esm2022/public-api.mjs +10 -2
  21. package/fesm2022/seniorsistemas-components-ai.mjs +501 -216
  22. package/fesm2022/seniorsistemas-components-ai.mjs.map +1 -1
  23. package/lib/components/dynamic-form/models/dynamic-form.models.d.ts +6 -2
  24. package/lib/directives/money-mask.directive.d.ts +20 -0
  25. package/lib/directives/phone-mask.directive.d.ts +8 -3
  26. package/lib/directives/postal-code-mask.directive.d.ts +23 -0
  27. package/lib/models/entity-list.config.d.ts +8 -0
  28. package/lib/pipes/cnpj.pipe.d.ts +10 -0
  29. package/lib/pipes/cpf.pipe.d.ts +10 -0
  30. package/lib/pipes/document.pipe.d.ts +15 -0
  31. package/lib/pipes/money.pipe.d.ts +17 -0
  32. package/lib/pipes/phone.pipe.d.ts +16 -0
  33. package/lib/pipes/postal-code.pipe.d.ts +16 -0
  34. package/lib/services/mask.service.d.ts +18 -27
  35. package/package.json +1 -1
  36. package/public-api.d.ts +9 -1
  37. package/src/lib/i18n/en-US.json +7 -1
  38. package/src/lib/i18n/es-ES.json +7 -1
  39. package/src/lib/i18n/pt-BR.json +7 -1
  40. package/esm2022/lib/directives/cep-mask.directive.mjs +0 -79
  41. package/lib/directives/cep-mask.directive.d.ts +0 -13
@@ -161,6 +161,9 @@ export class DynamicFormComponent {
161
161
  }
162
162
  ngOnInit() {
163
163
  this.initForm();
164
+ if (this.entityData) {
165
+ this.loadEntityData();
166
+ }
164
167
  this.setupConditionalFieldsWatcher();
165
168
  this.formReady.emit(this.form);
166
169
  }
@@ -664,4 +667,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
664
667
  }], fieldSave: [{
665
668
  type: Output
666
669
  }] } });
667
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMtYWkvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1haS9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUEwQixtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFVOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3RG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QUtwQixvQkFBb0I7a0JBckJoQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixZQUFZO3dCQUNaLFlBQVk7d0JBQ1osYUFBYTt3QkFDYix5QkFBeUI7d0JBQ3pCLDJCQUEyQjt3QkFDM0IseUJBQXlCO3dCQUN6Qiw2QkFBNkI7d0JBQzdCLDJCQUEyQjt3QkFDM0IsNkJBQTZCO3FCQUM5QjsySUFLUSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFHRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFSSxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUGFuZWxNb2R1bGUgfSBmcm9tICdwcmltZW5nL3BhbmVsJztcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcbmltcG9ydCB7IERyYXdlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZHJhd2VyJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7IFxuICBEeW5hbWljRm9ybUZpZWxkQ29uZmlnLCBcbiAgRHluYW1pY0Zvcm1TZWN0aW9uLFxuICBEeW5hbWljRm9ybURpc3BsYXlNb2RlLFxuICBEeW5hbWljRm9ybURpYWxvZ0NvbmZpZyxcbiAgRHluYW1pY0Zvcm1EcmF3ZXJDb25maWdcbn0gZnJvbSAnLi9tb2RlbHMvZHluYW1pYy1mb3JtLm1vZGVscyc7XG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE1hc2tTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWFzay5zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy90cmFuc2xhdGUucGlwZSc7XG5pbXBvcnQgeyBEeW5hbWljRmllbGRUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9maWVsZHMvZHluYW1pYy1maWVsZC10ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljRmllbGROdW1iZXJDb21wb25lbnQgfSBmcm9tICcuL2ZpZWxkcy9keW5hbWljLWZpZWxkLW51bWJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY0ZpZWxkRGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vZmllbGRzL2R5bmFtaWMtZmllbGQtZGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY0ZpZWxkRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL2ZpZWxkcy9keW5hbWljLWZpZWxkLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljRmllbGRMb29rdXBDb21wb25lbnQgfSBmcm9tICcuL2ZpZWxkcy9keW5hbWljLWZpZWxkLWxvb2t1cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY0ZpZWxkVGV4dGFyZWFDb21wb25lbnQgfSBmcm9tICcuL2ZpZWxkcy9keW5hbWljLWZpZWxkLXRleHRhcmVhLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpYS1keW5hbWljLWZvcm0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgUGFuZWxNb2R1bGUsXG4gICAgRGlhbG9nTW9kdWxlLFxuICAgIERyYXdlck1vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgVHJhbnNsYXRlUGlwZSxcbiAgICBEeW5hbWljRmllbGRUZXh0Q29tcG9uZW50LFxuICAgIER5bmFtaWNGaWVsZE51bWJlckNvbXBvbmVudCxcbiAgICBEeW5hbWljRmllbGREYXRlQ29tcG9uZW50LFxuICAgIER5bmFtaWNGaWVsZERyb3Bkb3duQ29tcG9uZW50LFxuICAgIER5bmFtaWNGaWVsZExvb2t1cENvbXBvbmVudCxcbiAgICBEeW5hbWljRmllbGRUZXh0YXJlYUNvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGZvcm1GaWVsZHM6IER5bmFtaWNGb3JtRmllbGRDb25maWdbXSA9IFtdO1xuICBASW5wdXQoKSBmb3JtU2VjdGlvbnM6IER5bmFtaWNGb3JtU2VjdGlvbltdID0gW107XG4gIEBJbnB1dCgpIGZpeGVkRmlsdGVyczogRHluYW1pY0Zvcm1GaWVsZENvbmZpZ1tdID0gW107IC8vIEZpbHRyb3MgZml4b3MgKHNlbXByZSB2aXPDrXZlaXMgbm8gdG9wbylcbiAgQElucHV0KCkgZmlsdGVyU2VjdGlvbnM6IER5bmFtaWNGb3JtU2VjdGlvbltdID0gW107IC8vIFNlw6fDtWVzIGRlIGZpbHRyb3MgKGNvbGFwc8OhdmVpcylcbiAgQElucHV0KCkgZW50aXR5RGF0YTogYW55ID0gbnVsbDtcbiAgQElucHV0KCkgbW9kZTogJ2Zvcm0nIHwgJ2ZpbHRlcicgfCAnaW5saW5lLWVkaXQnID0gJ2Zvcm0nO1xuICBcbiAgLy8gRGlzcGxheSBNb2RlIENvbmZpZ3VyYXRpb25cbiAgQElucHV0KCkgZGlzcGxheU1vZGU6IER5bmFtaWNGb3JtRGlzcGxheU1vZGUgPSAnaW5saW5lJztcbiAgQElucHV0KCkgdmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkaWFsb2dDb25maWc6IER5bmFtaWNGb3JtRGlhbG9nQ29uZmlnID0ge307XG4gIEBJbnB1dCgpIGRyYXdlckNvbmZpZzogRHluYW1pY0Zvcm1EcmF3ZXJDb25maWcgPSB7fTtcbiAgXG4gIC8vIEJ1dHRvbiBDb25maWd1cmF0aW9uXG4gIEBJbnB1dCgpIHNob3dTdWJtaXRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd0NhbmNlbEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzdWJtaXRCdXR0b25MYWJlbD86IHN0cmluZztcbiAgQElucHV0KCkgY2FuY2VsQnV0dG9uTGFiZWw/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN1Ym1pdEJ1dHRvbkljb246IHN0cmluZyA9ICdwaSBwaS1jaGVjayc7XG4gIEBJbnB1dCgpIGNhbmNlbEJ1dHRvbkljb246IHN0cmluZyA9ICdwaSBwaS10aW1lcyc7XG4gIFxuICBAT3V0cHV0KCkgZm9ybVJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtR3JvdXA+KCk7XG4gIEBPdXRwdXQoKSBmb3JtU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSB2aXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgb25DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBmaWVsZFNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmllbGQ6IHN0cmluZywgdmFsdWU6IGFueSB9PigpO1xuXG4gIGZvcm0hOiBGb3JtR3JvdXA7XG4gIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIC8vIElubGluZSBlZGl0IG1vZGUgc3RhdGVcbiAgZWRpdGluZ0ZpZWxkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgc2F2aW5nRmllbGQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBnZXQgaGFzRmllbGRzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZvcm1GaWVsZHMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGdldCBoYXNTZWN0aW9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtU2VjdGlvbnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGdldCBoYXNGaXhlZEZpbHRlcnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZml4ZWRGaWx0ZXJzLmxlbmd0aCA+IDA7XG4gIH1cblxuICBnZXQgaGFzRmlsdGVyU2VjdGlvbnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyU2VjdGlvbnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGdldCBhbGxGaWVsZHMoKTogRHluYW1pY0Zvcm1GaWVsZENvbmZpZ1tdIHtcbiAgICAvLyBSZXRvcm5hIHRvZG9zIG9zIGNhbXBvcyAoZGlyZXRvcyArIGRhcyBzZcOnw7VlcyArIGZpbHRyb3MgZml4b3MgKyBzZcOnw7VlcyBkZSBmaWx0cm9zKVxuICAgIGNvbnN0IHNlY3Rpb25GaWVsZHMgPSB0aGlzLmZvcm1TZWN0aW9ucy5mbGF0TWFwKHNlY3Rpb24gPT4gc2VjdGlvbi5maWVsZHMpO1xuICAgIGNvbnN0IGZpbHRlclNlY3Rpb25GaWVsZHMgPSB0aGlzLmZpbHRlclNlY3Rpb25zLmZsYXRNYXAoc2VjdGlvbiA9PiBzZWN0aW9uLmZpZWxkcyk7XG4gICAgcmV0dXJuIFsuLi50aGlzLmZvcm1GaWVsZHMsIC4uLnNlY3Rpb25GaWVsZHMsIC4uLnRoaXMuZml4ZWRGaWx0ZXJzLCAuLi5maWx0ZXJTZWN0aW9uRmllbGRzXTtcbiAgfVxuXG4gIGdldCBpc0lubGluZU1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheU1vZGUgPT09ICdpbmxpbmUnO1xuICB9XG5cbiAgZ2V0IGlzSW5saW5lRWRpdE1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ2lubGluZS1lZGl0JztcbiAgfVxuXG4gIGdldCBmaWVsZE1vZGUoKTogJ2Zvcm0nIHwgJ2ZpbHRlcicge1xuICAgIHJldHVybiB0aGlzLmlzSW5saW5lRWRpdE1vZGUgPyAnZm9ybScgOiB0aGlzLm1vZGUgYXMgJ2Zvcm0nIHwgJ2ZpbHRlcic7XG4gIH1cblxuICBnZXQgaXNEaWFsb2dNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXlNb2RlID09PSAnZGlhbG9nJztcbiAgfVxuXG4gIGdldCBpc0RyYXdlck1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheU1vZGUgPT09ICdkcmF3ZXInO1xuICB9XG5cbiAgLy8gRGlhbG9nIGNvbmZpZ3VyYXRpb24gd2l0aCBkZWZhdWx0c1xuICBnZXQgZGlhbG9nSGVhZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nQ29uZmlnLmhlYWRlciB8fCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGUoJ2Rlc2lnbi5jb21wb25lbnRzX2FpLmZvcm0nKTtcbiAgfVxuXG4gIGdldCBkaWFsb2dXaWR0aCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRpYWxvZ0NvbmZpZy53aWR0aCB8fCAnNjAwcHgnO1xuICB9XG5cbiAgZ2V0IGRpYWxvZ0RyYWdnYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaWFsb2dDb25maWcuZHJhZ2dhYmxlICE9PSB1bmRlZmluZWQgPyB0aGlzLmRpYWxvZ0NvbmZpZy5kcmFnZ2FibGUgOiBmYWxzZTtcbiAgfVxuXG4gIGdldCBkaWFsb2dSZXNpemFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nQ29uZmlnLnJlc2l6YWJsZSAhPT0gdW5kZWZpbmVkID8gdGhpcy5kaWFsb2dDb25maWcucmVzaXphYmxlIDogZmFsc2U7XG4gIH1cblxuICBnZXQgZGlhbG9nTWF4aW1pemFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nQ29uZmlnLm1heGltaXphYmxlICE9PSB1bmRlZmluZWQgPyB0aGlzLmRpYWxvZ0NvbmZpZy5tYXhpbWl6YWJsZSA6IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGRpYWxvZ0Nsb3NlT25Fc2NhcGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nQ29uZmlnLmNsb3NlT25Fc2NhcGUgIT09IHVuZGVmaW5lZCA/IHRoaXMuZGlhbG9nQ29uZmlnLmNsb3NlT25Fc2NhcGUgOiB0cnVlO1xuICB9XG5cbiAgZ2V0IGRpYWxvZ0Rpc21pc3NhYmxlTWFzaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaWFsb2dDb25maWcuZGlzbWlzc2FibGVNYXNrICE9PSB1bmRlZmluZWQgPyB0aGlzLmRpYWxvZ0NvbmZpZy5kaXNtaXNzYWJsZU1hc2sgOiBmYWxzZTtcbiAgfVxuXG4gIC8vIERyYXdlciBjb25maWd1cmF0aW9uIHdpdGggZGVmYXVsdHNcbiAgZ2V0IGRyYXdlckhlYWRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRyYXdlckNvbmZpZy5oZWFkZXIgfHwgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlKCdkZXNpZ24uY29tcG9uZW50c19haS5mb3JtJyk7XG4gIH1cblxuICBnZXQgZHJhd2VyUG9zaXRpb24oKTogJ2xlZnQnIHwgJ3JpZ2h0JyB8ICd0b3AnIHwgJ2JvdHRvbScge1xuICAgIHJldHVybiB0aGlzLmRyYXdlckNvbmZpZy5wb3NpdGlvbiB8fCAncmlnaHQnO1xuICB9XG5cbiAgZ2V0IGRyYXdlclNob3dDbG9zZUljb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZHJhd2VyQ29uZmlnLnNob3dDbG9zZUljb24gIT09IHVuZGVmaW5lZCA/IHRoaXMuZHJhd2VyQ29uZmlnLnNob3dDbG9zZUljb24gOiB0cnVlO1xuICB9XG5cbiAgZ2V0IGRyYXdlckNsb3NlT25Fc2NhcGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZHJhd2VyQ29uZmlnLmNsb3NlT25Fc2NhcGUgIT09IHVuZGVmaW5lZCA/IHRoaXMuZHJhd2VyQ29uZmlnLmNsb3NlT25Fc2NhcGUgOiB0cnVlO1xuICB9XG5cbiAgZ2V0IGRyYXdlckRpc21pc3NhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRyYXdlckNvbmZpZy5kaXNtaXNzYWJsZSAhPT0gdW5kZWZpbmVkID8gdGhpcy5kcmF3ZXJDb25maWcuZGlzbWlzc2FibGUgOiB0cnVlO1xuICB9XG5cbiAgZ2V0IGRyYXdlclN0eWxlKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5kcmF3ZXJQb3NpdGlvbjtcbiAgICBjb25zdCBpc0hvcml6b250YWwgPSBwb3NpdGlvbiA9PT0gJ2xlZnQnIHx8IHBvc2l0aW9uID09PSAncmlnaHQnO1xuICAgIFxuICAgIC8vIFNlIHRlbSBjdXN0b21XaWR0aCwgdXNhIGVsYVxuICAgIGlmICh0aGlzLmRyYXdlckNvbmZpZy5jdXN0b21XaWR0aCkge1xuICAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbCBcbiAgICAgICAgPyB7IHdpZHRoOiB0aGlzLmRyYXdlckNvbmZpZy5jdXN0b21XaWR0aCB9XG4gICAgICAgIDogeyBoZWlnaHQ6IHRoaXMuZHJhd2VyQ29uZmlnLmN1c3RvbVdpZHRoIH07XG4gICAgfVxuICAgIFxuICAgIC8vIFVzYSBvIHRhbWFuaG8gcGFkcm9uaXphZG9cbiAgICBjb25zdCBzaXplID0gdGhpcy5kcmF3ZXJDb25maWcuc2l6ZSB8fCAnbWVkaXVtJztcbiAgICBjb25zdCBzaXplTWFwID0ge1xuICAgICAgJ3NtYWxsJzogaXNIb3Jpem9udGFsID8gJzI1JScgOiAnMjV2aCcsXG4gICAgICAnbWVkaXVtJzogaXNIb3Jpem9udGFsID8gJzQwJScgOiAnNDB2aCcsXG4gICAgICAnbGFyZ2UnOiBpc0hvcml6b250YWwgPyAnNjAlJyA6ICc2MHZoJyxcbiAgICAgICd4bGFyZ2UnOiBpc0hvcml6b250YWwgPyAnODAlJyA6ICc4MHZoJyxcbiAgICAgICdmdWxsJzogaXNIb3Jpem9udGFsID8gJzEwMCUnIDogJzEwMHZoJ1xuICAgIH07XG4gICAgXG4gICAgY29uc3Qgc2l6ZVZhbHVlID0gc2l6ZU1hcFtzaXplXTtcbiAgICByZXR1cm4gaXNIb3Jpem9udGFsIFxuICAgICAgPyB7IHdpZHRoOiBzaXplVmFsdWUgfVxuICAgICAgOiB7IGhlaWdodDogc2l6ZVZhbHVlIH07XG4gIH1cblxuICBnZXQgc3VibWl0TGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zdWJtaXRCdXR0b25MYWJlbCB8fCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGUoJ2Rlc2lnbi5jb21wb25lbnRzX2FpLnNhdmUnKTtcbiAgfVxuXG4gIGdldCBjYW5jZWxMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNhbmNlbEJ1dHRvbkxhYmVsIHx8IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZSgnZGVzaWduLmNvbXBvbmVudHNfYWkuY2FuY2VsJyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHRyYW5zbGF0aW9uU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgbWFza1NlcnZpY2U6IE1hc2tTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRGb3JtKCk7XG4gICAgdGhpcy5zZXR1cENvbmRpdGlvbmFsRmllbGRzV2F0Y2hlcigpO1xuICAgIHRoaXMuZm9ybVJlYWR5LmVtaXQodGhpcy5mb3JtKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAvLyBIYW5kbGUgZW50aXR5RGF0YSBjaGFuZ2VzIGZpcnN0XG4gICAgaWYgKGNoYW5nZXNbJ2VudGl0eURhdGEnXSAmJiB0aGlzLmZvcm0pIHtcbiAgICAgIGlmICh0aGlzLmVudGl0eURhdGEpIHtcbiAgICAgICAgdGhpcy5sb2FkRW50aXR5RGF0YSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZXNldEZvcm0oKTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLy8gV2hlbiBkaWFsb2cvZHJhd2VyIG9wZW5zLCBlbnN1cmUgZm9ybSBpcyBsb2FkZWQgd2l0aCBlbnRpdHlEYXRhXG4gICAgaWYgKGNoYW5nZXNbJ3Zpc2libGUnXSAmJiBjaGFuZ2VzWyd2aXNpYmxlJ10uY3VycmVudFZhbHVlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIFxuICAgICAgLy8gSWYgb3BlbmluZyB3aXRoIGVudGl0eURhdGEsIHJlbG9hZCBpdCB0byBlbnN1cmUgZm9ybSBpcyBwb3B1bGF0ZWRcbiAgICAgIGlmICh0aGlzLmVudGl0eURhdGEgJiYgdGhpcy5mb3JtKSB7XG4gICAgICAgIHRoaXMubG9hZEVudGl0eURhdGEoKTtcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuZW50aXR5RGF0YSAmJiB0aGlzLmZvcm0pIHtcbiAgICAgICAgLy8gSWYgb3BlbmluZyB3aXRob3V0IGVudGl0eURhdGEgKG5ldyByZWNvcmQpLCByZXNldCBmb3JtXG4gICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaW5pdEZvcm0oKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUNvbnRyb2xzOiBhbnkgPSB7fTtcbiAgICBcbiAgICAvLyBQcm9jZXNzYSB0b2RvcyBvcyBjYW1wb3MgKGRpcmV0b3MgKyBkYXMgc2XDp8O1ZXMpXG4gICAgdGhpcy5hbGxGaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSB0aGlzLmdldERlZmF1bHRWYWx1ZShmaWVsZCk7XG4gICAgICBjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5tb2RlID09PSAnZmlsdGVyJyA/IFtdIDogKGZpZWxkLnZhbGlkYXRvcnMgfHwgW10pO1xuICAgICAgXG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mYi5jb250cm9sKFxuICAgICAgICB7IHZhbHVlOiBkZWZhdWx0VmFsdWUsIGRpc2FibGVkOiBmaWVsZC5kaXNhYmxlZCB8fCBmYWxzZSB9LFxuICAgICAgICB2YWxpZGF0b3JzXG4gICAgICApO1xuICAgICAgXG4gICAgICBmb3JtQ29udHJvbHNbZmllbGQuZmllbGRdID0gY29udHJvbDtcbiAgICB9KTtcbiAgICBcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKGZvcm1Db250cm9scyk7XG4gICAgdGhpcy5hcHBseUluaXRpYWxEaXNhYmxlZFN0YXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRWYWx1ZShmaWVsZDogRHluYW1pY0Zvcm1GaWVsZENvbmZpZyk6IGFueSB7XG4gICAgaWYgKGZpZWxkLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmllbGQuZGVmYXVsdFZhbHVlO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGNhc2UgJ2Ryb3Bkb3duJzpcbiAgICAgIGNhc2UgJ2VudW0nOlxuICAgICAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnZmlsdGVyJyA/IG51bGwgOiAnJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5SW5pdGlhbERpc2FibGVkU3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5hbGxGaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICBpZiAoZmllbGQuZGlzYWJsZWRXaGVuKSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkLmZpZWxkKTtcbiAgICAgICAgaWYgKGNvbnRyb2wgJiYgdGhpcy5pc0ZpZWxkRGlzYWJsZWQoZmllbGQpKSB7XG4gICAgICAgICAgY29udHJvbC5kaXNhYmxlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGxvYWRFbnRpdHlEYXRhKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVudGl0eURhdGEgJiYgdGhpcy5mb3JtKSB7XG4gICAgICBjb25zdCBwcm9jZXNzZWREYXRhID0gdGhpcy5wcm9jZXNzRW50aXR5RGF0YSh0aGlzLmVudGl0eURhdGEpO1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUocHJvY2Vzc2VkRGF0YSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzRW50aXR5RGF0YShlbnRpdHk6IGFueSk6IGFueSB7XG4gICAgY29uc3QgcHJvY2Vzc2VkRGF0YSA9IHsgLi4uZW50aXR5IH07XG4gICAgXG4gICAgdGhpcy5hbGxGaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2xvb2t1cCcgJiYgcHJvY2Vzc2VkRGF0YVtmaWVsZC5maWVsZF0pIHtcbiAgICAgICAgY29uc3QgbG9va3VwVmFsdWUgPSBwcm9jZXNzZWREYXRhW2ZpZWxkLmZpZWxkXTtcbiAgICAgICAgLy8gS2VlcCB0aGUgZnVsbCBvYmplY3QgaWYgaXQgaGFzIGRpc3BsYXkgZGF0YSwgb3RoZXJ3aXNlIGV4dHJhY3QgSURcbiAgICAgICAgaWYgKHR5cGVvZiBsb29rdXBWYWx1ZSA9PT0gJ29iamVjdCcgJiYgbG9va3VwVmFsdWUuaWQpIHtcbiAgICAgICAgICBjb25zdCBoYXNEaXNwbGF5RGF0YSA9IGZpZWxkLmxvb2t1cERpc3BsYXlGaWVsZHMgXG4gICAgICAgICAgICA/IGZpZWxkLmxvb2t1cERpc3BsYXlGaWVsZHMuc29tZShmID0+IHRoaXMuZ2V0TmVzdGVkVmFsdWUobG9va3VwVmFsdWUsIGYpKVxuICAgICAgICAgICAgOiBsb29rdXBWYWx1ZVtmaWVsZC5sb29rdXBEaXNwbGF5RmllbGQgfHwgJ25hbWUnXTtcbiAgICAgICAgICBcbiAgICAgICAgICBpZiAoaGFzRGlzcGxheURhdGEpIHtcbiAgICAgICAgICAgIC8vIEtlZXAgdGhlIGZ1bGwgb2JqZWN0IHRvIGF2b2lkIHVubmVjZXNzYXJ5IEFQSSBjYWxsc1xuICAgICAgICAgICAgcHJvY2Vzc2VkRGF0YVtmaWVsZC5maWVsZF0gPSBsb29rdXBWYWx1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gT25seSBoYXMgSUQsIGV4dHJhY3QgaXRcbiAgICAgICAgICAgIHByb2Nlc3NlZERhdGFbZmllbGQuZmllbGRdID0gbG9va3VwVmFsdWUuaWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgXG4gICAgcmV0dXJuIHByb2Nlc3NlZERhdGE7XG4gIH1cblxuICBwcml2YXRlIGdldE5lc3RlZFZhbHVlKG9iajogYW55LCBwYXRoOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiBwYXRoLnNwbGl0KCcuJykucmVkdWNlKChjdXJyZW50LCBrZXkpID0+IGN1cnJlbnQ/LltrZXldLCBvYmopO1xuICB9XG5cbiAgcmVzZXRGb3JtKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvcm0pIHtcbiAgICAgIGNvbnN0IHJlc2V0VmFsdWVzOiBhbnkgPSB7fTtcbiAgICAgIHRoaXMuYWxsRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICByZXNldFZhbHVlc1tmaWVsZC5maWVsZF0gPSB0aGlzLmdldERlZmF1bHRWYWx1ZShmaWVsZCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZm9ybS5yZXNldChyZXNldFZhbHVlcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzRmlsdGVyVmFsdWUoZm9ybVZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IHByb2Nlc3NlZFZhbHVlID0geyAuLi5mb3JtVmFsdWUgfTtcbiAgICBcbiAgICB0aGlzLmFsbEZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSBwcm9jZXNzZWRWYWx1ZVtmaWVsZC5maWVsZF07XG4gICAgICBcbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnbG9va3VwJykge1xuICAgICAgICBpZiAoZmllbGRWYWx1ZSAmJiB0eXBlb2YgZmllbGRWYWx1ZSA9PT0gJ29iamVjdCcgJiYgZmllbGRWYWx1ZS5pZCkge1xuICAgICAgICAgIHByb2Nlc3NlZFZhbHVlW2ZpZWxkLmZpZWxkXSA9IGZpZWxkVmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAoZmllbGRWYWx1ZSAmJiB0eXBlb2YgZmllbGRWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBwcm9jZXNzZWRWYWx1ZVtmaWVsZC5maWVsZF0gPSB7IGlkOiBmaWVsZFZhbHVlIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJvY2Vzc2VkVmFsdWVbZmllbGQuZmllbGRdID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIFxuICAgIHJldHVybiBwcm9jZXNzZWRWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0Zvcm1WYWx1ZShmb3JtVmFsdWU6IGFueSk6IGFueSB7XG4gICAgY29uc3QgcHJvY2Vzc2VkVmFsdWUgPSB7IC4uLmZvcm1WYWx1ZSB9O1xuICAgIFxuICAgIGlmICh0aGlzLmVudGl0eURhdGE/LmlkKSB7XG4gICAgICBwcm9jZXNzZWRWYWx1ZS5pZCA9IHRoaXMuZW50aXR5RGF0YS5pZDtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5hbGxGaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICBjb25zdCBmaWVsZFZhbHVlID0gcHJvY2Vzc2VkVmFsdWVbZmllbGQuZmllbGRdO1xuICAgICAgXG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2xvb2t1cCcpIHtcbiAgICAgICAgLy8gS2VlcCB0aGUgZnVsbCBvYmplY3QgZm9yIGxvb2t1cCBmaWVsZHNcbiAgICAgICAgaWYgKGZpZWxkVmFsdWUgJiYgdHlwZW9mIGZpZWxkVmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgLy8gT2JqZWN0IGlzIGFscmVhZHkgY29tcGxldGUsIGtlZXAgaXQgYXMgaXNcbiAgICAgICAgICBwcm9jZXNzZWRWYWx1ZVtmaWVsZC5maWVsZF0gPSBmaWVsZFZhbHVlO1xuICAgICAgICB9IGVsc2UgaWYgKGZpZWxkVmFsdWUgJiYgZmllbGRWYWx1ZSAhPT0gJycpIHtcbiAgICAgICAgICAvLyBJZiBpdCdzIGp1c3QgYW4gSUQsIHdyYXAgaXQgaW4gYW4gb2JqZWN0XG4gICAgICAgICAgcHJvY2Vzc2VkVmFsdWVbZmllbGQuZmllbGRdID0geyBpZDogZmllbGRWYWx1ZSB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByb2Nlc3NlZFZhbHVlW2ZpZWxkLmZpZWxkXSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gJ2RhdGUnKSB7XG4gICAgICAgIGlmIChmaWVsZFZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgIHByb2Nlc3NlZFZhbHVlW2ZpZWxkLmZpZWxkXSA9IGZpZWxkVmFsdWUudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xuICAgICAgICB9IGVsc2UgaWYgKCFmaWVsZFZhbHVlKSB7XG4gICAgICAgICAgcHJvY2Vzc2VkVmFsdWVbZmllbGQuZmllbGRdID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChbJ3RleHQnLCAndGV4dGFyZWEnLCAnbnVtYmVyJywgJ2VudW0nLCAnZHJvcGRvd24nXS5pbmNsdWRlcyhmaWVsZC50eXBlKSkge1xuICAgICAgICBpZiAoZmllbGRWYWx1ZSA9PT0gJycgfHwgZmllbGRWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcHJvY2Vzc2VkVmFsdWVbZmllbGQuZmllbGRdID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIFxuICAgIHJldHVybiBwcm9jZXNzZWRWYWx1ZTtcbiAgfVxuXG4gIGdldEZpZWxkR3JpZENsYXNzKGZpZWxkOiBEeW5hbWljRm9ybUZpZWxkQ29uZmlnKTogc3RyaW5nIHtcbiAgICBjb25zdCBjbGFzc2VzOiBzdHJpbmdbXSA9IFtdO1xuICAgIFxuICAgIC8vIENvbHNwYW4gYmFzZSAocGFkcsOjbzogNilcbiAgICBsZXQgYmFzZUNvbHNwYW4gPSBmaWVsZC5jb2xzcGFuIHx8IDY7XG4gICAgXG4gICAgLy8gVmVyaWZpY2EgY29uZGnDp8O1ZXMgZGUgY29sc3BhbiBkaW7Dom1pY29cbiAgICBpZiAoZmllbGQuY29sc3BhbldoZW4gJiYgZmllbGQuY29sc3BhbldoZW4ubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBjb25kaXRpb24gb2YgZmllbGQuY29sc3BhbldoZW4pIHtcbiAgICAgICAgY29uc3QgZGVwZW5kZW50RmllbGRWYWx1ZSA9IHRoaXMuZm9ybS5nZXQoY29uZGl0aW9uLmZpZWxkKT8udmFsdWU7XG4gICAgICAgIGlmIChkZXBlbmRlbnRGaWVsZFZhbHVlID09PSBjb25kaXRpb24udmFsdWUpIHtcbiAgICAgICAgICBiYXNlQ29sc3BhbiA9IGNvbmRpdGlvbi5jb2xzcGFuO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIC8vIEFkaWNpb25hIGNsYXNzZSBiYXNlXG4gICAgY2xhc3Nlcy5wdXNoKGBjb2wtJHtiYXNlQ29sc3Bhbn1gKTtcbiAgICBcbiAgICAvLyBTdXBvcnRhIHRhbnRvIG8gb2JqZXRvIHNpemUgcXVhbnRvIGFzIHByb3ByaWVkYWRlcyBhbnRpZ2FzIChwYXJhIGNvbXBhdGliaWxpZGFkZSlcbiAgICBjb25zdCBzaXplWHMgPSBmaWVsZC5zaXplPy54cyA/PyBmaWVsZC5jb2xzcGFuWHM7XG4gICAgY29uc3Qgc2l6ZVNtID0gZmllbGQuc2l6ZT8uc20gPz8gZmllbGQuY29sc3BhblNtO1xuICAgIGNvbnN0IHNpemVNZCA9IGZpZWxkLnNpemU/Lm1kID8/IGZpZWxkLmNvbHNwYW5NZDtcbiAgICBjb25zdCBzaXplTGcgPSBmaWVsZC5zaXplPy5sZyA/PyBmaWVsZC5jb2xzcGFuTGc7XG4gICAgY29uc3Qgc2l6ZVhsID0gZmllbGQuc2l6ZT8ueGwgPz8gZmllbGQuY29sc3BhblhsO1xuICAgIFxuICAgIC8vIEFkaWNpb25hIGNsYXNzZXMgcmVzcG9uc2l2YXMgc2UgZGVmaW5pZGFzXG4gICAgaWYgKHNpemVYcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbGFzc2VzLnB1c2goYGNvbC14cy0ke3NpemVYc31gKTtcbiAgICB9XG4gICAgaWYgKHNpemVTbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbGFzc2VzLnB1c2goYGNvbC1zbS0ke3NpemVTbX1gKTtcbiAgICB9XG4gICAgaWYgKHNpemVNZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbGFzc2VzLnB1c2goYGNvbC1tZC0ke3NpemVNZH1gKTtcbiAgICB9XG4gICAgaWYgKHNpemVMZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbGFzc2VzLnB1c2goYGNvbC1sZy0ke3NpemVMZ31gKTtcbiAgICB9XG4gICAgaWYgKHNpemVYbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbGFzc2VzLnB1c2goYGNvbC14bC0ke3NpemVYbH1gKTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuICB9XG5cbiAgaXNGaWVsZFZpc2libGUoZmllbGQ6IER5bmFtaWNGb3JtRmllbGRDb25maWcpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnZmlsdGVyJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIFxuICAgIGlmICghZmllbGQudmlzaWJsZVdoZW4pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGRlcGVuZGVudEZpZWxkVmFsdWUgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkLnZpc2libGVXaGVuLmZpZWxkKT8udmFsdWU7XG4gICAgcmV0dXJuIGRlcGVuZGVudEZpZWxkVmFsdWUgPT09IGZpZWxkLnZpc2libGVXaGVuLnZhbHVlO1xuICB9XG5cbiAgaXNGaWVsZERpc2FibGVkKGZpZWxkOiBEeW5hbWljRm9ybUZpZWxkQ29uZmlnKTogYm9vbGVhbiB7XG4gICAgaWYgKGZpZWxkLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgaWYgKCEoJ2Rpc2FibGVkV2hlbicgaW4gZmllbGQpIHx8ICFmaWVsZC5kaXNhYmxlZFdoZW4pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBkZXBlbmRlbnRGaWVsZFZhbHVlID0gdGhpcy5mb3JtLmdldChmaWVsZC5kaXNhYmxlZFdoZW4hLmZpZWxkKT8udmFsdWU7XG4gICAgXG4gICAgaWYgKGZpZWxkLmRpc2FibGVkV2hlbiEudmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiAhZGVwZW5kZW50RmllbGRWYWx1ZTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGRlcGVuZGVudEZpZWxkVmFsdWUgPT09IGZpZWxkLmRpc2FibGVkV2hlbiEudmFsdWU7XG4gIH1cblxuICBzZXR1cENvbmRpdGlvbmFsRmllbGRzV2F0Y2hlcigpOiB2b2lkIHtcbiAgICBjb25zdCB2aXNpYmxlRGVwZW5kZW50RmllbGRzID0gdGhpcy5hbGxGaWVsZHMuZmlsdGVyKGZpZWxkID0+IGZpZWxkLnZpc2libGVXaGVuKTtcbiAgICBjb25zdCB2aXNpYmxlV2F0Y2hlZEZpZWxkcyA9IFsuLi5uZXcgU2V0KHZpc2libGVEZXBlbmRlbnRGaWVsZHMubWFwKGZpZWxkID0+IGZpZWxkLnZpc2libGVXaGVuIS5maWVsZCkpXTtcblxuICAgIGNvbnN0IGRpc2FibGVkRGVwZW5kZW50RmllbGRzID0gdGhpcy5hbGxGaWVsZHMuZmlsdGVyKGZpZWxkID0+IGZpZWxkLmRpc2FibGVkV2hlbik7XG4gICAgY29uc3QgZGlzYWJsZWRXYXRjaGVkRmllbGRzID0gWy4uLm5ldyBTZXQoZGlzYWJsZWREZXBlbmRlbnRGaWVsZHMubWFwKGZpZWxkID0+IGZpZWxkLmRpc2FibGVkV2hlbiEuZmllbGQpKV07XG5cbiAgICBjb25zdCBhbGxXYXRjaGVkRmllbGRzID0gWy4uLm5ldyBTZXQoWy4uLnZpc2libGVXYXRjaGVkRmllbGRzLCAuLi5kaXNhYmxlZFdhdGNoZWRGaWVsZHNdKV07XG5cbiAgICBhbGxXYXRjaGVkRmllbGRzLmZvckVhY2goZmllbGROYW1lID0+IHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk7XG4gICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICBjb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2xlYXJIaWRkZW5GaWVsZHMoKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZURpc2FibGVkRmllbGRzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlRGlzYWJsZWRGaWVsZHMoKTogdm9pZCB7XG4gICAgdGhpcy5hbGxGaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICBpZiAoZmllbGQuZGlzYWJsZWRXaGVuKSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkLmZpZWxkKTtcbiAgICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgICBjb25zdCBzaG91bGRCZURpc2FibGVkID0gdGhpcy5pc0ZpZWxkRGlzYWJsZWQoZmllbGQpO1xuICAgICAgICAgIFxuICAgICAgICAgIGlmIChzaG91bGRCZURpc2FibGVkICYmIGNvbnRyb2wuZW5hYmxlZCkge1xuICAgICAgICAgICAgY29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgIGNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIXNob3VsZEJlRGlzYWJsZWQgJiYgY29udHJvbC5kaXNhYmxlZCAmJiAhZmllbGQuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjbGVhckhpZGRlbkZpZWxkcygpOiB2b2lkIHtcbiAgICB0aGlzLmFsbEZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgIGlmIChmaWVsZC52aXNpYmxlV2hlbiAmJiAhdGhpcy5pc0ZpZWxkVmlzaWJsZShmaWVsZCkpIHtcbiAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQoZmllbGQuZmllbGQpO1xuICAgICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICAgIGNvbnN0IHJlc2V0VmFsdWUgPSB0aGlzLmdldERlZmF1bHRWYWx1ZShmaWVsZCk7XG4gICAgICAgICAgY29udHJvbC5zZXRWYWx1ZShyZXNldFZhbHVlKTtcbiAgICAgICAgICBjb250cm9sLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgICAgIGNvbnRyb2wubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0Rm9ybSgpOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm07XG4gIH1cblxuICBjbGVhckZpbHRlcnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ2ZpbHRlcicpIHtcbiAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0VHlwZVBlcnNvblZhbHVlKCk6ICdOQVRVUkFMX1BFUlNPTicgfCAnSlVSSURJQ0FMX1BFUlNPTicge1xuICAgIGNvbnN0IHR5cGVQZXJzb25WYWx1ZSA9IHRoaXMuZm9ybT8uZ2V0KCd0eXBlUGVyc29uJyk/LnZhbHVlO1xuICAgIHJldHVybiB0eXBlUGVyc29uVmFsdWUgfHwgJ0pVUklESUNBTF9QRVJTT04nO1xuICB9XG5cbiAgLy8gRGlzcGxheSBNb2RlIENvbnRyb2wgTWV0aG9kc1xuICBvcGVuKGVudGl0eT86IGFueSk6IHZvaWQge1xuICAgIGlmIChlbnRpdHkpIHtcbiAgICAgIHRoaXMuZW50aXR5RGF0YSA9IGVudGl0eTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbnRpdHlEYXRhID0gbnVsbDtcbiAgICAgIHRoaXMucmVzZXRGb3JtKCk7IC8vIFJlc2V0IGZvcm0gd2hlbiBvcGVuaW5nIGZvciBuZXcgZW50aXR5XG4gICAgfVxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOyAvLyBSZXNldCBsb2FkaW5nIHN0YXRlXG4gICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOyAvLyBSZXNldCBsb2FkaW5nIHN0YXRlXG4gICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgIHRoaXMucmVzZXRGb3JtKCk7IC8vIFJlc2V0IGZvcm0gd2hlbiBjbG9zaW5nXG4gICAgdGhpcy5vbkNhbmNlbC5lbWl0KCk7XG4gIH1cblxuICBoYW5kbGVDYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgaGFuZGxlU3VibWl0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vZGUgPT09ICdmb3JtJyAmJiB0aGlzLmZvcm0uaW52YWxpZCkge1xuICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLm1vZGUgPT09ICdmaWx0ZXInIFxuICAgICAgPyB0aGlzLnByb2Nlc3NGaWx0ZXJWYWx1ZSh0aGlzLmZvcm0udmFsdWUpXG4gICAgICA6IHRoaXMucHJvY2Vzc0Zvcm1WYWx1ZSh0aGlzLmZvcm0udmFsdWUpO1xuICAgIFxuICAgIHRoaXMuZm9ybVN1Ym1pdC5lbWl0KGZvcm1WYWx1ZSk7XG4gIH1cblxuICAvLyBJbmxpbmUgRWRpdCBNb2RlIE1ldGhvZHNcbiAgc3RhcnRFZGl0RmllbGQoZmllbGROYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0lubGluZUVkaXRNb2RlKSB7XG4gICAgICB0aGlzLmVkaXRpbmdGaWVsZCA9IGZpZWxkTmFtZTtcbiAgICAgIFxuICAgICAgLy8gRW5zdXJlIHRoZSBmaWVsZCBoYXMgdGhlIGN1cnJlbnQgdmFsdWUgZnJvbSBlbnRpdHlEYXRhXG4gICAgICBpZiAodGhpcy5lbnRpdHlEYXRhKSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk7XG4gICAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmFsbEZpZWxkcy5maW5kKGYgPT4gZi5maWVsZCA9PT0gZmllbGROYW1lKTtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZW50aXR5RGF0YVtmaWVsZE5hbWVdO1xuICAgICAgICAgIFxuICAgICAgICAgIC8vIEZvciBsb29rdXAgZmllbGRzIGluIGlubGluZS1lZGl0IG1vZGUsIGtlZXAgdGhlIGZ1bGwgb2JqZWN0XG4gICAgICAgICAgLy8gVGhpcyBwcmV2ZW50cyB1bm5lY2Vzc2FyeSBBUEkgY2FsbHMgc2luY2Ugd2UgYWxyZWFkeSBoYXZlIHRoZSBkYXRhXG4gICAgICAgICAgaWYgKGZpZWxkPy50eXBlID09PSAnbG9va3VwJyAmJiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAvLyBLZWVwIHRoZSBmdWxsIG9iamVjdCAtIHRoZSBsb29rdXAgY29tcG9uZW50IHdpbGwgdXNlIGl0XG4gICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaXNGaWVsZEVkaXRpbmcoZmllbGROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0aW5nRmllbGQgPT09IGZpZWxkTmFtZTtcbiAgfVxuXG4gIHNhdmVJbmxpbmVGaWVsZChmaWVsZE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0lubGluZUVkaXRNb2RlKSByZXR1cm47XG5cbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpO1xuICAgIGlmICghY29udHJvbCB8fCBjb250cm9sLmludmFsaWQpIHtcbiAgICAgIGNvbnRyb2w/Lm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNhdmluZ0ZpZWxkID0gdHJ1ZTtcbiAgICBcbiAgICBsZXQgZmllbGRWYWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgXG4gICAgLy8gRm9yIGxvb2t1cCBmaWVsZHMsIGtlZXAgdGhlIGZ1bGwgb2JqZWN0IChkb24ndCBleHRyYWN0IElEKVxuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5hbGxGaWVsZHMuZmluZChmID0+IGYuZmllbGQgPT09IGZpZWxkTmFtZSk7XG4gICAgaWYgKGZpZWxkPy50eXBlID09PSAnbG9va3VwJyAmJiBmaWVsZFZhbHVlICYmIHR5cGVvZiBmaWVsZFZhbHVlICE9PSAnb2JqZWN0Jykge1xuICAgICAgLy8gSWYgaXQncyBqdXN0IGFuIElELCB3cmFwIGl0IGluIGFuIG9iamVjdFxuICAgICAgZmllbGRWYWx1ZSA9IHsgaWQ6IGZpZWxkVmFsdWUgfTtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5maWVsZFNhdmUuZW1pdCh7IGZpZWxkOiBmaWVsZE5hbWUsIHZhbHVlOiBmaWVsZFZhbHVlIH0pO1xuICB9XG5cbiAgY2FuY2VsSW5saW5lRWRpdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0lubGluZUVkaXRNb2RlICYmIHRoaXMuZWRpdGluZ0ZpZWxkKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldCh0aGlzLmVkaXRpbmdGaWVsZCk7XG4gICAgICBpZiAoY29udHJvbCAmJiB0aGlzLmVudGl0eURhdGEpIHtcbiAgICAgICAgLy8gUmVzdG9yZSBvcmlnaW5hbCB2YWx1ZVxuICAgICAgICBjb25zdCBvcmlnaW5hbFZhbHVlID0gdGhpcy5lbnRpdHlEYXRhW3RoaXMuZWRpdGluZ0ZpZWxkXTtcbiAgICAgICAgY29udHJvbC5zZXRWYWx1ZShvcmlnaW5hbFZhbHVlKTtcbiAgICAgICAgY29udHJvbC5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgICBjb250cm9sLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgfVxuICAgICAgdGhpcy5lZGl0aW5nRmllbGQgPSBudWxsO1xuICAgICAgdGhpcy5zYXZpbmdGaWVsZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIE1ldGhvZCB0byBiZSBjYWxsZWQgYnkgcGFyZW50IGFmdGVyIHNhdmUgY29tcGxldGVzXG4gIGNvbXBsZXRlSW5saW5lRWRpdCgpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRpbmdGaWVsZCA9IG51bGw7XG4gICAgdGhpcy5zYXZpbmdGaWVsZCA9IGZhbHNlO1xuICB9XG5cbiAgZ2V0RmllbGREaXNwbGF5VmFsdWUoZmllbGROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5lbnRpdHlEYXRhKSByZXR1cm4gJyc7XG5cbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuYWxsRmllbGRzLmZpbmQoZiA9PiBmLmZpZWxkID09PSBmaWVsZE5hbWUpO1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5lbnRpdHlEYXRhW2ZpZWxkTmFtZV07XG5cbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gJyc7XG5cbiAgICAvLyBGb3IgbG9va3VwIGZpZWxkcywgcmV0dXJuIHRoZSBkaXNwbGF5IG5hbWVcbiAgICBpZiAoZmllbGQ/LnR5cGUgPT09ICdsb29rdXAnICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUubmFtZSkge1xuICAgICAgcmV0dXJuIHZhbHVlLm5hbWU7XG4gICAgfVxuXG4gICAgLy8gRm9yIGxvb2t1cCBmaWVsZHMgd2l0aCBtdWx0aXBsZSBkaXNwbGF5IGZpZWxkc1xuICAgIGlmIChmaWVsZD8udHlwZSA9PT0gJ2xvb2t1cCcgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiBmaWVsZC5sb29rdXBEaXNwbGF5RmllbGRzKSB7XG4gICAgICByZXR1cm4gZmllbGQubG9va3VwRGlzcGxheUZpZWxkc1xuICAgICAgICAubWFwKGYgPT4gdGhpcy5nZXROZXN0ZWRWYWx1ZSh2YWx1ZSwgZikpXG4gICAgICAgIC5maWx0ZXIodiA9PiB2KVxuICAgICAgICAuam9pbignIC0gJyk7XG4gICAgfVxuXG4gICAgLy8gRm9yIGRyb3Bkb3duL2VudW0gZmllbGRzLCBmaW5kIHRoZSBtYXRjaGluZyBvcHRpb24gbGFiZWxcbiAgICBpZiAoKGZpZWxkPy50eXBlID09PSAnZHJvcGRvd24nIHx8IGZpZWxkPy50eXBlID09PSAnZW51bScpICYmIGZpZWxkKSB7XG4gICAgICBjb25zdCBvcHRpb25zID0gZmllbGQub3B0aW9ucyB8fCBmaWVsZC5lbnVtT3B0aW9ucyB8fCBbXTtcbiAgICAgIGNvbnN0IG9wdGlvblZhbHVlID0gZmllbGQub3B0aW9uVmFsdWUgfHwgJ3ZhbHVlJztcbiAgICAgIGNvbnN0IG9wdGlvbkxhYmVsID0gZmllbGQub3B0aW9uTGFiZWwgfHwgJ2xhYmVsJztcbiAgICAgIGNvbnN0IG1hdGNoaW5nT3B0aW9uID0gb3B0aW9ucy5maW5kKChvcHQ6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBvcHRWYWwgPSB0eXBlb2Ygb3B0ID09PSAnb2JqZWN0JyA/IG9wdFtvcHRpb25WYWx1ZV0gOiBvcHQ7XG4gICAgICAgIHJldHVybiBvcHRWYWwgPT09IHZhbHVlO1xuICAgICAgfSk7XG4gICAgICBpZiAobWF0Y2hpbmdPcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBtYXRjaGluZ09wdGlvbiA9PT0gJ29iamVjdCcgPyBtYXRjaGluZ09wdGlvbltvcHRpb25MYWJlbF0gOiBtYXRjaGluZ09wdGlvbjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGb3IgbnVtYmVyIGZpZWxkcywgZm9ybWF0IGFwcHJvcHJpYXRlbHlcbiAgICBpZiAoZmllbGQ/LnR5cGUgPT09ICdudW1iZXInICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGlmIChmaWVsZC5udW1iZXJNb2RlID09PSAnY3VycmVuY3knKSB7XG4gICAgICAgIHJldHVybiBuZXcgSW50bC5OdW1iZXJGb3JtYXQoZmllbGQubG9jYWxlIHx8ICdwdC1CUicsIHtcbiAgICAgICAgICBzdHlsZTogJ2N1cnJlbmN5JyxcbiAgICAgICAgICBjdXJyZW5jeTogZmllbGQuY3VycmVuY3kgfHwgJ0JSTCdcbiAgICAgICAgfSkuZm9ybWF0KHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgSW50bC5OdW1iZXJGb3JtYXQoZmllbGQubG9jYWxlIHx8ICdwdC1CUicsIHtcbiAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBmaWVsZC5taW5GcmFjdGlvbkRpZ2l0cyB8fCAwLFxuICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IGZpZWxkLm1heEZyYWN0aW9uRGlnaXRzIHx8IDJcbiAgICAgIH0pLmZvcm1hdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gRm9yIGRhdGUgZmllbGRzLCBmb3JtYXQgYXMgZGF0ZVxuICAgIGlmIChmaWVsZD8udHlwZSA9PT0gJ2RhdGUnICYmIHZhbHVlKSB7XG4gICAgICBjb25zdCBkYXRlID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IG5ldyBEYXRlKHZhbHVlKSA6IHZhbHVlO1xuICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCdwdC1CUicpO1xuICAgIH1cblxuICAgIC8vIEZvciB0ZXh0IGZpZWxkcyB3aXRoIGRvY3VtZW50IG1hc2ssIGZvcm1hdCB0aGUgdmFsdWVcbiAgICBpZiAoZmllbGQ/LnR5cGUgPT09ICd0ZXh0JyAmJiBmaWVsZC5tYXNrID09PSAnZG9jdW1lbnQnICYmIHZhbHVlKSB7XG4gICAgICBjb25zdCBkZXBlbmRzT24gPSBmaWVsZC5tYXNrRGVwZW5kc09uIHx8ICd0eXBlUGVyc29uJztcbiAgICAgIGNvbnN0IHR5cGVQZXJzb24gPSB0aGlzLmVudGl0eURhdGFbZGVwZW5kc09uXSB8fCAnSlVSSURJQ0FMX1BFUlNPTic7XG4gICAgICByZXR1cm4gdGhpcy5tYXNrU2VydmljZS5hcHBseURvY3VtZW50TWFzayhTdHJpbmcodmFsdWUpLCB0eXBlUGVyc29uKTtcbiAgICB9XG4gICAgaWYgKGZpZWxkPy50eXBlID09PSAndGV4dCcgJiYgZmllbGQubWFzayA9PT0gJ2NwZicgJiYgdmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLm1hc2tTZXJ2aWNlLmFwcGx5Q3BmTWFzayhTdHJpbmcodmFsdWUpKTtcbiAgICB9XG4gICAgaWYgKGZpZWxkPy50eXBlID09PSAndGV4dCcgJiYgZmllbGQubWFzayA9PT0gJ2NucGonICYmIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5tYXNrU2VydmljZS5hcHBseUNucGpNYXNrKFN0cmluZyh2YWx1ZSkpO1xuICAgIH1cblxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICB9XG59XG4iLCI8IS0tIE1vZG8gSW5saW5lIChwYWRyw6NvKSAtLT5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJpc0lubGluZU1vZGVcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvcm1Db250ZW50XCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPCEtLSBNb2RvIERpYWxvZyAtLT5cbjxwLWRpYWxvZ1xuICAqbmdJZj1cImlzRGlhbG9nTW9kZVwiXG4gIFsodmlzaWJsZSldPVwidmlzaWJsZVwiXG4gIFtoZWFkZXJdPVwiZGlhbG9nSGVhZGVyIHwgdHJhbnNsYXRlXCJcbiAgW21vZGFsXT1cInRydWVcIlxuICBbc3R5bGVdPVwieyB3aWR0aDogZGlhbG9nV2lkdGggfVwiXG4gIFtkcmFnZ2FibGVdPVwiZGlhbG9nRHJhZ2dhYmxlXCJcbiAgW3Jlc2l6YWJsZV09XCJkaWFsb2dSZXNpemFibGVcIlxuICBbbWF4aW1pemFibGVdPVwiZGlhbG9nTWF4aW1pemFibGVcIlxuICBbY2xvc2VPbkVzY2FwZV09XCJkaWFsb2dDbG9zZU9uRXNjYXBlXCJcbiAgW2Rpc21pc3NhYmxlTWFza109XCJkaWFsb2dEaXNtaXNzYWJsZU1hc2tcIlxuICAob25IaWRlKT1cImNsb3NlKClcIj5cbiAgXG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb3JtQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICBcbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZvb3RlclwiICpuZ0lmPVwic2hvd1N1Ym1pdEJ1dHRvbiB8fCBzaG93Q2FuY2VsQnV0dG9uXCI+XG4gICAgPGRpdiBjbGFzcz1cImRpYWxvZy1mb290ZXJcIj5cbiAgICAgIDxwLWJ1dHRvblxuICAgICAgICAqbmdJZj1cInNob3dDYW5jZWxCdXR0b25cIlxuICAgICAgICBbbGFiZWxdPVwiY2FuY2VsTGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbaWNvbl09XCJjYW5jZWxCdXR0b25JY29uXCJcbiAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAob25DbGljayk9XCJoYW5kbGVDYW5jZWwoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nXCI+XG4gICAgICA8L3AtYnV0dG9uPlxuICAgICAgPHAtYnV0dG9uXG4gICAgICAgICpuZ0lmPVwic2hvd1N1Ym1pdEJ1dHRvblwiXG4gICAgICAgIFtsYWJlbF09XCJzdWJtaXRMYWJlbCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtpY29uXT1cInN1Ym1pdEJ1dHRvbkljb25cIlxuICAgICAgICAob25DbGljayk9XCJoYW5kbGVTdWJtaXQoKVwiXG4gICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCI+XG4gICAgICA8L3AtYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9wLWRpYWxvZz5cblxuPCEtLSBNb2RvIERyYXdlciAtLT5cbjxwLWRyYXdlclxuICAqbmdJZj1cImlzRHJhd2VyTW9kZVwiXG4gIFsodmlzaWJsZSldPVwidmlzaWJsZVwiXG4gIFtoZWFkZXJdPVwiZHJhd2VySGVhZGVyIHwgdHJhbnNsYXRlXCJcbiAgW3Bvc2l0aW9uXT1cImRyYXdlclBvc2l0aW9uXCJcbiAgW3N0eWxlXT1cImRyYXdlclN0eWxlXCJcbiAgW3Nob3dDbG9zZUljb25dPVwiZHJhd2VyU2hvd0Nsb3NlSWNvblwiXG4gIFtjbG9zZU9uRXNjYXBlXT1cImRyYXdlckNsb3NlT25Fc2NhcGVcIlxuICBbbW9kYWxdPVwiZHJhd2VyRGlzbWlzc2FibGVcIlxuICAob25IaWRlKT1cImNsb3NlKClcIj5cbiAgXG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb3JtQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICBcbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZvb3RlclwiICpuZ0lmPVwic2hvd1N1Ym1pdEJ1dHRvbiB8fCBzaG93Q2FuY2VsQnV0dG9uXCI+XG4gICAgPGRpdiBjbGFzcz1cImRyYXdlci1mb290ZXJcIj5cbiAgICAgIDxwLWJ1dHRvblxuICAgICAgICAqbmdJZj1cInNob3dDYW5jZWxCdXR0b25cIlxuICAgICAgICBbbGFiZWxdPVwiY2FuY2VsTGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbaWNvbl09XCJjYW5jZWxCdXR0b25JY29uXCJcbiAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAob25DbGljayk9XCJoYW5kbGVDYW5jZWwoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nXCI+XG4gICAgICA8L3AtYnV0dG9uPlxuICAgICAgPHAtYnV0dG9uXG4gICAgICAgICpuZ0lmPVwic2hvd1N1Ym1pdEJ1dHRvblwiXG4gICAgICAgIFtsYWJlbF09XCJzdWJtaXRMYWJlbCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtpY29uXT1cInN1Ym1pdEJ1dHRvbkljb25cIlxuICAgICAgICAob25DbGljayk9XCJoYW5kbGVTdWJtaXQoKVwiXG4gICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCI+XG4gICAgICA8L3AtYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9wLWRyYXdlcj5cblxuPCEtLSBUZW1wbGF0ZSBkbyBGb3JtdWzDoXJpbyAocmV1dGlsaXrDoXZlbCkgLS0+XG48bmctdGVtcGxhdGUgI2Zvcm1Db250ZW50PlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cImR5bmFtaWMtZm9ybVwiPlxuICAgIFxuICAgIDwhLS0gRmlsdHJvcyBGaXhvcyAoYXBlbmFzIG5vIG1vZG8gZmlsdGVyKSAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwibW9kZSA9PT0gJ2ZpbHRlcicgJiYgaGFzRml4ZWRGaWx0ZXJzXCIgY2xhc3M9XCJmaXhlZC1maWx0ZXJzLXNlY3Rpb25cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZpeGVkRmlsdGVyc1wiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0ZpZWxkVmlzaWJsZShmaWVsZClcIiBbbmdDbGFzc109XCJnZXRGaWVsZEdyaWRDbGFzcyhmaWVsZClcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWVsZFRlbXBsYXRlOyBjb250ZXh0OiB7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIENhbXBvcyBEaXJldG9zIChzZW0gc2XDp8OjbykgLS0+XG4gICAgPGRpdiAqbmdJZj1cImhhc0ZpZWxkc1wiPlxuICAgICAgPCEtLSBNb2RvIElubGluZSBFZGl0IC0tPlxuICAgICAgPGRpdiAqbmdJZj1cImlzSW5saW5lRWRpdE1vZGVcIiBjbGFzcz1cImlubGluZS1lZGl0LWZpZWxkc1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBmb3JtRmllbGRzXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImlzRmllbGRWaXNpYmxlKGZpZWxkKVwiIGNsYXNzPVwiaW5saW5lLWVkaXQtZmllbGRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbmxpbmVFZGl0RmllbGRUZW1wbGF0ZTsgY29udGV4dDogeyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIE1vZG8gRm9ybSBOb3JtYWwgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwiIWlzSW5saW5lRWRpdE1vZGVcIiBjbGFzcz1cImdyaWRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZm9ybUZpZWxkc1wiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0ZpZWxkVmlzaWJsZShmaWVsZClcIiBbbmdDbGFzc109XCJnZXRGaWVsZEdyaWRDbGFzcyhmaWVsZClcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWVsZFRlbXBsYXRlOyBjb250ZXh0OiB7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNlw6fDtWVzIGRlIENhbXBvcyAobW9kbyBmb3JtKSAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiaGFzU2VjdGlvbnNcIiBjbGFzcz1cInNlY3Rpb25zLWNvbnRhaW5lclwiPlxuICAgICAgPHAtcGFuZWwgXG4gICAgICAgICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIGZvcm1TZWN0aW9uc1wiXG4gICAgICAgIFt0b2dnbGVhYmxlXT1cInNlY3Rpb24udG9nZ2xlYWJsZSAhPT0gZmFsc2VcIlxuICAgICAgICBbY29sbGFwc2VkXT1cInNlY3Rpb24uY29sbGFwc2VkIHx8IGZhbHNlXCJcbiAgICAgICAgW3N0eWxlQ2xhc3NdPVwiJ3NlY3Rpb24tcGFuZWwnXCI+XG4gICAgICAgIFxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyXCI+XG4gICAgICAgICAgICA8aSAqbmdJZj1cInNlY3Rpb24uaWNvblwiIFtjbGFzc109XCJzZWN0aW9uLmljb24gKyAnIHNlY3Rpb24taWNvbidcIj48L2k+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj57eyBzZWN0aW9uLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDwhLS0gTW9kbyBJbmxpbmUgRWRpdCAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cImlzSW5saW5lRWRpdE1vZGVcIiBjbGFzcz1cImlubGluZS1lZGl0LWZpZWxkc1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHNlY3Rpb24uZmllbGRzXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNGaWVsZFZpc2libGUoZmllbGQpXCIgY2xhc3M9XCJpbmxpbmUtZWRpdC1maWVsZFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5saW5lRWRpdEZpZWxkVGVtcGxhdGU7IGNvbnRleHQ6IHsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIE1vZG8gRm9ybSBOb3JtYWwgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhaXNJbmxpbmVFZGl0TW9kZVwiIGNsYXNzPVwiZ3JpZFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHNlY3Rpb24uZmllbGRzXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNGaWVsZFZpc2libGUoZmllbGQpXCIgW25nQ2xhc3NdPVwiZ2V0RmllbGRHcmlkQ2xhc3MoZmllbGQpXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWVsZFRlbXBsYXRlOyBjb250ZXh0OiB7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3AtcGFuZWw+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNlw6fDtWVzIGRlIEZpbHRyb3MgKGFwZW5hcyBubyBtb2RvIGZpbHRlcikgLS0+XG4gICAgPGRpdiAqbmdJZj1cIm1vZGUgPT09ICdmaWx0ZXInICYmIGhhc0ZpbHRlclNlY3Rpb25zXCIgY2xhc3M9XCJmaWx0ZXItc2VjdGlvbnMtY29udGFpbmVyXCI+XG4gICAgICA8cC1wYW5lbCBcbiAgICAgICAgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgZmlsdGVyU2VjdGlvbnNcIlxuICAgICAgICBbaGVhZGVyXT1cInNlY3Rpb24udGl0bGVcIlxuICAgICAgICBbdG9nZ2xlYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgW2NvbGxhcHNlZF09XCJ0cnVlXCI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBzZWN0aW9uLmZpZWxkc1wiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzRmllbGRWaXNpYmxlKGZpZWxkKVwiIFtuZ0NsYXNzXT1cImdldEZpZWxkR3JpZENsYXNzKGZpZWxkKVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRUZW1wbGF0ZTsgY29udGV4dDogeyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9wLXBhbmVsPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBCb3TDtWVzIGlubGluZSAoYXBlbmFzIHBhcmEgbW9kbyBpbmxpbmUpIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJpc0lubGluZU1vZGUgJiYgKHNob3dTdWJtaXRCdXR0b24gfHwgc2hvd0NhbmNlbEJ1dHRvbilcIiBjbGFzcz1cImZvcm0tYWN0aW9uc1wiPlxuICAgICAgPHAtYnV0dG9uXG4gICAgICAgICpuZ0lmPVwic2hvd0NhbmNlbEJ1dHRvblwiXG4gICAgICAgIFtsYWJlbF09XCJjYW5jZWxMYWJlbCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtpY29uXT1cImNhbmNlbEJ1dHRvbkljb25cIlxuICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgIChvbkNsaWNrKT1cImhhbmRsZUNhbmNlbCgpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIj5cbiAgICAgIDwvcC1idXR0b24+XG4gICAgICA8cC1idXR0b25cbiAgICAgICAgKm5nSWY9XCJzaG93U3VibWl0QnV0dG9uXCJcbiAgICAgICAgW2xhYmVsXT1cInN1Ym1pdExhYmVsIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2ljb25dPVwic3VibWl0QnV0dG9uSWNvblwiXG4gICAgICAgIChvbkNsaWNrKT1cImhhbmRsZVN1Ym1pdCgpXCJcbiAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIj5cbiAgICAgIDwvcC1idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgPC9mb3JtPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBUZW1wbGF0ZSBkZSBDYW1wbyAocmV1dGlsaXrDoXZlbCkgLS0+XG48bmctdGVtcGxhdGUgI2ZpZWxkVGVtcGxhdGUgbGV0LWZpZWxkPVwiZmllbGRcIj5cbiAgPCEtLSBUZXh0IEZpZWxkIC0tPlxuICA8c2lhLWR5bmFtaWMtZmllbGQtdGV4dFxuICAgICpuZ0lmPVwiZmllbGQudHlwZSA9PT0gJ3RleHQnXCJcbiAgICBbZmllbGRdPVwiZmllbGRcIlxuICAgIFtmb3JtXT1cImZvcm1cIlxuICAgIFttb2RlXT1cImZpZWxkTW9kZVwiPlxuICA8L3NpYS1keW5hbWljLWZpZWxkLXRleHQ+XG5cbiAgPCEtLSBUZXh0YXJlYSBGaWVsZCAtLT5cbiAgPHNpYS1keW5hbWljLWZpZWxkLXRleHRhcmVhXG4gICAgKm5nSWY9XCJmaWVsZC50eXBlID09PSAndGV4dGFyZWEnXCJcbiAgICBbZmllbGRdPVwiZmllbGRcIlxuICAgIFtmb3JtXT1cImZvcm1cIlxuICAgIFttb2RlXT1cImZpZWxkTW9kZVwiPlxuICA8L3NpYS1keW5hbWljLWZpZWxkLXRleHRhcmVhPlxuXG4gIDwhLS0gTnVtYmVyIEZpZWxkIC0tPlxuICA8c2lhLWR5bmFtaWMtZmllbGQtbnVtYmVyXG4gICAgKm5nSWY9XCJmaWVsZC50eXBlID09PSAnbnVtYmVyJ1wiXG4gICAgW2ZpZWxkXT1cImZpZWxkXCJcbiAgICBbZm9ybV09XCJmb3JtXCJcbiAgICBbbW9kZV09XCJmaWVsZE1vZGVcIj5cbiAgPC9zaWEtZHluYW1pYy1maWVsZC1udW1iZXI+XG5cbiAgPCEtLSBEYXRlIEZpZWxkIC0tPlxuICA8c2lhLWR5bmFtaWMtZmllbGQtZGF0ZVxuICAgICpuZ0lmPVwiZmllbGQudHlwZSA9PT0gJ2RhdGUnXCJcbiAgICBbZmllbGRdPVwiZmllbGRcIlxuICAgIFtmb3JtXT1cImZvcm1cIlxuICAgIFttb2RlXT1cImZpZWxkTW9kZVwiPlxuICA8L3NpYS1keW5hbWljLWZpZWxkLWRhdGU+XG5cbiAgPCEtLSBEcm9wZG93bi9FbnVtIEZpZWxkIC0tPlxuICA8c2lhLWR5bmFtaWMtZmllbGQtZHJvcGRvd25cbiAgICAqbmdJZj1cImZpZWxkLnR5cGUgPT09ICdkcm9wZG93bicgfHwgZmllbGQudHlwZSA9PT0gJ2VudW0nXCJcbiAgICBbZmllbGRdPVwiZmllbGRcIlxuICAgIFtmb3JtXT1cImZvcm1cIlxuICAgIFttb2RlXT1cImZpZWxkTW9kZVwiPlxuICA8L3NpYS1keW5hbWljLWZpZWxkLWRyb3Bkb3duPlxuXG4gIDwhLS0gTG9va3VwIEZpZWxkIC0tPlxuICA8c2lhLWR5bmFtaWMtZmllbGQtbG9va3VwXG4gICAgKm5nSWY9XCJmaWVsZC50eXBlID09PSAnbG9va3VwJ1wiXG4gICAgW2ZpZWxkXT1cImZpZWxkXCJcbiAgICBbZm9ybV09XCJmb3JtXCJcbiAgICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgIFttb2RlXT1cImZpZWxkTW9kZVwiPlxuICA8L3NpYS1keW5hbWljLWZpZWxkLWxvb2t1cD5cbjwvbmctdGVtcGxhdGU+XG5cblxuPCEtLSBUZW1wbGF0ZSBkZSBDYW1wbyBJbmxpbmUgRWRpdCAtLT5cbjxuZy10ZW1wbGF0ZSAjaW5saW5lRWRpdEZpZWxkVGVtcGxhdGUgbGV0LWZpZWxkPVwiZmllbGRcIj5cbiAgPGRpdiBjbGFzcz1cImVkaXQtaW5saW5lLWZpZWxkXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiZmllbGQtbGFiZWxcIj57eyBmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgXG4gICAgPCEtLSBEaXNwbGF5IE1vZGUgLS0+XG4gICAgPGRpdiBjbGFzcz1cImZpZWxkLWRpc3BsYXlcIiBcbiAgICAgICAgICpuZ0lmPVwiIWlzRmllbGRFZGl0aW5nKGZpZWxkLmZpZWxkKVwiIFxuICAgICAgICAgKGNsaWNrKT1cInN0YXJ0RWRpdEZpZWxkKGZpZWxkLmZpZWxkKVwiXG4gICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZGlzcGxheS12YWx1ZVwiIFxuICAgICAgICAgICAgW2F0dHIuZGF0YS1wbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciB8fCAoJ2NybXguYnVzaW5lc3Mubm90X2luZm9ybWVkJyB8IHRyYW5zbGF0ZSlcIj5cbiAgICAgICAge3sgZ2V0RmllbGREaXNwbGF5VmFsdWUoZmllbGQuZmllbGQpIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8aSBjbGFzcz1cInBpIHBpLXBlbmNpbCBlZGl0LWljb25cIiAqbmdJZj1cIiFmaWVsZC5kaXNhYmxlZFwiPjwvaT5cbiAgICA8L2Rpdj5cbiAgICBcbiAgICA8IS0tIEVkaXQgTW9kZSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZmllbGQtZWRpdFwiICpuZ0lmPVwiaXNGaWVsZEVkaXRpbmcoZmllbGQuZmllbGQpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWVsZFRlbXBsYXRlOyBjb250ZXh0OiB7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIFxuICAgICAgPCEtLSBBY3Rpb24gQnV0dG9ucyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJlZGl0LWFjdGlvbnNcIj5cbiAgICAgICAgPHAtYnV0dG9uIFxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIiBcbiAgICAgICAgICBpY29uPVwicGkgcGktY2hlY2tcIiBcbiAgICAgICAgICBbcm91bmRlZF09XCJ0cnVlXCJcbiAgICAgICAgICBzZXZlcml0eT1cInByaW1hcnlcIlxuICAgICAgICAgIChvbkNsaWNrKT1cInNhdmVJbmxpbmVGaWVsZChmaWVsZC5maWVsZClcIiBcbiAgICAgICAgICBbbG9hZGluZ109XCJzYXZpbmdGaWVsZFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImZvcm0uZ2V0KGZpZWxkLmZpZWxkKT8uaW52YWxpZFwiPlxuICAgICAgICA8L3AtYnV0dG9uPlxuICAgICAgICA8cC1idXR0b24gXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiIFxuICAgICAgICAgIGljb249XCJwaSBwaS10aW1lc1wiIFxuICAgICAgICAgIFtyb3VuZGVkXT1cInRydWVcIlxuICAgICAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAob25DbGljayk9XCJjYW5jZWxJbmxpbmVFZGl0KClcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJzYXZpbmdGaWVsZFwiPlxuICAgICAgICA8L3AtYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICBcbiAgICAgIDwhLS0gRXJyb3IgTWVzc2FnZSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1lcnJvclwiICpuZ0lmPVwiZm9ybS5nZXQoZmllbGQuZmllbGQpPy5pbnZhbGlkICYmIGZvcm0uZ2V0KGZpZWxkLmZpZWxkKT8udG91Y2hlZFwiPlxuICAgICAgICA8c21hbGwgY2xhc3M9XCJwLWVycm9yXCI+XG4gICAgICAgICAge3sgZm9ybS5nZXQoZmllbGQuZmllbGQpPy5lcnJvcnM/LlsncmVxdWlyZWQnXSA/ICgnY3JteC5idXNpbmVzcy5yZXF1aXJlZF9maWVsZCcgfCB0cmFuc2xhdGUpIDogJycgfX1cbiAgICAgICAgPC9zbWFsbD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
670
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMtYWkvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1haS9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUEwQixtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFVOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3RG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QXlCLG1FQUN6QiwyQkFBMkIscUVBQzNCLHlCQUF5QixtRUFDekIsNkJBQTZCLHVFQUM3QiwyQkFBMkIscUhBQzNCLDZCQUE2Qjs7NEZBS3BCLG9CQUFvQjtrQkFyQmhDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixhQUFhO3dCQUNiLHlCQUF5Qjt3QkFDekIsMkJBQTJCO3dCQUMzQix5QkFBeUI7d0JBQ3pCLDZCQUE2Qjt3QkFDN0IsMkJBQTJCO3dCQUMzQiw2QkFBNkI7cUJBQzlCOzJJQUtRLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUdHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBQYW5lbE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcGFuZWwnO1xuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaWFsb2cnO1xuaW1wb3J0IHsgRHJhd2VyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcmF3ZXInO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHsgXG4gIER5bmFtaWNGb3JtRmllbGRDb25maWcsIFxuICBEeW5hbWljRm9ybVNlY3Rpb24sXG4gIER5bmFtaWNGb3JtRGlzcGxheU1vZGUsXG4gIER5bmFtaWNGb3JtRGlhbG9nQ29uZmlnLFxuICBEeW5hbWljRm9ybURyYXdlckNvbmZpZ1xufSBmcm9tICcuL21vZGVscy9keW5hbWljLWZvcm0ubW9kZWxzJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFza1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYXNrLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IER5bmFtaWNGaWVsZFRleHRDb21wb25lbnQgfSBmcm9tICcuL2ZpZWxkcy9keW5hbWljLWZpZWxkLXRleHQuY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNGaWVsZE51bWJlckNvbXBvbmVudCB9IGZyb20gJy4vZmllbGRzL2R5bmFtaWMtZmllbGQtbnVtYmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljRmllbGREYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9maWVsZHMvZHluYW1pYy1maWVsZC1kYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljRmllbGREcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vZmllbGRzL2R5bmFtaWMtZmllbGQtZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNGaWVsZExvb2t1cENvbXBvbmVudCB9IGZyb20gJy4vZmllbGRzL2R5bmFtaWMtZmllbGQtbG9va3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljRmllbGRUZXh0YXJlYUNvbXBvbmVudCB9IGZyb20gJy4vZmllbGRzL2R5bmFtaWMtZmllbGQtdGV4dGFyZWEuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2lhLWR5bmFtaWMtZm9ybScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBQYW5lbE1vZHVsZSxcbiAgICBEaWFsb2dNb2R1bGUsXG4gICAgRHJhd2VyTW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVQaXBlLFxuICAgIER5bmFtaWNGaWVsZFRleHRDb21wb25lbnQsXG4gICAgRHluYW1pY0ZpZWxkTnVtYmVyQ29tcG9uZW50LFxuICAgIER5bmFtaWNGaWVsZERhdGVDb21wb25lbnQsXG4gICAgRHluYW1pY0ZpZWxkRHJvcGRvd25Db21wb25lbnQsXG4gICAgRHluYW1pY0ZpZWxkTG9va3VwQ29tcG9uZW50LFxuICAgIER5bmFtaWNGaWVsZFRleHRhcmVhQ29tcG9uZW50XG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgZm9ybUZpZWxkczogRHluYW1pY0Zvcm1GaWVsZENvbmZpZ1tdID0gW107XG4gIEBJbnB1dCgpIGZvcm1TZWN0aW9uczogRHluYW1pY0Zvcm1TZWN0aW9uW10gPSBbXTtcbiAgQElucHV0KCkgZml4ZWRGaWx0ZXJzOiBEeW5hbWljRm9ybUZpZWxkQ29uZmlnW10gPSBbXTsgLy8gRmlsdHJvcyBmaXhvcyAoc2VtcHJlIHZpc8OtdmVpcyBubyB0b3BvKVxuICBASW5wdXQoKSBmaWx0ZXJTZWN0aW9uczogRHluYW1pY0Zvcm1TZWN0aW9uW10gPSBbXTsgLy8gU2XDp8O1ZXMgZGUgZmlsdHJvcyAoY29sYXBzw6F2ZWlzKVxuICBASW5wdXQoKSBlbnRpdHlEYXRhOiBhbnkgPSBudWxsO1xuICBASW5wdXQoKSBtb2RlOiAnZm9ybScgfCAnZmlsdGVyJyB8ICdpbmxpbmUtZWRpdCcgPSAnZm9ybSc7XG4gIFxuICAvLyBEaXNwbGF5IE1vZGUgQ29uZmlndXJhdGlvblxuICBASW5wdXQoKSBkaXNwbGF5TW9kZTogRHluYW1pY0Zvcm1EaXNwbGF5TW9kZSA9ICdpbmxpbmUnO1xuICBASW5wdXQoKSB2aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpYWxvZ0NvbmZpZzogRHluYW1pY0Zvcm1EaWFsb2dDb25maWcgPSB7fTtcbiAgQElucHV0KCkgZHJhd2VyQ29uZmlnOiBEeW5hbWljRm9ybURyYXdlckNvbmZpZyA9IHt9O1xuICBcbiAgLy8gQnV0dG9uIENvbmZpZ3VyYXRpb25cbiAgQElucHV0KCkgc2hvd1N1Ym1pdEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93Q2FuY2VsQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHN1Ym1pdEJ1dHRvbkxhYmVsPzogc3RyaW5nO1xuICBASW5wdXQoKSBjYW5jZWxCdXR0b25MYWJlbD86IHN0cmluZztcbiAgQElucHV0KCkgc3VibWl0QnV0dG9uSWNvbjogc3RyaW5nID0gJ3BpIHBpLWNoZWNrJztcbiAgQElucHV0KCkgY2FuY2VsQnV0dG9uSWNvbjogc3RyaW5nID0gJ3BpIHBpLXRpbWVzJztcbiAgXG4gIEBPdXRwdXQoKSBmb3JtUmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1Hcm91cD4oKTtcbiAgQE91dHB1dCgpIGZvcm1TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBvbkNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGZpZWxkU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBmaWVsZDogc3RyaW5nLCB2YWx1ZTogYW55IH0+KCk7XG5cbiAgZm9ybSE6IEZvcm1Hcm91cDtcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBcbiAgLy8gSW5saW5lIGVkaXQgbW9kZSBzdGF0ZVxuICBlZGl0aW5nRmllbGQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBzYXZpbmdGaWVsZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGdldCBoYXNGaWVsZHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUZpZWxkcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ2V0IGhhc1NlY3Rpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZvcm1TZWN0aW9ucy5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ2V0IGhhc0ZpeGVkRmlsdGVycygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maXhlZEZpbHRlcnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGdldCBoYXNGaWx0ZXJTZWN0aW9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJTZWN0aW9ucy5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ2V0IGFsbEZpZWxkcygpOiBEeW5hbWljRm9ybUZpZWxkQ29uZmlnW10ge1xuICAgIC8vIFJldG9ybmEgdG9kb3Mgb3MgY2FtcG9zIChkaXJldG9zICsgZGFzIHNlw6fDtWVzICsgZmlsdHJvcyBmaXhvcyArIHNlw6fDtWVzIGRlIGZpbHRyb3MpXG4gICAgY29uc3Qgc2VjdGlvbkZpZWxkcyA9IHRoaXMuZm9ybVNlY3Rpb25zLmZsYXRNYXAoc2VjdGlvbiA9PiBzZWN0aW9uLmZpZWxkcyk7XG4gICAgY29uc3QgZmlsdGVyU2VjdGlvbkZpZWxkcyA9IHRoaXMuZmlsdGVyU2VjdGlvbnMuZmxhdE1hcChzZWN0aW9uID0+IHNlY3Rpb24uZmllbGRzKTtcbiAgICByZXR1cm4gWy4uLnRoaXMuZm9ybUZpZWxkcywgLi4uc2VjdGlvbkZpZWxkcywgLi4udGhpcy5maXhlZEZpbHRlcnMsIC4uLmZpbHRlclNlY3Rpb25GaWVsZHNdO1xuICB9XG5cbiAgZ2V0IGlzSW5saW5lTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5TW9kZSA9PT0gJ2lubGluZSc7XG4gIH1cblxuICBnZXQgaXNJbmxpbmVFZGl0TW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnaW5saW5lLWVkaXQnO1xuICB9XG5cbiAgZ2V0IGZpZWxkTW9kZSgpOiAnZm9ybScgfCAnZmlsdGVyJyB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbmxpbmVFZGl0TW9kZSA/ICdmb3JtJyA6IHRoaXMubW9kZSBhcyAnZm9ybScgfCAnZmlsdGVyJztcbiAgfVxuXG4gIGdldCBpc0RpYWxvZ01vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheU1vZGUgPT09ICdkaWFsb2cnO1xuICB9XG5cbiAgZ2V0IGlzRHJhd2VyTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5TW9kZSA9PT0gJ2RyYXdlcic7XG4gIH1cblxuICAvLyBEaWFsb2cgY29uZmlndXJhdGlvbiB3aXRoIGRlZmF1bHRzXG4gIGdldCBkaWFsb2dIZWFkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kaWFsb2dDb25maWcuaGVhZGVyIHx8IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZSgnZGVzaWduLmNvbXBvbmVudHNfYWkuZm9ybScpO1xuICB9XG5cbiAgZ2V0IGRpYWxvZ1dpZHRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nQ29uZmlnLndpZHRoIHx8ICc2MDBweCc7XG4gIH1cblxuICBnZXQgZGlhbG9nRHJhZ2dhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpYWxvZ0NvbmZpZy5kcmFnZ2FibGUgIT09IHVuZGVmaW5lZCA/IHRoaXMuZGlhbG9nQ29uZmlnLmRyYWdnYWJsZSA6IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGRpYWxvZ1Jlc2l6YWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaWFsb2dDb25maWcucmVzaXphYmxlICE9PSB1bmRlZmluZWQgPyB0aGlzLmRpYWxvZ0NvbmZpZy5yZXNpemFibGUgOiBmYWxzZTtcbiAgfVxuXG4gIGdldCBkaWFsb2dNYXhpbWl6YWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaWFsb2dDb25maWcubWF4aW1pemFibGUgIT09IHVuZGVmaW5lZCA/IHRoaXMuZGlhbG9nQ29uZmlnLm1heGltaXphYmxlIDogZmFsc2U7XG4gIH1cblxuICBnZXQgZGlhbG9nQ2xvc2VPbkVzY2FwZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaWFsb2dDb25maWcuY2xvc2VPbkVzY2FwZSAhPT0gdW5kZWZpbmVkID8gdGhpcy5kaWFsb2dDb25maWcuY2xvc2VPbkVzY2FwZSA6IHRydWU7XG4gIH1cblxuICBnZXQgZGlhbG9nRGlzbWlzc2FibGVNYXNrKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpYWxvZ0NvbmZpZy5kaXNtaXNzYWJsZU1hc2sgIT09IHVuZGVmaW5lZCA/IHRoaXMuZGlhbG9nQ29uZmlnLmRpc21pc3NhYmxlTWFzayA6IGZhbHNlO1xuICB9XG5cbiAgLy8gRHJhd2VyIGNvbmZpZ3VyYXRpb24gd2l0aCBkZWZhdWx0c1xuICBnZXQgZHJhd2VySGVhZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZHJhd2VyQ29uZmlnLmhlYWRlciB8fCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGUoJ2Rlc2lnbi5jb21wb25lbnRzX2FpLmZvcm0nKTtcbiAgfVxuXG4gIGdldCBkcmF3ZXJQb3NpdGlvbigpOiAnbGVmdCcgfCAncmlnaHQnIHwgJ3RvcCcgfCAnYm90dG9tJyB7XG4gICAgcmV0dXJuIHRoaXMuZHJhd2VyQ29uZmlnLnBvc2l0aW9uIHx8ICdyaWdodCc7XG4gIH1cblxuICBnZXQgZHJhd2VyU2hvd0Nsb3NlSWNvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kcmF3ZXJDb25maWcuc2hvd0Nsb3NlSWNvbiAhPT0gdW5kZWZpbmVkID8gdGhpcy5kcmF3ZXJDb25maWcuc2hvd0Nsb3NlSWNvbiA6IHRydWU7XG4gIH1cblxuICBnZXQgZHJhd2VyQ2xvc2VPbkVzY2FwZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kcmF3ZXJDb25maWcuY2xvc2VPbkVzY2FwZSAhPT0gdW5kZWZpbmVkID8gdGhpcy5kcmF3ZXJDb25maWcuY2xvc2VPbkVzY2FwZSA6IHRydWU7XG4gIH1cblxuICBnZXQgZHJhd2VyRGlzbWlzc2FibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZHJhd2VyQ29uZmlnLmRpc21pc3NhYmxlICE9PSB1bmRlZmluZWQgPyB0aGlzLmRyYXdlckNvbmZpZy5kaXNtaXNzYWJsZSA6IHRydWU7XG4gIH1cblxuICBnZXQgZHJhd2VyU3R5bGUoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmRyYXdlclBvc2l0aW9uO1xuICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IHBvc2l0aW9uID09PSAnbGVmdCcgfHwgcG9zaXRpb24gPT09ICdyaWdodCc7XG4gICAgXG4gICAgLy8gU2UgdGVtIGN1c3RvbVdpZHRoLCB1c2EgZWxhXG4gICAgaWYgKHRoaXMuZHJhd2VyQ29uZmlnLmN1c3RvbVdpZHRoKSB7XG4gICAgICByZXR1cm4gaXNIb3Jpem9udGFsIFxuICAgICAgICA/IHsgd2lkdGg6IHRoaXMuZHJhd2VyQ29uZmlnLmN1c3RvbVdpZHRoIH1cbiAgICAgICAgOiB7IGhlaWdodDogdGhpcy5kcmF3ZXJDb25maWcuY3VzdG9tV2lkdGggfTtcbiAgICB9XG4gICAgXG4gICAgLy8gVXNhIG8gdGFtYW5obyBwYWRyb25pemFkb1xuICAgIGNvbnN0IHNpemUgPSB0aGlzLmRyYXdlckNvbmZpZy5zaXplIHx8ICdtZWRpdW0nO1xuICAgIGNvbnN0IHNpemVNYXAgPSB7XG4gICAgICAnc21hbGwnOiBpc0hvcml6b250YWwgPyAnMjUlJyA6ICcyNXZoJyxcbiAgICAgICdtZWRpdW0nOiBpc0hvcml6b250YWwgPyAnNDAlJyA6ICc0MHZoJyxcbiAgICAgICdsYXJnZSc6IGlzSG9yaXpvbnRhbCA/ICc2MCUnIDogJzYwdmgnLFxuICAgICAgJ3hsYXJnZSc6IGlzSG9yaXpvbnRhbCA/ICc4MCUnIDogJzgwdmgnLFxuICAgICAgJ2Z1bGwnOiBpc0hvcml6b250YWwgPyAnMTAwJScgOiAnMTAwdmgnXG4gICAgfTtcbiAgICBcbiAgICBjb25zdCBzaXplVmFsdWUgPSBzaXplTWFwW3NpemVdO1xuICAgIHJldHVybiBpc0hvcml6b250YWwgXG4gICAgICA/IHsgd2lkdGg6IHNpemVWYWx1ZSB9XG4gICAgICA6IHsgaGVpZ2h0OiBzaXplVmFsdWUgfTtcbiAgfVxuXG4gIGdldCBzdWJtaXRMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN1Ym1pdEJ1dHRvbkxhYmVsIHx8IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZSgnZGVzaWduLmNvbXBvbmVudHNfYWkuc2F2ZScpO1xuICB9XG5cbiAgZ2V0IGNhbmNlbExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2FuY2VsQnV0dG9uTGFiZWwgfHwgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlKCdkZXNpZ24uY29tcG9uZW50c19haS5jYW5jZWwnKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtYXNrU2VydmljZTogTWFza1NlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgICBpZiAodGhpcy5lbnRpdHlEYXRhKSB7XG4gICAgICB0aGlzLmxvYWRFbnRpdHlEYXRhKCk7XG4gICAgfVxuICAgIHRoaXMuc2V0dXBDb25kaXRpb25hbEZpZWxkc1dhdGNoZXIoKTtcbiAgICB0aGlzLmZvcm1SZWFkeS5lbWl0KHRoaXMuZm9ybSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLy8gSGFuZGxlIGVudGl0eURhdGEgY2hhbmdlcyBmaXJzdFxuICAgIGlmIChjaGFuZ2VzWydlbnRpdHlEYXRhJ10gJiYgdGhpcy5mb3JtKSB7XG4gICAgICBpZiAodGhpcy5lbnRpdHlEYXRhKSB7XG4gICAgICAgIHRoaXMubG9hZEVudGl0eURhdGEoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIC8vIFdoZW4gZGlhbG9nL2RyYXdlciBvcGVucywgZW5zdXJlIGZvcm0gaXMgbG9hZGVkIHdpdGggZW50aXR5RGF0YVxuICAgIGlmIChjaGFuZ2VzWyd2aXNpYmxlJ10gJiYgY2hhbmdlc1sndmlzaWJsZSddLmN1cnJlbnRWYWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICBcbiAgICAgIC8vIElmIG9wZW5pbmcgd2l0aCBlbnRpdHlEYXRhLCByZWxvYWQgaXQgdG8gZW5zdXJlIGZvcm0gaXMgcG9wdWxhdGVkXG4gICAgICBpZiAodGhpcy5lbnRpdHlEYXRhICYmIHRoaXMuZm9ybSkge1xuICAgICAgICB0aGlzLmxvYWRFbnRpdHlEYXRhKCk7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmVudGl0eURhdGEgJiYgdGhpcy5mb3JtKSB7XG4gICAgICAgIC8vIElmIG9wZW5pbmcgd2l0aG91dCBlbnRpdHlEYXRhIChuZXcgcmVjb3JkKSwgcmVzZXQgZm9ybVxuICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGluaXRGb3JtKCk6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1Db250cm9sczogYW55ID0ge307XG4gICAgXG4gICAgLy8gUHJvY2Vzc2EgdG9kb3Mgb3MgY2FtcG9zIChkaXJldG9zICsgZGFzIHNlw6fDtWVzKVxuICAgIHRoaXMuYWxsRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0gdGhpcy5nZXREZWZhdWx0VmFsdWUoZmllbGQpO1xuICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHRoaXMubW9kZSA9PT0gJ2ZpbHRlcicgPyBbXSA6IChmaWVsZC52YWxpZGF0b3JzIHx8IFtdKTtcbiAgICAgIFxuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZmIuY29udHJvbChcbiAgICAgICAgeyB2YWx1ZTogZGVmYXVsdFZhbHVlLCBkaXNhYmxlZDogZmllbGQuZGlzYWJsZWQgfHwgZmFsc2UgfSxcbiAgICAgICAgdmFsaWRhdG9yc1xuICAgICAgKTtcbiAgICAgIFxuICAgICAgZm9ybUNvbnRyb2xzW2ZpZWxkLmZpZWxkXSA9IGNvbnRyb2w7XG4gICAgfSk7XG4gICAgXG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cChmb3JtQ29udHJvbHMpO1xuICAgIHRoaXMuYXBwbHlJbml0aWFsRGlzYWJsZWRTdGF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0VmFsdWUoZmllbGQ6IER5bmFtaWNGb3JtRmllbGRDb25maWcpOiBhbnkge1xuICAgIGlmIChmaWVsZC5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZpZWxkLmRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICBjYXNlICdkcm9wZG93bic6XG4gICAgICBjYXNlICdlbnVtJzpcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ2ZpbHRlcicgPyBudWxsIDogJyc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUluaXRpYWxEaXNhYmxlZFN0YXRlKCk6IHZvaWQge1xuICAgIHRoaXMuYWxsRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgaWYgKGZpZWxkLmRpc2FibGVkV2hlbikge1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChmaWVsZC5maWVsZCk7XG4gICAgICAgIGlmIChjb250cm9sICYmIHRoaXMuaXNGaWVsZERpc2FibGVkKGZpZWxkKSkge1xuICAgICAgICAgIGNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBsb2FkRW50aXR5RGF0YSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lbnRpdHlEYXRhICYmIHRoaXMuZm9ybSkge1xuICAgICAgY29uc3QgcHJvY2Vzc2VkRGF0YSA9IHRoaXMucHJvY2Vzc0VudGl0eURhdGEodGhpcy5lbnRpdHlEYXRhKTtcbiAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHByb2Nlc3NlZERhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0VudGl0eURhdGEoZW50aXR5OiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IHByb2Nlc3NlZERhdGEgPSB7IC4uLmVudGl0eSB9O1xuICAgIFxuICAgIHRoaXMuYWxsRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdsb29rdXAnICYmIHByb2Nlc3NlZERhdGFbZmllbGQuZmllbGRdKSB7XG4gICAgICAgIGNvbnN0IGxvb2t1cFZhbHVlID0gcHJvY2Vzc2VkRGF0YVtmaWVsZC5maWVsZF07XG4gICAgICAgIC8vIEtlZXAgdGhlIGZ1bGwgb2JqZWN0IGlmIGl0IGhhcyBkaXNwbGF5IGRhdGEsIG90aGVyd2lzZSBleHRyYWN0IElEXG4gICAgICAgIGlmICh0eXBlb2YgbG9va3VwVmFsdWUgPT09ICdvYmplY3QnICYmIGxvb2t1cFZhbHVlLmlkKSB7XG4gICAgICAgICAgY29uc3QgaGFzRGlzcGxheURhdGEgPSBmaWVsZC5sb29rdXBEaXNwbGF5RmllbGRzIFxuICAgICAgICAgICAgPyBmaWVsZC5sb29rdXBEaXNwbGF5RmllbGRzLnNvbWUoZiA9PiB0aGlzLmdldE5lc3RlZFZhbHVlKGxvb2t1cFZhbHVlLCBmKSlcbiAgICAgICAgICAgIDogbG9va3VwVmFsdWVbZmllbGQubG9va3VwRGlzcGxheUZpZWxkIHx8ICduYW1lJ107XG4gICAgICAgICAgXG4gICAgICAgICAgaWYgKGhhc0Rpc3BsYXlEYXRhKSB7XG4gICAgICAgICAgICAvLyBLZWVwIHRoZSBmdWxsIG9iamVjdCB0byBhdm9pZCB1bm5lY2Vzc2FyeSBBUEkgY2FsbHNcbiAgICAgICAgICAgIHByb2Nlc3NlZERhdGFbZmllbGQuZmllbGRdID0gbG9va3VwVmFsdWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE9ubHkgaGFzIElELCBleHRyYWN0IGl0XG4gICAgICAgICAgICBwcm9jZXNzZWREYXRhW2ZpZWxkLmZpZWxkXSA9IGxvb2t1cFZhbHVlLmlkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIFxuICAgIHJldHVybiBwcm9jZXNzZWREYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROZXN0ZWRWYWx1ZShvYmo6IGFueSwgcGF0aDogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gcGF0aC5zcGxpdCgnLicpLnJlZHVjZSgoY3VycmVudCwga2V5KSA9PiBjdXJyZW50Py5ba2V5XSwgb2JqKTtcbiAgfVxuXG4gIHJlc2V0Rm9ybSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtKSB7XG4gICAgICBjb25zdCByZXNldFZhbHVlczogYW55ID0ge307XG4gICAgICB0aGlzLmFsbEZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgcmVzZXRWYWx1ZXNbZmllbGQuZmllbGRdID0gdGhpcy5nZXREZWZhdWx0VmFsdWUoZmllbGQpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmZvcm0ucmVzZXQocmVzZXRWYWx1ZXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0ZpbHRlclZhbHVlKGZvcm1WYWx1ZTogYW55KTogYW55IHtcbiAgICBjb25zdCBwcm9jZXNzZWRWYWx1ZSA9IHsgLi4uZm9ybVZhbHVlIH07XG4gICAgXG4gICAgdGhpcy5hbGxGaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICBjb25zdCBmaWVsZFZhbHVlID0gcHJvY2Vzc2VkVmFsdWVbZmllbGQuZmllbGRdO1xuICAgICAgXG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2xvb2t1cCcpIHtcbiAgICAgICAgaWYgKGZpZWxkVmFsdWUgJiYgdHlwZW9mIGZpZWxkVmFsdWUgPT09ICdvYmplY3QnICYmIGZpZWxkVmFsdWUuaWQpIHtcbiAgICAgICAgICBwcm9jZXNzZWRWYWx1ZVtmaWVsZC5maWVsZF0gPSBmaWVsZFZhbHVlO1xuICAgICAgICB9IGVsc2UgaWYgKGZpZWxkVmFsdWUgJiYgdHlwZW9mIGZpZWxkVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcHJvY2Vzc2VkVmFsdWVbZmllbGQuZmllbGRdID0geyBpZDogZmllbGRWYWx1ZSB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByb2Nlc3NlZFZhbHVlW2ZpZWxkLmZpZWxkXSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBcbiAgICByZXR1cm4gcHJvY2Vzc2VkVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NGb3JtVmFsdWUoZm9ybVZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IHByb2Nlc3NlZFZhbHVlID0geyAuLi5mb3JtVmFsdWUgfTtcbiAgICBcbiAgICBpZiAodGhpcy5lbnRpdHlEYXRhPy5pZCkge1xuICAgICAgcHJvY2Vzc2VkVmFsdWUuaWQgPSB0aGlzLmVudGl0eURhdGEuaWQ7XG4gICAgfVxuICAgIFxuICAgIHRoaXMuYWxsRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgY29uc3QgZmllbGRWYWx1ZSA9IHByb2Nlc3NlZFZhbHVlW2ZpZWxkLmZpZWxkXTtcbiAgICAgIFxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdsb29rdXAnKSB7XG4gICAgICAgIC8vIEtlZXAgdGhlIGZ1bGwgb2JqZWN0IGZvciBsb29rdXAgZmllbGRzXG4gICAgICAgIGlmIChmaWVsZFZhbHVlICYmIHR5cGVvZiBmaWVsZFZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIC8vIE9iamVjdCBpcyBhbHJlYWR5IGNvbXBsZXRlLCBrZWVwIGl0IGFzIGlzXG4gICAgICAgICAgcHJvY2Vzc2VkVmFsdWVbZmllbGQuZmllbGRdID0gZmllbGRWYWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChmaWVsZFZhbHVlICYmIGZpZWxkVmFsdWUgIT09ICcnKSB7XG4gICAgICAgICAgLy8gSWYgaXQncyBqdXN0IGFuIElELCB3cmFwIGl0IGluIGFuIG9iamVjdFxuICAgICAgICAgIHByb2Nlc3NlZFZhbHVlW2ZpZWxkLmZpZWxkXSA9IHsgaWQ6IGZpZWxkVmFsdWUgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcm9jZXNzZWRWYWx1ZVtmaWVsZC5maWVsZF0gPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGZpZWxkLnR5cGUgPT09ICdkYXRlJykge1xuICAgICAgICBpZiAoZmllbGRWYWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICBwcm9jZXNzZWRWYWx1ZVtmaWVsZC5maWVsZF0gPSBmaWVsZFZhbHVlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXTtcbiAgICAgICAgfSBlbHNlIGlmICghZmllbGRWYWx1ZSkge1xuICAgICAgICAgIHByb2Nlc3NlZFZhbHVlW2ZpZWxkLmZpZWxkXSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoWyd0ZXh0JywgJ3RleHRhcmVhJywgJ251bWJlcicsICdlbnVtJywgJ2Ryb3Bkb3duJ10uaW5jbHVkZXMoZmllbGQudHlwZSkpIHtcbiAgICAgICAgaWYgKGZpZWxkVmFsdWUgPT09ICcnIHx8IGZpZWxkVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHByb2Nlc3NlZFZhbHVlW2ZpZWxkLmZpZWxkXSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBcbiAgICByZXR1cm4gcHJvY2Vzc2VkVmFsdWU7XG4gIH1cblxuICBnZXRGaWVsZEdyaWRDbGFzcyhmaWVsZDogRHluYW1pY0Zvcm1GaWVsZENvbmZpZyk6IHN0cmluZyB7XG4gICAgY29uc3QgY2xhc3Nlczogc3RyaW5nW10gPSBbXTtcbiAgICBcbiAgICAvLyBDb2xzcGFuIGJhc2UgKHBhZHLDo286IDYpXG4gICAgbGV0IGJhc2VDb2xzcGFuID0gZmllbGQuY29sc3BhbiB8fCA2O1xuICAgIFxuICAgIC8vIFZlcmlmaWNhIGNvbmRpw6fDtWVzIGRlIGNvbHNwYW4gZGluw6JtaWNvXG4gICAgaWYgKGZpZWxkLmNvbHNwYW5XaGVuICYmIGZpZWxkLmNvbHNwYW5XaGVuLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIGZpZWxkLmNvbHNwYW5XaGVuKSB7XG4gICAgICAgIGNvbnN0IGRlcGVuZGVudEZpZWxkVmFsdWUgPSB0aGlzLmZvcm0uZ2V0KGNvbmRpdGlvbi5maWVsZCk/LnZhbHVlO1xuICAgICAgICBpZiAoZGVwZW5kZW50RmllbGRWYWx1ZSA9PT0gY29uZGl0aW9uLnZhbHVlKSB7XG4gICAgICAgICAgYmFzZUNvbHNwYW4gPSBjb25kaXRpb24uY29sc3BhbjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvLyBBZGljaW9uYSBjbGFzc2UgYmFzZVxuICAgIGNsYXNzZXMucHVzaChgY29sLSR7YmFzZUNvbHNwYW59YCk7XG4gICAgXG4gICAgLy8gU3Vwb3J0YSB0YW50byBvIG9iamV0byBzaXplIHF1YW50byBhcyBwcm9wcmllZGFkZXMgYW50aWdhcyAocGFyYSBjb21wYXRpYmlsaWRhZGUpXG4gICAgY29uc3Qgc2l6ZVhzID0gZmllbGQuc2l6ZT8ueHMgPz8gZmllbGQuY29sc3BhblhzO1xuICAgIGNvbnN0IHNpemVTbSA9IGZpZWxkLnNpemU/LnNtID8/IGZpZWxkLmNvbHNwYW5TbTtcbiAgICBjb25zdCBzaXplTWQgPSBmaWVsZC5zaXplPy5tZCA/PyBmaWVsZC5jb2xzcGFuTWQ7XG4gICAgY29uc3Qgc2l6ZUxnID0gZmllbGQuc2l6ZT8ubGcgPz8gZmllbGQuY29sc3BhbkxnO1xuICAgIGNvbnN0IHNpemVYbCA9IGZpZWxkLnNpemU/LnhsID8/IGZpZWxkLmNvbHNwYW5YbDtcbiAgICBcbiAgICAvLyBBZGljaW9uYSBjbGFzc2VzIHJlc3BvbnNpdmFzIHNlIGRlZmluaWRhc1xuICAgIGlmIChzaXplWHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xhc3Nlcy5wdXNoKGBjb2wteHMtJHtzaXplWHN9YCk7XG4gICAgfVxuICAgIGlmIChzaXplU20gIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xhc3Nlcy5wdXNoKGBjb2wtc20tJHtzaXplU219YCk7XG4gICAgfVxuICAgIGlmIChzaXplTWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xhc3Nlcy5wdXNoKGBjb2wtbWQtJHtzaXplTWR9YCk7XG4gICAgfVxuICAgIGlmIChzaXplTGcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xhc3Nlcy5wdXNoKGBjb2wtbGctJHtzaXplTGd9YCk7XG4gICAgfVxuICAgIGlmIChzaXplWGwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xhc3Nlcy5wdXNoKGBjb2wteGwtJHtzaXplWGx9YCk7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBjbGFzc2VzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIGlzRmllbGRWaXNpYmxlKGZpZWxkOiBEeW5hbWljRm9ybUZpZWxkQ29uZmlnKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ2ZpbHRlcicpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBcbiAgICBpZiAoIWZpZWxkLnZpc2libGVXaGVuKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBkZXBlbmRlbnRGaWVsZFZhbHVlID0gdGhpcy5mb3JtLmdldChmaWVsZC52aXNpYmxlV2hlbi5maWVsZCk/LnZhbHVlO1xuICAgIHJldHVybiBkZXBlbmRlbnRGaWVsZFZhbHVlID09PSBmaWVsZC52aXNpYmxlV2hlbi52YWx1ZTtcbiAgfVxuXG4gIGlzRmllbGREaXNhYmxlZChmaWVsZDogRHluYW1pY0Zvcm1GaWVsZENvbmZpZyk6IGJvb2xlYW4ge1xuICAgIGlmIChmaWVsZC5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIFxuICAgIGlmICghKCdkaXNhYmxlZFdoZW4nIGluIGZpZWxkKSB8fCAhZmllbGQuZGlzYWJsZWRXaGVuKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZGVwZW5kZW50RmllbGRWYWx1ZSA9IHRoaXMuZm9ybS5nZXQoZmllbGQuZGlzYWJsZWRXaGVuIS5maWVsZCk/LnZhbHVlO1xuICAgIFxuICAgIGlmIChmaWVsZC5kaXNhYmxlZFdoZW4hLnZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gIWRlcGVuZGVudEZpZWxkVmFsdWU7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBkZXBlbmRlbnRGaWVsZFZhbHVlID09PSBmaWVsZC5kaXNhYmxlZFdoZW4hLnZhbHVlO1xuICB9XG5cbiAgc2V0dXBDb25kaXRpb25hbEZpZWxkc1dhdGNoZXIoKTogdm9pZCB7XG4gICAgY29uc3QgdmlzaWJsZURlcGVuZGVudEZpZWxkcyA9IHRoaXMuYWxsRmllbGRzLmZpbHRlcihmaWVsZCA9PiBmaWVsZC52aXNpYmxlV2hlbik7XG4gICAgY29uc3QgdmlzaWJsZVdhdGNoZWRGaWVsZHMgPSBbLi4ubmV3IFNldCh2aXNpYmxlRGVwZW5kZW50RmllbGRzLm1hcChmaWVsZCA9PiBmaWVsZC52aXNpYmxlV2hlbiEuZmllbGQpKV07XG5cbiAgICBjb25zdCBkaXNhYmxlZERlcGVuZGVudEZpZWxkcyA9IHRoaXMuYWxsRmllbGRzLmZpbHRlcihmaWVsZCA9PiBmaWVsZC5kaXNhYmxlZFdoZW4pO1xuICAgIGNvbnN0IGRpc2FibGVkV2F0Y2hlZEZpZWxkcyA9IFsuLi5uZXcgU2V0KGRpc2FibGVkRGVwZW5kZW50RmllbGRzLm1hcChmaWVsZCA9PiBmaWVsZC5kaXNhYmxlZFdoZW4hLmZpZWxkKSldO1xuXG4gICAgY29uc3QgYWxsV2F0Y2hlZEZpZWxkcyA9IFsuLi5uZXcgU2V0KFsuLi52aXNpYmxlV2F0Y2hlZEZpZWxkcywgLi4uZGlzYWJsZWRXYXRjaGVkRmllbGRzXSldO1xuXG4gICAgYWxsV2F0Y2hlZEZpZWxkcy5mb3JFYWNoKGZpZWxkTmFtZSA9PiB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpO1xuICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNsZWFySGlkZGVuRmllbGRzKCk7XG4gICAgICAgICAgdGhpcy51cGRhdGVEaXNhYmxlZEZpZWxkcygpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZURpc2FibGVkRmllbGRzKCk6IHZvaWQge1xuICAgIHRoaXMuYWxsRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgaWYgKGZpZWxkLmRpc2FibGVkV2hlbikge1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChmaWVsZC5maWVsZCk7XG4gICAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgICAgY29uc3Qgc2hvdWxkQmVEaXNhYmxlZCA9IHRoaXMuaXNGaWVsZERpc2FibGVkKGZpZWxkKTtcbiAgICAgICAgICBcbiAgICAgICAgICBpZiAoc2hvdWxkQmVEaXNhYmxlZCAmJiBjb250cm9sLmVuYWJsZWQpIHtcbiAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICBjb250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFzaG91bGRCZURpc2FibGVkICYmIGNvbnRyb2wuZGlzYWJsZWQgJiYgIWZpZWxkLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBjb250cm9sLmVuYWJsZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY2xlYXJIaWRkZW5GaWVsZHMoKTogdm9pZCB7XG4gICAgdGhpcy5hbGxGaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICBpZiAoZmllbGQudmlzaWJsZVdoZW4gJiYgIXRoaXMuaXNGaWVsZFZpc2libGUoZmllbGQpKSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkLmZpZWxkKTtcbiAgICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgICBjb25zdCByZXNldFZhbHVlID0gdGhpcy5nZXREZWZhdWx0VmFsdWUoZmllbGQpO1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUocmVzZXRWYWx1ZSk7XG4gICAgICAgICAgY29udHJvbC5tYXJrQXNVbnRvdWNoZWQoKTtcbiAgICAgICAgICBjb250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldEZvcm0oKTogRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtO1xuICB9XG5cbiAgY2xlYXJGaWx0ZXJzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vZGUgPT09ICdmaWx0ZXInKSB7XG4gICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldFR5cGVQZXJzb25WYWx1ZSgpOiAnTkFUVVJBTF9QRVJTT04nIHwgJ0pVUklESUNBTF9QRVJTT04nIHtcbiAgICBjb25zdCB0eXBlUGVyc29uVmFsdWUgPSB0aGlzLmZvcm0/LmdldCgndHlwZVBlcnNvbicpPy52YWx1ZTtcbiAgICByZXR1cm4gdHlwZVBlcnNvblZhbHVlIHx8ICdKVVJJRElDQUxfUEVSU09OJztcbiAgfVxuXG4gIC8vIERpc3BsYXkgTW9kZSBDb250cm9sIE1ldGhvZHNcbiAgb3BlbihlbnRpdHk/OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoZW50aXR5KSB7XG4gICAgICB0aGlzLmVudGl0eURhdGEgPSBlbnRpdHk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW50aXR5RGF0YSA9IG51bGw7XG4gICAgICB0aGlzLnJlc2V0Rm9ybSgpOyAvLyBSZXNldCBmb3JtIHdoZW4gb3BlbmluZyBmb3IgbmV3IGVudGl0eVxuICAgIH1cbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsgLy8gUmVzZXQgbG9hZGluZyBzdGF0ZVxuICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gIH1cblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsgLy8gUmVzZXQgbG9hZGluZyBzdGF0ZVxuICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICB0aGlzLnJlc2V0Rm9ybSgpOyAvLyBSZXNldCBmb3JtIHdoZW4gY2xvc2luZ1xuICAgIHRoaXMub25DYW5jZWwuZW1pdCgpO1xuICB9XG5cbiAgaGFuZGxlQ2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIGhhbmRsZVN1Ym1pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnZm9ybScgJiYgdGhpcy5mb3JtLmludmFsaWQpIHtcbiAgICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgXG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5tb2RlID09PSAnZmlsdGVyJyBcbiAgICAgID8gdGhpcy5wcm9jZXNzRmlsdGVyVmFsdWUodGhpcy5mb3JtLnZhbHVlKVxuICAgICAgOiB0aGlzLnByb2Nlc3NGb3JtVmFsdWUodGhpcy5mb3JtLnZhbHVlKTtcbiAgICBcbiAgICB0aGlzLmZvcm1TdWJtaXQuZW1pdChmb3JtVmFsdWUpO1xuICB9XG5cbiAgLy8gSW5saW5lIEVkaXQgTW9kZSBNZXRob2RzXG4gIHN0YXJ0RWRpdEZpZWxkKGZpZWxkTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNJbmxpbmVFZGl0TW9kZSkge1xuICAgICAgdGhpcy5lZGl0aW5nRmllbGQgPSBmaWVsZE5hbWU7XG4gICAgICBcbiAgICAgIC8vIEVuc3VyZSB0aGUgZmllbGQgaGFzIHRoZSBjdXJyZW50IHZhbHVlIGZyb20gZW50aXR5RGF0YVxuICAgICAgaWYgKHRoaXMuZW50aXR5RGF0YSkge1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpO1xuICAgICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5hbGxGaWVsZHMuZmluZChmID0+IGYuZmllbGQgPT09IGZpZWxkTmFtZSk7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmVudGl0eURhdGFbZmllbGROYW1lXTtcbiAgICAgICAgICBcbiAgICAgICAgICAvLyBGb3IgbG9va3VwIGZpZWxkcyBpbiBpbmxpbmUtZWRpdCBtb2RlLCBrZWVwIHRoZSBmdWxsIG9iamVjdFxuICAgICAgICAgIC8vIFRoaXMgcHJldmVudHMgdW5uZWNlc3NhcnkgQVBJIGNhbGxzIHNpbmNlIHdlIGFscmVhZHkgaGF2ZSB0aGUgZGF0YVxuICAgICAgICAgIGlmIChmaWVsZD8udHlwZSA9PT0gJ2xvb2t1cCcgJiYgdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgLy8gS2VlcCB0aGUgZnVsbCBvYmplY3QgLSB0aGUgbG9va3VwIGNvbXBvbmVudCB3aWxsIHVzZSBpdFxuICAgICAgICAgICAgY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlzRmllbGRFZGl0aW5nKGZpZWxkTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdGluZ0ZpZWxkID09PSBmaWVsZE5hbWU7XG4gIH1cblxuICBzYXZlSW5saW5lRmllbGQoZmllbGROYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNJbmxpbmVFZGl0TW9kZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKTtcbiAgICBpZiAoIWNvbnRyb2wgfHwgY29udHJvbC5pbnZhbGlkKSB7XG4gICAgICBjb250cm9sPy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zYXZpbmdGaWVsZCA9IHRydWU7XG4gICAgXG4gICAgbGV0IGZpZWxkVmFsdWUgPSBjb250cm9sLnZhbHVlO1xuICAgIFxuICAgIC8vIEZvciBsb29rdXAgZmllbGRzLCBrZWVwIHRoZSBmdWxsIG9iamVjdCAoZG9uJ3QgZXh0cmFjdCBJRClcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuYWxsRmllbGRzLmZpbmQoZiA9PiBmLmZpZWxkID09PSBmaWVsZE5hbWUpO1xuICAgIGlmIChmaWVsZD8udHlwZSA9PT0gJ2xvb2t1cCcgJiYgZmllbGRWYWx1ZSAmJiB0eXBlb2YgZmllbGRWYWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIC8vIElmIGl0J3MganVzdCBhbiBJRCwgd3JhcCBpdCBpbiBhbiBvYmplY3RcbiAgICAgIGZpZWxkVmFsdWUgPSB7IGlkOiBmaWVsZFZhbHVlIH07XG4gICAgfVxuICAgIFxuICAgIHRoaXMuZmllbGRTYXZlLmVtaXQoeyBmaWVsZDogZmllbGROYW1lLCB2YWx1ZTogZmllbGRWYWx1ZSB9KTtcbiAgfVxuXG4gIGNhbmNlbElubGluZUVkaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNJbmxpbmVFZGl0TW9kZSAmJiB0aGlzLmVkaXRpbmdGaWVsZCkge1xuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQodGhpcy5lZGl0aW5nRmllbGQpO1xuICAgICAgaWYgKGNvbnRyb2wgJiYgdGhpcy5lbnRpdHlEYXRhKSB7XG4gICAgICAgIC8vIFJlc3RvcmUgb3JpZ2luYWwgdmFsdWVcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuZW50aXR5RGF0YVt0aGlzLmVkaXRpbmdGaWVsZF07XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUob3JpZ2luYWxWYWx1ZSk7XG4gICAgICAgIGNvbnRyb2wubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgICAgY29udHJvbC5tYXJrQXNVbnRvdWNoZWQoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZWRpdGluZ0ZpZWxkID0gbnVsbDtcbiAgICAgIHRoaXMuc2F2aW5nRmllbGQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvLyBNZXRob2QgdG8gYmUgY2FsbGVkIGJ5IHBhcmVudCBhZnRlciBzYXZlIGNvbXBsZXRlc1xuICBjb21wbGV0ZUlubGluZUVkaXQoKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0aW5nRmllbGQgPSBudWxsO1xuICAgIHRoaXMuc2F2aW5nRmllbGQgPSBmYWxzZTtcbiAgfVxuXG4gIGdldEZpZWxkRGlzcGxheVZhbHVlKGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuZW50aXR5RGF0YSkgcmV0dXJuICcnO1xuXG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmFsbEZpZWxkcy5maW5kKGYgPT4gZi5maWVsZCA9PT0gZmllbGROYW1lKTtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZW50aXR5RGF0YVtmaWVsZE5hbWVdO1xuXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuICcnO1xuXG4gICAgLy8gRm9yIGxvb2t1cCBmaWVsZHMsIHJldHVybiB0aGUgZGlzcGxheSBuYW1lXG4gICAgaWYgKGZpZWxkPy50eXBlID09PSAnbG9va3VwJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlLm5hbWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5uYW1lO1xuICAgIH1cblxuICAgIC8vIEZvciBsb29rdXAgZmllbGRzIHdpdGggbXVsdGlwbGUgZGlzcGxheSBmaWVsZHNcbiAgICBpZiAoZmllbGQ/LnR5cGUgPT09ICdsb29rdXAnICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgZmllbGQubG9va3VwRGlzcGxheUZpZWxkcykge1xuICAgICAgcmV0dXJuIGZpZWxkLmxvb2t1cERpc3BsYXlGaWVsZHNcbiAgICAgICAgLm1hcChmID0+IHRoaXMuZ2V0TmVzdGVkVmFsdWUodmFsdWUsIGYpKVxuICAgICAgICAuZmlsdGVyKHYgPT4gdilcbiAgICAgICAgLmpvaW4oJyAtICcpO1xuICAgIH1cblxuICAgIC8vIEZvciBkcm9wZG93bi9lbnVtIGZpZWxkcywgZmluZCB0aGUgbWF0Y2hpbmcgb3B0aW9uIGxhYmVsXG4gICAgaWYgKChmaWVsZD8udHlwZSA9PT0gJ2Ryb3Bkb3duJyB8fCBmaWVsZD8udHlwZSA9PT0gJ2VudW0nKSAmJiBmaWVsZCkge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IGZpZWxkLm9wdGlvbnMgfHwgZmllbGQuZW51bU9wdGlvbnMgfHwgW107XG4gICAgICBjb25zdCBvcHRpb25WYWx1ZSA9IGZpZWxkLm9wdGlvblZhbHVlIHx8ICd2YWx1ZSc7XG4gICAgICBjb25zdCBvcHRpb25MYWJlbCA9IGZpZWxkLm9wdGlvbkxhYmVsIHx8ICdsYWJlbCc7XG4gICAgICBjb25zdCBtYXRjaGluZ09wdGlvbiA9IG9wdGlvbnMuZmluZCgob3B0OiBhbnkpID0+IHtcbiAgICAgICAgY29uc3Qgb3B0VmFsID0gdHlwZW9mIG9wdCA9PT0gJ29iamVjdCcgPyBvcHRbb3B0aW9uVmFsdWVdIDogb3B0O1xuICAgICAgICByZXR1cm4gb3B0VmFsID09PSB2YWx1ZTtcbiAgICAgIH0pO1xuICAgICAgaWYgKG1hdGNoaW5nT3B0aW9uKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgbWF0Y2hpbmdPcHRpb24gPT09ICdvYmplY3QnID8gbWF0Y2hpbmdPcHRpb25bb3B0aW9uTGFiZWxdIDogbWF0Y2hpbmdPcHRpb247XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRm9yIG51bWJlciBmaWVsZHMsIGZvcm1hdCBhcHByb3ByaWF0ZWx5XG4gICAgaWYgKGZpZWxkPy50eXBlID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICBpZiAoZmllbGQubnVtYmVyTW9kZSA9PT0gJ2N1cnJlbmN5Jykge1xuICAgICAgICByZXR1cm4gbmV3IEludGwuTnVtYmVyRm9ybWF0KGZpZWxkLmxvY2FsZSB8fCAncHQtQlInLCB7XG4gICAgICAgICAgc3R5bGU6ICdjdXJyZW5jeScsXG4gICAgICAgICAgY3VycmVuY3k6IGZpZWxkLmN1cnJlbmN5IHx8ICdCUkwnXG4gICAgICAgIH0pLmZvcm1hdCh2YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IEludGwuTnVtYmVyRm9ybWF0KGZpZWxkLmxvY2FsZSB8fCAncHQtQlInLCB7XG4gICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogZmllbGQubWluRnJhY3Rpb25EaWdpdHMgfHwgMCxcbiAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBmaWVsZC5tYXhGcmFjdGlvbkRpZ2l0cyB8fCAyXG4gICAgICB9KS5mb3JtYXQodmFsdWUpO1xuICAgIH1cblxuICAgIC8vIEZvciBkYXRlIGZpZWxkcywgZm9ybWF0IGFzIGRhdGVcbiAgICBpZiAoZmllbGQ/LnR5cGUgPT09ICdkYXRlJyAmJiB2YWx1ZSkge1xuICAgICAgY29uc3QgZGF0ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBuZXcgRGF0ZSh2YWx1ZSkgOiB2YWx1ZTtcbiAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygncHQtQlInKTtcbiAgICB9XG5cbiAgICAvLyBGb3IgdGV4dCBmaWVsZHMgd2l0aCBkb2N1bWVudCBtYXNrLCBmb3JtYXQgdGhlIHZhbHVlXG4gICAgaWYgKGZpZWxkPy50eXBlID09PSAndGV4dCcgJiYgZmllbGQubWFzayA9PT0gJ2RvY3VtZW50JyAmJiB2YWx1ZSkge1xuICAgICAgY29uc3QgZGVwZW5kc09uID0gZmllbGQubWFza0RlcGVuZHNPbiB8fCAndHlwZVBlcnNvbic7XG4gICAgICBjb25zdCB0eXBlUGVyc29uID0gdGhpcy5lbnRpdHlEYXRhW2RlcGVuZHNPbl0gfHwgJ0pVUklESUNBTF9QRVJTT04nO1xuICAgICAgcmV0dXJuIHRoaXMubWFza1NlcnZpY2UuYXBwbHlEb2N1bWVudE1hc2soU3RyaW5nKHZhbHVlKSwgdHlwZVBlcnNvbik7XG4gICAgfVxuICAgIGlmIChmaWVsZD8udHlwZSA9PT0gJ3RleHQnICYmIGZpZWxkLm1hc2sgPT09ICdjcGYnICYmIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5tYXNrU2VydmljZS5hcHBseUNwZk1hc2soU3RyaW5nKHZhbHVlKSk7XG4gICAgfVxuICAgIGlmIChmaWVsZD8udHlwZSA9PT0gJ3RleHQnICYmIGZpZWxkLm1hc2sgPT09ICdjbnBqJyAmJiB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMubWFza1NlcnZpY2UuYXBwbHlDbnBqTWFzayhTdHJpbmcodmFsdWUpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgfVxufVxuIiwiPCEtLSBNb2RvIElubGluZSAocGFkcsOjbykgLS0+XG48bmctY29udGFpbmVyICpuZ0lmPVwiaXNJbmxpbmVNb2RlXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb3JtQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjwhLS0gTW9kbyBEaWFsb2cgLS0+XG48cC1kaWFsb2dcbiAgKm5nSWY9XCJpc0RpYWxvZ01vZGVcIlxuICBbKHZpc2libGUpXT1cInZpc2libGVcIlxuICBbaGVhZGVyXT1cImRpYWxvZ0hlYWRlciB8IHRyYW5zbGF0ZVwiXG4gIFttb2RhbF09XCJ0cnVlXCJcbiAgW3N0eWxlXT1cInsgd2lkdGg6IGRpYWxvZ1dpZHRoIH1cIlxuICBbZHJhZ2dhYmxlXT1cImRpYWxvZ0RyYWdnYWJsZVwiXG4gIFtyZXNpemFibGVdPVwiZGlhbG9nUmVzaXphYmxlXCJcbiAgW21heGltaXphYmxlXT1cImRpYWxvZ01heGltaXphYmxlXCJcbiAgW2Nsb3NlT25Fc2NhcGVdPVwiZGlhbG9nQ2xvc2VPbkVzY2FwZVwiXG4gIFtkaXNtaXNzYWJsZU1hc2tdPVwiZGlhbG9nRGlzbWlzc2FibGVNYXNrXCJcbiAgKG9uSGlkZSk9XCJjbG9zZSgpXCI+XG4gIFxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9ybUNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgXG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmb290ZXJcIiAqbmdJZj1cInNob3dTdWJtaXRCdXR0b24gfHwgc2hvd0NhbmNlbEJ1dHRvblwiPlxuICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctZm9vdGVyXCI+XG4gICAgICA8cC1idXR0b25cbiAgICAgICAgKm5nSWY9XCJzaG93Q2FuY2VsQnV0dG9uXCJcbiAgICAgICAgW2xhYmVsXT1cImNhbmNlbExhYmVsIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2ljb25dPVwiY2FuY2VsQnV0dG9uSWNvblwiXG4gICAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlQ2FuY2VsKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1wiPlxuICAgICAgPC9wLWJ1dHRvbj5cbiAgICAgIDxwLWJ1dHRvblxuICAgICAgICAqbmdJZj1cInNob3dTdWJtaXRCdXR0b25cIlxuICAgICAgICBbbGFiZWxdPVwic3VibWl0TGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbaWNvbl09XCJzdWJtaXRCdXR0b25JY29uXCJcbiAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlU3VibWl0KClcIlxuICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiPlxuICAgICAgPC9wLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvcC1kaWFsb2c+XG5cbjwhLS0gTW9kbyBEcmF3ZXIgLS0+XG48cC1kcmF3ZXJcbiAgKm5nSWY9XCJpc0RyYXdlck1vZGVcIlxuICBbKHZpc2libGUpXT1cInZpc2libGVcIlxuICBbaGVhZGVyXT1cImRyYXdlckhlYWRlciB8IHRyYW5zbGF0ZVwiXG4gIFtwb3NpdGlvbl09XCJkcmF3ZXJQb3NpdGlvblwiXG4gIFtzdHlsZV09XCJkcmF3ZXJTdHlsZVwiXG4gIFtzaG93Q2xvc2VJY29uXT1cImRyYXdlclNob3dDbG9zZUljb25cIlxuICBbY2xvc2VPbkVzY2FwZV09XCJkcmF3ZXJDbG9zZU9uRXNjYXBlXCJcbiAgW21vZGFsXT1cImRyYXdlckRpc21pc3NhYmxlXCJcbiAgKG9uSGlkZSk9XCJjbG9zZSgpXCI+XG4gIFxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9ybUNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgXG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmb290ZXJcIiAqbmdJZj1cInNob3dTdWJtaXRCdXR0b24gfHwgc2hvd0NhbmNlbEJ1dHRvblwiPlxuICAgIDxkaXYgY2xhc3M9XCJkcmF3ZXItZm9vdGVyXCI+XG4gICAgICA8cC1idXR0b25cbiAgICAgICAgKm5nSWY9XCJzaG93Q2FuY2VsQnV0dG9uXCJcbiAgICAgICAgW2xhYmVsXT1cImNhbmNlbExhYmVsIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2ljb25dPVwiY2FuY2VsQnV0dG9uSWNvblwiXG4gICAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlQ2FuY2VsKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1wiPlxuICAgICAgPC9wLWJ1dHRvbj5cbiAgICAgIDxwLWJ1dHRvblxuICAgICAgICAqbmdJZj1cInNob3dTdWJtaXRCdXR0b25cIlxuICAgICAgICBbbGFiZWxdPVwic3VibWl0TGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbaWNvbl09XCJzdWJtaXRCdXR0b25JY29uXCJcbiAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlU3VibWl0KClcIlxuICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiPlxuICAgICAgPC9wLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvcC1kcmF3ZXI+XG5cbjwhLS0gVGVtcGxhdGUgZG8gRm9ybXVsw6FyaW8gKHJldXRpbGl6w6F2ZWwpIC0tPlxuPG5nLXRlbXBsYXRlICNmb3JtQ29udGVudD5cbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJkeW5hbWljLWZvcm1cIj5cbiAgICBcbiAgICA8IS0tIEZpbHRyb3MgRml4b3MgKGFwZW5hcyBubyBtb2RvIGZpbHRlcikgLS0+XG4gICAgPGRpdiAqbmdJZj1cIm1vZGUgPT09ICdmaWx0ZXInICYmIGhhc0ZpeGVkRmlsdGVyc1wiIGNsYXNzPVwiZml4ZWQtZmlsdGVycy1zZWN0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBmaXhlZEZpbHRlcnNcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNGaWVsZFZpc2libGUoZmllbGQpXCIgW25nQ2xhc3NdPVwiZ2V0RmllbGRHcmlkQ2xhc3MoZmllbGQpXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRUZW1wbGF0ZTsgY29udGV4dDogeyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBDYW1wb3MgRGlyZXRvcyAoc2VtIHNlw6fDo28pIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJoYXNGaWVsZHNcIj5cbiAgICAgIDwhLS0gTW9kbyBJbmxpbmUgRWRpdCAtLT5cbiAgICAgIDxkaXYgKm5nSWY9XCJpc0lubGluZUVkaXRNb2RlXCIgY2xhc3M9XCJpbmxpbmUtZWRpdC1maWVsZHNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZm9ybUZpZWxkc1wiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0ZpZWxkVmlzaWJsZShmaWVsZClcIiBjbGFzcz1cImlubGluZS1lZGl0LWZpZWxkXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5saW5lRWRpdEZpZWxkVGVtcGxhdGU7IGNvbnRleHQ6IHsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBNb2RvIEZvcm0gTm9ybWFsIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cIiFpc0lubGluZUVkaXRNb2RlXCIgY2xhc3M9XCJncmlkXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZvcm1GaWVsZHNcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNGaWVsZFZpc2libGUoZmllbGQpXCIgW25nQ2xhc3NdPVwiZ2V0RmllbGRHcmlkQ2xhc3MoZmllbGQpXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRUZW1wbGF0ZTsgY29udGV4dDogeyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTZcOnw7VlcyBkZSBDYW1wb3MgKG1vZG8gZm9ybSkgLS0+XG4gICAgPGRpdiAqbmdJZj1cImhhc1NlY3Rpb25zXCIgY2xhc3M9XCJzZWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgIDxwLXBhbmVsIFxuICAgICAgICAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBmb3JtU2VjdGlvbnNcIlxuICAgICAgICBbdG9nZ2xlYWJsZV09XCJzZWN0aW9uLnRvZ2dsZWFibGUgIT09IGZhbHNlXCJcbiAgICAgICAgW2NvbGxhcHNlZF09XCJzZWN0aW9uLmNvbGxhcHNlZCB8fCBmYWxzZVwiXG4gICAgICAgIFtzdHlsZUNsYXNzXT1cIidzZWN0aW9uLXBhbmVsJ1wiPlxuICAgICAgICBcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRlclwiPlxuICAgICAgICAgICAgPGkgKm5nSWY9XCJzZWN0aW9uLmljb25cIiBbY2xhc3NdPVwic2VjdGlvbi5pY29uICsgJyBzZWN0aW9uLWljb24nXCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+e3sgc2VjdGlvbi50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8IS0tIE1vZG8gSW5saW5lIEVkaXQgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc0lubGluZUVkaXRNb2RlXCIgY2xhc3M9XCJpbmxpbmUtZWRpdC1maWVsZHNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBzZWN0aW9uLmZpZWxkc1wiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzRmllbGRWaXNpYmxlKGZpZWxkKVwiIGNsYXNzPVwiaW5saW5lLWVkaXQtZmllbGRcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlubGluZUVkaXRGaWVsZFRlbXBsYXRlOyBjb250ZXh0OiB7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBNb2RvIEZvcm0gTm9ybWFsIC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzSW5saW5lRWRpdE1vZGVcIiBjbGFzcz1cImdyaWRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBzZWN0aW9uLmZpZWxkc1wiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzRmllbGRWaXNpYmxlKGZpZWxkKVwiIFtuZ0NsYXNzXT1cImdldEZpZWxkR3JpZENsYXNzKGZpZWxkKVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRUZW1wbGF0ZTsgY29udGV4dDogeyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9wLXBhbmVsPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTZcOnw7VlcyBkZSBGaWx0cm9zIChhcGVuYXMgbm8gbW9kbyBmaWx0ZXIpIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJtb2RlID09PSAnZmlsdGVyJyAmJiBoYXNGaWx0ZXJTZWN0aW9uc1wiIGNsYXNzPVwiZmlsdGVyLXNlY3Rpb25zLWNvbnRhaW5lclwiPlxuICAgICAgPHAtcGFuZWwgXG4gICAgICAgICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIGZpbHRlclNlY3Rpb25zXCJcbiAgICAgICAgW2hlYWRlcl09XCJzZWN0aW9uLnRpdGxlXCJcbiAgICAgICAgW3RvZ2dsZWFibGVdPVwidHJ1ZVwiXG4gICAgICAgIFtjb2xsYXBzZWRdPVwidHJ1ZVwiPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2Ygc2VjdGlvbi5maWVsZHNcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0ZpZWxkVmlzaWJsZShmaWVsZClcIiBbbmdDbGFzc109XCJnZXRGaWVsZEdyaWRDbGFzcyhmaWVsZClcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkVGVtcGxhdGU7IGNvbnRleHQ6IHsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvcC1wYW5lbD5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gQm90w7VlcyBpbmxpbmUgKGFwZW5hcyBwYXJhIG1vZG8gaW5saW5lKSAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNJbmxpbmVNb2RlICYmIChzaG93U3VibWl0QnV0dG9uIHx8IHNob3dDYW5jZWxCdXR0b24pXCIgY2xhc3M9XCJmb3JtLWFjdGlvbnNcIj5cbiAgICAgIDxwLWJ1dHRvblxuICAgICAgICAqbmdJZj1cInNob3dDYW5jZWxCdXR0b25cIlxuICAgICAgICBbbGFiZWxdPVwiY2FuY2VsTGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbaWNvbl09XCJjYW5jZWxCdXR0b25JY29uXCJcbiAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAob25DbGljayk9XCJoYW5kbGVDYW5jZWwoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nXCI+XG4gICAgICA8L3AtYnV0dG9uPlxuICAgICAgPHAtYnV0dG9uXG4gICAgICAgICpuZ0lmPVwic2hvd1N1Ym1pdEJ1dHRvblwiXG4gICAgICAgIFtsYWJlbF09XCJzdWJtaXRMYWJlbCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtpY29uXT1cInN1Ym1pdEJ1dHRvbkljb25cIlxuICAgICAgICAob25DbGljayk9XCJoYW5kbGVTdWJtaXQoKVwiXG4gICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCI+XG4gICAgICA8L3AtYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gIDwvZm9ybT5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gVGVtcGxhdGUgZGUgQ2FtcG8gKHJldXRpbGl6w6F2ZWwpIC0tPlxuPG5nLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlIGxldC1maWVsZD1cImZpZWxkXCI+XG4gIDwhLS0gVGV4dCBGaWVsZCAtLT5cbiAgPHNpYS1keW5hbWljLWZpZWxkLXRleHRcbiAgICAqbmdJZj1cImZpZWxkLnR5cGUgPT09ICd0ZXh0J1wiXG4gICAgW2ZpZWxkXT1cImZpZWxkXCJcbiAgICBbZm9ybV09XCJmb3JtXCJcbiAgICBbbW9kZV09XCJmaWVsZE1vZGVcIj5cbiAgPC9zaWEtZHluYW1pYy1maWVsZC10ZXh0PlxuXG4gIDwhLS0gVGV4dGFyZWEgRmllbGQgLS0+XG4gIDxzaWEtZHluYW1pYy1maWVsZC10ZXh0YXJlYVxuICAgICpuZ0lmPVwiZmllbGQudHlwZSA9PT0gJ3RleHRhcmVhJ1wiXG4gICAgW2ZpZWxkXT1cImZpZWxkXCJcbiAgICBbZm9ybV09XCJmb3JtXCJcbiAgICBbbW9kZV09XCJmaWVsZE1vZGVcIj5cbiAgPC9zaWEtZHluYW1pYy1maWVsZC10ZXh0YXJlYT5cblxuICA8IS0tIE51bWJlciBGaWVsZCAtLT5cbiAgPHNpYS1keW5hbWljLWZpZWxkLW51bWJlclxuICAgICpuZ0lmPVwiZmllbGQudHlwZSA9PT0gJ251bWJlcidcIlxuICAgIFtmaWVsZF09XCJmaWVsZFwiXG4gICAgW2Zvcm1dPVwiZm9ybVwiXG4gICAgW21vZGVdPVwiZmllbGRNb2RlXCI+XG4gIDwvc2lhLWR5bmFtaWMtZmllbGQtbnVtYmVyPlxuXG4gIDwhLS0gRGF0ZSBGaWVsZCAtLT5cbiAgPHNpYS1keW5hbWljLWZpZWxkLWRhdGVcbiAgICAqbmdJZj1cImZpZWxkLnR5cGUgPT09ICdkYXRlJ1wiXG4gICAgW2ZpZWxkXT1cImZpZWxkXCJcbiAgICBbZm9ybV09XCJmb3JtXCJcbiAgICBbbW9kZV09XCJmaWVsZE1vZGVcIj5cbiAgPC9zaWEtZHluYW1pYy1maWVsZC1kYXRlPlxuXG4gIDwhLS0gRHJvcGRvd24vRW51bSBGaWVsZCAtLT5cbiAgPHNpYS1keW5hbWljLWZpZWxkLWRyb3Bkb3duXG4gICAgKm5nSWY9XCJmaWVsZC50eXBlID09PSAnZHJvcGRvd24nIHx8IGZpZWxkLnR5cGUgPT09ICdlbnVtJ1wiXG4gICAgW2ZpZWxkXT1cImZpZWxkXCJcbiAgICBbZm9ybV09XCJmb3JtXCJcbiAgICBbbW9kZV09XCJmaWVsZE1vZGVcIj5cbiAgPC9zaWEtZHluYW1pYy1maWVsZC1kcm9wZG93bj5cblxuICA8IS0tIExvb2t1cCBGaWVsZCAtLT5cbiAgPHNpYS1keW5hbWljLWZpZWxkLWxvb2t1cFxuICAgICpuZ0lmPVwiZmllbGQudHlwZSA9PT0gJ2xvb2t1cCdcIlxuICAgIFtmaWVsZF09XCJmaWVsZFwiXG4gICAgW2Zvcm1dPVwiZm9ybVwiXG4gICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICBbbW9kZV09XCJmaWVsZE1vZGVcIj5cbiAgPC9zaWEtZHluYW1pYy1maWVsZC1sb29rdXA+XG48L25nLXRlbXBsYXRlPlxuXG5cbjwhLS0gVGVtcGxhdGUgZGUgQ2FtcG8gSW5saW5lIEVkaXQgLS0+XG48bmctdGVtcGxhdGUgI2lubGluZUVkaXRGaWVsZFRlbXBsYXRlIGxldC1maWVsZD1cImZpZWxkXCI+XG4gIDxkaXYgY2xhc3M9XCJlZGl0LWlubGluZS1maWVsZFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImZpZWxkLWxhYmVsXCI+e3sgZmllbGQubGFiZWwgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgIFxuICAgIDwhLS0gRGlzcGxheSBNb2RlIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1kaXNwbGF5XCIgXG4gICAgICAgICAqbmdJZj1cIiFpc0ZpZWxkRWRpdGluZyhmaWVsZC5maWVsZClcIiBcbiAgICAgICAgIChjbGljayk9XCJzdGFydEVkaXRGaWVsZChmaWVsZC5maWVsZClcIlxuICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImZpZWxkLmRpc2FibGVkXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImRpc3BsYXktdmFsdWVcIiBcbiAgICAgICAgICAgIFthdHRyLmRhdGEtcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgfHwgKCdjcm14LmJ1c2luZXNzLm5vdF9pbmZvcm1lZCcgfCB0cmFuc2xhdGUpXCI+XG4gICAgICAgIHt7IGdldEZpZWxkRGlzcGxheVZhbHVlKGZpZWxkLmZpZWxkKSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPGkgY2xhc3M9XCJwaSBwaS1wZW5jaWwgZWRpdC1pY29uXCIgKm5nSWY9XCIhZmllbGQuZGlzYWJsZWRcIj48L2k+XG4gICAgPC9kaXY+XG4gICAgXG4gICAgPCEtLSBFZGl0IE1vZGUgLS0+XG4gICAgPGRpdiBjbGFzcz1cImZpZWxkLWVkaXRcIiAqbmdJZj1cImlzRmllbGRFZGl0aW5nKGZpZWxkLmZpZWxkKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRUZW1wbGF0ZTsgY29udGV4dDogeyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICBcbiAgICAgIDwhLS0gQWN0aW9uIEJ1dHRvbnMgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiZWRpdC1hY3Rpb25zXCI+XG4gICAgICAgIDxwLWJ1dHRvbiBcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgXG4gICAgICAgICAgaWNvbj1cInBpIHBpLWNoZWNrXCIgXG4gICAgICAgICAgW3JvdW5kZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgc2V2ZXJpdHk9XCJwcmltYXJ5XCJcbiAgICAgICAgICAob25DbGljayk9XCJzYXZlSW5saW5lRmllbGQoZmllbGQuZmllbGQpXCIgXG4gICAgICAgICAgW2xvYWRpbmddPVwic2F2aW5nRmllbGRcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmdldChmaWVsZC5maWVsZCk/LmludmFsaWRcIj5cbiAgICAgICAgPC9wLWJ1dHRvbj5cbiAgICAgICAgPHAtYnV0dG9uIFxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIiBcbiAgICAgICAgICBpY29uPVwicGkgcGktdGltZXNcIiBcbiAgICAgICAgICBbcm91bmRlZF09XCJ0cnVlXCJcbiAgICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgKG9uQ2xpY2spPVwiY2FuY2VsSW5saW5lRWRpdCgpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwic2F2aW5nRmllbGRcIj5cbiAgICAgICAgPC9wLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgXG4gICAgICA8IS0tIEVycm9yIE1lc3NhZ2UgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtZXJyb3JcIiAqbmdJZj1cImZvcm0uZ2V0KGZpZWxkLmZpZWxkKT8uaW52YWxpZCAmJiBmb3JtLmdldChmaWVsZC5maWVsZCk/LnRvdWNoZWRcIj5cbiAgICAgICAgPHNtYWxsIGNsYXNzPVwicC1lcnJvclwiPlxuICAgICAgICAgIHt7IGZvcm0uZ2V0KGZpZWxkLmZpZWxkKT8uZXJyb3JzPy5bJ3JlcXVpcmVkJ10gPyAoJ2NybXguYnVzaW5lc3MucmVxdWlyZWRfZmllbGQnIHwgdHJhbnNsYXRlKSA6ICcnIH19XG4gICAgICAgIDwvc21hbGw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -164,6 +164,9 @@ export class DynamicFieldLookupComponent {
164
164
  page: this.currentPage,
165
165
  size: this.pageSize
166
166
  };
167
+ if (this.field.lookupSort) {
168
+ listParams.sort = this.field.lookupSort;
169
+ }
167
170
  if (this.searchTerm.trim()) {
168
171
  const term = this.searchTerm.trim();
169
172
  const filterConditions = [];
@@ -582,4 +585,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
582
585
  }], mode: [{
583
586
  type: Input
584
587
  }] } });
585
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWVsZC1sb29rdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1haS9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2ZpZWxkcy9keW5hbWljLWZpZWxkLWxvb2t1cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBYSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFdEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7Ozs7O0FBMFJqRixNQUFNLE9BQU8sMkJBQTJCO0lBdUJsQjtJQXRCWCxLQUFLLENBQTBCO0lBQy9CLElBQUksQ0FBYTtJQUNqQixTQUFTLENBQWE7SUFDdEIsSUFBSSxHQUFzQixNQUFNLENBQUM7SUFFMUMsWUFBWSxHQUFXLEVBQUUsQ0FBQztJQUMxQixnQkFBZ0IsR0FBWSxLQUFLLENBQUM7SUFDbEMsT0FBTyxH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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThJVCxpN0NBekpDLFlBQVksNlZBQ1osbUJBQW1CLG0yQkFDbkIsV0FBVyxzUEFDWCxZQUFZLHdoQkFDWixlQUFlLDBJQUNmLFlBQVksbTZCQUNaLFdBQVcscW9FQUNYLGFBQWEsaVhBQ2IsYUFBYSxrREFDYiw0QkFBNEI7OzRGQTBRbkIsMkJBQTJCO2tCQXZSdkMsU0FBUzsrQkFDRSwwQkFBMEIsY0FDeEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsYUFBYTt3QkFDYixhQUFhO3dCQUNiLDRCQUE0QjtxQkFDN0IsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThJVDt1RkEySFEsS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XG5pbXBvcnQgeyBJbnB1dFRleHRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dCc7XG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2RpYWxvZyc7XG5pbXBvcnQgeyBUYWJsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybUZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL2R5bmFtaWMtZm9ybS5tb2RlbHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uSGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdHJhbnNsYXRpb24uaGVscGVyJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRHluYW1pY0ZpZWxkV3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1maWVsZC13cmFwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb29rdXBDb2x1bW4gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZW50aXR5LWxpc3QuY29uZmlnJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2lhLWR5bmFtaWMtZmllbGQtbG9va3VwJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBJbnB1dFRleHRNb2R1bGUsXG4gICAgRGlhbG9nTW9kdWxlLFxuICAgIFRhYmxlTW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG4gICAgVHJhbnNsYXRlUGlwZSxcbiAgICBEeW5hbWljRmllbGRXcmFwcGVyQ29tcG9uZW50XG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPHNpYS1keW5hbWljLWZpZWxkLXdyYXBwZXIgW2ZpZWxkXT1cImZpZWxkXCIgW2Zvcm1dPVwiZm9ybVwiIFttb2RlXT1cIm1vZGVcIj5cbiAgICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJsb29rdXAtZmllbGRcIiBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzogaXNGaWVsZERpc2FibGVkKCl9XCI+XG4gICAgICAgIDwhLS0gSGlkZGVuIGlucHV0IHBhcmEgbyBmb3JtQ29udHJvbCAtLT5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmZpZWxkXCIgLz5cbiAgICAgICAgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsb29rdXAtaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgIFt2YWx1ZV09XCJkaXNwbGF5VmFsdWVcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdldFBsYWNlaG9sZGVyKClcIlxuICAgICAgICAgICAgW2NsYXNzLnAtaW52YWxpZF09XCJpc0ZpZWxkSW52YWxpZCgpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgY2xhc3M9XCJsb29rdXAtZGlzcGxheVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib3Blbkxvb2t1cCgpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb29rdXAtYnV0dG9uc1wiPlxuICAgICAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudFZhbHVlXCJcbiAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXRyYXNoXCJcbiAgICAgICAgICAgICAgc2V2ZXJpdHk9XCJkYW5nZXJcIlxuICAgICAgICAgICAgICBbdGV4dF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3JvdW5kZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cImNsZWFyVmFsdWUoKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgIHBUb29sdGlwPVwiTGltcGFyXCJcbiAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgID48L3AtYnV0dG9uPlxuICAgICAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgICAgIGljb249XCJwaSBwaS1zZWFyY2hcIlxuICAgICAgICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgIFt0ZXh0XT1cInRydWVcIlxuICAgICAgICAgICAgICBbcm91bmRlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwib3Blbkxvb2t1cCgpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZCgpXCJcbiAgICAgICAgICAgICAgcFRvb2x0aXA9XCJCdXNjYXJcIlxuICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgPjwvcC1idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gTG9va3VwIERpYWxvZyAtLT5cbiAgICAgIDxwLWRpYWxvZ1xuICAgICAgICBbKHZpc2libGUpXT1cInNob3dMb29rdXBEaWFsb2dcIlxuICAgICAgICBbbW9kYWxdPVwidHJ1ZVwiXG4gICAgICAgIFtzdHlsZV09XCJ7IHdpZHRoOiAnODAwcHgnLCBtYXhIZWlnaHQ6ICc4MHZoJyB9XCJcbiAgICAgICAgW2NvbnRlbnRTdHlsZV09XCJ7IG1heEhlaWdodDogJ2NhbGMoODB2aCAtIDEyMHB4KScsIG92ZXJmbG93OiAnYXV0bycgfVwiXG4gICAgICAgIFtkcmFnZ2FibGVdPVwiZmFsc2VcIlxuICAgICAgICBbcmVzaXphYmxlXT1cInRydWVcIlxuICAgICAgICBbaGVhZGVyXT1cIidTZWxlY2lvbmFyICcgKyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgW2FwcGVuZFRvXT1cIidib2R5J1wiXG4gICAgICAgIChvbkhpZGUpPVwib25EaWFsb2dIaWRlKClcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibG9va3VwLWRpYWxvZy1jb250ZW50XCI+XG4gICAgICAgICAgPCEtLSBTZWFyY2ggSW5wdXQgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0J1c2NhciAnICsgKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKS50b0xvd2VyQ2FzZSgpICsgJy4uLidcIlxuICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvblNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtaW5wdXQtZnVsbFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1idXR0b25zLWluc2lkZVwiPlxuICAgICAgICAgICAgICA8cC1idXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cInNlYXJjaFRlcm1cIlxuICAgICAgICAgICAgICAgIGljb249XCJwaSBwaS10cmFzaFwiXG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk9XCJkYW5nZXJcIlxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtyb3VuZGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImNsZWFyU2VhcmNoKClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoLWJ1dHRvbi1jbGVhclwiXG4gICAgICAgICAgICAgICAgcFRvb2x0aXA9XCJMaW1wYXIgYnVzY2FcIlxuICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICAgID48L3AtYnV0dG9uPlxuICAgICAgICAgICAgICA8cC1idXR0b25cbiAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktc2VhcmNoXCJcbiAgICAgICAgICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgW3RleHRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW3JvdW5kZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwib25TZWFyY2goKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtYnV0dG9uLXNlYXJjaFwiXG4gICAgICAgICAgICAgICAgcFRvb2x0aXA9XCJCdXNjYXJcIlxuICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICAgID48L3AtYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIERhdGEgVGFibGUgLS0+XG4gICAgICAgICAgPHAtdGFibGVcbiAgICAgICAgICAgIFt2YWx1ZV09XCJmaWx0ZXJlZERhdGFcIlxuICAgICAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gICAgICAgICAgICBbcGFnaW5hdG9yXT1cInRydWVcIlxuICAgICAgICAgICAgW3Jvd3NdPVwicGFnZVNpemVcIlxuICAgICAgICAgICAgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIlxuICAgICAgICAgICAgW2xhenldPVwidHJ1ZVwiXG4gICAgICAgICAgICAob25MYXp5TG9hZCk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICBbc2hvd0N1cnJlbnRQYWdlUmVwb3J0XT1cInRydWVcIlxuICAgICAgICAgICAgY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZT1cIk1vc3RyYW5kbyB7Zmlyc3R9IGEge2xhc3R9IGRlIHt0b3RhbFJlY29yZHN9IHJlZ2lzdHJvc1wiXG4gICAgICAgICAgICBkYXRhS2V5PVwiaWRcIlxuICAgICAgICAgICAgW3Jvd0hvdmVyXT1cInRydWVcIlxuICAgICAgICAgICAgcmVzcG9uc2l2ZUxheW91dD1cInNjcm9sbFwiXG4gICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1kYXRhdGFibGUtc3RyaXBlZCBsb29rdXAtdGFibGVcIlxuICAgICAgICAgICAgWyhzZWxlY3Rpb24pXT1cInNlbGVjdGVkSXRlbVwiXG4gICAgICAgICAgICAob25Sb3dTZWxlY3QpPVwib25Sb3dTZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgICAgICBzZWxlY3Rpb25Nb2RlPVwic2luZ2xlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCIgW3N0eWxlLndpZHRoXT1cImNvbC53aWR0aFwiPlxuICAgICAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxuICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1pdGVtPlxuICAgICAgICAgICAgICA8dHIgW3BTZWxlY3RhYmxlUm93XT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAgICB7eyBnZXRGaWVsZFZhbHVlKGl0ZW0sIGNvbC5maWVsZCkgfX1cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5bWVzc2FnZVwiPlxuICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwiY29sdW1ucy5sZW5ndGhcIiBjbGFzcz1cImVtcHR5LW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPHA+TmVuaHVtIHJlZ2lzdHJvIGVuY29udHJhZG88L3A+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD5UZW50ZSBhanVzdGFyIG9zIHRlcm1vcyBkZSBidXNjYTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3AtdGFibGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9wLWRpYWxvZz5cbiAgICA8L3NpYS1keW5hbWljLWZpZWxkLXdyYXBwZXI+XG4gIGAsXG4gIHN0eWxlczogW2BcbiAgICAubG9va3VwLWZpZWxkIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cblxuICAgIC5sb29rdXAtaW5wdXQtZ3JvdXAge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBcbiAgICAgIC5sb29rdXAtZGlzcGxheSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGhlaWdodDogMi44NTdyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNzVyZW0gNHJlbSAwLjc1cmVtIDAuNzVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5sb29rdXAtYnV0dG9ucyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDRweDtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZ2FwOiAycHg7XG4gICAgICAgIHotaW5kZXg6IDEwO1xuICAgICAgfVxuXG4gICAgICA6Om5nLWRlZXAgLnAtYnV0dG9uIHtcbiAgICAgICAgd2lkdGg6IDJyZW0gIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiAycmVtICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi13aWR0aDogMnJlbSAhaW1wb3J0YW50O1xuICAgICAgICBtaW4taGVpZ2h0OiAycmVtICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50O1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7XG4gICAgICAgIFxuICAgICAgICAucC1idXR0b24taWNvbiB7XG4gICAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbSAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAucC1idXR0b24tbGFiZWwge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5sb29rdXAtZGlhbG9nLWNvbnRlbnQge1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAuc2VhcmNoLXdyYXBwZXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgIC5zZWFyY2gtaW5wdXQtZnVsbCB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgcGFkZGluZy1yaWdodDogNS41cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLnNlYXJjaC1idXR0b25zLWluc2lkZSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHJpZ2h0OiA0cHg7XG4gICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZ2FwOiAycHg7XG4gICAgICAgICAgXG4gICAgICAgICAgOjpuZy1kZWVwIC5wLWJ1dHRvbiB7XG4gICAgICAgICAgICB3aWR0aDogMi41cmVtICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBoZWlnaHQ6IDIuNXJlbSAhaW1wb3J0YW50O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAubG9va3VwLXRhYmxlIHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgXG4gICAgICAgIC5lbXB0eS1zdGF0ZSB7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgIHBhZGRpbmc6IDMycHg7XG4gICAgICAgICAgY29sb3I6IHZhcigtLXAtdGV4dC1jb2xvci1zZWNvbmRhcnkpO1xuXG4gICAgICAgICAgaSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDQ4cHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcCB7XG4gICAgICAgICAgICBtYXJnaW46IDhweCAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHNtYWxsIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIGBdXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNGaWVsZExvb2t1cENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGZpZWxkITogRHluYW1pY0Zvcm1GaWVsZENvbmZpZztcbiAgQElucHV0KCkgZm9ybSE6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgZm9ybUdyb3VwITogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBtb2RlOiAnZm9ybScgfCAnZmlsdGVyJyA9ICdmb3JtJztcblxuICBkaXNwbGF5VmFsdWU6IHN0cmluZyA9ICcnO1xuICBzaG93TG9va3VwRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG4gIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VhcmNoVGVybTogc3RyaW5nID0gJyc7XG4gIFxuICBkYXRhOiBhbnlbXSA9IFtdO1xuICBmaWx0ZXJlZERhdGE6IGFueVtdID0gW107XG4gIHRvdGFsUmVjb3JkczogbnVtYmVyID0gMDtcbiAgY3VycmVudFBhZ2U6IG51bWJlciA9IDA7XG4gIHBhZ2VTaXplOiBudW1iZXIgPSA1O1xuICBzZWxlY3RlZEl0ZW06IGFueSA9IG51bGw7XG4gIFxuICBjb2x1bW5zOiBMb29rdXBDb2x1bW5bXSA9IFtdO1xuICBkaXNwbGF5RmllbGQ6IHN0cmluZyA9ICduYW1lJztcbiAgdmFsdWVGaWVsZDogc3RyaW5nID0gJ2lkJztcbiAgc2VhcmNoRmllbGRzOiBzdHJpbmdbXSA9IFsnbmFtZSddO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXR1cExvb2t1cENvbmZpZygpO1xuICAgIHRoaXMud2F0Y2hWYWx1ZUNoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgd2F0Y2hWYWx1ZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Rm9ybUNvbnRyb2woKTtcbiAgICBpZiAoY29udHJvbCkge1xuICAgICAgLy8gQ2FycmVnYXIgdmFsb3IgaW5pY2lhbFxuICAgICAgaWYgKGNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVWYWx1ZURpc3BsYXkoY29udHJvbC52YWx1ZSk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIC8vIE9ic2VydmFyIG11ZGFuw6dhc1xuICAgICAgY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSAnJykge1xuICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWVEaXNwbGF5KHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT2J0w6ltIG8gRm9ybUNvbnRyb2wsIGxpZGFuZG8gY29tIGNhbXBvcyBhbmluaGFkb3MgKGNvbSBwb250byBubyBub21lKVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRGb3JtQ29udHJvbCgpIHtcbiAgICBpZiAoIXRoaXMuZmllbGQ/LmZpZWxkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBBY2Vzc2EgZGlyZXRhbWVudGUgdmlhIGNvbnRyb2xzW10gcG9pcyBmb3JtLmdldCgpIG7Do28gZnVuY2lvbmEgY29tIGNhbXBvcyBxdWUgdMOqbSBwb250b1xuICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5maWVsZC5maWVsZF07XG4gIH1cblxuICBwcml2YXRlIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldEZvcm1Db250cm9sKCk7XG4gICAgcmV0dXJuIGNvbnRyb2w/LnZhbHVlO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRWYWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Rm9ybUNvbnRyb2woKTtcbiAgICBjb250cm9sPy5zZXRWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwTG9va3VwQ29uZmlnKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZpZWxkKSB7XG4gICAgICB0aGlzLmRpc3BsYXlGaWVsZCA9IHRoaXMuZmllbGQubG9va3VwRGlzcGxheUZpZWxkIHx8ICduYW1lJztcbiAgICAgIHRoaXMudmFsdWVGaWVsZCA9IHRoaXMuZmllbGQubG9va3VwVmFsdWVGaWVsZCB8fCAnaWQnO1xuICAgICAgdGhpcy5zZWFyY2hGaWVsZHMgPSB0aGlzLmZpZWxkLmxvb2t1cFNlYXJjaEZpZWxkcyB8fCBbJ25hbWUnXTtcbiAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuZmllbGQubG9va3VwQ29sdW1ucyB8fCBbXG4gICAgICAgIHsgZmllbGQ6IHRoaXMuZGlzcGxheUZpZWxkLCBoZWFkZXI6ICdOb21lJywgd2lkdGg6ICcxMDAlJyB9XG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVmFsdWVEaXNwbGF5KHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gJyc7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHRoaXMuZm9ybWF0RGlzcGxheVZhbHVlKHZhbHVlKTtcbiAgICAgIC8vIEtlZXAgdGhlIGZ1bGwgb2JqZWN0IGluIHRoZSBmb3JtIGNvbnRyb2xcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgLy8gU2Ugw6kgdW0gSUQgKHN0cmluZyBvdSBudW1iZXIpLCBuw6NvIGZhemVyIHJlcXVpc2nDp8Ojb1xuICAgIC8vIERlaXhhciB2YXppbyBlIHPDsyBjYXJyZWdhciBxdWFuZG8gYWJyaXIgbyBsb29rdXBcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9ICcnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0RGlzcGxheVZhbHVlKGl0ZW06IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKCFpdGVtKSByZXR1cm4gJyc7XG4gICAgXG4gICAgaWYgKHRoaXMuZmllbGQ/Lmxvb2t1cERpc3BsYXlGaWVsZHMgJiYgdGhpcy5maWVsZC5sb29rdXBEaXNwbGF5RmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZmllbGQubG9va3VwRGlzcGxheUZpZWxkc1xuICAgICAgICAubWFwKGZpZWxkTmFtZSA9PiB0aGlzLmdldEZpZWxkVmFsdWUoaXRlbSwgZmllbGROYW1lKSlcbiAgICAgICAgLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSAnJyk7XG4gICAgICBcbiAgICAgIHJldHVybiB2YWx1ZXMuam9pbignIC0gJyk7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiB0aGlzLmdldEZpZWxkVmFsdWUoaXRlbSwgdGhpcy5kaXNwbGF5RmllbGQpIHx8ICcnO1xuICB9XG5cbiAgaXNGaWVsZEludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Rm9ybUNvbnRyb2woKTtcbiAgICByZXR1cm4gISEoY29udHJvbCAmJiBjb250cm9sLmludmFsaWQgJiYgKGNvbnRyb2wuZGlydHkgfHwgY29udHJvbC50b3VjaGVkKSk7XG4gIH1cblxuICBpc0ZpZWxkRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Rm9ybUNvbnRyb2woKTtcbiAgICByZXR1cm4gY29udHJvbD8uZGlzYWJsZWQgfHwgZmFsc2U7XG4gIH1cblxuICBnZXRQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBUcmFuc2xhdGlvbkhlbHBlci5nZXRGaWx0ZXJQbGFjZWhvbGRlcihcbiAgICAgIHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLFxuICAgICAgdGhpcy5tb2RlLFxuICAgICAgdGhpcy5maWVsZC5sYWJlbCxcbiAgICAgIHRoaXMuZmllbGQucGxhY2Vob2xkZXJcbiAgICApO1xuICB9XG5cbiAgb3Blbkxvb2t1cCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0ZpZWxkRGlzYWJsZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkSXRlbSgpO1xuICAgIFxuICAgIHRoaXMuc2hvd0xvb2t1cERpYWxvZyA9IHRydWU7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDA7XG4gICAgdGhpcy5zZWFyY2hUZXJtID0gJyc7XG4gICAgdGhpcy5sb2FkRGF0YSgpO1xuICB9XG5cbiAgb25EaWFsb2dIaWRlKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGVybSA9ICcnO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAwO1xuICB9XG5cbiAgb25QYWdlQ2hhbmdlKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvd0xvb2t1cERpYWxvZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gZXZlbnQuZmlyc3QgLyBldmVudC5yb3dzO1xuICAgIHRoaXMubG9hZERhdGEoKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZERhdGEoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmZpZWxkPy5sb29rdXBTZXJ2aWNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBcbiAgICBjb25zdCBsaXN0UGFyYW1zOiBhbnkgPSB7IFxuICAgICAgcGFnZTogdGhpcy5jdXJyZW50UGFnZSxcbiAgICAgIHNpemU6IHRoaXMucGFnZVNpemVcbiAgICB9O1xuICAgIFxuICAgIGlmICh0aGlzLnNlYXJjaFRlcm0udHJpbSgpKSB7XG4gICAgICBjb25zdCB0ZXJtID0gdGhpcy5zZWFyY2hUZXJtLnRyaW0oKTtcbiAgICAgIGNvbnN0IGZpbHRlckNvbmRpdGlvbnM6IHN0cmluZ1tdID0gW107XG4gICAgICBjb25zdCBpc051bWVyaWNUZXJtID0gIWlzTmFOKE51bWJlcih0ZXJtKSkgJiYgdGVybSAhPT0gJyc7XG4gICAgICBcbiAgICAgIHRoaXMuc2VhcmNoRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNvbHVtbnMuZmluZChjb2wgPT4gY29sLmZpZWxkID09PSBmaWVsZCk7XG4gICAgICAgIGNvbnN0IGZpZWxkVHlwZSA9IGNvbHVtbj8udHlwZSB8fCAndGV4dCc7XG4gICAgICAgIFxuICAgICAgICBpZiAoZmllbGRUeXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIGlmIChpc051bWVyaWNUZXJtKSB7XG4gICAgICAgICAgICBmaWx0ZXJDb25kaXRpb25zLnB1c2goYCR7ZmllbGR9IGVxICR7dGVybX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgdXBwZXJUZXJtID0gdGVybS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgIGZpbHRlckNvbmRpdGlvbnMucHVzaChgVVBQRVIoJHtmaWVsZH0pIGxpa2UgJyUke3VwcGVyVGVybX0lJ2ApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgaWYgKGZpbHRlckNvbmRpdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICBsaXN0UGFyYW1zLmZpbHRlclF1ZXJ5ID0gZmlsdGVyQ29uZGl0aW9ucy5qb2luKCcgb3IgJyk7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLmZpZWxkLmxvb2t1cEZpbHRlcnMpIHtcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuZmllbGQubG9va3VwRmlsdGVycykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBsaXN0UGFyYW1zW2tleV0gPSB0aGlzLmZpZWxkLmxvb2t1cEZpbHRlcnMhW2tleV07XG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMuZmllbGQubG9va3VwRHluYW1pY0ZpbHRlcnMgJiYgdGhpcy5mb3JtR3JvdXApIHtcbiAgICAgIGNvbnN0IGR5bmFtaWNGaWx0ZXJzID0gdGhpcy5maWVsZC5sb29rdXBEeW5hbWljRmlsdGVycyh0aGlzLmZvcm1Hcm91cC52YWx1ZSk7XG4gICAgICBcbiAgICAgIGNvbnN0IGR5bmFtaWNGaWx0ZXJDb25kaXRpb25zOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgT2JqZWN0LmtleXMoZHluYW1pY0ZpbHRlcnMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBkeW5hbWljRmlsdGVyc1trZXldO1xuICAgICAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGR5bmFtaWNGaWx0ZXJDb25kaXRpb25zLnB1c2goYCR7a2V5fSBlcSAnJHt2YWx1ZX0nYCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgXG4gICAgICBpZiAoZHluYW1pY0ZpbHRlckNvbmRpdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBkeW5hbWljRmlsdGVyUXVlcnkgPSBkeW5hbWljRmlsdGVyQ29uZGl0aW9ucy5qb2luKCcgYW5kICcpO1xuICAgICAgICBpZiAobGlzdFBhcmFtcy5maWx0ZXJRdWVyeSkge1xuICAgICAgICAgIGxpc3RQYXJhbXMuZmlsdGVyUXVlcnkgPSBgKCR7bGlzdFBhcmFtcy5maWx0ZXJRdWVyeX0pIGFuZCAoJHtkeW5hbWljRmlsdGVyUXVlcnl9KWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGlzdFBhcmFtcy5maWx0ZXJRdWVyeSA9IGR5bmFtaWNGaWx0ZXJRdWVyeTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICB0aGlzLmZpZWxkLmxvb2t1cFNlcnZpY2UubGlzdChsaXN0UGFyYW1zKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5kYXRhID0gcmVzcG9uc2UuY29udGVudHMgfHwgW107XG4gICAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gWy4uLnRoaXMuZGF0YV07XG4gICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gcmVzcG9uc2UudG90YWxFbGVtZW50cyB8fCAwO1xuICAgICAgICBcbiAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZEl0ZW0oKTtcbiAgICAgICAgXG4gICAgICAgIC8vIEFww7NzIGNhcnJlZ2FyIG9zIGRhZG9zIGRhIGdyaWQsIHNlIHRlbW9zIHVtIHZhbG9yIHNlbGVjaW9uYWRvIG1hcyBzZW0gZGlzcGxheVZhbHVlLFxuICAgICAgICAvLyB0ZW50YXIgZW5jb250cmFyIG8gaXRlbSBub3MgZGFkb3MgY2FycmVnYWRvc1xuICAgICAgICBpZiAodGhpcy52YWx1ZSAmJiAhdGhpcy5kaXNwbGF5VmFsdWUpIHtcbiAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5maWx0ZXJlZERhdGEuZmluZChpID0+IGlbdGhpcy52YWx1ZUZpZWxkXSA9PT0gdGhpcy52YWx1ZSk7XG4gICAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gdGhpcy5mb3JtYXREaXNwbGF5VmFsdWUoaXRlbSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKF9lcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICB0aGlzLmRhdGEgPSBbXTtcbiAgICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSBbXTtcbiAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSAwO1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2VsZWN0ZWRJdGVtKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBpdGVtID0gdGhpcy5maWx0ZXJlZERhdGEuZmluZChpID0+IGlbdGhpcy52YWx1ZUZpZWxkXSA9PT0gdGhpcy52YWx1ZSk7XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gaXRlbTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvd0xvb2t1cERpYWxvZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMDtcbiAgICB0aGlzLmxvYWREYXRhKCk7XG4gIH1cblxuICBjbGVhclNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0gPSAnJztcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMDtcbiAgICB0aGlzLmxvYWREYXRhKCk7XG4gIH1cblxuICBzZWxlY3RJdGVtKGl0ZW06IGFueSk6IHZvaWQge1xuICAgIC8vIEFsd2F5cyBzZXQgdGhlIGZ1bGwgb2JqZWN0LCBub3QganVzdCB0aGUgSURcbiAgICB0aGlzLnNldFZhbHVlKGl0ZW0pO1xuICAgIHRoaXMuZGlzcGxheVZhbHVlID0gdGhpcy5mb3JtYXREaXNwbGF5VmFsdWUoaXRlbSk7XG4gICAgdGhpcy5zaG93TG9va3VwRGlhbG9nID0gZmFsc2U7XG4gIH1cblxuICBvblJvd1NlbGVjdChldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RJdGVtKGV2ZW50LmRhdGEpO1xuICB9XG5cbiAgY2xlYXJWYWx1ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFZhbHVlKG51bGwpO1xuICAgIHRoaXMuZGlzcGxheVZhbHVlID0gJyc7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBudWxsO1xuICB9XG5cbiAgZ2V0RmllbGRWYWx1ZShpdGVtOiBhbnksIGZpZWxkOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiBmaWVsZC5zcGxpdCgnLicpLnJlZHVjZSgob2JqLCBrZXkpID0+IG9iaj8uW2tleV0sIGl0ZW0pIHx8ICcnO1xuICB9XG59XG4iXX0=
588
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWVsZC1sb29rdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1haS9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2ZpZWxkcy9keW5hbWljLWZpZWxkLWxvb2t1cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBYSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFdEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7Ozs7O0FBMFJqRixNQUFNLE9BQU8sMkJBQTJCO0lBdUJsQjtJQXRCWCxLQUFLLENBQTBCO0lBQy9CLElBQUksQ0FBYTtJQUNqQixTQUFTLENBQWE7SUFDdEIsSUFBSSxHQUFzQixNQUFNLENBQUM7SUFFMUMsWUFBWSxHQUFXLEVBQUUsQ0FBQztJQUMxQixnQkFBZ0IsR0FBWSxLQUFLLENBQUM7SUFDbEMsT0FBTyxHQUFZLEtBQUssQ0FBQztJQUN6QixVQUFVLEdBQVcsRUFBRSxDQUFDO0lBRXhCLElBQUksR0FBVSxFQUFFLENBQUM7SUFDakIsWUFBWSxHQUFVLEVBQUUsQ0FBQztJQUN6QixZQUFZLEdBQVcsQ0FBQyxDQUFDO0lBQ3pCLFdBQVcsR0FBVyxDQUFDLENBQUM7SUFDeEIsUUFBUSxHQUFXLENBQUMsQ0FBQztJQUNyQixZQUFZLEdBQVEsSUFBSSxDQUFDO0lBRXpCLE9BQU8sR0FBbUIsRUFBRSxDQUFDO0lBQzdCLFlBQVksR0FBVyxNQUFNLENBQUM7SUFDOUIsVUFBVSxHQUFXLElBQUksQ0FBQztJQUMxQixZQUFZLEdBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVsQyxZQUFvQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtJQUFHLENBQUM7SUFFOUQsUUFBUTtRQUNOLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RDLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWix5QkFBeUI7WUFDekIsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekMsQ0FBQztZQUVELG9CQUFvQjtZQUNwQixPQUFPLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUM1QyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFLENBQUM7b0JBQzFELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakMsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO2dCQUN6QixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssY0FBYztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUN2QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCwwRkFBMEY7UUFDMUYsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFZLEtBQUs7UUFDZixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEMsT0FBTyxPQUFPLEVBQUUsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVPLFFBQVEsQ0FBQyxLQUFVO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QyxPQUFPLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLElBQUksTUFBTSxDQUFDO1lBQzVELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUM7WUFDdEQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSTtnQkFDekMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7YUFDNUQsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsS0FBVTtRQUNuQyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDdkIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkQsMkNBQTJDO1lBQzNDLE9BQU87UUFDVCxDQUFDO1FBRUQsc0RBQXNEO1FBQ3RELG1EQUFtRDtRQUNuRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMzRCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUN2QixPQUFPO1FBQ1QsQ0FBQztJQUNILENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxJQUFTO1FBQ2xDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFckIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLG1CQUFtQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2pGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CO2lCQUMxQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztpQkFDckQsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUMsQ0FBQztZQUUxRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzRCxDQUFDO0lBRUQsY0FBYztRQUNaLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QyxPQUFPLE9BQU8sRUFBRSxRQUFRLElBQUksS0FBSyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FDM0MsSUFBSSxDQUFDLGtCQUFrQixFQUN2QixJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FDdkIsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztZQUMzQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRTFCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFVO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMzQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQzVDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRU8sUUFBUTtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxDQUFDO1lBQy9CLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFFcEIsTUFBTSxVQUFVLEdBQVE7WUFDdEIsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQ3RCLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUTtTQUNwQixDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzFCLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDMUMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDcEMsTUFBTSxnQkFBZ0IsR0FBYSxFQUFFLENBQUM7WUFDdEMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUUxRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDaEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDO2dCQUM3RCxNQUFNLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxJQUFJLE1BQU0sQ0FBQztnQkFFekMsSUFBSSxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQzNCLElBQUksYUFBYSxFQUFFLENBQUM7d0JBQ2xCLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUMvQyxDQUFDO2dCQUNILENBQUM7cUJBQU0sQ0FBQztvQkFDTixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3JDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssWUFBWSxTQUFTLElBQUksQ0FBQyxDQUFDO2dCQUNqRSxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDaEMsVUFBVSxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekQsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDbEQsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25ELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTdFLE1BQU0sdUJBQXVCLEdBQWEsRUFBRSxDQUFDO1lBQzdDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN4QyxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2xDLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQzFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsUUFBUSxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUN2RCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLHVCQUF1QixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdkMsTUFBTSxrQkFBa0IsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2pFLElBQUksVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUMzQixVQUFVLENBQUMsV0FBVyxHQUFHLElBQUksVUFBVSxDQUFDLFdBQVcsVUFBVSxrQkFBa0IsR0FBRyxDQUFDO2dCQUNyRixDQUFDO3FCQUFNLENBQUM7b0JBQ04sVUFBVSxDQUFDLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQztnQkFDOUMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNsRCxJQUFJLEVBQUUsQ0FBQyxRQUFhLEVBQUUsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDO2dCQUVoRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFFMUIsc0ZBQXNGO2dCQUN0RiwrQ0FBK0M7Z0JBQy9DLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDckMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDNUUsSUFBSSxJQUFJLEVBQUUsQ0FBQzt3QkFDVCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDcEQsQ0FBQztnQkFDSCxDQUFDO2dCQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxNQUFlLEVBQUUsRUFBRTtnQkFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO2dCQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUN2QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1RSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzNCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBUztRQUNsQiw4Q0FBOEM7UUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBVTtRQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFTLEVBQUUsS0FBYTtRQUNwQyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZFLENBQUM7d0dBblRVLDJCQUEyQjs0RkFBM0IsMkJBQTJCLG9LQXhRNUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4SVQsaTdDQXpKQyxZQUFZLDZWQUNaLG1CQUFtQixtMkJBQ25CLFdBQVcsc1BBQ1gsWUFBWSx3aEJBQ1osZUFBZSwwSUFDZixZQUFZLG02QkFDWixXQUFXLHFvRUFDWCxhQUFhLGlYQUNiLGFBQWEsa0RBQ2IsNEJBQTRCOzs0RkEwUW5CLDJCQUEyQjtrQkF2UnZDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBQ3hCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYiw0QkFBNEI7cUJBQzdCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4SVQ7dUZBMkhRLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaWFsb2cnO1xuaW1wb3J0IHsgVGFibGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZENvbmZpZyB9IGZyb20gJy4uL21vZGVscy9keW5hbWljLWZvcm0ubW9kZWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy90cmFuc2xhdGUucGlwZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGlvbkhlbHBlciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3RyYW5zbGF0aW9uLmhlbHBlcic7XG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IER5bmFtaWNGaWVsZFdyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtZmllbGQtd3JhcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9va3VwQ29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2VudGl0eS1saXN0LmNvbmZpZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpYS1keW5hbWljLWZpZWxkLWxvb2t1cCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgSW5wdXRUZXh0TW9kdWxlLFxuICAgIERpYWxvZ01vZHVsZSxcbiAgICBUYWJsZU1vZHVsZSxcbiAgICBUb29sdGlwTW9kdWxlLFxuICAgIFRyYW5zbGF0ZVBpcGUsXG4gICAgRHluYW1pY0ZpZWxkV3JhcHBlckNvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxzaWEtZHluYW1pYy1maWVsZC13cmFwcGVyIFtmaWVsZF09XCJmaWVsZFwiIFtmb3JtXT1cImZvcm1cIiBbbW9kZV09XCJtb2RlXCI+XG4gICAgICA8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwibG9va3VwLWZpZWxkXCIgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6IGlzRmllbGREaXNhYmxlZCgpfVwiPlxuICAgICAgICA8IS0tIEhpZGRlbiBpbnB1dCBwYXJhIG8gZm9ybUNvbnRyb2wgLS0+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5maWVsZFwiIC8+XG4gICAgICAgIFxuICAgICAgICA8ZGl2IGNsYXNzPVwibG9va3VwLWlucHV0LWdyb3VwXCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgICBbdmFsdWVdPVwiZGlzcGxheVZhbHVlXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWludmFsaWRdPVwiaXNGaWVsZEludmFsaWQoKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKClcIlxuICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgIGNsYXNzPVwibG9va3VwLWRpc3BsYXlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Mb29rdXAoKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9va3VwLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgIDxwLWJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cImN1cnJlbnRWYWx1ZVwiXG4gICAgICAgICAgICAgIGljb249XCJwaSBwaS10cmFzaFwiXG4gICAgICAgICAgICAgIHNldmVyaXR5PVwiZGFuZ2VyXCJcbiAgICAgICAgICAgICAgW3RleHRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtyb3VuZGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJjbGVhclZhbHVlKClcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKClcIlxuICAgICAgICAgICAgICBwVG9vbHRpcD1cIkxpbXBhclwiXG4gICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICA+PC9wLWJ1dHRvbj5cbiAgICAgICAgICAgIDxwLWJ1dHRvblxuICAgICAgICAgICAgICBpY29uPVwicGkgcGktc2VhcmNoXCJcbiAgICAgICAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICBbdGV4dF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3JvdW5kZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cIm9wZW5Mb29rdXAoKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgIHBUb29sdGlwPVwiQnVzY2FyXCJcbiAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgID48L3AtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIExvb2t1cCBEaWFsb2cgLS0+XG4gICAgICA8cC1kaWFsb2dcbiAgICAgICAgWyh2aXNpYmxlKV09XCJzaG93TG9va3VwRGlhbG9nXCJcbiAgICAgICAgW21vZGFsXT1cInRydWVcIlxuICAgICAgICBbc3R5bGVdPVwieyB3aWR0aDogJzgwMHB4JywgbWF4SGVpZ2h0OiAnODB2aCcgfVwiXG4gICAgICAgIFtjb250ZW50U3R5bGVdPVwieyBtYXhIZWlnaHQ6ICdjYWxjKDgwdmggLSAxMjBweCknLCBvdmVyZmxvdzogJ2F1dG8nIH1cIlxuICAgICAgICBbZHJhZ2dhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgW3Jlc2l6YWJsZV09XCJ0cnVlXCJcbiAgICAgICAgW2hlYWRlcl09XCInU2VsZWNpb25hciAnICsgKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKVwiXG4gICAgICAgIFthcHBlbmRUb109XCInYm9keSdcIlxuICAgICAgICAob25IaWRlKT1cIm9uRGlhbG9nSGlkZSgpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxvb2t1cC1kaWFsb2ctY29udGVudFwiPlxuICAgICAgICAgIDwhLS0gU2VhcmNoIElucHV0IC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtd3JhcHBlclwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidCdXNjYXIgJyArIChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSkudG9Mb3dlckNhc2UoKSArICcuLi4nXCJcbiAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25TZWFyY2goKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoLWlucHV0LWZ1bGxcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYnV0dG9ucy1pbnNpZGVcIj5cbiAgICAgICAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzZWFyY2hUZXJtXCJcbiAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktdHJhc2hcIlxuICAgICAgICAgICAgICAgIHNldmVyaXR5PVwiZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICBbdGV4dF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbcm91bmRlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAob25DbGljayk9XCJjbGVhclNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaC1idXR0b24tY2xlYXJcIlxuICAgICAgICAgICAgICAgIHBUb29sdGlwPVwiTGltcGFyIGJ1c2NhXCJcbiAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgICA+PC9wLWJ1dHRvbj5cbiAgICAgICAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXNlYXJjaFwiXG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtyb3VuZGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cIm9uU2VhcmNoKClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoLWJ1dHRvbi1zZWFyY2hcIlxuICAgICAgICAgICAgICAgIHBUb29sdGlwPVwiQnVzY2FyXCJcbiAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgICA+PC9wLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBEYXRhIFRhYmxlIC0tPlxuICAgICAgICAgIDxwLXRhYmxlXG4gICAgICAgICAgICBbdmFsdWVdPVwiZmlsdGVyZWREYXRhXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgICAgICAgICAgW3BhZ2luYXRvcl09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtyb3dzXT1cInBhZ2VTaXplXCJcbiAgICAgICAgICAgIFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzXCJcbiAgICAgICAgICAgIFtsYXp5XT1cInRydWVcIlxuICAgICAgICAgICAgKG9uTGF6eUxvYWQpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCJcbiAgICAgICAgICAgIGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGU9XCJNb3N0cmFuZG8ge2ZpcnN0fSBhIHtsYXN0fSBkZSB7dG90YWxSZWNvcmRzfSByZWdpc3Ryb3NcIlxuICAgICAgICAgICAgZGF0YUtleT1cImlkXCJcbiAgICAgICAgICAgIFtyb3dIb3Zlcl09XCJ0cnVlXCJcbiAgICAgICAgICAgIHJlc3BvbnNpdmVMYXlvdXQ9XCJzY3JvbGxcIlxuICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtZGF0YXRhYmxlLXN0cmlwZWQgbG9va3VwLXRhYmxlXCJcbiAgICAgICAgICAgIFsoc2VsZWN0aW9uKV09XCJzZWxlY3RlZEl0ZW1cIlxuICAgICAgICAgICAgKG9uUm93U2VsZWN0KT1cIm9uUm93U2VsZWN0KCRldmVudClcIlxuICAgICAgICAgICAgc2VsZWN0aW9uTW9kZT1cInNpbmdsZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiIFtzdHlsZS53aWR0aF09XCJjb2wud2lkdGhcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGNvbC5oZWFkZXIgfX1cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtaXRlbT5cbiAgICAgICAgICAgICAgPHRyIFtwU2VsZWN0YWJsZVJvd109XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0RmllbGRWYWx1ZShpdGVtLCBjb2wuZmllbGQpIH19XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbnMubGVuZ3RoXCIgY2xhc3M9XCJlbXB0eS1tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2hcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDxwPk5lbmh1bSByZWdpc3RybyBlbmNvbnRyYWRvPC9wPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+VGVudGUgYWp1c3RhciBvcyB0ZXJtb3MgZGUgYnVzY2E8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9wLXRhYmxlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvcC1kaWFsb2c+XG4gICAgPC9zaWEtZHluYW1pYy1maWVsZC13cmFwcGVyPlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgLmxvb2t1cC1maWVsZCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG5cbiAgICAubG9va3VwLWlucHV0LWdyb3VwIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgXG4gICAgICAubG9va3VwLWRpc3BsYXkge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBoZWlnaHQ6IDIuODU3cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjc1cmVtIDRyZW0gMC43NXJlbSAwLjc1cmVtO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIFxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAubG9va3VwLWJ1dHRvbnMge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OiA0cHg7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgIH1cblxuICAgICAgOjpuZy1kZWVwIC5wLWJ1dHRvbiB7XG4gICAgICAgIHdpZHRoOiAycmVtICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogMnJlbSAhaW1wb3J0YW50O1xuICAgICAgICBtaW4td2lkdGg6IDJyZW0gIWltcG9ydGFudDtcbiAgICAgICAgbWluLWhlaWdodDogMnJlbSAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50O1xuICAgICAgICBcbiAgICAgICAgLnAtYnV0dG9uLWljb24ge1xuICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW0gIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLnAtYnV0dG9uLWxhYmVsIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAubG9va3VwLWRpYWxvZy1jb250ZW50IHtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgcGFkZGluZzogMDtcblxuICAgICAgLnNlYXJjaC13cmFwcGVyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAuc2VhcmNoLWlucHV0LWZ1bGwge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDUuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zZWFyY2gtYnV0dG9ucy1pbnNpZGUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICByaWdodDogNHB4O1xuICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGdhcDogMnB4O1xuICAgICAgICAgIFxuICAgICAgICAgIDo6bmctZGVlcCAucC1idXR0b24ge1xuICAgICAgICAgICAgd2lkdGg6IDIuNXJlbSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgaGVpZ2h0OiAyLjVyZW0gIWltcG9ydGFudDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmxvb2t1cC10YWJsZSB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIFxuICAgICAgICAuZW1wdHktc3RhdGUge1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICBwYWRkaW5nOiAzMnB4O1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1wLXRleHQtY29sb3Itc2Vjb25kYXJ5KTtcblxuICAgICAgICAgIGkge1xuICAgICAgICAgICAgZm9udC1zaXplOiA0OHB4O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHAge1xuICAgICAgICAgICAgbWFyZ2luOiA4cHggMDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzbWFsbCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICBgXVxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljRmllbGRMb29rdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBmaWVsZCE6IER5bmFtaWNGb3JtRmllbGRDb25maWc7XG4gIEBJbnB1dCgpIGZvcm0hOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCE6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgbW9kZTogJ2Zvcm0nIHwgJ2ZpbHRlcicgPSAnZm9ybSc7XG5cbiAgZGlzcGxheVZhbHVlOiBzdHJpbmcgPSAnJztcbiAgc2hvd0xvb2t1cERpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xuICBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHNlYXJjaFRlcm06IHN0cmluZyA9ICcnO1xuICBcbiAgZGF0YTogYW55W10gPSBbXTtcbiAgZmlsdGVyZWREYXRhOiBhbnlbXSA9IFtdO1xuICB0b3RhbFJlY29yZHM6IG51bWJlciA9IDA7XG4gIGN1cnJlbnRQYWdlOiBudW1iZXIgPSAwO1xuICBwYWdlU2l6ZTogbnVtYmVyID0gNTtcbiAgc2VsZWN0ZWRJdGVtOiBhbnkgPSBudWxsO1xuICBcbiAgY29sdW1uczogTG9va3VwQ29sdW1uW10gPSBbXTtcbiAgZGlzcGxheUZpZWxkOiBzdHJpbmcgPSAnbmFtZSc7XG4gIHZhbHVlRmllbGQ6IHN0cmluZyA9ICdpZCc7XG4gIHNlYXJjaEZpZWxkczogc3RyaW5nW10gPSBbJ25hbWUnXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0aW9uU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0dXBMb29rdXBDb25maWcoKTtcbiAgICB0aGlzLndhdGNoVmFsdWVDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoVmFsdWVDaGFuZ2VzKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldEZvcm1Db250cm9sKCk7XG4gICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgIC8vIENhcnJlZ2FyIHZhbG9yIGluaWNpYWxcbiAgICAgIGlmIChjb250cm9sLnZhbHVlKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlVmFsdWVEaXNwbGF5KGNvbnRyb2wudmFsdWUpO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBPYnNlcnZhciBtdWRhbsOnYXNcbiAgICAgIGNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWU6IGFueSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gJycpIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVZhbHVlRGlzcGxheSh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSAnJztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9idMOpbSBvIEZvcm1Db250cm9sLCBsaWRhbmRvIGNvbSBjYW1wb3MgYW5pbmhhZG9zIChjb20gcG9udG8gbm8gbm9tZSlcbiAgICovXG4gIHByaXZhdGUgZ2V0Rm9ybUNvbnRyb2woKSB7XG4gICAgaWYgKCF0aGlzLmZpZWxkPy5maWVsZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gQWNlc3NhIGRpcmV0YW1lbnRlIHZpYSBjb250cm9sc1tdIHBvaXMgZm9ybS5nZXQoKSBuw6NvIGZ1bmNpb25hIGNvbSBjYW1wb3MgcXVlIHTDqm0gcG9udG9cbiAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMuZmllbGQuZmllbGRdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdmFsdWUoKTogYW55IHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXRGb3JtQ29udHJvbCgpO1xuICAgIHJldHVybiBjb250cm9sPy52YWx1ZTtcbiAgfVxuXG4gIGdldCBjdXJyZW50VmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldEZvcm1Db250cm9sKCk7XG4gICAgY29udHJvbD8uc2V0VmFsdWUodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cExvb2t1cENvbmZpZygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5maWVsZCkge1xuICAgICAgdGhpcy5kaXNwbGF5RmllbGQgPSB0aGlzLmZpZWxkLmxvb2t1cERpc3BsYXlGaWVsZCB8fCAnbmFtZSc7XG4gICAgICB0aGlzLnZhbHVlRmllbGQgPSB0aGlzLmZpZWxkLmxvb2t1cFZhbHVlRmllbGQgfHwgJ2lkJztcbiAgICAgIHRoaXMuc2VhcmNoRmllbGRzID0gdGhpcy5maWVsZC5sb29rdXBTZWFyY2hGaWVsZHMgfHwgWyduYW1lJ107XG4gICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmZpZWxkLmxvb2t1cENvbHVtbnMgfHwgW1xuICAgICAgICB7IGZpZWxkOiB0aGlzLmRpc3BsYXlGaWVsZCwgaGVhZGVyOiAnTm9tZScsIHdpZHRoOiAnMTAwJScgfVxuICAgICAgXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVZhbHVlRGlzcGxheSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9ICcnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB0aGlzLmZvcm1hdERpc3BsYXlWYWx1ZSh2YWx1ZSk7XG4gICAgICAvLyBLZWVwIHRoZSBmdWxsIG9iamVjdCBpbiB0aGUgZm9ybSBjb250cm9sXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIC8vIFNlIMOpIHVtIElEIChzdHJpbmcgb3UgbnVtYmVyKSwgbsOjbyBmYXplciByZXF1aXNpw6fDo29cbiAgICAvLyBEZWl4YXIgdmF6aW8gZSBzw7MgY2FycmVnYXIgcXVhbmRvIGFicmlyIG8gbG9va3VwXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSAnJztcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdERpc3BsYXlWYWx1ZShpdGVtOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICghaXRlbSkgcmV0dXJuICcnO1xuICAgIFxuICAgIGlmICh0aGlzLmZpZWxkPy5sb29rdXBEaXNwbGF5RmllbGRzICYmIHRoaXMuZmllbGQubG9va3VwRGlzcGxheUZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmZpZWxkLmxvb2t1cERpc3BsYXlGaWVsZHNcbiAgICAgICAgLm1hcChmaWVsZE5hbWUgPT4gdGhpcy5nZXRGaWVsZFZhbHVlKGl0ZW0sIGZpZWxkTmFtZSkpXG4gICAgICAgIC5maWx0ZXIodmFsdWUgPT4gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gJycpO1xuICAgICAgXG4gICAgICByZXR1cm4gdmFsdWVzLmpvaW4oJyAtICcpO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFZhbHVlKGl0ZW0sIHRoaXMuZGlzcGxheUZpZWxkKSB8fCAnJztcbiAgfVxuXG4gIGlzRmllbGRJbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldEZvcm1Db250cm9sKCk7XG4gICAgcmV0dXJuICEhKGNvbnRyb2wgJiYgY29udHJvbC5pbnZhbGlkICYmIChjb250cm9sLmRpcnR5IHx8IGNvbnRyb2wudG91Y2hlZCkpO1xuICB9XG5cbiAgaXNGaWVsZERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldEZvcm1Db250cm9sKCk7XG4gICAgcmV0dXJuIGNvbnRyb2w/LmRpc2FibGVkIHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVHJhbnNsYXRpb25IZWxwZXIuZ2V0RmlsdGVyUGxhY2Vob2xkZXIoXG4gICAgICB0aGlzLnRyYW5zbGF0aW9uU2VydmljZSxcbiAgICAgIHRoaXMubW9kZSxcbiAgICAgIHRoaXMuZmllbGQubGFiZWwsXG4gICAgICB0aGlzLmZpZWxkLnBsYWNlaG9sZGVyXG4gICAgKTtcbiAgfVxuXG4gIG9wZW5Mb29rdXAoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNGaWVsZERpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgdGhpcy51cGRhdGVTZWxlY3RlZEl0ZW0oKTtcbiAgICBcbiAgICB0aGlzLnNob3dMb29rdXBEaWFsb2cgPSB0cnVlO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAwO1xuICAgIHRoaXMuc2VhcmNoVGVybSA9ICcnO1xuICAgIHRoaXMubG9hZERhdGEoKTtcbiAgfVxuXG4gIG9uRGlhbG9nSGlkZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0gPSAnJztcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMDtcbiAgfVxuXG4gIG9uUGFnZUNoYW5nZShldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3dMb29rdXBEaWFsb2cpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IGV2ZW50LmZpcnN0IC8gZXZlbnQucm93cztcbiAgICB0aGlzLmxvYWREYXRhKCk7XG4gIH1cblxuICBwcml2YXRlIGxvYWREYXRhKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5maWVsZD8ubG9va3VwU2VydmljZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgXG4gICAgY29uc3QgbGlzdFBhcmFtczogYW55ID0geyBcbiAgICAgIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2UsXG4gICAgICBzaXplOiB0aGlzLnBhZ2VTaXplXG4gICAgfTtcblxuICAgIGlmICh0aGlzLmZpZWxkLmxvb2t1cFNvcnQpIHtcbiAgICAgIGxpc3RQYXJhbXMuc29ydCA9IHRoaXMuZmllbGQubG9va3VwU29ydDtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMuc2VhcmNoVGVybS50cmltKCkpIHtcbiAgICAgIGNvbnN0IHRlcm0gPSB0aGlzLnNlYXJjaFRlcm0udHJpbSgpO1xuICAgICAgY29uc3QgZmlsdGVyQ29uZGl0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgICAgIGNvbnN0IGlzTnVtZXJpY1Rlcm0gPSAhaXNOYU4oTnVtYmVyKHRlcm0pKSAmJiB0ZXJtICE9PSAnJztcbiAgICAgIFxuICAgICAgdGhpcy5zZWFyY2hGaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKGNvbCA9PiBjb2wuZmllbGQgPT09IGZpZWxkKTtcbiAgICAgICAgY29uc3QgZmllbGRUeXBlID0gY29sdW1uPy50eXBlIHx8ICd0ZXh0JztcbiAgICAgICAgXG4gICAgICAgIGlmIChmaWVsZFR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgaWYgKGlzTnVtZXJpY1Rlcm0pIHtcbiAgICAgICAgICAgIGZpbHRlckNvbmRpdGlvbnMucHVzaChgJHtmaWVsZH0gZXEgJHt0ZXJtfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB1cHBlclRlcm0gPSB0ZXJtLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgZmlsdGVyQ29uZGl0aW9ucy5wdXNoKGBVUFBFUigke2ZpZWxkfSkgbGlrZSAnJSR7dXBwZXJUZXJtfSUnYCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgXG4gICAgICBpZiAoZmlsdGVyQ29uZGl0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxpc3RQYXJhbXMuZmlsdGVyUXVlcnkgPSBmaWx0ZXJDb25kaXRpb25zLmpvaW4oJyBvciAnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMuZmllbGQubG9va3VwRmlsdGVycykge1xuICAgICAgT2JqZWN0LmtleXModGhpcy5maWVsZC5sb29rdXBGaWx0ZXJzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGxpc3RQYXJhbXNba2V5XSA9IHRoaXMuZmllbGQubG9va3VwRmlsdGVycyFba2V5XTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5maWVsZC5sb29rdXBEeW5hbWljRmlsdGVycyAmJiB0aGlzLmZvcm1Hcm91cCkge1xuICAgICAgY29uc3QgZHluYW1pY0ZpbHRlcnMgPSB0aGlzLmZpZWxkLmxvb2t1cER5bmFtaWNGaWx0ZXJzKHRoaXMuZm9ybUdyb3VwLnZhbHVlKTtcbiAgICAgIFxuICAgICAgY29uc3QgZHluYW1pY0ZpbHRlckNvbmRpdGlvbnM6IHN0cmluZ1tdID0gW107XG4gICAgICBPYmplY3Qua2V5cyhkeW5hbWljRmlsdGVycykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGR5bmFtaWNGaWx0ZXJzW2tleV07XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZHluYW1pY0ZpbHRlckNvbmRpdGlvbnMucHVzaChgJHtrZXl9IGVxICcke3ZhbHVlfSdgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBcbiAgICAgIGlmIChkeW5hbWljRmlsdGVyQ29uZGl0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGR5bmFtaWNGaWx0ZXJRdWVyeSA9IGR5bmFtaWNGaWx0ZXJDb25kaXRpb25zLmpvaW4oJyBhbmQgJyk7XG4gICAgICAgIGlmIChsaXN0UGFyYW1zLmZpbHRlclF1ZXJ5KSB7XG4gICAgICAgICAgbGlzdFBhcmFtcy5maWx0ZXJRdWVyeSA9IGAoJHtsaXN0UGFyYW1zLmZpbHRlclF1ZXJ5fSkgYW5kICgke2R5bmFtaWNGaWx0ZXJRdWVyeX0pYDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsaXN0UGFyYW1zLmZpbHRlclF1ZXJ5ID0gZHluYW1pY0ZpbHRlclF1ZXJ5O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIHRoaXMuZmllbGQubG9va3VwU2VydmljZS5saXN0KGxpc3RQYXJhbXMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmRhdGEgPSByZXNwb25zZS5jb250ZW50cyB8fCBbXTtcbiAgICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSBbLi4udGhpcy5kYXRhXTtcbiAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSByZXNwb25zZS50b3RhbEVsZW1lbnRzIHx8IDA7XG4gICAgICAgIFxuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkSXRlbSgpO1xuICAgICAgICBcbiAgICAgICAgLy8gQXDDs3MgY2FycmVnYXIgb3MgZGFkb3MgZGEgZ3JpZCwgc2UgdGVtb3MgdW0gdmFsb3Igc2VsZWNpb25hZG8gbWFzIHNlbSBkaXNwbGF5VmFsdWUsXG4gICAgICAgIC8vIHRlbnRhciBlbmNvbnRyYXIgbyBpdGVtIG5vcyBkYWRvcyBjYXJyZWdhZG9zXG4gICAgICAgIGlmICh0aGlzLnZhbHVlICYmICF0aGlzLmRpc3BsYXlWYWx1ZSkge1xuICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZpbHRlcmVkRGF0YS5maW5kKGkgPT4gaVt0aGlzLnZhbHVlRmllbGRdID09PSB0aGlzLnZhbHVlKTtcbiAgICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB0aGlzLmZvcm1hdERpc3BsYXlWYWx1ZShpdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoX2Vycm9yOiB1bmtub3duKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YSA9IFtdO1xuICAgICAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IFtdO1xuICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IDA7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTZWxlY3RlZEl0ZW0oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZpbHRlcmVkRGF0YS5maW5kKGkgPT4gaVt0aGlzLnZhbHVlRmllbGRdID09PSB0aGlzLnZhbHVlKTtcbiAgICBpZiAoaXRlbSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBpdGVtO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG93TG9va3VwRGlhbG9nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAwO1xuICAgIHRoaXMubG9hZERhdGEoKTtcbiAgfVxuXG4gIGNsZWFyU2VhcmNoKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGVybSA9ICcnO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAwO1xuICAgIHRoaXMubG9hZERhdGEoKTtcbiAgfVxuXG4gIHNlbGVjdEl0ZW0oaXRlbTogYW55KTogdm9pZCB7XG4gICAgLy8gQWx3YXlzIHNldCB0aGUgZnVsbCBvYmplY3QsIG5vdCBqdXN0IHRoZSBJRFxuICAgIHRoaXMuc2V0VmFsdWUoaXRlbSk7XG4gICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB0aGlzLmZvcm1hdERpc3BsYXlWYWx1ZShpdGVtKTtcbiAgICB0aGlzLnNob3dMb29rdXBEaWFsb2cgPSBmYWxzZTtcbiAgfVxuXG4gIG9uUm93U2VsZWN0KGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdEl0ZW0oZXZlbnQuZGF0YSk7XG4gIH1cblxuICBjbGVhclZhbHVlKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VmFsdWUobnVsbCk7XG4gICAgdGhpcy5kaXNwbGF5VmFsdWUgPSAnJztcbiAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IG51bGw7XG4gIH1cblxuICBnZXRGaWVsZFZhbHVlKGl0ZW06IGFueSwgZmllbGQ6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIGZpZWxkLnNwbGl0KCcuJykucmVkdWNlKChvYmosIGtleSkgPT4gb2JqPy5ba2V5XSwgaXRlbSkgfHwgJyc7XG4gIH1cbn1cbiJdfQ==