@decaf-ts/for-nest 0.11.2-refactor.3 → 0.11.2-refactor.5

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 (40) hide show
  1. package/README.md +273 -1
  2. package/dist/for-nest.cjs +111 -346
  3. package/dist/for-nest.js +115 -349
  4. package/lib/cjs/controllers.cjs +4 -6
  5. package/lib/cjs/decaf-model/DecafModelModule.cjs +7 -2
  6. package/lib/cjs/decaf-model/FromModelController.cjs +210 -346
  7. package/lib/cjs/decaf-model/decorators/ApiOperationFromModel.cjs +2 -2
  8. package/lib/cjs/decaf-model/decorators/utils.cjs +4 -3
  9. package/lib/cjs/decaf-model/utils.cjs +10 -4
  10. package/lib/cjs/decorators.cjs +4 -3
  11. package/lib/cjs/events-module/utils.cjs +2 -2
  12. package/lib/cjs/factory/NestBootstraper.cjs +3 -4
  13. package/lib/cjs/index.cjs +3 -3
  14. package/lib/cjs/request/DecafRequestContext.cjs +2 -3
  15. package/lib/cjs/request/DecafResponseInterceptor.cjs +5 -3
  16. package/lib/cjs/swagger-types.cjs +2 -2
  17. package/lib/cjs/types.cjs +2 -2
  18. package/lib/cjs/webhooks/DecafWebhookModule.cjs +3 -2
  19. package/lib/cjs/webhooks/controllers.cjs +50 -55
  20. package/lib/esm/controllers.js +3 -5
  21. package/lib/esm/decaf-model/DecafModelModule.js +6 -1
  22. package/lib/esm/decaf-model/FromModelController.js +212 -348
  23. package/lib/esm/decaf-model/decorators/ApiOperationFromModel.js +1 -1
  24. package/lib/esm/decaf-model/decorators/utils.js +3 -2
  25. package/lib/esm/decaf-model/utils.js +9 -3
  26. package/lib/esm/decorators.js +3 -2
  27. package/lib/esm/events-module/utils.js +1 -1
  28. package/lib/esm/factory/NestBootstraper.js +2 -3
  29. package/lib/esm/index.js +3 -3
  30. package/lib/esm/request/DecafRequestContext.js +1 -2
  31. package/lib/esm/request/DecafResponseInterceptor.js +4 -2
  32. package/lib/esm/swagger-types.js +1 -1
  33. package/lib/esm/types.js +1 -1
  34. package/lib/esm/webhooks/DecafWebhookModule.js +2 -1
  35. package/lib/esm/webhooks/controllers.js +49 -54
  36. package/lib/types/decaf-model/FromModelController.d.cts +3 -11
  37. package/lib/types/decaf-model/FromModelController.d.mts +3 -11
  38. package/lib/types/index.d.cts +3 -3
  39. package/lib/types/index.d.mts +3 -3
  40. package/package.json +7 -1
