@sunbird-cb/utils-v2 0.0.21 → 0.0.22-ang-9-12

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 (164) hide show
  1. package/bundles/sunbird-cb-utils-v2.umd.js +1284 -2508
  2. package/bundles/sunbird-cb-utils-v2.umd.js.map +1 -1
  3. package/bundles/sunbird-cb-utils-v2.umd.min.js +1 -1
  4. package/bundles/sunbird-cb-utils-v2.umd.min.js.map +1 -1
  5. package/esm2015/lib/components/image-crop/image-crop.component.js +19 -47
  6. package/esm2015/lib/components/image-crop/image-crop.module.js +8 -2
  7. package/esm2015/lib/constants/features.enum.js +555 -555
  8. package/esm2015/lib/constants/instances.enum.js +5 -5
  9. package/esm2015/lib/constants/misc.constants.js +1 -0
  10. package/esm2015/lib/directives/class-change-on-scroll/class-change-on-scroll.directive.js +11 -21
  11. package/esm2015/lib/directives/default-thumbnail/default-thumbnail.directive.js +1 -7
  12. package/esm2015/lib/directives/image-responsive/image-responsive.directive.js +6 -11
  13. package/esm2015/lib/directives/in-view-port/in-view-port.directive.js +9 -12
  14. package/esm2015/lib/directives/navigation/navigation.directive.js +1 -6
  15. package/esm2015/lib/helpers/functions/getStringifiedQueryParams.js +4 -4
  16. package/esm2015/lib/helpers/horizontal-scroller/horizontal-scroller.component.js +10 -19
  17. package/esm2015/lib/helpers/horizontal-scroller/horizontal-scroller.module.js +4 -2
  18. package/esm2015/lib/helpers/horizontal-scroller-v2/horizontal-scroller-v2.component.js +15 -31
  19. package/esm2015/lib/helpers/horizontal-scroller-v2/horizontal-scroller-v2.module.js +4 -2
  20. package/esm2015/lib/helpers/logout/logout.component.js +11 -14
  21. package/esm2015/lib/helpers/logout/logout.module.js +3 -2
  22. package/esm2015/lib/models/profile-v3.models.js +2 -104
  23. package/esm2015/lib/pipes/pipe-certificate-image-URL/pipe-certimage-URL.pipe.js +4 -4
  24. package/esm2015/lib/pipes/pipe-concise-date-range/pipe-concise-date-range.pipe.js +1 -7
  25. package/esm2015/lib/pipes/pipe-count-transform/pipe-count-transform.pipe.js +1 -1
  26. package/esm2015/lib/pipes/pipe-coursename/pipe-coursename.pipe.js +1 -1
  27. package/esm2015/lib/pipes/pipe-date-concat/pipe-date-concat.pipe.js +1 -11
  28. package/esm2015/lib/pipes/pipe-duration-transform/pipe-duration-transform.pipe.js +1 -1
  29. package/esm2015/lib/pipes/pipe-filter/pipe-filter.pipe.js +3 -3
  30. package/esm2015/lib/pipes/pipe-filter-search/pipe-filter-search.pipe.js +5 -5
  31. package/esm2015/lib/pipes/pipe-filter-v2/pipe-filter-v2.pipe.js +3 -3
  32. package/esm2015/lib/pipes/pipe-filter-v3/pipe-filter-v3.pipe.js +6 -6
  33. package/esm2015/lib/pipes/pipe-limit-to/pipe-limit-to.pipe.js +1 -1
  34. package/esm2015/lib/pipes/pipe-list-filter/pipe-list-filter.pipe.js +4 -4
  35. package/esm2015/lib/pipes/pipe-name-transform/pipe-name-transform.pipe.js +1 -6
  36. package/esm2015/lib/pipes/pipe-nic-relative/pipe-nic-relative.pipe.js +4 -4
  37. package/esm2015/lib/pipes/pipe-order-by/pipe-order-by.pipe.js +1 -4
  38. package/esm2015/lib/pipes/pipe-ordinal/pipe-ordinal.pipe.js +1 -1
  39. package/esm2015/lib/pipes/pipe-partial-content/pipe-partial-content.pipe.js +1 -1
  40. package/esm2015/lib/pipes/pipe-public-URL/pipe-public-URL.pipe.js +4 -4
  41. package/esm2015/lib/pipes/pipe-safe-sanitizer/pipe-safe-sanitizer.pipe.js +5 -5
  42. package/esm2015/lib/resolvers/explore-detail.resolver.js +17 -19
  43. package/esm2015/lib/resolvers/marketing-offering.resolve.js +10 -10
  44. package/esm2015/lib/resolvers/module-name.resolver.js +2 -5
  45. package/esm2015/lib/resolvers/page-name.resolver.js +2 -2
  46. package/esm2015/lib/resolvers/page.constant.js +1 -1
  47. package/esm2015/lib/resolvers/page.model.js +2 -48
  48. package/esm2015/lib/resolvers/page.resolver.js +16 -17
  49. package/esm2015/lib/resolvers/resolver.model.js +2 -6
  50. package/esm2015/lib/services/auth-keycloak.service.js +35 -35
  51. package/esm2015/lib/services/auth-microsoft.service.js +21 -17
  52. package/esm2015/lib/services/card-content.model.js +1 -21
  53. package/esm2015/lib/services/configurations.model.js +2 -551
  54. package/esm2015/lib/services/configurations.service.js +2 -63
  55. package/esm2015/lib/services/content-strip-multiple.model.js +2 -75
  56. package/esm2015/lib/services/event.model.js +1 -114
  57. package/esm2015/lib/services/event.service.js +31 -24
  58. package/esm2015/lib/services/logger.service.js +8 -13
  59. package/esm2015/lib/services/ms-office.model.js +2 -8
  60. package/esm2015/lib/services/multilingual-translations.service.js +11 -15
  61. package/esm2015/lib/services/nps-grid.service.js +6 -8
  62. package/esm2015/lib/services/subapplication-respond.service.js +16 -20
  63. package/esm2015/lib/services/telemetry.service.js +73 -80
  64. package/esm2015/lib/services/user-preference.model.js +2 -38
  65. package/esm2015/lib/services/user-preference.service.js +23 -15
  66. package/esm2015/lib/services/utility.service.js +16 -27
  67. package/esm2015/lib/services/value.service.js +8 -10
  68. package/esm2015/lib/services/widget-content.model.js +1 -242
  69. package/esm2015/lib/services/widget-content.service.js +29 -21
  70. package/esm2015/lib/services/widget-resolver.model.js +2 -57
  71. package/esm2015/lib/services/widget-search.model.js +2 -126
  72. package/esm2015/public-api.js +96 -88
  73. package/esm2015/sunbird-cb-utils-v2.js +2 -10
  74. package/esm5/lib/components/image-crop/image-crop.component.js +30 -48
  75. package/esm5/lib/components/image-crop/image-crop.module.js +8 -2
  76. package/esm5/lib/constants/features.enum.js +555 -555
  77. package/esm5/lib/constants/instances.enum.js +5 -5
  78. package/esm5/lib/constants/misc.constants.js +1 -0
  79. package/esm5/lib/directives/class-change-on-scroll/class-change-on-scroll.directive.js +14 -24
  80. package/esm5/lib/directives/default-thumbnail/default-thumbnail.directive.js +1 -7
  81. package/esm5/lib/directives/image-responsive/image-responsive.directive.js +6 -11
  82. package/esm5/lib/directives/in-view-port/in-view-port.directive.js +9 -12
  83. package/esm5/lib/directives/navigation/navigation.directive.js +1 -6
  84. package/esm5/lib/helpers/functions/getStringifiedQueryParams.js +4 -4
  85. package/esm5/lib/helpers/horizontal-scroller/horizontal-scroller.component.js +10 -19
  86. package/esm5/lib/helpers/horizontal-scroller/horizontal-scroller.module.js +4 -2
  87. package/esm5/lib/helpers/horizontal-scroller-v2/horizontal-scroller-v2.component.js +15 -31
  88. package/esm5/lib/helpers/horizontal-scroller-v2/horizontal-scroller-v2.module.js +4 -2
  89. package/esm5/lib/helpers/logout/logout.component.js +12 -15
  90. package/esm5/lib/helpers/logout/logout.module.js +3 -2
  91. package/esm5/lib/models/profile-v3.models.js +2 -104
  92. package/esm5/lib/pipes/pipe-certificate-image-URL/pipe-certimage-URL.pipe.js +4 -4
  93. package/esm5/lib/pipes/pipe-concise-date-range/pipe-concise-date-range.pipe.js +1 -7
  94. package/esm5/lib/pipes/pipe-count-transform/pipe-count-transform.pipe.js +1 -1
  95. package/esm5/lib/pipes/pipe-coursename/pipe-coursename.pipe.js +1 -1
  96. package/esm5/lib/pipes/pipe-date-concat/pipe-date-concat.pipe.js +1 -11
  97. package/esm5/lib/pipes/pipe-duration-transform/pipe-duration-transform.pipe.js +1 -1
  98. package/esm5/lib/pipes/pipe-filter/pipe-filter.pipe.js +3 -3
  99. package/esm5/lib/pipes/pipe-filter-search/pipe-filter-search.pipe.js +5 -5
  100. package/esm5/lib/pipes/pipe-filter-v2/pipe-filter-v2.pipe.js +3 -3
  101. package/esm5/lib/pipes/pipe-filter-v3/pipe-filter-v3.pipe.js +9 -9
  102. package/esm5/lib/pipes/pipe-limit-to/pipe-limit-to.pipe.js +1 -1
  103. package/esm5/lib/pipes/pipe-list-filter/pipe-list-filter.pipe.js +4 -4
  104. package/esm5/lib/pipes/pipe-name-transform/pipe-name-transform.pipe.js +1 -6
  105. package/esm5/lib/pipes/pipe-nic-relative/pipe-nic-relative.pipe.js +4 -4
  106. package/esm5/lib/pipes/pipe-order-by/pipe-order-by.pipe.js +1 -4
  107. package/esm5/lib/pipes/pipe-ordinal/pipe-ordinal.pipe.js +1 -1
  108. package/esm5/lib/pipes/pipe-partial-content/pipe-partial-content.pipe.js +13 -3
  109. package/esm5/lib/pipes/pipe-public-URL/pipe-public-URL.pipe.js +4 -4
  110. package/esm5/lib/pipes/pipe-safe-sanitizer/pipe-safe-sanitizer.pipe.js +5 -5
  111. package/esm5/lib/resolvers/explore-detail.resolver.js +17 -19
  112. package/esm5/lib/resolvers/marketing-offering.resolve.js +10 -10
  113. package/esm5/lib/resolvers/module-name.resolver.js +2 -5
  114. package/esm5/lib/resolvers/page-name.resolver.js +2 -2
  115. package/esm5/lib/resolvers/page.constant.js +1 -1
  116. package/esm5/lib/resolvers/page.model.js +2 -48
  117. package/esm5/lib/resolvers/page.resolver.js +36 -22
  118. package/esm5/lib/resolvers/resolver.model.js +2 -6
  119. package/esm5/lib/services/auth-keycloak.service.js +86 -48
  120. package/esm5/lib/services/auth-microsoft.service.js +55 -24
  121. package/esm5/lib/services/card-content.model.js +1 -21
  122. package/esm5/lib/services/configurations.model.js +2 -551
  123. package/esm5/lib/services/configurations.service.js +2 -63
  124. package/esm5/lib/services/content-strip-multiple.model.js +2 -75
  125. package/esm5/lib/services/event.model.js +1 -114
  126. package/esm5/lib/services/event.service.js +66 -28
  127. package/esm5/lib/services/logger.service.js +12 -17
  128. package/esm5/lib/services/ms-office.model.js +2 -8
  129. package/esm5/lib/services/multilingual-translations.service.js +11 -15
  130. package/esm5/lib/services/nps-grid.service.js +6 -8
  131. package/esm5/lib/services/subapplication-respond.service.js +30 -24
  132. package/esm5/lib/services/telemetry.service.js +94 -91
  133. package/esm5/lib/services/user-preference.model.js +2 -38
  134. package/esm5/lib/services/user-preference.service.js +63 -17
  135. package/esm5/lib/services/utility.service.js +23 -34
  136. package/esm5/lib/services/value.service.js +8 -10
  137. package/esm5/lib/services/widget-content.model.js +1 -242
  138. package/esm5/lib/services/widget-content.service.js +69 -23
  139. package/esm5/lib/services/widget-resolver.model.js +2 -57
  140. package/esm5/lib/services/widget-search.model.js +2 -126
  141. package/esm5/public-api.js +96 -88
  142. package/esm5/sunbird-cb-utils-v2.js +2 -10
  143. package/fesm2015/sunbird-cb-utils-v2.js +972 -2207
  144. package/fesm2015/sunbird-cb-utils-v2.js.map +1 -1
  145. package/fesm5/sunbird-cb-utils-v2.js +1262 -2264
  146. package/fesm5/sunbird-cb-utils-v2.js.map +1 -1
  147. package/lib/directives/class-change-on-scroll/class-change-on-scroll.directive.d.ts +3 -3
  148. package/lib/helpers/logout/logout.component.d.ts +2 -2
  149. package/lib/pipes/pipe-order-by/pipe-order-by.pipe.d.ts +4 -4
  150. package/lib/resolvers/page.model.d.ts +1 -1
  151. package/lib/services/auth-keycloak.service.d.ts +9 -9
  152. package/lib/services/auth-microsoft.service.d.ts +2 -2
  153. package/lib/services/configurations.model.d.ts +29 -27
  154. package/lib/services/content-strip-multiple.model.d.ts +7 -6
  155. package/lib/services/event.service.d.ts +2 -0
  156. package/lib/services/logger.service.d.ts +4 -4
  157. package/lib/services/telemetry.service.d.ts +3 -3
  158. package/lib/services/utility.service.d.ts +7 -7
  159. package/lib/services/widget-content.model.d.ts +21 -20
  160. package/package.json +12 -12
  161. package/public-api.d.ts +8 -0
  162. package/sunbird-cb-utils-v2-0.0.22-ang-9-12.tgz +0 -0
  163. package/sunbird-cb-utils-v2.d.ts +0 -8
  164. package/sunbird-cb-utils-v2.metadata.json +1 -1
