trm-tmpl 3.2.2 → 3.3.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 (22) hide show
  1. package/esm2022/lib/app/pages/components/constructor-form/components/constructor-field-iframe/constructor-field-iframe.component.mjs +3 -5
  2. package/esm2022/lib/app/pages/components/constructor-form/components/method-amount-hint/method-amount-hint.component.mjs +11 -7
  3. package/esm2022/lib/app/pages/components/constructor-form/constructor-form.component.mjs +7 -4
  4. package/esm2022/lib/app/pages/components/constructor-form/models/payment-field-options.mjs +1 -1
  5. package/esm2022/lib/app/pages/components/constructor-form/services/constructor-form.service.mjs +2 -2
  6. package/esm2022/lib/app/pages/components/terminal-layout/terminal-layout.component.mjs +3 -3
  7. package/esm2022/lib/app/pages/directives/fee-template.directive.mjs +17 -0
  8. package/esm2022/lib/app/pages/directives/index.mjs +2 -1
  9. package/esm2022/lib/app/services/session.data-source.mjs +5 -4
  10. package/esm2022/lib/app/terminal-tpl.component.mjs +9 -5
  11. package/esm2022/lib/app/terminal.module.mjs +43 -75
  12. package/fesm2022/trm-tmpl.mjs +238 -246
  13. package/fesm2022/trm-tmpl.mjs.map +1 -1
  14. package/lib/app/pages/components/constructor-form/components/constructor-field-iframe/constructor-field-iframe.component.d.ts +0 -1
  15. package/lib/app/pages/components/constructor-form/components/method-amount-hint/method-amount-hint.component.d.ts +3 -0
  16. package/lib/app/pages/components/constructor-form/constructor-form.component.d.ts +1 -1
  17. package/lib/app/pages/components/constructor-form/models/payment-field-options.d.ts +1 -1
  18. package/lib/app/pages/directives/fee-template.directive.d.ts +7 -0
  19. package/lib/app/pages/directives/index.d.ts +1 -0
  20. package/lib/app/terminal-tpl.component.d.ts +2 -1
  21. package/lib/app/terminal.module.d.ts +26 -4
  22. package/package.json +1 -1
@@ -298,7 +298,7 @@ export class ConstructorFormService extends FormGroup {
298
298
  return (prev.country === curr.country &&
299
299
  prev.method === curr.method &&
300
300
  prev.currency === curr.currency &&
301
- Object.keys(prev.payment).every((key) => prev.payment[key] === curr.payment[key]));
301
+ prev.payment.amount === curr.payment.amount);
302
302
  }));
303
303
  }
304
304
  ngOnDestroy() {
@@ -313,4 +313,4 @@ export class ConstructorFormService extends FormGroup {
313
313
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ConstructorFormService, decorators: [{
314
314
  type: Injectable
315
315
  }], ctorParameters: () => [] });
