@smartbit4all/ng-client 4.5.28 → 4.5.29

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.
@@ -136,9 +136,13 @@ export class VoiceRecordWidgetComponent {
136
136
  this.time = '00:00';
137
137
  });
138
138
  try {
139
+ // Force native mic permission first so it works with WKWebView
140
+ const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
141
+ stream.getTracks().forEach((track) => track.stop());
139
142
  await this.record.startRecording();
140
143
  }
141
144
  catch (error) {
145
+ console.error('Mic failed', error);
142
146
  this.updateViewState(() => {
143
147
  this.isRecording = false;
144
148
  this.isWaveformOpen = !!this.recordedBlob;
@@ -249,4 +253,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
249
253
  }], recordingSaved: [{
250
254
  type: Output
251
255
  }] } });
252
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtcmVjb3JkLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL2NvbXBvbmVudHMvdXBsb2FkLXdpZGdldC92b2ljZS1yZWNvcmQtd2lkZ2V0L3ZvaWNlLXJlY29yZC13aWRnZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvdmlldy1jb250ZXh0L3NtYXJ0LXVpLWFjdGlvbi9jb21wb25lbnRzL3VwbG9hZC13aWRnZXQvdm9pY2UtcmVjb3JkLXdpZGdldC92b2ljZS1yZWNvcmQtd2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsVUFBVSxFQUVWLFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFDUixZQUFZLEVBQ1osTUFBTSxHQUdQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLFlBQVksTUFBTSxzQ0FBc0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRixPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFzQixNQUFNLGlCQUFpQixDQUFDOzs7O0FBT3ZGLE1BQU0sT0FBTywwQkFBMEI7SUFnRHJDLFlBQ3lDLE9BQXFDLEVBQzNELE1BQWMsRUFDZCxpQkFBb0M7UUFEcEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUEvQzlDLGtCQUFhLEdBQXFCLE9BQU8sQ0FBQztRQUV6QyxtQkFBYyxH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TyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVPLGVBQWUsQ0FBQyxNQUFrQjtRQUN4QyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDbkIsTUFBTSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQWpSVSwwQkFBMEIsa0JBaUQzQixpQkFBaUI7bUdBakRoQiwwQkFBMEIscVVBRUosVUFBVSw2QkMzQjdDLDQvREFrRUE7OzRGRHpDYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UscUJBQXFCOzswQkFxRDVCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFBRyxRQUFROzhGQWhEZixXQUFXO3NCQUFqQyxTQUFTO3VCQUFDLFVBQVU7Z0JBQzBCLFVBQVU7c0JBQXhELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFFcEMsYUFBYTtzQkFBckIsS0FBSztnQkFFSSxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgRWxlbWVudFJlZixcclxuICBPbkRlc3Ryb3ksXHJcbiAgVmlld0NoaWxkLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgSW5wdXQsXHJcbiAgSW5qZWN0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBPdXRwdXQsXHJcbiAgT25Jbml0LFxyXG4gIE5nWm9uZSxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IFdhdmVTdXJmZXIgZnJvbSAnd2F2ZXN1cmZlci5qcyc7XHJcbmltcG9ydCBSZWNvcmRQbHVnaW4gZnJvbSAnd2F2ZXN1cmZlci5qcy9kaXN0L3BsdWdpbnMvcmVjb3JkLmpzJztcclxuaW1wb3J0IHsgQ09NUE9ORU5UX0xJQlJBUlksIENvbXBvbmVudExpYnJhcnkgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXR5L2NvbXBvbmVudExpYnJhcnknO1xyXG5pbXBvcnQgeyBJY29uUG9zaXRpb24sIFVpQWN0aW9uQnV0dG9uVHlwZSwgVWlBY3Rpb25EZXNjcmlwdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXBpJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndm9pY2UtcmVjb3JkLXdpZGdldCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ZvaWNlLXJlY29yZC13aWRnZXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3ZvaWNlLXJlY29yZC13aWRnZXQuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVm9pY2VSZWNvcmRXaWRnZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZCgnd2F2ZWZvcm0nKSB3YXZlZm9ybVJlZiE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnbWFpbkJ1dHRvbicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBtYWluQnV0dG9uITogRWxlbWVudFJlZjtcclxuXHJcbiAgQElucHV0KCkgb3BlbkRpcmVjdGlvbjogJ0xFRlQnIHwgJ1JJR0hUJyA9ICdSSUdIVCc7XHJcblxyXG4gIEBPdXRwdXQoKSByZWNvcmRpbmdTYXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QmxvYj4oKTtcclxuXHJcbiAgcHJpdmF0ZSB3YXZlc3VyZmVyPzogV2F2ZVN1cmZlcjtcclxuICBwcml2YXRlIHJlY29yZD86IFJlY29yZFBsdWdpbjtcclxuXHJcbiAgY29tcExpYjogQ29tcG9uZW50TGlicmFyeTtcclxuICBjb21wb25lbnRMaWJyYXJ5ID0gQ29tcG9uZW50TGlicmFyeTtcclxuXHJcbiAgaXNSZWNvcmRpbmcgPSBmYWxzZTtcclxuICByZWNvcmRlZEJsb2I6IEJsb2IgfCBudWxsID0gbnVsbDtcclxuICB0aW1lOiBzdHJpbmcgPSAnMDA6MDAnO1xyXG4gIGlzUGxheWluZyA9IGZhbHNlO1xyXG4gIGlzV2F2ZWZvcm1PcGVuID0gZmFsc2U7XHJcblxyXG4gIG1pY0J1dHRvbjogVWlBY3Rpb25EZXNjcmlwdG9yID0ge1xyXG4gICAgdGl0bGU6ICcnLFxyXG4gICAgdHlwZTogVWlBY3Rpb25CdXR0b25UeXBlLklDT04sXHJcbiAgICBpY29uOiAnbWljcm9waG9uZScsXHJcbiAgICBpY29uUG9zaXRpb246IEljb25Qb3NpdGlvbi5QUkUsXHJcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gIH07XHJcblxyXG4gIHN0b3BCdXR0b246IFVpQWN0aW9uRGVzY3JpcHRvciA9IHtcclxuICAgIHRpdGxlOiAnJyxcclxuICAgIHR5cGU6IFVpQWN0aW9uQnV0dG9uVHlwZS5JQ09OLFxyXG4gICAgaWNvbjogJ3N0b3AtY2lyY2xlJyxcclxuICAgIGljb25Qb3NpdGlvbjogSWNvblBvc2l0aW9uLlBSRSxcclxuICAgIGljb25Db2xvcjogJ3JlZCcsXHJcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gIH07XHJcblxyXG4gIHNhdmVCdXR0b246IFVpQWN0aW9uRGVzY3JpcHRvciA9IHtcclxuICAgIHRpdGxlOiAnJyxcclxuICAgIHR5cGU6IFVpQWN0aW9uQnV0dG9uVHlwZS5JQ09OLFxyXG4gICAgaWNvbjogJ3NhdmUnLFxyXG4gICAgaWNvblBvc2l0aW9uOiBJY29uUG9zaXRpb24uUFJFLFxyXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcclxuICB9O1xyXG5cclxuICBwbGF5QnV0dG9uITogVWlBY3Rpb25EZXNjcmlwdG9yO1xyXG4gIHN0b3BQbGF5YmFja0J1dHRvbiE6IFVpQWN0aW9uRGVzY3JpcHRvcjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KENPTVBPTkVOVF9MSUJSQVJZKSBAT3B0aW9uYWwoKSBjb21wTGliOiBDb21wb25lbnRMaWJyYXJ5IHwgdW5kZWZpbmVkLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNvbXBMaWIgPSBjb21wTGliID8/IENvbXBvbmVudExpYnJhcnkuUFJJTUVORztcclxuICB9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnBsYXlCdXR0b24gPSB7XHJcbiAgICAgIHRpdGxlOiAnJyxcclxuICAgICAgdHlwZTogVWlBY3Rpb25CdXR0b25UeXBlLklDT04sXHJcbiAgICAgIGljb246IHRoaXMuY29tcExpYiA9PT0gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HID8gJ3BsYXktY2lyY2xlJyA6ICdwbGF5X2NpcmNsZScsXHJcbiAgICAgIGljb25Qb3NpdGlvbjogSWNvblBvc2l0aW9uLlBSRSxcclxuICAgICAgY29sb3I6ICdwcmltYXJ5JyxcclxuICAgIH07XHJcbiAgICB0aGlzLnN0b3BQbGF5YmFja0J1dHRvbiA9IHtcclxuICAgICAgdGl0bGU6ICcnLFxyXG4gICAgICB0eXBlOiBVaUFjdGlvbkJ1dHRvblR5cGUuSUNPTixcclxuICAgICAgaWNvbjogdGhpcy5jb21wTGliID09PSBDb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcgPyAnc3RvcC1jaXJjbGUnIDogJ3N0b3BfY2lyY2xlJyxcclxuICAgICAgaWNvblBvc2l0aW9uOiBJY29uUG9zaXRpb24uUFJFLFxyXG4gICAgICBjb2xvcjogJ3JlZCcsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge31cclxuXHJcbiAgZ2V0IGlzTGVmdERpcmVjdGlvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLm9wZW5EaXJlY3Rpb24gPT09ICdMRUZUJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgaW5pdGlhbGl6ZVdhdmVTdXJmZXJJZk5lZWRlZCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLndhdmVzdXJmZXIgfHwgIXRoaXMud2F2ZWZvcm1SZWY/Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gcmVzb2x2ZSgpKSk7XHJcblxyXG4gICAgdGhpcy53YXZlZm9ybVJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnBhZGRpbmcgPSAnMC4xcmVtJztcclxuXHJcbiAgICB0aGlzLmluaXRXYXZlU3VyZmVyKCk7XHJcbiAgfVxyXG5cclxuICBpbml0V2F2ZVN1cmZlcigpIHtcclxuICAgIGxldCBib2R5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpO1xyXG4gICAgbGV0IHByaW1hcnlDb2xvciA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxyXG4gICAgICAuZ2V0UHJvcGVydHlWYWx1ZSgnLS1wcmltYXJ5LWNvbG9yJylcclxuICAgICAgLnRyaW0oKTtcclxuXHJcbiAgICBsZXQgZWwgPSB0aGlzLm1haW5CdXR0b24ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2I0LXByaW1hcnknKSBhcyBIVE1MRWxlbWVudDtcclxuICAgIGxldCByZW1JblB4ID0gcGFyc2VGbG9hdChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZm9udFNpemUpO1xyXG4gICAgbGV0IGhlaWdodCA9IChlbD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0ID8/IDApIC0gcmVtSW5QeCAqIDAuMTtcclxuXHJcbiAgICB0aGlzLndhdmVzdXJmZXIgPSBXYXZlU3VyZmVyLmNyZWF0ZSh7XHJcbiAgICAgIGNvbnRhaW5lcjogdGhpcy53YXZlZm9ybVJlZi5uYXRpdmVFbGVtZW50LFxyXG4gICAgICB3YXZlQ29sb3I6IHByaW1hcnlDb2xvcixcclxuICAgICAgcHJvZ3Jlc3NDb2xvcjogdGhpcy5hZGRBbHBoYVRvQ29sb3IocHJpbWFyeUNvbG9yISwgMC41KSxcclxuICAgICAgaGVpZ2h0OiBoZWlnaHQsXHJcbiAgICAgIGJhcldpZHRoOiA1LFxyXG4gICAgICBiYXJHYXA6IDEsXHJcbiAgICAgIGJhclJhZGl1czogNSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMud2F2ZXN1cmZlci5zZXRWb2x1bWUoMSk7XHJcblxyXG4gICAgLy9TbyB3ZSBzdXBwb3J0IFNhZmFyaVxyXG4gICAgY29uc3QgbWltZVR5cGUgPSBNZWRpYVJlY29yZGVyLmlzVHlwZVN1cHBvcnRlZCgnYXVkaW8vd2VibScpID8gJ2F1ZGlvL3dlYm0nIDogJ2F1ZGlvL21wNCc7XHJcbiAgICB0aGlzLnJlY29yZCA9IHRoaXMud2F2ZXN1cmZlci5yZWdpc3RlclBsdWdpbihcclxuICAgICAgUmVjb3JkUGx1Z2luLmNyZWF0ZSh7XHJcbiAgICAgICAgcmVuZGVyUmVjb3JkZWRBdWRpbzogdHJ1ZSxcclxuICAgICAgICBzY3JvbGxpbmdXYXZlZm9ybTogdHJ1ZSxcclxuICAgICAgICBjb250aW51b3VzV2F2ZWZvcm06IGZhbHNlLFxyXG4gICAgICAgIGNvbnRpbnVvdXNXYXZlZm9ybUR1cmF0aW9uOiAxNSxcclxuICAgICAgICBtaW1lVHlwZSxcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy53YXZlc3VyZmVyLm9uKCdkYmxjbGljaycsICgpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVWaWV3U3RhdGUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMud2F2ZXN1cmZlcj8ucGxheSgpO1xyXG4gICAgICAgIHRoaXMuaXNQbGF5aW5nID0gdHJ1ZTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMucmVjb3JkLm9uKCdyZWNvcmQtZW5kJywgKGJsb2I6IEJsb2IpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVWaWV3U3RhdGUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVjb3JkZWRCbG9iID0gYmxvYjtcclxuICAgICAgICB0aGlzLmlzUmVjb3JkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJlY29yZC5vbigncmVjb3JkLXByb2dyZXNzJywgKHRpbWUpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVWaWV3U3RhdGUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudXBkYXRlUHJvZ3Jlc3ModGltZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLndhdmVzdXJmZXIub24oJ2ZpbmlzaCcsICgpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVWaWV3U3RhdGUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNQbGF5aW5nID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzdGFydFJlY29yZGluZygpIHtcclxuICAgIGNvbnN0IGNvbmZpcm1lZCA9IGF3YWl0IHRoaXMuY2hlY2tIYXNSZWNvcmRlZCgpO1xyXG4gICAgaWYgKCFjb25maXJtZWQgfHwgdGhpcy5pc1JlY29yZGluZykgcmV0dXJuO1xyXG5cclxuICAgIC8vIEluaXRpYWxpemUgZmlyc3QgKHN0aWxsIHdpdGhpbiB0aGUgZ2VzdHVyZSB0aWNrIG9uIG1vc3QgYnJvd3NlcnMpXHJcbiAgICBhd2FpdCB0aGlzLmluaXRpYWxpemVXYXZlU3VyZmVySWZOZWVkZWQoKTtcclxuXHJcbiAgICBpZiAoIXRoaXMucmVjb3JkKSB0aHJvdyBuZXcgRXJyb3IoJ1ZvaWNlIHJlY29yZGVyIHBsdWdpbiBpcyBub3QgaW5pdGlhbGl6ZWQuJyk7XHJcblxyXG4gICAgdGhpcy51cGRhdGVWaWV3U3RhdGUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmlzV2F2ZWZvcm1PcGVuID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pc1JlY29yZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuaXNQbGF5aW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVjb3JkZWRCbG9iID0gbnVsbDtcclxuICAgICAgdGhpcy50aW1lID0gJzAwOjAwJztcclxuICAgIH0pO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGF3YWl0IHRoaXMucmVjb3JkLnN0YXJ0UmVjb3JkaW5nKCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpZXdTdGF0ZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1JlY29yZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNXYXZlZm9ybU9wZW4gPSAhIXRoaXMucmVjb3JkZWRCbG9iO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgYXN5bmMgY2hlY2tIYXNSZWNvcmRlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGlmICh0aGlzLnJlY29yZGVkQmxvYikge1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUHJvZ3Jlc3ModGltZTogbnVtYmVyKSB7XHJcbiAgICBsZXQgZm9ybWF0dGVkVGltZSA9IFtNYXRoLmZsb29yKCh0aW1lICUgMzYwMDAwMCkgLyA2MDAwMCksIE1hdGguZmxvb3IoKHRpbWUgJSA2MDAwMCkgLyAxMDAwKV1cclxuICAgICAgLm1hcCgodikgPT4gKHYgPCAxMCA/ICcwJyArIHYgOiB2KSlcclxuICAgICAgLmpvaW4oJzonKTtcclxuICAgIHRoaXMudGltZSA9IGZvcm1hdHRlZFRpbWU7XHJcbiAgfVxyXG5cclxuICBzdG9wUmVjb3JkaW5nKCkge1xyXG4gICAgaWYgKHRoaXMucmVjb3JkICYmIHRoaXMuaXNSZWNvcmRpbmcpIHtcclxuICAgICAgdGhpcy5yZWNvcmQuc3RvcFJlY29yZGluZygpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpZXdTdGF0ZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1JlY29yZGluZyA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNhdmVSZWNvcmRpbmcoKSB7XHJcbiAgICBpZiAodGhpcy5yZWNvcmRlZEJsb2IpIHtcclxuICAgICAgbGV0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGxldCBmb3JtYXR0ZWREYXRlID0gbm93LnRvTG9jYWxlU3RyaW5nKCdzdi1TRScpLnJlcGxhY2UoJyAnLCAnXycpLnJlcGxhY2UoLzovZywgJy0nKTtcclxuXHJcbiAgICAgIC8vU2FmYXJpIHN1cHBvcnRcclxuICAgICAgbGV0IG1pbWVUeXBlID0gdGhpcy5yZWNvcmRlZEJsb2IhLnR5cGUgfHwgJ2F1ZGlvL21wNCc7XHJcbiAgICAgIGxldCBleHQgPSBtaW1lVHlwZS5pbmNsdWRlcygnd2VibScpID8gJ3dlYm0nIDogJ21wNCc7XHJcbiAgICAgIGxldCBmaWxlTmFtZSA9IGByZWNvcmRpbmdfJHtmb3JtYXR0ZWREYXRlfS4ke2V4dH1gO1xyXG4gICAgICBsZXQgZmlsZSA9IG5ldyBGaWxlKFt0aGlzLnJlY29yZGVkQmxvYiFdLCBmaWxlTmFtZSwgeyB0eXBlOiBtaW1lVHlwZSB9KTtcclxuXHJcbiAgICAgIHRoaXMucmVjb3JkaW5nU2F2ZWQuZW1pdChmaWxlKTtcclxuXHJcbiAgICAgIC8vIERlc3Ryb3kgY29tcGxldGVseSBzbyBuZXh0IHJlY29yZGluZyBpbml0aWFsaXplcyBmcmVzaFxyXG4gICAgICB0aGlzLndhdmVzdXJmZXI/LmRlc3Ryb3koKTtcclxuICAgICAgdGhpcy53YXZlc3VyZmVyID0gdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLnJlY29yZCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICAgIHRoaXMudXBkYXRlVmlld1N0YXRlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnJlY29yZGVkQmxvYiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy50aW1lID0gJzAwOjAwJztcclxuICAgICAgICB0aGlzLmlzUGxheWluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNXYXZlZm9ybU9wZW4gPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXBsYXlSZWNvcmRpbmcoKSB7XHJcbiAgICBpZiAodGhpcy5yZWNvcmRlZEJsb2IpIHtcclxuICAgICAgdGhpcy51cGRhdGVWaWV3U3RhdGUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNQbGF5aW5nID0gIXRoaXMuaXNQbGF5aW5nO1xyXG4gICAgICAgIHRoaXMud2F2ZXN1cmZlcj8ucGxheVBhdXNlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBpZiAodGhpcy53YXZlc3VyZmVyKSB7XHJcbiAgICAgIHRoaXMud2F2ZXN1cmZlci5kZXN0cm95KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZEFscGhhVG9Db2xvcihoZXhDb2xvcjogc3RyaW5nLCBhbHBoYTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICgvXiMoW2EtZlxcZF0pKFthLWZcXGRdKShbYS1mXFxkXSkkL2kudGVzdChoZXhDb2xvcikpIHtcclxuICAgICAgaGV4Q29sb3IgPSBoZXhDb2xvci5yZXBsYWNlKFxyXG4gICAgICAgIC9eIyhbYS1mXFxkXSkoW2EtZlxcZF0pKFthLWZcXGRdKSQvaSxcclxuICAgICAgICAoXywgciwgZywgYikgPT4gYCMke3J9JHtyfSR7Z30ke2d9JHtifSR7Yn1gXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaGV4TWF0Y2ggPSAvXiM/KFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pJC9pLmV4ZWMoaGV4Q29sb3IpO1xyXG4gICAgaWYgKGhleE1hdGNoKSB7XHJcbiAgICAgIGNvbnN0IFssIHIsIGcsIGJdID0gaGV4TWF0Y2g7XHJcbiAgICAgIHJldHVybiBgcmdiYSgke3BhcnNlSW50KHIsIDE2KX0sICR7cGFyc2VJbnQoZywgMTYpfSwgJHtwYXJzZUludChiLCAxNil9LCAke2FscGhhfSlgO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGN0eCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICBpZiAoY3R4KSB7XHJcbiAgICAgIGN0eC5maWxsU3R5bGUgPSBoZXhDb2xvcjtcclxuICAgICAgY29uc3QgcGFyc2VkID0gY3R4LmZpbGxTdHlsZTtcclxuICAgICAgY29uc3QgcmdiTWF0Y2ggPSAvXnJnYlxcKChcXGQrKSxcXHMqKFxcZCspLFxccyooXFxkKylcXCkkLy5leGVjKHBhcnNlZCk7XHJcbiAgICAgIGlmIChyZ2JNYXRjaCkge1xyXG4gICAgICAgIGNvbnN0IFssIHIsIGcsIGJdID0gcmdiTWF0Y2g7XHJcbiAgICAgICAgcmV0dXJuIGByZ2JhKCR7cn0sICR7Z30sICR7Yn0sICR7YWxwaGF9KWA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaGV4Q29sb3I7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVZpZXdTdGF0ZSh1cGRhdGU6ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgIHVwZGF0ZSgpO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cInJlY29yZGVyQ29udGFpbmVyXCJcclxuICBbY2xhc3MuZGlyZWN0aW9uLWxlZnRdPVwiaXNMZWZ0RGlyZWN0aW9uXCJcclxuICBbY2xhc3MuZGlyZWN0aW9uLXJpZ2h0XT1cIiFpc0xlZnREaXJlY3Rpb25cIlxyXG4gIFtjbGFzcy5hY3RpdmVdPVwiaXNXYXZlZm9ybU9wZW4gfHwgaXNSZWNvcmRpbmcgfHwgISFyZWNvcmRlZEJsb2JcIlxyXG4gIFtjbGFzcy5pc1JlY29yZGluZ109XCJpc1JlY29yZGluZ1wiXHJcbiAgW2NsYXNzLmhhc1JlY29yZGluZ109XCJyZWNvcmRlZEJsb2JcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cInJlY29yZGVyTWFpblwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJlY29yZGVyVG9vbGJhclwiPlxyXG4gICAgICA8IS0tIFN0YXJ0IFJlY29yZGluZyAtLT5cclxuICAgICAgPHVpLWFjdGlvbi1idXR0b25cclxuICAgICAgICBjbGFzcz1cIm1haW5CdXR0b25cIlxyXG4gICAgICAgICNtYWluQnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCIhaXNSZWNvcmRpbmdcIlxyXG4gICAgICAgIFtkZXNjcmlwdG9yXT1cIm1pY0J1dHRvblwiXHJcbiAgICAgICAgKGFjdGlvbkNsaWNrKT1cInN0YXJ0UmVjb3JkaW5nKClcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvdWktYWN0aW9uLWJ1dHRvbj5cclxuXHJcbiAgICAgIDwhLS0gU3RvcCBSZWNvcmRpbmcgLS0+XHJcbiAgICAgIDx1aS1hY3Rpb24tYnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJtYWluQnV0dG9uXCJcclxuICAgICAgICAjbWFpbkJ1dHRvblxyXG4gICAgICAgICpuZ0lmPVwiaXNSZWNvcmRpbmdcIlxyXG4gICAgICAgIFtkZXNjcmlwdG9yXT1cInN0b3BCdXR0b25cIlxyXG4gICAgICAgIChhY3Rpb25DbGljayk9XCJzdG9wUmVjb3JkaW5nKClcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvdWktYWN0aW9uLWJ1dHRvbj5cclxuXHJcbiAgICAgIDwhLS0gU2F2ZSBSZWNvcmRpbmcgLS0+XHJcbiAgICAgIDx1aS1hY3Rpb24tYnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJtYWluQnV0dG9uXCJcclxuICAgICAgICAqbmdJZj1cInJlY29yZGVkQmxvYlwiXHJcbiAgICAgICAgW2Rlc2NyaXB0b3JdPVwic2F2ZUJ1dHRvblwiXHJcbiAgICAgICAgKGFjdGlvbkNsaWNrKT1cInNhdmVSZWNvcmRpbmcoKVwiXHJcbiAgICAgID5cclxuICAgICAgPC91aS1hY3Rpb24tYnV0dG9uPlxyXG5cclxuICAgICAgPCEtLSBTdGFydCBQbGF5ICAtLT5cclxuICAgICAgPHVpLWFjdGlvbi1idXR0b25cclxuICAgICAgICBjbGFzcz1cIm1haW5CdXR0b25cIlxyXG4gICAgICAgICpuZ0lmPVwicmVjb3JkZWRCbG9iICYmICFpc1BsYXlpbmdcIlxyXG4gICAgICAgIFtkZXNjcmlwdG9yXT1cInBsYXlCdXR0b25cIlxyXG4gICAgICAgIChhY3Rpb25DbGljayk9XCJyZXBsYXlSZWNvcmRpbmcoKVwiXHJcbiAgICAgID48L3VpLWFjdGlvbi1idXR0b24+XHJcblxyXG4gICAgICA8IS0tIFN0b3AgUGxheSAgLS0+XHJcbiAgICAgIDx1aS1hY3Rpb24tYnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJtYWluQnV0dG9uXCJcclxuICAgICAgICAqbmdJZj1cInJlY29yZGVkQmxvYiAmJiBpc1BsYXlpbmdcIlxyXG4gICAgICAgIFtkZXNjcmlwdG9yXT1cInN0b3BQbGF5YmFja0J1dHRvblwiXHJcbiAgICAgICAgKGFjdGlvbkNsaWNrKT1cInJlcGxheVJlY29yZGluZygpXCJcclxuICAgICAgPjwvdWktYWN0aW9uLWJ1dHRvbj5cclxuXHJcbiAgICAgIEBpZiAoaXNSZWNvcmRpbmcpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIj57eyB0aW1lIH19PC9kaXY+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJ3YXZlZm9ybUJhbmRcIiBbY2xhc3Mub3Blbl09XCJpc1dhdmVmb3JtT3BlbiB8fCBpc1JlY29yZGluZyB8fCAhIXJlY29yZGVkQmxvYlwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid2F2ZWZvcm1HcmlkXCI+PC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3YXZlZm9ybVwiICN3YXZlZm9ybT48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtcmVjb3JkLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL2NvbXBvbmVudHMvdXBsb2FkLXdpZGdldC92b2ljZS1yZWNvcmQtd2lkZ2V0L3ZvaWNlLXJlY29yZC13aWRnZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvdmlldy1jb250ZXh0L3NtYXJ0LXVpLWFjdGlvbi9jb21wb25lbnRzL3VwbG9hZC13aWRnZXQvdm9pY2UtcmVjb3JkLXdpZGdldC92b2ljZS1yZWNvcmQtd2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsVUFBVSxFQUVWLFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFDUixZQUFZLEVBQ1osTUFBTSxHQUdQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLFlBQVksTUFBTSxzQ0FBc0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRixPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFzQixNQUFNLGlCQUFpQixDQUFDOzs7O0FBT3ZGLE1BQU0sT0FBTywwQkFBMEI7SUFnRHJDLFlBQ3lDLE9BQXFDLEVBQzNELE1BQWMsRUFDZCxpQkFBb0M7UUFEcEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUEvQzlDLGtCQUFhLEdBQXFCLE9BQU8sQ0FBQztRQUV6QyxtQkFBYyxH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U0FBUyxDQUFDO1lBQzdCLE1BQU0sUUFBUSxHQUFHLGtDQUFrQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRSxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO2dCQUM3QixPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxHQUFHLENBQUM7WUFDNUMsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRU8sZUFBZSxDQUFDLE1BQWtCO1FBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNuQixNQUFNLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBeFJVLDBCQUEwQixrQkFpRDNCLGlCQUFpQjttR0FqRGhCLDBCQUEwQixxVUFFSixVQUFVLDZCQzNCN0MsNC9EQWtFQTs7NEZEekNhLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSxxQkFBcUI7OzBCQXFENUIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUFHLFFBQVE7OEZBaERmLFdBQVc7c0JBQWpDLFNBQVM7dUJBQUMsVUFBVTtnQkFDMEIsVUFBVTtzQkFBeEQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUVwQyxhQUFhO3NCQUFyQixLQUFLO2dCQUVJLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBFbGVtZW50UmVmLFxyXG4gIE9uRGVzdHJveSxcclxuICBWaWV3Q2hpbGQsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBJbnB1dCxcclxuICBJbmplY3QsXHJcbiAgT3B0aW9uYWwsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE91dHB1dCxcclxuICBPbkluaXQsXHJcbiAgTmdab25lLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgV2F2ZVN1cmZlciBmcm9tICd3YXZlc3VyZmVyLmpzJztcclxuaW1wb3J0IFJlY29yZFBsdWdpbiBmcm9tICd3YXZlc3VyZmVyLmpzL2Rpc3QvcGx1Z2lucy9yZWNvcmQuanMnO1xyXG5pbXBvcnQgeyBDT01QT05FTlRfTElCUkFSWSwgQ29tcG9uZW50TGlicmFyeSB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxpdHkvY29tcG9uZW50TGlicmFyeSc7XHJcbmltcG9ydCB7IEljb25Qb3NpdGlvbiwgVWlBY3Rpb25CdXR0b25UeXBlLCBVaUFjdGlvbkRlc2NyaXB0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9hcGknO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd2b2ljZS1yZWNvcmQtd2lkZ2V0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdm9pY2UtcmVjb3JkLXdpZGdldC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdm9pY2UtcmVjb3JkLXdpZGdldC5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWb2ljZVJlY29yZFdpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCd3YXZlZm9ybScpIHdhdmVmb3JtUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdtYWluQnV0dG9uJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIG1haW5CdXR0b24hOiBFbGVtZW50UmVmO1xyXG5cclxuICBASW5wdXQoKSBvcGVuRGlyZWN0aW9uOiAnTEVGVCcgfCAnUklHSFQnID0gJ1JJR0hUJztcclxuXHJcbiAgQE91dHB1dCgpIHJlY29yZGluZ1NhdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxCbG9iPigpO1xyXG5cclxuICBwcml2YXRlIHdhdmVzdXJmZXI/OiBXYXZlU3VyZmVyO1xyXG4gIHByaXZhdGUgcmVjb3JkPzogUmVjb3JkUGx1Z2luO1xyXG5cclxuICBjb21wTGliOiBDb21wb25lbnRMaWJyYXJ5O1xyXG4gIGNvbXBvbmVudExpYnJhcnkgPSBDb21wb25lbnRMaWJyYXJ5O1xyXG5cclxuICBpc1JlY29yZGluZyA9IGZhbHNlO1xyXG4gIHJlY29yZGVkQmxvYjogQmxvYiB8IG51bGwgPSBudWxsO1xyXG4gIHRpbWU6IHN0cmluZyA9ICcwMDowMCc7XHJcbiAgaXNQbGF5aW5nID0gZmFsc2U7XHJcbiAgaXNXYXZlZm9ybU9wZW4gPSBmYWxzZTtcclxuXHJcbiAgbWljQnV0dG9uOiBVaUFjdGlvbkRlc2NyaXB0b3IgPSB7XHJcbiAgICB0aXRsZTogJycsXHJcbiAgICB0eXBlOiBVaUFjdGlvbkJ1dHRvblR5cGUuSUNPTixcclxuICAgIGljb246ICdtaWNyb3Bob25lJyxcclxuICAgIGljb25Qb3NpdGlvbjogSWNvblBvc2l0aW9uLlBSRSxcclxuICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgfTtcclxuXHJcbiAgc3RvcEJ1dHRvbjogVWlBY3Rpb25EZXNjcmlwdG9yID0ge1xyXG4gICAgdGl0bGU6ICcnLFxyXG4gICAgdHlwZTogVWlBY3Rpb25CdXR0b25UeXBlLklDT04sXHJcbiAgICBpY29uOiAnc3RvcC1jaXJjbGUnLFxyXG4gICAgaWNvblBvc2l0aW9uOiBJY29uUG9zaXRpb24uUFJFLFxyXG4gICAgaWNvbkNvbG9yOiAncmVkJyxcclxuICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgfTtcclxuXHJcbiAgc2F2ZUJ1dHRvbjogVWlBY3Rpb25EZXNjcmlwdG9yID0ge1xyXG4gICAgdGl0bGU6ICcnLFxyXG4gICAgdHlwZTogVWlBY3Rpb25CdXR0b25UeXBlLklDT04sXHJcbiAgICBpY29uOiAnc2F2ZScsXHJcbiAgICBpY29uUG9zaXRpb246IEljb25Qb3NpdGlvbi5QUkUsXHJcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gIH07XHJcblxyXG4gIHBsYXlCdXR0b24hOiBVaUFjdGlvbkRlc2NyaXB0b3I7XHJcbiAgc3RvcFBsYXliYWNrQnV0dG9uITogVWlBY3Rpb25EZXNjcmlwdG9yO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoQ09NUE9ORU5UX0xJQlJBUlkpIEBPcHRpb25hbCgpIGNvbXBMaWI6IENvbXBvbmVudExpYnJhcnkgfCB1bmRlZmluZWQsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHtcclxuICAgIHRoaXMuY29tcExpYiA9IGNvbXBMaWIgPz8gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMucGxheUJ1dHRvbiA9IHtcclxuICAgICAgdGl0bGU6ICcnLFxyXG4gICAgICB0eXBlOiBVaUFjdGlvbkJ1dHRvblR5cGUuSUNPTixcclxuICAgICAgaWNvbjogdGhpcy5jb21wTGliID09PSBDb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcgPyAncGxheS1jaXJjbGUnIDogJ3BsYXlfY2lyY2xlJyxcclxuICAgICAgaWNvblBvc2l0aW9uOiBJY29uUG9zaXRpb24uUFJFLFxyXG4gICAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gICAgfTtcclxuICAgIHRoaXMuc3RvcFBsYXliYWNrQnV0dG9uID0ge1xyXG4gICAgICB0aXRsZTogJycsXHJcbiAgICAgIHR5cGU6IFVpQWN0aW9uQnV0dG9uVHlwZS5JQ09OLFxyXG4gICAgICBpY29uOiB0aGlzLmNvbXBMaWIgPT09IENvbXBvbmVudExpYnJhcnkuUFJJTUVORyA/ICdzdG9wLWNpcmNsZScgOiAnc3RvcF9jaXJjbGUnLFxyXG4gICAgICBpY29uUG9zaXRpb246IEljb25Qb3NpdGlvbi5QUkUsXHJcbiAgICAgIGNvbG9yOiAncmVkJyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7fVxyXG5cclxuICBnZXQgaXNMZWZ0RGlyZWN0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMub3BlbkRpcmVjdGlvbiA9PT0gJ0xFRlQnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBpbml0aWFsaXplV2F2ZVN1cmZlcklmTmVlZGVkKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHRoaXMud2F2ZXN1cmZlciB8fCAhdGhpcy53YXZlZm9ybVJlZj8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiByZXNvbHZlKCkpKTtcclxuXHJcbiAgICB0aGlzLndhdmVmb3JtUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUucGFkZGluZyA9ICcwLjFyZW0nO1xyXG5cclxuICAgIHRoaXMuaW5pdFdhdmVTdXJmZXIoKTtcclxuICB9XHJcblxyXG4gIGluaXRXYXZlU3VyZmVyKCkge1xyXG4gICAgbGV0IGJvZHkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5Jyk7XHJcbiAgICBsZXQgcHJpbWFyeUNvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXHJcbiAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKCctLXByaW1hcnktY29sb3InKVxyXG4gICAgICAudHJpbSgpO1xyXG5cclxuICAgIGxldCBlbCA9IHRoaXMubWFpbkJ1dHRvbi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zYjQtcHJpbWFyeScpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgbGV0IHJlbUluUHggPSBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5mb250U2l6ZSk7XHJcbiAgICBsZXQgaGVpZ2h0ID0gKGVsPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgPz8gMCkgLSByZW1JblB4ICogMC4xO1xyXG5cclxuICAgIHRoaXMud2F2ZXN1cmZlciA9IFdhdmVTdXJmZXIuY3JlYXRlKHtcclxuICAgICAgY29udGFpbmVyOiB0aGlzLndhdmVmb3JtUmVmLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgIHdhdmVDb2xvcjogcHJpbWFyeUNvbG9yLFxyXG4gICAgICBwcm9ncmVzc0NvbG9yOiB0aGlzLmFkZEFscGhhVG9Db2xvcihwcmltYXJ5Q29sb3IhLCAwLjUpLFxyXG4gICAgICBoZWlnaHQ6IGhlaWdodCxcclxuICAgICAgYmFyV2lkdGg6IDUsXHJcbiAgICAgIGJhckdhcDogMSxcclxuICAgICAgYmFyUmFkaXVzOiA1LFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy53YXZlc3VyZmVyLnNldFZvbHVtZSgxKTtcclxuXHJcbiAgICAvL1NvIHdlIHN1cHBvcnQgU2FmYXJpXHJcbiAgICBjb25zdCBtaW1lVHlwZSA9IE1lZGlhUmVjb3JkZXIuaXNUeXBlU3VwcG9ydGVkKCdhdWRpby93ZWJtJykgPyAnYXVkaW8vd2VibScgOiAnYXVkaW8vbXA0JztcclxuICAgIHRoaXMucmVjb3JkID0gdGhpcy53YXZlc3VyZmVyLnJlZ2lzdGVyUGx1Z2luKFxyXG4gICAgICBSZWNvcmRQbHVnaW4uY3JlYXRlKHtcclxuICAgICAgICByZW5kZXJSZWNvcmRlZEF1ZGlvOiB0cnVlLFxyXG4gICAgICAgIHNjcm9sbGluZ1dhdmVmb3JtOiB0cnVlLFxyXG4gICAgICAgIGNvbnRpbnVvdXNXYXZlZm9ybTogZmFsc2UsXHJcbiAgICAgICAgY29udGludW91c1dhdmVmb3JtRHVyYXRpb246IDE1LFxyXG4gICAgICAgIG1pbWVUeXBlLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLndhdmVzdXJmZXIub24oJ2RibGNsaWNrJywgKCkgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpZXdTdGF0ZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy53YXZlc3VyZmVyPy5wbGF5KCk7XHJcbiAgICAgICAgdGhpcy5pc1BsYXlpbmcgPSB0cnVlO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWNvcmQub24oJ3JlY29yZC1lbmQnLCAoYmxvYjogQmxvYikgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpZXdTdGF0ZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZWNvcmRlZEJsb2IgPSBibG9iO1xyXG4gICAgICAgIHRoaXMuaXNSZWNvcmRpbmcgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMucmVjb3JkLm9uKCdyZWNvcmQtcHJvZ3Jlc3MnLCAodGltZSkgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpZXdTdGF0ZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVQcm9ncmVzcyh0aW1lKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMud2F2ZXN1cmZlci5vbignZmluaXNoJywgKCkgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpZXdTdGF0ZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1BsYXlpbmcgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHN0YXJ0UmVjb3JkaW5nKCkge1xyXG4gICAgY29uc3QgY29uZmlybWVkID0gYXdhaXQgdGhpcy5jaGVja0hhc1JlY29yZGVkKCk7XHJcbiAgICBpZiAoIWNvbmZpcm1lZCB8fCB0aGlzLmlzUmVjb3JkaW5nKSByZXR1cm47XHJcblxyXG4gICAgLy8gSW5pdGlhbGl6ZSBmaXJzdCAoc3RpbGwgd2l0aGluIHRoZSBnZXN0dXJlIHRpY2sgb24gbW9zdCBicm93c2VycylcclxuICAgIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZVdhdmVTdXJmZXJJZk5lZWRlZCgpO1xyXG5cclxuICAgIGlmICghdGhpcy5yZWNvcmQpIHRocm93IG5ldyBFcnJvcignVm9pY2UgcmVjb3JkZXIgcGx1Z2luIGlzIG5vdCBpbml0aWFsaXplZC4nKTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZVZpZXdTdGF0ZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNXYXZlZm9ybU9wZW4gPSB0cnVlO1xyXG4gICAgICB0aGlzLmlzUmVjb3JkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pc1BsYXlpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5yZWNvcmRlZEJsb2IgPSBudWxsO1xyXG4gICAgICB0aGlzLnRpbWUgPSAnMDA6MDAnO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gRm9yY2UgbmF0aXZlIG1pYyBwZXJtaXNzaW9uIGZpcnN0IHNvIGl0IHdvcmtzIHdpdGggV0tXZWJWaWV3XHJcbiAgICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgYXVkaW86IHRydWUgfSk7XHJcbiAgICAgIHN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKCh0cmFjaykgPT4gdHJhY2suc3RvcCgpKTtcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMucmVjb3JkLnN0YXJ0UmVjb3JkaW5nKCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdNaWMgZmFpbGVkJywgZXJyb3IpO1xyXG5cclxuICAgICAgdGhpcy51cGRhdGVWaWV3U3RhdGUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNSZWNvcmRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzV2F2ZWZvcm1PcGVuID0gISF0aGlzLnJlY29yZGVkQmxvYjtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aHJvdyBlcnJvcjtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBhc3luYyBjaGVja0hhc1JlY29yZGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgaWYgKHRoaXMucmVjb3JkZWRCbG9iKSB7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVQcm9ncmVzcyh0aW1lOiBudW1iZXIpIHtcclxuICAgIGxldCBmb3JtYXR0ZWRUaW1lID0gW01hdGguZmxvb3IoKHRpbWUgJSAzNjAwMDAwKSAvIDYwMDAwKSwgTWF0aC5mbG9vcigodGltZSAlIDYwMDAwKSAvIDEwMDApXVxyXG4gICAgICAubWFwKCh2KSA9PiAodiA8IDEwID8gJzAnICsgdiA6IHYpKVxyXG4gICAgICAuam9pbignOicpO1xyXG4gICAgdGhpcy50aW1lID0gZm9ybWF0dGVkVGltZTtcclxuICB9XHJcblxyXG4gIHN0b3BSZWNvcmRpbmcoKSB7XHJcbiAgICBpZiAodGhpcy5yZWNvcmQgJiYgdGhpcy5pc1JlY29yZGluZykge1xyXG4gICAgICB0aGlzLnJlY29yZC5zdG9wUmVjb3JkaW5nKCk7XHJcbiAgICAgIHRoaXMudXBkYXRlVmlld1N0YXRlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmlzUmVjb3JkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2F2ZVJlY29yZGluZygpIHtcclxuICAgIGlmICh0aGlzLnJlY29yZGVkQmxvYikge1xyXG4gICAgICBsZXQgbm93ID0gbmV3IERhdGUoKTtcclxuICAgICAgbGV0IGZvcm1hdHRlZERhdGUgPSBub3cudG9Mb2NhbGVTdHJpbmcoJ3N2LVNFJykucmVwbGFjZSgnICcsICdfJykucmVwbGFjZSgvOi9nLCAnLScpO1xyXG5cclxuICAgICAgLy9TYWZhcmkgc3VwcG9ydFxyXG4gICAgICBsZXQgbWltZVR5cGUgPSB0aGlzLnJlY29yZGVkQmxvYiEudHlwZSB8fCAnYXVkaW8vbXA0JztcclxuICAgICAgbGV0IGV4dCA9IG1pbWVUeXBlLmluY2x1ZGVzKCd3ZWJtJykgPyAnd2VibScgOiAnbXA0JztcclxuICAgICAgbGV0IGZpbGVOYW1lID0gYHJlY29yZGluZ18ke2Zvcm1hdHRlZERhdGV9LiR7ZXh0fWA7XHJcbiAgICAgIGxldCBmaWxlID0gbmV3IEZpbGUoW3RoaXMucmVjb3JkZWRCbG9iIV0sIGZpbGVOYW1lLCB7IHR5cGU6IG1pbWVUeXBlIH0pO1xyXG5cclxuICAgICAgdGhpcy5yZWNvcmRpbmdTYXZlZC5lbWl0KGZpbGUpO1xyXG5cclxuICAgICAgLy8gRGVzdHJveSBjb21wbGV0ZWx5IHNvIG5leHQgcmVjb3JkaW5nIGluaXRpYWxpemVzIGZyZXNoXHJcbiAgICAgIHRoaXMud2F2ZXN1cmZlcj8uZGVzdHJveSgpO1xyXG4gICAgICB0aGlzLndhdmVzdXJmZXIgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMucmVjb3JkID0gdW5kZWZpbmVkO1xyXG5cclxuICAgICAgdGhpcy51cGRhdGVWaWV3U3RhdGUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVjb3JkZWRCbG9iID0gbnVsbDtcclxuICAgICAgICB0aGlzLnRpbWUgPSAnMDA6MDAnO1xyXG4gICAgICAgIHRoaXMuaXNQbGF5aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1dhdmVmb3JtT3BlbiA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlcGxheVJlY29yZGluZygpIHtcclxuICAgIGlmICh0aGlzLnJlY29yZGVkQmxvYikge1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpZXdTdGF0ZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1BsYXlpbmcgPSAhdGhpcy5pc1BsYXlpbmc7XHJcbiAgICAgICAgdGhpcy53YXZlc3VyZmVyPy5wbGF5UGF1c2UoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLndhdmVzdXJmZXIpIHtcclxuICAgICAgdGhpcy53YXZlc3VyZmVyLmRlc3Ryb3koKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkQWxwaGFUb0NvbG9yKGhleENvbG9yOiBzdHJpbmcsIGFscGhhOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKC9eIyhbYS1mXFxkXSkoW2EtZlxcZF0pKFthLWZcXGRdKSQvaS50ZXN0KGhleENvbG9yKSkge1xyXG4gICAgICBoZXhDb2xvciA9IGhleENvbG9yLnJlcGxhY2UoXHJcbiAgICAgICAgL14jKFthLWZcXGRdKShbYS1mXFxkXSkoW2EtZlxcZF0pJC9pLFxyXG4gICAgICAgIChfLCByLCBnLCBiKSA9PiBgIyR7cn0ke3J9JHtnfSR7Z30ke2J9JHtifWBcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBoZXhNYXRjaCA9IC9eIz8oW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkkL2kuZXhlYyhoZXhDb2xvcik7XHJcbiAgICBpZiAoaGV4TWF0Y2gpIHtcclxuICAgICAgY29uc3QgWywgciwgZywgYl0gPSBoZXhNYXRjaDtcclxuICAgICAgcmV0dXJuIGByZ2JhKCR7cGFyc2VJbnQociwgMTYpfSwgJHtwYXJzZUludChnLCAxNil9LCAke3BhcnNlSW50KGIsIDE2KX0sICR7YWxwaGF9KWA7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY3R4ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJykuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgIGlmIChjdHgpIHtcclxuICAgICAgY3R4LmZpbGxTdHlsZSA9IGhleENvbG9yO1xyXG4gICAgICBjb25zdCBwYXJzZWQgPSBjdHguZmlsbFN0eWxlO1xyXG4gICAgICBjb25zdCByZ2JNYXRjaCA9IC9ecmdiXFwoKFxcZCspLFxccyooXFxkKyksXFxzKihcXGQrKVxcKSQvLmV4ZWMocGFyc2VkKTtcclxuICAgICAgaWYgKHJnYk1hdGNoKSB7XHJcbiAgICAgICAgY29uc3QgWywgciwgZywgYl0gPSByZ2JNYXRjaDtcclxuICAgICAgICByZXR1cm4gYHJnYmEoJHtyfSwgJHtnfSwgJHtifSwgJHthbHBoYX0pYDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBoZXhDb2xvcjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlVmlld1N0YXRlKHVwZGF0ZTogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgdXBkYXRlKCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwicmVjb3JkZXJDb250YWluZXJcIlxyXG4gIFtjbGFzcy5kaXJlY3Rpb24tbGVmdF09XCJpc0xlZnREaXJlY3Rpb25cIlxyXG4gIFtjbGFzcy5kaXJlY3Rpb24tcmlnaHRdPVwiIWlzTGVmdERpcmVjdGlvblwiXHJcbiAgW2NsYXNzLmFjdGl2ZV09XCJpc1dhdmVmb3JtT3BlbiB8fCBpc1JlY29yZGluZyB8fCAhIXJlY29yZGVkQmxvYlwiXHJcbiAgW2NsYXNzLmlzUmVjb3JkaW5nXT1cImlzUmVjb3JkaW5nXCJcclxuICBbY2xhc3MuaGFzUmVjb3JkaW5nXT1cInJlY29yZGVkQmxvYlwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwicmVjb3JkZXJNYWluXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmVjb3JkZXJUb29sYmFyXCI+XHJcbiAgICAgIDwhLS0gU3RhcnQgUmVjb3JkaW5nIC0tPlxyXG4gICAgICA8dWktYWN0aW9uLWJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwibWFpbkJ1dHRvblwiXHJcbiAgICAgICAgI21haW5CdXR0b25cclxuICAgICAgICAqbmdJZj1cIiFpc1JlY29yZGluZ1wiXHJcbiAgICAgICAgW2Rlc2NyaXB0b3JdPVwibWljQnV0dG9uXCJcclxuICAgICAgICAoYWN0aW9uQ2xpY2spPVwic3RhcnRSZWNvcmRpbmcoKVwiXHJcbiAgICAgID5cclxuICAgICAgPC91aS1hY3Rpb24tYnV0dG9uPlxyXG5cclxuICAgICAgPCEtLSBTdG9wIFJlY29yZGluZyAtLT5cclxuICAgICAgPHVpLWFjdGlvbi1idXR0b25cclxuICAgICAgICBjbGFzcz1cIm1haW5CdXR0b25cIlxyXG4gICAgICAgICNtYWluQnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJpc1JlY29yZGluZ1wiXHJcbiAgICAgICAgW2Rlc2NyaXB0b3JdPVwic3RvcEJ1dHRvblwiXHJcbiAgICAgICAgKGFjdGlvbkNsaWNrKT1cInN0b3BSZWNvcmRpbmcoKVwiXHJcbiAgICAgID5cclxuICAgICAgPC91aS1hY3Rpb24tYnV0dG9uPlxyXG5cclxuICAgICAgPCEtLSBTYXZlIFJlY29yZGluZyAtLT5cclxuICAgICAgPHVpLWFjdGlvbi1idXR0b25cclxuICAgICAgICBjbGFzcz1cIm1haW5CdXR0b25cIlxyXG4gICAgICAgICpuZ0lmPVwicmVjb3JkZWRCbG9iXCJcclxuICAgICAgICBbZGVzY3JpcHRvcl09XCJzYXZlQnV0dG9uXCJcclxuICAgICAgICAoYWN0aW9uQ2xpY2spPVwic2F2ZVJlY29yZGluZygpXCJcclxuICAgICAgPlxyXG4gICAgICA8L3VpLWFjdGlvbi1idXR0b24+XHJcblxyXG4gICAgICA8IS0tIFN0YXJ0IFBsYXkgIC0tPlxyXG4gICAgICA8dWktYWN0aW9uLWJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwibWFpbkJ1dHRvblwiXHJcbiAgICAgICAgKm5nSWY9XCJyZWNvcmRlZEJsb2IgJiYgIWlzUGxheWluZ1wiXHJcbiAgICAgICAgW2Rlc2NyaXB0b3JdPVwicGxheUJ1dHRvblwiXHJcbiAgICAgICAgKGFjdGlvbkNsaWNrKT1cInJlcGxheVJlY29yZGluZygpXCJcclxuICAgICAgPjwvdWktYWN0aW9uLWJ1dHRvbj5cclxuXHJcbiAgICAgIDwhLS0gU3RvcCBQbGF5ICAtLT5cclxuICAgICAgPHVpLWFjdGlvbi1idXR0b25cclxuICAgICAgICBjbGFzcz1cIm1haW5CdXR0b25cIlxyXG4gICAgICAgICpuZ0lmPVwicmVjb3JkZWRCbG9iICYmIGlzUGxheWluZ1wiXHJcbiAgICAgICAgW2Rlc2NyaXB0b3JdPVwic3RvcFBsYXliYWNrQnV0dG9uXCJcclxuICAgICAgICAoYWN0aW9uQ2xpY2spPVwicmVwbGF5UmVjb3JkaW5nKClcIlxyXG4gICAgICA+PC91aS1hY3Rpb24tYnV0dG9uPlxyXG5cclxuICAgICAgQGlmIChpc1JlY29yZGluZykge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiPnt7IHRpbWUgfX08L2Rpdj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIndhdmVmb3JtQmFuZFwiIFtjbGFzcy5vcGVuXT1cImlzV2F2ZWZvcm1PcGVuIHx8IGlzUmVjb3JkaW5nIHx8ICEhcmVjb3JkZWRCbG9iXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3YXZlZm9ybUdyaWRcIj48L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIndhdmVmb3JtXCIgI3dhdmVmb3JtPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -6812,9 +6812,13 @@ class VoiceRecordWidgetComponent {
6812
6812
  this.time = '00:00';
6813
6813
  });
6814
6814
  try {
6815
+ // Force native mic permission first so it works with WKWebView
6816
+ const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
6817
+ stream.getTracks().forEach((track) => track.stop());
6815
6818
  await this.record.startRecording();
6816
6819
  }
6817
6820
  catch (error) {
6821
+ console.error('Mic failed', error);
6818
6822
  this.updateViewState(() => {
6819
6823
  this.isRecording = false;
6820
6824
  this.isWaveformOpen = !!this.recordedBlob;