@@ -23,14 +23,14 @@ export class SubapplicationRespondService {
23
23
  this.continueLearningData = null;
24
24
  this.loaded = false;
25
25
  this.changeContextrespond();
26
- this.configSvc.prefChangeNotifier.subscribe((() => {
26
+ this.configSvc.prefChangeNotifier.subscribe(() => {
27
27
  this.changeContextrespond();
28
- }));
28
+ });
29
29
  }
30
30
  loadedRespond(contentWindow, applicationName, id) {
31
31
  if (id && this.activatedRoute.snapshot.queryParams.viewMode && this.activatedRoute.snapshot.queryParams.viewMode === 'RESUME') {
32
32
  this.continueLearningData = null;
33
- this.contentSvc.fetchContentHistory(id).subscribe((data => {
33
+ this.contentSvc.fetchContentHistory(id).subscribe(data => {
34
34
  this.continueLearningData = data.continueData;
35
35
  if (this.configSvc && this.configSvc.userProfile) {
36
36
  const firstName = this.configSvc.userProfile.userName ?
@@ -68,7 +68,7 @@ export class SubapplicationRespondService {
68
68
  this.loaded = true;
69
69
  this.subAppname = applicationName;
70
70
  }
71
- }));
71
+ });
72
72
  }
73
73
  else {
74
74
  if (this.configSvc && this.configSvc.userProfile) {
@@ -124,7 +124,7 @@ export class SubapplicationRespondService {
124
124
  this.eventSvc.dispatchEvent({
125
125
  eventType: WsEvents.WsEventType.Telemetry,
126
126
  eventLogLevel: WsEvents.WsEventLogLevel.Warn,
127
- data: Object.assign({}, tData.data, { eventSubType: WsEvents.EnumTelemetrySubType.Interact }),
127
+ data: Object.assign(Object.assign({}, tData.data), { eventSubType: WsEvents.EnumTelemetrySubType.Interact }),
128
128
  from: tData.subApplicationName,
129
129
  to: 'Telemetry',
130
130
  });
@@ -133,7 +133,7 @@ export class SubapplicationRespondService {
133
133
  this.eventSvc.dispatchEvent({
134
134
  eventType: WsEvents.WsEventType.Telemetry,
135
135
  eventLogLevel: WsEvents.WsEventLogLevel.Trace,
136
- data: Object.assign({}, tData.data, { eventSubType: WsEvents.EnumTelemetrySubType.HeartBeat }),
136
+ data: Object.assign(Object.assign({}, tData.data), { eventSubType: WsEvents.EnumTelemetrySubType.HeartBeat }),
137
137
  from: tData.subApplicationName,
138
138
  to: 'Telemetry',
139
139
  });
@@ -185,6 +185,15 @@ export class SubapplicationRespondService {
185
185
  }
186
186
  }
187
187
  }
188
+ SubapplicationRespondService.ctorParameters = () => [
189
+ { type: ConfigurationsService },
190
+ { type: WidgetContentService },
191
+ { type: ActivatedRoute },
192
+ { type: Router },
193
+ { type: EventService },
194
+ { type: TelemetryService }
195
+ ];
196
+ SubapplicationRespondService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SubapplicationRespondService_Factory() { return new SubapplicationRespondService(i0.ɵɵinject(i1.ConfigurationsService), i0.ɵɵinject(i2.WidgetContentService), i0.ɵɵinject(i3.ActivatedRoute), i0.ɵɵinject(i3.Router), i0.ɵɵinject(i4.EventService), i0.ɵɵinject(i5.TelemetryService)); }, token: SubapplicationRespondService, providedIn: "root" });
188
197
  SubapplicationRespondService.decorators = [
189
198
  { type: Injectable, args: [{
190
199
  providedIn: 'root',
@@ -198,17 +207,4 @@ SubapplicationRespondService.ctorParameters = () => [
198
207
  { type: EventService },
199
208
  { type: TelemetryService }
200
209
  ];
201
- /** @nocollapse */ SubapplicationRespondService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function SubapplicationRespondService_Factory() { return new SubapplicationRespondService(i0.ɵɵinject(i1.ConfigurationsService), i0.ɵɵinject(i2.WidgetContentService), i0.ɵɵinject(i3.ActivatedRoute), i0.ɵɵinject(i3.Router), i0.ɵɵinject(i4.EventService), i0.ɵɵinject(i5.TelemetryService)); }, token: SubapplicationRespondService, providedIn: "root" });
202
- if (false) {
203
- SubapplicationRespondService.prototype.subAppname;
204
- SubapplicationRespondService.prototype.continueLearningData;
205
- SubapplicationRespondService.prototype.contentWindowinfo;
206
- SubapplicationRespondService.prototype.loaded;
207
- SubapplicationRespondService.prototype.configSvc;
208
- SubapplicationRespondService.prototype.contentSvc;
209
- SubapplicationRespondService.prototype.activatedRoute;
210
- SubapplicationRespondService.prototype.router;
211
- SubapplicationRespondService.prototype.eventSvc;
212
- SubapplicationRespondService.prototype.teleSvc;
213
- }
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViYXBwbGljYXRpb24tcmVzcG9uZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHN1bmJpcmQtY2IvdXRpbHMtdjIvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvc3ViYXBwbGljYXRpb24tcmVzcG9uZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUUvRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTs7Ozs7OztBQUl0RCxNQUFNLE9BQU8sNEJBQTRCO0lBS3ZDLFlBQ1UsU0FBZ0MsRUFDaEMsVUFBZ0MsRUFFaEMsY0FBOEIsRUFDOUIsTUFBYyxFQUNkLFFBQXNCLEVBQ3RCLE9BQXlCO1FBTnpCLGNBQVMsR0FBVCxTQUFTLENBQXVCO1FBQ2hDLGVBQVUsR0FBVixVQUFVLENBQXNCO1FBRWhDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBYztRQUN0QixZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQVhuQyxlQUFVLEdBQUcsRUFBRSxDQUFBO1FBQ2YseUJBQW9CLEdBQVEsSUFBSSxDQUFBO1FBRWhDLFdBQU0sR0FBRyxLQUFLLENBQUE7UUFVWixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQTtRQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFr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O0lBS3ZCLGtEQUFlO0lBQ2YsNERBQWdDO0lBQ2hDLHlEQUFzQjtJQUN0Qiw4Q0FBYztJQUVaLGlEQUF3QztJQUN4QyxrREFBd0M7SUFFeEMsc0RBQXNDO0lBQ3RDLDhDQUFzQjtJQUN0QixnREFBOEI7SUFDOUIsK0NBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXHJcbmltcG9ydCB7IFdpZGdldENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi93aWRnZXQtY29udGVudC5zZXJ2aWNlJ1xyXG4vLyBpbXBvcnQgeyBBdXRoS2V5Y2xvYWtTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLWtleWNsb2FrLnNlcnZpY2UnXHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zU2VydmljZSB9IGZyb20gJy4vY29uZmlndXJhdGlvbnMuc2VydmljZSdcclxuaW1wb3J0IHsgV3NFdmVudHMgfSBmcm9tICcuL2V2ZW50Lm1vZGVsJ1xyXG5pbXBvcnQgeyBFdmVudFNlcnZpY2UgfSBmcm9tICcuL2V2ZW50LnNlcnZpY2UnXHJcbmltcG9ydCB7IFRlbGVtZXRyeVNlcnZpY2UgfSBmcm9tICcuL3RlbGVtZXRyeS5zZXJ2aWNlJ1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3ViYXBwbGljYXRpb25SZXNwb25kU2VydmljZSB7XHJcbiAgc3ViQXBwbmFtZSA9ICcnXHJcbiAgY29udGludWVMZWFybmluZ0RhdGE6IGFueSA9IG51bGxcclxuICBjb250ZW50V2luZG93aW5mbzogYW55XHJcbiAgbG9hZGVkID0gZmFsc2VcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY29uZmlnU3ZjOiBDb25maWd1cmF0aW9uc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbnRlbnRTdmM6IFdpZGdldENvbnRlbnRTZXJ2aWNlLFxyXG4gICAgLy8gcHJpdmF0ZSBrZXlDbG9ha1N2YzogQXV0aEtleWNsb2FrU2VydmljZSxcclxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgZXZlbnRTdmM6IEV2ZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgdGVsZVN2YzogVGVsZW1ldHJ5U2VydmljZSxcclxuICApIHtcclxuICAgIHRoaXMuY2hhbmdlQ29udGV4dHJlc3BvbmQoKVxyXG4gICAgdGhpcy5jb25maWdTdmMucHJlZkNoYW5nZU5vdGlmaWVyLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuY2hhbmdlQ29udGV4dHJlc3BvbmQoKVxyXG4gICAgfSlcclxuICB9XHJcbiAgbG9hZGVkUmVzcG9uZChjb250ZW50V2luZG93OiBhbnksIGFwcGxpY2F0aW9uTmFtZTogc3RyaW5nLCBpZD86IHN0cmluZykge1xyXG4gICAgaWYgKGlkICYmIHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMudmlld01vZGUgJiYgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy52aWV3TW9kZSA9PT0gJ1JFU1VNRScpIHtcclxuICAgICAgdGhpcy5jb250aW51ZUxlYXJuaW5nRGF0YSA9IG51bGxcclxuICAgICAgdGhpcy5jb250ZW50U3ZjLmZldGNoQ29udGVudEhpc3RvcnkoaWQpLnN1YnNjcmliZShcclxuICAgICAgICBkYXRhID0+IHtcclxuICAgICAgICAgIHRoaXMuY29udGludWVMZWFybmluZ0RhdGEgPSBkYXRhLmNvbnRpbnVlRGF0YVxyXG4gICAgICAgICAgaWYgKHRoaXMuY29uZmlnU3ZjICYmIHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0TmFtZSA9IHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlLnVzZXJOYW1lID9cclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZS51c2VyTmFtZS5zcGxpdCgnICcsIDIpWzBdIDogJydcclxuICAgICAgICAgICAgY29uc3QgbGFzdE5hbWUgPSB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZS51c2VyTmFtZSA/XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUudXNlck5hbWUuc3BsaXQoJyAnLCAyKVsxXSA6ICcnXHJcbiAgICAgICAgICAgIGNvbnN0IHZpZXdNb2RlOiBzdHJpbmcgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLnZpZXdNb2RlID9cclxuICAgICAgICAgICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLnZpZXdNb2RlIDogJydcclxuICAgICAgICAgICAgLy8gY29uc3QgdG9rZW4gPSB0aGlzLmtleUNsb2FrU3ZjLnRva2VuXHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0ge1xyXG4gICAgICAgICAgICAgIHN1YkFwcGxpY2F0aW9uTmFtZTogYXBwbGljYXRpb25OYW1lLFxyXG4gICAgICAgICAgICAgIHJlcXVlc3RJZDogJ0xPQURFRCcsXHJcbiAgICAgICAgICAgICAgcGFyZW50Q29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgZG9tYWluTmFtZTogd2luZG93LmxvY2F0aW9uLmhvc3QsXHJcbiAgICAgICAgICAgICAgICB1cmw6IHRoaXMucm91dGVyLnVybCxcclxuICAgICAgICAgICAgICAgIHJvb3RPcmc6IHRoaXMuY29uZmlnU3ZjLnJvb3RPcmcsXHJcbiAgICAgICAgICAgICAgICB0aGVtZTogdGhpcy5jb25maWdTdmMuYWN0aXZlVGhlbWVPYmplY3QgPyB7XHJcbiAgICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuY29uZmlnU3ZjLmFjdGl2ZVRoZW1lT2JqZWN0LnRoZW1lTmFtZSxcclxuICAgICAgICAgICAgICAgICAgLi4udGhpcy5jb25maWdTdmMuYWN0aXZlVGhlbWVPYmplY3QuY29sb3IsXHJcbiAgICAgICAgICAgICAgICB9IDogJycsXHJcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogdGhpcy5jb25maWdTdmMuYWN0aXZlRm9udE9iamVjdCA/IHRoaXMuY29uZmlnU3ZjLmFjdGl2ZUZvbnRPYmplY3QuYmFzZUZvbnRTaXplIDogJzE0cHgnLFxyXG4gICAgICAgICAgICAgICAgbG9jYWxlOiAodGhpcy5jb25maWdTdmMudXNlclByZWZlcmVuY2UgJiYgdGhpcy5jb25maWdTdmMudXNlclByZWZlcmVuY2Uuc2VsZWN0ZWRMb2NhbGUpIHx8ICdlbicsXHJcbiAgICAgICAgICAgICAgICBkYXJrTW9kZTogdGhpcy5jb25maWdTdmMuaXNEYXJrTW9kZSxcclxuICAgICAgICAgICAgICAgIHN1YkFwcGxpY2F0aW9uU3RhcnRNb2RlOiB2aWV3TW9kZS50b1VwcGVyQ2FzZSgpLFxyXG4gICAgICAgICAgICAgICAgdXNlcjoge1xyXG4gICAgICAgICAgICAgICAgICBmaXJzdE5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIGxhc3ROYW1lLFxyXG4gICAgICAgICAgICAgICAgICAvLyB0b2tlbixcclxuICAgICAgICAgICAgICAgICAgdXNlcklkOiB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZS51c2VySWQgPyB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZS51c2VySWQgOiAnJyxcclxuICAgICAgICAgICAgICAgICAgcm9sZXM6IHRoaXMuY29uZmlnU3ZjLnVzZXJSb2xlcyA/IEFycmF5LmZyb20odGhpcy5jb25maWdTdmMudXNlclJvbGVzKSA6IFtdLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGhlYXJ0YmVhdEZyZXF1ZW5jeTogJzIwMCcsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBkYXRhOiB0aGlzLmNvbnRpbnVlTGVhcm5pbmdEYXRhLmRhdGEgPyB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZUxlYXJuaW5nOiB0aGlzLmNvbnRpbnVlTGVhcm5pbmdEYXRhLmRhdGEsXHJcbiAgICAgICAgICAgICAgfSA6IG51bGwsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShyZXNwb25zZSwgJyonKVxyXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRXaW5kb3dpbmZvID0gY29udGVudFdpbmRvd1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRlZCA9IHRydWVcclxuICAgICAgICAgICAgdGhpcy5zdWJBcHBuYW1lID0gYXBwbGljYXRpb25OYW1lXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZ1N2YyAmJiB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZSkge1xyXG4gICAgICAgIGNvbnN0IGZpcnN0TmFtZSA9IHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlLnVzZXJOYW1lID9cclxuICAgICAgICAgIHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlLnVzZXJOYW1lLnNwbGl0KCcgJywgMilbMF0gOiAnJ1xyXG4gICAgICAgIGNvbnN0IGxhc3ROYW1lID0gdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUudXNlck5hbWUgP1xyXG4gICAgICAgICAgdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUudXNlck5hbWUuc3BsaXQoJyAnLCAyKVsxXSA6ICcnXHJcbiAgICAgICAgY29uc3Qgdmlld01vZGU6IHN0cmluZyA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMudmlld01vZGUgP1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy52aWV3TW9kZSA6ICcnXHJcbiAgICAgICAgLy8gY29uc3QgdG9rZW4gPSB0aGlzLmtleUNsb2FrU3ZjLnRva2VuXHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICBzdWJBcHBsaWNhdGlvbk5hbWU6IGFwcGxpY2F0aW9uTmFtZSxcclxuICAgICAgICAgIHJlcXVlc3RJZDogJ0xPQURFRCcsXHJcbiAgICAgICAgICBwYXJlbnRDb250ZXh0OiB7XHJcbiAgICAgICAgICAgIGRvbWFpbk5hbWU6IHdpbmRvdy5sb2NhdGlvbi5ob3N0LFxyXG4gICAgICAgICAgICB1cmw6IHRoaXMucm91dGVyLnVybCxcclxuICAgICAgICAgICAgcm9vdE9yZzogdGhpcy5jb25maWdTdmMucm9vdE9yZyxcclxuICAgICAgICAgICAgdGhlbWU6IHRoaXMuY29uZmlnU3ZjLmFjdGl2ZVRoZW1lT2JqZWN0ID8ge1xyXG4gICAgICAgICAgICAgIG5hbWU6IHRoaXMuY29uZmlnU3ZjLmFjdGl2ZVRoZW1lT2JqZWN0LnRoZW1lTmFtZSxcclxuICAgICAgICAgICAgICAuLi50aGlzLmNvbmZpZ1N2Yy5hY3RpdmVUaGVtZU9iamVjdC5jb2xvcixcclxuICAgICAgICAgICAgfSA6ICcnLFxyXG4gICAgICAgICAgICBmb250U2l6ZTogdGhpcy5jb25maWdTdmMuYWN0aXZlRm9udE9iamVjdCA/IHRoaXMuY29uZmlnU3ZjLmFjdGl2ZUZvbnRPYmplY3QuYmFzZUZvbnRTaXplIDogJzE0cHgnLFxyXG4gICAgICAgICAgICBsb2NhbGU6ICh0aGlzLmNvbmZpZ1N2Yy51c2VyUHJlZmVyZW5jZSAmJiB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJlZmVyZW5jZS5zZWxlY3RlZExvY2FsZSkgfHwgJ2VuJyxcclxuICAgICAgICAgICAgZGFya01vZGU6IHRoaXMuY29uZmlnU3ZjLmlzRGFya01vZGUsXHJcbiAgICAgICAgICAgIHN1YkFwcGxpY2F0aW9uU3RhcnRNb2RlOiB2aWV3TW9kZS50b1VwcGVyQ2FzZSgpLFxyXG4gICAgICAgICAgICB1c2VyOiB7XHJcbiAgICAgICAgICAgICAgZmlyc3ROYW1lLFxyXG4gICAgICAgICAgICAgIGxhc3ROYW1lLFxyXG4gICAgICAgICAgICAgIC8vIHRva2VuLFxyXG4gICAgICAgICAgICAgIHVzZXJJZDogdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUudXNlcklkID8gdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUudXNlcklkIDogJycsXHJcbiAgICAgICAgICAgICAgcm9sZXM6IHRoaXMuY29uZmlnU3ZjLnVzZXJSb2xlcyA/IEFycmF5LmZyb20odGhpcy5jb25maWdTdmMudXNlclJvbGVzKSA6IFtdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBoZWFydGJlYXRGcmVxdWVuY3k6ICcyMDAnLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGRhdGE6IG51bGwsXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UocmVzcG9uc2UsICcqJylcclxuICAgICAgICB0aGlzLmNvbnRlbnRXaW5kb3dpbmZvID0gY29udGVudFdpbmRvd1xyXG4gICAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZVxyXG4gICAgICAgIHRoaXMuc3ViQXBwbmFtZSA9IGFwcGxpY2F0aW9uTmFtZVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbnRpbnVlTGVhcm5pbmdSZXNwb25kKGlkOiBzdHJpbmcsIGNvbnRpbnVlTGVhcm5pbmc6IGFueSkge1xyXG4gICAgdGhpcy5jb250ZW50U3ZjLnNhdmVDb250aW51ZUxlYXJuaW5nKFxyXG4gICAgICB7XHJcbiAgICAgICAgY29udGV4dFBhdGhJZDogaWQsXHJcbiAgICAgICAgcmVzb3VyY2VJZDogaWQsXHJcbiAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoeyB0aW1lc3RhbXA6IERhdGUubm93KCksIGRhdGE6IGNvbnRpbnVlTGVhcm5pbmcgfSksXHJcbiAgICAgICAgZGF0ZUFjY2Vzc2VkOiBEYXRlLm5vdygpLFxyXG4gICAgICB9LFxyXG4gICAgKVxyXG4gICAgICAudG9Qcm9taXNlKClcclxuICAgICAgLmNhdGNoKClcclxuICB9XHJcbiAgdGVsZW1ldHJ5RXZlbnRzKHREYXRhOiBhbnkpIHtcclxuICAgIGlmICh0RGF0YSkge1xyXG4gICAgICBzd2l0Y2ggKHREYXRhLmV2ZW50SWQpIHtcclxuICAgICAgICBjYXNlICdJTlRFUkFDVCc6XHJcbiAgICAgICAgICB0aGlzLmV2ZW50U3ZjLmRpc3BhdGNoRXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlJbnRlcmFjdD4oe1xyXG4gICAgICAgICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcclxuICAgICAgICAgICAgZXZlbnRMb2dMZXZlbDogV3NFdmVudHMuV3NFdmVudExvZ0xldmVsLldhcm4sXHJcbiAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAuLi50RGF0YS5kYXRhLFxyXG4gICAgICAgICAgICAgIGV2ZW50U3ViVHlwZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuSW50ZXJhY3QsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGZyb206IHREYXRhLnN1YkFwcGxpY2F0aW9uTmFtZSxcclxuICAgICAgICAgICAgdG86ICdUZWxlbWV0cnknLFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAnSEVBUlRCRUFUJzpcclxuICAgICAgICAgIHRoaXMuZXZlbnRTdmMuZGlzcGF0Y2hFdmVudDxXc0V2ZW50cy5JV3NFdmVudFRlbGVtZXRyeUhlYXJ0QmVhdD4oe1xyXG4gICAgICAgICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcclxuICAgICAgICAgICAgZXZlbnRMb2dMZXZlbDogV3NFdmVudHMuV3NFdmVudExvZ0xldmVsLlRyYWNlLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgLi4udERhdGEuZGF0YSxcclxuICAgICAgICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkhlYXJ0QmVhdCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZnJvbTogdERhdGEuc3ViQXBwbGljYXRpb25OYW1lLFxyXG4gICAgICAgICAgICB0bzogJ1RlbGVtZXRyeScsXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlICdJTVBSRVNTSU9OJzpcclxuICAgICAgICAgIHRoaXMudGVsZVN2Yy5leHRlcm5hbEltcHJlc3Npb24odERhdGEuZGF0YSlcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgdW5zdWJzY3JpYmVSZXNwb25zZSgpIHtcclxuICAgIHRoaXMuc3ViQXBwbmFtZSA9ICcnXHJcbiAgICB0aGlzLmNvbnRpbnVlTGVhcm5pbmdEYXRhID0gbnVsbFxyXG4gICAgdGhpcy5jb250ZW50V2luZG93aW5mbyA9IG51bGxcclxuICAgIHRoaXMubG9hZGVkID0gZmFsc2VcclxuICB9XHJcbiAgY2hhbmdlQ29udGV4dHJlc3BvbmQoKSB7XHJcbiAgICBpZiAodGhpcy5sb2FkZWQgJiYgdGhpcy5jb250ZW50V2luZG93aW5mbyAmJiB0aGlzLmNvbmZpZ1N2YyAmJiB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZSAmJiB0aGlzLnN1YkFwcG5hbWUpIHtcclxuICAgICAgY29uc3QgZmlyc3ROYW1lID0gdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUudXNlck5hbWUgP1xyXG4gICAgICAgIHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlLnVzZXJOYW1lLnNwbGl0KCcgJywgMilbMF0gOiAnJ1xyXG4gICAgICBjb25zdCBsYXN0TmFtZSA9IHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlLnVzZXJOYW1lID9cclxuICAgICAgICB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZS51c2VyTmFtZS5zcGxpdCgnICcsIDIpWzFdIDogJydcclxuICAgICAgY29uc3Qgdmlld01vZGU6IHN0cmluZyA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMudmlld01vZGUgP1xyXG4gICAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMudmlld01vZGUgOiAnJ1xyXG4gICAgICAvLyBjb25zdCB0b2tlbiA9IHRoaXMua2V5Q2xvYWtTdmMudG9rZW5cclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSB7XHJcbiAgICAgICAgc3ViQXBwbGljYXRpb25OYW1lOiB0aGlzLnN1YkFwcG5hbWUsXHJcbiAgICAgICAgcmVxdWVzdElkOiAnQ09OVEVYVF9DSEFOR0UnLFxyXG4gICAgICAgIHBhcmVudENvbnRleHQ6IHtcclxuICAgICAgICAgIGRvbWFpbk5hbWU6IHdpbmRvdy5sb2NhdGlvbi5ob3N0LFxyXG4gICAgICAgICAgdXJsOiB0aGlzLnJvdXRlci51cmwsXHJcbiAgICAgICAgICByb290T3JnOiB0aGlzLmNvbmZpZ1N2Yy5yb290T3JnLFxyXG4gICAgICAgICAgdGhlbWU6IHRoaXMuY29uZmlnU3ZjLmFjdGl2ZVRoZW1lT2JqZWN0ID8ge1xyXG4gICAgICAgICAgICBuYW1lOiB0aGlzLmNvbmZpZ1N2Yy5hY3RpdmVUaGVtZU9iamVjdC50aGVtZU5hbWUsXHJcbiAgICAgICAgICAgIC4uLnRoaXMuY29uZmlnU3ZjLmFjdGl2ZVRoZW1lT2JqZWN0LmNvbG9yLFxyXG4gICAgICAgICAgfSA6ICcnLFxyXG4gICAgICAgICAgZm9udFNpemU6IHRoaXMuY29uZmlnU3ZjLmFjdGl2ZUZvbnRPYmplY3QgPyB0aGlzLmNvbmZpZ1N2Yy5hY3RpdmVGb250T2JqZWN0LmJhc2VGb250U2l6ZSA6ICcxNHB4JyxcclxuICAgICAgICAgIGxvY2FsZTogKHRoaXMuY29uZmlnU3ZjLnVzZXJQcmVmZXJlbmNlICYmIHRoaXMuY29uZmlnU3ZjLnVzZXJQcmVmZXJlbmNlLnNlbGVjdGVkTG9jYWxlKSB8fCAnZW4nLFxyXG4gICAgICAgICAgZGFya01vZGU6IHRoaXMuY29uZmlnU3ZjLmlzRGFya01vZGUsXHJcbiAgICAgICAgICBzdWJBcHBsaWNhdGlvblN0YXJ0TW9kZTogdmlld01vZGUudG9VcHBlckNhc2UoKSxcclxuICAgICAgICAgIHVzZXI6IHtcclxuICAgICAgICAgICAgZmlyc3ROYW1lLFxyXG4gICAgICAgICAgICBsYXN0TmFtZSxcclxuICAgICAgICAgICAgLy8gdG9rZW4sXHJcbiAgICAgICAgICAgIHVzZXJJZDogdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUudXNlcklkID8gdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUudXNlcklkIDogJycsXHJcbiAgICAgICAgICAgIHJvbGVzOiB0aGlzLmNvbmZpZ1N2Yy51c2VyUm9sZXMgPyBBcnJheS5mcm9tKHRoaXMuY29uZmlnU3ZjLnVzZXJSb2xlcykgOiBbXSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBoZWFydGJlYXRGcmVxdWVuY3k6ICcyMDAnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb250ZW50V2luZG93aW5mby5wb3N0TWVzc2FnZShyZXNwb25zZSwgJyonKVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViYXBwbGljYXRpb24tcmVzcG9uZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHN1bmJpcmQtY2IvdXRpbHMtdjIvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvc3ViYXBwbGljYXRpb24tcmVzcG9uZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUUvRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTs7Ozs7OztBQUl0RCxNQUFNLE9BQU8sNEJBQTRCO0lBS3ZDLFlBQ1UsU0FBZ0MsRUFDaEMsVUFBZ0MsRUFFaEMsY0FBOEIsRUFDOUIsTUFBYyxFQUNkLFFBQXNCLEVBQ3RCLE9BQXlCO1FBTnpCLGNBQVMsR0FBVCxTQUFTLENBQXVCO1FBQ2hDLGVBQVUsR0FBVixVQUFVLENBQXNCO1FBRWhDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBYztRQUN0QixZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQVhuQyxlQUFVLEdBQUcsRUFBRSxDQUFBO1FBQ2YseUJBQW9CLEdBQVEsSUFBSSxDQUFBO1FBRWhDLFdBQU0sR0FBRyxLQUFLLENBQUE7UUFVWixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQTtRQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFr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WUFoTW9CLHFCQUFxQjtZQUNwQixvQkFBb0I7WUFFaEIsY0FBYztZQUN0QixNQUFNO1lBQ0osWUFBWTtZQUNiLGdCQUFnQjs7OztZQWZwQyxVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQU5RLHFCQUFxQjtZQUZyQixvQkFBb0I7WUFEcEIsY0FBYztZQUFFLE1BQU07WUFLdEIsWUFBWTtZQUNaLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xyXG5pbXBvcnQgeyBXaWRnZXRDb250ZW50U2VydmljZSB9IGZyb20gJy4vd2lkZ2V0LWNvbnRlbnQuc2VydmljZSdcclxuLy8gaW1wb3J0IHsgQXV0aEtleWNsb2FrU2VydmljZSB9IGZyb20gJy4vYXV0aC1rZXljbG9hay5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UgfSBmcm9tICcuL2NvbmZpZ3VyYXRpb25zLnNlcnZpY2UnXHJcbmltcG9ydCB7IFdzRXZlbnRzIH0gZnJvbSAnLi9ldmVudC5tb2RlbCdcclxuaW1wb3J0IHsgRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi9ldmVudC5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBUZWxlbWV0cnlTZXJ2aWNlIH0gZnJvbSAnLi90ZWxlbWV0cnkuc2VydmljZSdcclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFN1YmFwcGxpY2F0aW9uUmVzcG9uZFNlcnZpY2Uge1xyXG4gIHN1YkFwcG5hbWUgPSAnJ1xyXG4gIGNvbnRpbnVlTGVhcm5pbmdEYXRhOiBhbnkgPSBudWxsXHJcbiAgY29udGVudFdpbmRvd2luZm86IGFueVxyXG4gIGxvYWRlZCA9IGZhbHNlXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNvbmZpZ1N2YzogQ29uZmlndXJhdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb250ZW50U3ZjOiBXaWRnZXRDb250ZW50U2VydmljZSxcclxuICAgIC8vIHByaXZhdGUga2V5Q2xvYWtTdmM6IEF1dGhLZXljbG9ha1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGV2ZW50U3ZjOiBFdmVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRlbGVTdmM6IFRlbGVtZXRyeVNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNoYW5nZUNvbnRleHRyZXNwb25kKClcclxuICAgIHRoaXMuY29uZmlnU3ZjLnByZWZDaGFuZ2VOb3RpZmllci5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmNoYW5nZUNvbnRleHRyZXNwb25kKClcclxuICAgIH0pXHJcbiAgfVxyXG4gIGxvYWRlZFJlc3BvbmQoY29udGVudFdpbmRvdzogYW55LCBhcHBsaWNhdGlvbk5hbWU6IHN0cmluZywgaWQ/OiBzdHJpbmcpIHtcclxuICAgIGlmIChpZCAmJiB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLnZpZXdNb2RlICYmIHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMudmlld01vZGUgPT09ICdSRVNVTUUnKSB7XHJcbiAgICAgIHRoaXMuY29udGludWVMZWFybmluZ0RhdGEgPSBudWxsXHJcbiAgICAgIHRoaXMuY29udGVudFN2Yy5mZXRjaENvbnRlbnRIaXN0b3J5KGlkKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgZGF0YSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbnRpbnVlTGVhcm5pbmdEYXRhID0gZGF0YS5jb250aW51ZURhdGFcclxuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZ1N2YyAmJiB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZSkge1xyXG4gICAgICAgICAgICBjb25zdCBmaXJzdE5hbWUgPSB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZS51c2VyTmFtZSA/XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUudXNlck5hbWUuc3BsaXQoJyAnLCAyKVswXSA6ICcnXHJcbiAgICAgICAgICAgIGNvbnN0IGxhc3ROYW1lID0gdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUudXNlck5hbWUgP1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlLnVzZXJOYW1lLnNwbGl0KCcgJywgMilbMV0gOiAnJ1xyXG4gICAgICAgICAgICBjb25zdCB2aWV3TW9kZTogc3RyaW5nID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy52aWV3TW9kZSA/XHJcbiAgICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy52aWV3TW9kZSA6ICcnXHJcbiAgICAgICAgICAgIC8vIGNvbnN0IHRva2VuID0gdGhpcy5rZXlDbG9ha1N2Yy50b2tlblxyXG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgICBzdWJBcHBsaWNhdGlvbk5hbWU6IGFwcGxpY2F0aW9uTmFtZSxcclxuICAgICAgICAgICAgICByZXF1ZXN0SWQ6ICdMT0FERUQnLFxyXG4gICAgICAgICAgICAgIHBhcmVudENvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgIGRvbWFpbk5hbWU6IHdpbmRvdy5sb2NhdGlvbi5ob3N0LFxyXG4gICAgICAgICAgICAgICAgdXJsOiB0aGlzLnJvdXRlci51cmwsXHJcbiAgICAgICAgICAgICAgICByb290T3JnOiB0aGlzLmNvbmZpZ1N2Yy5yb290T3JnLFxyXG4gICAgICAgICAgICAgICAgdGhlbWU6IHRoaXMuY29uZmlnU3ZjLmFjdGl2ZVRoZW1lT2JqZWN0ID8ge1xyXG4gICAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLmNvbmZpZ1N2Yy5hY3RpdmVUaGVtZU9iamVjdC50aGVtZU5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY29uZmlnU3ZjLmFjdGl2ZVRoZW1lT2JqZWN0LmNvbG9yLFxyXG4gICAgICAgICAgICAgICAgfSA6ICcnLFxyXG4gICAgICAgICAgICAgICAgZm9udFNpemU6IHRoaXMuY29uZmlnU3ZjLmFjdGl2ZUZvbnRPYmplY3QgPyB0aGlzLmNvbmZpZ1N2Yy5hY3RpdmVGb250T2JqZWN0LmJhc2VGb250U2l6ZSA6ICcxNHB4JyxcclxuICAgICAgICAgICAgICAgIGxvY2FsZTogKHRoaXMuY29uZmlnU3ZjLnVzZXJQcmVmZXJlbmNlICYmIHRoaXMuY29uZmlnU3ZjLnVzZXJQcmVmZXJlbmNlLnNlbGVjdGVkTG9jYWxlKSB8fCAnZW4nLFxyXG4gICAgICAgICAgICAgICAgZGFya01vZGU6IHRoaXMuY29uZmlnU3ZjLmlzRGFya01vZGUsXHJcbiAgICAgICAgICAgICAgICBzdWJBcHBsaWNhdGlvblN0YXJ0TW9kZTogdmlld01vZGUudG9VcHBlckNhc2UoKSxcclxuICAgICAgICAgICAgICAgIHVzZXI6IHtcclxuICAgICAgICAgICAgICAgICAgZmlyc3ROYW1lLFxyXG4gICAgICAgICAgICAgICAgICBsYXN0TmFtZSxcclxuICAgICAgICAgICAgICAgICAgLy8gdG9rZW4sXHJcbiAgICAgICAgICAgICAgICAgIHVzZXJJZDogdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUudXNlcklkID8gdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUudXNlcklkIDogJycsXHJcbiAgICAgICAgICAgICAgICAgIHJvbGVzOiB0aGlzLmNvbmZpZ1N2Yy51c2VyUm9sZXMgPyBBcnJheS5mcm9tKHRoaXMuY29uZmlnU3ZjLnVzZXJSb2xlcykgOiBbXSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBoZWFydGJlYXRGcmVxdWVuY3k6ICcyMDAnLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgZGF0YTogdGhpcy5jb250aW51ZUxlYXJuaW5nRGF0YS5kYXRhID8ge1xyXG4gICAgICAgICAgICAgICAgY29udGludWVMZWFybmluZzogdGhpcy5jb250aW51ZUxlYXJuaW5nRGF0YS5kYXRhLFxyXG4gICAgICAgICAgICAgIH0gOiBudWxsLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UocmVzcG9uc2UsICcqJylcclxuICAgICAgICAgICAgdGhpcy5jb250ZW50V2luZG93aW5mbyA9IGNvbnRlbnRXaW5kb3dcclxuICAgICAgICAgICAgdGhpcy5sb2FkZWQgPSB0cnVlXHJcbiAgICAgICAgICAgIHRoaXMuc3ViQXBwbmFtZSA9IGFwcGxpY2F0aW9uTmFtZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5jb25maWdTdmMgJiYgdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUpIHtcclxuICAgICAgICBjb25zdCBmaXJzdE5hbWUgPSB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZS51c2VyTmFtZSA/XHJcbiAgICAgICAgICB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZS51c2VyTmFtZS5zcGxpdCgnICcsIDIpWzBdIDogJydcclxuICAgICAgICBjb25zdCBsYXN0TmFtZSA9IHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlLnVzZXJOYW1lID9cclxuICAgICAgICAgIHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlLnVzZXJOYW1lLnNwbGl0KCcgJywgMilbMV0gOiAnJ1xyXG4gICAgICAgIGNvbnN0IHZpZXdNb2RlOiBzdHJpbmcgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLnZpZXdNb2RlID9cclxuICAgICAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMudmlld01vZGUgOiAnJ1xyXG4gICAgICAgIC8vIGNvbnN0IHRva2VuID0gdGhpcy5rZXlDbG9ha1N2Yy50b2tlblxyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0ge1xyXG4gICAgICAgICAgc3ViQXBwbGljYXRpb25OYW1lOiBhcHBsaWNhdGlvbk5hbWUsXHJcbiAgICAgICAgICByZXF1ZXN0SWQ6ICdMT0FERUQnLFxyXG4gICAgICAgICAgcGFyZW50Q29udGV4dDoge1xyXG4gICAgICAgICAgICBkb21haW5OYW1lOiB3aW5kb3cubG9jYXRpb24uaG9zdCxcclxuICAgICAgICAgICAgdXJsOiB0aGlzLnJvdXRlci51cmwsXHJcbiAgICAgICAgICAgIHJvb3RPcmc6IHRoaXMuY29uZmlnU3ZjLnJvb3RPcmcsXHJcbiAgICAgICAgICAgIHRoZW1lOiB0aGlzLmNvbmZpZ1N2Yy5hY3RpdmVUaGVtZU9iamVjdCA/IHtcclxuICAgICAgICAgICAgICBuYW1lOiB0aGlzLmNvbmZpZ1N2Yy5hY3RpdmVUaGVtZU9iamVjdC50aGVtZU5hbWUsXHJcbiAgICAgICAgICAgICAgLi4udGhpcy5jb25maWdTdmMuYWN0aXZlVGhlbWVPYmplY3QuY29sb3IsXHJcbiAgICAgICAgICAgIH0gOiAnJyxcclxuICAgICAgICAgICAgZm9udFNpemU6IHRoaXMuY29uZmlnU3ZjLmFjdGl2ZUZvbnRPYmplY3QgPyB0aGlzLmNvbmZpZ1N2Yy5hY3RpdmVGb250T2JqZWN0LmJhc2VGb250U2l6ZSA6ICcxNHB4JyxcclxuICAgICAgICAgICAgbG9jYWxlOiAodGhpcy5jb25maWdTdmMudXNlclByZWZlcmVuY2UgJiYgdGhpcy5jb25maWdTdmMudXNlclByZWZlcmVuY2Uuc2VsZWN0ZWRMb2NhbGUpIHx8ICdlbicsXHJcbiAgICAgICAgICAgIGRhcmtNb2RlOiB0aGlzLmNvbmZpZ1N2Yy5pc0RhcmtNb2RlLFxyXG4gICAgICAgICAgICBzdWJBcHBsaWNhdGlvblN0YXJ0TW9kZTogdmlld01vZGUudG9VcHBlckNhc2UoKSxcclxuICAgICAgICAgICAgdXNlcjoge1xyXG4gICAgICAgICAgICAgIGZpcnN0TmFtZSxcclxuICAgICAgICAgICAgICBsYXN0TmFtZSxcclxuICAgICAgICAgICAgICAvLyB0b2tlbixcclxuICAgICAgICAgICAgICB1c2VySWQ6IHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlLnVzZXJJZCA/IHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlLnVzZXJJZCA6ICcnLFxyXG4gICAgICAgICAgICAgIHJvbGVzOiB0aGlzLmNvbmZpZ1N2Yy51c2VyUm9sZXMgPyBBcnJheS5mcm9tKHRoaXMuY29uZmlnU3ZjLnVzZXJSb2xlcykgOiBbXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgaGVhcnRiZWF0RnJlcXVlbmN5OiAnMjAwJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBkYXRhOiBudWxsLFxyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZW50V2luZG93LnBvc3RNZXNzYWdlKHJlc3BvbnNlLCAnKicpXHJcbiAgICAgICAgdGhpcy5jb250ZW50V2luZG93aW5mbyA9IGNvbnRlbnRXaW5kb3dcclxuICAgICAgICB0aGlzLmxvYWRlZCA9IHRydWVcclxuICAgICAgICB0aGlzLnN1YkFwcG5hbWUgPSBhcHBsaWNhdGlvbk5hbWVcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBjb250aW51ZUxlYXJuaW5nUmVzcG9uZChpZDogc3RyaW5nLCBjb250aW51ZUxlYXJuaW5nOiBhbnkpIHtcclxuICAgIHRoaXMuY29udGVudFN2Yy5zYXZlQ29udGludWVMZWFybmluZyhcclxuICAgICAge1xyXG4gICAgICAgIGNvbnRleHRQYXRoSWQ6IGlkLFxyXG4gICAgICAgIHJlc291cmNlSWQ6IGlkLFxyXG4gICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHsgdGltZXN0YW1wOiBEYXRlLm5vdygpLCBkYXRhOiBjb250aW51ZUxlYXJuaW5nIH0pLFxyXG4gICAgICAgIGRhdGVBY2Nlc3NlZDogRGF0ZS5ub3coKSxcclxuICAgICAgfSxcclxuICAgIClcclxuICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgIC5jYXRjaCgpXHJcbiAgfVxyXG4gIHRlbGVtZXRyeUV2ZW50cyh0RGF0YTogYW55KSB7XHJcbiAgICBpZiAodERhdGEpIHtcclxuICAgICAgc3dpdGNoICh0RGF0YS5ldmVudElkKSB7XHJcbiAgICAgICAgY2FzZSAnSU5URVJBQ1QnOlxyXG4gICAgICAgICAgdGhpcy5ldmVudFN2Yy5kaXNwYXRjaEV2ZW50PFdzRXZlbnRzLklXc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3Q+KHtcclxuICAgICAgICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXHJcbiAgICAgICAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5XYXJuLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgLi4udERhdGEuZGF0YSxcclxuICAgICAgICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkludGVyYWN0LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBmcm9tOiB0RGF0YS5zdWJBcHBsaWNhdGlvbk5hbWUsXHJcbiAgICAgICAgICAgIHRvOiAnVGVsZW1ldHJ5JyxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgJ0hFQVJUQkVBVCc6XHJcbiAgICAgICAgICB0aGlzLmV2ZW50U3ZjLmRpc3BhdGNoRXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlIZWFydEJlYXQ+KHtcclxuICAgICAgICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXHJcbiAgICAgICAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5UcmFjZSxcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgIC4uLnREYXRhLmRhdGEsXHJcbiAgICAgICAgICAgICAgZXZlbnRTdWJUeXBlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5IZWFydEJlYXQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGZyb206IHREYXRhLnN1YkFwcGxpY2F0aW9uTmFtZSxcclxuICAgICAgICAgICAgdG86ICdUZWxlbWV0cnknLFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAnSU1QUkVTU0lPTic6XHJcbiAgICAgICAgICB0aGlzLnRlbGVTdmMuZXh0ZXJuYWxJbXByZXNzaW9uKHREYXRhLmRhdGEpXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHVuc3Vic2NyaWJlUmVzcG9uc2UoKSB7XHJcbiAgICB0aGlzLnN1YkFwcG5hbWUgPSAnJ1xyXG4gICAgdGhpcy5jb250aW51ZUxlYXJuaW5nRGF0YSA9IG51bGxcclxuICAgIHRoaXMuY29udGVudFdpbmRvd2luZm8gPSBudWxsXHJcbiAgICB0aGlzLmxvYWRlZCA9IGZhbHNlXHJcbiAgfVxyXG4gIGNoYW5nZUNvbnRleHRyZXNwb25kKCkge1xyXG4gICAgaWYgKHRoaXMubG9hZGVkICYmIHRoaXMuY29udGVudFdpbmRvd2luZm8gJiYgdGhpcy5jb25maWdTdmMgJiYgdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUgJiYgdGhpcy5zdWJBcHBuYW1lKSB7XHJcbiAgICAgIGNvbnN0IGZpcnN0TmFtZSA9IHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlLnVzZXJOYW1lID9cclxuICAgICAgICB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZS51c2VyTmFtZS5zcGxpdCgnICcsIDIpWzBdIDogJydcclxuICAgICAgY29uc3QgbGFzdE5hbWUgPSB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZS51c2VyTmFtZSA/XHJcbiAgICAgICAgdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUudXNlck5hbWUuc3BsaXQoJyAnLCAyKVsxXSA6ICcnXHJcbiAgICAgIGNvbnN0IHZpZXdNb2RlOiBzdHJpbmcgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLnZpZXdNb2RlID9cclxuICAgICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLnZpZXdNb2RlIDogJydcclxuICAgICAgLy8gY29uc3QgdG9rZW4gPSB0aGlzLmtleUNsb2FrU3ZjLnRva2VuXHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0ge1xyXG4gICAgICAgIHN1YkFwcGxpY2F0aW9uTmFtZTogdGhpcy5zdWJBcHBuYW1lLFxyXG4gICAgICAgIHJlcXVlc3RJZDogJ0NPTlRFWFRfQ0hBTkdFJyxcclxuICAgICAgICBwYXJlbnRDb250ZXh0OiB7XHJcbiAgICAgICAgICBkb21haW5OYW1lOiB3aW5kb3cubG9jYXRpb24uaG9zdCxcclxuICAgICAgICAgIHVybDogdGhpcy5yb3V0ZXIudXJsLFxyXG4gICAgICAgICAgcm9vdE9yZzogdGhpcy5jb25maWdTdmMucm9vdE9yZyxcclxuICAgICAgICAgIHRoZW1lOiB0aGlzLmNvbmZpZ1N2Yy5hY3RpdmVUaGVtZU9iamVjdCA/IHtcclxuICAgICAgICAgICAgbmFtZTogdGhpcy5jb25maWdTdmMuYWN0aXZlVGhlbWVPYmplY3QudGhlbWVOYW1lLFxyXG4gICAgICAgICAgICAuLi50aGlzLmNvbmZpZ1N2Yy5hY3RpdmVUaGVtZU9iamVjdC5jb2xvcixcclxuICAgICAgICAgIH0gOiAnJyxcclxuICAgICAgICAgIGZvbnRTaXplOiB0aGlzLmNvbmZpZ1N2Yy5hY3RpdmVGb250T2JqZWN0ID8gdGhpcy5jb25maWdTdmMuYWN0aXZlRm9udE9iamVjdC5iYXNlRm9udFNpemUgOiAnMTRweCcsXHJcbiAgICAgICAgICBsb2NhbGU6ICh0aGlzLmNvbmZpZ1N2Yy51c2VyUHJlZmVyZW5jZSAmJiB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJlZmVyZW5jZS5zZWxlY3RlZExvY2FsZSkgfHwgJ2VuJyxcclxuICAgICAgICAgIGRhcmtNb2RlOiB0aGlzLmNvbmZpZ1N2Yy5pc0RhcmtNb2RlLFxyXG4gICAgICAgICAgc3ViQXBwbGljYXRpb25TdGFydE1vZGU6IHZpZXdNb2RlLnRvVXBwZXJDYXNlKCksXHJcbiAgICAgICAgICB1c2VyOiB7XHJcbiAgICAgICAgICAgIGZpcnN0TmFtZSxcclxuICAgICAgICAgICAgbGFzdE5hbWUsXHJcbiAgICAgICAgICAgIC8vIHRva2VuLFxyXG4gICAgICAgICAgICB1c2VySWQ6IHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlLnVzZXJJZCA/IHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlLnVzZXJJZCA6ICcnLFxyXG4gICAgICAgICAgICByb2xlczogdGhpcy5jb25maWdTdmMudXNlclJvbGVzID8gQXJyYXkuZnJvbSh0aGlzLmNvbmZpZ1N2Yy51c2VyUm9sZXMpIDogW10sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgaGVhcnRiZWF0RnJlcXVlbmN5OiAnMjAwJyxcclxuICAgICAgICB9LFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29udGVudFdpbmRvd2luZm8ucG9zdE1lc3NhZ2UocmVzcG9uc2UsICcqJylcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19