316
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0b3ItZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVybWluYWwtdGVtcGxhdGUvc3JjL2xpYi9hcHAvcGFnZXMvY29tcG9uZW50cy9jb25zdHJ1Y3Rvci1mb3JtL3NlcnZpY2VzL2NvbnN0cnVjdG9yLWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEcsT0FBTyxFQUFFLGNBQWMsRUFBd0Qsb0JBQW9CLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0UsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRixPQUFPLEVBQUUsb0JBQW9CLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUU3RSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBR2xFLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxTQUFxRDtJQWEvRjtRQUNFLEtBQUssQ0FBQztZQUNKLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUN4RCxNQUFNLEVBQUUsSUFBSSxXQUFXLENBQUMsU0FBUyxFQUFF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QUUsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUMsQ0FBQzs4R0EvVlUsc0JBQXNCO2tIQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgaW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29sbGVjdGlvblR5cGUsIFBheW1lbnRGaWVsZCwgUGF5bWVudEZpZWxkT3B0aW9uc0l0ZW0sIFBheW1lbnRGaWVsZHMsIFBheW1lbnRGaWVsZFR5cGVFbnVtIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgU2Vzc2lvbkRhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9zZXNzaW9uLmRhdGEtc291cmNlJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaXJzdCwgbWFwLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTWV0aG9kSW5mbywgVGVybWluYWxQYXltZW50UHJlcGFyZVJlcXVlc3QgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb2RlZ2VuL21vZGVsL21vZGVscyc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyByZW1vdmVFbXB0eVByb3BzIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL2hlbHBlcnMvcmVtb3ZlLWVtcHR5LXByb3BzXCI7XHJcbmltcG9ydCB7IEkxOE5fS0VZIH0gZnJvbSBcIi4vLi4vLi4vLi4vLi4vaTE4blwiO1xyXG5pbXBvcnQgeyBURVJNSU5BTF9NRVRIT0RfQ09ORklHVVJBVElPTl9GQUNUT1JZIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29uc3QnO1xyXG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vc2VydmljZXMvbG9jYWwtc3RvcmFnZVwiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ29uc3RydWN0b3JGb3JtU2VydmljZSBleHRlbmRzIEZvcm1Hcm91cDx7IFtrZXk6IHN0cmluZ106IEZvcm1Db250cm9sIHwgRm9ybUdyb3VwIH0+IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBwcml2YXRlIHNlc3Npb25EUyA9IGluamVjdChTZXNzaW9uRGF0YVNvdXJjZSk7XHJcbiAgcHJpdmF0ZSBjZCA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJpdmF0ZSBjb25maWd1cmF0aW9uRmFjdG9yeSA9IGluamVjdChURVJNSU5BTF9NRVRIT0RfQ09ORklHVVJBVElPTl9GQUNUT1JZLCB7b3B0aW9uYWw6IHRydWV9KSB8fCAoKG1ldGhvZDogc3RyaW5nLCBkZWZhdWx0Q29uZmlnOiBQYXltZW50RmllbGRzKSA9PiBkZWZhdWx0Q29uZmlnKTtcclxuXHJcbiAgcHJpdmF0ZSBfc3RvcmFnZTogTG9jYWxTdG9yYWdlID0gaW5qZWN0KExvY2FsU3RvcmFnZSk7XHJcbiAgcHJpdmF0ZSBjYW5jZWxSZXF1ZXN0c1N1YnNjcmliZXIgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgdW5TdWJzY3JpYmVyID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBjb25maWc6IFBheW1lbnRGaWVsZHM7XHJcbiAgZmllbGRzOiBQYXltZW50RmllbGRbXSA9IFtdO1xyXG4gIG1hc2tlZFdhbGxldDogc3RyaW5nO1xyXG4gIHJlYWR5ID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoe1xyXG4gICAgICBjb3VudHJ5OiBuZXcgRm9ybUNvbnRyb2wodW5kZWZpbmVkLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgbWV0aG9kOiBuZXcgRm9ybUNvbnRyb2wodW5kZWZpbmVkLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgY3VycmVuY3k6IG5ldyBGb3JtQ29udHJvbCh1bmRlZmluZWQsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG4gICAgICB1c2VyX2N1cnJlbmN5OiBuZXcgRm9ybUNvbnRyb2wodW5kZWZpbmVkLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgcGF5bWVudDogbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1ldGhvZEluZm9Mb2FkaW5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbkRTLmxvYWRpbmdNZXRob2RJbmZvJC5nZXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgY29udGludWVMb2FkZXJPbigpIHtcclxuICAgIHRoaXMuc2Vzc2lvbkRTLmxvYWRpbmdDb25maXJtJC5uZXh0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgY29udGludWVMb2FkZXJPZmYoKSB7XHJcbiAgICB0aGlzLnNlc3Npb25EUy5sb2FkaW5nQ29uZmlybSQubmV4dChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgcGF5bWVudEZvcm1GaWVsZE5hbWVzKCkge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMucGF5bWVudC5jb250cm9scyk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVQYXltZW50Rm9ybUNvbnRyb2xzKCkge1xyXG4gICAgdGhpcy5wYXltZW50Rm9ybUZpZWxkTmFtZXNcclxuICAgICAgLmZvckVhY2goKGNvbnRyb2xOYW1lOiBzdHJpbmcpID0+IHRoaXMucGF5bWVudC5yZW1vdmVDb250cm9sKGNvbnRyb2xOYW1lKSk7XHJcbiAgfVxyXG5cclxuICBpbml0KCkge1xyXG4gICAgdGhpcy5yZWFkeSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uRmFjdG9yeSkge1xyXG4gICAgICB0aGlzLmNvbmZpZyA9IHRoaXMuY29uZmlndXJhdGlvbkZhY3RvcnkoXHJcbiAgICAgICAgdGhpcy5tZXRob2ROYW1lLFxyXG4gICAgICAgIHRoaXMuc2Vzc2lvbkRTLmdldENvbmZpZ3VyYXRpb24odGhpcy5tZXRob2ROYW1lKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb25maWcgPSB0aGlzLnNlc3Npb25EUy5nZXRDb25maWd1cmF0aW9uKHRoaXMubWV0aG9kTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWVsZHMgPSBbLi4udGhpcy5jb25maWcuZmllbGRzXTtcclxuICAgIC8vIHRoYXQgdHJpY2sgZm9yIHotaW5kZXggb3JkZXIgaW4gcGFnZSAocmV2ZXJzZSBhcnJheSArIHJldmVyc2UgZmxleC1kaXJlY3Rpb24pXHJcbiAgICB0aGlzLmZpZWxkcy5yZXZlcnNlKCk7XHJcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uRFNcclxuICAgICAgLmdldE1ldGhvZEluZm8oXHJcbiAgICAgICAgdGhpcy5jdXJyZW5jeS52YWx1ZSxcclxuICAgICAgICB0aGlzLm1ldGhvZC52YWx1ZVxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgobWV0aG9kSW5mbykgPT4gdGhpcy5nZW5lcmF0ZUZpZWxkcyhtZXRob2RJbmZvKSksXHJcbiAgICAgICAgZmlyc3QoKSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5jYW5jZWxSZXF1ZXN0c1N1YnNjcmliZXIpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYW1vdW50RHluYW1pYyA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIGFzeW5jIGdlbmVyYXRlRmllbGRzKG1ldGhvZEluZm86IE1ldGhvZEluZm8pOiBQcm9taXNlPHZvaWQ+ICB7XHJcbiAgICB0aGlzLmZpZWxkc1xyXG4gICAgICAuZm9yRWFjaCgoZmllbGQ6IFBheW1lbnRGaWVsZCkgPT4ge1xyXG4gICAgICAgIGlmICghZmllbGQubmFtZSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjb250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bWJlcj4oe1xyXG4gICAgICAgICAgdmFsdWU6IGZpZWxkLnR5cGUgPT09IFBheW1lbnRGaWVsZFR5cGVFbnVtLklmcmFtZSA/IHVuZGVmaW5lZCA6IG51bGwsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG4gICAgICAgIHRoaXMuYW1vdW50RHluYW1pYyA9IG1ldGhvZEluZm8uYW1vdW50RHluYW1pYztcclxuICAgICAgICBjb25zdCBpc0VkaXRhYmxlID0gIW1ldGhvZEluZm8uYW1vdW50RHluYW1pYyAmJiB0aGlzLmlzQW1vdW50RWRpdGFibGUoKTtcclxuICAgICAgICBmaWVsZC5wbGFjZWhvbGRlciA9IGZpZWxkLnBsYWNlaG9sZGVyIHx8ICcnO1xyXG4gICAgICAgIGlmIChmaWVsZC50eXBlID09PSBQYXltZW50RmllbGRUeXBlRW51bS5BbW91bnQpIHtcclxuICAgICAgICAgIGlmIChtZXRob2RJbmZvLmRlZmF1bHRBbW91bnQgfHwgbWV0aG9kSW5mby5kZWZhdWx0QW1vdW50ID09PSAwKSB7XHJcbiAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobWV0aG9kSW5mby5kZWZhdWx0QW1vdW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghaXNFZGl0YWJsZSkge1xyXG4gICAgICAgICAgICBmaWVsZC5yZWFkb25seSA9IHRydWU7XHJcbiAgICAgICAgICAgIGNvbnRyb2wubWFya0FzRGlydHkoKTtcclxuICAgICAgICAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmaWVsZC5yZWFkb25seSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goKGNvbnRyb2wpID0+ICtjb250cm9sLnZhbHVlID09PSAwID8ge3JlcXVpcmVkOiB0cnVlfSA6IG51bGwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZmllbGQub3B0aW9ucyA9IGZpZWxkLm9wdGlvbnMgfHwge307XHJcbiAgICAgICAgICBmaWVsZC5vcHRpb25zLmN1cnJlbmN5ID0gdGhpcy5jdXJyZW5jeS52YWx1ZTtcclxuICAgICAgICAgIGlmIChtZXRob2RJbmZvLmZlZSkge1xyXG4gICAgICAgICAgICBmaWVsZC5vcHRpb25zLmZlZSA9IG1ldGhvZEluZm8uZmVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZmllbGQub3B0aW9ucy5mZWUgPSAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKG1ldGhvZEluZm8uZml4ZWRGZWUpIHtcclxuICAgICAgICAgICAgZmllbGQub3B0aW9ucy5maXhlZEZlZSA9IG1ldGhvZEluZm8uZml4ZWRGZWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmaWVsZC5vcHRpb25zLmZpeGVkRmVlID0gMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghbWV0aG9kSW5mby5hbW91bnREeW5hbWljICYmIG1ldGhvZEluZm8ubGltaXRzPy5tYXgpIHtcclxuICAgICAgICAgICAgZmllbGQub3B0aW9ucy5tYXggPSBtZXRob2RJbmZvLmxpbWl0cy5tYXg7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkZWxldGUgZmllbGQub3B0aW9ucy5tYXg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIW1ldGhvZEluZm8uYW1vdW50RHluYW1pYyAmJiBtZXRob2RJbmZvLmxpbWl0cz8ubWluKSB7XHJcbiAgICAgICAgICAgIGZpZWxkLm9wdGlvbnMubWluID0gbWV0aG9kSW5mby5saW1pdHMubWluO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZGVsZXRlIGZpZWxkLm9wdGlvbnMubWluO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmllbGQud2FsbGV0ICYmIG1ldGhvZEluZm8uZGVmYXVsdFdhbGxldCkge1xyXG4gICAgICAgICAgY29udHJvbC5zZXRWYWx1ZShtZXRob2RJbmZvLmRlZmF1bHRXYWxsZXQpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobWV0aG9kSW5mby5lbWFpbCAmJiBmaWVsZC50eXBlID09PSBQYXltZW50RmllbGRUeXBlRW51bS5FbWFpbCkge1xyXG4gICAgICAgICAgY29udHJvbC5zZXRWYWx1ZShtZXRob2RJbmZvLmVtYWlsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZpZWxkLnJlcXVpcmUpIHtcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZpZWxkLnBhdHRlcm4pIHtcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4obmV3IFJlZ0V4cChmaWVsZC5wYXR0ZXJuKSkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09IFBheW1lbnRGaWVsZFR5cGVFbnVtLkVtYWlsKSB7XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5lbWFpbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmaWVsZC5vcHRpb25zPy5tYXggJiYgdHlwZW9mIGZpZWxkLm9wdGlvbnM/Lm1heCA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heChmaWVsZC5vcHRpb25zPy5tYXgpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZpZWxkLm9wdGlvbnM/Lm1pbiAmJiB0eXBlb2YgZmllbGQub3B0aW9ucz8ubWluID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluKGZpZWxkLm9wdGlvbnM/Lm1pbikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmllbGQub3B0aW9ucz8ubWF4TGVuZ3RoKSB7XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgoZmllbGQub3B0aW9ucz8ubWF4TGVuZ3RoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmaWVsZC5vcHRpb25zPy5taW5MZW5ndGgpIHtcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aChmaWVsZC5vcHRpb25zPy5taW5MZW5ndGgpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09IFBheW1lbnRGaWVsZFR5cGVFbnVtLkFtb3VudCAmJiBtZXRob2RJbmZvLmFtb3VudER5bmFtaWMpIHtcclxuICAgICAgICAgIHZhbGlkYXRvcnMubGVuZ3RoID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiBmaWVsZC52YWxpZGF0b3IgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChmaWVsZC52YWxpZGF0b3IodGhpcy5wYXltZW50KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICAgICAgICB0aGlzLnBheW1lbnQuYWRkQ29udHJvbChmaWVsZC5uYW1lLCBjb250cm9sKTtcclxuICAgICAgICB0aGlzLmZldGNoQ29sbGVjdGlvbihmaWVsZClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIHRoaXMucmVhZHkgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmZXRjaENvbGxlY3Rpb24oZmllbGQ6IFBheW1lbnRGaWVsZCk6IE9ic2VydmFibGU8UGF5bWVudEZpZWxkT3B0aW9uc0l0ZW1bXT4ge1xyXG4gICAgY29uc3QgRU1QVFlfTElTVCA9IG9mKFtdKS5waXBlKGZpcnN0KCkpO1xyXG4gICAgaWYgKCFmaWVsZC5vcHRpb25zPy5jb2xsZWN0aW9uKSB7XHJcbiAgICAgIHJldHVybiBFTVBUWV9MSVNUO1xyXG4gICAgfVxyXG4gICAgc3dpdGNoIChmaWVsZC5vcHRpb25zLmNvbGxlY3Rpb24pIHtcclxuICAgICAgY2FzZSBDb2xsZWN0aW9uVHlwZS5CYW5rczpcclxuICAgICAgICBmaWVsZC5vcHRpb25zLml0ZW1zID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvbkRTXHJcbiAgICAgICAgICAuZ2V0QmFua3ModGhpcy5tZXRob2QudmFsdWUpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgbWFwKCh7ZGF0YX0pID0+IHtcclxuICAgICAgICAgICAgICBmaWVsZC5vcHRpb25zLml0ZW1zID0gZGF0YTtcclxuICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcbiAgICAgIGNhc2UgQ29sbGVjdGlvblR5cGUuRG9jdW1lbnRzOlxyXG4gICAgICAgIGZpZWxkLm9wdGlvbnMuaXRlbXMgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXNzaW9uRFNcclxuICAgICAgICAgIC5nZXREb2N1bWVudHModGhpcy5tZXRob2QudmFsdWUpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgbWFwKCh7ZGF0YX0pID0+IHtcclxuICAgICAgICAgICAgICBmaWVsZC5vcHRpb25zLml0ZW1zID0gZGF0YTtcclxuICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIEVNUFRZX0xJU1Q7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgY291bnRyeSgpOiBBYnN0cmFjdENvbnRyb2wge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdjb3VudHJ5JykgYXMgQWJzdHJhY3RDb250cm9sO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1ldGhvZCgpOiBBYnN0cmFjdENvbnRyb2wge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdtZXRob2QnKSBhcyBBYnN0cmFjdENvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBnZXQgY3VycmVuY3koKTogRm9ybUNvbnRyb2wge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdjdXJyZW5jeScpIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHVzZXJDdXJyZW5jeSgpOiBGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXQoJ3VzZXJfY3VycmVuY3knKSBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIGdldCBwYXltZW50KCk6IEZvcm1Hcm91cCB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXQoJ3BheW1lbnQnKSBhcyBGb3JtR3JvdXA7XHJcbiAgfVxyXG5cclxuICBnZXQgYW1vdW50KCk6IEFic3RyYWN0Q29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5wYXltZW50LmdldCh0aGlzLmZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkLnR5cGUgPT09IFBheW1lbnRGaWVsZFR5cGVFbnVtLkFtb3VudCkubmFtZSkgYXMgQWJzdHJhY3RDb250cm9sO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBtZXRob2ROYW1lKCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMubWV0aG9kLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbkRTLmdldFR5cGVOYW1lQnlJZCh0aGlzLm1ldGhvZC52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRUeXBlTmFtZUJ5SWQoaWQpIHtcclxuICAgIHJldHVybiB0aGlzLnNlc3Npb25EUy5nZXRUeXBlTmFtZUJ5SWQoaWQpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZURlZmF1bHRDb3VudHJ5KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3RvcmFnZS5zYXZlRGVmYXVsdENvdW50cnkodGhpcy5jb3VudHJ5LnZhbHVlKTtcclxuICB9XHJcblxyXG4gIHNhdmVEZWZhdWx0TWV0aG9kTmFtZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0b3JhZ2Uuc2F2ZURlZmF1bHRNZXRob2ROYW1lKHRoaXMubWV0aG9kTmFtZSk7XHJcbiAgfVxyXG5cclxuICBzYXZlRGVmYXVsdEN1cnJlbmN5KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3RvcmFnZS5zYXZlRGVmYXVsdEN1cnJlbmN5KHRoaXMuY3VycmVuY3kudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRlZmF1bHRDb3VudHJ5KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RvcmFnZS5kZWZhdWx0Q291bnRyeTtcclxuICB9XHJcblxyXG4gIGdldCBkZWZhdWx0TWV0aG9kTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N0b3JhZ2UuZGVmYXVsdE1ldGhvZE5hbWU7XHJcbiAgfVxyXG5cclxuICBnZXQgZGVmYXVsdEN1cnJlbmN5KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RvcmFnZS5kZWZhdWx0Q3VycmVuY3k7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuY2VsUmVxdWVzdHMoKSB7XHJcbiAgICB0aGlzLmNhbmNlbFJlcXVlc3RzU3Vic2NyaWJlci5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UGF5bWVudFZhbHVlKCkge1xyXG4gICAgY29uc3QgZGF0YTogVGVybWluYWxQYXltZW50UHJlcGFyZVJlcXVlc3QgPSB7XHJcbiAgICAgIHR5cGVJZDogdGhpcy5tZXRob2QudmFsdWUsXHJcbiAgICAgIGN1cnJlbmN5OiB0aGlzLmN1cnJlbmN5LnZhbHVlLFxyXG4gICAgICB0eXBlOiB0aGlzLmdldFR5cGVOYW1lQnlJZCh0aGlzLm1ldGhvZC52YWx1ZSksXHJcbiAgICAgIHVzZXJfY3VycmVuY3k6IHRoaXMudXNlckN1cnJlbmN5LnZhbHVlLFxyXG4gICAgICAuLi50aGlzLnBheW1lbnQuZ2V0UmF3VmFsdWUoKVxyXG4gICAgfVxyXG4gICAgdGhpcy5maWVsZHMuZm9yRWFjaCgoZmllbGQ6IFBheW1lbnRGaWVsZCkgPT4ge1xyXG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gUGF5bWVudEZpZWxkVHlwZUVudW0uQW1vdW50KSB7XHJcbiAgICAgICAgZGF0YVtmaWVsZC5uYW1lXSA9ICtkYXRhW2ZpZWxkLm5hbWVdO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiByZW1vdmVFbXB0eVByb3BzKGRhdGEpO1xyXG4gIH1cclxuICB1cGRhdGVWYWx1ZUFuZFZhbGlkaXR5SWZyYW1lcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZmllbGRzLmZvckVhY2goKHsgbmFtZSwgdHlwZSB9KSA9PiB7XHJcbiAgICAgIGlmICh0eXBlID09PSBQYXltZW50RmllbGRUeXBlRW51bS5JZnJhbWUpIHtcclxuICAgICAgICB0aGlzLnBheW1lbnQuZ2V0KG5hbWUpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCByZWFkeUlmcmFtZXNTdWJtaXQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5maWVsZHNcclxuICAgICAgLmZpbHRlcigoeyB0eXBlIH0pID0+IHR5cGUgIT09IFBheW1lbnRGaWVsZFR5cGVFbnVtLklmcmFtZSlcclxuICAgICAgLmV2ZXJ5KCh7IG5hbWUsIHR5cGUgfSkgPT4gIXRoaXMucGF5bWVudC5nZXQobmFtZSkuaW52YWxpZCk7XHJcbiAgfVxyXG5cclxuICBpc0Ftb3VudEVkaXRhYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbkRTLmdldFNlc3Npb25WYWx1ZSgpLmFtb3VudEVkaXRhYmxlXHJcbiAgfVxyXG5cclxuICBoYXNXaGF0VG9GaWxsKCkge1xyXG4gICAgY29uc3QgX2hhc1doYXRUb0ZpbGwgPSB0aGlzLmNvdW50cnkuZW5hYmxlZCB8fCB0aGlzLm1ldGhvZC5lbmFibGVkIHx8IHRoaXMuY3VycmVuY3kuZW5hYmxlZCB8fCB0aGlzLmlzQW1vdW50RWRpdGFibGUoKTtcclxuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZmllbGRzO1xyXG4gICAgaWYgKF9oYXNXaGF0VG9GaWxsKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKCFmaWVsZHMubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmaWVsZHMuc29tZSgoZikgPT4ge1xyXG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5wYXltZW50LmdldChmLm5hbWUpO1xyXG4gICAgICBpZiAoZi50eXBlID09PSBQYXltZW50RmllbGRUeXBlRW51bS5BbW91bnQpIHtcclxuICAgICAgICByZXR1cm4gIWNvbnRyb2wudmFsaWQ7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMucGF5bWVudC5nZXQoZi5uYW1lKS5lbmFibGVkO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRDREVFcnJvcihjb2RlOiBJMThOX0tFWSkge1xyXG4gICAgdGhpcy5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgIHRoaXMuc2V0VmFsaWRhdG9ycygoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLm1ldGhvZE5hbWUgPT09ICdjYXJkJykge1xyXG4gICAgICAgIHJldHVybiB7Y2RlX2Vycm9yOiBjb2RlfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0pO1xyXG4gICAgdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgfVxyXG5cclxuICBkaXN0aW5jdFZhbHVlQ2hhbmdlcygpOiBPYnNlcnZhYmxlPFBhcnRpYWw8eyBbeDogc3RyaW5nXTogYW55IH0+PiB7XHJcbiAgICByZXR1cm4gdGhpcy52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICAgZGVib3VuY2VUaW1lKDMwMCksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2LCBjdXJyKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgIXByZXYgfHxcclxuICAgICAgICAgICFjdXJyIHx8XHJcbiAgICAgICAgICBPYmplY3Qua2V5cyhwcmV2LnBheW1lbnQpLmxlbmd0aCAhPT0gT2JqZWN0LmtleXMoY3Vyci5wYXltZW50KS5sZW5ndGhcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIHByZXYuY291bnRyeSA9PT0gY3Vyci5jb3VudHJ5ICYmXHJcbiAgICAgICAgICBwcmV2Lm1ldGhvZCA9PT0gY3Vyci5tZXRob2QgJiZcclxuICAgICAgICAgIHByZXYuY3VycmVuY3kgPT09IGN1cnIuY3VycmVuY3kgJiZcclxuICAgICAgICAgIE9iamVjdC5rZXlzKHByZXYucGF5bWVudCkuZXZlcnkoXHJcbiAgICAgICAgICAgIChrZXkpID0+IHByZXYucGF5bWVudFtrZXldID09PSBjdXJyLnBheW1lbnRba2V5XSxcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnVuU3Vic2NyaWJlci5uZXh0KCk7XHJcbiAgICB0aGlzLnVuU3Vic2NyaWJlci51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5jYW5jZWxSZXF1ZXN0c1N1YnNjcmliZXIubmV4dCgpO1xyXG4gICAgdGhpcy5jYW5jZWxSZXF1ZXN0c1N1YnNjcmliZXIudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIl19
316
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0b3ItZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVybWluYWwtdGVtcGxhdGUvc3JjL2xpYi9hcHAvcGFnZXMvY29tcG9uZW50cy9jb25zdHJ1Y3Rvci1mb3JtL3NlcnZpY2VzL2NvbnN0cnVjdG9yLWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEcsT0FBTyxFQUFFLGNBQWMsRUFBd0Qsb0JBQW9CLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0UsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRixPQUFPLEVBQUUsb0JBQW9CLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUU3RSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBR2xFLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxTQUFxRDtJQWEvRjtRQUNFLEtBQUssQ0FBQztZQUNKLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUN4RCxNQUFNLEVBQUUsSUFBSSxXQUFXLENBQUMsU0FBUyxFQUFF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QyxJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUMsQ0FBQzs4R0E3VlUsc0JBQXNCO2tIQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgaW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29sbGVjdGlvblR5cGUsIFBheW1lbnRGaWVsZCwgUGF5bWVudEZpZWxkT3B0aW9uc0l0ZW0sIFBheW1lbnRGaWVsZHMsIFBheW1lbnRGaWVsZFR5cGVFbnVtIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgU2Vzc2lvbkRhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9zZXNzaW9uLmRhdGEtc291cmNlJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaXJzdCwgbWFwLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTWV0aG9kSW5mbywgVGVybWluYWxQYXltZW50UHJlcGFyZVJlcXVlc3QgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb2RlZ2VuL21vZGVsL21vZGVscyc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyByZW1vdmVFbXB0eVByb3BzIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL2hlbHBlcnMvcmVtb3ZlLWVtcHR5LXByb3BzXCI7XHJcbmltcG9ydCB7IEkxOE5fS0VZIH0gZnJvbSBcIi4vLi4vLi4vLi4vLi4vaTE4blwiO1xyXG5pbXBvcnQgeyBURVJNSU5BTF9NRVRIT0RfQ09ORklHVVJBVElPTl9GQUNUT1JZIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29uc3QnO1xyXG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vc2VydmljZXMvbG9jYWwtc3RvcmFnZVwiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ29uc3RydWN0b3JGb3JtU2VydmljZSBleHRlbmRzIEZvcm1Hcm91cDx7IFtrZXk6IHN0cmluZ106IEZvcm1Db250cm9sIHwgRm9ybUdyb3VwIH0+IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBwcml2YXRlIHNlc3Npb25EUyA9IGluamVjdChTZXNzaW9uRGF0YVNvdXJjZSk7XHJcbiAgcHJpdmF0ZSBjZCA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJpdmF0ZSBjb25maWd1cmF0aW9uRmFjdG9yeSA9IGluamVjdChURVJNSU5BTF9NRVRIT0RfQ09ORklHVVJBVElPTl9GQUNUT1JZLCB7b3B0aW9uYWw6IHRydWV9KSB8fCAoKG1ldGhvZDogc3RyaW5nLCBkZWZhdWx0Q29uZmlnOiBQYXltZW50RmllbGRzKSA9PiBkZWZhdWx0Q29uZmlnKTtcclxuXHJcbiAgcHJpdmF0ZSBfc3RvcmFnZTogTG9jYWxTdG9yYWdlID0gaW5qZWN0KExvY2FsU3RvcmFnZSk7XHJcbiAgcHJpdmF0ZSBjYW5jZWxSZXF1ZXN0c1N1YnNjcmliZXIgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgdW5TdWJzY3JpYmVyID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBjb25maWc6IFBheW1lbnRGaWVsZHM7XHJcbiAgZmllbGRzOiBQYXltZW50RmllbGRbXSA9IFtdO1xyXG4gIG1hc2tlZFdhbGxldDogc3RyaW5nO1xyXG4gIHJlYWR5ID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoe1xyXG4gICAgICBjb3VudHJ5OiBuZXcgRm9ybUNvbnRyb2wodW5kZWZpbmVkLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgbWV0aG9kOiBuZXcgRm9ybUNvbnRyb2wodW5kZWZpbmVkLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgY3VycmVuY3k6IG5ldyBGb3JtQ29udHJvbCh1bmRlZmluZWQsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG4gICAgICB1c2VyX2N1cnJlbmN5OiBuZXcgRm9ybUNvbnRyb2wodW5kZWZpbmVkLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgcGF5bWVudDogbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1ldGhvZEluZm9Mb2FkaW5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbkRTLmxvYWRpbmdNZXRob2RJbmZvJC5nZXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgY29udGludWVMb2FkZXJPbigpIHtcclxuICAgIHRoaXMuc2Vzc2lvbkRTLmxvYWRpbmdDb25maXJtJC5uZXh0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgY29udGludWVMb2FkZXJPZmYoKSB7XHJcbiAgICB0aGlzLnNlc3Npb25EUy5sb2FkaW5nQ29uZmlybSQubmV4dChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgcGF5bWVudEZvcm1GaWVsZE5hbWVzKCkge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMucGF5bWVudC5jb250cm9scyk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVQYXltZW50Rm9ybUNvbnRyb2xzKCkge1xyXG4gICAgdGhpcy5wYXltZW50Rm9ybUZpZWxkTmFtZXNcclxuICAgICAgLmZvckVhY2goKGNvbnRyb2xOYW1lOiBzdHJpbmcpID0+IHRoaXMucGF5bWVudC5yZW1vdmVDb250cm9sKGNvbnRyb2xOYW1lKSk7XHJcbiAgfVxyXG5cclxuICBpbml0KCkge1xyXG4gICAgdGhpcy5yZWFkeSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uRmFjdG9yeSkge1xyXG4gICAgICB0aGlzLmNvbmZpZyA9IHRoaXMuY29uZmlndXJhdGlvbkZhY3RvcnkoXHJcbiAgICAgICAgdGhpcy5tZXRob2ROYW1lLFxyXG4gICAgICAgIHRoaXMuc2Vzc2lvbkRTLmdldENvbmZpZ3VyYXRpb24odGhpcy5tZXRob2ROYW1lKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb25maWcgPSB0aGlzLnNlc3Npb25EUy5nZXRDb25maWd1cmF0aW9uKHRoaXMubWV0aG9kTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWVsZHMgPSBbLi4udGhpcy5jb25maWcuZmllbGRzXTtcclxuICAgIC8vIHRoYXQgdHJpY2sgZm9yIHotaW5kZXggb3JkZXIgaW4gcGFnZSAocmV2ZXJzZSBhcnJheSArIHJldmVyc2UgZmxleC1kaXJlY3Rpb24pXHJcbiAgICB0aGlzLmZpZWxkcy5yZXZlcnNlKCk7XHJcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uRFNcclxuICAgICAgLmdldE1ldGhvZEluZm8oXHJcbiAgICAgICAgdGhpcy5jdXJyZW5jeS52YWx1ZSxcclxuICAgICAgICB0aGlzLm1ldGhvZC52YWx1ZVxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgobWV0aG9kSW5mbykgPT4gdGhpcy5nZW5lcmF0ZUZpZWxkcyhtZXRob2RJbmZvKSksXHJcbiAgICAgICAgZmlyc3QoKSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5jYW5jZWxSZXF1ZXN0c1N1YnNjcmliZXIpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYW1vdW50RHluYW1pYyA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIGFzeW5jIGdlbmVyYXRlRmllbGRzKG1ldGhvZEluZm86IE1ldGhvZEluZm8pOiBQcm9taXNlPHZvaWQ+ICB7XHJcbiAgICB0aGlzLmZpZWxkc1xyXG4gICAgICAuZm9yRWFjaCgoZmllbGQ6IFBheW1lbnRGaWVsZCkgPT4ge1xyXG4gICAgICAgIGlmICghZmllbGQubmFtZSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjb250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bWJlcj4oe1xyXG4gICAgICAgICAgdmFsdWU6IGZpZWxkLnR5cGUgPT09IFBheW1lbnRGaWVsZFR5cGVFbnVtLklmcmFtZSA/IHVuZGVmaW5lZCA6IG51bGwsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG4gICAgICAgIHRoaXMuYW1vdW50RHluYW1pYyA9IG1ldGhvZEluZm8uYW1vdW50RHluYW1pYztcclxuICAgICAgICBjb25zdCBpc0VkaXRhYmxlID0gIW1ldGhvZEluZm8uYW1vdW50RHluYW1pYyAmJiB0aGlzLmlzQW1vdW50RWRpdGFibGUoKTtcclxuICAgICAgICBmaWVsZC5wbGFjZWhvbGRlciA9IGZpZWxkLnBsYWNlaG9sZGVyIHx8ICcnO1xyXG4gICAgICAgIGlmIChmaWVsZC50eXBlID09PSBQYXltZW50RmllbGRUeXBlRW51bS5BbW91bnQpIHtcclxuICAgICAgICAgIGlmIChtZXRob2RJbmZvLmRlZmF1bHRBbW91bnQgfHwgbWV0aG9kSW5mby5kZWZhdWx0QW1vdW50ID09PSAwKSB7XHJcbiAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobWV0aG9kSW5mby5kZWZhdWx0QW1vdW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghaXNFZGl0YWJsZSkge1xyXG4gICAgICAgICAgICBmaWVsZC5yZWFkb25seSA9IHRydWU7XHJcbiAgICAgICAgICAgIGNvbnRyb2wubWFya0FzRGlydHkoKTtcclxuICAgICAgICAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmaWVsZC5yZWFkb25seSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goKGNvbnRyb2wpID0+ICtjb250cm9sLnZhbHVlID09PSAwID8ge3JlcXVpcmVkOiB0cnVlfSA6IG51bGwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZmllbGQub3B0aW9ucyA9IGZpZWxkLm9wdGlvbnMgfHwge307XHJcbiAgICAgICAgICBmaWVsZC5vcHRpb25zLmN1cnJlbmN5ID0gdGhpcy5jdXJyZW5jeS52YWx1ZTtcclxuICAgICAgICAgIGlmIChtZXRob2RJbmZvLmZlZSkge1xyXG4gICAgICAgICAgICBmaWVsZC5vcHRpb25zLmZlZSA9IG1ldGhvZEluZm8uZmVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZmllbGQub3B0aW9ucy5mZWUgPSAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKG1ldGhvZEluZm8uZml4ZWRGZWUpIHtcclxuICAgICAgICAgICAgZmllbGQub3B0aW9ucy5maXhlZEZlZSA9IG1ldGhvZEluZm8uZml4ZWRGZWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmaWVsZC5vcHRpb25zLmZpeGVkRmVlID0gMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghbWV0aG9kSW5mby5hbW91bnREeW5hbWljICYmIG1ldGhvZEluZm8ubGltaXRzPy5tYXgpIHtcclxuICAgICAgICAgICAgZmllbGQub3B0aW9ucy5tYXggPSBtZXRob2RJbmZvLmxpbWl0cy5tYXg7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkZWxldGUgZmllbGQub3B0aW9ucy5tYXg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIW1ldGhvZEluZm8uYW1vdW50RHluYW1pYyAmJiBtZXRob2RJbmZvLmxpbWl0cz8ubWluKSB7XHJcbiAgICAgICAgICAgIGZpZWxkLm9wdGlvbnMubWluID0gbWV0aG9kSW5mby5saW1pdHMubWluO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZGVsZXRlIGZpZWxkLm9wdGlvbnMubWluO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmllbGQud2FsbGV0ICYmIG1ldGhvZEluZm8uZGVmYXVsdFdhbGxldCkge1xyXG4gICAgICAgICAgY29udHJvbC5zZXRWYWx1ZShtZXRob2RJbmZvLmRlZmF1bHRXYWxsZXQpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobWV0aG9kSW5mby5lbWFpbCAmJiBmaWVsZC50eXBlID09PSBQYXltZW50RmllbGRUeXBlRW51bS5FbWFpbCkge1xyXG4gICAgICAgICAgY29udHJvbC5zZXRWYWx1ZShtZXRob2RJbmZvLmVtYWlsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZpZWxkLnJlcXVpcmUpIHtcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZpZWxkLnBhdHRlcm4pIHtcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4obmV3IFJlZ0V4cChmaWVsZC5wYXR0ZXJuKSkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09IFBheW1lbnRGaWVsZFR5cGVFbnVtLkVtYWlsKSB7XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5lbWFpbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmaWVsZC5vcHRpb25zPy5tYXggJiYgdHlwZW9mIGZpZWxkLm9wdGlvbnM/Lm1heCA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heChmaWVsZC5vcHRpb25zPy5tYXgpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZpZWxkLm9wdGlvbnM/Lm1pbiAmJiB0eXBlb2YgZmllbGQub3B0aW9ucz8ubWluID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluKGZpZWxkLm9wdGlvbnM/Lm1pbikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmllbGQub3B0aW9ucz8ubWF4TGVuZ3RoKSB7XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgoZmllbGQub3B0aW9ucz8ubWF4TGVuZ3RoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmaWVsZC5vcHRpb25zPy5taW5MZW5ndGgpIHtcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aChmaWVsZC5vcHRpb25zPy5taW5MZW5ndGgpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09IFBheW1lbnRGaWVsZFR5cGVFbnVtLkFtb3VudCAmJiBtZXRob2RJbmZvLmFtb3VudER5bmFtaWMpIHtcclxuICAgICAgICAgIHZhbGlkYXRvcnMubGVuZ3RoID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiBmaWVsZC52YWxpZGF0b3IgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChmaWVsZC52YWxpZGF0b3IodGhpcy5wYXltZW50KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICAgICAgICB0aGlzLnBheW1lbnQuYWRkQ29udHJvbChmaWVsZC5uYW1lLCBjb250cm9sKTtcclxuICAgICAgICB0aGlzLmZldGNoQ29sbGVjdGlvbihmaWVsZClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIHRoaXMucmVhZHkgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmZXRjaENvbGxlY3Rpb24oZmllbGQ6IFBheW1lbnRGaWVsZCk6IE9ic2VydmFibGU8UGF5bWVudEZpZWxkT3B0aW9uc0l0ZW1bXT4ge1xyXG4gICAgY29uc3QgRU1QVFlfTElTVCA9IG9mKFtdKS5waXBlKGZpcnN0KCkpO1xyXG4gICAgaWYgKCFmaWVsZC5vcHRpb25zPy5jb2xsZWN0aW9uKSB7XHJcbiAgICAgIHJldHVybiBFTVBUWV9MSVNUO1xyXG4gICAgfVxyXG4gICAgc3dpdGNoIChmaWVsZC5vcHRpb25zLmNvbGxlY3Rpb24pIHtcclxuICAgICAgY2FzZSBDb2xsZWN0aW9uVHlwZS5CYW5rczpcclxuICAgICAgICBmaWVsZC5vcHRpb25zLml0ZW1zID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvbkRTXHJcbiAgICAgICAgICAuZ2V0QmFua3ModGhpcy5tZXRob2QudmFsdWUpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgbWFwKCh7ZGF0YX0pID0+IHtcclxuICAgICAgICAgICAgICBmaWVsZC5vcHRpb25zLml0ZW1zID0gZGF0YTtcclxuICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcbiAgICAgIGNhc2UgQ29sbGVjdGlvblR5cGUuRG9jdW1lbnRzOlxyXG4gICAgICAgIGZpZWxkLm9wdGlvbnMuaXRlbXMgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXNzaW9uRFNcclxuICAgICAgICAgIC5nZXREb2N1bWVudHModGhpcy5tZXRob2QudmFsdWUpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgbWFwKCh7ZGF0YX0pID0+IHtcclxuICAgICAgICAgICAgICBmaWVsZC5vcHRpb25zLml0ZW1zID0gZGF0YTtcclxuICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIEVNUFRZX0xJU1Q7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgY291bnRyeSgpOiBBYnN0cmFjdENvbnRyb2wge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdjb3VudHJ5JykgYXMgQWJzdHJhY3RDb250cm9sO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1ldGhvZCgpOiBBYnN0cmFjdENvbnRyb2wge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdtZXRob2QnKSBhcyBBYnN0cmFjdENvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBnZXQgY3VycmVuY3koKTogRm9ybUNvbnRyb2wge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdjdXJyZW5jeScpIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHVzZXJDdXJyZW5jeSgpOiBGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXQoJ3VzZXJfY3VycmVuY3knKSBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIGdldCBwYXltZW50KCk6IEZvcm1Hcm91cCB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXQoJ3BheW1lbnQnKSBhcyBGb3JtR3JvdXA7XHJcbiAgfVxyXG5cclxuICBnZXQgYW1vdW50KCk6IEFic3RyYWN0Q29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5wYXltZW50LmdldCh0aGlzLmZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkLnR5cGUgPT09IFBheW1lbnRGaWVsZFR5cGVFbnVtLkFtb3VudCkubmFtZSkgYXMgQWJzdHJhY3RDb250cm9sO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBtZXRob2ROYW1lKCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMubWV0aG9kLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbkRTLmdldFR5cGVOYW1lQnlJZCh0aGlzLm1ldGhvZC52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRUeXBlTmFtZUJ5SWQoaWQpIHtcclxuICAgIHJldHVybiB0aGlzLnNlc3Npb25EUy5nZXRUeXBlTmFtZUJ5SWQoaWQpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZURlZmF1bHRDb3VudHJ5KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3RvcmFnZS5zYXZlRGVmYXVsdENvdW50cnkodGhpcy5jb3VudHJ5LnZhbHVlKTtcclxuICB9XHJcblxyXG4gIHNhdmVEZWZhdWx0TWV0aG9kTmFtZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0b3JhZ2Uuc2F2ZURlZmF1bHRNZXRob2ROYW1lKHRoaXMubWV0aG9kTmFtZSk7XHJcbiAgfVxyXG5cclxuICBzYXZlRGVmYXVsdEN1cnJlbmN5KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3RvcmFnZS5zYXZlRGVmYXVsdEN1cnJlbmN5KHRoaXMuY3VycmVuY3kudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRlZmF1bHRDb3VudHJ5KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RvcmFnZS5kZWZhdWx0Q291bnRyeTtcclxuICB9XHJcblxyXG4gIGdldCBkZWZhdWx0TWV0aG9kTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N0b3JhZ2UuZGVmYXVsdE1ldGhvZE5hbWU7XHJcbiAgfVxyXG5cclxuICBnZXQgZGVmYXVsdEN1cnJlbmN5KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RvcmFnZS5kZWZhdWx0Q3VycmVuY3k7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuY2VsUmVxdWVzdHMoKSB7XHJcbiAgICB0aGlzLmNhbmNlbFJlcXVlc3RzU3Vic2NyaWJlci5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UGF5bWVudFZhbHVlKCkge1xyXG4gICAgY29uc3QgZGF0YTogVGVybWluYWxQYXltZW50UHJlcGFyZVJlcXVlc3QgPSB7XHJcbiAgICAgIHR5cGVJZDogdGhpcy5tZXRob2QudmFsdWUsXHJcbiAgICAgIGN1cnJlbmN5OiB0aGlzLmN1cnJlbmN5LnZhbHVlLFxyXG4gICAgICB0eXBlOiB0aGlzLmdldFR5cGVOYW1lQnlJZCh0aGlzLm1ldGhvZC52YWx1ZSksXHJcbiAgICAgIHVzZXJfY3VycmVuY3k6IHRoaXMudXNlckN1cnJlbmN5LnZhbHVlLFxyXG4gICAgICAuLi50aGlzLnBheW1lbnQuZ2V0UmF3VmFsdWUoKVxyXG4gICAgfVxyXG4gICAgdGhpcy5maWVsZHMuZm9yRWFjaCgoZmllbGQ6IFBheW1lbnRGaWVsZCkgPT4ge1xyXG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gUGF5bWVudEZpZWxkVHlwZUVudW0uQW1vdW50KSB7XHJcbiAgICAgICAgZGF0YVtmaWVsZC5uYW1lXSA9ICtkYXRhW2ZpZWxkLm5hbWVdO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiByZW1vdmVFbXB0eVByb3BzKGRhdGEpO1xyXG4gIH1cclxuICB1cGRhdGVWYWx1ZUFuZFZhbGlkaXR5SWZyYW1lcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZmllbGRzLmZvckVhY2goKHsgbmFtZSwgdHlwZSB9KSA9PiB7XHJcbiAgICAgIGlmICh0eXBlID09PSBQYXltZW50RmllbGRUeXBlRW51bS5JZnJhbWUpIHtcclxuICAgICAgICB0aGlzLnBheW1lbnQuZ2V0KG5hbWUpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCByZWFkeUlmcmFtZXNTdWJtaXQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5maWVsZHNcclxuICAgICAgLmZpbHRlcigoeyB0eXBlIH0pID0+IHR5cGUgIT09IFBheW1lbnRGaWVsZFR5cGVFbnVtLklmcmFtZSlcclxuICAgICAgLmV2ZXJ5KCh7IG5hbWUsIHR5cGUgfSkgPT4gIXRoaXMucGF5bWVudC5nZXQobmFtZSkuaW52YWxpZCk7XHJcbiAgfVxyXG5cclxuICBpc0Ftb3VudEVkaXRhYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbkRTLmdldFNlc3Npb25WYWx1ZSgpLmFtb3VudEVkaXRhYmxlXHJcbiAgfVxyXG5cclxuICBoYXNXaGF0VG9GaWxsKCkge1xyXG4gICAgY29uc3QgX2hhc1doYXRUb0ZpbGwgPSB0aGlzLmNvdW50cnkuZW5hYmxlZCB8fCB0aGlzLm1ldGhvZC5lbmFibGVkIHx8IHRoaXMuY3VycmVuY3kuZW5hYmxlZCB8fCB0aGlzLmlzQW1vdW50RWRpdGFibGUoKTtcclxuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZmllbGRzO1xyXG4gICAgaWYgKF9oYXNXaGF0VG9GaWxsKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKCFmaWVsZHMubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmaWVsZHMuc29tZSgoZikgPT4ge1xyXG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5wYXltZW50LmdldChmLm5hbWUpO1xyXG4gICAgICBpZiAoZi50eXBlID09PSBQYXltZW50RmllbGRUeXBlRW51bS5BbW91bnQpIHtcclxuICAgICAgICByZXR1cm4gIWNvbnRyb2wudmFsaWQ7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMucGF5bWVudC5nZXQoZi5uYW1lKS5lbmFibGVkO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRDREVFcnJvcihjb2RlOiBJMThOX0tFWSkge1xyXG4gICAgdGhpcy5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgIHRoaXMuc2V0VmFsaWRhdG9ycygoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLm1ldGhvZE5hbWUgPT09ICdjYXJkJykge1xyXG4gICAgICAgIHJldHVybiB7Y2RlX2Vycm9yOiBjb2RlfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0pO1xyXG4gICAgdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgfVxyXG5cclxuICBkaXN0aW5jdFZhbHVlQ2hhbmdlcygpOiBPYnNlcnZhYmxlPFBhcnRpYWw8eyBbeDogc3RyaW5nXTogYW55IH0+PiB7XHJcbiAgICByZXR1cm4gdGhpcy52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICAgZGVib3VuY2VUaW1lKDMwMCksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2LCBjdXJyKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgIXByZXYgfHxcclxuICAgICAgICAgICFjdXJyIHx8XHJcbiAgICAgICAgICBPYmplY3Qua2V5cyhwcmV2LnBheW1lbnQpLmxlbmd0aCAhPT0gT2JqZWN0LmtleXMoY3Vyci5wYXltZW50KS5sZW5ndGhcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIHByZXYuY291bnRyeSA9PT0gY3Vyci5jb3VudHJ5ICYmXHJcbiAgICAgICAgICBwcmV2Lm1ldGhvZCA9PT0gY3Vyci5tZXRob2QgJiZcclxuICAgICAgICAgIHByZXYuY3VycmVuY3kgPT09IGN1cnIuY3VycmVuY3kgJiZcclxuICAgICAgICAgIHByZXYucGF5bWVudC5hbW91bnQgPT09IGN1cnIucGF5bWVudC5hbW91bnRcclxuICAgICAgICApO1xyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnVuU3Vic2NyaWJlci5uZXh0KCk7XHJcbiAgICB0aGlzLnVuU3Vic2NyaWJlci51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5jYW5jZWxSZXF1ZXN0c1N1YnNjcmliZXIubmV4dCgpO1xyXG4gICAgdGhpcy5jYW5jZWxSZXF1ZXN0c1N1YnNjcmliZXIudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -215,7 +215,7 @@ export class TerminalLayoutComponent {
215
215
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: TerminalLayoutComponent, isStandalone: true, selector: "app-terminal-layout", providers: [
216
216
  SessionDataSource,
217
217
  CurrencyPipe
218
- ], viewQueries: [{ propertyName: "scrollComponent", first: true, predicate: ["scrollComponent"], descendants: true }], ngImport: i0, template: "<ng-scrollbar appearance=\"compact\">\r\n <div class=\"terminal-layout\">\r\n <section class=\"terminal\">\r\n <div class=\"terminal__content\">\r\n <header class=\"terminal__header\">\r\n <i class=\"terminal__header-logo\"\r\n [class]=\"logoClass\"></i>\r\n <div class=\"terminal__header-lang\">\r\n @if (hasChoice) {\r\n <app-terminal-lang-switcher (langChange)=\"changeLang()\"\r\n [tabIndex]=\"1\"></app-terminal-lang-switcher>\r\n }\r\n </div>\r\n </header>\r\n <div class=\"terminal__form\">\r\n @if (sessionDS.loading$ | async) {\r\n <div class=\"trm-skeleton-group\">\r\n <gm-skeleton [count]=\"1\" [size]=\"120\"></gm-skeleton>\r\n <gm-skeleton [count]=\"4\" [gap]=\"20\" [size]=\"80\"></gm-skeleton>\r\n <gm-skeleton [count]=\"2\" [gap]=\"10\" [size]=\"48\"></gm-skeleton>\r\n </div>\r\n } @else {\r\n @if (projectName) {\r\n <div class=\"terminal__info\">\r\n <h5 class=\"terminal__info__name\"> {{ projectName }} </h5>\r\n @if (description) {\r\n <p class=\"terminal__info__desc\"> {{ description }} </p>\r\n }\r\n </div>\r\n }\r\n @if (step !== TERMINAL_STEP.Status && !hasStatusError) {\r\n <app-constructor-form\r\n [feeLoading]=\"feeLoading\"\r\n [feeOptions]=\"feeOptions\"\r\n [loading]=\"(sessionDS.loadingConfirm$ | async)\"\r\n [step]=\"step\"\r\n [types]=\"types\"\r\n [currency]=\"currency\"\r\n [response]=\"data\"\r\n [error]=\"statusText\"\r\n (prepare)=\"prepare($event)\"\r\n (onPaymentChanged)=\"checkFatalError(); calculateFee($event)\"\r\n (back)=\"back()\"\r\n [canReturnToProject]=\"sessionDS.canReturnToProject\"\r\n (confirm)=\"confirm()\"\r\n [tabIndex]=\"2\"></app-constructor-form>\r\n } @else {\r\n <app-constructor-status class=\"terminal__status\"\r\n [failed]=\"hasStatusError\"\r\n [message]=\"statusText ? (statusText | trans) : ''\"\r\n [backUrl]=\"returnBackUrl\"\r\n ></app-constructor-status>\r\n }\r\n }\r\n\r\n </div>\r\n </div>\r\n </section>\r\n <footer class=\"terminal-footer\">\r\n <i class=\"terminal-footer__logo\"></i>\r\n <p class=\"terminal-footer__txt\">\r\n {{ footerText }}\r\n </p>\r\n </footer>\r\n </div>\r\n</ng-scrollbar>\r\n", styles: [":host{display:flex;flex-direction:column;height:100vh;box-sizing:border-box}.terminal{box-sizing:border-box;width:100%;max-width:528px;min-width:320px;padding:0 10px}.terminal-layout{min-height:100vh;padding:42px 0 84px;display:flex;flex-direction:column;gap:42px;justify-content:flex-start;align-items:center}.terminal-footer{flex:auto 1 0;display:flex;flex-direction:column;gap:24px;justify-content:flex-end;align-items:center}.terminal-footer__txt{font-weight:400;font-size:14px;line-height:18px;color:var(--color-base-350);margin:0}.terminal__content{box-sizing:border-box;margin:auto;padding:20px;width:100%;background:#fff;border-radius:16px;display:flex;flex-direction:column;gap:32px;justify-content:flex-start;align-items:stretch}@media (min-width: 768px){.terminal__content{padding:32px}}.terminal__header{display:flex;flex-direction:row;gap:0;justify-content:flex-start;align-items:center}.terminal__header-lang{margin-left:auto}.terminal__form{display:flex;flex-direction:column;gap:24px;justify-content:flex-start;align-items:stretch;width:100%}.terminal__info{background:#f5f5f5;border-radius:16px;padding:20px 24px;display:flex;flex-direction:column;gap:10px;justify-content:flex-start;align-items:flex-start}.terminal__info__name{margin:0;font-weight:500;font-size:16px;line-height:20px;color:#000}.terminal__info__desc{margin:0;font-weight:400;font-size:15px;line-height:22px;color:var(--color-base-350)}.terminal__status{margin-top:8px}.terminal .trm-skeleton-group{display:flex;flex-direction:column;gap:32px;justify-content:flex-start;align-items:stretch}.terminal .trm-skeleton-group__form{gap:20px}.terminal .trm-skeleton-group__form .loader,.terminal .trm-skeleton-group__form .skeleton-loader{height:80px}.terminal .trm-skeleton-group__header .loader,.terminal .trm-skeleton-group__header .skeleton-loader{height:120px}.terminal .trm-skeleton-group__actions{gap:10px}.terminal .trm-skeleton-group__actions .loader,.terminal .trm-skeleton-group__actions .skeleton-loader{height:48px}\n"], dependencies: [{ kind: "component", type: NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }, { kind: "component", type: TerminalLangSwitcherComponent, selector: "app-terminal-lang-switcher", inputs: ["loading", "tabIndex"], outputs: ["langChange"] }, { kind: "component", type: ConstructorFormComponent, selector: "app-constructor-form", inputs: ["step", "error", "response", "feeLoading", "feeOptions", "currency", "userCurrency", "loading", "types", "canReturnToProject", "tabIndex"], outputs: ["amountChanged", "back", "prepare", "confirm", "onPaymentChanged"] }, { kind: "component", type: ConstructorStatusComponent, selector: "app-constructor-status", inputs: ["failed", "inProgress", "animation", "message", "failTitle", "progressTitle", "successTitle", "tabIndex", "backUrl", "backUrlTitle", "hasSupportHint"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: TranslateByKeyPipe, name: "trans" }, { kind: "component", type: GmSkeletonComponent, selector: "gm-skeleton", inputs: ["shape", "orientation", "count", "size", "gap"] }] }); }
218
+ ], viewQueries: [{ propertyName: "scrollComponent", first: true, predicate: ["scrollComponent"], descendants: true }], ngImport: i0, template: "<ng-scrollbar appearance=\"compact\">\r\n <div class=\"terminal-layout\">\r\n <section class=\"terminal\">\r\n <div class=\"terminal__content\">\r\n <header class=\"terminal__header\">\r\n <i class=\"terminal__header-logo\"\r\n [class]=\"logoClass\"></i>\r\n <div class=\"terminal__header-lang\">\r\n @if (hasChoice) {\r\n <app-terminal-lang-switcher (langChange)=\"changeLang()\"\r\n [tabIndex]=\"1\"></app-terminal-lang-switcher>\r\n }\r\n </div>\r\n </header>\r\n <div class=\"terminal__form\">\r\n @if (sessionDS.loading$ | async) {\r\n <div class=\"trm-skeleton-group\">\r\n <gm-skeleton [count]=\"1\" [size]=\"120\"></gm-skeleton>\r\n <gm-skeleton [count]=\"4\" [gap]=\"20\" [size]=\"80\"></gm-skeleton>\r\n <gm-skeleton [count]=\"2\" [gap]=\"10\" [size]=\"48\"></gm-skeleton>\r\n </div>\r\n } @else {\r\n @if (projectName) {\r\n <div class=\"terminal__info\">\r\n <h5 class=\"terminal__info__name\"> {{ projectName }} </h5>\r\n @if (description) {\r\n <p class=\"terminal__info__desc\"> {{ description }} </p>\r\n }\r\n </div>\r\n }\r\n @if (step !== TERMINAL_STEP.Status && !hasStatusError) {\r\n <app-constructor-form\r\n [feeLoading]=\"feeLoading\"\r\n [feeOptions]=\"feeOptions\"\r\n [loading]=\"sessionDS.loadingConfirm$ | async\"\r\n [step]=\"step\"\r\n [types]=\"types\"\r\n [currency]=\"currency\"\r\n [response]=\"data\"\r\n [error]=\"statusText\"\r\n (prepare)=\"prepare($event)\"\r\n (onPaymentChanged)=\"checkFatalError(); calculateFee($event)\"\r\n (back)=\"back()\"\r\n [canReturnToProject]=\"sessionDS.canReturnToProject\"\r\n (confirm)=\"confirm()\"\r\n [tabIndex]=\"2\"></app-constructor-form>\r\n } @else {\r\n <app-constructor-status class=\"terminal__status\"\r\n [failed]=\"hasStatusError\"\r\n [message]=\"statusText ? (statusText | trans) : ''\"\r\n [backUrl]=\"returnBackUrl\"\r\n ></app-constructor-status>\r\n }\r\n }\r\n\r\n </div>\r\n </div>\r\n </section>\r\n <footer class=\"terminal-footer\">\r\n <i class=\"terminal-footer__logo\"></i>\r\n <p class=\"terminal-footer__txt\">\r\n {{ footerText }}\r\n </p>\r\n </footer>\r\n </div>\r\n</ng-scrollbar>\r\n", styles: [":host{display:flex;flex-direction:column;height:100vh;box-sizing:border-box}.terminal{box-sizing:border-box;width:100%;max-width:528px;min-width:320px;padding:0 10px}.terminal-layout{min-height:100vh;padding:42px 0 84px;display:flex;flex-direction:column;gap:42px;justify-content:flex-start;align-items:center}.terminal-footer{flex:auto 1 0;display:flex;flex-direction:column;gap:24px;justify-content:flex-end;align-items:center}.terminal-footer__txt{font-weight:400;font-size:14px;line-height:18px;color:var(--color-base-350);margin:0}.terminal__content{box-sizing:border-box;margin:auto;padding:20px;width:100%;background:#fff;border-radius:16px;display:flex;flex-direction:column;gap:32px;justify-content:flex-start;align-items:stretch}@media (min-width: 768px){.terminal__content{padding:32px}}.terminal__header{display:flex;flex-direction:row;gap:0;justify-content:flex-start;align-items:center}.terminal__header-lang{margin-left:auto}.terminal__form{display:flex;flex-direction:column;gap:24px;justify-content:flex-start;align-items:stretch;width:100%}.terminal__info{background:#f5f5f5;border-radius:16px;padding:20px 24px;display:flex;flex-direction:column;gap:10px;justify-content:flex-start;align-items:flex-start}.terminal__info__name{margin:0;font-weight:500;font-size:16px;line-height:20px;color:#000}.terminal__info__desc{margin:0;font-weight:400;font-size:15px;line-height:22px;color:var(--color-base-350)}.terminal__status{margin-top:8px}.terminal .trm-skeleton-group{display:flex;flex-direction:column;gap:32px;justify-content:flex-start;align-items:stretch}.terminal .trm-skeleton-group__form{gap:20px}.terminal .trm-skeleton-group__form .loader,.terminal .trm-skeleton-group__form .skeleton-loader{height:80px}.terminal .trm-skeleton-group__header .loader,.terminal .trm-skeleton-group__header .skeleton-loader{height:120px}.terminal .trm-skeleton-group__actions{gap:10px}.terminal .trm-skeleton-group__actions .loader,.terminal .trm-skeleton-group__actions .skeleton-loader{height:48px}\n"], dependencies: [{ kind: "component", type: NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }, { kind: "component", type: TerminalLangSwitcherComponent, selector: "app-terminal-lang-switcher", inputs: ["loading", "tabIndex"], outputs: ["langChange"] }, { kind: "component", type: ConstructorFormComponent, selector: "app-constructor-form", inputs: ["step", "error", "response", "feeLoading", "feeOptions", "currency", "userCurrency", "loading", "types", "canReturnToProject", "tabIndex"], outputs: ["amountChanged", "back", "prepare", "confirm", "onPaymentChanged"] }, { kind: "component", type: ConstructorStatusComponent, selector: "app-constructor-status", inputs: ["failed", "inProgress", "animation", "message", "failTitle", "progressTitle", "successTitle", "tabIndex", "backUrl", "backUrlTitle", "hasSupportHint"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: TranslateByKeyPipe, name: "trans" }, { kind: "component", type: GmSkeletonComponent, selector: "gm-skeleton", inputs: ["shape", "orientation", "count", "size", "gap"] }] }); }
219
219
  }