@@ -19,14 +19,12 @@ class DecafModelController extends DecafController {
19
19
  if (!this._persistence)
20
20
  try {
21
21
  this._persistence = core_1.Service.get(this.class);
22
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
23
22
  }
24
- catch (e) {
23
+ catch {
25
24
  try {
26
25
  this._persistence = core_1.ModelService.getService(this.class);
27
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
28
26
  }
29
- catch (e) {
27
+ catch {
30
28
  this._persistence = core_1.Repository.forModel(this.class);
31
29
  }
32
30
  }
@@ -39,5 +37,5 @@ class DecafModelController extends DecafController {
39
37
  }
40
38
  }
41
39
  exports.DecafModelController = DecafModelController;
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJvbGxlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsSUFBSSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25GLE9BQU8sRUFFTCxZQUFZLEVBRVosVUFBVSxFQUNWLE9BQU8sR0FDUixNQUFNLGdCQUFnQixDQUFDO0FBTXhCLE1BQU0sT0FBZ0IsZUFFcEIsU0FBUSxtQkFBc0Q7SUFDOUQsWUFDcUIsYUFBa0MsRUFDckQsS0FBYTtRQUViLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUhGLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtJQUl2RCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQWdCLG9CQUdwQixTQUFRLGVBQWtCO0lBRzFCLFlBQzhCLGFBQWtDLEVBQzlELEtBQWE7UUFFYixLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBSEEsa0JBQWEsR0FBYixhQUFhLENBQXFCO0lBSWhFLENBQUM7SUFJRCxXQUFXLENBQUMsR0FBa0I7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO1lBQ3BCLElBQUksQ0FBQztnQkFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQWtCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDN0QsNkRBQTZEO1lBQy9ELENBQUM7WUFBQyxPQUFPLENBQVUsRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUM7b0JBQ0gsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsVUFBVSxDQUN6QyxJQUFJLENBQUMsS0FBSyxDQUNRLENBQUM7b0JBQ3JCLDZEQUE2RDtnQkFDL0QsQ0FBQztnQkFBQyxPQUFPLENBQVUsRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBWSxDQUFDO2dCQUNqRSxDQUFDO1lBQ0gsQ0FBQztRQUVILE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFbkQsT0FBTyxHQUFHO1lBQ1IsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLFlBQVksVUFBVTtnQkFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztnQkFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztZQUNwQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUN4QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIFJlcXVlc3QgfSBmcm9tIFwiZXhwcmVzc1wiO1xuaW1wb3J0IHsgRGVjYWZDb250cm9sbGVyIGFzIEh0dHBEZWNhZkNvbnRyb2xsZXIgfSBmcm9tIFwiQGRlY2FmLXRzL2Zvci1odHRwL3NlcnZlclwiO1xuaW1wb3J0IHtcbiAgQ29udGV4dCxcbiAgTW9kZWxTZXJ2aWNlLFxuICBSZXBvLFxuICBSZXBvc2l0b3J5LFxuICBTZXJ2aWNlLFxufSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IE1vZGVsLCB0eXBlIE1vZGVsQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5cbmltcG9ydCB7IERlY2FmU2VydmVyQ3R4IH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBEZWNhZlJlcXVlc3RDb250ZXh0IH0gZnJvbSBcIi4vcmVxdWVzdC9EZWNhZlJlcXVlc3RDb250ZXh0XCI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEZWNhZkNvbnRyb2xsZXI8XG4gIENPTlRFWFQgZXh0ZW5kcyBEZWNhZlNlcnZlckN0eCA9IERlY2FmU2VydmVyQ3R4LFxuPiBleHRlbmRzIEh0dHBEZWNhZkNvbnRyb2xsZXI8UmVxdWVzdCwgYW55LCBEZWNhZlJlcXVlc3RDb250ZXh0PiB7XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2xpZW50Q29udGV4dDogRGVjYWZSZXF1ZXN0Q29udGV4dCxcbiAgICBfbmFtZTogc3RyaW5nXG4gICkge1xuICAgIHN1cGVyKGNsaWVudENvbnRleHQpO1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEZWNhZk1vZGVsQ29udHJvbGxlcjxcbiAgTSBleHRlbmRzIE1vZGVsPGJvb2xlYW4+LFxuICBDIGV4dGVuZHMgRGVjYWZTZXJ2ZXJDdHggPSBEZWNhZlNlcnZlckN0eCxcbj4gZXh0ZW5kcyBEZWNhZkNvbnRyb2xsZXI8Qz4ge1xuICBwcml2YXRlIF9wZXJzaXN0ZW5jZT86IFJlcG88TT4gfCBNb2RlbFNlcnZpY2U8TT47XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSBjbGllbnRDb250ZXh0OiBEZWNhZlJlcXVlc3RDb250ZXh0LFxuICAgIF9uYW1lOiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIoY2xpZW50Q29udGV4dCwgX25hbWUpO1xuICB9XG5cbiAgYWJzdHJhY3QgZ2V0IGNsYXNzKCk6IE1vZGVsQ29uc3RydWN0b3I8TT47XG5cbiAgcGVyc2lzdGVuY2UoY3R4PzogQ29udGV4dDxhbnk+KTogUmVwbzxNPiB8IE1vZGVsU2VydmljZTxNPiB7XG4gICAgaWYgKCF0aGlzLl9wZXJzaXN0ZW5jZSlcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuX3BlcnNpc3RlbmNlID0gU2VydmljZS5nZXQ8TW9kZWxTZXJ2aWNlPE0+Pih0aGlzLmNsYXNzKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuX3BlcnNpc3RlbmNlID0gTW9kZWxTZXJ2aWNlLmdldFNlcnZpY2UoXG4gICAgICAgICAgICB0aGlzLmNsYXNzXG4gICAgICAgICAgKSBhcyBNb2RlbFNlcnZpY2U8TT47XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgdGhpcy5fcGVyc2lzdGVuY2UgPSBSZXBvc2l0b3J5LmZvck1vZGVsKHRoaXMuY2xhc3MpIGFzIFJlcG88TT47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIGNvbnN0IG92ZXJyaWRlcyA9IHRoaXMuY2xpZW50Q29udGV4dC50b092ZXJyaWRlcygpO1xuXG4gICAgcmV0dXJuIGN0eFxuICAgICAgPyB0aGlzLl9wZXJzaXN0ZW5jZSBpbnN0YW5jZW9mIFJlcG9zaXRvcnlcbiAgICAgICAgPyB0aGlzLl9wZXJzaXN0ZW5jZS5vdmVycmlkZShvdmVycmlkZXMpXG4gICAgICAgIDogdGhpcy5fcGVyc2lzdGVuY2UuZm9yKG92ZXJyaWRlcylcbiAgICAgIDogdGhpcy5fcGVyc2lzdGVuY2U7XG4gIH1cbn1cbiJdfQ==
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb250cm9sbGVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzREFBbUY7QUFDbkYseUNBQW9FO0FBQ3BFLE1BQWEsZUFBZ0IsU0FBUSx3QkFBbUI7SUFDcEQsWUFBWSxhQUFhLEVBQUUsS0FBSztRQUM1QixLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDdkMsQ0FBQztDQUNKO0FBTEQsMENBS0M7QUFDRCxNQUFhLG9CQUFxQixTQUFRLGVBQWU7SUFDckQsWUFBWSxhQUFhLEVBQUUsS0FBSztRQUM1QixLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxXQUFXLENBQUMsR0FBRztRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUNsQixJQUFJLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxjQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDNUMsNkRBQTZEO1lBQ2pFLENBQUM7WUFDRCxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNQLElBQUksQ0FBQztvQkFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLG1CQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDeEQsNkRBQTZEO2dCQUNqRSxDQUFDO2dCQUNELE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQ1AsSUFBSSxDQUFDLFlBQVksR0FBRyxpQkFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hELENBQUM7WUFDTCxDQUFDO1FBQ0wsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuRCxPQUFPLEdBQUc7WUFDTixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksWUFBWSxpQkFBVTtnQkFDckMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztnQkFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztZQUN0QyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM1QixDQUFDO0NBQ0o7QUEzQkQsb0RBMkJDO0FBQ0Qsa3pJQUFrekkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWNhZkNvbnRyb2xsZXIgYXMgSHR0cERlY2FmQ29udHJvbGxlciB9IGZyb20gXCJAZGVjYWYtdHMvZm9yLWh0dHAvc2VydmVyXCI7XG5pbXBvcnQgeyBNb2RlbFNlcnZpY2UsIFJlcG9zaXRvcnksIFNlcnZpY2UsIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5leHBvcnQgY2xhc3MgRGVjYWZDb250cm9sbGVyIGV4dGVuZHMgSHR0cERlY2FmQ29udHJvbGxlciB7XG4gICAgY29uc3RydWN0b3IoY2xpZW50Q29udGV4dCwgX25hbWUpIHtcbiAgICAgICAgc3VwZXIoY2xpZW50Q29udGV4dCk7XG4gICAgICAgIHRoaXMuY2xpZW50Q29udGV4dCA9IGNsaWVudENvbnRleHQ7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIERlY2FmTW9kZWxDb250cm9sbGVyIGV4dGVuZHMgRGVjYWZDb250cm9sbGVyIHtcbiAgICBjb25zdHJ1Y3RvcihjbGllbnRDb250ZXh0LCBfbmFtZSkge1xuICAgICAgICBzdXBlcihjbGllbnRDb250ZXh0LCBfbmFtZSk7XG4gICAgICAgIHRoaXMuY2xpZW50Q29udGV4dCA9IGNsaWVudENvbnRleHQ7XG4gICAgfVxuICAgIHBlcnNpc3RlbmNlKGN0eCkge1xuICAgICAgICBpZiAoIXRoaXMuX3BlcnNpc3RlbmNlKVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wZXJzaXN0ZW5jZSA9IFNlcnZpY2UuZ2V0KHRoaXMuY2xhc3MpO1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGVyc2lzdGVuY2UgPSBNb2RlbFNlcnZpY2UuZ2V0U2VydmljZSh0aGlzLmNsYXNzKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9wZXJzaXN0ZW5jZSA9IFJlcG9zaXRvcnkuZm9yTW9kZWwodGhpcy5jbGFzcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICBjb25zdCBvdmVycmlkZXMgPSB0aGlzLmNsaWVudENvbnRleHQudG9PdmVycmlkZXMoKTtcbiAgICAgICAgcmV0dXJuIGN0eFxuICAgICAgICAgICAgPyB0aGlzLl9wZXJzaXN0ZW5jZSBpbnN0YW5jZW9mIFJlcG9zaXRvcnlcbiAgICAgICAgICAgICAgICA/IHRoaXMuX3BlcnNpc3RlbmNlLm92ZXJyaWRlKG92ZXJyaWRlcylcbiAgICAgICAgICAgICAgICA6IHRoaXMuX3BlcnNpc3RlbmNlLmZvcihvdmVycmlkZXMpXG4gICAgICAgICAgICA6IHRoaXMuX3BlcnNpc3RlbmNlO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVkyOXVkSEp2Ykd4bGNuTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTl6Y21NdlkyOXVkSEp2Ykd4bGNuTXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUTBFc1QwRkJUeXhGUVVGRkxHVkJRV1VzU1VGQlNTeHRRa0ZCYlVJc1JVRkJSU3hOUVVGTkxESkNRVUV5UWl4RFFVRkRPMEZCUTI1R0xFOUJRVThzUlVGRlRDeFpRVUZaTEVWQlJWb3NWVUZCVlN4RlFVTldMRTlCUVU4c1IwRkRVaXhOUVVGTkxHZENRVUZuUWl4RFFVRkRPMEZCVFhoQ0xFMUJRVTBzVDBGQlowSXNaVUZGY0VJc1UwRkJVU3h0UWtGQmMwUTdTVUZET1VRc1dVRkRjVUlzWVVGQmEwTXNSVUZEY2tRc1MwRkJZVHRSUVVWaUxFdEJRVXNzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCUXp0UlFVaEdMR3RDUVVGaExFZEJRV0lzWVVGQllTeERRVUZ4UWp0SlFVbDJSQ3hEUVVGRE8wTkJRMFk3UVVGRlJDeE5RVUZOTEU5QlFXZENMRzlDUVVkd1FpeFRRVUZSTEdWQlFXdENPMGxCUnpGQ0xGbEJRemhDTEdGQlFXdERMRVZCUXpsRUxFdEJRV0U3VVVGRllpeExRVUZMTEVOQlFVTXNZVUZCWVN4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xRkJTRUVzYTBKQlFXRXNSMEZCWWl4aFFVRmhMRU5CUVhGQ08wbEJTV2hGTEVOQlFVTTdTVUZKUkN4WFFVRlhMRU5CUVVNc1IwRkJhMEk3VVVGRE5VSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWk8xbEJRM0JDTEVsQlFVa3NRMEZCUXp0blFrRkRTQ3hKUVVGSkxFTkJRVU1zV1VGQldTeEhRVUZITEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVd0Q0xFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0blFrRkROMFFzTmtSQlFUWkVPMWxCUXk5RUxFTkJRVU03V1VGQlF5eFBRVUZQTEVOQlFWVXNSVUZCUlN4RFFVRkRPMmRDUVVOd1FpeEpRVUZKTEVOQlFVTTdiMEpCUTBnc1NVRkJTU3hEUVVGRExGbEJRVmtzUjBGQlJ5eFpRVUZaTEVOQlFVTXNWVUZCVlN4RFFVTjZReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVU5STEVOQlFVTTdiMEpCUTNKQ0xEWkVRVUUyUkR0blFrRkRMMFFzUTBGQlF6dG5Ra0ZCUXl4UFFVRlBMRU5CUVZVc1JVRkJSU3hEUVVGRE8yOUNRVU53UWl4SlFVRkpMRU5CUVVNc1dVRkJXU3hIUVVGSExGVkJRVlVzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJXU3hEUVVGRE8yZENRVU5xUlN4RFFVRkRPMWxCUTBnc1EwRkJRenRSUVVWSUxFMUJRVTBzVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1YwRkJWeXhGUVVGRkxFTkJRVU03VVVGRmJrUXNUMEZCVHl4SFFVRkhPMWxCUTFJc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEZsQlFWa3NWVUZCVlR0blFrRkRka01zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1VVRkJVU3hEUVVGRExGTkJRVk1zUTBGQlF6dG5Ra0ZEZGtNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJRenRaUVVOd1F5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJRenRKUVVONFFpeERRVUZETzBOQlEwWWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdleUIwZVhCbElGSmxjWFZsYzNRZ2ZTQm1jbTl0SUZ3aVpYaHdjbVZ6YzF3aU8xeHVhVzF3YjNKMElIc2dSR1ZqWVdaRGIyNTBjbTlzYkdWeUlHRnpJRWgwZEhCRVpXTmhaa052Ym5SeWIyeHNaWElnZlNCbWNtOXRJRndpUUdSbFkyRm1MWFJ6TDJadmNpMW9kSFJ3TDNObGNuWmxjbHdpTzF4dWFXMXdiM0owSUh0Y2JpQWdRMjl1ZEdWNGRDeGNiaUFnVFc5a1pXeFRaWEoyYVdObExGeHVJQ0JTWlhCdkxGeHVJQ0JTWlhCdmMybDBiM0o1TEZ4dUlDQlRaWEoyYVdObExGeHVmU0JtY205dElGd2lRR1JsWTJGbUxYUnpMMk52Y21WY0lqdGNibWx0Y0c5eWRDQjdJRTF2WkdWc0xDQjBlWEJsSUUxdlpHVnNRMjl1YzNSeWRXTjBiM0lnZlNCbWNtOXRJRndpUUdSbFkyRm1MWFJ6TDJSbFkyOXlZWFJ2Y2kxMllXeHBaR0YwYVc5dVhDSTdYRzVjYm1sdGNHOXlkQ0I3SUVSbFkyRm1VMlZ5ZG1WeVEzUjRJSDBnWm5KdmJTQmNJaTR2WTI5dWMzUmhiblJ6WENJN1hHNXBiWEJ2Y25RZ2V5QkVaV05oWmxKbGNYVmxjM1JEYjI1MFpYaDBJSDBnWm5KdmJTQmNJaTR2Y21WeGRXVnpkQzlFWldOaFpsSmxjWFZsYzNSRGIyNTBaWGgwWENJN1hHNWNibVY0Y0c5eWRDQmhZbk4wY21GamRDQmpiR0Z6Y3lCRVpXTmhaa052Ym5SeWIyeHNaWEk4WEc0Z0lFTlBUbFJGV0ZRZ1pYaDBaVzVrY3lCRVpXTmhabE5sY25abGNrTjBlQ0E5SUVSbFkyRm1VMlZ5ZG1WeVEzUjRMRnh1UGlCbGVIUmxibVJ6SUVoMGRIQkVaV05oWmtOdmJuUnliMnhzWlhJOFVtVnhkV1Z6ZEN3Z1lXNTVMQ0JFWldOaFpsSmxjWFZsYzNSRGIyNTBaWGgwUGlCN1hHNGdJSEJ5YjNSbFkzUmxaQ0JqYjI1emRISjFZM1J2Y2loY2JpQWdJQ0J3Y205MFpXTjBaV1FnY21WaFpHOXViSGtnWTJ4cFpXNTBRMjl1ZEdWNGREb2dSR1ZqWVdaU1pYRjFaWE4wUTI5dWRHVjRkQ3hjYmlBZ0lDQmZibUZ0WlRvZ2MzUnlhVzVuWEc0Z0lDa2dlMXh1SUNBZ0lITjFjR1Z5S0dOc2FXVnVkRU52Ym5SbGVIUXBPMXh1SUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JoWW5OMGNtRmpkQ0JqYkdGemN5QkVaV05oWmsxdlpHVnNRMjl1ZEhKdmJHeGxjanhjYmlBZ1RTQmxlSFJsYm1SeklFMXZaR1ZzUEdKdmIyeGxZVzQrTEZ4dUlDQkRJR1Y0ZEdWdVpITWdSR1ZqWVdaVFpYSjJaWEpEZEhnZ1BTQkVaV05oWmxObGNuWmxja04wZUN4Y2JqNGdaWGgwWlc1a2N5QkVaV05oWmtOdmJuUnliMnhzWlhJOFF6NGdlMXh1SUNCd2NtbDJZWFJsSUY5d1pYSnphWE4wWlc1alpUODZJRkpsY0c4OFRUNGdmQ0JOYjJSbGJGTmxjblpwWTJVOFRUNDdYRzVjYmlBZ2NISnZkR1ZqZEdWa0lHTnZibk4wY25WamRHOXlLRnh1SUNBZ0lIQnliM1JsWTNSbFpDQnZkbVZ5Y21sa1pTQnlaV0ZrYjI1c2VTQmpiR2xsYm5SRGIyNTBaWGgwT2lCRVpXTmhabEpsY1hWbGMzUkRiMjUwWlhoMExGeHVJQ0FnSUY5dVlXMWxPaUJ6ZEhKcGJtZGNiaUFnS1NCN1hHNGdJQ0FnYzNWd1pYSW9ZMnhwWlc1MFEyOXVkR1Y0ZEN3Z1gyNWhiV1VwTzF4dUlDQjlYRzVjYmlBZ1lXSnpkSEpoWTNRZ1oyVjBJR05zWVhOektDazZJRTF2WkdWc1EyOXVjM1J5ZFdOMGIzSThUVDQ3WEc1Y2JpQWdjR1Z5YzJsemRHVnVZMlVvWTNSNFB6b2dRMjl1ZEdWNGREeGhibmsrS1RvZ1VtVndienhOUGlCOElFMXZaR1ZzVTJWeWRtbGpaVHhOUGlCN1hHNGdJQ0FnYVdZZ0tDRjBhR2x6TGw5d1pYSnphWE4wWlc1alpTbGNiaUFnSUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVYM0JsY25OcGMzUmxibU5sSUQwZ1UyVnlkbWxqWlM1blpYUThUVzlrWld4VFpYSjJhV05sUEUwK1BpaDBhR2x6TG1Oc1lYTnpLVHRjYmlBZ0lDQWdJQ0FnTHk4Z1pYTnNhVzUwTFdScGMyRmliR1V0Ym1WNGRDMXNhVzVsSUVCMGVYQmxjMk55YVhCMExXVnpiR2x1ZEM5dWJ5MTFiblZ6WldRdGRtRnljMXh1SUNBZ0lDQWdmU0JqWVhSamFDQW9aVG9nZFc1cmJtOTNiaWtnZTF4dUlDQWdJQ0FnSUNCMGNua2dlMXh1SUNBZ0lDQWdJQ0FnSUhSb2FYTXVYM0JsY25OcGMzUmxibU5sSUQwZ1RXOWtaV3hUWlhKMmFXTmxMbWRsZEZObGNuWnBZMlVvWEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG1Oc1lYTnpYRzRnSUNBZ0lDQWdJQ0FnS1NCaGN5Qk5iMlJsYkZObGNuWnBZMlU4VFQ0N1hHNGdJQ0FnSUNBZ0lDQWdMeThnWlhOc2FXNTBMV1JwYzJGaWJHVXRibVY0ZEMxc2FXNWxJRUIwZVhCbGMyTnlhWEIwTFdWemJHbHVkQzl1YnkxMWJuVnpaV1F0ZG1GeWMxeHVJQ0FnSUNBZ0lDQjlJR05oZEdOb0lDaGxPaUIxYm10dWIzZHVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeTVmY0dWeWMybHpkR1Z1WTJVZ1BTQlNaWEJ2YzJsMGIzSjVMbVp2Y2sxdlpHVnNLSFJvYVhNdVkyeGhjM01wSUdGeklGSmxjRzg4VFQ0N1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUc5MlpYSnlhV1JsY3lBOUlIUm9hWE11WTJ4cFpXNTBRMjl1ZEdWNGRDNTBiMDkyWlhKeWFXUmxjeWdwTzF4dVhHNGdJQ0FnY21WMGRYSnVJR04wZUZ4dUlDQWdJQ0FnUHlCMGFHbHpMbDl3WlhKemFYTjBaVzVqWlNCcGJuTjBZVzVqWlc5bUlGSmxjRzl6YVhSdmNubGNiaUFnSUNBZ0lDQWdQeUIwYUdsekxsOXdaWEp6YVhOMFpXNWpaUzV2ZG1WeWNtbGtaU2h2ZG1WeWNtbGtaWE1wWEc0Z0lDQWdJQ0FnSURvZ2RHaHBjeTVmY0dWeWMybHpkR1Z1WTJVdVptOXlLRzkyWlhKeWFXUmxjeWxjYmlBZ0lDQWdJRG9nZEdocGN5NWZjR1Z5YzJsemRHVnVZMlU3WEc0Z0lIMWNibjFjYmlKZGZRPT0iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJvbGxlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsSUFBSSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25GLE9BQU8sRUFFTCxZQUFZLEVBRVosVUFBVSxFQUNWLE9BQU8sR0FDUixNQUFNLGdCQUFnQixDQUFDO0FBTXhCLE1BQU0sT0FBZ0IsZUFHcEIsU0FBUSxtQkFBc0Q7SUFDOUQsWUFDcUIsYUFBa0MsRUFDckQsS0FBYTtRQUViLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUhGLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtJQUl2RCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQWdCLG9CQUdwQixTQUFRLGVBQWtCO0lBRzFCLFlBQzhCLGFBQWtDLEVBQzlELEtBQWE7UUFFYixLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBSEEsa0JBQWEsR0FBYixhQUFhLENBQXFCO0lBSWhFLENBQUM7SUFJRCxXQUFXLENBQUMsR0FBa0I7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO1lBQ3BCLElBQUksQ0FBQztnQkFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQWtCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvRCxDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLElBQUksQ0FBQztvQkFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQ3pDLElBQUksQ0FBQyxLQUFLLENBQ1EsQ0FBQztnQkFDdkIsQ0FBQztnQkFBQyxNQUFNLENBQUM7b0JBQ1AsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQVksQ0FBQztnQkFDakUsQ0FBQztZQUNILENBQUM7UUFFSCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRW5ELE9BQU8sR0FBRztZQUNSLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxZQUFZLFVBQVU7Z0JBQ3ZDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7Z0JBQ3ZDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7WUFDcEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDeEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBSZXF1ZXN0IH0gZnJvbSBcImV4cHJlc3NcIjtcbmltcG9ydCB7IERlY2FmQ29udHJvbGxlciBhcyBIdHRwRGVjYWZDb250cm9sbGVyIH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItaHR0cC9zZXJ2ZXJcIjtcbmltcG9ydCB7XG4gIENvbnRleHQsXG4gIE1vZGVsU2VydmljZSxcbiAgUmVwbyxcbiAgUmVwb3NpdG9yeSxcbiAgU2VydmljZSxcbn0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBNb2RlbCwgdHlwZSBNb2RlbENvbnN0cnVjdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuXG5pbXBvcnQgeyBEZWNhZlNlcnZlckN0eCB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgRGVjYWZSZXF1ZXN0Q29udGV4dCB9IGZyb20gXCIuL3JlcXVlc3QvRGVjYWZSZXF1ZXN0Q29udGV4dFwiO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGVjYWZDb250cm9sbGVyPFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIENPTlRFWFQgZXh0ZW5kcyBEZWNhZlNlcnZlckN0eCA9IERlY2FmU2VydmVyQ3R4LFxuPiBleHRlbmRzIEh0dHBEZWNhZkNvbnRyb2xsZXI8UmVxdWVzdCwgYW55LCBEZWNhZlJlcXVlc3RDb250ZXh0PiB7XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2xpZW50Q29udGV4dDogRGVjYWZSZXF1ZXN0Q29udGV4dCxcbiAgICBfbmFtZTogc3RyaW5nXG4gICkge1xuICAgIHN1cGVyKGNsaWVudENvbnRleHQpO1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEZWNhZk1vZGVsQ29udHJvbGxlcjxcbiAgTSBleHRlbmRzIE1vZGVsPGJvb2xlYW4+LFxuICBDIGV4dGVuZHMgRGVjYWZTZXJ2ZXJDdHggPSBEZWNhZlNlcnZlckN0eCxcbj4gZXh0ZW5kcyBEZWNhZkNvbnRyb2xsZXI8Qz4ge1xuICBwcml2YXRlIF9wZXJzaXN0ZW5jZT86IFJlcG88TT4gfCBNb2RlbFNlcnZpY2U8TT47XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSBjbGllbnRDb250ZXh0OiBEZWNhZlJlcXVlc3RDb250ZXh0LFxuICAgIF9uYW1lOiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIoY2xpZW50Q29udGV4dCwgX25hbWUpO1xuICB9XG5cbiAgYWJzdHJhY3QgZ2V0IGNsYXNzKCk6IE1vZGVsQ29uc3RydWN0b3I8TT47XG5cbiAgcGVyc2lzdGVuY2UoY3R4PzogQ29udGV4dDxhbnk+KTogUmVwbzxNPiB8IE1vZGVsU2VydmljZTxNPiB7XG4gICAgaWYgKCF0aGlzLl9wZXJzaXN0ZW5jZSlcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuX3BlcnNpc3RlbmNlID0gU2VydmljZS5nZXQ8TW9kZWxTZXJ2aWNlPE0+Pih0aGlzLmNsYXNzKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuX3BlcnNpc3RlbmNlID0gTW9kZWxTZXJ2aWNlLmdldFNlcnZpY2UoXG4gICAgICAgICAgICB0aGlzLmNsYXNzXG4gICAgICAgICAgKSBhcyBNb2RlbFNlcnZpY2U8TT47XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHRoaXMuX3BlcnNpc3RlbmNlID0gUmVwb3NpdG9yeS5mb3JNb2RlbCh0aGlzLmNsYXNzKSBhcyBSZXBvPE0+O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICBjb25zdCBvdmVycmlkZXMgPSB0aGlzLmNsaWVudENvbnRleHQudG9PdmVycmlkZXMoKTtcblxuICAgIHJldHVybiBjdHhcbiAgICAgID8gdGhpcy5fcGVyc2lzdGVuY2UgaW5zdGFuY2VvZiBSZXBvc2l0b3J5XG4gICAgICAgID8gdGhpcy5fcGVyc2lzdGVuY2Uub3ZlcnJpZGUob3ZlcnJpZGVzKVxuICAgICAgICA6IHRoaXMuX3BlcnNpc3RlbmNlLmZvcihvdmVycmlkZXMpXG4gICAgICA6IHRoaXMuX3BlcnNpc3RlbmNlO1xuICB9XG59XG4iXX0=
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb250cm9sbGVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzREFBbUY7QUFDbkYseUNBQW9FO0FBQ3BFLE1BQWEsZUFBZ0IsU0FBUSx3QkFBbUI7SUFDcEQsWUFBWSxhQUFhLEVBQUUsS0FBSztRQUM1QixLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDdkMsQ0FBQztDQUNKO0FBTEQsMENBS0M7QUFDRCxNQUFhLG9CQUFxQixTQUFRLGVBQWU7SUFDckQsWUFBWSxhQUFhLEVBQUUsS0FBSztRQUM1QixLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxXQUFXLENBQUMsR0FBRztRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUNsQixJQUFJLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxjQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoRCxDQUFDO1lBQ0QsTUFBTSxDQUFDO2dCQUNILElBQUksQ0FBQztvQkFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLG1CQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDNUQsQ0FBQztnQkFDRCxNQUFNLENBQUM7b0JBQ0gsSUFBSSxDQUFDLFlBQVksR0FBRyxpQkFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hELENBQUM7WUFDTCxDQUFDO1FBQ0wsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuRCxPQUFPLEdBQUc7WUFDTixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksWUFBWSxpQkFBVTtnQkFDckMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztnQkFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztZQUN0QyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM1QixDQUFDO0NBQ0o7QUF6QkQsb0RBeUJDO0FBQ0Qsa21JQUFrbUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWNhZkNvbnRyb2xsZXIgYXMgSHR0cERlY2FmQ29udHJvbGxlciB9IGZyb20gXCJAZGVjYWYtdHMvZm9yLWh0dHAvc2VydmVyXCI7XG5pbXBvcnQgeyBNb2RlbFNlcnZpY2UsIFJlcG9zaXRvcnksIFNlcnZpY2UsIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5leHBvcnQgY2xhc3MgRGVjYWZDb250cm9sbGVyIGV4dGVuZHMgSHR0cERlY2FmQ29udHJvbGxlciB7XG4gICAgY29uc3RydWN0b3IoY2xpZW50Q29udGV4dCwgX25hbWUpIHtcbiAgICAgICAgc3VwZXIoY2xpZW50Q29udGV4dCk7XG4gICAgICAgIHRoaXMuY2xpZW50Q29udGV4dCA9IGNsaWVudENvbnRleHQ7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIERlY2FmTW9kZWxDb250cm9sbGVyIGV4dGVuZHMgRGVjYWZDb250cm9sbGVyIHtcbiAgICBjb25zdHJ1Y3RvcihjbGllbnRDb250ZXh0LCBfbmFtZSkge1xuICAgICAgICBzdXBlcihjbGllbnRDb250ZXh0LCBfbmFtZSk7XG4gICAgICAgIHRoaXMuY2xpZW50Q29udGV4dCA9IGNsaWVudENvbnRleHQ7XG4gICAgfVxuICAgIHBlcnNpc3RlbmNlKGN0eCkge1xuICAgICAgICBpZiAoIXRoaXMuX3BlcnNpc3RlbmNlKVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wZXJzaXN0ZW5jZSA9IFNlcnZpY2UuZ2V0KHRoaXMuY2xhc3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2gge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3BlcnNpc3RlbmNlID0gTW9kZWxTZXJ2aWNlLmdldFNlcnZpY2UodGhpcy5jbGFzcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGVyc2lzdGVuY2UgPSBSZXBvc2l0b3J5LmZvck1vZGVsKHRoaXMuY2xhc3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3ZlcnJpZGVzID0gdGhpcy5jbGllbnRDb250ZXh0LnRvT3ZlcnJpZGVzKCk7XG4gICAgICAgIHJldHVybiBjdHhcbiAgICAgICAgICAgID8gdGhpcy5fcGVyc2lzdGVuY2UgaW5zdGFuY2VvZiBSZXBvc2l0b3J5XG4gICAgICAgICAgICAgICAgPyB0aGlzLl9wZXJzaXN0ZW5jZS5vdmVycmlkZShvdmVycmlkZXMpXG4gICAgICAgICAgICAgICAgOiB0aGlzLl9wZXJzaXN0ZW5jZS5mb3Iob3ZlcnJpZGVzKVxuICAgICAgICAgICAgOiB0aGlzLl9wZXJzaXN0ZW5jZTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZMjl1ZEhKdmJHeGxjbk11YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk5emNtTXZZMjl1ZEhKdmJHeGxjbk11ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlEwRXNUMEZCVHl4RlFVRkZMR1ZCUVdVc1NVRkJTU3h0UWtGQmJVSXNSVUZCUlN4TlFVRk5MREpDUVVFeVFpeERRVUZETzBGQlEyNUdMRTlCUVU4c1JVRkZUQ3haUVVGWkxFVkJSVm9zVlVGQlZTeEZRVU5XTEU5QlFVOHNSMEZEVWl4TlFVRk5MR2RDUVVGblFpeERRVUZETzBGQlRYaENMRTFCUVUwc1QwRkJaMElzWlVGSGNFSXNVMEZCVVN4dFFrRkJjMFE3U1VGRE9VUXNXVUZEY1VJc1lVRkJhME1zUlVGRGNrUXNTMEZCWVR0UlFVVmlMRXRCUVVzc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF6dFJRVWhHTEd0Q1FVRmhMRWRCUVdJc1lVRkJZU3hEUVVGeFFqdEpRVWwyUkN4RFFVRkRPME5CUTBZN1FVRkZSQ3hOUVVGTkxFOUJRV2RDTEc5Q1FVZHdRaXhUUVVGUkxHVkJRV3RDTzBsQlJ6RkNMRmxCUXpoQ0xHRkJRV3RETEVWQlF6bEVMRXRCUVdFN1VVRkZZaXhMUVVGTExFTkJRVU1zWVVGQllTeEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCU0VFc2EwSkJRV0VzUjBGQllpeGhRVUZoTEVOQlFYRkNPMGxCU1doRkxFTkJRVU03U1VGSlJDeFhRVUZYTEVOQlFVTXNSMEZCYTBJN1VVRkROVUlzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpPMWxCUTNCQ0xFbEJRVWtzUTBGQlF6dG5Ra0ZEU0N4SlFVRkpMRU5CUVVNc1dVRkJXU3hIUVVGSExFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFXdENMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFpRVU12UkN4RFFVRkRPMWxCUVVNc1RVRkJUU3hEUVVGRE8yZENRVU5RTEVsQlFVa3NRMEZCUXp0dlFrRkRTQ3hKUVVGSkxFTkJRVU1zV1VGQldTeEhRVUZITEZsQlFWa3NRMEZCUXl4VlFVRlZMRU5CUTNwRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlExRXNRMEZCUXp0blFrRkRka0lzUTBGQlF6dG5Ra0ZCUXl4TlFVRk5MRU5CUVVNN2IwSkJRMUFzU1VGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4VlFVRlZMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFWa3NRMEZCUXp0blFrRkRha1VzUTBGQlF6dFpRVU5JTEVOQlFVTTdVVUZGU0N4TlFVRk5MRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRPMUZCUlc1RUxFOUJRVThzUjBGQlJ6dFpRVU5TTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3haUVVGWkxGVkJRVlU3WjBKQlEzWkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEZGQlFWRXNRMEZCUXl4VFFVRlRMRU5CUVVNN1owSkJRM1pETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFZEJRVWNzUTBGQlF5eFRRVUZUTEVOQlFVTTdXVUZEY0VNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTTdTVUZEZUVJc1EwRkJRenREUVVOR0lpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIc2dkSGx3WlNCU1pYRjFaWE4wSUgwZ1puSnZiU0JjSW1WNGNISmxjM05jSWp0Y2JtbHRjRzl5ZENCN0lFUmxZMkZtUTI5dWRISnZiR3hsY2lCaGN5QklkSFJ3UkdWallXWkRiMjUwY205c2JHVnlJSDBnWm5KdmJTQmNJa0JrWldOaFppMTBjeTltYjNJdGFIUjBjQzl6WlhKMlpYSmNJanRjYm1sdGNHOXlkQ0I3WEc0Z0lFTnZiblJsZUhRc1hHNGdJRTF2WkdWc1UyVnlkbWxqWlN4Y2JpQWdVbVZ3Ynl4Y2JpQWdVbVZ3YjNOcGRHOXllU3hjYmlBZ1UyVnlkbWxqWlN4Y2JuMGdabkp2YlNCY0lrQmtaV05oWmkxMGN5OWpiM0psWENJN1hHNXBiWEJ2Y25RZ2V5Qk5iMlJsYkN3Z2RIbHdaU0JOYjJSbGJFTnZibk4wY25WamRHOXlJSDBnWm5KdmJTQmNJa0JrWldOaFppMTBjeTlrWldOdmNtRjBiM0l0ZG1Gc2FXUmhkR2x2Ymx3aU8xeHVYRzVwYlhCdmNuUWdleUJFWldOaFpsTmxjblpsY2tOMGVDQjlJR1p5YjIwZ1hDSXVMMk52Ym5OMFlXNTBjMXdpTzF4dWFXMXdiM0owSUhzZ1JHVmpZV1pTWlhGMVpYTjBRMjl1ZEdWNGRDQjlJR1p5YjIwZ1hDSXVMM0psY1hWbGMzUXZSR1ZqWVdaU1pYRjFaWE4wUTI5dWRHVjRkRndpTzF4dVhHNWxlSEJ2Y25RZ1lXSnpkSEpoWTNRZ1kyeGhjM01nUkdWallXWkRiMjUwY205c2JHVnlQRnh1SUNBdkx5QmxjMnhwYm5RdFpHbHpZV0pzWlMxdVpYaDBMV3hwYm1VZ1FIUjVjR1Z6WTNKcGNIUXRaWE5zYVc1MEwyNXZMWFZ1ZFhObFpDMTJZWEp6WEc0Z0lFTlBUbFJGV0ZRZ1pYaDBaVzVrY3lCRVpXTmhabE5sY25abGNrTjBlQ0E5SUVSbFkyRm1VMlZ5ZG1WeVEzUjRMRnh1UGlCbGVIUmxibVJ6SUVoMGRIQkVaV05oWmtOdmJuUnliMnhzWlhJOFVtVnhkV1Z6ZEN3Z1lXNTVMQ0JFWldOaFpsSmxjWFZsYzNSRGIyNTBaWGgwUGlCN1hHNGdJSEJ5YjNSbFkzUmxaQ0JqYjI1emRISjFZM1J2Y2loY2JpQWdJQ0J3Y205MFpXTjBaV1FnY21WaFpHOXViSGtnWTJ4cFpXNTBRMjl1ZEdWNGREb2dSR1ZqWVdaU1pYRjFaWE4wUTI5dWRHVjRkQ3hjYmlBZ0lDQmZibUZ0WlRvZ2MzUnlhVzVuWEc0Z0lDa2dlMXh1SUNBZ0lITjFjR1Z5S0dOc2FXVnVkRU52Ym5SbGVIUXBPMXh1SUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JoWW5OMGNtRmpkQ0JqYkdGemN5QkVaV05oWmsxdlpHVnNRMjl1ZEhKdmJHeGxjanhjYmlBZ1RTQmxlSFJsYm1SeklFMXZaR1ZzUEdKdmIyeGxZVzQrTEZ4dUlDQkRJR1Y0ZEdWdVpITWdSR1ZqWVdaVFpYSjJaWEpEZEhnZ1BTQkVaV05oWmxObGNuWmxja04wZUN4Y2JqNGdaWGgwWlc1a2N5QkVaV05oWmtOdmJuUnliMnhzWlhJOFF6NGdlMXh1SUNCd2NtbDJZWFJsSUY5d1pYSnphWE4wWlc1alpUODZJRkpsY0c4OFRUNGdmQ0JOYjJSbGJGTmxjblpwWTJVOFRUNDdYRzVjYmlBZ2NISnZkR1ZqZEdWa0lHTnZibk4wY25WamRHOXlLRnh1SUNBZ0lIQnliM1JsWTNSbFpDQnZkbVZ5Y21sa1pTQnlaV0ZrYjI1c2VTQmpiR2xsYm5SRGIyNTBaWGgwT2lCRVpXTmhabEpsY1hWbGMzUkRiMjUwWlhoMExGeHVJQ0FnSUY5dVlXMWxPaUJ6ZEhKcGJtZGNiaUFnS1NCN1hHNGdJQ0FnYzNWd1pYSW9ZMnhwWlc1MFEyOXVkR1Y0ZEN3Z1gyNWhiV1VwTzF4dUlDQjlYRzVjYmlBZ1lXSnpkSEpoWTNRZ1oyVjBJR05zWVhOektDazZJRTF2WkdWc1EyOXVjM1J5ZFdOMGIzSThUVDQ3WEc1Y2JpQWdjR1Z5YzJsemRHVnVZMlVvWTNSNFB6b2dRMjl1ZEdWNGREeGhibmsrS1RvZ1VtVndienhOUGlCOElFMXZaR1ZzVTJWeWRtbGpaVHhOUGlCN1hHNGdJQ0FnYVdZZ0tDRjBhR2x6TGw5d1pYSnphWE4wWlc1alpTbGNiaUFnSUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVYM0JsY25OcGMzUmxibU5sSUQwZ1UyVnlkbWxqWlM1blpYUThUVzlrWld4VFpYSjJhV05sUEUwK1BpaDBhR2x6TG1Oc1lYTnpLVHRjYmlBZ0lDQWdJSDBnWTJGMFkyZ2dlMXh1SUNBZ0lDQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQWdJSFJvYVhNdVgzQmxjbk5wYzNSbGJtTmxJRDBnVFc5a1pXeFRaWEoyYVdObExtZGxkRk5sY25acFkyVW9YRzRnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbU5zWVhOelhHNGdJQ0FnSUNBZ0lDQWdLU0JoY3lCTmIyUmxiRk5sY25acFkyVThUVDQ3WEc0Z0lDQWdJQ0FnSUgwZ1kyRjBZMmdnZTF4dUlDQWdJQ0FnSUNBZ0lIUm9hWE11WDNCbGNuTnBjM1JsYm1ObElEMGdVbVZ3YjNOcGRHOXllUzVtYjNKTmIyUmxiQ2gwYUdsekxtTnNZWE56S1NCaGN5QlNaWEJ2UEUwK08xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCdmRtVnljbWxrWlhNZ1BTQjBhR2x6TG1Oc2FXVnVkRU52Ym5SbGVIUXVkRzlQZG1WeWNtbGtaWE1vS1R0Y2JseHVJQ0FnSUhKbGRIVnliaUJqZEhoY2JpQWdJQ0FnSUQ4Z2RHaHBjeTVmY0dWeWMybHpkR1Z1WTJVZ2FXNXpkR0Z1WTJWdlppQlNaWEJ2YzJsMGIzSjVYRzRnSUNBZ0lDQWdJRDhnZEdocGN5NWZjR1Z5YzJsemRHVnVZMlV1YjNabGNuSnBaR1VvYjNabGNuSnBaR1Z6S1Z4dUlDQWdJQ0FnSUNBNklIUm9hWE11WDNCbGNuTnBjM1JsYm1ObExtWnZjaWh2ZG1WeWNtbGtaWE1wWEc0Z0lDQWdJQ0E2SUhSb2FYTXVYM0JsY25OcGMzUmxibU5sTzF4dUlDQjlYRzU5WEc0aVhYMD0iXX0=
@@ -45,6 +45,11 @@ function getModuleFor(flavour) {
45
45
  const log = this.log.for(this.forRoot);
46
46
  log.info(`Generating controllers for flavour...`);
47
47
  const trackedModels = core_1.Adapter.models(flavour).filter((model) => this.isExposed(model, options.controllerExposure));
48
+ // Controllers always rely on a backing ModelService, even when Nest providers
49
+ // are not auto-registered. Warm the singleton registry here so shutdown can
50
+ // see the live services created for the generated controllers.
51
+ for (const model of trackedModels)
52
+ core_1.ModelService.forModel(model);
48
53
  let modelServices = [];
49
54
  if (options.autoServices) {
50
55
  log.info("Auto-services enabled. Initializing service generation.");
@@ -74,5 +79,5 @@ function getModuleFor(flavour) {
74
79
  });
75
80
  return DecafModelModule;
76
81
  }
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjYWZNb2RlbE1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWNhZi1tb2RlbC9EZWNhZk1vZGVsTW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBaUIsTUFBTSxFQUFZLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlDQUE4QjtBQUc1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSwwQkFBcUI7QUFHNUMsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFlOztJQUUxQyxJQUFNLGdCQUFnQixHQUF0QixNQUFNLGdCQUFnQjs7aUJBQ0osUUFBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxBQUFsRCxDQUFtRDtRQUV0RSxNQUFNLENBQUMsbUJBQW1CLENBQ3hCLE1BQTZCO1lBRTdCLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDNUIsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksU0FBUztnQkFDL0IsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBWSxDQUFDO2FBQ3RELENBQUMsQ0FBQyxDQUFDO1FBQ04sQ0FBQztRQUVELE1BQU0sQ0FBQyxTQUFTLENBQ2QsS0FBNEIsRUFDNUIsUUFBNkM7WUFFN0MsTUFBTSxRQUFRLEdBQUcsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sS0FBSyxHQUNULE9BQU8sUUFBUSxLQUFLLFdBQVc7Z0JBQzdCLENBQUMsQ0FBQyxRQUFRO2dCQUNWLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFFdEQsSUFBSSxPQUFPLEtBQUssS0FBSyxXQUFXO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQzlDLElBQUksS0FBSyxLQUFLLElBQUk7Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDaEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFBRSxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxDQUFDLE9BQU8sQ0FDWixPQUFlLEVBQ2YsVUFBdUMsRUFBRTtZQUV6QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkMsR0FBRyxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1lBRWxELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDN0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQ2xELENBQUM7WUFFRixJQUFJLGFBQWEsR0FBZSxFQUFFLENBQUM7WUFDbkMsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3pCLEdBQUcsQ0FBQyxJQUFJLENBQUMseURBQXlELENBQUMsQ0FBQztnQkFDcEUsYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDeEQsR0FBRyxDQUFDLElBQUksQ0FDTiw0QkFBNEIsYUFBYSxDQUFDLE1BQU0sd0JBQXdCLENBQ3pFLENBQUM7WUFDSixDQUFDO1lBRUQsTUFBTSxjQUFjLEdBQTBDLEVBQUUsQ0FBQztZQUNqRSxJQUFJLE9BQU8sQ0FBQyxZQUFZLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQ25DLGNBQWMsQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7WUFDOUMsQ0FBQztZQUVELE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUM5QyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsQ0FDNUUsQ0FBQztZQUNGLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxXQUFXLENBQUMsTUFBTSxjQUFjLENBQUMsQ0FBQztZQUV4RCxPQUFPO2dCQUNMLE1BQU0sRUFBRSxrQkFBZ0I7Z0JBQ3hCLFdBQVc7Z0JBQ1gsU0FBUyxFQUFFO29CQUNULEdBQUcsYUFBYTtpQkFDakI7YUFDRixDQUFDO1FBQ0osQ0FBQzs7SUFqRUcsZ0JBQWdCO1FBRHJCLE1BQU0sQ0FBQyxFQUFFLENBQUM7T0FDTCxnQkFBZ0IsQ0FrRXJCO0lBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUU7UUFDdEMsS0FBSyxFQUFFLGNBQWMsT0FBTyxFQUFFO0tBQy9CLENBQUMsQ0FBQztJQUNILE9BQU8sZ0JBQWdCLENBQUM7QUFDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER5bmFtaWNNb2R1bGUsIE1vZHVsZSwgUHJvdmlkZXIgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IEFkYXB0ZXIsIE1vZGVsU2VydmljZSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgTG9nZ2luZyB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgRnJvbU1vZGVsQ29udHJvbGxlciB9IGZyb20gXCIuL0Zyb21Nb2RlbENvbnRyb2xsZXJcIjtcbmltcG9ydCB7IERlY2FmTW9kdWxlT3B0aW9ucyB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgTW9kZWwsIE1vZGVsQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBNZXRhZGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHsgREVDQUZfRVhQT1NFIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHR5cGUgeyBNb2RlbENvbnRyb2xsZXJGYWN0b3J5Q29uZmlnIH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItaHR0cC9zZXJ2ZXJcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vZHVsZUZvcihmbGF2b3VyOiBzdHJpbmcpIHtcbiAgQE1vZHVsZSh7fSlcbiAgY2xhc3MgRGVjYWZNb2RlbE1vZHVsZSB7XG4gICAgc3RhdGljIHJlYWRvbmx5IGxvZyA9IExvZ2dpbmcuZm9yKERlY2FmTW9kZWxNb2R1bGUubmFtZSkuZm9yKGZsYXZvdXIpO1xuXG4gICAgc3RhdGljIGNyZWF0ZU1vZGVsU2VydmljZXM8VCBleHRlbmRzIE1vZGVsPGJvb2xlYW4+PihcbiAgICAgIG1vZGVsczogTW9kZWxDb25zdHJ1Y3RvcjxUPltdXG4gICAgKTogUHJvdmlkZXJbXSB7XG4gICAgICByZXR1cm4gbW9kZWxzLm1hcCgobW9kZWwpID0+ICh7XG4gICAgICAgIHByb3ZpZGU6IGAke21vZGVsLm5hbWV9U2VydmljZWAsXG4gICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IE1vZGVsU2VydmljZS5mb3JNb2RlbChtb2RlbCBhcyBhbnkpLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIHN0YXRpYyBpc0V4cG9zZWQoXG4gICAgICBtb2RlbDogTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+LFxuICAgICAgZXhwb3N1cmU/OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuIHwgc3RyaW5nW10+XG4gICAgKTogYm9vbGVhbiB7XG4gICAgICBjb25zdCBvdmVycmlkZSA9IGV4cG9zdXJlPy5bbW9kZWwubmFtZV07XG4gICAgICBjb25zdCB2YWx1ZSA9XG4gICAgICAgIHR5cGVvZiBvdmVycmlkZSAhPT0gXCJ1bmRlZmluZWRcIlxuICAgICAgICAgID8gb3ZlcnJpZGVcbiAgICAgICAgICA6IE1ldGFkYXRhLmdldChtb2RlbCwgTWV0YWRhdGEua2V5KERFQ0FGX0VYUE9TRSkpO1xuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gdHJ1ZTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSkgcmV0dXJuIHRydWU7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiB2YWx1ZS5pbmNsdWRlcyhmbGF2b3VyKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZm9yUm9vdChcbiAgICAgIGZsYXZvdXI6IHN0cmluZyxcbiAgICAgIG9wdGlvbnM6IFBhcnRpYWw8RGVjYWZNb2R1bGVPcHRpb25zPiA9IHt9XG4gICAgKTogRHluYW1pY01vZHVsZSB7XG4gICAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5mb3JSb290KTtcbiAgICAgIGxvZy5pbmZvKGBHZW5lcmF0aW5nIGNvbnRyb2xsZXJzIGZvciBmbGF2b3VyLi4uYCk7XG5cbiAgICAgIGNvbnN0IHRyYWNrZWRNb2RlbHMgPSBBZGFwdGVyLm1vZGVscyhmbGF2b3VyKS5maWx0ZXIoKG1vZGVsKSA9PlxuICAgICAgICB0aGlzLmlzRXhwb3NlZChtb2RlbCwgb3B0aW9ucy5jb250cm9sbGVyRXhwb3N1cmUpXG4gICAgICApO1xuXG4gICAgICBsZXQgbW9kZWxTZXJ2aWNlczogUHJvdmlkZXJbXSA9IFtdO1xuICAgICAgaWYgKG9wdGlvbnMuYXV0b1NlcnZpY2VzKSB7XG4gICAgICAgIGxvZy5pbmZvKFwiQXV0by1zZXJ2aWNlcyBlbmFibGVkLiBJbml0aWFsaXppbmcgc2VydmljZSBnZW5lcmF0aW9uLlwiKTtcbiAgICAgICAgbW9kZWxTZXJ2aWNlcyA9IHRoaXMuY3JlYXRlTW9kZWxTZXJ2aWNlcyh0cmFja2VkTW9kZWxzKTtcbiAgICAgICAgbG9nLmluZm8oXG4gICAgICAgICAgYEF1dG8tc2VydmljZXMgY29tcGxldGVkLiAke21vZGVsU2VydmljZXMubGVuZ3RofSBzZXJ2aWNlcyBpbml0aWFsaXplZC5gXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGdsb2JhbERlZmF1bHRzOiBQYXJ0aWFsPE1vZGVsQ29udHJvbGxlckZhY3RvcnlDb25maWc+ID0ge307XG4gICAgICBpZiAob3B0aW9ucy5hZ2dyZWdhdGlvbnMgPT09IGZhbHNlKSB7XG4gICAgICAgIGdsb2JhbERlZmF1bHRzLmFsbG93R3JvdXBpbmdRdWVyaWVzID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbnRyb2xsZXJzID0gdHJhY2tlZE1vZGVscy5tYXAoKG1vZGVsKSA9PlxuICAgICAgICBGcm9tTW9kZWxDb250cm9sbGVyLmNyZWF0ZShtb2RlbCwgb3B0aW9ucy5jb250cm9sbGVyQ29uZmlnLCBnbG9iYWxEZWZhdWx0cylcbiAgICAgICk7XG4gICAgICBsb2cuaW5mbyhgR2VuZXJhdGVkICR7Y29udHJvbGxlcnMubGVuZ3RofSBjb250cm9sbGVyc2ApO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBtb2R1bGU6IERlY2FmTW9kZWxNb2R1bGUsXG4gICAgICAgIGNvbnRyb2xsZXJzLFxuICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAuLi5tb2RlbFNlcnZpY2VzLFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgT2JqZWN0LmFzc2lnbihEZWNhZk1vZGVsTW9kdWxlLCBcIm5hbWVcIiwge1xuICAgIHZhbHVlOiBgRGVjYWZNb2R1bGUke2ZsYXZvdXJ9YCxcbiAgfSk7XG4gIHJldHVybiBEZWNhZk1vZGVsTW9kdWxlO1xufVxuIl19
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjYWZNb2RlbE1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkRlY2FmTW9kZWxNb2R1bGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFZQSxvQ0F3REM7QUFwRUQsSUFBSSxVQUFVLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSTtJQUNqRixJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdILElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sT0FBTyxDQUFDLFFBQVEsS0FBSyxVQUFVO1FBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7O1FBQzFILEtBQUssSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFBRSxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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LFlBQVksS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDakMsY0FBYyxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztZQUNoRCxDQUFDO1lBQ0QsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsNENBQW1CLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUM5SCxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsV0FBVyxDQUFDLE1BQU0sY0FBYyxDQUFDLENBQUM7WUFDeEQsT0FBTztnQkFDSCxNQUFNLEVBQUUsa0JBQWtCO2dCQUMxQixXQUFXO2dCQUNYLFNBQVMsRUFBRTtvQkFDUCxHQUFHLGFBQWE7aUJBQ25CO2FBQ0osQ0FBQztRQUNOLENBQUM7S0FDSixDQUFDO0lBQ0YsZ0JBQWdCLEdBQUcsa0JBQWtCLEdBQUcsVUFBVSxDQUFDO1FBQy9DLElBQUEsZUFBTSxFQUFDLEVBQUUsQ0FBQztLQUNiLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUNyQixNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLE1BQU0sRUFBRTtRQUNwQyxLQUFLLEVBQUUsY0FBYyxPQUFPLEVBQUU7S0FDakMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxnQkFBZ0IsQ0FBQztBQUM1QixDQUFDO0FBQ0QsOGpPQUE4ak8iLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19kZWNvcmF0ZSA9ICh0aGlzICYmIHRoaXMuX19kZWNvcmF0ZSkgfHwgZnVuY3Rpb24gKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcbn07XG5pbXBvcnQgeyBNb2R1bGUgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IEFkYXB0ZXIsIE1vZGVsU2VydmljZSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgTG9nZ2luZyB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgRnJvbU1vZGVsQ29udHJvbGxlciB9IGZyb20gXCIuL0Zyb21Nb2RlbENvbnRyb2xsZXIuanNcIjtcbmltcG9ydCB7IE1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyBERUNBRl9FWFBPU0UgfSBmcm9tIFwiLi8uLi9jb25zdGFudHMuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBnZXRNb2R1bGVGb3IoZmxhdm91cikge1xuICAgIHZhciBEZWNhZk1vZGVsTW9kdWxlXzE7XG4gICAgbGV0IERlY2FmTW9kZWxNb2R1bGUgPSBjbGFzcyBEZWNhZk1vZGVsTW9kdWxlIHtcbiAgICAgICAgc3RhdGljIHsgRGVjYWZNb2RlbE1vZHVsZV8xID0gdGhpczsgfVxuICAgICAgICBzdGF0aWMgeyB0aGlzLmxvZyA9IExvZ2dpbmcuZm9yKERlY2FmTW9kZWxNb2R1bGVfMS5uYW1lKS5mb3IoZmxhdm91cik7IH1cbiAgICAgICAgc3RhdGljIGNyZWF0ZU1vZGVsU2VydmljZXMobW9kZWxzKSB7XG4gICAgICAgICAgICByZXR1cm4gbW9kZWxzLm1hcCgobW9kZWwpID0+ICh7XG4gICAgICAgICAgICAgICAgcHJvdmlkZTogYCR7bW9kZWwubmFtZX1TZXJ2aWNlYCxcbiAgICAgICAgICAgICAgICB1c2VGYWN0b3J5OiAoKSA9PiBNb2RlbFNlcnZpY2UuZm9yTW9kZWwobW9kZWwpLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyBpc0V4cG9zZWQobW9kZWwsIGV4cG9zdXJlKSB7XG4gICAgICAgICAgICBjb25zdCBvdmVycmlkZSA9IGV4cG9zdXJlPy5bbW9kZWwubmFtZV07XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHR5cGVvZiBvdmVycmlkZSAhPT0gXCJ1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgID8gb3ZlcnJpZGVcbiAgICAgICAgICAgICAgICA6IE1ldGFkYXRhLmdldChtb2RlbCwgTWV0YWRhdGEua2V5KERFQ0FGX0VYUE9TRSkpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUuaW5jbHVkZXMoZmxhdm91cik7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGljIGZvclJvb3QoZmxhdm91ciwgb3B0aW9ucyA9IHt9KSB7XG4gICAgICAgICAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5mb3JSb290KTtcbiAgICAgICAgICAgIGxvZy5pbmZvKGBHZW5lcmF0aW5nIGNvbnRyb2xsZXJzIGZvciBmbGF2b3VyLi4uYCk7XG4gICAgICAgICAgICBjb25zdCB0cmFja2VkTW9kZWxzID0gQWRhcHRlci5tb2RlbHMoZmxhdm91cikuZmlsdGVyKChtb2RlbCkgPT4gdGhpcy5pc0V4cG9zZWQobW9kZWwsIG9wdGlvbnMuY29udHJvbGxlckV4cG9zdXJlKSk7XG4gICAgICAgICAgICBsZXQgbW9kZWxTZXJ2aWNlcyA9IFtdO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYXV0b1NlcnZpY2VzKSB7XG4gICAgICAgICAgICAgICAgbG9nLmluZm8oXCJBdXRvLXNlcnZpY2VzIGVuYWJsZWQuIEluaXRpYWxpemluZyBzZXJ2aWNlIGdlbmVyYXRpb24uXCIpO1xuICAgICAgICAgICAgICAgIG1vZGVsU2VydmljZXMgPSB0aGlzLmNyZWF0ZU1vZGVsU2VydmljZXModHJhY2tlZE1vZGVscyk7XG4gICAgICAgICAgICAgICAgbG9nLmluZm8oYEF1dG8tc2VydmljZXMgY29tcGxldGVkLiAke21vZGVsU2VydmljZXMubGVuZ3RofSBzZXJ2aWNlcyBpbml0aWFsaXplZC5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGdsb2JhbERlZmF1bHRzID0ge307XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5hZ2dyZWdhdGlvbnMgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgZ2xvYmFsRGVmYXVsdHMuYWxsb3dHcm91cGluZ1F1ZXJpZXMgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xsZXJzID0gdHJhY2tlZE1vZGVscy5tYXAoKG1vZGVsKSA9PiBGcm9tTW9kZWxDb250cm9sbGVyLmNyZWF0ZShtb2RlbCwgb3B0aW9ucy5jb250cm9sbGVyQ29uZmlnLCBnbG9iYWxEZWZhdWx0cykpO1xuICAgICAgICAgICAgbG9nLmluZm8oYEdlbmVyYXRlZCAke2NvbnRyb2xsZXJzLmxlbmd0aH0gY29udHJvbGxlcnNgKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbW9kdWxlOiBEZWNhZk1vZGVsTW9kdWxlXzEsXG4gICAgICAgICAgICAgICAgY29udHJvbGxlcnMsXG4gICAgICAgICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICAgICAgICAgIC4uLm1vZGVsU2VydmljZXMsXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIERlY2FmTW9kZWxNb2R1bGUgPSBEZWNhZk1vZGVsTW9kdWxlXzEgPSBfX2RlY29yYXRlKFtcbiAgICAgICAgTW9kdWxlKHt9KVxuICAgIF0sIERlY2FmTW9kZWxNb2R1bGUpO1xuICAgIE9iamVjdC5hc3NpZ24oRGVjYWZNb2RlbE1vZHVsZSwgXCJuYW1lXCIsIHtcbiAgICAgICAgdmFsdWU6IGBEZWNhZk1vZHVsZSR7Zmxhdm91cn1gLFxuICAgIH0pO1xuICAgIHJldHVybiBEZWNhZk1vZGVsTW9kdWxlO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pUkdWallXWk5iMlJsYkUxdlpIVnNaUzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUwzTnlZeTlrWldOaFppMXRiMlJsYkM5RVpXTmhaazF2WkdWc1RXOWtkV3hsTG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdPenRCUVVGQkxFOUJRVThzUlVGQmFVSXNUVUZCVFN4RlFVRlpMRTFCUVUwc1owSkJRV2RDTEVOQlFVTTdRVUZEYWtVc1QwRkJUeXhGUVVGRkxFOUJRVThzUlVGQlJTeFpRVUZaTEVWQlFVVXNUVUZCVFN4blFrRkJaMElzUTBGQlF6dEJRVU4yUkN4UFFVRlBMRVZCUVVVc1QwRkJUeXhGUVVGRkxFMUJRVTBzYlVKQlFXMUNMRU5CUVVNN1FVRkROVU1zVDBGQlR5eEZRVUZGTEcxQ1FVRnRRaXhGUVVGRkxHbERRVUU0UWp0QlFVYzFSQ3hQUVVGUExFVkJRVVVzVVVGQlVTeEZRVUZGTEUxQlFVMHNjMEpCUVhOQ0xFTkJRVU03UVVGRGFFUXNUMEZCVHl4RlFVRkZMRmxCUVZrc1JVRkJSU3d3UWtGQmNVSTdRVUZITlVNc1RVRkJUU3hWUVVGVkxGbEJRVmtzUTBGQlF5eFBRVUZsT3p0SlFVVXhReXhKUVVGTkxHZENRVUZuUWl4SFFVRjBRaXhOUVVGTkxHZENRVUZuUWpzN2FVSkJRMG9zVVVGQlJ5eEhRVUZITEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc2EwSkJRV2RDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eEJRVUZzUkN4RFFVRnRSRHRSUVVWMFJTeE5RVUZOTEVOQlFVTXNiVUpCUVcxQ0xFTkJRM2hDTEUxQlFUWkNPMWxCUlRkQ0xFOUJRVThzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF6dG5Ra0ZETlVJc1QwRkJUeXhGUVVGRkxFZEJRVWNzUzBGQlN5eERRVUZETEVsQlFVa3NVMEZCVXp0blFrRkRMMElzVlVGQlZTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRMRmxCUVZrc1EwRkJReXhSUVVGUkxFTkJRVU1zUzBGQldTeERRVUZETzJGQlEzUkVMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMDRzUTBGQlF6dFJRVVZFTEUxQlFVMHNRMEZCUXl4VFFVRlRMRU5CUTJRc1MwRkJORUlzUlVGRE5VSXNVVUZCTmtNN1dVRkZOME1zVFVGQlRTeFJRVUZSTEVkQlFVY3NVVUZCVVN4RlFVRkZMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFsQlEzaERMRTFCUVUwc1MwRkJTeXhIUVVOVUxFOUJRVThzVVVGQlVTeExRVUZMTEZkQlFWYzdaMEpCUXpkQ0xFTkJRVU1zUTBGQlF5eFJRVUZSTzJkQ1FVTldMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NSVUZCUlN4UlFVRlJMRU5CUVVNc1IwRkJSeXhEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZGZEVRc1NVRkJTU3hQUVVGUExFdEJRVXNzUzBGQlN5eFhRVUZYTzJkQ1FVRkZMRTlCUVU4c1NVRkJTU3hEUVVGRE8xbEJRemxETEVsQlFVa3NTMEZCU3l4TFFVRkxMRWxCUVVrN1owSkJRVVVzVDBGQlR5eEpRVUZKTEVOQlFVTTdXVUZEYUVNc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXp0blFrRkJSU3hQUVVGUExFdEJRVXNzUTBGQlF5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1dVRkRla1FzVDBGQlR5eExRVUZMTEVOQlFVTTdVVUZEWml4RFFVRkRPMUZCUlVRc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGRFdpeFBRVUZsTEVWQlEyWXNWVUZCZFVNc1JVRkJSVHRaUVVWNlF5eE5RVUZOTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1dVRkRka01zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4MVEwRkJkVU1zUTBGQlF5eERRVUZETzFsQlJXeEVMRTFCUVUwc1lVRkJZU3hIUVVGSExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTEVWQlFVVXNRMEZETjBRc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eExRVUZMTEVWQlFVVXNUMEZCVHl4RFFVRkRMR3RDUVVGclFpeERRVUZETEVOQlEyeEVMRU5CUVVNN1dVRkZSaXhKUVVGSkxHRkJRV0VzUjBGQlpTeEZRVUZGTEVOQlFVTTdXVUZEYmtNc1NVRkJTU3hQUVVGUExFTkJRVU1zV1VGQldTeEZRVUZGTEVOQlFVTTdaMEpCUTNwQ0xFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNlVVJCUVhsRUxFTkJRVU1zUTBGQlF6dG5Ra0ZEY0VVc1lVRkJZU3hIUVVGSExFbEJRVWtzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF6dG5Ra0ZEZUVRc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGRFRpdzBRa0ZCTkVJc1lVRkJZU3hEUVVGRExFMUJRVTBzZDBKQlFYZENMRU5CUTNwRkxFTkJRVU03V1VGRFNpeERRVUZETzFsQlJVUXNUVUZCVFN4alFVRmpMRWRCUVRCRExFVkJRVVVzUTBGQlF6dFpRVU5xUlN4SlFVRkpMRTlCUVU4c1EwRkJReXhaUVVGWkxFdEJRVXNzUzBGQlN5eEZRVUZGTEVOQlFVTTdaMEpCUTI1RExHTkJRV01zUTBGQlF5eHZRa0ZCYjBJc1IwRkJSeXhMUVVGTExFTkJRVU03V1VGRE9VTXNRMEZCUXp0WlFVVkVMRTFCUVUwc1YwRkJWeXhIUVVGSExHRkJRV0VzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1JVRkJSU3hEUVVNNVF5eHRRa0ZCYlVJc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eEZRVUZGTEU5QlFVOHNRMEZCUXl4blFrRkJaMElzUlVGQlJTeGpRVUZqTEVOQlFVTXNRMEZETlVVc1EwRkJRenRaUVVOR0xFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNZVUZCWVN4WFFVRlhMRU5CUVVNc1RVRkJUU3hqUVVGakxFTkJRVU1zUTBGQlF6dFpRVVY0UkN4UFFVRlBPMmRDUVVOTUxFMUJRVTBzUlVGQlJTeHJRa0ZCWjBJN1owSkJRM2hDTEZkQlFWYzdaMEpCUTFnc1UwRkJVeXhGUVVGRk8yOUNRVU5VTEVkQlFVY3NZVUZCWVR0cFFrRkRha0k3WVVGRFJpeERRVUZETzFGQlEwb3NRMEZCUXpzN1NVRnFSVWNzWjBKQlFXZENPMUZCUkhKQ0xFMUJRVTBzUTBGQlF5eEZRVUZGTEVOQlFVTTdUMEZEVEN4blFrRkJaMElzUTBGclJYSkNPMGxCUTBRc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eG5Ra0ZCWjBJc1JVRkJSU3hOUVVGTkxFVkJRVVU3VVVGRGRFTXNTMEZCU3l4RlFVRkZMR05CUVdNc1QwRkJUeXhGUVVGRk8wdEJReTlDTEVOQlFVTXNRMEZCUXp0SlFVTklMRTlCUVU4c1owSkJRV2RDTEVOQlFVTTdRVUZETVVJc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0I3SUVSNWJtRnRhV05OYjJSMWJHVXNJRTF2WkhWc1pTd2dVSEp2ZG1sa1pYSWdmU0JtY205dElGd2lRRzVsYzNScWN5OWpiMjF0YjI1Y0lqdGNibWx0Y0c5eWRDQjdJRUZrWVhCMFpYSXNJRTF2WkdWc1UyVnlkbWxqWlNCOUlHWnliMjBnWENKQVpHVmpZV1l0ZEhNdlkyOXlaVndpTzF4dWFXMXdiM0owSUhzZ1RHOW5aMmx1WnlCOUlHWnliMjBnWENKQVpHVmpZV1l0ZEhNdmJHOW5aMmx1WjF3aU8xeHVhVzF3YjNKMElIc2dSbkp2YlUxdlpHVnNRMjl1ZEhKdmJHeGxjaUI5SUdaeWIyMGdYQ0l1TDBaeWIyMU5iMlJsYkVOdmJuUnliMnhzWlhKY0lqdGNibWx0Y0c5eWRDQjdJRVJsWTJGbVRXOWtkV3hsVDNCMGFXOXVjeUI5SUdaeWIyMGdYQ0l1TGk5MGVYQmxjMXdpTzF4dWFXMXdiM0owSUhzZ1RXOWtaV3dzSUUxdlpHVnNRMjl1YzNSeWRXTjBiM0lnZlNCbWNtOXRJRndpUUdSbFkyRm1MWFJ6TDJSbFkyOXlZWFJ2Y2kxMllXeHBaR0YwYVc5dVhDSTdYRzVwYlhCdmNuUWdleUJOWlhSaFpHRjBZU0I5SUdaeWIyMGdYQ0pBWkdWallXWXRkSE12WkdWamIzSmhkR2x2Ymx3aU8xeHVhVzF3YjNKMElIc2dSRVZEUVVaZlJWaFFUMU5GSUgwZ1puSnZiU0JjSWk0dUwyTnZibk4wWVc1MGMxd2lPMXh1YVcxd2IzSjBJSFI1Y0dVZ2V5Qk5iMlJsYkVOdmJuUnliMnhzWlhKR1lXTjBiM0o1UTI5dVptbG5JSDBnWm5KdmJTQmNJa0JrWldOaFppMTBjeTltYjNJdGFIUjBjQzl6WlhKMlpYSmNJanRjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGRFMXZaSFZzWlVadmNpaG1iR0YyYjNWeU9pQnpkSEpwYm1jcElIdGNiaUFnUUUxdlpIVnNaU2g3ZlNsY2JpQWdZMnhoYzNNZ1JHVmpZV1pOYjJSbGJFMXZaSFZzWlNCN1hHNGdJQ0FnYzNSaGRHbGpJSEpsWVdSdmJteDVJR3h2WnlBOUlFeHZaMmRwYm1jdVptOXlLRVJsWTJGbVRXOWtaV3hOYjJSMWJHVXVibUZ0WlNrdVptOXlLR1pzWVhadmRYSXBPMXh1WEc0Z0lDQWdjM1JoZEdsaklHTnlaV0YwWlUxdlpHVnNVMlZ5ZG1salpYTThWQ0JsZUhSbGJtUnpJRTF2WkdWc1BHSnZiMnhsWVc0K1BpaGNiaUFnSUNBZ0lHMXZaR1ZzY3pvZ1RXOWtaV3hEYjI1emRISjFZM1J2Y2p4VVBsdGRYRzRnSUNBZ0tUb2dVSEp2ZG1sa1pYSmJYU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdiVzlrWld4ekxtMWhjQ2dvYlc5a1pXd3BJRDArSUNoN1hHNGdJQ0FnSUNBZ0lIQnliM1pwWkdVNklHQWtlMjF2WkdWc0xtNWhiV1Y5VTJWeWRtbGpaV0FzWEc0Z0lDQWdJQ0FnSUhWelpVWmhZM1J2Y25rNklDZ3BJRDArSUUxdlpHVnNVMlZ5ZG1salpTNW1iM0pOYjJSbGJDaHRiMlJsYkNCaGN5QmhibmtwTEZ4dUlDQWdJQ0FnZlNrcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhOMFlYUnBZeUJwYzBWNGNHOXpaV1FvWEc0Z0lDQWdJQ0J0YjJSbGJEb2dUVzlrWld4RGIyNXpkSEoxWTNSdmNqeGhibmsrTEZ4dUlDQWdJQ0FnWlhod2IzTjFjbVUvT2lCU1pXTnZjbVE4YzNSeWFXNW5MQ0JpYjI5c1pXRnVJSHdnYzNSeWFXNW5XMTArWEc0Z0lDQWdLVG9nWW05dmJHVmhiaUI3WEc0Z0lDQWdJQ0JqYjI1emRDQnZkbVZ5Y21sa1pTQTlJR1Y0Y0c5emRYSmxQeTViYlc5a1pXd3VibUZ0WlYwN1hHNGdJQ0FnSUNCamIyNXpkQ0IyWVd4MVpTQTlYRzRnSUNBZ0lDQWdJSFI1Y0dWdlppQnZkbVZ5Y21sa1pTQWhQVDBnWENKMWJtUmxabWx1WldSY0lseHVJQ0FnSUNBZ0lDQWdJRDhnYjNabGNuSnBaR1ZjYmlBZ0lDQWdJQ0FnSUNBNklFMWxkR0ZrWVhSaExtZGxkQ2h0YjJSbGJDd2dUV1YwWVdSaGRHRXVhMlY1S0VSRlEwRkdYMFZZVUU5VFJTa3BPMXh1WEc0Z0lDQWdJQ0JwWmlBb2RIbHdaVzltSUhaaGJIVmxJRDA5UFNCY0luVnVaR1ZtYVc1bFpGd2lLU0J5WlhSMWNtNGdkSEoxWlR0Y2JpQWdJQ0FnSUdsbUlDaDJZV3gxWlNBOVBUMGdkSEoxWlNrZ2NtVjBkWEp1SUhSeWRXVTdYRzRnSUNBZ0lDQnBaaUFvUVhKeVlYa3VhWE5CY25KaGVTaDJZV3gxWlNrcElISmxkSFZ5YmlCMllXeDFaUzVwYm1Oc2RXUmxjeWhtYkdGMmIzVnlLVHRjYmlBZ0lDQWdJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J6ZEdGMGFXTWdabTl5VW05dmRDaGNiaUFnSUNBZ0lHWnNZWFp2ZFhJNklITjBjbWx1Wnl4Y2JpQWdJQ0FnSUc5d2RHbHZibk02SUZCaGNuUnBZV3c4UkdWallXWk5iMlIxYkdWUGNIUnBiMjV6UGlBOUlIdDlYRzRnSUNBZ0tUb2dSSGx1WVcxcFkwMXZaSFZzWlNCN1hHNGdJQ0FnSUNCamIyNXpkQ0JzYjJjZ1BTQjBhR2x6TG14dlp5NW1iM0lvZEdocGN5NW1iM0pTYjI5MEtUdGNiaUFnSUNBZ0lHeHZaeTVwYm1adktHQkhaVzVsY21GMGFXNW5JR052Ym5SeWIyeHNaWEp6SUdadmNpQm1iR0YyYjNWeUxpNHVZQ2s3WEc1Y2JpQWdJQ0FnSUdOdmJuTjBJSFJ5WVdOclpXUk5iMlJsYkhNZ1BTQkJaR0Z3ZEdWeUxtMXZaR1ZzY3lobWJHRjJiM1Z5S1M1bWFXeDBaWElvS0cxdlpHVnNLU0E5UGx4dUlDQWdJQ0FnSUNCMGFHbHpMbWx6Ulhod2IzTmxaQ2h0YjJSbGJDd2diM0IwYVc5dWN5NWpiMjUwY205c2JHVnlSWGh3YjNOMWNtVXBYRzRnSUNBZ0lDQXBPMXh1WEc0Z0lDQWdJQ0JzWlhRZ2JXOWtaV3hUWlhKMmFXTmxjem9nVUhKdmRtbGtaWEpiWFNBOUlGdGRPMXh1SUNBZ0lDQWdhV1lnS0c5d2RHbHZibk11WVhWMGIxTmxjblpwWTJWektTQjdYRzRnSUNBZ0lDQWdJR3h2Wnk1cGJtWnZLRndpUVhWMGJ5MXpaWEoyYVdObGN5QmxibUZpYkdWa0xpQkpibWwwYVdGc2FYcHBibWNnYzJWeWRtbGpaU0JuWlc1bGNtRjBhVzl1TGx3aUtUdGNiaUFnSUNBZ0lDQWdiVzlrWld4VFpYSjJhV05sY3lBOUlIUm9hWE11WTNKbFlYUmxUVzlrWld4VFpYSjJhV05sY3loMGNtRmphMlZrVFc5a1pXeHpLVHRjYmlBZ0lDQWdJQ0FnYkc5bkxtbHVabThvWEc0Z0lDQWdJQ0FnSUNBZ1lFRjFkRzh0YzJWeWRtbGpaWE1nWTI5dGNHeGxkR1ZrTGlBa2UyMXZaR1ZzVTJWeWRtbGpaWE11YkdWdVozUm9mU0J6WlhKMmFXTmxjeUJwYm1sMGFXRnNhWHBsWkM1Z1hHNGdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR052Ym5OMElHZHNiMkpoYkVSbFptRjFiSFJ6T2lCUVlYSjBhV0ZzUEUxdlpHVnNRMjl1ZEhKdmJHeGxja1poWTNSdmNubERiMjVtYVdjK0lEMGdlMzA3WEc0Z0lDQWdJQ0JwWmlBb2IzQjBhVzl1Y3k1aFoyZHlaV2RoZEdsdmJuTWdQVDA5SUdaaGJITmxLU0I3WEc0Z0lDQWdJQ0FnSUdkc2IySmhiRVJsWm1GMWJIUnpMbUZzYkc5M1IzSnZkWEJwYm1kUmRXVnlhV1Z6SUQwZ1ptRnNjMlU3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUdOdmJuTjBJR052Ym5SeWIyeHNaWEp6SUQwZ2RISmhZMnRsWkUxdlpHVnNjeTV0WVhBb0tHMXZaR1ZzS1NBOVBseHVJQ0FnSUNBZ0lDQkdjbTl0VFc5a1pXeERiMjUwY205c2JHVnlMbU55WldGMFpTaHRiMlJsYkN3Z2IzQjBhVzl1Y3k1amIyNTBjbTlzYkdWeVEyOXVabWxuTENCbmJHOWlZV3hFWldaaGRXeDBjeWxjYmlBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0JzYjJjdWFXNW1ieWhnUjJWdVpYSmhkR1ZrSUNSN1kyOXVkSEp2Ykd4bGNuTXViR1Z1WjNSb2ZTQmpiMjUwY205c2JHVnljMkFwTzF4dVhHNGdJQ0FnSUNCeVpYUjFjbTRnZTF4dUlDQWdJQ0FnSUNCdGIyUjFiR1U2SUVSbFkyRm1UVzlrWld4TmIyUjFiR1VzWEc0Z0lDQWdJQ0FnSUdOdmJuUnliMnhzWlhKekxGeHVJQ0FnSUNBZ0lDQndjbTkyYVdSbGNuTTZJRnRjYmlBZ0lDQWdJQ0FnSUNBdUxpNXRiMlJsYkZObGNuWnBZMlZ6TEZ4dUlDQWdJQ0FnSUNCZExGeHVJQ0FnSUNBZ2ZUdGNiaUFnSUNCOVhHNGdJSDFjYmlBZ1QySnFaV04wTG1GemMybG5iaWhFWldOaFprMXZaR1ZzVFc5a2RXeGxMQ0JjSW01aGJXVmNJaXdnZTF4dUlDQWdJSFpoYkhWbE9pQmdSR1ZqWVdaTmIyUjFiR1VrZTJac1lYWnZkWEo5WUN4Y2JpQWdmU2s3WEc0Z0lISmxkSFZ5YmlCRVpXTmhaazF2WkdWc1RXOWtkV3hsTzF4dWZWeHVJbDE5Il19
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjYWZNb2RlbE1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWNhZi1tb2RlbC9EZWNhZk1vZGVsTW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBaUIsTUFBTSxFQUFZLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlDQUE4QjtBQUc1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSwwQkFBcUI7QUFHNUMsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFlOztJQUUxQyxJQUFNLGdCQUFnQixHQUF0QixNQUFNLGdCQUFnQjs7aUJBQ0osUUFBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxBQUFsRCxDQUFtRDtRQUV0RSxNQUFNLENBQUMsbUJBQW1CLENBQ3hCLE1BQTZCO1lBRTdCLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDNUIsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksU0FBUztnQkFDL0IsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBWSxDQUFDO2FBQ3RELENBQUMsQ0FBQyxDQUFDO1FBQ04sQ0FBQztRQUVELE1BQU0sQ0FBQyxTQUFTLENBQ2QsS0FBNEIsRUFDNUIsUUFBNkM7WUFFN0MsTUFBTSxRQUFRLEdBQUcsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sS0FBSyxHQUNULE9BQU8sUUFBUSxLQUFLLFdBQVc7Z0JBQzdCLENBQUMsQ0FBQyxRQUFRO2dCQUNWLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFFdEQsSUFBSSxPQUFPLEtBQUssS0FBSyxXQUFXO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQzlDLElBQUksS0FBSyxLQUFLLElBQUk7Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDaEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFBRSxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxDQUFDLE9BQU8sQ0FDWixPQUFlLEVBQ2YsVUFBdUMsRUFBRTtZQUV6QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkMsR0FBRyxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1lBRWxELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDN0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQ2xELENBQUM7WUFFRiw4RUFBOEU7WUFDOUUsNEVBQTRFO1lBQzVFLCtEQUErRDtZQUMvRCxLQUFLLE1BQU0sS0FBSyxJQUFJLGFBQWE7Z0JBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFZLENBQUMsQ0FBQztZQUV2RSxJQUFJLGFBQWEsR0FBZSxFQUFFLENBQUM7WUFDbkMsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3pCLEdBQUcsQ0FBQyxJQUFJLENBQUMseURBQXlELENBQUMsQ0FBQztnQkFDcEUsYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDeEQsR0FBRyxDQUFDLElBQUksQ0FDTiw0QkFBNEIsYUFBYSxDQUFDLE1BQU0sd0JBQXdCLENBQ3pFLENBQUM7WUFDSixDQUFDO1lBRUQsTUFBTSxjQUFjLEdBQTBDLEVBQUUsQ0FBQztZQUNqRSxJQUFJLE9BQU8sQ0FBQyxZQUFZLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQ25DLGNBQWMsQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7WUFDOUMsQ0FBQztZQUVELE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUM5QyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsQ0FDNUUsQ0FBQztZQUNGLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxXQUFXLENBQUMsTUFBTSxjQUFjLENBQUMsQ0FBQztZQUV4RCxPQUFPO2dCQUNMLE1BQU0sRUFBRSxrQkFBZ0I7Z0JBQ3hCLFdBQVc7Z0JBQ1gsU0FBUyxFQUFFO29CQUNULEdBQUcsYUFBYTtpQkFDakI7YUFDRixDQUFDO1FBQ0osQ0FBQzs7SUF0RUcsZ0JBQWdCO1FBRHJCLE1BQU0sQ0FBQyxFQUFFLENBQUM7T0FDTCxnQkFBZ0IsQ0F1RXJCO0lBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUU7UUFDdEMsS0FBSyxFQUFFLGNBQWMsT0FBTyxFQUFFO0tBQy9CLENBQUMsQ0FBQztJQUNILE9BQU8sZ0JBQWdCLENBQUM7QUFDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER5bmFtaWNNb2R1bGUsIE1vZHVsZSwgUHJvdmlkZXIgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IEFkYXB0ZXIsIE1vZGVsU2VydmljZSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgTG9nZ2luZyB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgRnJvbU1vZGVsQ29udHJvbGxlciB9IGZyb20gXCIuL0Zyb21Nb2RlbENvbnRyb2xsZXJcIjtcbmltcG9ydCB7IERlY2FmTW9kdWxlT3B0aW9ucyB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgTW9kZWwsIE1vZGVsQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBNZXRhZGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHsgREVDQUZfRVhQT1NFIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHR5cGUgeyBNb2RlbENvbnRyb2xsZXJGYWN0b3J5Q29uZmlnIH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItaHR0cC9zZXJ2ZXJcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vZHVsZUZvcihmbGF2b3VyOiBzdHJpbmcpIHtcbiAgQE1vZHVsZSh7fSlcbiAgY2xhc3MgRGVjYWZNb2RlbE1vZHVsZSB7XG4gICAgc3RhdGljIHJlYWRvbmx5IGxvZyA9IExvZ2dpbmcuZm9yKERlY2FmTW9kZWxNb2R1bGUubmFtZSkuZm9yKGZsYXZvdXIpO1xuXG4gICAgc3RhdGljIGNyZWF0ZU1vZGVsU2VydmljZXM8VCBleHRlbmRzIE1vZGVsPGJvb2xlYW4+PihcbiAgICAgIG1vZGVsczogTW9kZWxDb25zdHJ1Y3RvcjxUPltdXG4gICAgKTogUHJvdmlkZXJbXSB7XG4gICAgICByZXR1cm4gbW9kZWxzLm1hcCgobW9kZWwpID0+ICh7XG4gICAgICAgIHByb3ZpZGU6IGAke21vZGVsLm5hbWV9U2VydmljZWAsXG4gICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IE1vZGVsU2VydmljZS5mb3JNb2RlbChtb2RlbCBhcyBhbnkpLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIHN0YXRpYyBpc0V4cG9zZWQoXG4gICAgICBtb2RlbDogTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+LFxuICAgICAgZXhwb3N1cmU/OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuIHwgc3RyaW5nW10+XG4gICAgKTogYm9vbGVhbiB7XG4gICAgICBjb25zdCBvdmVycmlkZSA9IGV4cG9zdXJlPy5bbW9kZWwubmFtZV07XG4gICAgICBjb25zdCB2YWx1ZSA9XG4gICAgICAgIHR5cGVvZiBvdmVycmlkZSAhPT0gXCJ1bmRlZmluZWRcIlxuICAgICAgICAgID8gb3ZlcnJpZGVcbiAgICAgICAgICA6IE1ldGFkYXRhLmdldChtb2RlbCwgTWV0YWRhdGEua2V5KERFQ0FGX0VYUE9TRSkpO1xuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gdHJ1ZTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSkgcmV0dXJuIHRydWU7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiB2YWx1ZS5pbmNsdWRlcyhmbGF2b3VyKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZm9yUm9vdChcbiAgICAgIGZsYXZvdXI6IHN0cmluZyxcbiAgICAgIG9wdGlvbnM6IFBhcnRpYWw8RGVjYWZNb2R1bGVPcHRpb25zPiA9IHt9XG4gICAgKTogRHluYW1pY01vZHVsZSB7XG4gICAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5mb3JSb290KTtcbiAgICAgIGxvZy5pbmZvKGBHZW5lcmF0aW5nIGNvbnRyb2xsZXJzIGZvciBmbGF2b3VyLi4uYCk7XG5cbiAgICAgIGNvbnN0IHRyYWNrZWRNb2RlbHMgPSBBZGFwdGVyLm1vZGVscyhmbGF2b3VyKS5maWx0ZXIoKG1vZGVsKSA9PlxuICAgICAgICB0aGlzLmlzRXhwb3NlZChtb2RlbCwgb3B0aW9ucy5jb250cm9sbGVyRXhwb3N1cmUpXG4gICAgICApO1xuXG4gICAgICAvLyBDb250cm9sbGVycyBhbHdheXMgcmVseSBvbiBhIGJhY2tpbmcgTW9kZWxTZXJ2aWNlLCBldmVuIHdoZW4gTmVzdCBwcm92aWRlcnNcbiAgICAgIC8vIGFyZSBub3QgYXV0by1yZWdpc3RlcmVkLiBXYXJtIHRoZSBzaW5nbGV0b24gcmVnaXN0cnkgaGVyZSBzbyBzaHV0ZG93biBjYW5cbiAgICAgIC8vIHNlZSB0aGUgbGl2ZSBzZXJ2aWNlcyBjcmVhdGVkIGZvciB0aGUgZ2VuZXJhdGVkIGNvbnRyb2xsZXJzLlxuICAgICAgZm9yIChjb25zdCBtb2RlbCBvZiB0cmFja2VkTW9kZWxzKSBNb2RlbFNlcnZpY2UuZm9yTW9kZWwobW9kZWwgYXMgYW55KTtcblxuICAgICAgbGV0IG1vZGVsU2VydmljZXM6IFByb3ZpZGVyW10gPSBbXTtcbiAgICAgIGlmIChvcHRpb25zLmF1dG9TZXJ2aWNlcykge1xuICAgICAgICBsb2cuaW5mbyhcIkF1dG8tc2VydmljZXMgZW5hYmxlZC4gSW5pdGlhbGl6aW5nIHNlcnZpY2UgZ2VuZXJhdGlvbi5cIik7XG4gICAgICAgIG1vZGVsU2VydmljZXMgPSB0aGlzLmNyZWF0ZU1vZGVsU2VydmljZXModHJhY2tlZE1vZGVscyk7XG4gICAgICAgIGxvZy5pbmZvKFxuICAgICAgICAgIGBBdXRvLXNlcnZpY2VzIGNvbXBsZXRlZC4gJHttb2RlbFNlcnZpY2VzLmxlbmd0aH0gc2VydmljZXMgaW5pdGlhbGl6ZWQuYFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBnbG9iYWxEZWZhdWx0czogUGFydGlhbDxNb2RlbENvbnRyb2xsZXJGYWN0b3J5Q29uZmlnPiA9IHt9O1xuICAgICAgaWYgKG9wdGlvbnMuYWdncmVnYXRpb25zID09PSBmYWxzZSkge1xuICAgICAgICBnbG9iYWxEZWZhdWx0cy5hbGxvd0dyb3VwaW5nUXVlcmllcyA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb250cm9sbGVycyA9IHRyYWNrZWRNb2RlbHMubWFwKChtb2RlbCkgPT5cbiAgICAgICAgRnJvbU1vZGVsQ29udHJvbGxlci5jcmVhdGUobW9kZWwsIG9wdGlvbnMuY29udHJvbGxlckNvbmZpZywgZ2xvYmFsRGVmYXVsdHMpXG4gICAgICApO1xuICAgICAgbG9nLmluZm8oYEdlbmVyYXRlZCAke2NvbnRyb2xsZXJzLmxlbmd0aH0gY29udHJvbGxlcnNgKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbW9kdWxlOiBEZWNhZk1vZGVsTW9kdWxlLFxuICAgICAgICBjb250cm9sbGVycyxcbiAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgLi4ubW9kZWxTZXJ2aWNlcyxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIE9iamVjdC5hc3NpZ24oRGVjYWZNb2RlbE1vZHVsZSwgXCJuYW1lXCIsIHtcbiAgICB2YWx1ZTogYERlY2FmTW9kdWxlJHtmbGF2b3VyfWAsXG4gIH0pO1xuICByZXR1cm4gRGVjYWZNb2RlbE1vZHVsZTtcbn1cbiJdfQ==
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjYWZNb2RlbE1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkRlY2FmTW9kZWxNb2R1bGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFZQSxvQ0E2REM7QUF6RUQsSUFBSSxVQUFVLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSTtJQUNqRixJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdILElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sT0FBTyxDQUFDLFFBQVEsS0FBSyxVQUFVO1FBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7O1FBQzFILEtBQUssSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFBRSxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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QUMsSUFBSSxDQUFDLDRCQUE0QixhQUFhLENBQUMsTUFBTSx3QkFBd0IsQ0FBQyxDQUFDO1lBQ3ZGLENBQUM7WUFDRCxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7WUFDMUIsSUFBSSxPQUFPLENBQUMsWUFBWSxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUNqQyxjQUFjLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1lBQ2hELENBQUM7WUFDRCxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyw0Q0FBbUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO1lBQzlILEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxXQUFXLENBQUMsTUFBTSxjQUFjLENBQUMsQ0FBQztZQUN4RCxPQUFPO2dCQUNILE1BQU0sRUFBRSxrQkFBa0I7Z0JBQzFCLFdBQVc7Z0JBQ1gsU0FBUyxFQUFFO29CQUNQLEdBQUcsYUFBYTtpQkFDbkI7YUFDSixDQUFDO1FBQ04sQ0FBQztLQUNKLENBQUM7SUFDRixnQkFBZ0IsR0FBRyxrQkFBa0IsR0FBRyxVQUFVLENBQUM7UUFDL0MsSUFBQSxlQUFNLEVBQUMsRUFBRSxDQUFDO0tBQ2IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3JCLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFO1FBQ3BDLEtBQUssRUFBRSxjQUFjLE9BQU8sRUFBRTtLQUNqQyxDQUFDLENBQUM7SUFDSCxPQUFPLGdCQUFnQixDQUFDO0FBQzVCLENBQUM7QUFDRCxrb1BBQWtvUCIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2RlY29yYXRlID0gKHRoaXMgJiYgdGhpcy5fX2RlY29yYXRlKSB8fCBmdW5jdGlvbiAoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xufTtcbmltcG9ydCB7IE1vZHVsZSB9IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuaW1wb3J0IHsgQWRhcHRlciwgTW9kZWxTZXJ2aWNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBMb2dnaW5nIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5pbXBvcnQgeyBGcm9tTW9kZWxDb250cm9sbGVyIH0gZnJvbSBcIi4vRnJvbU1vZGVsQ29udHJvbGxlci5qc1wiO1xuaW1wb3J0IHsgTWV0YWRhdGEgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcbmltcG9ydCB7IERFQ0FGX0VYUE9TRSB9IGZyb20gXCIuLy4uL2NvbnN0YW50cy5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1vZHVsZUZvcihmbGF2b3VyKSB7XG4gICAgdmFyIERlY2FmTW9kZWxNb2R1bGVfMTtcbiAgICBsZXQgRGVjYWZNb2RlbE1vZHVsZSA9IGNsYXNzIERlY2FmTW9kZWxNb2R1bGUge1xuICAgICAgICBzdGF0aWMgeyBEZWNhZk1vZGVsTW9kdWxlXzEgPSB0aGlzOyB9XG4gICAgICAgIHN0YXRpYyB7IHRoaXMubG9nID0gTG9nZ2luZy5mb3IoRGVjYWZNb2RlbE1vZHVsZV8xLm5hbWUpLmZvcihmbGF2b3VyKTsgfVxuICAgICAgICBzdGF0aWMgY3JlYXRlTW9kZWxTZXJ2aWNlcyhtb2RlbHMpIHtcbiAgICAgICAgICAgIHJldHVybiBtb2RlbHMubWFwKChtb2RlbCkgPT4gKHtcbiAgICAgICAgICAgICAgICBwcm92aWRlOiBgJHttb2RlbC5uYW1lfVNlcnZpY2VgLFxuICAgICAgICAgICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IE1vZGVsU2VydmljZS5mb3JNb2RlbChtb2RlbCksXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGljIGlzRXhwb3NlZChtb2RlbCwgZXhwb3N1cmUpIHtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJyaWRlID0gZXhwb3N1cmU/Llttb2RlbC5uYW1lXTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdHlwZW9mIG92ZXJyaWRlICE9PSBcInVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgPyBvdmVycmlkZVxuICAgICAgICAgICAgICAgIDogTWV0YWRhdGEuZ2V0KG1vZGVsLCBNZXRhZGF0YS5rZXkoREVDQUZfRVhQT1NFKSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSB0cnVlKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKVxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5pbmNsdWRlcyhmbGF2b3VyKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgZm9yUm9vdChmbGF2b3VyLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLmZvclJvb3QpO1xuICAgICAgICAgICAgbG9nLmluZm8oYEdlbmVyYXRpbmcgY29udHJvbGxlcnMgZm9yIGZsYXZvdXIuLi5gKTtcbiAgICAgICAgICAgIGNvbnN0IHRyYWNrZWRNb2RlbHMgPSBBZGFwdGVyLm1vZGVscyhmbGF2b3VyKS5maWx0ZXIoKG1vZGVsKSA9PiB0aGlzLmlzRXhwb3NlZChtb2RlbCwgb3B0aW9ucy5jb250cm9sbGVyRXhwb3N1cmUpKTtcbiAgICAgICAgICAgIC8vIENvbnRyb2xsZXJzIGFsd2F5cyByZWx5IG9uIGEgYmFja2luZyBNb2RlbFNlcnZpY2UsIGV2ZW4gd2hlbiBOZXN0IHByb3ZpZGVyc1xuICAgICAgICAgICAgLy8gYXJlIG5vdCBhdXRvLXJlZ2lzdGVyZWQuIFdhcm0gdGhlIHNpbmdsZXRvbiByZWdpc3RyeSBoZXJlIHNvIHNodXRkb3duIGNhblxuICAgICAgICAgICAgLy8gc2VlIHRoZSBsaXZlIHNlcnZpY2VzIGNyZWF0ZWQgZm9yIHRoZSBnZW5lcmF0ZWQgY29udHJvbGxlcnMuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIHRyYWNrZWRNb2RlbHMpXG4gICAgICAgICAgICAgICAgTW9kZWxTZXJ2aWNlLmZvck1vZGVsKG1vZGVsKTtcbiAgICAgICAgICAgIGxldCBtb2RlbFNlcnZpY2VzID0gW107XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5hdXRvU2VydmljZXMpIHtcbiAgICAgICAgICAgICAgICBsb2cuaW5mbyhcIkF1dG8tc2VydmljZXMgZW5hYmxlZC4gSW5pdGlhbGl6aW5nIHNlcnZpY2UgZ2VuZXJhdGlvbi5cIik7XG4gICAgICAgICAgICAgICAgbW9kZWxTZXJ2aWNlcyA9IHRoaXMuY3JlYXRlTW9kZWxTZXJ2aWNlcyh0cmFja2VkTW9kZWxzKTtcbiAgICAgICAgICAgICAgICBsb2cuaW5mbyhgQXV0by1zZXJ2aWNlcyBjb21wbGV0ZWQuICR7bW9kZWxTZXJ2aWNlcy5sZW5ndGh9IHNlcnZpY2VzIGluaXRpYWxpemVkLmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZ2xvYmFsRGVmYXVsdHMgPSB7fTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmFnZ3JlZ2F0aW9ucyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBnbG9iYWxEZWZhdWx0cy5hbGxvd0dyb3VwaW5nUXVlcmllcyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY29udHJvbGxlcnMgPSB0cmFja2VkTW9kZWxzLm1hcCgobW9kZWwpID0+IEZyb21Nb2RlbENvbnRyb2xsZXIuY3JlYXRlKG1vZGVsLCBvcHRpb25zLmNvbnRyb2xsZXJDb25maWcsIGdsb2JhbERlZmF1bHRzKSk7XG4gICAgICAgICAgICBsb2cuaW5mbyhgR2VuZXJhdGVkICR7Y29udHJvbGxlcnMubGVuZ3RofSBjb250cm9sbGVyc2ApO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBtb2R1bGU6IERlY2FmTW9kZWxNb2R1bGVfMSxcbiAgICAgICAgICAgICAgICBjb250cm9sbGVycyxcbiAgICAgICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICAgICAgLi4ubW9kZWxTZXJ2aWNlcyxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgRGVjYWZNb2RlbE1vZHVsZSA9IERlY2FmTW9kZWxNb2R1bGVfMSA9IF9fZGVjb3JhdGUoW1xuICAgICAgICBNb2R1bGUoe30pXG4gICAgXSwgRGVjYWZNb2RlbE1vZHVsZSk7XG4gICAgT2JqZWN0LmFzc2lnbihEZWNhZk1vZGVsTW9kdWxlLCBcIm5hbWVcIiwge1xuICAgICAgICB2YWx1ZTogYERlY2FmTW9kdWxlJHtmbGF2b3VyfWAsXG4gICAgfSk7XG4gICAgcmV0dXJuIERlY2FmTW9kZWxNb2R1bGU7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lSR1ZqWVdaTmIyUmxiRTF2WkhWc1pTNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1TDNOeVl5OWtaV05oWmkxdGIyUmxiQzlFWldOaFprMXZaR1ZzVFc5a2RXeGxMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN096dEJRVUZCTEU5QlFVOHNSVUZCYVVJc1RVRkJUU3hGUVVGWkxFMUJRVTBzWjBKQlFXZENMRU5CUVVNN1FVRkRha1VzVDBGQlR5eEZRVUZGTEU5QlFVOHNSVUZCUlN4WlFVRlpMRVZCUVVVc1RVRkJUU3huUWtGQlowSXNRMEZCUXp0QlFVTjJSQ3hQUVVGUExFVkJRVVVzVDBGQlR5eEZRVUZGTEUxQlFVMHNiVUpCUVcxQ0xFTkJRVU03UVVGRE5VTXNUMEZCVHl4RlFVRkZMRzFDUVVGdFFpeEZRVUZGTEdsRFFVRTRRanRCUVVjMVJDeFBRVUZQTEVWQlFVVXNVVUZCVVN4RlFVRkZMRTFCUVUwc2MwSkJRWE5DTEVOQlFVTTdRVUZEYUVRc1QwRkJUeXhGUVVGRkxGbEJRVmtzUlVGQlJTd3dRa0ZCY1VJN1FVRkhOVU1zVFVGQlRTeFZRVUZWTEZsQlFWa3NRMEZCUXl4UFFVRmxPenRKUVVVeFF5eEpRVUZOTEdkQ1FVRm5RaXhIUVVGMFFpeE5RVUZOTEdkQ1FVRm5RanM3YVVKQlEwb3NVVUZCUnl4SFFVRkhMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zYTBKQlFXZENMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUXl4QlFVRnNSQ3hEUVVGdFJEdFJRVVYwUlN4TlFVRk5MRU5CUVVNc2JVSkJRVzFDTEVOQlEzaENMRTFCUVRaQ08xbEJSVGRDTEU5QlFVOHNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFdEJRVXNzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0blFrRkROVUlzVDBGQlR5eEZRVUZGTEVkQlFVY3NTMEZCU3l4RFFVRkRMRWxCUVVrc1UwRkJVenRuUWtGREwwSXNWVUZCVlN4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExGbEJRVmtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCV1N4RFFVRkRPMkZCUTNSRUxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEwNHNRMEZCUXp0UlFVVkVMRTFCUVUwc1EwRkJReXhUUVVGVExFTkJRMlFzUzBGQk5FSXNSVUZETlVJc1VVRkJOa003V1VGRk4wTXNUVUZCVFN4UlFVRlJMRWRCUVVjc1VVRkJVU3hGUVVGRkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUTNoRExFMUJRVTBzUzBGQlN5eEhRVU5VTEU5QlFVOHNVVUZCVVN4TFFVRkxMRmRCUVZjN1owSkJRemRDTEVOQlFVTXNRMEZCUXl4UlFVRlJPMmRDUVVOV0xFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1JVRkJSU3hSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkZkRVFzU1VGQlNTeFBRVUZQTEV0QlFVc3NTMEZCU3l4WFFVRlhPMmRDUVVGRkxFOUJRVThzU1VGQlNTeERRVUZETzFsQlF6bERMRWxCUVVrc1MwRkJTeXhMUVVGTExFbEJRVWs3WjBKQlFVVXNUMEZCVHl4SlFVRkpMRU5CUVVNN1dVRkRhRU1zU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJRenRuUWtGQlJTeFBRVUZQTEV0QlFVc3NRMEZCUXl4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03V1VGRGVrUXNUMEZCVHl4TFFVRkxMRU5CUVVNN1VVRkRaaXhEUVVGRE8xRkJSVVFzVFVGQlRTeERRVUZETEU5QlFVOHNRMEZEV2l4UFFVRmxMRVZCUTJZc1ZVRkJkVU1zUlVGQlJUdFpRVVY2UXl4TlFVRk5MRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03V1VGRGRrTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXgxUTBGQmRVTXNRMEZCUXl4RFFVRkRPMWxCUld4RUxFMUJRVTBzWVVGQllTeEhRVUZITEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZMRVZCUVVVc1EwRkROMFFzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1QwRkJUeXhEUVVGRExHdENRVUZyUWl4RFFVRkRMRU5CUTJ4RUxFTkJRVU03V1VGRlJpdzRSVUZCT0VVN1dVRkRPVVVzTkVWQlFUUkZPMWxCUXpWRkxDdEVRVUVyUkR0WlFVTXZSQ3hMUVVGTExFMUJRVTBzUzBGQlN5eEpRVUZKTEdGQlFXRTdaMEpCUVVVc1dVRkJXU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZaTEVOQlFVTXNRMEZCUXp0WlFVVjJSU3hKUVVGSkxHRkJRV0VzUjBGQlpTeEZRVUZGTEVOQlFVTTdXVUZEYmtNc1NVRkJTU3hQUVVGUExFTkJRVU1zV1VGQldTeEZRVUZGTEVOQlFVTTdaMEpCUTNwQ0xFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNlVVJCUVhsRUxFTkJRVU1zUTBGQlF6dG5Ra0ZEY0VVc1lVRkJZU3hIUVVGSExFbEJRVWtzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF6dG5Ra0ZEZUVRc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGRFRpdzBRa0ZCTkVJc1lVRkJZU3hEUVVGRExFMUJRVTBzZDBKQlFYZENMRU5CUTNwRkxFTkJRVU03V1VGRFNpeERRVUZETzFsQlJVUXNUVUZCVFN4alFVRmpMRWRCUVRCRExFVkJRVVVzUTBGQlF6dFpRVU5xUlN4SlFVRkpMRTlCUVU4c1EwRkJReXhaUVVGWkxFdEJRVXNzUzBGQlN5eEZRVUZGTEVOQlFVTTdaMEpCUTI1RExHTkJRV01zUTBGQlF5eHZRa0ZCYjBJc1IwRkJSeXhMUVVGTExFTkJRVU03V1VGRE9VTXNRMEZCUXp0WlFVVkVMRTFCUVUwc1YwRkJWeXhIUVVGSExHRkJRV0VzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1JVRkJSU3hEUVVNNVF5eHRRa0ZCYlVJc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eEZRVUZGTEU5QlFVOHNRMEZCUXl4blFrRkJaMElzUlVGQlJTeGpRVUZqTEVOQlFVTXNRMEZETlVVc1EwRkJRenRaUVVOR0xFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNZVUZCWVN4WFFVRlhMRU5CUVVNc1RVRkJUU3hqUVVGakxFTkJRVU1zUTBGQlF6dFpRVVY0UkN4UFFVRlBPMmRDUVVOTUxFMUJRVTBzUlVGQlJTeHJRa0ZCWjBJN1owSkJRM2hDTEZkQlFWYzdaMEpCUTFnc1UwRkJVeXhGUVVGRk8yOUNRVU5VTEVkQlFVY3NZVUZCWVR0cFFrRkRha0k3WVVGRFJpeERRVUZETzFGQlEwb3NRMEZCUXpzN1NVRjBSVWNzWjBKQlFXZENPMUZCUkhKQ0xFMUJRVTBzUTBGQlF5eEZRVUZGTEVOQlFVTTdUMEZEVEN4blFrRkJaMElzUTBGMVJYSkNPMGxCUTBRc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eG5Ra0ZCWjBJc1JVRkJSU3hOUVVGTkxFVkJRVVU3VVVGRGRFTXNTMEZCU3l4RlFVRkZMR05CUVdNc1QwRkJUeXhGUVVGRk8wdEJReTlDTEVOQlFVTXNRMEZCUXp0SlFVTklMRTlCUVU4c1owSkJRV2RDTEVOQlFVTTdRVUZETVVJc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0I3SUVSNWJtRnRhV05OYjJSMWJHVXNJRTF2WkhWc1pTd2dVSEp2ZG1sa1pYSWdmU0JtY205dElGd2lRRzVsYzNScWN5OWpiMjF0YjI1Y0lqdGNibWx0Y0c5eWRDQjdJRUZrWVhCMFpYSXNJRTF2WkdWc1UyVnlkbWxqWlNCOUlHWnliMjBnWENKQVpHVmpZV1l0ZEhNdlkyOXlaVndpTzF4dWFXMXdiM0owSUhzZ1RHOW5aMmx1WnlCOUlHWnliMjBnWENKQVpHVmpZV1l0ZEhNdmJHOW5aMmx1WjF3aU8xeHVhVzF3YjNKMElIc2dSbkp2YlUxdlpHVnNRMjl1ZEhKdmJHeGxjaUI5SUdaeWIyMGdYQ0l1TDBaeWIyMU5iMlJsYkVOdmJuUnliMnhzWlhKY0lqdGNibWx0Y0c5eWRDQjdJRVJsWTJGbVRXOWtkV3hsVDNCMGFXOXVjeUI5SUdaeWIyMGdYQ0l1TGk5MGVYQmxjMXdpTzF4dWFXMXdiM0owSUhzZ1RXOWtaV3dzSUUxdlpHVnNRMjl1YzNSeWRXTjBiM0lnZlNCbWNtOXRJRndpUUdSbFkyRm1MWFJ6TDJSbFkyOXlZWFJ2Y2kxMllXeHBaR0YwYVc5dVhDSTdYRzVwYlhCdmNuUWdleUJOWlhSaFpHRjBZU0I5SUdaeWIyMGdYQ0pBWkdWallXWXRkSE12WkdWamIzSmhkR2x2Ymx3aU8xeHVhVzF3YjNKMElIc2dSRVZEUVVaZlJWaFFUMU5GSUgwZ1puSnZiU0JjSWk0dUwyTnZibk4wWVc1MGMxd2lPMXh1YVcxd2IzSjBJSFI1Y0dVZ2V5Qk5iMlJsYkVOdmJuUnliMnhzWlhKR1lXTjBiM0o1UTI5dVptbG5JSDBnWm5KdmJTQmNJa0JrWldOaFppMTBjeTltYjNJdGFIUjBjQzl6WlhKMlpYSmNJanRjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGRFMXZaSFZzWlVadmNpaG1iR0YyYjNWeU9pQnpkSEpwYm1jcElIdGNiaUFnUUUxdlpIVnNaU2g3ZlNsY2JpQWdZMnhoYzNNZ1JHVmpZV1pOYjJSbGJFMXZaSFZzWlNCN1hHNGdJQ0FnYzNSaGRHbGpJSEpsWVdSdmJteDVJR3h2WnlBOUlFeHZaMmRwYm1jdVptOXlLRVJsWTJGbVRXOWtaV3hOYjJSMWJHVXVibUZ0WlNrdVptOXlLR1pzWVhadmRYSXBPMXh1WEc0Z0lDQWdjM1JoZEdsaklHTnlaV0YwWlUxdlpHVnNVMlZ5ZG1salpYTThWQ0JsZUhSbGJtUnpJRTF2WkdWc1BHSnZiMnhsWVc0K1BpaGNiaUFnSUNBZ0lHMXZaR1ZzY3pvZ1RXOWtaV3hEYjI1emRISjFZM1J2Y2p4VVBsdGRYRzRnSUNBZ0tUb2dVSEp2ZG1sa1pYSmJYU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdiVzlrWld4ekxtMWhjQ2dvYlc5a1pXd3BJRDArSUNoN1hHNGdJQ0FnSUNBZ0lIQnliM1pwWkdVNklHQWtlMjF2WkdWc0xtNWhiV1Y5VTJWeWRtbGpaV0FzWEc0Z0lDQWdJQ0FnSUhWelpVWmhZM1J2Y25rNklDZ3BJRDArSUUxdlpHVnNVMlZ5ZG1salpTNW1iM0pOYjJSbGJDaHRiMlJsYkNCaGN5QmhibmtwTEZ4dUlDQWdJQ0FnZlNrcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhOMFlYUnBZeUJwYzBWNGNHOXpaV1FvWEc0Z0lDQWdJQ0J0YjJSbGJEb2dUVzlrWld4RGIyNXpkSEoxWTNSdmNqeGhibmsrTEZ4dUlDQWdJQ0FnWlhod2IzTjFjbVUvT2lCU1pXTnZjbVE4YzNSeWFXNW5MQ0JpYjI5c1pXRnVJSHdnYzNSeWFXNW5XMTArWEc0Z0lDQWdLVG9nWW05dmJHVmhiaUI3WEc0Z0lDQWdJQ0JqYjI1emRDQnZkbVZ5Y21sa1pTQTlJR1Y0Y0c5emRYSmxQeTViYlc5a1pXd3VibUZ0WlYwN1hHNGdJQ0FnSUNCamIyNXpkQ0IyWVd4MVpTQTlYRzRnSUNBZ0lDQWdJSFI1Y0dWdlppQnZkbVZ5Y21sa1pTQWhQVDBnWENKMWJtUmxabWx1WldSY0lseHVJQ0FnSUNBZ0lDQWdJRDhnYjNabGNuSnBaR1ZjYmlBZ0lDQWdJQ0FnSUNBNklFMWxkR0ZrWVhSaExtZGxkQ2h0YjJSbGJDd2dUV1YwWVdSaGRHRXVhMlY1S0VSRlEwRkdYMFZZVUU5VFJTa3BPMXh1WEc0Z0lDQWdJQ0JwWmlBb2RIbHdaVzltSUhaaGJIVmxJRDA5UFNCY0luVnVaR1ZtYVc1bFpGd2lLU0J5WlhSMWNtNGdkSEoxWlR0Y2JpQWdJQ0FnSUdsbUlDaDJZV3gxWlNBOVBUMGdkSEoxWlNrZ2NtVjBkWEp1SUhSeWRXVTdYRzRnSUNBZ0lDQnBaaUFvUVhKeVlYa3VhWE5CY25KaGVTaDJZV3gxWlNrcElISmxkSFZ5YmlCMllXeDFaUzVwYm1Oc2RXUmxjeWhtYkdGMmIzVnlLVHRjYmlBZ0lDQWdJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J6ZEdGMGFXTWdabTl5VW05dmRDaGNiaUFnSUNBZ0lHWnNZWFp2ZFhJNklITjBjbWx1Wnl4Y2JpQWdJQ0FnSUc5d2RHbHZibk02SUZCaGNuUnBZV3c4UkdWallXWk5iMlIxYkdWUGNIUnBiMjV6UGlBOUlIdDlYRzRnSUNBZ0tUb2dSSGx1WVcxcFkwMXZaSFZzWlNCN1hHNGdJQ0FnSUNCamIyNXpkQ0JzYjJjZ1BTQjBhR2x6TG14dlp5NW1iM0lvZEdocGN5NW1iM0pTYjI5MEtUdGNiaUFnSUNBZ0lHeHZaeTVwYm1adktHQkhaVzVsY21GMGFXNW5JR052Ym5SeWIyeHNaWEp6SUdadmNpQm1iR0YyYjNWeUxpNHVZQ2s3WEc1Y2JpQWdJQ0FnSUdOdmJuTjBJSFJ5WVdOclpXUk5iMlJsYkhNZ1BTQkJaR0Z3ZEdWeUxtMXZaR1ZzY3lobWJHRjJiM1Z5S1M1bWFXeDBaWElvS0cxdlpHVnNLU0E5UGx4dUlDQWdJQ0FnSUNCMGFHbHpMbWx6Ulhod2IzTmxaQ2h0YjJSbGJDd2diM0IwYVc5dWN5NWpiMjUwY205c2JHVnlSWGh3YjNOMWNtVXBYRzRnSUNBZ0lDQXBPMXh1WEc0Z0lDQWdJQ0F2THlCRGIyNTBjbTlzYkdWeWN5QmhiSGRoZVhNZ2NtVnNlU0J2YmlCaElHSmhZMnRwYm1jZ1RXOWtaV3hUWlhKMmFXTmxMQ0JsZG1WdUlIZG9aVzRnVG1WemRDQndjbTkyYVdSbGNuTmNiaUFnSUNBZ0lDOHZJR0Z5WlNCdWIzUWdZWFYwYnkxeVpXZHBjM1JsY21Wa0xpQlhZWEp0SUhSb1pTQnphVzVuYkdWMGIyNGdjbVZuYVhOMGNua2dhR1Z5WlNCemJ5QnphSFYwWkc5M2JpQmpZVzVjYmlBZ0lDQWdJQzh2SUhObFpTQjBhR1VnYkdsMlpTQnpaWEoyYVdObGN5QmpjbVZoZEdWa0lHWnZjaUIwYUdVZ1oyVnVaWEpoZEdWa0lHTnZiblJ5YjJ4c1pYSnpMbHh1SUNBZ0lDQWdabTl5SUNoamIyNXpkQ0J0YjJSbGJDQnZaaUIwY21GamEyVmtUVzlrWld4ektTQk5iMlJsYkZObGNuWnBZMlV1Wm05eVRXOWtaV3dvYlc5a1pXd2dZWE1nWVc1NUtUdGNibHh1SUNBZ0lDQWdiR1YwSUcxdlpHVnNVMlZ5ZG1salpYTTZJRkJ5YjNacFpHVnlXMTBnUFNCYlhUdGNiaUFnSUNBZ0lHbG1JQ2h2Y0hScGIyNXpMbUYxZEc5VFpYSjJhV05sY3lrZ2UxeHVJQ0FnSUNBZ0lDQnNiMmN1YVc1bWJ5aGNJa0YxZEc4dGMyVnlkbWxqWlhNZ1pXNWhZbXhsWkM0Z1NXNXBkR2xoYkdsNmFXNW5JSE5sY25acFkyVWdaMlZ1WlhKaGRHbHZiaTVjSWlrN1hHNGdJQ0FnSUNBZ0lHMXZaR1ZzVTJWeWRtbGpaWE1nUFNCMGFHbHpMbU55WldGMFpVMXZaR1ZzVTJWeWRtbGpaWE1vZEhKaFkydGxaRTF2WkdWc2N5azdYRzRnSUNBZ0lDQWdJR3h2Wnk1cGJtWnZLRnh1SUNBZ0lDQWdJQ0FnSUdCQmRYUnZMWE5sY25acFkyVnpJR052YlhCc1pYUmxaQzRnSkh0dGIyUmxiRk5sY25acFkyVnpMbXhsYm1kMGFIMGdjMlZ5ZG1salpYTWdhVzVwZEdsaGJHbDZaV1F1WUZ4dUlDQWdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQmpiMjV6ZENCbmJHOWlZV3hFWldaaGRXeDBjem9nVUdGeWRHbGhiRHhOYjJSbGJFTnZiblJ5YjJ4c1pYSkdZV04wYjNKNVEyOXVabWxuUGlBOUlIdDlPMXh1SUNBZ0lDQWdhV1lnS0c5d2RHbHZibk11WVdkbmNtVm5ZWFJwYjI1eklEMDlQU0JtWVd4elpTa2dlMXh1SUNBZ0lDQWdJQ0JuYkc5aVlXeEVaV1poZFd4MGN5NWhiR3h2ZDBkeWIzVndhVzVuVVhWbGNtbGxjeUE5SUdaaGJITmxPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JqYjI1emRDQmpiMjUwY205c2JHVnljeUE5SUhSeVlXTnJaV1JOYjJSbGJITXViV0Z3S0NodGIyUmxiQ2tnUFQ1Y2JpQWdJQ0FnSUNBZ1JuSnZiVTF2WkdWc1EyOXVkSEp2Ykd4bGNpNWpjbVZoZEdVb2JXOWtaV3dzSUc5d2RHbHZibk11WTI5dWRISnZiR3hsY2tOdmJtWnBaeXdnWjJ4dlltRnNSR1ZtWVhWc2RITXBYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdiRzluTG1sdVptOG9ZRWRsYm1WeVlYUmxaQ0FrZTJOdmJuUnliMnhzWlhKekxteGxibWQwYUgwZ1kyOXVkSEp2Ykd4bGNuTmdLVHRjYmx4dUlDQWdJQ0FnY21WMGRYSnVJSHRjYmlBZ0lDQWdJQ0FnYlc5a2RXeGxPaUJFWldOaFprMXZaR1ZzVFc5a2RXeGxMRnh1SUNBZ0lDQWdJQ0JqYjI1MGNtOXNiR1Z5Y3l4Y2JpQWdJQ0FnSUNBZ2NISnZkbWxrWlhKek9pQmJYRzRnSUNBZ0lDQWdJQ0FnTGk0dWJXOWtaV3hUWlhKMmFXTmxjeXhjYmlBZ0lDQWdJQ0FnWFN4Y2JpQWdJQ0FnSUgwN1hHNGdJQ0FnZlZ4dUlDQjlYRzRnSUU5aWFtVmpkQzVoYzNOcFoyNG9SR1ZqWVdaTmIyUmxiRTF2WkhWc1pTd2dYQ0p1WVcxbFhDSXNJSHRjYmlBZ0lDQjJZV3gxWlRvZ1lFUmxZMkZtVFc5a2RXeGxKSHRtYkdGMmIzVnlmV0FzWEc0Z0lIMHBPMXh1SUNCeVpYUjFjbTRnUkdWallXWk5iMlJsYkUxdlpIVnNaVHRjYm4xY2JpSmRmUT09Il19