@senior-gestao-empresarial/angular-components 7.2.0 → 7.4.0-5f160e25-dcad-4596-8f60-a2785db103cc

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 (52) hide show
  1. package/bundles/senior-gestao-empresarial-angular-components.umd.js +430 -2
  2. package/bundles/senior-gestao-empresarial-angular-components.umd.js.map +1 -1
  3. package/bundles/senior-gestao-empresarial-angular-components.umd.min.js +2 -2
  4. package/bundles/senior-gestao-empresarial-angular-components.umd.min.js.map +1 -1
  5. package/components/lookups/entities/caracteristica-fiscal-lookup.d.ts +8 -0
  6. package/components/lookups/entities/composicao-base-calculo-lookup.d.ts +8 -0
  7. package/components/lookups/entities/lei-complementar-1162003-lookup.d.ts +8 -0
  8. package/components/lookups/entities/nbs-lookup.d.ts +8 -0
  9. package/components/lookups/entities/operacoes-lookup.d.ts +8 -0
  10. package/components/lookups/entities/origem-destino-lookup.d.ts +10 -0
  11. package/components/lookups/index.d.ts +6 -0
  12. package/core/enums/enum-difal-nao-contribuinte.d.ts +4 -0
  13. package/core/enums/enum-imposto-cadastro.d.ts +10 -0
  14. package/core/enums/enum-situacao-caracteristica-fiscal.d.ts +4 -0
  15. package/core/enums/enum-tipo-origem.d.ts +5 -0
  16. package/esm2015/components/lookups/entities/caracteristica-fiscal-lookup.js +73 -0
  17. package/esm2015/components/lookups/entities/composicao-base-calculo-lookup.js +88 -0
  18. package/esm2015/components/lookups/entities/lei-complementar-1162003-lookup.js +32 -0
  19. package/esm2015/components/lookups/entities/nbs-lookup.js +32 -0
  20. package/esm2015/components/lookups/entities/operacoes-lookup.js +61 -0
  21. package/esm2015/components/lookups/entities/origem-destino-lookup.js +105 -0
  22. package/esm2015/components/lookups/erp-lookups.js +3 -1
  23. package/esm2015/components/lookups/erp-lookups.module.js +14 -2
  24. package/esm2015/components/lookups/index.js +7 -1
  25. package/esm2015/components/websocket/websocket.service.js +13 -2
  26. package/esm2015/core/enums/enum-difal-nao-contribuinte.js +6 -0
  27. package/esm2015/core/enums/enum-imposto-cadastro.js +12 -0
  28. package/esm2015/core/enums/enum-situacao-caracteristica-fiscal.js +6 -0
  29. package/esm2015/core/enums/enum-tipo-origem.js +7 -0
  30. package/esm2015/utils/utils.js +9 -0
  31. package/esm5/components/lookups/entities/caracteristica-fiscal-lookup.js +75 -0
  32. package/esm5/components/lookups/entities/composicao-base-calculo-lookup.js +91 -0
  33. package/esm5/components/lookups/entities/lei-complementar-1162003-lookup.js +35 -0
  34. package/esm5/components/lookups/entities/nbs-lookup.js +35 -0
  35. package/esm5/components/lookups/entities/operacoes-lookup.js +64 -0
  36. package/esm5/components/lookups/entities/origem-destino-lookup.js +112 -0
  37. package/esm5/components/lookups/erp-lookups.js +3 -1
  38. package/esm5/components/lookups/erp-lookups.module.js +14 -2
  39. package/esm5/components/lookups/index.js +7 -1
  40. package/esm5/components/websocket/websocket.service.js +13 -2
  41. package/esm5/core/enums/enum-difal-nao-contribuinte.js +6 -0
  42. package/esm5/core/enums/enum-imposto-cadastro.js +12 -0
  43. package/esm5/core/enums/enum-situacao-caracteristica-fiscal.js +6 -0
  44. package/esm5/core/enums/enum-tipo-origem.js +7 -0
  45. package/esm5/utils/utils.js +9 -0
  46. package/fesm2015/senior-gestao-empresarial-angular-components.js +403 -3
  47. package/fesm2015/senior-gestao-empresarial-angular-components.js.map +1 -1
  48. package/fesm5/senior-gestao-empresarial-angular-components.js +424 -3
  49. package/fesm5/senior-gestao-empresarial-angular-components.js.map +1 -1
  50. package/package.json +1 -1
  51. package/senior-gestao-empresarial-angular-components.metadata.json +1 -1
  52. package/utils/utils.d.ts +5 -0