220
220
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TerminalLayoutComponent, decorators: [{
221
221
  type: Component,
@@ -228,9 +228,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
228
228
  ConstructorFormComponent, ConstructorStatusComponent,
229
229
  AsyncPipe,
230
230
  TranslateByKeyPipe, GmSkeletonComponent
231
- ], template: "<ng-scrollbar appearance=\"compact\">\r\n <div class=\"terminal-layout\">\r\n <section class=\"terminal\">\r\n <div class=\"terminal__content\">\r\n <header class=\"terminal__header\">\r\n <i class=\"terminal__header-logo\"\r\n [class]=\"logoClass\"></i>\r\n <div class=\"terminal__header-lang\">\r\n @if (hasChoice) {\r\n <app-terminal-lang-switcher (langChange)=\"changeLang()\"\r\n [tabIndex]=\"1\"></app-terminal-lang-switcher>\r\n }\r\n </div>\r\n </header>\r\n <div class=\"terminal__form\">\r\n @if (sessionDS.loading$ | async) {\r\n <div class=\"trm-skeleton-group\">\r\n <gm-skeleton [count]=\"1\" [size]=\"120\"></gm-skeleton>\r\n <gm-skeleton [count]=\"4\" [gap]=\"20\" [size]=\"80\"></gm-skeleton>\r\n <gm-skeleton [count]=\"2\" [gap]=\"10\" [size]=\"48\"></gm-skeleton>\r\n </div>\r\n } @else {\r\n @if (projectName) {\r\n <div class=\"terminal__info\">\r\n <h5 class=\"terminal__info__name\"> {{ projectName }} </h5>\r\n @if (description) {\r\n <p class=\"terminal__info__desc\"> {{ description }} </p>\r\n }\r\n </div>\r\n }\r\n @if (step !== TERMINAL_STEP.Status && !hasStatusError) {\r\n <app-constructor-form\r\n [feeLoading]=\"feeLoading\"\r\n [feeOptions]=\"feeOptions\"\r\n [loading]=\"(sessionDS.loadingConfirm$ | async)\"\r\n [step]=\"step\"\r\n [types]=\"types\"\r\n [currency]=\"currency\"\r\n [response]=\"data\"\r\n [error]=\"statusText\"\r\n (prepare)=\"prepare($event)\"\r\n (onPaymentChanged)=\"checkFatalError(); calculateFee($event)\"\r\n (back)=\"back()\"\r\n [canReturnToProject]=\"sessionDS.canReturnToProject\"\r\n (confirm)=\"confirm()\"\r\n [tabIndex]=\"2\"></app-constructor-form>\r\n } @else {\r\n <app-constructor-status class=\"terminal__status\"\r\n [failed]=\"hasStatusError\"\r\n [message]=\"statusText ? (statusText | trans) : ''\"\r\n [backUrl]=\"returnBackUrl\"\r\n ></app-constructor-status>\r\n }\r\n }\r\n\r\n </div>\r\n </div>\r\n </section>\r\n <footer class=\"terminal-footer\">\r\n <i class=\"terminal-footer__logo\"></i>\r\n <p class=\"terminal-footer__txt\">\r\n {{ footerText }}\r\n </p>\r\n </footer>\r\n </div>\r\n</ng-scrollbar>\r\n", styles: [":host{display:flex;flex-direction:column;height:100vh;box-sizing:border-box}.terminal{box-sizing:border-box;width:100%;max-width:528px;min-width:320px;padding:0 10px}.terminal-layout{min-height:100vh;padding:42px 0 84px;display:flex;flex-direction:column;gap:42px;justify-content:flex-start;align-items:center}.terminal-footer{flex:auto 1 0;display:flex;flex-direction:column;gap:24px;justify-content:flex-end;align-items:center}.terminal-footer__txt{font-weight:400;font-size:14px;line-height:18px;color:var(--color-base-350);margin:0}.terminal__content{box-sizing:border-box;margin:auto;padding:20px;width:100%;background:#fff;border-radius:16px;display:flex;flex-direction:column;gap:32px;justify-content:flex-start;align-items:stretch}@media (min-width: 768px){.terminal__content{padding:32px}}.terminal__header{display:flex;flex-direction:row;gap:0;justify-content:flex-start;align-items:center}.terminal__header-lang{margin-left:auto}.terminal__form{display:flex;flex-direction:column;gap:24px;justify-content:flex-start;align-items:stretch;width:100%}.terminal__info{background:#f5f5f5;border-radius:16px;padding:20px 24px;display:flex;flex-direction:column;gap:10px;justify-content:flex-start;align-items:flex-start}.terminal__info__name{margin:0;font-weight:500;font-size:16px;line-height:20px;color:#000}.terminal__info__desc{margin:0;font-weight:400;font-size:15px;line-height:22px;color:var(--color-base-350)}.terminal__status{margin-top:8px}.terminal .trm-skeleton-group{display:flex;flex-direction:column;gap:32px;justify-content:flex-start;align-items:stretch}.terminal .trm-skeleton-group__form{gap:20px}.terminal .trm-skeleton-group__form .loader,.terminal .trm-skeleton-group__form .skeleton-loader{height:80px}.terminal .trm-skeleton-group__header .loader,.terminal .trm-skeleton-group__header .skeleton-loader{height:120px}.terminal .trm-skeleton-group__actions{gap:10px}.terminal .trm-skeleton-group__actions .loader,.terminal .trm-skeleton-group__actions .skeleton-loader{height:48px}\n"] }]
231
+ ], template: "<ng-scrollbar appearance=\"compact\">\r\n <div class=\"terminal-layout\">\r\n <section class=\"terminal\">\r\n <div class=\"terminal__content\">\r\n <header class=\"terminal__header\">\r\n <i class=\"terminal__header-logo\"\r\n [class]=\"logoClass\"></i>\r\n <div class=\"terminal__header-lang\">\r\n @if (hasChoice) {\r\n <app-terminal-lang-switcher (langChange)=\"changeLang()\"\r\n [tabIndex]=\"1\"></app-terminal-lang-switcher>\r\n }\r\n </div>\r\n </header>\r\n <div class=\"terminal__form\">\r\n @if (sessionDS.loading$ | async) {\r\n <div class=\"trm-skeleton-group\">\r\n <gm-skeleton [count]=\"1\" [size]=\"120\"></gm-skeleton>\r\n <gm-skeleton [count]=\"4\" [gap]=\"20\" [size]=\"80\"></gm-skeleton>\r\n <gm-skeleton [count]=\"2\" [gap]=\"10\" [size]=\"48\"></gm-skeleton>\r\n </div>\r\n } @else {\r\n @if (projectName) {\r\n <div class=\"terminal__info\">\r\n <h5 class=\"terminal__info__name\"> {{ projectName }} </h5>\r\n @if (description) {\r\n <p class=\"terminal__info__desc\"> {{ description }} </p>\r\n }\r\n </div>\r\n }\r\n @if (step !== TERMINAL_STEP.Status && !hasStatusError) {\r\n <app-constructor-form\r\n [feeLoading]=\"feeLoading\"\r\n [feeOptions]=\"feeOptions\"\r\n [loading]=\"sessionDS.loadingConfirm$ | async\"\r\n [step]=\"step\"\r\n [types]=\"types\"\r\n [currency]=\"currency\"\r\n [response]=\"data\"\r\n [error]=\"statusText\"\r\n (prepare)=\"prepare($event)\"\r\n (onPaymentChanged)=\"checkFatalError(); calculateFee($event)\"\r\n (back)=\"back()\"\r\n [canReturnToProject]=\"sessionDS.canReturnToProject\"\r\n (confirm)=\"confirm()\"\r\n [tabIndex]=\"2\"></app-constructor-form>\r\n } @else {\r\n <app-constructor-status class=\"terminal__status\"\r\n [failed]=\"hasStatusError\"\r\n [message]=\"statusText ? (statusText | trans) : ''\"\r\n [backUrl]=\"returnBackUrl\"\r\n ></app-constructor-status>\r\n }\r\n }\r\n\r\n </div>\r\n </div>\r\n </section>\r\n <footer class=\"terminal-footer\">\r\n <i class=\"terminal-footer__logo\"></i>\r\n <p class=\"terminal-footer__txt\">\r\n {{ footerText }}\r\n </p>\r\n </footer>\r\n </div>\r\n</ng-scrollbar>\r\n", styles: [":host{display:flex;flex-direction:column;height:100vh;box-sizing:border-box}.terminal{box-sizing:border-box;width:100%;max-width:528px;min-width:320px;padding:0 10px}.terminal-layout{min-height:100vh;padding:42px 0 84px;display:flex;flex-direction:column;gap:42px;justify-content:flex-start;align-items:center}.terminal-footer{flex:auto 1 0;display:flex;flex-direction:column;gap:24px;justify-content:flex-end;align-items:center}.terminal-footer__txt{font-weight:400;font-size:14px;line-height:18px;color:var(--color-base-350);margin:0}.terminal__content{box-sizing:border-box;margin:auto;padding:20px;width:100%;background:#fff;border-radius:16px;display:flex;flex-direction:column;gap:32px;justify-content:flex-start;align-items:stretch}@media (min-width: 768px){.terminal__content{padding:32px}}.terminal__header{display:flex;flex-direction:row;gap:0;justify-content:flex-start;align-items:center}.terminal__header-lang{margin-left:auto}.terminal__form{display:flex;flex-direction:column;gap:24px;justify-content:flex-start;align-items:stretch;width:100%}.terminal__info{background:#f5f5f5;border-radius:16px;padding:20px 24px;display:flex;flex-direction:column;gap:10px;justify-content:flex-start;align-items:flex-start}.terminal__info__name{margin:0;font-weight:500;font-size:16px;line-height:20px;color:#000}.terminal__info__desc{margin:0;font-weight:400;font-size:15px;line-height:22px;color:var(--color-base-350)}.terminal__status{margin-top:8px}.terminal .trm-skeleton-group{display:flex;flex-direction:column;gap:32px;justify-content:flex-start;align-items:stretch}.terminal .trm-skeleton-group__form{gap:20px}.terminal .trm-skeleton-group__form .loader,.terminal .trm-skeleton-group__form .skeleton-loader{height:80px}.terminal .trm-skeleton-group__header .loader,.terminal .trm-skeleton-group__header .skeleton-loader{height:120px}.terminal .trm-skeleton-group__actions{gap:10px}.terminal .trm-skeleton-group__actions .loader,.terminal .trm-skeleton-group__actions .skeleton-loader{height:48px}\n"] }]
232
232
  }], ctorParameters: () => [], propDecorators: { scrollComponent: [{
233
233
  type: ViewChild,
234
234
  args: ['scrollComponent']
235
235
  }] } });
236
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYWwtbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rlcm1pbmFsLXRlbXBsYXRlL3NyYy9saWIvYXBwL3BhZ2VzL2NvbXBvbmVudHMvdGVybWluYWwtbGF5b3V0L3Rlcm1pbmFsLWxheW91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZXJtaW5hbC10ZW1wbGF0ZS9zcmMvbGliL2FwcC9wYWdlcy9jb21wb25lbnRzL3Rlcm1pbmFsLWxheW91dC90ZXJtaW5hbC1sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU9uRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQXVCLFlBQVksRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFD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LFNBQVMsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFLTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7OEdBalBVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLGtFQWJ2QjtZQUNULGlCQUFpQjtZQUNqQixZQUFZO1NBQ2IsOElDckNILDB0RkFrRUEsa2hFRDFCSSxXQUFXLDRHQUNYLDZCQUE2QixpSUFDN0Isd0JBQXdCLG9TQUFFLDBCQUEwQiwrTkFDcEQsU0FBUyx5Q0FDVCxrQkFBa0IsOENBQUUsbUJBQW1COzsyRkFHOUIsdUJBQXVCO2tCQWpCbkMsU0FBUzsrQkFDRSxxQkFBcUIsYUFHcEI7d0JBQ1QsaUJBQWlCO3dCQUNqQixZQUFZO3FCQUNiLGNBQ1csSUFBSSxXQUNQO3dCQUNQLFdBQVc7d0JBQ1gsNkJBQTZCO3dCQUM3Qix3QkFBd0IsRUFBRSwwQkFBMEI7d0JBQ3BELFNBQVM7d0JBQ1Qsa0JBQWtCLEVBQUUsbUJBQW1CO3FCQUN4Qzt3REE4QjZCLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgaW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgTWV0aG9kVHlwZSxcclxuICBUZXJtaW5hbFBheW1lbnRDb25maXJtUmVzcG9uc2UsXHJcbiAgVGVybWluYWxQYXltZW50UHJlcGFyZVJlcXVlc3QsXHJcbiAgVGVybWluYWxQYXltZW50UHJlcGFyZVJlc3BvbnNlXHJcbn0gZnJvbSAnLi4vLi4vLi4vLi4vY29kZWdlbi9tb2RlbC9tb2RlbHMnO1xyXG5pbXBvcnQgeyBTZXNzaW9uRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3Nlc3Npb24uZGF0YS1zb3VyY2UnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaW5hbGl6ZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTG9hZGVyLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7IFBheW1lbnRGaWVsZE9wdGlvbnMsIFRlcm1pbmFsU3RlcCB9IGZyb20gJy4vLi4vLi4vLi4vcGFnZXMvY29tcG9uZW50cy9jb25zdHJ1Y3Rvci1mb3JtL21vZGVscyc7XHJcbmltcG9ydCB7IEFwaUVycm9yc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hcGktZXJyb3JzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBc3luY1BpcGUsIEN1cnJlbmN5UGlwZSwgRE9DVU1FTlQsIExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmdTY3JvbGxiYXIgfSBmcm9tICduZ3gtc2Nyb2xsYmFyJztcclxuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgZ2V0STE4S2V5IH0gZnJvbSAnLi8uLi8uLi8uLi9pMThuL2tleXMnO1xyXG5pbXBvcnQgeyBJMThOX0tFWSB9IGZyb20gJy4vLi4vLi4vLi4vaTE4bic7XHJcbmltcG9ydCB7IFRFUk1JTkFMX1ZFUlNJT05fU0VSVklDRV9UT0tFTiB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbnN0JztcclxuaW1wb3J0IHsgVmVyc2lvblNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvdmVyc2lvbi1zZXJ2aWNlLWludGVyZmFjZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUxhbmdTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHtcclxuICBUZXJtaW5hbExhbmdTd2l0Y2hlckNvbXBvbmVudFxyXG59IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzL3Rlcm1pbmFsLWxhbmctc3dpdGNoZXIvdGVybWluYWwtbGFuZy1zd2l0Y2hlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb25zdHJ1Y3RvckZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9jb25zdHJ1Y3Rvci1mb3JtL2NvbnN0cnVjdG9yLWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29uc3RydWN0b3JTdGF0dXNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvY29tcG9uZW50cy9jb25zdHJ1Y3Rvci1zdGF0dXMvY29uc3RydWN0b3Itc3RhdHVzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUJ5S2V5UGlwZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9waXBlcy90cmFuc2xhdGUtYnkta2V5LnBpcGUnO1xyXG5pbXBvcnQgeyBHbVNrZWxldG9uQ29tcG9uZW50IH0gZnJvbSAnQGdtbW9uZXkvZ20tdWkta2l0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXRlcm1pbmFsLWxheW91dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Rlcm1pbmFsLWxheW91dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGVybWluYWwtbGF5b3V0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBTZXNzaW9uRGF0YVNvdXJjZSxcclxuICAgIEN1cnJlbmN5UGlwZVxyXG4gIF0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ1Njcm9sbGJhcixcclxuICAgIFRlcm1pbmFsTGFuZ1N3aXRjaGVyQ29tcG9uZW50LFxyXG4gICAgQ29uc3RydWN0b3JGb3JtQ29tcG9uZW50LCBDb25zdHJ1Y3RvclN0YXR1c0NvbXBvbmVudCxcclxuICAgIEFzeW5jUGlwZSxcclxuICAgIFRyYW5zbGF0ZUJ5S2V5UGlwZSwgR21Ta2VsZXRvbkNvbXBvbmVudFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRlcm1pbmFsTGF5b3V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3Q8RG9jdW1lbnQ+KERPQ1VNRU5UKTtcclxuICBzZXNzaW9uRFMgPSBpbmplY3QoU2Vzc2lvbkRhdGFTb3VyY2UpO1xyXG4gIHRyYW5zbGF0ZUxvYWRlciA9IGluamVjdDxhbnk+KFRyYW5zbGF0ZUxvYWRlcik7XHJcbiAgcHJpdmF0ZSBjZCA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJpdmF0ZSB0cmFuc2xhdGVTdG9yYWdlU3J2ID0gaW5qZWN0KFRyYW5zbGF0ZUxhbmdTdG9yYWdlU2VydmljZSk7XHJcbiAgcHJpdmF0ZSB0cmFuc2xhdGVTcnYgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBhZGFwdGVyID0gaW5qZWN0PERhdGVBZGFwdGVyPG1vbWVudC5Nb21lbnQ+PihEYXRlQWRhcHRlcik7XHJcbiAgcHJpdmF0ZSBhcGlFcnJvclNydiA9IGluamVjdChBcGlFcnJvcnNTZXJ2aWNlKTtcclxuICBwcml2YXRlIGxvY2F0aW9uID0gaW5qZWN0KExvY2F0aW9uKTtcclxuICBwcml2YXRlIHRpdGxlU3J2ID0gaW5qZWN0KFRpdGxlKTtcclxuICBwcml2YXRlIHZlcnNpb25TcnYgPSBpbmplY3Q8VmVyc2lvblNlcnZpY2VJbnRlcmZhY2U+KFRFUk1JTkFMX1ZFUlNJT05fU0VSVklDRV9UT0tFTik7XHJcblxyXG4gIHByaXZhdGUgdW5TdWJzY3JpYmVyID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyOiBSZXNpemVPYnNlcnZlcjtcclxuXHJcbiAgcHJpdmF0ZSBnZXQgY29udGVudEVsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2Nyb2xsQ29tcG9uZW50LnZpZXdwb3J0LmNvbnRlbnRXcmFwcGVyRWxlbWVudDtcclxuICB9XHJcblxyXG4gIFRFUk1JTkFMX1NURVAgPSBUZXJtaW5hbFN0ZXA7XHJcblxyXG4gIHR5cGVzOiBNZXRob2RUeXBlW10gPSBbXTtcclxuICBjdXJyZW5jeTogc3RyaW5nO1xyXG4gIHByb2plY3ROYW1lOiBzdHJpbmc7XHJcbiAgZGVzY3JpcHRpb246IHN0cmluZztcclxuICBzdGVwID0gVGVybWluYWxTdGVwLlByZXBhcmU7XHJcbiAgZGF0YTogVGVybWluYWxQYXltZW50UHJlcGFyZVJlc3BvbnNlICYgeyB0eXBlSWQ/OiBudW1iZXI7IH07XHJcbiAgQFZpZXdDaGlsZCgnc2Nyb2xsQ29tcG9uZW50Jykgc2Nyb2xsQ29tcG9uZW50OiBOZ1Njcm9sbGJhcjtcclxuICBwcml2YXRlIHVybENoYW5nZUxpc3RlbmVyOiBWb2lkRnVuY3Rpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5hZGFwdGVyLnNldExvY2FsZSh0aGlzLnRyYW5zbGF0ZVNydi5jdXJyZW50TGFuZyk7XHJcbiAgICB0aGlzLl9zZXRUaXRsZSgpO1xyXG5cclxuICAgIHRoaXMudHJhbnNsYXRlU3J2Lm9uTGFuZ0NoYW5nZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy51blN1YnNjcmliZXIpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuYWRhcHRlci5zZXRMb2NhbGUoZS5sYW5nKTtcclxuICAgICAgICB0aGlzLl9zZXRUaXRsZSgpO1xyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuICAgIHRoaXMuY2hlY2tGYXRhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaGFzQ2hvaWNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU3RvcmFnZVNydi5sYW5ndWFnZXMubGVuZ3RoID4gMTtcclxuICB9XHJcblxyXG4gIGdldCBsb2dvQ2xhc3MoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnZlcnNpb25TcnYubG9nb0NsYXNzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZvb3RlclRleHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy52ZXJzaW9uU3J2LmZvb3RlclRleHQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRUaXRsZSgpIHtcclxuICAgIHRoaXMudGl0bGVTcnYuc2V0VGl0bGUodGhpcy52ZXJzaW9uU3J2LnBhZ2VUaXRsZSArIHRoaXMudHJhbnNsYXRlU3J2Lmluc3RhbnQoZ2V0STE4S2V5KEkxOE5fS0VZLlRJVExFX1BBR0VfSU5WT0lDRSkpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VMYW5nKCkge1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhvc3RuYW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcubG9jYXRpb24uaG9zdG5hbWU7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmFwaUVycm9yU3J2Lmhhc0ZhdGFsRXJyb3IpIHtcclxuICAgICAgdGhpcy5zZXNzaW9uRFMubG9hZGluZyQubmV4dChmYWxzZSk7XHJcbiAgICAgIHRoaXMuY2F0Y2hFcnJvcigpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlc3Npb25EUy5nZXQoKVxyXG4gICAgICAuc3Vic2NyaWJlKChzZXNzaW9uSW5mbykgPT4ge1xyXG4gICAgICAgIHRoaXMudHlwZXMgPSBzZXNzaW9uSW5mby5tZXRob2RUeXBlcztcclxuICAgICAgICB0aGlzLmN1cnJlbmN5ID0gc2Vzc2lvbkluZm8uZGVmYXVsdEN1cnJlbmN5O1xyXG4gICAgICAgIHRoaXMucHJvamVjdE5hbWUgPSBzZXNzaW9uSW5mby5wcm9qZWN0TmFtZTtcclxuICAgICAgICB0aGlzLmRlc2NyaXB0aW9uID0gc2Vzc2lvbkluZm8uZGVzY3JpcHRpb247XHJcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2F0Y2hFcnJvcigpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLnB1c2hTdGF0ZSgpO1xyXG4gICAgdGhpcy51cmxDaGFuZ2VMaXN0ZW5lciA9IHRoaXMubG9jYXRpb24ub25VcmxDaGFuZ2UoKHVybCwgc3RhdGU6IHsgc3RlcD86IFRlcm1pbmFsU3RlcCB9KSA9PiB7XHJcbiAgICAgIGlmICh0eXBlb2Ygc3RhdGU/LnN0ZXAgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgdGhpcy5zdGVwID0gc3RhdGUuc3RlcDtcclxuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIF9zdWJtaXR0ZWQgPSBmYWxzZTtcclxuXHJcbiAgcHJlcGFyZShkYXRhOiBUZXJtaW5hbFBheW1lbnRQcmVwYXJlUmVxdWVzdCkge1xyXG4gICAgaWYgKHRoaXMuX3N1Ym1pdHRlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9zdWJtaXR0ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5zZXNzaW9uRFNcclxuICAgICAgLnByZXBhcmUoZGF0YSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzcDogVGVybWluYWxQYXltZW50UHJlcGFyZVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKCFyZXNwLmFtb3VudCAmJiAhcmVzcC5jdXJyZW5jeSAmJiAhcmVzcC50b3RhbCkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnN0ZXAgPSBUZXJtaW5hbFN0ZXAuQ29uZmlybWF0aW9uO1xyXG4gICAgICAgIHRoaXMubG9jYXRpb24uZ28odGhpcy5sb2NhdGlvbi5wYXRoKCksICcnLCB7c3RlcDogdGhpcy5zdGVwfSk7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gcmVzcDtcclxuICAgICAgICB0aGlzLmRhdGEudHlwZUlkID0gZGF0YS50eXBlSWQ7XHJcbiAgICAgICAgdGhpcy5fc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX3N1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2F0Y2hFcnJvcigpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGNvbmZpcm0oKSB7XHJcbiAgICBpZiAodGhpcy5fc3VibWl0dGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3N1Ym1pdHRlZCA9IHRydWU7XHJcbiAgICB0aGlzLnNlc3Npb25EU1xyXG4gICAgICAuY29uZmlybSgpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlc3A6IFRlcm1pbmFsUGF5bWVudENvbmZpcm1SZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMudXJsQ2hhbmdlTGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgdGhpcy51cmxDaGFuZ2VMaXN0ZW5lcigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuc2Vzc2lvbkRTLnJlZGlyZWN0KCkpIHtcclxuICAgICAgICAgICAgdGhpcy5fc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc3RlcCArPSAxO1xyXG4gICAgICAgICAgaWYgKHJlc3Auc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLl9zdGF0dXNUZXh0ID0gcmVzcC5tZXNzYWdlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5fc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNhdGNoRXJyb3IoKTtcclxuICAgICAgICB9LFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tGYXRhbEVycm9yKCkge1xyXG4gICAgLy8gQ2xlYXIgZm9ybSBlcnJvciB3aGVuIGFueSB2YWx1ZXMgaGF2ZSBjaGFuZ2VkLlxyXG4gICAgaWYgKCF0aGlzLmFwaUVycm9yU3J2Lmhhc0ZhdGFsRXJyb3IgJiYgdGhpcy5hcGlFcnJvclNydi5nZXRMb2NhbEVycm9yKCkpIHtcclxuICAgICAgdGhpcy5hcGlFcnJvclNydi5jbGVhcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVzaFN0YXRlKCkge1xyXG4gICAgdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUodGhpcy5sb2NhdGlvbi5wYXRoKCksIHVuZGVmaW5lZCwge3N0ZXA6IHRoaXMuc3RlcH0pO1xyXG4gIH1cclxuXHJcbiAgYmFjaygpIHtcclxuICAgIGlmICh0aGlzLnN0ZXApIHtcclxuICAgICAgdGhpcy5sb2NhdGlvbi5iYWNrKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlc3Npb25EUy5jbG9zZSgpXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmNkLm1hcmtGb3JDaGVjaygpKVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgcmV0dXJuQmFja1VybCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbkRTLnJldHVybkJhY2tVcmw7XHJcbiAgfVxyXG5cclxuICBjYXRjaEVycm9yKCkge1xyXG4gICAgaWYgKHRoaXMuaGFzU3RhdHVzRXJyb3IpIHtcclxuICAgICAgdGhpcy5zdGVwID0gVGVybWluYWxTdGVwLlN0YXR1cztcclxuICAgICAgaWYgKHRoaXMudXJsQ2hhbmdlTGlzdGVuZXIpIHtcclxuICAgICAgICB0aGlzLnVybENoYW5nZUxpc3RlbmVyKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc3RhdHVzVGV4dDogc3RyaW5nO1xyXG4gIGdldCBzdGF0dXNUZXh0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpRXJyb3JTcnYuZ2V0TG9jYWxFcnJvcigpIHx8IHRoaXMuX3N0YXR1c1RleHQ7XHJcbiAgfVxyXG5cclxuICBnZXQgaGFzU3RhdHVzRXJyb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlFcnJvclNydi5oYXNGYXRhbEVycm9yO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjdXJyZW50WWVhcigpIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZlZUNhbGN1bGF0ZVN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHB1YmxpYyBjYWxjdWxhdGVGZWUodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKCF0aGlzLnNlc3Npb25EUy5mZWVDaGFuZ2VhYmxlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuZmVlQ2FsY3VsYXRlU3ViamVjdC5uZXh0KCk7XHJcbiAgICB0aGlzLmZlZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5mZWVPcHRpb25zID0ge307XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICB0aGlzLnNlc3Npb25EU1xyXG4gICAgICAuZmVlT3B0aW9ucyh2YWx1ZSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFwKChvcHRpb25zOiBQYXltZW50RmllbGRPcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZlZU9wdGlvbnMgPSBvcHRpb25zO1xyXG4gICAgICAgICAgdGhpcy5mZWVMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcclxuICAgICAgICAgIHRoaXMuZmVlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmZlZUNhbGN1bGF0ZVN1YmplY3QpLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuU3Vic2NyaWJlcilcclxuICAgICAgKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIGZlZUxvYWRpbmcgPSBmYWxzZTtcclxuICBmZWVPcHRpb25zOiBQYXltZW50RmllbGRPcHRpb25zO1xyXG5cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmZlZUNhbGN1bGF0ZVN1YmplY3QudW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMudW5TdWJzY3JpYmVyLm5leHQoKTtcclxuICAgIHRoaXMudW5TdWJzY3JpYmVyLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy51bm9ic2VydmUodGhpcy5jb250ZW50RWwpO1xyXG4gICAgaWYgKHRoaXMudXJsQ2hhbmdlTGlzdGVuZXIpIHtcclxuICAgICAgdGhpcy51cmxDaGFuZ2VMaXN0ZW5lcigpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8bmctc2Nyb2xsYmFyIGFwcGVhcmFuY2U9XCJjb21wYWN0XCI+XHJcbiAgPGRpdiBjbGFzcz1cInRlcm1pbmFsLWxheW91dFwiPlxyXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJ0ZXJtaW5hbFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGVybWluYWxfX2NvbnRlbnRcIj5cclxuICAgICAgICA8aGVhZGVyIGNsYXNzPVwidGVybWluYWxfX2hlYWRlclwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJ0ZXJtaW5hbF9faGVhZGVyLWxvZ29cIlxyXG4gICAgICAgICAgW2NsYXNzXT1cImxvZ29DbGFzc1wiPjwvaT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXJtaW5hbF9faGVhZGVyLWxhbmdcIj5cclxuICAgICAgICAgICAgQGlmIChoYXNDaG9pY2UpIHtcclxuICAgICAgICAgICAgICA8YXBwLXRlcm1pbmFsLWxhbmctc3dpdGNoZXIgKGxhbmdDaGFuZ2UpPVwiY2hhbmdlTGFuZygpXCJcclxuICAgICAgICAgICAgICBbdGFiSW5kZXhdPVwiMVwiPjwvYXBwLXRlcm1pbmFsLWxhbmctc3dpdGNoZXI+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvaGVhZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXJtaW5hbF9fZm9ybVwiPlxyXG4gICAgICAgICAgQGlmIChzZXNzaW9uRFMubG9hZGluZyQgfCBhc3luYykge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJtLXNrZWxldG9uLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgPGdtLXNrZWxldG9uIFtjb3VudF09XCIxXCIgW3NpemVdPVwiMTIwXCI+PC9nbS1za2VsZXRvbj5cclxuICAgICAgICAgICAgICA8Z20tc2tlbGV0b24gW2NvdW50XT1cIjRcIiBbZ2FwXT1cIjIwXCIgW3NpemVdPVwiODBcIj48L2dtLXNrZWxldG9uPlxyXG4gICAgICAgICAgICAgIDxnbS1za2VsZXRvbiBbY291bnRdPVwiMlwiIFtnYXBdPVwiMTBcIiBbc2l6ZV09XCI0OFwiPjwvZ20tc2tlbGV0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIEBpZiAocHJvamVjdE5hbWUpIHtcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGVybWluYWxfX2luZm9cIj5cclxuICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInRlcm1pbmFsX19pbmZvX19uYW1lXCI+IHt7IHByb2plY3ROYW1lIH19IDwvaDU+XHJcbiAgICAgICAgICAgICAgICBAaWYgKGRlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGVybWluYWxfX2luZm9fX2Rlc2NcIj4ge3sgZGVzY3JpcHRpb24gfX0gPC9wPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEBpZiAoc3RlcCAhPT0gVEVSTUlOQUxfU1RFUC5TdGF0dXMgJiYgIWhhc1N0YXR1c0Vycm9yKSB7XHJcbiAgICAgICAgICAgICAgPGFwcC1jb25zdHJ1Y3Rvci1mb3JtXHJcbiAgICAgICAgICAgICAgICBbZmVlTG9hZGluZ109XCJmZWVMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgIFtmZWVPcHRpb25zXT1cImZlZU9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgW2xvYWRpbmddPVwiKHNlc3Npb25EUy5sb2FkaW5nQ29uZmlybSQgfCBhc3luYylcIlxyXG4gICAgICAgICAgICAgICAgW3N0ZXBdPVwic3RlcFwiXHJcbiAgICAgICAgICAgICAgICBbdHlwZXNdPVwidHlwZXNcIlxyXG4gICAgICAgICAgICAgICAgW2N1cnJlbmN5XT1cImN1cnJlbmN5XCJcclxuICAgICAgICAgICAgICAgIFtyZXNwb25zZV09XCJkYXRhXCJcclxuICAgICAgICAgICAgICAgIFtlcnJvcl09XCJzdGF0dXNUZXh0XCJcclxuICAgICAgICAgICAgICAgIChwcmVwYXJlKT1cInByZXBhcmUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAob25QYXltZW50Q2hhbmdlZCk9XCJjaGVja0ZhdGFsRXJyb3IoKTsgY2FsY3VsYXRlRmVlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKGJhY2spPVwiYmFjaygpXCJcclxuICAgICAgICAgICAgICAgIFtjYW5SZXR1cm5Ub1Byb2plY3RdPVwic2Vzc2lvbkRTLmNhblJldHVyblRvUHJvamVjdFwiXHJcbiAgICAgICAgICAgICAgICAoY29uZmlybSk9XCJjb25maXJtKClcIlxyXG4gICAgICAgICAgICAgICAgW3RhYkluZGV4XT1cIjJcIj48L2FwcC1jb25zdHJ1Y3Rvci1mb3JtPlxyXG4gICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICA8YXBwLWNvbnN0cnVjdG9yLXN0YXR1cyBjbGFzcz1cInRlcm1pbmFsX19zdGF0dXNcIlxyXG4gICAgICAgICAgICAgICAgW2ZhaWxlZF09XCJoYXNTdGF0dXNFcnJvclwiXHJcbiAgICAgICAgICAgICAgICBbbWVzc2FnZV09XCJzdGF0dXNUZXh0ID8gKHN0YXR1c1RleHQgfCB0cmFucykgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICBbYmFja1VybF09XCJyZXR1cm5CYWNrVXJsXCJcclxuICAgICAgICAgICAgICA+PC9hcHAtY29uc3RydWN0b3Itc3RhdHVzPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvc2VjdGlvbj5cclxuICAgIDxmb290ZXIgY2xhc3M9XCJ0ZXJtaW5hbC1mb290ZXJcIj5cclxuICAgICAgPGkgY2xhc3M9XCJ0ZXJtaW5hbC1mb290ZXJfX2xvZ29cIj48L2k+XHJcbiAgICAgIDxwIGNsYXNzPVwidGVybWluYWwtZm9vdGVyX190eHRcIj5cclxuICAgICAgICB7eyBmb290ZXJUZXh0IH19XHJcbiAgICAgIDwvcD5cclxuICAgIDwvZm9vdGVyPlxyXG4gIDwvZGl2PlxyXG48L25nLXNjcm9sbGJhcj5cclxuIl19
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYWwtbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rlcm1pbmFsLXRlbXBsYXRlL3NyYy9saWIvYXBwL3BhZ2VzL2NvbXBvbmVudHMvdGVybWluYWwtbGF5b3V0L3Rlcm1pbmFsLWxheW91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZXJtaW5hbC10ZW1wbGF0ZS9zcmMvbGliL2FwcC9wYWdlcy9jb21wb25lbnRzL3Rlcm1pbmFsLWxheW91dC90ZXJtaW5hbC1sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU9uRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQXVCLFlBQVksRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFD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LFNBQVMsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFLTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7OEdBalBVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLGtFQWJ2QjtZQUNULGlCQUFpQjtZQUNqQixZQUFZO1NBQ2IsOElDckNILHd0RkFrRUEsa2hFRDFCSSxXQUFXLDRHQUNYLDZCQUE2QixpSUFDN0Isd0JBQXdCLG9TQUFFLDBCQUEwQiwrTkFDcEQsU0FBUyx5Q0FDVCxrQkFBa0IsOENBQUUsbUJBQW1COzsyRkFHOUIsdUJBQXVCO2tCQWpCbkMsU0FBUzsrQkFDRSxxQkFBcUIsYUFHcEI7d0JBQ1QsaUJBQWlCO3dCQUNqQixZQUFZO3FCQUNiLGNBQ1csSUFBSSxXQUNQO3dCQUNQLFdBQVc7d0JBQ1gsNkJBQTZCO3dCQUM3Qix3QkFBd0IsRUFBRSwwQkFBMEI7d0JBQ3BELFNBQVM7d0JBQ1Qsa0JBQWtCLEVBQUUsbUJBQW1CO3FCQUN4Qzt3REE4QjZCLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgaW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgTWV0aG9kVHlwZSxcclxuICBUZXJtaW5hbFBheW1lbnRDb25maXJtUmVzcG9uc2UsXHJcbiAgVGVybWluYWxQYXltZW50UHJlcGFyZVJlcXVlc3QsXHJcbiAgVGVybWluYWxQYXltZW50UHJlcGFyZVJlc3BvbnNlXHJcbn0gZnJvbSAnLi4vLi4vLi4vLi4vY29kZWdlbi9tb2RlbC9tb2RlbHMnO1xyXG5pbXBvcnQgeyBTZXNzaW9uRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3Nlc3Npb24uZGF0YS1zb3VyY2UnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaW5hbGl6ZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTG9hZGVyLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7IFBheW1lbnRGaWVsZE9wdGlvbnMsIFRlcm1pbmFsU3RlcCB9IGZyb20gJy4vLi4vLi4vLi4vcGFnZXMvY29tcG9uZW50cy9jb25zdHJ1Y3Rvci1mb3JtL21vZGVscyc7XHJcbmltcG9ydCB7IEFwaUVycm9yc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hcGktZXJyb3JzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBc3luY1BpcGUsIEN1cnJlbmN5UGlwZSwgRE9DVU1FTlQsIExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmdTY3JvbGxiYXIgfSBmcm9tICduZ3gtc2Nyb2xsYmFyJztcclxuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgZ2V0STE4S2V5IH0gZnJvbSAnLi8uLi8uLi8uLi9pMThuL2tleXMnO1xyXG5pbXBvcnQgeyBJMThOX0tFWSB9IGZyb20gJy4vLi4vLi4vLi4vaTE4bic7XHJcbmltcG9ydCB7IFRFUk1JTkFMX1ZFUlNJT05fU0VSVklDRV9UT0tFTiB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbnN0JztcclxuaW1wb3J0IHsgVmVyc2lvblNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvdmVyc2lvbi1zZXJ2aWNlLWludGVyZmFjZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUxhbmdTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHtcclxuICBUZXJtaW5hbExhbmdTd2l0Y2hlckNvbXBvbmVudFxyXG59IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzL3Rlcm1pbmFsLWxhbmctc3dpdGNoZXIvdGVybWluYWwtbGFuZy1zd2l0Y2hlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb25zdHJ1Y3RvckZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9jb25zdHJ1Y3Rvci1mb3JtL2NvbnN0cnVjdG9yLWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29uc3RydWN0b3JTdGF0dXNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvY29tcG9uZW50cy9jb25zdHJ1Y3Rvci1zdGF0dXMvY29uc3RydWN0b3Itc3RhdHVzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUJ5S2V5UGlwZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9waXBlcy90cmFuc2xhdGUtYnkta2V5LnBpcGUnO1xyXG5pbXBvcnQgeyBHbVNrZWxldG9uQ29tcG9uZW50IH0gZnJvbSAnQGdtbW9uZXkvZ20tdWkta2l0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXRlcm1pbmFsLWxheW91dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Rlcm1pbmFsLWxheW91dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGVybWluYWwtbGF5b3V0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBTZXNzaW9uRGF0YVNvdXJjZSxcclxuICAgIEN1cnJlbmN5UGlwZVxyXG4gIF0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ1Njcm9sbGJhcixcclxuICAgIFRlcm1pbmFsTGFuZ1N3aXRjaGVyQ29tcG9uZW50LFxyXG4gICAgQ29uc3RydWN0b3JGb3JtQ29tcG9uZW50LCBDb25zdHJ1Y3RvclN0YXR1c0NvbXBvbmVudCxcclxuICAgIEFzeW5jUGlwZSxcclxuICAgIFRyYW5zbGF0ZUJ5S2V5UGlwZSwgR21Ta2VsZXRvbkNvbXBvbmVudFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRlcm1pbmFsTGF5b3V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3Q8RG9jdW1lbnQ+KERPQ1VNRU5UKTtcclxuICBzZXNzaW9uRFMgPSBpbmplY3QoU2Vzc2lvbkRhdGFTb3VyY2UpO1xyXG4gIHRyYW5zbGF0ZUxvYWRlciA9IGluamVjdDxhbnk+KFRyYW5zbGF0ZUxvYWRlcik7XHJcbiAgcHJpdmF0ZSBjZCA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJpdmF0ZSB0cmFuc2xhdGVTdG9yYWdlU3J2ID0gaW5qZWN0KFRyYW5zbGF0ZUxhbmdTdG9yYWdlU2VydmljZSk7XHJcbiAgcHJpdmF0ZSB0cmFuc2xhdGVTcnYgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBhZGFwdGVyID0gaW5qZWN0PERhdGVBZGFwdGVyPG1vbWVudC5Nb21lbnQ+PihEYXRlQWRhcHRlcik7XHJcbiAgcHJpdmF0ZSBhcGlFcnJvclNydiA9IGluamVjdChBcGlFcnJvcnNTZXJ2aWNlKTtcclxuICBwcml2YXRlIGxvY2F0aW9uID0gaW5qZWN0KExvY2F0aW9uKTtcclxuICBwcml2YXRlIHRpdGxlU3J2ID0gaW5qZWN0KFRpdGxlKTtcclxuICBwcml2YXRlIHZlcnNpb25TcnYgPSBpbmplY3Q8VmVyc2lvblNlcnZpY2VJbnRlcmZhY2U+KFRFUk1JTkFMX1ZFUlNJT05fU0VSVklDRV9UT0tFTik7XHJcblxyXG4gIHByaXZhdGUgdW5TdWJzY3JpYmVyID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyOiBSZXNpemVPYnNlcnZlcjtcclxuXHJcbiAgcHJpdmF0ZSBnZXQgY29udGVudEVsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2Nyb2xsQ29tcG9uZW50LnZpZXdwb3J0LmNvbnRlbnRXcmFwcGVyRWxlbWVudDtcclxuICB9XHJcblxyXG4gIFRFUk1JTkFMX1NURVAgPSBUZXJtaW5hbFN0ZXA7XHJcblxyXG4gIHR5cGVzOiBNZXRob2RUeXBlW10gPSBbXTtcclxuICBjdXJyZW5jeTogc3RyaW5nO1xyXG4gIHByb2plY3ROYW1lOiBzdHJpbmc7XHJcbiAgZGVzY3JpcHRpb246IHN0cmluZztcclxuICBzdGVwID0gVGVybWluYWxTdGVwLlByZXBhcmU7XHJcbiAgZGF0YTogVGVybWluYWxQYXltZW50UHJlcGFyZVJlc3BvbnNlICYgeyB0eXBlSWQ/OiBudW1iZXI7IH07XHJcbiAgQFZpZXdDaGlsZCgnc2Nyb2xsQ29tcG9uZW50Jykgc2Nyb2xsQ29tcG9uZW50OiBOZ1Njcm9sbGJhcjtcclxuICBwcml2YXRlIHVybENoYW5nZUxpc3RlbmVyOiBWb2lkRnVuY3Rpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5hZGFwdGVyLnNldExvY2FsZSh0aGlzLnRyYW5zbGF0ZVNydi5jdXJyZW50TGFuZyk7XHJcbiAgICB0aGlzLl9zZXRUaXRsZSgpO1xyXG5cclxuICAgIHRoaXMudHJhbnNsYXRlU3J2Lm9uTGFuZ0NoYW5nZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy51blN1YnNjcmliZXIpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuYWRhcHRlci5zZXRMb2NhbGUoZS5sYW5nKTtcclxuICAgICAgICB0aGlzLl9zZXRUaXRsZSgpO1xyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuICAgIHRoaXMuY2hlY2tGYXRhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaGFzQ2hvaWNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU3RvcmFnZVNydi5sYW5ndWFnZXMubGVuZ3RoID4gMTtcclxuICB9XHJcblxyXG4gIGdldCBsb2dvQ2xhc3MoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnZlcnNpb25TcnYubG9nb0NsYXNzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZvb3RlclRleHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy52ZXJzaW9uU3J2LmZvb3RlclRleHQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRUaXRsZSgpIHtcclxuICAgIHRoaXMudGl0bGVTcnYuc2V0VGl0bGUodGhpcy52ZXJzaW9uU3J2LnBhZ2VUaXRsZSArIHRoaXMudHJhbnNsYXRlU3J2Lmluc3RhbnQoZ2V0STE4S2V5KEkxOE5fS0VZLlRJVExFX1BBR0VfSU5WT0lDRSkpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VMYW5nKCkge1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhvc3RuYW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcubG9jYXRpb24uaG9zdG5hbWU7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmFwaUVycm9yU3J2Lmhhc0ZhdGFsRXJyb3IpIHtcclxuICAgICAgdGhpcy5zZXNzaW9uRFMubG9hZGluZyQubmV4dChmYWxzZSk7XHJcbiAgICAgIHRoaXMuY2F0Y2hFcnJvcigpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlc3Npb25EUy5nZXQoKVxyXG4gICAgICAuc3Vic2NyaWJlKChzZXNzaW9uSW5mbykgPT4ge1xyXG4gICAgICAgIHRoaXMudHlwZXMgPSBzZXNzaW9uSW5mby5tZXRob2RUeXBlcztcclxuICAgICAgICB0aGlzLmN1cnJlbmN5ID0gc2Vzc2lvbkluZm8uZGVmYXVsdEN1cnJlbmN5O1xyXG4gICAgICAgIHRoaXMucHJvamVjdE5hbWUgPSBzZXNzaW9uSW5mby5wcm9qZWN0TmFtZTtcclxuICAgICAgICB0aGlzLmRlc2NyaXB0aW9uID0gc2Vzc2lvbkluZm8uZGVzY3JpcHRpb247XHJcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2F0Y2hFcnJvcigpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLnB1c2hTdGF0ZSgpO1xyXG4gICAgdGhpcy51cmxDaGFuZ2VMaXN0ZW5lciA9IHRoaXMubG9jYXRpb24ub25VcmxDaGFuZ2UoKHVybCwgc3RhdGU6IHsgc3RlcD86IFRlcm1pbmFsU3RlcCB9KSA9PiB7XHJcbiAgICAgIGlmICh0eXBlb2Ygc3RhdGU/LnN0ZXAgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgdGhpcy5zdGVwID0gc3RhdGUuc3RlcDtcclxuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIF9zdWJtaXR0ZWQgPSBmYWxzZTtcclxuXHJcbiAgcHJlcGFyZShkYXRhOiBUZXJtaW5hbFBheW1lbnRQcmVwYXJlUmVxdWVzdCkge1xyXG4gICAgaWYgKHRoaXMuX3N1Ym1pdHRlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9zdWJtaXR0ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5zZXNzaW9uRFNcclxuICAgICAgLnByZXBhcmUoZGF0YSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzcDogVGVybWluYWxQYXltZW50UHJlcGFyZVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKCFyZXNwLmFtb3VudCAmJiAhcmVzcC5jdXJyZW5jeSAmJiAhcmVzcC50b3RhbCkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnN0ZXAgPSBUZXJtaW5hbFN0ZXAuQ29uZmlybWF0aW9uO1xyXG4gICAgICAgIHRoaXMubG9jYXRpb24uZ28odGhpcy5sb2NhdGlvbi5wYXRoKCksICcnLCB7c3RlcDogdGhpcy5zdGVwfSk7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gcmVzcDtcclxuICAgICAgICB0aGlzLmRhdGEudHlwZUlkID0gZGF0YS50eXBlSWQ7XHJcbiAgICAgICAgdGhpcy5fc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX3N1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2F0Y2hFcnJvcigpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGNvbmZpcm0oKSB7XHJcbiAgICBpZiAodGhpcy5fc3VibWl0dGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3N1Ym1pdHRlZCA9IHRydWU7XHJcbiAgICB0aGlzLnNlc3Npb25EU1xyXG4gICAgICAuY29uZmlybSgpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlc3A6IFRlcm1pbmFsUGF5bWVudENvbmZpcm1SZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMudXJsQ2hhbmdlTGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgdGhpcy51cmxDaGFuZ2VMaXN0ZW5lcigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuc2Vzc2lvbkRTLnJlZGlyZWN0KCkpIHtcclxuICAgICAgICAgICAgdGhpcy5fc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc3RlcCArPSAxO1xyXG4gICAgICAgICAgaWYgKHJlc3Auc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLl9zdGF0dXNUZXh0ID0gcmVzcC5tZXNzYWdlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5fc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNhdGNoRXJyb3IoKTtcclxuICAgICAgICB9LFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tGYXRhbEVycm9yKCkge1xyXG4gICAgLy8gQ2xlYXIgZm9ybSBlcnJvciB3aGVuIGFueSB2YWx1ZXMgaGF2ZSBjaGFuZ2VkLlxyXG4gICAgaWYgKCF0aGlzLmFwaUVycm9yU3J2Lmhhc0ZhdGFsRXJyb3IgJiYgdGhpcy5hcGlFcnJvclNydi5nZXRMb2NhbEVycm9yKCkpIHtcclxuICAgICAgdGhpcy5hcGlFcnJvclNydi5jbGVhcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVzaFN0YXRlKCkge1xyXG4gICAgdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUodGhpcy5sb2NhdGlvbi5wYXRoKCksIHVuZGVmaW5lZCwge3N0ZXA6IHRoaXMuc3RlcH0pO1xyXG4gIH1cclxuXHJcbiAgYmFjaygpIHtcclxuICAgIGlmICh0aGlzLnN0ZXApIHtcclxuICAgICAgdGhpcy5sb2NhdGlvbi5iYWNrKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlc3Npb25EUy5jbG9zZSgpXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmNkLm1hcmtGb3JDaGVjaygpKVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgcmV0dXJuQmFja1VybCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbkRTLnJldHVybkJhY2tVcmw7XHJcbiAgfVxyXG5cclxuICBjYXRjaEVycm9yKCkge1xyXG4gICAgaWYgKHRoaXMuaGFzU3RhdHVzRXJyb3IpIHtcclxuICAgICAgdGhpcy5zdGVwID0gVGVybWluYWxTdGVwLlN0YXR1cztcclxuICAgICAgaWYgKHRoaXMudXJsQ2hhbmdlTGlzdGVuZXIpIHtcclxuICAgICAgICB0aGlzLnVybENoYW5nZUxpc3RlbmVyKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc3RhdHVzVGV4dDogc3RyaW5nO1xyXG4gIGdldCBzdGF0dXNUZXh0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpRXJyb3JTcnYuZ2V0TG9jYWxFcnJvcigpIHx8IHRoaXMuX3N0YXR1c1RleHQ7XHJcbiAgfVxyXG5cclxuICBnZXQgaGFzU3RhdHVzRXJyb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlFcnJvclNydi5oYXNGYXRhbEVycm9yO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjdXJyZW50WWVhcigpIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZlZUNhbGN1bGF0ZVN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHB1YmxpYyBjYWxjdWxhdGVGZWUodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKCF0aGlzLnNlc3Npb25EUy5mZWVDaGFuZ2VhYmxlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuZmVlQ2FsY3VsYXRlU3ViamVjdC5uZXh0KCk7XHJcbiAgICB0aGlzLmZlZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5mZWVPcHRpb25zID0ge307XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICB0aGlzLnNlc3Npb25EU1xyXG4gICAgICAuZmVlT3B0aW9ucyh2YWx1ZSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFwKChvcHRpb25zOiBQYXltZW50RmllbGRPcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZlZU9wdGlvbnMgPSBvcHRpb25zO1xyXG4gICAgICAgICAgdGhpcy5mZWVMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcclxuICAgICAgICAgIHRoaXMuZmVlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmZlZUNhbGN1bGF0ZVN1YmplY3QpLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuU3Vic2NyaWJlcilcclxuICAgICAgKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIGZlZUxvYWRpbmcgPSBmYWxzZTtcclxuICBmZWVPcHRpb25zOiBQYXltZW50RmllbGRPcHRpb25zO1xyXG5cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmZlZUNhbGN1bGF0ZVN1YmplY3QudW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMudW5TdWJzY3JpYmVyLm5leHQoKTtcclxuICAgIHRoaXMudW5TdWJzY3JpYmVyLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy51bm9ic2VydmUodGhpcy5jb250ZW50RWwpO1xyXG4gICAgaWYgKHRoaXMudXJsQ2hhbmdlTGlzdGVuZXIpIHtcclxuICAgICAgdGhpcy51cmxDaGFuZ2VMaXN0ZW5lcigpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8bmctc2Nyb2xsYmFyIGFwcGVhcmFuY2U9XCJjb21wYWN0XCI+XHJcbiAgPGRpdiBjbGFzcz1cInRlcm1pbmFsLWxheW91dFwiPlxyXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJ0ZXJtaW5hbFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGVybWluYWxfX2NvbnRlbnRcIj5cclxuICAgICAgICA8aGVhZGVyIGNsYXNzPVwidGVybWluYWxfX2hlYWRlclwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJ0ZXJtaW5hbF9faGVhZGVyLWxvZ29cIlxyXG4gICAgICAgICAgW2NsYXNzXT1cImxvZ29DbGFzc1wiPjwvaT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXJtaW5hbF9faGVhZGVyLWxhbmdcIj5cclxuICAgICAgICAgICAgQGlmIChoYXNDaG9pY2UpIHtcclxuICAgICAgICAgICAgICA8YXBwLXRlcm1pbmFsLWxhbmctc3dpdGNoZXIgKGxhbmdDaGFuZ2UpPVwiY2hhbmdlTGFuZygpXCJcclxuICAgICAgICAgICAgICBbdGFiSW5kZXhdPVwiMVwiPjwvYXBwLXRlcm1pbmFsLWxhbmctc3dpdGNoZXI+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvaGVhZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXJtaW5hbF9fZm9ybVwiPlxyXG4gICAgICAgICAgQGlmIChzZXNzaW9uRFMubG9hZGluZyQgfCBhc3luYykge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJtLXNrZWxldG9uLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgPGdtLXNrZWxldG9uIFtjb3VudF09XCIxXCIgW3NpemVdPVwiMTIwXCI+PC9nbS1za2VsZXRvbj5cclxuICAgICAgICAgICAgICA8Z20tc2tlbGV0b24gW2NvdW50XT1cIjRcIiBbZ2FwXT1cIjIwXCIgW3NpemVdPVwiODBcIj48L2dtLXNrZWxldG9uPlxyXG4gICAgICAgICAgICAgIDxnbS1za2VsZXRvbiBbY291bnRdPVwiMlwiIFtnYXBdPVwiMTBcIiBbc2l6ZV09XCI0OFwiPjwvZ20tc2tlbGV0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIEBpZiAocHJvamVjdE5hbWUpIHtcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGVybWluYWxfX2luZm9cIj5cclxuICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInRlcm1pbmFsX19pbmZvX19uYW1lXCI+IHt7IHByb2plY3ROYW1lIH19IDwvaDU+XHJcbiAgICAgICAgICAgICAgICBAaWYgKGRlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGVybWluYWxfX2luZm9fX2Rlc2NcIj4ge3sgZGVzY3JpcHRpb24gfX0gPC9wPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEBpZiAoc3RlcCAhPT0gVEVSTUlOQUxfU1RFUC5TdGF0dXMgJiYgIWhhc1N0YXR1c0Vycm9yKSB7XHJcbiAgICAgICAgICAgICAgPGFwcC1jb25zdHJ1Y3Rvci1mb3JtXHJcbiAgICAgICAgICAgICAgICBbZmVlTG9hZGluZ109XCJmZWVMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgIFtmZWVPcHRpb25zXT1cImZlZU9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgW2xvYWRpbmddPVwic2Vzc2lvbkRTLmxvYWRpbmdDb25maXJtJCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgIFtzdGVwXT1cInN0ZXBcIlxyXG4gICAgICAgICAgICAgICAgW3R5cGVzXT1cInR5cGVzXCJcclxuICAgICAgICAgICAgICAgIFtjdXJyZW5jeV09XCJjdXJyZW5jeVwiXHJcbiAgICAgICAgICAgICAgICBbcmVzcG9uc2VdPVwiZGF0YVwiXHJcbiAgICAgICAgICAgICAgICBbZXJyb3JdPVwic3RhdHVzVGV4dFwiXHJcbiAgICAgICAgICAgICAgICAocHJlcGFyZSk9XCJwcmVwYXJlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKG9uUGF5bWVudENoYW5nZWQpPVwiY2hlY2tGYXRhbEVycm9yKCk7IGNhbGN1bGF0ZUZlZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChiYWNrKT1cImJhY2soKVwiXHJcbiAgICAgICAgICAgICAgICBbY2FuUmV0dXJuVG9Qcm9qZWN0XT1cInNlc3Npb25EUy5jYW5SZXR1cm5Ub1Byb2plY3RcIlxyXG4gICAgICAgICAgICAgICAgKGNvbmZpcm0pPVwiY29uZmlybSgpXCJcclxuICAgICAgICAgICAgICAgIFt0YWJJbmRleF09XCIyXCI+PC9hcHAtY29uc3RydWN0b3ItZm9ybT5cclxuICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgPGFwcC1jb25zdHJ1Y3Rvci1zdGF0dXMgY2xhc3M9XCJ0ZXJtaW5hbF9fc3RhdHVzXCJcclxuICAgICAgICAgICAgICAgIFtmYWlsZWRdPVwiaGFzU3RhdHVzRXJyb3JcIlxyXG4gICAgICAgICAgICAgICAgW21lc3NhZ2VdPVwic3RhdHVzVGV4dCA/IChzdGF0dXNUZXh0IHwgdHJhbnMpIDogJydcIlxyXG4gICAgICAgICAgICAgICAgW2JhY2tVcmxdPVwicmV0dXJuQmFja1VybFwiXHJcbiAgICAgICAgICAgICAgPjwvYXBwLWNvbnN0cnVjdG9yLXN0YXR1cz5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgICA8Zm9vdGVyIGNsYXNzPVwidGVybWluYWwtZm9vdGVyXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwidGVybWluYWwtZm9vdGVyX19sb2dvXCI+PC9pPlxyXG4gICAgICA8cCBjbGFzcz1cInRlcm1pbmFsLWZvb3Rlcl9fdHh0XCI+XHJcbiAgICAgICAge3sgZm9vdGVyVGV4dCB9fVxyXG4gICAgICA8L3A+XHJcbiAgICA8L2Zvb3Rlcj5cclxuICA8L2Rpdj5cclxuPC9uZy1zY3JvbGxiYXI+XHJcbiJdfQ==
@@ -0,0 +1,17 @@
1
+ import { Directive, inject, TemplateRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class FeeTemplateDirective {
4
+ constructor() {
5
+ this.tml = inject(TemplateRef);
6
+ }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FeeTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: FeeTemplateDirective, isStandalone: true, selector: "[terminalFee]", ngImport: i0 }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FeeTemplateDirective, decorators: [{
11
+ type: Directive,
12
+ args: [{
13
+ selector: '[terminalFee]',
14
+ standalone: true
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlLXRlbXBsYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rlcm1pbmFsLXRlbXBsYXRlL3NyYy9saWIvYXBwL3BhZ2VzL2RpcmVjdGl2ZXMvZmVlLXRlbXBsYXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTS9ELE1BQU0sT0FBTyxvQkFBb0I7SUFKakM7UUFLRSxRQUFHLEdBQXFCLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztLQUM3Qzs4R0FGWSxvQkFBb0I7a0dBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFKaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1t0ZXJtaW5hbEZlZV0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIEZlZVRlbXBsYXRlRGlyZWN0aXZlIHtcclxuICB0bWw6IFRlbXBsYXRlUmVmPGFueT4gPSBpbmplY3QoVGVtcGxhdGVSZWYpO1xyXG59XHJcbiJdfQ==
@@ -1,3 +1,4 @@
1
1
  export * from './tab-index-focus.directive';
2
2
  export * from './input-mask-corrector.directive';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZXJtaW5hbC10ZW1wbGF0ZS9zcmMvbGliL2FwcC9wYWdlcy9kaXJlY3RpdmVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxrQ0FBa0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGFiLWluZGV4LWZvY3VzLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtbWFzay1jb3JyZWN0b3IuZGlyZWN0aXZlJztcclxuIl19
3
+ export * from './fee-template.directive';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZXJtaW5hbC10ZW1wbGF0ZS9zcmMvbGliL2FwcC9wYWdlcy9kaXJlY3RpdmVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90YWItaW5kZXgtZm9jdXMuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC1tYXNrLWNvcnJlY3Rvci5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ZlZS10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xyXG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { ChangeDetectorRef, inject, Injectable } from '@angular/core';
2
2
  import { BehaviorSubject, throwError } from 'rxjs';
3
- import { catchError, map, tap } from 'rxjs/operators';
3
+ import { catchError, delay, map, tap } from 'rxjs/operators';
4
4
  import { DOCUMENT } from '@angular/common';
5
5
  import { ApiErrorsService } from './api-errors.service';
6
6
  import { CookieService } from 'ngx-cookie-service';
@@ -24,7 +24,7 @@ export class SessionDataSource {
24
24
  this.data$ = new BehaviorSubject(undefined);
25
25
  this.loading$ = new BehaviorSubject(true);
26
26
  this.loadingMethodInfo$ = new BehaviorSubject(true);
27
- this.loadingConfirm$ = new BehaviorSubject(false);
27
+ this.loadingConfirm$ = new BehaviorSubject(null);
28
28
  this.configurations = new Map();
29
29
  this.feeChangeable = !!this.terminalApi.getFee;
30
30
  }
@@ -124,6 +124,7 @@ export class SessionDataSource {
124
124
  this.payment_token = method.payment_token;
125
125
  }
126
126
  this.loadingMethodInfo$.next(false);
127
+ this.loadingConfirm$.next(false);
127
128
  }));
128
129
  }
129
130
  catchError(loading$) {
@@ -143,7 +144,7 @@ export class SessionDataSource {
143
144
  token: this.token,
144
145
  terminalPaymentPrepareRequest: data
145
146
  })
146
- .pipe(catchError(this.catchError(this.loadingConfirm$)), tap(() => this.loadingConfirm$.next(false)));
147
+ .pipe(delay(2000), catchError(this.catchError(this.loadingConfirm$)), tap(() => this.loadingConfirm$.next(false)));
147
148
  }