@@ -256,7 +256,8 @@ var WebsocketService = /** @class */ (function () {
256
256
  this.disconnected$.next();
257
257
  };
258
258
  WebsocketService.prototype.handleOnWebSocketClose = function (data) {
259
- if (data.reason && data.reason.toLowerCase().indexOf("go away") !== -1) {
259
+ var _a, _b;
260
+ if (((_a = data === null || data === void 0 ? void 0 : data.reason) === null || _a === void 0 ? void 0 : _a.toLowerCase().indexOf("go away")) !== -1) {
260
261
  this.lostConnection = true;
261
262
  this.handleError('AuthenticationError', new FrameImpl({
262
263
  command: data.type,
@@ -266,6 +267,16 @@ var WebsocketService = /** @class */ (function () {
266
267
  }));
267
268
  return;
268
269
  }
270
+ if (((_b = data === null || data === void 0 ? void 0 : data.reason) === null || _b === void 0 ? void 0 : _b.toLowerCase().indexOf("cannot connect to server")) !== -1) {
271
+ this.lostConnection = true;
272
+ this.handleError('ConnectionError', new FrameImpl({
273
+ command: data.type,
274
+ headers: {
275
+ message: data.reason
276
+ }
277
+ }));
278
+ return;
279
+ }
269
280
  if (data.wasClean) {
270
281
  return;
271
282
  }
@@ -398,4 +409,4 @@ var WebsocketService = /** @class */ (function () {
398
409
  return WebsocketService;
399
410
  }());
400
411
  export { WebsocketService };
401
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3dlYnNvY2tldC93ZWJzb2NrZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFrQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQUc1QyxJQUFNLCtCQUErQixHQUFHLElBQUksQ0FBQztBQUM3QyxJQUFNLCtCQUErQixHQUFHLElBQUksQ0FBQztBQUs3QztJQWNJLDBCQUE2QixzQkFBOEM7UUFBOUMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQWIxRCxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDakQsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3BDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNuQyxXQUFNLEdBQUcsSUFBSSxPQUFPLEVBQWEsQ0FBQztRQUNsQyxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUF5QixD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MEJBQTBCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLHdCQUF3QixFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDNUcsSUFBTSw2QkFBNkIsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsMkJBQTJCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUNsSCxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsMEJBQTBCLEVBQUUsNkJBQTZCLENBQUMsQ0FBQztRQUN0RixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTyw2Q0FBa0IsR0FBMUI7UUFDSSxPQUFVLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLEVBQUUsa0JBQWUsQ0FBQztJQUMzRSxDQUFDOztnQkE1V29ELHNCQUFzQjs7O0lBZGxFLGdCQUFnQjtRQUg1QixVQUFVLENBQUM7WUFDUixVQUFVLEVBQUUsTUFBTTtTQUNyQixDQUFDO09BQ1csZ0JBQWdCLENBMlg1QjsyQkEzWUQ7Q0EyWUMsQUEzWEQsSUEyWEM7U0EzWFksZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIGZpbmFsaXplLCBtYXAsIHN3aXRjaE1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ2xpZW50LCBGcmFtZUltcGwsIFN0b21wQ29uZmlnLCBTdG9tcFN1YnNjcmlwdGlvbiB9IGZyb20gJ0BzdG9tcC9zdG9tcGpzJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCAqIGFzIFNvY2tKUyBmcm9tICdzb2NranMtY2xpZW50JztcclxuaW1wb3J0IHsgQXN5bmNMb2NrIH0gZnJvbSAnLi4vdXRpbHMvYXN5bmMtbG9jayc7XHJcbmltcG9ydCB7IFVzZXJJbmZvcm1hdGlvblNlcnZpY2UgfSBmcm9tICcuL3VzZXItaW5mb3JtYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFByaW1pdGl2ZU1hbmFnZXIgfSBmcm9tICcuL21vZGVscyc7XHJcbmltcG9ydCB7IE9uRXZlbnRPcHRpb25zLCBQcmltaXRpdmVFdmVudCB9IGZyb20gJy4vcHJvdG9jb2xzJztcclxuXHJcbmNvbnN0IFJFQ09OTkVDVF9JTlRFUlZBTF9NSUxMSVNFQ09ORFMgPSAzMDAwO1xyXG5jb25zdCBDT05ORUNUSU9OX1RJTUVPVVRfTUlMTElTRUNPTkRTID0gNTAwMDtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV2Vic29ja2V0U2VydmljZSB7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbm5lY3RlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlzY29ubmVjdGVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlY29ubmVjdGVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVycm9yJCA9IG5ldyBTdWJqZWN0PEZyYW1lSW1wbD4oKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3Vic2NyaWJlZCQgPSBuZXcgU3ViamVjdDxQcmltaXRpdmVNYW5hZ2VyPGFueT4+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcmltaXRpdmVNYW5hZ2VyczogTWFwPHN0cmluZywgUHJpbWl0aXZlTWFuYWdlcjxhbnk+PiA9IG5ldyBNYXA8c3RyaW5nLCBQcmltaXRpdmVNYW5hZ2VyPGFueT4+KCk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbm5lY3Rpb25Mb2NrID0gbmV3IEFzeW5jTG9jaygpO1xyXG5cclxuICAgIHByaXZhdGUgc3RvbXBDbGllbnQ6IENsaWVudDtcclxuICAgIHByaXZhdGUgZGVidWdFbmFibGUgPSBmYWxzZTtcclxuICAgIHByaXZhdGUgbG9zdENvbm5lY3Rpb24gPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHVzZXJJbmZvcm1hdGlvblNlcnZpY2U6IFVzZXJJbmZvcm1hdGlvblNlcnZpY2UpIHtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVuYWJsZXMgc3RvbXBqcyBkZWJ1ZyBsb2dzIGFuZCBhZGRpdGlvbmFsIGluZm9cclxuICAgICAqL1xyXG4gICAgcHVibGljIGVuYWJsZURlYnVnTG9ncygpIHtcclxuICAgICAgICB0aGlzLmRlYnVnRW5hYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1hbnVhbGx5IHN0YXJ0cyB0aGUgY29ubmVjdGlvblxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXN5bmMgY29ubmVjdCgpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLmNvbm5lY3Rpb25Mb2NrLmFjcXVpcmUoKTtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNDb25uZWN0ZWQoKSB8fCB0aGlzLmlzQ29ubmVjdGluZygpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5sb3N0Q29ubmVjdGlvbiA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgY29uc3Qgc3RvbXBDb25maWc6IFN0b21wQ29uZmlnID0ge1xyXG4gICAgICAgICAgICAgICAgd2ViU29ja2V0RmFjdG9yeTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU29ja0pTKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFN1YnNjcmlwdGlvblVybCgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OiBDT05ORUNUSU9OX1RJTUVPVVRfTUlMTElTRUNPTkRTXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25UaW1lb3V0OiBDT05ORUNUSU9OX1RJTUVPVVRfTUlMTElTRUNPTkRTLFxyXG4gICAgICAgICAgICAgICAgcmVjb25uZWN0RGVsYXk6IFJFQ09OTkVDVF9JTlRFUlZBTF9NSUxMSVNFQ09ORFMsXHJcbiAgICAgICAgICAgICAgICBkZWJ1ZzogdGhpcy5kZWJ1Zy5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgICAgb25Db25uZWN0OiB0aGlzLmhhbmRsZU9uQ29ubmVjdGVkLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICBvbkRpc2Nvbm5lY3Q6IHRoaXMuaGFuZGxlT25EaXNjb25uZWN0LmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICBvbldlYlNvY2tldENsb3NlOiB0aGlzLmhhbmRsZU9uV2ViU29ja2V0Q2xvc2UuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICAgIG9uU3RvbXBFcnJvcjogdGhpcy5oYW5kbGVPblN0b21wRXJyb3IuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICAgIG9uV2ViU29ja2V0RXJyb3I6IHRoaXMuaGFuZGxlT25XZWJTb2NrZXRFcnJvci5iaW5kKHRoaXMpXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICB0aGlzLmRlYnVnKCdDb25uZWN0aW5nIHRoZSBXZWJzY29rZXQnKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc3RvbXBDbGllbnQgPSBuZXcgQ2xpZW50KHN0b21wQ29uZmlnKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9tcENsaWVudC5hY3RpdmF0ZSgpO1xyXG4gICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY29ubmVjdGlvbkxvY2sucmVsZWFzZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1hbnVhbGx5IGRpc2Nvbm5lY3QgdGhlIHdlYnNvY2tldC4gVGhlIHJlY29ubmVjdCBsb29wIHdpbGwgYmUgc3RvcHBlZC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFzeW5jIGRpc2Nvbm5lY3QoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzQ29ubmVjdGVkKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYXdhaXQgdGhpcy5jb25uZWN0aW9uTG9jay5hY3F1aXJlKCk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBwcmltaXRpdmVNYW5hZ2VyIG9mIHRoaXMucHJpbWl0aXZlTWFuYWdlcnMudmFsdWVzKCkpIHtcclxuICAgICAgICAgICAgICAgIHByaW1pdGl2ZU1hbmFnZXIudW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5wcmltaXRpdmVNYW5hZ2Vycy5jbGVhcigpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbm5lY3RlZCQubmV4dChmYWxzZSk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5zdG9tcENsaWVudCkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zdG9tcENsaWVudC5kZWFjdGl2YXRlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNvbm5lY3Rpb25Mb2NrLnJlbGVhc2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVjayBpZiB0aGUgd2Vic29ja2V0IGlzIGNvbm5lY3RlZFxyXG4gICAgICogQHJldHVybiBgYm9vbGVhbmAgcmVwcmVzZW50aW5nIGlmIHRoZSB3ZWJzb2NrZXQgaXMgY29ubmVjdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpc0Nvbm5lY3RlZCgpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXRoaXMuc3RvbXBDbGllbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvbXBDbGllbnQuY29ubmVjdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2sgaWYgdGhlIHdlYnNvY2tldCBpcyB0cmluZyB0byBjb25uZWN0XHJcbiAgICAgKiBAcmV0dXJuIGBib29sZWFuYCByZXByZXNlbnRpbmcgaWYgdGhlIHdlYnNvY2tldCBzdGF0dXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIGlzQ29ubmVjdGluZygpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXRoaXMuc3RvbXBDbGllbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuICF0aGlzLnN0b21wQ2xpZW50LmNvbm5lY3RlZCAmJiB0aGlzLnN0b21wQ2xpZW50LmFjdGl2ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IHJlc3BvbnNhYmxlIHRvIGVtaXQgYW4gZXZlbnQgd2hlbiB0aGUgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZC5cclxuICAgICAqIERvIG5vdCBmb3JnZXQgdG8gdW5zdWJzY3JpYmUgdGhlIG9ic2VydmFibGUgd2hlbiB5b3UgZG9uJ3QgbmVlZCBpdCBhbnltb3JlLlxyXG4gICAgICogQHJldHVybiBgT2JzZXJ2YWJsZTxib29sZWFuPmBcclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uQ29ubmVjdCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0ZWQkLmFzT2JzZXJ2YWJsZSgpXHJcbiAgICAgICAgICAgIC5waXBlKGZpbHRlcihwID0+IHAgPT09IHRydWUpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IHJlc3BvbnNhYmxlIHRvIGVtaXQgYW4gZXZlbnQgd2hlbiB0aGUgY29ubmVjdGlvbiBpcyBjbG9zZWQuXHJcbiAgICAgKiBEbyBub3QgZm9yZ2V0IHRvIHVuc3Vic2NyaWJlIHRoZSBvYnNlcnZhYmxlIHdoZW4geW91IGRvbid0IG5lZWQgaXQgYW55bW9yZS5cclxuICAgICAqIEByZXR1cm4gYE9ic2VydmFibGU8dm9pZD5gXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvbkRpc2Nvbm5lY3QoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzY29ubmVjdGVkJC5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IHJlc3BvbnNhYmxlIHRvIGVtaXQgYW4gZXZlbnQgd2hlbiB0aGUgY29ubmVjdGlvbiBpcyByZWVzdGFibGlzaGVkLlxyXG4gICAgICogRG8gbm90IGZvcmdldCB0byB1bnN1YnNjcmliZSB0aGUgb2JzZXJ2YWJsZSB3aGVuIHlvdSBkb24ndCBuZWVkIGl0IGFueW1vcmUuXHJcbiAgICAgKiBAcmV0dXJuIGBPYnNlcnZhYmxlPHZvaWQ+YFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb25SZWNvbm5lY3QoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVjb25uZWN0ZWQkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgcmVzcG9uc2FibGUgdG8gZW1pdCBhbiBldmVudCB3aGVuIGFuIGVycm9yIG9jdXJyZWQuXHJcbiAgICAgKiBEbyBub3QgZm9yZ2V0IHRvIHVuc3Vic2NyaWJlIHRoZSBvYnNlcnZhYmxlIHdoZW4geW91IGRvbid0IG5lZWQgaXQgYW55bW9yZS5cclxuICAgICAqIEByZXR1cm4gYE9ic2VydmFibGU8RnJhbWVJbXBsPmBcclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uRXJyb3IoKTogT2JzZXJ2YWJsZTxGcmFtZUltcGw+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lcnJvciQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCByZXNwb25zaWJsZSB0byBlbWl0IGFuIGV2ZW50IHdoZW4gYSBwcmltaXRpdmUgaXMgY2FsbGVkLlxyXG4gICAgICogRG8gbm90IGZvcmdldCB0byB1bnN1YnNjcmliZSB0aGUgb2JzZXJ2YWJsZSB3aGVuIHlvdSBkb24ndCBuZWVkIGl0IGFueW1vcmUuXHJcbiAgICAgKiBAdHlwZVBhcmFtIGA8VD5gIE9iamVjdCB0eXBlIHRoYXQgd2lsbCBiZSB1c2VkIGluIHRoZSBvYnNlcnZhYmxlIGZvciB0aGUgYGRhdGFgIHByb3BlcnR5LlxyXG4gICAgICogQHBhcmFtIHtPbkV2ZW50T3B0aW9uc30gb3B0aW9ucyBDb25maWd1cmF0aW9ucyBmb3IgdGhlIGV2ZW50LlxyXG4gICAgICogQHJldHVybiBgT2JzZXJ2YWJsZTxQcmltaXRpdmVFdmVudDxUPj5gIE9ic2VydmFibGUgdGhhdCBlbWl0cyBhbiBldmVudCB3aGVuIHRoZSBzZXJ2aWNlIGNhbGxzIHRoZSBwcmltaXRpdmUuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvbkV2ZW50PFQ+KG9wdGlvbnM6IE9uRXZlbnRPcHRpb25zKTogT2JzZXJ2YWJsZTxQcmltaXRpdmVFdmVudDxUPj4ge1xyXG4gICAgICAgIGNvbnN0IHsgZG9tYWluLCBzZXJ2aWNlLCBwcmltaXRpdmUgfSA9IG9wdGlvbnM7XHJcbiAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5idWlsZFByaW1pdGl2ZU1hbmFnZXJLZXkoZG9tYWluLCBzZXJ2aWNlLCBwcmltaXRpdmUpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5wcmltaXRpdmVNYW5hZ2Vycy5oYXMoa2V5KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcmltaXRpdmVNYW5hZ2Vycy5nZXQoa2V5KS5nZXRFdmVudE9ic2VydmFibGUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHByaW1pdGl2ZU1hbmFnZXIgPSBuZXcgUHJpbWl0aXZlTWFuYWdlcjxUPihkb21haW4sIHNlcnZpY2UsIHByaW1pdGl2ZSk7XHJcbiAgICAgICAgdGhpcy5wcmltaXRpdmVNYW5hZ2Vycy5zZXQoa2V5LCBwcmltaXRpdmVNYW5hZ2VyKTtcclxuXHJcbiAgICAgICAgdGhpcy5jb25uZWN0KCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMub25Db25uZWN0KClcclxuICAgICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVN0b21wU3Vic2NyaXB0aW9ucyhwcmltaXRpdmVNYW5hZ2VyKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gcHJpbWl0aXZlTWFuYWdlclxyXG4gICAgICAgICAgICAuZ2V0RXZlbnRPYnNlcnZhYmxlKClcclxuICAgICAgICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy51bnN1YnNjcmliZVByaW1pdGl2ZU9uRmluYWxpemUocHJpbWl0aXZlTWFuYWdlcikpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IHJlc3BvbnNpYmxlIHRvIGVtaXQgYW4gZXZlbnQgd2hlbiBhIHN1YnNjcmlwdGlvbiBpcyBjcmVhdGVkIGZvciB0aGUgcHJpbWl0aXZlLlxyXG4gICAgICogRG8gbm90IGZvcmdldCB0byB1bnN1YnNjcmliZSB0aGUgb2JzZXJ2YWJsZSB3aGVuIHlvdSBkb24ndCBuZWVkIGl0IGFueW1vcmUuXHJcbiAgICAgKiBAcGFyYW0ge09uRXZlbnRPcHRpb25zfSBvcHRpb25zIENvbmZpZ3VyYXRpb25zIGZvciB0aGUgZXZlbnQuXHJcbiAgICAgKiBPYnNlcnZhYmxlIHJlc3BvbnPDoXZlbCBwb3IgZW1pdGlyIHVtYSBub3RpZmljYcOnw6NvIGFww7NzIG8gc3Vic2NyaWJlIGRvIGV2ZW50byBwZWxhIHByaW1laXJhIHZlei5cclxuICAgICAqIEByZXR1cm4gYE9ic2VydmFibGU8Ym9vbGVhbj5gIE9ic2VydmFibGUgdGhhdCBlbWl0cyBhbiBldmVudCB3aGVuIHRoZSBzZXJ2aWNlIGNhbGxzIHRoZSBwcmltaXRpdmUuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvblN1YnNjcmliZShvcHRpb25zOiBPbkV2ZW50T3B0aW9ucyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGNvbnN0IHsgZG9tYWluLCBzZXJ2aWNlLCBwcmltaXRpdmUgfSA9IG9wdGlvbnM7XHJcbiAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5idWlsZFByaW1pdGl2ZU1hbmFnZXJLZXkoZG9tYWluLCBzZXJ2aWNlLCBwcmltaXRpdmUpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5vbkNvbm5lY3QoKS5waXBlKFxyXG4gICAgICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucHJpbWl0aXZlTWFuYWdlcnMuaGFzKGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcmltaXRpdmVNYW5hZ2Vyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KGtleSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmdldFN1YnNjcmlwdGlvbk9ic2VydmFibGUoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZSh0YWtlKDEpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdWJzY3JpYmVkJC5hc09ic2VydmFibGUoKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcigocHJpbWl0aXZlTWFuYWdlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5idWlsZFByaW1pdGl2ZU1hbmFnZXJLZXkoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltaXRpdmVNYW5hZ2VyLmRvbWFpbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1pdGl2ZU1hbmFnZXIuc2VydmljZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1pdGl2ZU1hbmFnZXIucHJpbWl0aXZlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkgPT09IGtleTtcclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICBtYXAoKCkgPT4gdHJ1ZSksXHJcbiAgICAgICAgICAgICAgICAgICAgdGFrZSgxKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZGVidWcobWVzc2FnZTogc3RyaW5nLCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pIHtcclxuICAgICAgICBpZiAoIXRoaXMuZGVidWdFbmFibGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zb2xlLmxvZygnV1MgZGVidWc6ICcgKyBtZXNzYWdlLCAuLi5vcHRpb25hbFBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpbmZvKG1lc3NhZ2U6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnNvbGUuaW5mbygnV1MgaW5mbzogJyArIG1lc3NhZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlT25Db25uZWN0ZWQoKSB7XHJcbiAgICAgICAgdGhpcy5pbmZvKCdXZWJzY29rZXQgY29ubmVjdGVkJyk7XHJcblxyXG4gICAgICAgIHRoaXMuY29ubmVjdGVkJC5uZXh0KHRydWUpO1xyXG4gICAgICAgIGlmICh0aGlzLmxvc3RDb25uZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5mbygnV2Vic2Nva2V0IHJlY29ubmVjdGVkLCByZWNyaWF0aW5nIHN1YnNjcmlwdGlvbnMnKTtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVSZWNvbm5lY3Rpb24oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVPbkRpc2Nvbm5lY3QoKSB7XHJcbiAgICAgICAgdGhpcy5pbmZvKCdXZWJzY29rZXQgZGlzY29ubmVjdGVkJyk7XHJcblxyXG4gICAgICAgIHRoaXMuY29ubmVjdGVkJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICB0aGlzLmRpc2Nvbm5lY3RlZCQubmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlT25XZWJTb2NrZXRDbG9zZShkYXRhOiBDbG9zZUV2ZW50KSB7XHJcbiAgICAgICAgaWYgKGRhdGEucmVhc29uICYmIGRhdGEucmVhc29uLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImdvIGF3YXlcIikgIT09IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9zdENvbm5lY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKCdBdXRoZW50aWNhdGlvbkVycm9yJywgbmV3IEZyYW1lSW1wbChcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kOiBkYXRhLnR5cGUsXHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBkYXRhLnJlYXNvblxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChkYXRhLndhc0NsZWFuKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubG9zdENvbm5lY3Rpb24gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlT25TdG9tcEVycm9yKGRhdGE6IEZyYW1lSW1wbCkge1xyXG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoJ1N0b21wRXJyb3InLCBkYXRhKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaXNBdXRoZW50aWNhdGlvbkVycm9yKGRhdGEpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5mbygnQXV0aGVudGljYXRpb24gZXJyb3IsIHJlY3JpYXRpbmcgc3Vic2NyaXB0aW9ucycpO1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZVJlY29ubmVjdGlvbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzQXV0aGVudGljYXRpb25FcnJvcihkYXRhOiBGcmFtZUltcGwpIHtcclxuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBkYXRhPy5oZWFkZXJzPy5tZXNzYWdlO1xyXG4gICAgICAgIGlmICghZXJyb3JNZXNzYWdlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBlcnJvck1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdmb3JiaWRkZW5leGNlcHRpb24nKSAhPT0gLTE7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVPbldlYlNvY2tldEVycm9yKGRhdGE6IGFueSkge1xyXG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoJ1dlYlNvY2tldEVycm9yJywgZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVFcnJvcihvcmlnaW46IHN0cmluZywgZGF0YTogRnJhbWVJbXBsKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihvcmlnaW4sIGRhdGEpO1xyXG4gICAgICAgIHRoaXMuZXJyb3IkLm5leHQoZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVSZWNvbm5lY3Rpb24oKSB7XHJcbiAgICAgICAgdGhpcy5sb3N0Q29ubmVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucmVjb25uZWN0UHJpbWl0aXZlcygpO1xyXG4gICAgICAgIHRoaXMucmVjb25uZWN0ZWQkLm5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHJlY29ubmVjdFByaW1pdGl2ZXMoKTogdm9pZCB7XHJcbiAgICAgICAgZm9yIChjb25zdCBwcmltaXRpdmVNYW5hZ2VyIG9mIHRoaXMucHJpbWl0aXZlTWFuYWdlcnMudmFsdWVzKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGVTdG9tcFN1YnNjcmlwdGlvbnMocHJpbWl0aXZlTWFuYWdlcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYnVpbGRTdWJzY3JpcHRpb25VcmxXaXRoVG9rZW4oZG9tYWluOiBzdHJpbmcsIHNlcnZpY2U6IHN0cmluZywgcHJpbWl0aXZlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGF1dGhUb2tlbiA9IHRoaXMudXNlckluZm9ybWF0aW9uU2VydmljZS5nZXRBdXRoVG9rZW4oKTtcclxuICAgICAgICBjb25zdCB0ZW5hbnQgPSB0aGlzLnVzZXJJbmZvcm1hdGlvblNlcnZpY2UuZ2V0VGVuYW50RG9tYWluKCk7XHJcbiAgICAgICAgcmV0dXJuIGAvdG9waWMvJHt0ZW5hbnR9LyR7YXV0aFRva2VufS8ke2RvbWFpbn0vJHtzZXJ2aWNlfS8ke3ByaW1pdGl2ZX1gO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0U3Vic2NyaXB0aW9uVXJsV2l0aG91dFRva2VuKGRvbWFpbjogc3RyaW5nLCBzZXJ2aWNlOiBzdHJpbmcsIHByaW1pdGl2ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCB0ZW5hbnQgPSB0aGlzLnVzZXJJbmZvcm1hdGlvblNlcnZpY2UuZ2V0VGVuYW50RG9tYWluKCk7XHJcbiAgICAgICAgcmV0dXJuIGAvdG9waWMvJHt0ZW5hbnR9LyR7ZG9tYWlufS8ke3NlcnZpY2V9LyR7cHJpbWl0aXZlfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBidWlsZFByaW1pdGl2ZU1hbmFnZXJLZXkoZG9tYWluOiBzdHJpbmcsIHNlcnZpY2U6IHN0cmluZywgcHJpbWl0aXZlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBgJHtkb21haW59LyR7c2VydmljZX0vJHtwcmltaXRpdmV9YDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIHVuc3Vic2NyaWJlUHJpbWl0aXZlT25GaW5hbGl6ZShwcmltaXRpdmVNYW5hZ2VyOiBQcmltaXRpdmVNYW5hZ2VyPGFueT4pIHtcclxuICAgICAgICBpZiAocHJpbWl0aXZlTWFuYWdlci5oYXNPYnNlcnZlcnMoKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwcmltaXRpdmVNYW5hZ2VyLnVuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGtleSA9IHRoaXMuYnVpbGRQcmltaXRpdmVNYW5hZ2VyS2V5KHByaW1pdGl2ZU1hbmFnZXIuZG9tYWluLCBwcmltaXRpdmVNYW5hZ2VyLnNlcnZpY2UsIHByaW1pdGl2ZU1hbmFnZXIucHJpbWl0aXZlKTtcclxuICAgICAgICB0aGlzLnByaW1pdGl2ZU1hbmFnZXJzLmRlbGV0ZShrZXkpO1xyXG5cclxuICAgICAgICBhd2FpdCB0aGlzLmRpc2Nvbm5lY3RJZk5vTW9yZU9ic2VydmFibGVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyBkaXNjb25uZWN0SWZOb01vcmVPYnNlcnZhYmxlcygpIHtcclxuICAgICAgICBpZiAodGhpcy5nZXRPYnNlcnZlcnNDb3VudCgpID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVidWcoJ01hbnVhbGx5IGRpc2Nvbm5lY3RpbmcgYmVjYXVzZSB0aGVyZSBhcmUgbm8gbW9yZSBvYnNlcnZlcnMnKTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5kaXNjb25uZWN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0T2JzZXJ2ZXJzQ291bnQoKTogbnVtYmVyIHtcclxuICAgICAgICBsZXQgb2JzZXJ2ZXJzQ291bnQgPSAwO1xyXG5cclxuICAgICAgICB0aGlzLnByaW1pdGl2ZU1hbmFnZXJzLmZvckVhY2gocHJpbWl0aXZlTWFuYWdlciA9PiB7XHJcbiAgICAgICAgICAgIG9ic2VydmVyc0NvdW50ICs9IHByaW1pdGl2ZU1hbmFnZXIuZ2V0T2JzZXJ2ZXJzQ291bnQoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG9ic2VydmVyc0NvdW50O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY3JlYXRlU3RvbXBTdWJzY3JpcHRpb248VD4oZGVzdGluYXRpb246IHN0cmluZywgcHJpbWl0aXZlTWFuYWdlcjogUHJpbWl0aXZlTWFuYWdlcjxUPik6IFN0b21wU3Vic2NyaXB0aW9uIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdG9tcENsaWVudC5zdWJzY3JpYmUoZGVzdGluYXRpb24sIChtZXNzYWdlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBKU09OLnBhcnNlKG1lc3NhZ2UuYm9keSB8fCAne30nKTtcclxuICAgICAgICAgICAgcHJpbWl0aXZlTWFuYWdlci5maXJlRXZlbnQoZXZlbnQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY3JlYXRlU3RvbXBTdWJzY3JpcHRpb25zPFQ+KHByaW1pdGl2ZU1hbmFnZXI6IFByaW1pdGl2ZU1hbmFnZXI8VD4pOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb25VcmxXaXRoVG9rZW4gPSB0aGlzLmJ1aWxkU3Vic2NyaXB0aW9uVXJsV2l0aFRva2VuKFxyXG4gICAgICAgICAgICBwcmltaXRpdmVNYW5hZ2VyLmRvbWFpbixcclxuICAgICAgICAgICAgcHJpbWl0aXZlTWFuYWdlci5zZXJ2aWNlLFxyXG4gICAgICAgICAgICBwcmltaXRpdmVNYW5hZ2VyLnByaW1pdGl2ZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uVXJsV2l0aG91dFRva2VuID0gdGhpcy5nZXRTdWJzY3JpcHRpb25VcmxXaXRob3V0VG9rZW4oXHJcbiAgICAgICAgICAgIHByaW1pdGl2ZU1hbmFnZXIuZG9tYWluLFxyXG4gICAgICAgICAgICBwcmltaXRpdmVNYW5hZ2VyLnNlcnZpY2UsXHJcbiAgICAgICAgICAgIHByaW1pdGl2ZU1hbmFnZXIucHJpbWl0aXZlXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgY29uc3Qgc3RvbXBTdWJzY3JpcHRpb25XaXRoVG9rZW4gPSB0aGlzLmNyZWF0ZVN0b21wU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvblVybFdpdGhUb2tlbiwgcHJpbWl0aXZlTWFuYWdlcik7XHJcbiAgICAgICAgY29uc3Qgc3RvbXBTdWJzY3JpcHRpb25XaXRob3V0VG9rZW4gPSB0aGlzLmNyZWF0ZVN0b21wU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvblVybFdpdGhvdXRUb2tlbiwgcHJpbWl0aXZlTWFuYWdlcik7XHJcbiAgICAgICAgcHJpbWl0aXZlTWFuYWdlci5zdWJzY3JpYmUoc3RvbXBTdWJzY3JpcHRpb25XaXRoVG9rZW4sIHN0b21wU3Vic2NyaXB0aW9uV2l0aG91dFRva2VuKTtcclxuICAgICAgICB0aGlzLnN1YnNjcmliZWQkLm5leHQocHJpbWl0aXZlTWFuYWdlcik7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRTdWJzY3JpcHRpb25VcmwoKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMudXNlckluZm9ybWF0aW9uU2VydmljZS5nZXRXZWJTb2NrZXRVcmwoKX0vc3Vic2NyaXB0aW9uYDtcclxuICAgIH1cclxufVxyXG4iXX0=
412
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3dlYnNvY2tldC93ZWJzb2NrZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFrQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQUc1QyxJQUFNLCtCQUErQixHQUFHLElBQUksQ0FBQztBQUM3QyxJQUFNLCtCQUErQixHQUFHLElBQUksQ0FBQztBQUs3QztJQWNJLDBCQUE2QixzQkFBOEM7UUFBOUMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQWIxRCxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDakQsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3BDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNuQyxXQUFNLEdBQUcsSUFBSSxPQUFPLEVBQWEsQ0FBQztRQUNsQyxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUF5QixD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QztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxtREFBd0IsR0FBaEMsVUFBb0MsZ0JBQXFDO1FBQ3JFLElBQU0sd0JBQXdCLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUMvRCxnQkFBZ0IsQ0FBQyxNQUFNLEVBQ3ZCLGdCQUFnQixDQUFDLE9BQU8sRUFDeEIsZ0JBQWdCLENBQUMsU0FBUyxDQUM3QixDQUFDO1FBQ0YsSUFBTSwyQkFBMkIsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQ25FLGdCQUFnQixDQUFDLE1BQU0sRUFDdkIsZ0JBQWdCLENBQUMsT0FBTyxFQUN4QixnQkFBZ0IsQ0FBQyxTQUFTLENBQzdCLENBQUM7UUFFRixJQUFNLDBCQUEwQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyx3QkFBd0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVHLElBQU0sNkJBQTZCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLDJCQUEyQixFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDbEgsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLDBCQUEwQixFQUFFLDZCQUE2QixDQUFDLENBQUM7UUFDdEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU8sNkNBQWtCLEdBQTFCO1FBQ0ksT0FBVSxJQUFJLENBQUMsc0JBQXNCLENBQUMsZUFBZSxFQUFFLGtCQUFlLENBQUM7SUFDM0UsQ0FBQzs7Z0JBelhvRCxzQkFBc0I7OztJQWRsRSxnQkFBZ0I7UUFINUIsVUFBVSxDQUFDO1lBQ1IsVUFBVSxFQUFFLE1BQU07U0FDckIsQ0FBQztPQUNXLGdCQUFnQixDQXdZNUI7MkJBeFpEO0NBd1pDLEFBeFlELElBd1lDO1NBeFlZLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZmlsdGVyLCBmaW5hbGl6ZSwgbWFwLCBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENsaWVudCwgRnJhbWVJbXBsLCBTdG9tcENvbmZpZywgU3RvbXBTdWJzY3JpcHRpb24gfSBmcm9tICdAc3RvbXAvc3RvbXBqcyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgKiBhcyBTb2NrSlMgZnJvbSAnc29ja2pzLWNsaWVudCc7XHJcbmltcG9ydCB7IEFzeW5jTG9jayB9IGZyb20gJy4uL3V0aWxzL2FzeW5jLWxvY2snO1xyXG5pbXBvcnQgeyBVc2VySW5mb3JtYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi91c2VyLWluZm9ybWF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcmltaXRpdmVNYW5hZ2VyIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBPbkV2ZW50T3B0aW9ucywgUHJpbWl0aXZlRXZlbnQgfSBmcm9tICcuL3Byb3RvY29scyc7XHJcblxyXG5jb25zdCBSRUNPTk5FQ1RfSU5URVJWQUxfTUlMTElTRUNPTkRTID0gMzAwMDtcclxuY29uc3QgQ09OTkVDVElPTl9USU1FT1VUX01JTExJU0VDT05EUyA9IDUwMDA7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFdlYnNvY2tldFNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25uZWN0ZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpc2Nvbm5lY3RlZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSByZWNvbm5lY3RlZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBlcnJvciQgPSBuZXcgU3ViamVjdDxGcmFtZUltcGw+KCk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN1YnNjcmliZWQkID0gbmV3IFN1YmplY3Q8UHJpbWl0aXZlTWFuYWdlcjxhbnk+PigpO1xyXG5cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJpbWl0aXZlTWFuYWdlcnM6IE1hcDxzdHJpbmcsIFByaW1pdGl2ZU1hbmFnZXI8YW55Pj4gPSBuZXcgTWFwPHN0cmluZywgUHJpbWl0aXZlTWFuYWdlcjxhbnk+PigpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25uZWN0aW9uTG9jayA9IG5ldyBBc3luY0xvY2soKTtcclxuXHJcbiAgICBwcml2YXRlIHN0b21wQ2xpZW50OiBDbGllbnQ7XHJcbiAgICBwcml2YXRlIGRlYnVnRW5hYmxlID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIGxvc3RDb25uZWN0aW9uID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB1c2VySW5mb3JtYXRpb25TZXJ2aWNlOiBVc2VySW5mb3JtYXRpb25TZXJ2aWNlKSB7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFbmFibGVzIHN0b21wanMgZGVidWcgbG9ncyBhbmQgYWRkaXRpb25hbCBpbmZvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBlbmFibGVEZWJ1Z0xvZ3MoKSB7XHJcbiAgICAgICAgdGhpcy5kZWJ1Z0VuYWJsZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNYW51YWxseSBzdGFydHMgdGhlIGNvbm5lY3Rpb25cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFzeW5jIGNvbm5lY3QoKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5jb25uZWN0aW9uTG9jay5hY3F1aXJlKCk7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzQ29ubmVjdGVkKCkgfHwgdGhpcy5pc0Nvbm5lY3RpbmcoKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubG9zdENvbm5lY3Rpb24gPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHN0b21wQ29uZmlnOiBTdG9tcENvbmZpZyA9IHtcclxuICAgICAgICAgICAgICAgIHdlYlNvY2tldEZhY3Rvcnk6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNvY2tKUyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTdWJzY3JpcHRpb25VcmwoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dDogQ09OTkVDVElPTl9USU1FT1VUX01JTExJU0VDT05EU1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBjb25uZWN0aW9uVGltZW91dDogQ09OTkVDVElPTl9USU1FT1VUX01JTExJU0VDT05EUyxcclxuICAgICAgICAgICAgICAgIHJlY29ubmVjdERlbGF5OiBSRUNPTk5FQ1RfSU5URVJWQUxfTUlMTElTRUNPTkRTLFxyXG4gICAgICAgICAgICAgICAgZGVidWc6IHRoaXMuZGVidWcuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICAgIG9uQ29ubmVjdDogdGhpcy5oYW5kbGVPbkNvbm5lY3RlZC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgICAgb25EaXNjb25uZWN0OiB0aGlzLmhhbmRsZU9uRGlzY29ubmVjdC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgICAgb25XZWJTb2NrZXRDbG9zZTogdGhpcy5oYW5kbGVPbldlYlNvY2tldENsb3NlLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICBvblN0b21wRXJyb3I6IHRoaXMuaGFuZGxlT25TdG9tcEVycm9yLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICBvbldlYlNvY2tldEVycm9yOiB0aGlzLmhhbmRsZU9uV2ViU29ja2V0RXJyb3IuYmluZCh0aGlzKVxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5kZWJ1ZygnQ29ubmVjdGluZyB0aGUgV2Vic2Nva2V0Jyk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnN0b21wQ2xpZW50ID0gbmV3IENsaWVudChzdG9tcENvbmZpZyk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvbXBDbGllbnQuYWN0aXZhdGUoKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNvbm5lY3Rpb25Mb2NrLnJlbGVhc2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNYW51YWxseSBkaXNjb25uZWN0IHRoZSB3ZWJzb2NrZXQuIFRoZSByZWNvbm5lY3QgbG9vcCB3aWxsIGJlIHN0b3BwZWQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhc3luYyBkaXNjb25uZWN0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGlmICghdGhpcy5pc0Nvbm5lY3RlZCgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGF3YWl0IHRoaXMuY29ubmVjdGlvbkxvY2suYWNxdWlyZSgpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHJpbWl0aXZlTWFuYWdlciBvZiB0aGlzLnByaW1pdGl2ZU1hbmFnZXJzLnZhbHVlcygpKSB7XHJcbiAgICAgICAgICAgICAgICBwcmltaXRpdmVNYW5hZ2VyLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMucHJpbWl0aXZlTWFuYWdlcnMuY2xlYXIoKTtcclxuICAgICAgICAgICAgdGhpcy5jb25uZWN0ZWQkLm5leHQoZmFsc2UpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuc3RvbXBDbGllbnQpIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc3RvbXBDbGllbnQuZGVhY3RpdmF0ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5jb25uZWN0aW9uTG9jay5yZWxlYXNlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2sgaWYgdGhlIHdlYnNvY2tldCBpcyBjb25uZWN0ZWRcclxuICAgICAqIEByZXR1cm4gYGJvb2xlYW5gIHJlcHJlc2VudGluZyBpZiB0aGUgd2Vic29ja2V0IGlzIGNvbm5lY3RlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaXNDb25uZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN0b21wQ2xpZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnN0b21wQ2xpZW50LmNvbm5lY3RlZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrIGlmIHRoZSB3ZWJzb2NrZXQgaXMgdHJpbmcgdG8gY29ubmVjdFxyXG4gICAgICogQHJldHVybiBgYm9vbGVhbmAgcmVwcmVzZW50aW5nIGlmIHRoZSB3ZWJzb2NrZXQgc3RhdHVzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpc0Nvbm5lY3RpbmcoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN0b21wQ2xpZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiAhdGhpcy5zdG9tcENsaWVudC5jb25uZWN0ZWQgJiYgdGhpcy5zdG9tcENsaWVudC5hY3RpdmU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCByZXNwb25zYWJsZSB0byBlbWl0IGFuIGV2ZW50IHdoZW4gdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuXHJcbiAgICAgKiBEbyBub3QgZm9yZ2V0IHRvIHVuc3Vic2NyaWJlIHRoZSBvYnNlcnZhYmxlIHdoZW4geW91IGRvbid0IG5lZWQgaXQgYW55bW9yZS5cclxuICAgICAqIEByZXR1cm4gYE9ic2VydmFibGU8Ym9vbGVhbj5gXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvbkNvbm5lY3QoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGVkJC5hc09ic2VydmFibGUoKVxyXG4gICAgICAgICAgICAucGlwZShmaWx0ZXIocCA9PiBwID09PSB0cnVlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCByZXNwb25zYWJsZSB0byBlbWl0IGFuIGV2ZW50IHdoZW4gdGhlIGNvbm5lY3Rpb24gaXMgY2xvc2VkLlxyXG4gICAgICogRG8gbm90IGZvcmdldCB0byB1bnN1YnNjcmliZSB0aGUgb2JzZXJ2YWJsZSB3aGVuIHlvdSBkb24ndCBuZWVkIGl0IGFueW1vcmUuXHJcbiAgICAgKiBAcmV0dXJuIGBPYnNlcnZhYmxlPHZvaWQ+YFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb25EaXNjb25uZWN0KCk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRpc2Nvbm5lY3RlZCQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCByZXNwb25zYWJsZSB0byBlbWl0IGFuIGV2ZW50IHdoZW4gdGhlIGNvbm5lY3Rpb24gaXMgcmVlc3RhYmxpc2hlZC5cclxuICAgICAqIERvIG5vdCBmb3JnZXQgdG8gdW5zdWJzY3JpYmUgdGhlIG9ic2VydmFibGUgd2hlbiB5b3UgZG9uJ3QgbmVlZCBpdCBhbnltb3JlLlxyXG4gICAgICogQHJldHVybiBgT2JzZXJ2YWJsZTx2b2lkPmBcclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uUmVjb25uZWN0KCk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlY29ubmVjdGVkJC5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IHJlc3BvbnNhYmxlIHRvIGVtaXQgYW4gZXZlbnQgd2hlbiBhbiBlcnJvciBvY3VycmVkLlxyXG4gICAgICogRG8gbm90IGZvcmdldCB0byB1bnN1YnNjcmliZSB0aGUgb2JzZXJ2YWJsZSB3aGVuIHlvdSBkb24ndCBuZWVkIGl0IGFueW1vcmUuXHJcbiAgICAgKiBAcmV0dXJuIGBPYnNlcnZhYmxlPEZyYW1lSW1wbD5gXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvbkVycm9yKCk6IE9ic2VydmFibGU8RnJhbWVJbXBsPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3IkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgcmVzcG9uc2libGUgdG8gZW1pdCBhbiBldmVudCB3aGVuIGEgcHJpbWl0aXZlIGlzIGNhbGxlZC5cclxuICAgICAqIERvIG5vdCBmb3JnZXQgdG8gdW5zdWJzY3JpYmUgdGhlIG9ic2VydmFibGUgd2hlbiB5b3UgZG9uJ3QgbmVlZCBpdCBhbnltb3JlLlxyXG4gICAgICogQHR5cGVQYXJhbSBgPFQ+YCBPYmplY3QgdHlwZSB0aGF0IHdpbGwgYmUgdXNlZCBpbiB0aGUgb2JzZXJ2YWJsZSBmb3IgdGhlIGBkYXRhYCBwcm9wZXJ0eS5cclxuICAgICAqIEBwYXJhbSB7T25FdmVudE9wdGlvbnN9IG9wdGlvbnMgQ29uZmlndXJhdGlvbnMgZm9yIHRoZSBldmVudC5cclxuICAgICAqIEByZXR1cm4gYE9ic2VydmFibGU8UHJpbWl0aXZlRXZlbnQ8VD4+YCBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgYW4gZXZlbnQgd2hlbiB0aGUgc2VydmljZSBjYWxscyB0aGUgcHJpbWl0aXZlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb25FdmVudDxUPihvcHRpb25zOiBPbkV2ZW50T3B0aW9ucyk6IE9ic2VydmFibGU8UHJpbWl0aXZlRXZlbnQ8VD4+IHtcclxuICAgICAgICBjb25zdCB7IGRvbWFpbiwgc2VydmljZSwgcHJpbWl0aXZlIH0gPSBvcHRpb25zO1xyXG4gICAgICAgIGNvbnN0IGtleSA9IHRoaXMuYnVpbGRQcmltaXRpdmVNYW5hZ2VyS2V5KGRvbWFpbiwgc2VydmljZSwgcHJpbWl0aXZlKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucHJpbWl0aXZlTWFuYWdlcnMuaGFzKGtleSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJpbWl0aXZlTWFuYWdlcnMuZ2V0KGtleSkuZ2V0RXZlbnRPYnNlcnZhYmxlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBwcmltaXRpdmVNYW5hZ2VyID0gbmV3IFByaW1pdGl2ZU1hbmFnZXI8VD4oZG9tYWluLCBzZXJ2aWNlLCBwcmltaXRpdmUpO1xyXG4gICAgICAgIHRoaXMucHJpbWl0aXZlTWFuYWdlcnMuc2V0KGtleSwgcHJpbWl0aXZlTWFuYWdlcik7XHJcblxyXG4gICAgICAgIHRoaXMuY29ubmVjdCgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm9uQ29ubmVjdCgpXHJcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVTdG9tcFN1YnNjcmlwdGlvbnMocHJpbWl0aXZlTWFuYWdlcik7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHByaW1pdGl2ZU1hbmFnZXJcclxuICAgICAgICAgICAgLmdldEV2ZW50T2JzZXJ2YWJsZSgpXHJcbiAgICAgICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMudW5zdWJzY3JpYmVQcmltaXRpdmVPbkZpbmFsaXplKHByaW1pdGl2ZU1hbmFnZXIpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCByZXNwb25zaWJsZSB0byBlbWl0IGFuIGV2ZW50IHdoZW4gYSBzdWJzY3JpcHRpb24gaXMgY3JlYXRlZCBmb3IgdGhlIHByaW1pdGl2ZS5cclxuICAgICAqIERvIG5vdCBmb3JnZXQgdG8gdW5zdWJzY3JpYmUgdGhlIG9ic2VydmFibGUgd2hlbiB5b3UgZG9uJ3QgbmVlZCBpdCBhbnltb3JlLlxyXG4gICAgICogQHBhcmFtIHtPbkV2ZW50T3B0aW9uc30gb3B0aW9ucyBDb25maWd1cmF0aW9ucyBmb3IgdGhlIGV2ZW50LlxyXG4gICAgICogT2JzZXJ2YWJsZSByZXNwb25zw6F2ZWwgcG9yIGVtaXRpciB1bWEgbm90aWZpY2HDp8OjbyBhcMOzcyBvIHN1YnNjcmliZSBkbyBldmVudG8gcGVsYSBwcmltZWlyYSB2ZXouXHJcbiAgICAgKiBAcmV0dXJuIGBPYnNlcnZhYmxlPGJvb2xlYW4+YCBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgYW4gZXZlbnQgd2hlbiB0aGUgc2VydmljZSBjYWxscyB0aGUgcHJpbWl0aXZlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb25TdWJzY3JpYmUob3B0aW9uczogT25FdmVudE9wdGlvbnMpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICBjb25zdCB7IGRvbWFpbiwgc2VydmljZSwgcHJpbWl0aXZlIH0gPSBvcHRpb25zO1xyXG4gICAgICAgIGNvbnN0IGtleSA9IHRoaXMuYnVpbGRQcmltaXRpdmVNYW5hZ2VyS2V5KGRvbWFpbiwgc2VydmljZSwgcHJpbWl0aXZlKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMub25Db25uZWN0KCkucGlwZShcclxuICAgICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnByaW1pdGl2ZU1hbmFnZXJzLmhhcyhrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJpbWl0aXZlTWFuYWdlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmdldChrZXkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRTdWJzY3JpcHRpb25PYnNlcnZhYmxlKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3Vic2NyaWJlZCQuYXNPYnNlcnZhYmxlKCkucGlwZShcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKHByaW1pdGl2ZU1hbmFnZXIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRQcmltaXRpdmVNYW5hZ2VyS2V5KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWl0aXZlTWFuYWdlci5kb21haW4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltaXRpdmVNYW5hZ2VyLnNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltaXRpdmVNYW5hZ2VyLnByaW1pdGl2ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApID09PSBrZXk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgbWFwKCgpID0+IHRydWUpLFxyXG4gICAgICAgICAgICAgICAgICAgIHRha2UoMSlcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGRlYnVnKG1lc3NhZ2U6IHN0cmluZywgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRlYnVnRW5hYmxlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1dTIGRlYnVnOiAnICsgbWVzc2FnZSwgLi4ub3B0aW9uYWxQYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5mbyhtZXNzYWdlOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zb2xlLmluZm8oJ1dTIGluZm86ICcgKyBtZXNzYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGhhbmRsZU9uQ29ubmVjdGVkKCkge1xyXG4gICAgICAgIHRoaXMuaW5mbygnV2Vic2Nva2V0IGNvbm5lY3RlZCcpO1xyXG5cclxuICAgICAgICB0aGlzLmNvbm5lY3RlZCQubmV4dCh0cnVlKTtcclxuICAgICAgICBpZiAodGhpcy5sb3N0Q29ubmVjdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLmluZm8oJ1dlYnNjb2tldCByZWNvbm5lY3RlZCwgcmVjcmlhdGluZyBzdWJzY3JpcHRpb25zJyk7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlUmVjb25uZWN0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlT25EaXNjb25uZWN0KCkge1xyXG4gICAgICAgIHRoaXMuaW5mbygnV2Vic2Nva2V0IGRpc2Nvbm5lY3RlZCcpO1xyXG5cclxuICAgICAgICB0aGlzLmNvbm5lY3RlZCQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5kaXNjb25uZWN0ZWQkLm5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGhhbmRsZU9uV2ViU29ja2V0Q2xvc2UoZGF0YTogQ2xvc2VFdmVudCkge1xyXG4gICAgICAgIGlmIChkYXRhPy5yZWFzb24/LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImdvIGF3YXlcIikgIT09IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9zdENvbm5lY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKCdBdXRoZW50aWNhdGlvbkVycm9yJywgbmV3IEZyYW1lSW1wbChcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kOiBkYXRhLnR5cGUsXHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBkYXRhLnJlYXNvblxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChkYXRhPy5yZWFzb24/LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImNhbm5vdCBjb25uZWN0IHRvIHNlcnZlclwiKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5sb3N0Q29ubmVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoJ0Nvbm5lY3Rpb25FcnJvcicsIG5ldyBGcmFtZUltcGwoXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZDogZGF0YS50eXBlLFxyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZGF0YS5yZWFzb25cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICkpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZGF0YS53YXNDbGVhbikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmxvc3RDb25uZWN0aW9uID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGhhbmRsZU9uU3RvbXBFcnJvcihkYXRhOiBGcmFtZUltcGwpIHtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKCdTdG9tcEVycm9yJywgZGF0YSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlzQXV0aGVudGljYXRpb25FcnJvcihkYXRhKSkge1xyXG4gICAgICAgICAgICB0aGlzLmluZm8oJ0F1dGhlbnRpY2F0aW9uIGVycm9yLCByZWNyaWF0aW5nIHN1YnNjcmlwdGlvbnMnKTtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVSZWNvbm5lY3Rpb24oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc0F1dGhlbnRpY2F0aW9uRXJyb3IoZGF0YTogRnJhbWVJbXBsKSB7XHJcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZGF0YT8uaGVhZGVycz8ubWVzc2FnZTtcclxuICAgICAgICBpZiAoIWVycm9yTWVzc2FnZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZXJyb3JNZXNzYWdlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZm9yYmlkZGVuZXhjZXB0aW9uJykgIT09IC0xO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlT25XZWJTb2NrZXRFcnJvcihkYXRhOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKCdXZWJTb2NrZXRFcnJvcicsIGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlRXJyb3Iob3JpZ2luOiBzdHJpbmcsIGRhdGE6IEZyYW1lSW1wbCkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3Iob3JpZ2luLCBkYXRhKTtcclxuICAgICAgICB0aGlzLmVycm9yJC5uZXh0KGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlUmVjb25uZWN0aW9uKCkge1xyXG4gICAgICAgIHRoaXMubG9zdENvbm5lY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlY29ubmVjdFByaW1pdGl2ZXMoKTtcclxuICAgICAgICB0aGlzLnJlY29ubmVjdGVkJC5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZWNvbm5lY3RQcmltaXRpdmVzKCk6IHZvaWQge1xyXG4gICAgICAgIGZvciAoY29uc3QgcHJpbWl0aXZlTWFuYWdlciBvZiB0aGlzLnByaW1pdGl2ZU1hbmFnZXJzLnZhbHVlcygpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlU3RvbXBTdWJzY3JpcHRpb25zKHByaW1pdGl2ZU1hbmFnZXIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGJ1aWxkU3Vic2NyaXB0aW9uVXJsV2l0aFRva2VuKGRvbWFpbjogc3RyaW5nLCBzZXJ2aWNlOiBzdHJpbmcsIHByaW1pdGl2ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBhdXRoVG9rZW4gPSB0aGlzLnVzZXJJbmZvcm1hdGlvblNlcnZpY2UuZ2V0QXV0aFRva2VuKCk7XHJcbiAgICAgICAgY29uc3QgdGVuYW50ID0gdGhpcy51c2VySW5mb3JtYXRpb25TZXJ2aWNlLmdldFRlbmFudERvbWFpbigpO1xyXG4gICAgICAgIHJldHVybiBgL3RvcGljLyR7dGVuYW50fS8ke2F1dGhUb2tlbn0vJHtkb21haW59LyR7c2VydmljZX0vJHtwcmltaXRpdmV9YDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFN1YnNjcmlwdGlvblVybFdpdGhvdXRUb2tlbihkb21haW46IHN0cmluZywgc2VydmljZTogc3RyaW5nLCBwcmltaXRpdmU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgdGVuYW50ID0gdGhpcy51c2VySW5mb3JtYXRpb25TZXJ2aWNlLmdldFRlbmFudERvbWFpbigpO1xyXG4gICAgICAgIHJldHVybiBgL3RvcGljLyR7dGVuYW50fS8ke2RvbWFpbn0vJHtzZXJ2aWNlfS8ke3ByaW1pdGl2ZX1gO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYnVpbGRQcmltaXRpdmVNYW5hZ2VyS2V5KGRvbWFpbjogc3RyaW5nLCBzZXJ2aWNlOiBzdHJpbmcsIHByaW1pdGl2ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gYCR7ZG9tYWlufS8ke3NlcnZpY2V9LyR7cHJpbWl0aXZlfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyB1bnN1YnNjcmliZVByaW1pdGl2ZU9uRmluYWxpemUocHJpbWl0aXZlTWFuYWdlcjogUHJpbWl0aXZlTWFuYWdlcjxhbnk+KSB7XHJcbiAgICAgICAgaWYgKHByaW1pdGl2ZU1hbmFnZXIuaGFzT2JzZXJ2ZXJzKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcHJpbWl0aXZlTWFuYWdlci51bnN1YnNjcmliZSgpO1xyXG5cclxuICAgICAgICBjb25zdCBrZXkgPSB0aGlzLmJ1aWxkUHJpbWl0aXZlTWFuYWdlcktleShwcmltaXRpdmVNYW5hZ2VyLmRvbWFpbiwgcHJpbWl0aXZlTWFuYWdlci5zZXJ2aWNlLCBwcmltaXRpdmVNYW5hZ2VyLnByaW1pdGl2ZSk7XHJcbiAgICAgICAgdGhpcy5wcmltaXRpdmVNYW5hZ2Vycy5kZWxldGUoa2V5KTtcclxuXHJcbiAgICAgICAgYXdhaXQgdGhpcy5kaXNjb25uZWN0SWZOb01vcmVPYnNlcnZhYmxlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgZGlzY29ubmVjdElmTm9Nb3JlT2JzZXJ2YWJsZXMoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0T2JzZXJ2ZXJzQ291bnQoKSA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmRlYnVnKCdNYW51YWxseSBkaXNjb25uZWN0aW5nIGJlY2F1c2UgdGhlcmUgYXJlIG5vIG1vcmUgb2JzZXJ2ZXJzJyk7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZGlzY29ubmVjdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldE9ic2VydmVyc0NvdW50KCk6IG51bWJlciB7XHJcbiAgICAgICAgbGV0IG9ic2VydmVyc0NvdW50ID0gMDtcclxuXHJcbiAgICAgICAgdGhpcy5wcmltaXRpdmVNYW5hZ2Vycy5mb3JFYWNoKHByaW1pdGl2ZU1hbmFnZXIgPT4ge1xyXG4gICAgICAgICAgICBvYnNlcnZlcnNDb3VudCArPSBwcmltaXRpdmVNYW5hZ2VyLmdldE9ic2VydmVyc0NvdW50KCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBvYnNlcnZlcnNDb3VudDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNyZWF0ZVN0b21wU3Vic2NyaXB0aW9uPFQ+KGRlc3RpbmF0aW9uOiBzdHJpbmcsIHByaW1pdGl2ZU1hbmFnZXI6IFByaW1pdGl2ZU1hbmFnZXI8VD4pOiBTdG9tcFN1YnNjcmlwdGlvbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvbXBDbGllbnQuc3Vic2NyaWJlKGRlc3RpbmF0aW9uLCAobWVzc2FnZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gSlNPTi5wYXJzZShtZXNzYWdlLmJvZHkgfHwgJ3t9Jyk7XHJcbiAgICAgICAgICAgIHByaW1pdGl2ZU1hbmFnZXIuZmlyZUV2ZW50KGV2ZW50KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNyZWF0ZVN0b21wU3Vic2NyaXB0aW9uczxUPihwcmltaXRpdmVNYW5hZ2VyOiBQcmltaXRpdmVNYW5hZ2VyPFQ+KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uVXJsV2l0aFRva2VuID0gdGhpcy5idWlsZFN1YnNjcmlwdGlvblVybFdpdGhUb2tlbihcclxuICAgICAgICAgICAgcHJpbWl0aXZlTWFuYWdlci5kb21haW4sXHJcbiAgICAgICAgICAgIHByaW1pdGl2ZU1hbmFnZXIuc2VydmljZSxcclxuICAgICAgICAgICAgcHJpbWl0aXZlTWFuYWdlci5wcmltaXRpdmVcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvblVybFdpdGhvdXRUb2tlbiA9IHRoaXMuZ2V0U3Vic2NyaXB0aW9uVXJsV2l0aG91dFRva2VuKFxyXG4gICAgICAgICAgICBwcmltaXRpdmVNYW5hZ2VyLmRvbWFpbixcclxuICAgICAgICAgICAgcHJpbWl0aXZlTWFuYWdlci5zZXJ2aWNlLFxyXG4gICAgICAgICAgICBwcmltaXRpdmVNYW5hZ2VyLnByaW1pdGl2ZVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGNvbnN0IHN0b21wU3Vic2NyaXB0aW9uV2l0aFRva2VuID0gdGhpcy5jcmVhdGVTdG9tcFN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb25VcmxXaXRoVG9rZW4sIHByaW1pdGl2ZU1hbmFnZXIpO1xyXG4gICAgICAgIGNvbnN0IHN0b21wU3Vic2NyaXB0aW9uV2l0aG91dFRva2VuID0gdGhpcy5jcmVhdGVTdG9tcFN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb25VcmxXaXRob3V0VG9rZW4sIHByaW1pdGl2ZU1hbmFnZXIpO1xyXG4gICAgICAgIHByaW1pdGl2ZU1hbmFnZXIuc3Vic2NyaWJlKHN0b21wU3Vic2NyaXB0aW9uV2l0aFRva2VuLCBzdG9tcFN1YnNjcmlwdGlvbldpdGhvdXRUb2tlbik7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVkJC5uZXh0KHByaW1pdGl2ZU1hbmFnZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0U3Vic2NyaXB0aW9uVXJsKCkge1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLnVzZXJJbmZvcm1hdGlvblNlcnZpY2UuZ2V0V2ViU29ja2V0VXJsKCl9L3N1YnNjcmlwdGlvbmA7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,6 @@
1
+ export var EnumDifalNaoContribuinte;
2
+ (function (EnumDifalNaoContribuinte) {
3
+ EnumDifalNaoContribuinte["BASE_UNICA"] = "BASE_UNICA";
4
+ EnumDifalNaoContribuinte["NAO_SE_APLICA"] = "NAO_SE_APLICA";
5
+ })(EnumDifalNaoContribuinte || (EnumDifalNaoContribuinte = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS1kaWZhbC1uYW8tY29udHJpYnVpbnRlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvci1nZXN0YW8tZW1wcmVzYXJpYWwvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29yZS9lbnVtcy9lbnVtLWRpZmFsLW5hby1jb250cmlidWludGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksd0JBR1g7QUFIRCxXQUFZLHdCQUF3QjtJQUNoQyxxREFBeUIsQ0FBQTtJQUN6QiwyREFBK0IsQ0FBQTtBQUNuQyxDQUFDLEVBSFcsd0JBQXdCLEtBQXhCLHdCQUF3QixRQUduQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEVudW1EaWZhbE5hb0NvbnRyaWJ1aW50ZSB7XHJcbiAgICBCQVNFX1VOSUNBID0gXCJCQVNFX1VOSUNBXCIsXHJcbiAgICBOQU9fU0VfQVBMSUNBID0gXCJOQU9fU0VfQVBMSUNBXCIsXHJcbn1cclxuIl19
@@ -0,0 +1,12 @@
1
+ export var EnumImpostoCadastro;
2
+ (function (EnumImpostoCadastro) {
3
+ EnumImpostoCadastro["VPIS_COFINS"] = "VPIS_COFINS";
4
+ EnumImpostoCadastro["VTODOS"] = "VTODOS";
5
+ EnumImpostoCadastro["VISS"] = "VISS";
6
+ EnumImpostoCadastro["VRETENCAO"] = "VRETENCAO";
7
+ EnumImpostoCadastro["VII"] = "VII";
8
+ EnumImpostoCadastro["VIPI"] = "VIPI";
9
+ EnumImpostoCadastro["VICMS"] = "VICMS";
10
+ EnumImpostoCadastro["VCIDE"] = "VCIDE";
11
+ })(EnumImpostoCadastro || (EnumImpostoCadastro = {}));
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS1pbXBvc3RvLWNhZGFzdHJvLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvci1nZXN0YW8tZW1wcmVzYXJpYWwvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29yZS9lbnVtcy9lbnVtLWltcG9zdG8tY2FkYXN0cm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksbUJBU1g7QUFURCxXQUFZLG1CQUFtQjtJQUMzQixrREFBMkIsQ0FBQTtJQUMzQix3Q0FBaUIsQ0FBQTtJQUNqQixvQ0FBYSxDQUFBO0lBQ2IsOENBQXVCLENBQUE7SUFDdkIsa0NBQVcsQ0FBQTtJQUNYLG9DQUFhLENBQUE7SUFDYixzQ0FBZSxDQUFBO0lBQ2Ysc0NBQWUsQ0FBQTtBQUNuQixDQUFDLEVBVFcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQVM5QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEVudW1JbXBvc3RvQ2FkYXN0cm8ge1xyXG4gICAgVlBJU19DT0ZJTlMgPSBcIlZQSVNfQ09GSU5TXCIsXHJcbiAgICBWVE9ET1MgPSBcIlZUT0RPU1wiLFxyXG4gICAgVklTUyA9IFwiVklTU1wiLFxyXG4gICAgVlJFVEVOQ0FPID0gXCJWUkVURU5DQU9cIixcclxuICAgIFZJSSA9IFwiVklJXCIsXHJcbiAgICBWSVBJID0gXCJWSVBJXCIsXHJcbiAgICBWSUNNUyA9IFwiVklDTVNcIixcclxuICAgIFZDSURFID0gXCJWQ0lERVwiLFxyXG59XHJcbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export var EnumSituacaoCaracteristicaFiscal;
2
+ (function (EnumSituacaoCaracteristicaFiscal) {
3
+ EnumSituacaoCaracteristicaFiscal["ATIVO"] = "ATIVO";
4
+ EnumSituacaoCaracteristicaFiscal["INATIVO"] = "INATIVO";
5
+ })(EnumSituacaoCaracteristicaFiscal || (EnumSituacaoCaracteristicaFiscal = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS1zaXR1YWNhby1jYXJhY3RlcmlzdGljYS1maXNjYWwuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb3JlL2VudW1zL2VudW0tc2l0dWFjYW8tY2FyYWN0ZXJpc3RpY2EtZmlzY2FsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGdDQUdYO0FBSEQsV0FBWSxnQ0FBZ0M7SUFDeEMsbURBQWUsQ0FBQTtJQUNmLHVEQUFtQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxnQ0FBZ0MsS0FBaEMsZ0NBQWdDLFFBRzNDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gRW51bVNpdHVhY2FvQ2FyYWN0ZXJpc3RpY2FGaXNjYWwge1xyXG4gICAgQVRJVk8gPSBcIkFUSVZPXCIsXHJcbiAgICBJTkFUSVZPID0gXCJJTkFUSVZPXCIsXHJcbn1cclxuIl19
@@ -0,0 +1,7 @@
1
+ export var EnumTipoOrigem;
2
+ (function (EnumTipoOrigem) {
3
+ EnumTipoOrigem["USUARIO"] = "USUARIO";
4
+ EnumTipoOrigem["SENIOR"] = "SENIOR";
5
+ EnumTipoOrigem["PARCEIRO"] = "PARCEIRO";
6
+ })(EnumTipoOrigem || (EnumTipoOrigem = {}));
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS10aXBvLW9yaWdlbS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLWVtcHJlc2FyaWFsL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvcmUvZW51bXMvZW51bS10aXBvLW9yaWdlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxjQUlYO0FBSkQsV0FBWSxjQUFjO0lBQ3RCLHFDQUFtQixDQUFBO0lBQ25CLG1DQUFpQixDQUFBO0lBQ2pCLHVDQUFxQixDQUFBO0FBQ3pCLENBQUMsRUFKVyxjQUFjLEtBQWQsY0FBYyxRQUl6QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEVudW1UaXBvT3JpZ2VtIHtcclxuICAgIFVTVUFSSU8gPSBcIlVTVUFSSU9cIixcclxuICAgIFNFTklPUiA9IFwiU0VOSU9SXCIsXHJcbiAgICBQQVJDRUlSTyA9IFwiUEFSQ0VJUk9cIixcclxufVxyXG4iXX0=
@@ -0,0 +1,9 @@
1
+ export var getOptionsFromEnum = function (translateService, enumPrefix, enumValues) {
2
+ return enumValues
3
+ .map(function (value) { return ({
4
+ label: translateService.instant("" + enumPrefix + value.toLowerCase()),
5
+ value: value,
6
+ }); })
7
+ .sort(function (a, b) { return (a.label > b.label ? 1 : -1); });
8
+ };
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJ1dGlscy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsSUFBTSxrQkFBa0IsR0FBRyxVQUM5QixnQkFBa0MsRUFDbEMsVUFBa0IsRUFDbEIsVUFBb0I7SUFLcEIsT0FBTyxVQUFVO1NBQ1osR0FBRyxDQUFDLFVBQUMsS0FBYSxJQUFLLE9BQUEsQ0FBQztRQUNyQixLQUFLLEVBQUUsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEtBQUcsVUFBVSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUksQ0FBQztRQUN0RSxLQUFLLE9BQUE7S0FDUixDQUFDLEVBSHNCLENBR3RCLENBQUM7U0FDRixJQUFJLENBQUMsVUFBQyxDQUFDLEVBQUUsQ0FBQyxJQUFLLE9BQUEsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBNUIsQ0FBNEIsQ0FBQyxDQUFDO0FBQ3RELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldE9wdGlvbnNGcm9tRW51bSA9IChcclxuICAgIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBlbnVtUHJlZml4OiBzdHJpbmcsXHJcbiAgICBlbnVtVmFsdWVzOiBzdHJpbmdbXVxyXG4pOiB7XHJcbiAgICBsYWJlbDogc3RyaW5nO1xyXG4gICAgdmFsdWU6IGFueTtcclxufVtdID0+IHtcclxuICAgIHJldHVybiBlbnVtVmFsdWVzXHJcbiAgICAgICAgLm1hcCgodmFsdWU6IHN0cmluZykgPT4gKHtcclxuICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgJHtlbnVtUHJlZml4fSR7dmFsdWUudG9Mb3dlckNhc2UoKX1gKSxcclxuICAgICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgfSkpXHJcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IChhLmxhYmVsID4gYi5sYWJlbCA/IDEgOiAtMSkpO1xyXG59O1xyXG4iXX0=