148
149
  confirm() {
149
150
  if (!this.loadingConfirm$.getValue()) {
@@ -208,4 +209,4 @@ export class SessionDataSource {
208
209
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: SessionDataSource, decorators: [{
209
210
  type: Injectable
210
211
  }] });
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5kYXRhLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rlcm1pbmFsLXRlbXBsYXRlL3NyYy9saWIvYXBwL3NlcnZpY2VzL3Nlc3Npb24uZGF0YS1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVdEUsT0FBTyxFQUFFLGVBQWUsRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUduRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMzRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQWtCLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0RBQXdELENBQUM7O0FBR2hGLE1BQU0sT0FBTyxpQkFBaUI7SUFEOUI7UUFFRSxhQUFRLEdBQUcsTUFBTSxDQUFXLFFBQVEsQ0FBQyxDQUFDO1FBQzlCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDbEQsZ0JBQVcsR0FBRyxNQUFN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QUFJLENBQUMsS0FBSztTQUNsQixDQUFDO2FBQ0QsSUFBSSxDQUNILFVBQVUsQ0FDUixJQUFJLENBQUMsVUFBVSxFQUFFLENBQ2xCLENBQ0YsQ0FBQztJQUNOLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBYztRQUV6QixPQUFPLElBQUksQ0FBQyxXQUFXO2FBQ3BCLDhCQUE4QixDQUFDO1lBQzlCLE1BQU07WUFDTixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDbEIsQ0FBQzthQUNELElBQUksQ0FDSCxVQUFVLENBQ1IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUNsQixDQUNGLENBQUM7SUFDTixDQUFDO0lBRUQscUJBQXFCLENBQUMsSUFBWSxFQUFFLEVBQVUsRUFBRSxRQUFpQjtRQUMvRCxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsRUFBRSxFQUFDLElBQUksRUFBRSxRQUFRLEVBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFJRCxVQUFVLENBQUMsT0FBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7OEdBdFFVLGlCQUFpQjtrSEFBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIE1ldGhvZEluZm8sXHJcbiAgTWV0aG9kVHlwZSxcclxuICBTZXNzaW9uSW5mbyxcclxuICBUZXJtaW5hbE1ldGhvZEJhbmtzUmVzcG9uc2UsXHJcbiAgVGVybWluYWxNZXRob2REb2N1bWVudFR5cGVzUmVzcG9uc2UsXHJcbiAgVGVybWluYWxQYXltZW50UHJlcGFyZVJlcXVlc3QsXHJcbiAgVGVybWluYWxQYXltZW50UHJlcGFyZVJlc3BvbnNlXHJcbn0gZnJvbSAnLi4vLi4vY29kZWdlbi9tb2RlbC9tb2RlbHMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQXBpRXJyb3JzU2VydmljZSB9IGZyb20gJy4vYXBpLWVycm9ycy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJ25neC1jb29raWUtc2VydmljZSc7XHJcbmltcG9ydCB7IFBheW1lbnRGaWVsZHMgfSBmcm9tICcuLy4uL3BhZ2VzL2NvbXBvbmVudHMvY29uc3RydWN0b3ItZm9ybS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBIdHRwQmFkUmVxdWVzdFJlc3BvbnNlIH0gZnJvbSAnLi4vbW9kZWxzL2h0dHAtYmFkLXJlcXVlc3QtcmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVMYW5nU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3RyYW5zbGF0aW9uL3RyYW5zbGF0ZS1sYW5nLXN0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEkxOE5fS0VZIH0gZnJvbSAnLi8uLi9pMThuJztcclxuaW1wb3J0IHsgVEVSTUlOQUxfU0RLX0ZBQ1RPUlksIFRFUk1JTkFMX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICcuLi8uLi9jb25zdCc7XHJcbmltcG9ydCB7IFRlcm1pbmFsU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uL2NvZGVnZW4vYXBpL3Rlcm1pbmFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPVEhFUl9DT1VOVFJZX0NPREUgfSBmcm9tICcuLi9oZWxwZXJzL2kxOG4tY291bnRyaWVzJztcclxuaW1wb3J0IHsgQ2RlVGVybWluYWxTZGssIFNlc3Npb25Ub2tlbiB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IENPTkZJRyB9IGZyb20gJy4uL3BhZ2VzL2NvbXBvbmVudHMvY29uc3RydWN0b3ItZm9ybS9tb2RlbHMvY29uZmlnL2FsbCc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBTZXNzaW9uRGF0YVNvdXJjZSB7XHJcbiAgZG9jdW1lbnQgPSBpbmplY3Q8RG9jdW1lbnQ+KERPQ1VNRU5UKTtcclxuICBwcml2YXRlIGxhbmdTdG9yYWdlID0gaW5qZWN0KFRyYW5zbGF0ZUxhbmdTdG9yYWdlU2VydmljZSk7XHJcbiAgcHJpdmF0ZSB0ZXJtaW5hbEFwaSA9IGluamVjdDxUZXJtaW5hbFNlcnZpY2VJbnRlcmZhY2U+KFRFUk1JTkFMX1NFUlZJQ0VfVE9LRU4pO1xyXG4gIHByaXZhdGUgdG9rZW4gPSBpbmplY3QoU2Vzc2lvblRva2VuLCB7b3B0aW9uYWw6IHRydWV9KSB8fCAndG9rZW4nO1xyXG4gIHByaXZhdGUgYXBpRXJyb3JzU3J2ID0gaW5qZWN0KEFwaUVycm9yc1NlcnZpY2UpO1xyXG4gIHByaXZhdGUgY29va2llU3J2ID0gaW5qZWN0KENvb2tpZVNlcnZpY2UpO1xyXG4gIHByaXZhdGUgY2QgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gIHByaXZhdGUgY2FyZFRlcm1pbmFsU2RrRmFjdG9yeSA9IGluamVjdChURVJNSU5BTF9TREtfRkFDVE9SWSk7XHJcblxyXG4gIHBheW1lbnRfdG9rZW4/OiBzdHJpbmc7XHJcbiAgZGF0YSQ6IEJlaGF2aW9yU3ViamVjdDxTZXNzaW9uSW5mbz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlc3Npb25JbmZvPih1bmRlZmluZWQpO1xyXG4gIGxvYWRpbmckOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xyXG4gIGxvYWRpbmdNZXRob2RJbmZvJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcclxuICBsb2FkaW5nQ29uZmlybSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHByaXZhdGUgcmVkaXJlY3RVcmw6IHN0cmluZztcclxuICBwcml2YXRlIHJldHVyblVybDogc3RyaW5nO1xyXG4gIHByaXZhdGUgY29uZmlndXJhdGlvbnM6IE1hcDxzdHJpbmcsIFBheW1lbnRGaWVsZHM+ID0gbmV3IE1hcCgpO1xyXG5cclxuICBwcml2YXRlIGZpbGxDb25maWd1cmF0aW9ucyhtZXRob2RzOiBNZXRob2RUeXBlW10gPSB0aGlzLmdldFNlc3Npb25WYWx1ZSgpPy5tZXRob2RUeXBlcyB8fCBbXSkge1xyXG4gICAgcmV0dXJuIG1ldGhvZHMuZm9yRWFjaChcclxuICAgICAgKG06IE1ldGhvZFR5cGUpID0+IHRoaXMuY29uZmlndXJhdGlvbnMuc2V0KFxyXG4gICAgICAgIG0udHlwZS5uYW1lLFxyXG4gICAgICAgIENPTkZJR1ttLnR5cGUubmFtZV1cclxuICAgICAgKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdW5pb25HbG9iYWxDb3VudHJpZXMoc2Vzc2lvbjogU2Vzc2lvbkluZm8pIHtcclxuICAgIGxldCBtZXRob2RzID0gc2Vzc2lvbi5tZXRob2RUeXBlcztcclxuXHJcbiAgICAvLyBzb3J0IG1ldGhvZHMgYnkgY291bnRyaWVzIGluIG1hcFxyXG4gICAgY29uc3QgY291bnRyaWVzVHlwZXM6IE1hcDxzdHJpbmcsIFNldDxudW1iZXI+PiA9IG5ldyBNYXA8c3RyaW5nLCBTZXQ8bnVtYmVyPj4oKTtcclxuICAgIG1ldGhvZHMuZm9yRWFjaCgoe2NvdW50cnlJU09Db2RlLCB0eXBlOiB7aWR9fSkgPT4ge1xyXG4gICAgICBsZXQgdHlwZXMgPSAoY291bnRyaWVzVHlwZXMuZ2V0KGNvdW50cnlJU09Db2RlKSB8fCBuZXcgU2V0KCkpLmFkZChpZCk7XHJcbiAgICAgIGNvdW50cmllc1R5cGVzLnNldChjb3VudHJ5SVNPQ29kZSwgdHlwZXMpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gQ2hlY2sgZXZlcnkgdHlwZSBpbiB0aGUgY291bnRyeSBvbiBoYXZpbmcgaW4gb3RoZXIgY291bnRyaWVzIGFuZCBnZXR0aW5nIG9uZXMgaW4gY29sbGVjdGlvblxyXG4gICAgY29uc3QgZ2xvYmFsQ291bnRyaWVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgY29uc3QgdHlwZXNDb3VudHJpZXNBcnJheSA9IEFycmF5LmZyb20oY291bnRyaWVzVHlwZXMudmFsdWVzKCkpO1xyXG4gICAgY29uc3QgZXZlcnlDb3VudHJ5SGFzVHlwZUlkUHJlZGljYXRlID0gKHR5cGVJZCkgPT4gdHlwZXNDb3VudHJpZXNBcnJheS5ldmVyeSgoY291bnRyeVR5cGVzKSA9PiBjb3VudHJ5VHlwZXMuaGFzKHR5cGVJZCkpO1xyXG4gICAgY291bnRyaWVzVHlwZXMuZm9yRWFjaCgodHlwZXMsIGlzbykgPT4ge1xyXG4gICAgICAvLyBDaGVjayBldmVyeSB0eXBlIGluY2x1ZGVzIGluIGFsbCBjb3VudHJpZXNcclxuICAgICAgY29uc3QgaGFzT25seUdsb2JhbFR5cGVzID0gWy4uLnR5cGVzXS5ldmVyeShldmVyeUNvdW50cnlIYXNUeXBlSWRQcmVkaWNhdGUpO1xyXG4gICAgICBpZiAoaGFzT25seUdsb2JhbFR5cGVzKSB7XHJcbiAgICAgICAgZ2xvYmFsQ291bnRyaWVzLnB1c2goaXNvKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gaWYgd2UgaGF2ZSBtb3JlIHRoYW4gb25lIGNvdW50cnkgd2l0aCBvbmx5IGdsb2JhbCB0eXBlcyBjb2xsYXBzZSB0aGVtIGludG8gb25lIGNhdGVnb3J5XHJcbiAgICBpZiAoZ2xvYmFsQ291bnRyaWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgZmlyc3RHbG9iYWxDb3VudHJ5ID0gZ2xvYmFsQ291bnRyaWVzLnBvcCgpO1xyXG4gICAgICBtZXRob2RzID0gbWV0aG9kc1xyXG4gICAgICAgIC5maWx0ZXIoKHtjb3VudHJ5SVNPQ29kZX0pID0+ICFnbG9iYWxDb3VudHJpZXMuaW5jbHVkZXMoY291bnRyeUlTT0NvZGUpKTtcclxuICAgICAgbWV0aG9kcy5mb3JFYWNoKG0gPT4gbS5jb3VudHJ5SVNPQ29kZSA9PT0gZmlyc3RHbG9iYWxDb3VudHJ5ICYmIChtLmNvdW50cnlJU09Db2RlID0gT1RIRVJfQ09VTlRSWV9DT0RFKSk7XHJcbiAgICB9XHJcbiAgICBzZXNzaW9uLm1ldGhvZFR5cGVzID0gbWV0aG9kcztcclxuICAgIHJldHVybiBzZXNzaW9uO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29uZmlndXJhdGlvbihuYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25zLmdldChuYW1lKTtcclxuICB9XHJcblxyXG4gIHJlZGlyZWN0KCkge1xyXG4gICAgaWYgKHRoaXMucmVkaXJlY3RVcmwpIHtcclxuICAgICAgdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldy5sb2NhdGlvbi5ocmVmID0gdGhpcy5yZWRpcmVjdFVybDtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICByZXR1cm5CYWNrKCkge1xyXG4gICAgaWYgKHRoaXMucmV0dXJuVXJsKSB7XHJcbiAgICAgIHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcubG9jYXRpb24uaHJlZiA9IHRoaXMucmV0dXJuVXJsO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldCBjYW5SZXR1cm5Ub1Byb2plY3QoKSB7XHJcbiAgICByZXR1cm4gISF0aGlzLnJldHVyblVybDtcclxuICB9XHJcblxyXG4gIGdldCByZXR1cm5CYWNrVXJsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXR1cm5Vcmw7XHJcbiAgfVxyXG5cclxuICBnZXRUeXBlTmFtZUJ5SWQoaWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YSQuZ2V0VmFsdWUoKS5tZXRob2RUeXBlcy5maW5kKG0gPT4gbS50eXBlLmlkID09PSBpZCkudHlwZS5uYW1lO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2Vzc2lvblZhbHVlKCk6IFNlc3Npb25JbmZvIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGEkLmdldFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBnZXQoKTogT2JzZXJ2YWJsZTxTZXNzaW9uSW5mbz4ge1xyXG4gICAgaWYgKCF0aGlzLmxvYWRpbmckLmdldFZhbHVlKCkpIHtcclxuICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnRlcm1pbmFsQXBpLmdldFRlcm1pbmFsU2Vzc2lvbkluZm8oe1xyXG4gICAgICB0b2tlbjogdGhpcy50b2tlblxyXG4gICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcihcclxuICAgICAgICAgIHRoaXMuY2F0Y2hFcnJvcih0aGlzLmxvYWRpbmckKVxyXG4gICAgICAgICksXHJcbiAgICAgICAgbWFwKChzZXNzaW9uOiBTZXNzaW9uSW5mbykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kYXRhJC5uZXh0KHRoaXMudW5pb25HbG9iYWxDb3VudHJpZXMoc2Vzc2lvbikpO1xyXG4gICAgICAgICAgdGhpcy5maWxsQ29uZmlndXJhdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICB0aGlzLnJldHVyblVybCA9IHNlc3Npb24ucmV0dXJuVXJsO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YSQuZ2V0VmFsdWUoKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0TWV0aG9kSW5mbyhjdXJyZW5jeSwgdHlwZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPE1ldGhvZEluZm8+IHtcclxuICAgIGlmICh0aGlzLmxvYWRpbmdNZXRob2RJbmZvJC5nZXRWYWx1ZSgpICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMubG9hZGluZ01ldGhvZEluZm8kLm5leHQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXR5cGVJZCB8fCAhY3VycmVuY3kpIHtcclxuICAgICAgcmV0dXJuIHRocm93RXJyb3Ioe30pXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBjYXRjaEVycm9yKFxyXG4gICAgICAgICAgICB0aGlzLmNhdGNoRXJyb3IodGhpcy5sb2FkaW5nTWV0aG9kSW5mbyQpXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnRlcm1pbmFsQXBpXHJcbiAgICAgIC5nZXRUZXJtaW5hbE1ldGhvZEluZm8oe1xyXG4gICAgICAgIHRva2VuOiB0aGlzLnRva2VuLFxyXG4gICAgICAgIGxhbmc6IHRoaXMubGFuZ1N0b3JhZ2UuY3VycmVudExhbmcsXHJcbiAgICAgICAgY3VycmVuY3ksXHJcbiAgICAgICAgdHlwZUlkXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoXHJcbiAgICAgICAgICB0aGlzLmNhdGNoRXJyb3IodGhpcy5sb2FkaW5nTWV0aG9kSW5mbyQpXHJcbiAgICAgICAgKSxcclxuICAgICAgICB0YXAoKG1ldGhvZCkgPT4ge1xyXG4gICAgICAgICAgaWYgKG1ldGhvZC5wYXltZW50X3Rva2VuKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGF5bWVudF90b2tlbiA9IG1ldGhvZC5wYXltZW50X3Rva2VuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nTWV0aG9kSW5mbyQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2F0Y2hFcnJvcihsb2FkaW5nJD86IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPikge1xyXG4gICAgcmV0dXJuIChlcnI6IEh0dHBCYWRSZXF1ZXN0UmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5hcGlFcnJvcnNTcnYuc2V0TG9jYWxFcnJvcihlcnIuZXJyb3IpO1xyXG4gICAgICBsb2FkaW5nJD8ubmV4dChmYWxzZSk7XHJcbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcmVwYXJlKGRhdGE6IFRlcm1pbmFsUGF5bWVudFByZXBhcmVSZXF1ZXN0KTogT2JzZXJ2YWJsZTxUZXJtaW5hbFBheW1lbnRQcmVwYXJlUmVzcG9uc2U+IHtcclxuICAgIGlmICghdGhpcy5sb2FkaW5nQ29uZmlybSQuZ2V0VmFsdWUoKSkge1xyXG4gICAgICB0aGlzLmxvYWRpbmdDb25maXJtJC5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMudGVybWluYWxBcGlcclxuICAgICAgLnBvc3RUZXJtaW5hbFBheW1lbnRQcmVwYXJlKHtcclxuICAgICAgICB0b2tlbjogdGhpcy50b2tlbixcclxuICAgICAgICB0ZXJtaW5hbFBheW1lbnRQcmVwYXJlUmVxdWVzdDogZGF0YVxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKFxyXG4gICAgICAgICAgdGhpcy5jYXRjaEVycm9yKHRoaXMubG9hZGluZ0NvbmZpcm0kKVxyXG4gICAgICAgICksXHJcbiAgICAgICAgdGFwKCgpID0+IHRoaXMubG9hZGluZ0NvbmZpcm0kLm5leHQoZmFsc2UpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgY29uZmlybSgpIHtcclxuICAgIGlmICghdGhpcy5sb2FkaW5nQ29uZmlybSQuZ2V0VmFsdWUoKSkge1xyXG4gICAgICB0aGlzLmxvYWRpbmdDb25maXJtJC5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnRlcm1pbmFsQXBpXHJcbiAgICAgIC5wb3N0VGVybWluYWxQYXltZW50Q29uZmlybSh7XHJcbiAgICAgICAgdG9rZW46IHRoaXMudG9rZW4sXHJcbiAgICAgICAgdGVybWluYWxQYXltZW50Q29uZmlybVJlcXVlc3Q6IHtcclxuICAgICAgICAgIGxhbmc6IHRoaXMubGFuZ1N0b3JhZ2UuY3VycmVudExhbmcsXHJcbiAgICAgICAgICBnYUNvb2tpZTogdGhpcy5jb29raWVTcnYuZ2V0KCdfZ2EnKSB8fCBudWxsXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKFxyXG4gICAgICAgICAgdGhpcy5jYXRjaEVycm9yKHRoaXMubG9hZGluZ0NvbmZpcm0kKVxyXG4gICAgICAgICksXHJcbiAgICAgICAgdGFwKChyZXNwKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlZGlyZWN0VXJsID0gcmVzcC5yZWRpcmVjdFVybDtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ0NvbmZpcm0kLm5leHQoZmFsc2UpXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgaWYgKCF0aGlzLmxvYWRpbmdDb25maXJtJC5nZXRWYWx1ZSgpKSB7XHJcbiAgICAgIHRoaXMubG9hZGluZ0NvbmZpcm0kLm5leHQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMudGVybWluYWxBcGlcclxuICAgICAgLnBvc3RUZXJtaW5hbENsb3NlKHtcclxuICAgICAgICB0b2tlbjogdGhpcy50b2tlblxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKFxyXG4gICAgICAgICAgdGhpcy5jYXRjaEVycm9yKHRoaXMubG9hZGluZ0NvbmZpcm0kKVxyXG4gICAgICAgICksXHJcbiAgICAgICAgbWFwKCgpID0+IHtcclxuICAgICAgICAgIGlmICghdGhpcy5yZXR1cm5CYWNrKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSB7Y29kZTogSTE4Tl9LRVkuU0VTU0lPTl9DTE9TRUR9O1xyXG4gICAgICAgICAgICB0aGlzLmFwaUVycm9yc1Nydi5zZXRMb2NhbEVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nQ29uZmlybSQ/Lm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG5cclxuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGdldEJhbmtzKHR5cGVJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxUZXJtaW5hbE1ldGhvZEJhbmtzUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLnRlcm1pbmFsQXBpXHJcbiAgICAgIC5nZXRUZXJtaW5hbE1ldGhvZEJhbmtzKHtcclxuICAgICAgICB0eXBlSWQsXHJcbiAgICAgICAgdG9rZW46IHRoaXMudG9rZW5cclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcihcclxuICAgICAgICAgIHRoaXMuY2F0Y2hFcnJvcigpXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0RG9jdW1lbnRzKHR5cGVJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxUZXJtaW5hbE1ldGhvZERvY3VtZW50VHlwZXNSZXNwb25zZT4ge1xyXG5cclxuICAgIHJldHVybiB0aGlzLnRlcm1pbmFsQXBpXHJcbiAgICAgIC5nZXRUZXJtaW5hbE1ldGhvZERvY3VtZW50VHlwZXMoe1xyXG4gICAgICAgIHR5cGVJZCxcclxuICAgICAgICB0b2tlbjogdGhpcy50b2tlblxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKFxyXG4gICAgICAgICAgdGhpcy5jYXRjaEVycm9yKClcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVDYXJkVGVybWluYWxTZGsobGFuZzogc3RyaW5nLCBpZDogc3RyaW5nLCB0YWJpbmRleD86IG51bWJlcik6IENkZVRlcm1pbmFsU2RrIHtcclxuICAgIHJldHVybiB0aGlzLmNhcmRUZXJtaW5hbFNka0ZhY3RvcnkodGhpcy5wYXltZW50X3Rva2VuLCBpZCwge2xhbmcsIHRhYmluZGV4fSk7XHJcbiAgfVxyXG5cclxuICBmZWVDaGFuZ2VhYmxlID0gISF0aGlzLnRlcm1pbmFsQXBpLmdldEZlZTtcclxuXHJcbiAgZmVlT3B0aW9ucyhwYXltZW50OiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLnRlcm1pbmFsQXBpLmdldEZlZShwYXltZW50KTtcclxuICB9XHJcbn1cclxuXHJcblxyXG4iXX0=
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5kYXRhLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rlcm1pbmFsLXRlbXBsYXRlL3NyYy9saWIvYXBwL3NlcnZpY2VzL3Nlc3Npb24uZGF0YS1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVdEUsT0FBTyxFQUFFLGVBQWUsRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHbkQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDM0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFrQixZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdEQUF3RCxDQUFDOztBQUdoRixNQUFNLE9BQU8saUJBQWlCO0lBRDlCO1FBRUUsYUFBUSxHQUFHLE1BQU0sQ0FBVyxRQUFRLENBQUMsQ0FBQztRQUM5QixnQkFBVyxHQUFHLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQ2xELGdCQUFX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UUFBUSxDQUFDLE1BQWM7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVzthQUNwQixzQkFBc0IsQ0FBQztZQUN0QixNQUFNO1lBQ04sS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ2xCLENBQUM7YUFDRCxJQUFJLENBQ0gsVUFBVSxDQUNSLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FDbEIsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFjO1FBRXpCLE9BQU8sSUFBSSxDQUFDLFdBQVc7YUFDcEIsOEJBQThCLENBQUM7WUFDOUIsTUFBTTtZQUNOLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNsQixDQUFDO2FBQ0QsSUFBSSxDQUNILFVBQVUsQ0FDUixJQUFJLENBQUMsVUFBVSxFQUFFLENBQ2xCLENBQ0YsQ0FBQztJQUNOLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxJQUFZLEVBQUUsRUFBVSxFQUFFLFFBQWlCO1FBQy9ELE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUFFLEVBQUMsSUFBSSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUlELFVBQVUsQ0FBQyxPQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUMsQ0FBQzs4R0F4UVUsaUJBQWlCO2tIQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgTWV0aG9kSW5mbyxcclxuICBNZXRob2RUeXBlLFxyXG4gIFNlc3Npb25JbmZvLFxyXG4gIFRlcm1pbmFsTWV0aG9kQmFua3NSZXNwb25zZSxcclxuICBUZXJtaW5hbE1ldGhvZERvY3VtZW50VHlwZXNSZXNwb25zZSxcclxuICBUZXJtaW5hbFBheW1lbnRQcmVwYXJlUmVxdWVzdCxcclxuICBUZXJtaW5hbFBheW1lbnRQcmVwYXJlUmVzcG9uc2VcclxufSBmcm9tICcuLi8uLi9jb2RlZ2VuL21vZGVsL21vZGVscyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWxheSwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQXBpRXJyb3JzU2VydmljZSB9IGZyb20gJy4vYXBpLWVycm9ycy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJ25neC1jb29raWUtc2VydmljZSc7XHJcbmltcG9ydCB7IFBheW1lbnRGaWVsZHMgfSBmcm9tICcuLy4uL3BhZ2VzL2NvbXBvbmVudHMvY29uc3RydWN0b3ItZm9ybS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBIdHRwQmFkUmVxdWVzdFJlc3BvbnNlIH0gZnJvbSAnLi4vbW9kZWxzL2h0dHAtYmFkLXJlcXVlc3QtcmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVMYW5nU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3RyYW5zbGF0aW9uL3RyYW5zbGF0ZS1sYW5nLXN0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEkxOE5fS0VZIH0gZnJvbSAnLi8uLi9pMThuJztcclxuaW1wb3J0IHsgVEVSTUlOQUxfU0RLX0ZBQ1RPUlksIFRFUk1JTkFMX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICcuLi8uLi9jb25zdCc7XHJcbmltcG9ydCB7IFRlcm1pbmFsU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uL2NvZGVnZW4vYXBpL3Rlcm1pbmFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPVEhFUl9DT1VOVFJZX0NPREUgfSBmcm9tICcuLi9oZWxwZXJzL2kxOG4tY291bnRyaWVzJztcclxuaW1wb3J0IHsgQ2RlVGVybWluYWxTZGssIFNlc3Npb25Ub2tlbiB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IENPTkZJRyB9IGZyb20gJy4uL3BhZ2VzL2NvbXBvbmVudHMvY29uc3RydWN0b3ItZm9ybS9tb2RlbHMvY29uZmlnL2FsbCc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBTZXNzaW9uRGF0YVNvdXJjZSB7XHJcbiAgZG9jdW1lbnQgPSBpbmplY3Q8RG9jdW1lbnQ+KERPQ1VNRU5UKTtcclxuICBwcml2YXRlIGxhbmdTdG9yYWdlID0gaW5qZWN0KFRyYW5zbGF0ZUxhbmdTdG9yYWdlU2VydmljZSk7XHJcbiAgcHJpdmF0ZSB0ZXJtaW5hbEFwaSA9IGluamVjdDxUZXJtaW5hbFNlcnZpY2VJbnRlcmZhY2U+KFRFUk1JTkFMX1NFUlZJQ0VfVE9LRU4pO1xyXG4gIHByaXZhdGUgdG9rZW4gPSBpbmplY3QoU2Vzc2lvblRva2VuLCB7b3B0aW9uYWw6IHRydWV9KSB8fCAndG9rZW4nO1xyXG4gIHByaXZhdGUgYXBpRXJyb3JzU3J2ID0gaW5qZWN0KEFwaUVycm9yc1NlcnZpY2UpO1xyXG4gIHByaXZhdGUgY29va2llU3J2ID0gaW5qZWN0KENvb2tpZVNlcnZpY2UpO1xyXG4gIHByaXZhdGUgY2QgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gIHByaXZhdGUgY2FyZFRlcm1pbmFsU2RrRmFjdG9yeSA9IGluamVjdChURVJNSU5BTF9TREtfRkFDVE9SWSk7XHJcblxyXG4gIHBheW1lbnRfdG9rZW4/OiBzdHJpbmc7XHJcbiAgZGF0YSQ6IEJlaGF2aW9yU3ViamVjdDxTZXNzaW9uSW5mbz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlc3Npb25JbmZvPih1bmRlZmluZWQpO1xyXG4gIGxvYWRpbmckOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xyXG4gIGxvYWRpbmdNZXRob2RJbmZvJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcclxuICBsb2FkaW5nQ29uZmlybSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4obnVsbCk7XHJcbiAgcHJpdmF0ZSByZWRpcmVjdFVybDogc3RyaW5nO1xyXG4gIHByaXZhdGUgcmV0dXJuVXJsOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBjb25maWd1cmF0aW9uczogTWFwPHN0cmluZywgUGF5bWVudEZpZWxkcz4gPSBuZXcgTWFwKCk7XHJcblxyXG4gIHByaXZhdGUgZmlsbENvbmZpZ3VyYXRpb25zKG1ldGhvZHM6IE1ldGhvZFR5cGVbXSA9IHRoaXMuZ2V0U2Vzc2lvblZhbHVlKCk/Lm1ldGhvZFR5cGVzIHx8IFtdKSB7XHJcbiAgICByZXR1cm4gbWV0aG9kcy5mb3JFYWNoKFxyXG4gICAgICAobTogTWV0aG9kVHlwZSkgPT4gdGhpcy5jb25maWd1cmF0aW9ucy5zZXQoXHJcbiAgICAgICAgbS50eXBlLm5hbWUsXHJcbiAgICAgICAgQ09ORklHW20udHlwZS5uYW1lXVxyXG4gICAgICApXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1bmlvbkdsb2JhbENvdW50cmllcyhzZXNzaW9uOiBTZXNzaW9uSW5mbykge1xyXG4gICAgbGV0IG1ldGhvZHMgPSBzZXNzaW9uLm1ldGhvZFR5cGVzO1xyXG5cclxuICAgIC8vIHNvcnQgbWV0aG9kcyBieSBjb3VudHJpZXMgaW4gbWFwXHJcbiAgICBjb25zdCBjb3VudHJpZXNUeXBlczogTWFwPHN0cmluZywgU2V0PG51bWJlcj4+ID0gbmV3IE1hcDxzdHJpbmcsIFNldDxudW1iZXI+PigpO1xyXG4gICAgbWV0aG9kcy5mb3JFYWNoKCh7Y291bnRyeUlTT0NvZGUsIHR5cGU6IHtpZH19KSA9PiB7XHJcbiAgICAgIGxldCB0eXBlcyA9IChjb3VudHJpZXNUeXBlcy5nZXQoY291bnRyeUlTT0NvZGUpIHx8IG5ldyBTZXQoKSkuYWRkKGlkKTtcclxuICAgICAgY291bnRyaWVzVHlwZXMuc2V0KGNvdW50cnlJU09Db2RlLCB0eXBlcyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBDaGVjayBldmVyeSB0eXBlIGluIHRoZSBjb3VudHJ5IG9uIGhhdmluZyBpbiBvdGhlciBjb3VudHJpZXMgYW5kIGdldHRpbmcgb25lcyBpbiBjb2xsZWN0aW9uXHJcbiAgICBjb25zdCBnbG9iYWxDb3VudHJpZXM6IHN0cmluZ1tdID0gW107XHJcbiAgICBjb25zdCB0eXBlc0NvdW50cmllc0FycmF5ID0gQXJyYXkuZnJvbShjb3VudHJpZXNUeXBlcy52YWx1ZXMoKSk7XHJcbiAgICBjb25zdCBldmVyeUNvdW50cnlIYXNUeXBlSWRQcmVkaWNhdGUgPSAodHlwZUlkKSA9PiB0eXBlc0NvdW50cmllc0FycmF5LmV2ZXJ5KChjb3VudHJ5VHlwZXMpID0+IGNvdW50cnlUeXBlcy5oYXModHlwZUlkKSk7XHJcbiAgICBjb3VudHJpZXNUeXBlcy5mb3JFYWNoKCh0eXBlcywgaXNvKSA9PiB7XHJcbiAgICAgIC8vIENoZWNrIGV2ZXJ5IHR5cGUgaW5jbHVkZXMgaW4gYWxsIGNvdW50cmllc1xyXG4gICAgICBjb25zdCBoYXNPbmx5R2xvYmFsVHlwZXMgPSBbLi4udHlwZXNdLmV2ZXJ5KGV2ZXJ5Q291bnRyeUhhc1R5cGVJZFByZWRpY2F0ZSk7XHJcbiAgICAgIGlmIChoYXNPbmx5R2xvYmFsVHlwZXMpIHtcclxuICAgICAgICBnbG9iYWxDb3VudHJpZXMucHVzaChpc28pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBpZiB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUgY291bnRyeSB3aXRoIG9ubHkgZ2xvYmFsIHR5cGVzIGNvbGxhcHNlIHRoZW0gaW50byBvbmUgY2F0ZWdvcnlcclxuICAgIGlmIChnbG9iYWxDb3VudHJpZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBmaXJzdEdsb2JhbENvdW50cnkgPSBnbG9iYWxDb3VudHJpZXMucG9wKCk7XHJcbiAgICAgIG1ldGhvZHMgPSBtZXRob2RzXHJcbiAgICAgICAgLmZpbHRlcigoe2NvdW50cnlJU09Db2RlfSkgPT4gIWdsb2JhbENvdW50cmllcy5pbmNsdWRlcyhjb3VudHJ5SVNPQ29kZSkpO1xyXG4gICAgICBtZXRob2RzLmZvckVhY2gobSA9PiBtLmNvdW50cnlJU09Db2RlID09PSBmaXJzdEdsb2JhbENvdW50cnkgJiYgKG0uY291bnRyeUlTT0NvZGUgPSBPVEhFUl9DT1VOVFJZX0NPREUpKTtcclxuICAgIH1cclxuICAgIHNlc3Npb24ubWV0aG9kVHlwZXMgPSBtZXRob2RzO1xyXG4gICAgcmV0dXJuIHNlc3Npb247XHJcbiAgfVxyXG5cclxuICBnZXRDb25maWd1cmF0aW9uKG5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbnMuZ2V0KG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgcmVkaXJlY3QoKSB7XHJcbiAgICBpZiAodGhpcy5yZWRpcmVjdFVybCkge1xyXG4gICAgICB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3LmxvY2F0aW9uLmhyZWYgPSB0aGlzLnJlZGlyZWN0VXJsO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHJldHVybkJhY2soKSB7XHJcbiAgICBpZiAodGhpcy5yZXR1cm5VcmwpIHtcclxuICAgICAgdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldy5sb2NhdGlvbi5ocmVmID0gdGhpcy5yZXR1cm5Vcmw7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNhblJldHVyblRvUHJvamVjdCgpIHtcclxuICAgIHJldHVybiAhIXRoaXMucmV0dXJuVXJsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJldHVybkJhY2tVcmwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnJldHVyblVybDtcclxuICB9XHJcblxyXG4gIGdldFR5cGVOYW1lQnlJZChpZDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhJC5nZXRWYWx1ZSgpLm1ldGhvZFR5cGVzLmZpbmQobSA9PiBtLnR5cGUuaWQgPT09IGlkKS50eXBlLm5hbWU7XHJcbiAgfVxyXG5cclxuICBnZXRTZXNzaW9uVmFsdWUoKTogU2Vzc2lvbkluZm8ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YSQuZ2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIGdldCgpOiBPYnNlcnZhYmxlPFNlc3Npb25JbmZvPiB7XHJcbiAgICBpZiAoIXRoaXMubG9hZGluZyQuZ2V0VmFsdWUoKSkge1xyXG4gICAgICB0aGlzLmxvYWRpbmckLm5leHQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMudGVybWluYWxBcGkuZ2V0VGVybWluYWxTZXNzaW9uSW5mbyh7XHJcbiAgICAgIHRva2VuOiB0aGlzLnRva2VuXHJcbiAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKFxyXG4gICAgICAgICAgdGhpcy5jYXRjaEVycm9yKHRoaXMubG9hZGluZyQpXHJcbiAgICAgICAgKSxcclxuICAgICAgICBtYXAoKHNlc3Npb246IFNlc3Npb25JbmZvKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRhdGEkLm5leHQodGhpcy51bmlvbkdsb2JhbENvdW50cmllcyhzZXNzaW9uKSk7XHJcbiAgICAgICAgICB0aGlzLmZpbGxDb25maWd1cmF0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMucmV0dXJuVXJsID0gc2Vzc2lvbi5yZXR1cm5Vcmw7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhJC5nZXRWYWx1ZSgpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRNZXRob2RJbmZvKGN1cnJlbmN5LCB0eXBlSWQ6IG51bWJlcik6IE9ic2VydmFibGU8TWV0aG9kSW5mbz4ge1xyXG4gICAgaWYgKHRoaXMubG9hZGluZ01ldGhvZEluZm8kLmdldFZhbHVlKCkgIT09IG51bGwpIHtcclxuICAgICAgdGhpcy5sb2FkaW5nTWV0aG9kSW5mbyQubmV4dCh0cnVlKTtcclxuICAgIH1cclxuICAgIGlmICghdHlwZUlkIHx8ICFjdXJyZW5jeSkge1xyXG4gICAgICByZXR1cm4gdGhyb3dFcnJvcih7fSlcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGNhdGNoRXJyb3IoXHJcbiAgICAgICAgICAgIHRoaXMuY2F0Y2hFcnJvcih0aGlzLmxvYWRpbmdNZXRob2RJbmZvJClcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMudGVybWluYWxBcGlcclxuICAgICAgLmdldFRlcm1pbmFsTWV0aG9kSW5mbyh7XHJcbiAgICAgICAgdG9rZW46IHRoaXMudG9rZW4sXHJcbiAgICAgICAgbGFuZzogdGhpcy5sYW5nU3RvcmFnZS5jdXJyZW50TGFuZyxcclxuICAgICAgICBjdXJyZW5jeSxcclxuICAgICAgICB0eXBlSWRcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcihcclxuICAgICAgICAgIHRoaXMuY2F0Y2hFcnJvcih0aGlzLmxvYWRpbmdNZXRob2RJbmZvJClcclxuICAgICAgICApLFxyXG4gICAgICAgIHRhcCgobWV0aG9kKSA9PiB7XHJcbiAgICAgICAgICBpZiAobWV0aG9kLnBheW1lbnRfdG9rZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5wYXltZW50X3Rva2VuID0gbWV0aG9kLnBheW1lbnRfdG9rZW47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmdNZXRob2RJbmZvJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ0NvbmZpcm0kLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhdGNoRXJyb3IobG9hZGluZyQ/OiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4pIHtcclxuICAgIHJldHVybiAoZXJyOiBIdHRwQmFkUmVxdWVzdFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHRoaXMuYXBpRXJyb3JzU3J2LnNldExvY2FsRXJyb3IoZXJyLmVycm9yKTtcclxuICAgICAgbG9hZGluZyQ/Lm5leHQoZmFsc2UpO1xyXG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJlcGFyZShkYXRhOiBUZXJtaW5hbFBheW1lbnRQcmVwYXJlUmVxdWVzdCk6IE9ic2VydmFibGU8VGVybWluYWxQYXltZW50UHJlcGFyZVJlc3BvbnNlPiB7XHJcbiAgICBpZiAoIXRoaXMubG9hZGluZ0NvbmZpcm0kLmdldFZhbHVlKCkpIHtcclxuICAgICAgdGhpcy5sb2FkaW5nQ29uZmlybSQubmV4dCh0cnVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnRlcm1pbmFsQXBpXHJcbiAgICAgIC5wb3N0VGVybWluYWxQYXltZW50UHJlcGFyZSh7XHJcbiAgICAgICAgdG9rZW46IHRoaXMudG9rZW4sXHJcbiAgICAgICAgdGVybWluYWxQYXltZW50UHJlcGFyZVJlcXVlc3Q6IGRhdGFcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZGVsYXkoMjAwMCksXHJcbiAgICAgICAgY2F0Y2hFcnJvcihcclxuICAgICAgICAgIHRoaXMuY2F0Y2hFcnJvcih0aGlzLmxvYWRpbmdDb25maXJtJClcclxuICAgICAgICApLFxyXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmxvYWRpbmdDb25maXJtJC5uZXh0KGZhbHNlKSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGNvbmZpcm0oKSB7XHJcbiAgICBpZiAoIXRoaXMubG9hZGluZ0NvbmZpcm0kLmdldFZhbHVlKCkpIHtcclxuICAgICAgdGhpcy5sb2FkaW5nQ29uZmlybSQubmV4dCh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy50ZXJtaW5hbEFwaVxyXG4gICAgICAucG9zdFRlcm1pbmFsUGF5bWVudENvbmZpcm0oe1xyXG4gICAgICAgIHRva2VuOiB0aGlzLnRva2VuLFxyXG4gICAgICAgIHRlcm1pbmFsUGF5bWVudENvbmZpcm1SZXF1ZXN0OiB7XHJcbiAgICAgICAgICBsYW5nOiB0aGlzLmxhbmdTdG9yYWdlLmN1cnJlbnRMYW5nLFxyXG4gICAgICAgICAgZ2FDb29raWU6IHRoaXMuY29va2llU3J2LmdldCgnX2dhJykgfHwgbnVsbFxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcihcclxuICAgICAgICAgIHRoaXMuY2F0Y2hFcnJvcih0aGlzLmxvYWRpbmdDb25maXJtJClcclxuICAgICAgICApLFxyXG4gICAgICAgIHRhcCgocmVzcCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZWRpcmVjdFVybCA9IHJlc3AucmVkaXJlY3RVcmw7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmdDb25maXJtJC5uZXh0KGZhbHNlKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpIHtcclxuICAgIGlmICghdGhpcy5sb2FkaW5nQ29uZmlybSQuZ2V0VmFsdWUoKSkge1xyXG4gICAgICB0aGlzLmxvYWRpbmdDb25maXJtJC5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnRlcm1pbmFsQXBpXHJcbiAgICAgIC5wb3N0VGVybWluYWxDbG9zZSh7XHJcbiAgICAgICAgdG9rZW46IHRoaXMudG9rZW5cclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcihcclxuICAgICAgICAgIHRoaXMuY2F0Y2hFcnJvcih0aGlzLmxvYWRpbmdDb25maXJtJClcclxuICAgICAgICApLFxyXG4gICAgICAgIG1hcCgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMucmV0dXJuQmFjaygpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0ge2NvZGU6IEkxOE5fS0VZLlNFU1NJT05fQ0xPU0VEfTtcclxuICAgICAgICAgICAgdGhpcy5hcGlFcnJvcnNTcnYuc2V0TG9jYWxFcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ0NvbmZpcm0kPy5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRCYW5rcyh0eXBlSWQ6IG51bWJlcik6IE9ic2VydmFibGU8VGVybWluYWxNZXRob2RCYW5rc1Jlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy50ZXJtaW5hbEFwaVxyXG4gICAgICAuZ2V0VGVybWluYWxNZXRob2RCYW5rcyh7XHJcbiAgICAgICAgdHlwZUlkLFxyXG4gICAgICAgIHRva2VuOiB0aGlzLnRva2VuXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoXHJcbiAgICAgICAgICB0aGlzLmNhdGNoRXJyb3IoKVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGdldERvY3VtZW50cyh0eXBlSWQ6IG51bWJlcik6IE9ic2VydmFibGU8VGVybWluYWxNZXRob2REb2N1bWVudFR5cGVzUmVzcG9uc2U+IHtcclxuXHJcbiAgICByZXR1cm4gdGhpcy50ZXJtaW5hbEFwaVxyXG4gICAgICAuZ2V0VGVybWluYWxNZXRob2REb2N1bWVudFR5cGVzKHtcclxuICAgICAgICB0eXBlSWQsXHJcbiAgICAgICAgdG9rZW46IHRoaXMudG9rZW5cclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcihcclxuICAgICAgICAgIHRoaXMuY2F0Y2hFcnJvcigpXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlQ2FyZFRlcm1pbmFsU2RrKGxhbmc6IHN0cmluZywgaWQ6IHN0cmluZywgdGFiaW5kZXg/OiBudW1iZXIpOiBDZGVUZXJtaW5hbFNkayB7XHJcbiAgICByZXR1cm4gdGhpcy5jYXJkVGVybWluYWxTZGtGYWN0b3J5KHRoaXMucGF5bWVudF90b2tlbiwgaWQsIHtsYW5nLCB0YWJpbmRleH0pO1xyXG4gIH1cclxuXHJcbiAgZmVlQ2hhbmdlYWJsZSA9ICEhdGhpcy50ZXJtaW5hbEFwaS5nZXRGZWU7XHJcblxyXG4gIGZlZU9wdGlvbnMocGF5bWVudDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy50ZXJtaW5hbEFwaS5nZXRGZWUocGF5bWVudCk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuIl19