ng-pli-commons 1.0.120 → 1.0.121

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.
@@ -36,6 +36,8 @@ export class PdfVisualizerComponent {
36
36
  this.id_canvas = 'pdf-canvas';
37
37
  /** It allows to edit html */
38
38
  this.edit = false;
39
+ this.sendEmailDisable = false;
40
+ this.downloadDisable = false;
39
41
  }
40
42
  // it resolves when the html is changed
41
43
  ngOnChanges(changes) {
@@ -229,18 +231,29 @@ export class PdfVisualizerComponent {
229
231
  ngOnInit() { }
230
232
  /** It sends the document by email */
231
233
  sendEmail() {
234
+ if (this.sendEmailDisable) {
235
+ return;
236
+ }
232
237
  if (this.email && UtilString.validateEmail(this.email)) {
233
238
  this.onSendEmail.emit({
234
239
  to: this.email,
235
240
  base64: this.base64
236
241
  });
237
242
  this.email = '';
243
+ // block the send email bottom for 3 seconds
244
+ this.sendEmailDisable = true;
245
+ setTimeout(() => {
246
+ this.sendEmailDisable = false;
247
+ }, 3000);
238
248
  return;
239
249
  }
240
250
  this.taostrService.warning('Correo electrónico es incorrecto');
241
251
  }
242
252
  /** It fires the event download */
243
253
  download() {
254
+ if (this.downloadDisable) {
255
+ return;
256
+ }
244
257
  const contentType = 'application/pdf';
245
258
  const b64Data = this.base64;
246
259
  const blob = this.b64toBlob(b64Data, contentType);
@@ -258,6 +271,11 @@ export class PdfVisualizerComponent {
258
271
  base64: this.base64
259
272
  });
260
273
  }, 200);
274
+ // block the download bottom for 3 seconds
275
+ this.downloadDisable = true;
276
+ setTimeout(() => {
277
+ this.downloadDisable = false;
278
+ }, 3000);
261
279
  }
262
280
  /** It fires when the html is changed */
263
281
  change() {
@@ -384,4 +402,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
384
402
  }], urlFile: [{
385
403
  type: Input
386
404
  }] } });
387
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXZpc3VhbGl6ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcGxpLWNvbW1vbnMvc3JjL2xpYi9jb21wb25lbnRzL3BkZi12aXN1YWxpemVyL3BkZi12aXN1YWxpemVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy9saWIvY29tcG9uZW50cy9wZGYtdmlzdWFsaXplci9wZGYtdmlzdWFsaXplci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUlULEtBQUssRUFFTCxZQUFZLEVBRVosTUFBTSxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxNQUFNLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxPQUFPLE1BQU0sc0JBQXNCLENBQUM7QUFFM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7QUFLNUUsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDO0FBQ3JCLDRCQUE0QjtBQU81QixNQUFNLE9BQU8sc0JBQXNCO2FBQzNCLG1CQUFjLEdBQUcsR0FBRyxBQUFOLENBQU87SUFvRTVCLFlBQ1csYUFBNEIsRUFDL0IsWUFBMEIsRUFDekIsYUFBNEIsRUFDNUIsV0FBd0I7UUFIdEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDL0IsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDekIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFuRGpDLGlCQUFpQjtRQUNSLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFDbkMsb0JBQW9CO1FBQ1gsaUJBQVksR0FBWSxJQUFJLENBQUM7UUFDdEMsbUJBQW1CO1FBQ1YsaUJBQVksR0FB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cEIsTUFBTTtnQkFFRyxRQUFRO3NCQUFqQixNQUFNO2dCQUVFLElBQUk7c0JBQVosS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG5cdENvbXBvbmVudCxcclxuXHRPbkluaXQsXHJcblx0T25DaGFuZ2VzLFxyXG5cdFNpbXBsZUNoYW5nZXMsXHJcblx0SW5wdXQsXHJcblx0U2ltcGxlQ2hhbmdlLFxyXG5cdEV2ZW50RW1pdHRlcixcclxuXHRDaGFuZ2VEZXRlY3RvclJlZixcclxuXHRPdXRwdXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgUERGSlNfIGZyb20gJ3BkZmpzLWRpc3QvYnVpbGQvcGRmLm1pbi5tanMnO1xyXG5pbXBvcnQgUGFuem9vbSBmcm9tICdwYW56b29tL2Rpc3QvcGFuem9vbSc7XHJcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb21tb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFBkZkRvY3VtZW50LCBVdGlsU3RyaW5nLCBFUHJvY2VzbywgUmVxdWVzdFBkZiB9IGZyb20gJ25nLXBsaS11dGlsJztcclxuaW1wb3J0IHsgRmlsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maWxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xyXG5cclxuY29uc3QgUERGSlMgPSBQREZKU187XHJcbi8vIGNvbnN0IHBhbnpvb20gPSBwYW56b29tXztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAncGxpLXBkZi12aXN1YWxpemVyJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vcGRmLXZpc3VhbGl6ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL3BkZi12aXN1YWxpemVyLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGRmVmlzdWFsaXplckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuXHRzdGF0aWMgREVGQVVMVF9IRUlHSFQgPSA1MDA7XHJcblx0LyoqIHRleHQgaHRtbCB3aWxsIGJlY29tZSBwZGYgKi9cclxuXHRASW5wdXQoKSBodG1sOiBzdHJpbmc7XHJcblx0LyoqIHRleHQgaGVhZGVyIHdpbGwgYmVjb21lIHBkZiAqL1xyXG5cdEBJbnB1dCgpIGhlYWRlcjogc3RyaW5nO1xyXG5cdC8qKiB0ZXh0IGZvb3RlciB3aWxsIGJlY29tZSBwZGYgKi9cclxuXHRASW5wdXQoKSBmb290ZXI6IHN0cmluZztcclxuXHQvKiogaXQgY29udGFpbnMgdGhlIG1hcmdpblRvcCB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIHBkZiAqL1xyXG5cdEBJbnB1dCgpIG1hcmdpblRvcDogbnVtYmVyO1xyXG5cdC8qKiBpdCBjb250YWlucyB0aGUgbWFyZ2luUmlnaHQgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBwZGYgKi9cclxuXHRASW5wdXQoKSBtYXJnaW5SaWdodDogbnVtYmVyO1xyXG5cdC8qKiBpdCBjb250YWlucyB0aGUgbWFyZ2luQm90dG9tIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcGRmICovXHJcblx0QElucHV0KCkgbWFyZ2luQm90dG9tOiBudW1iZXI7XHJcblx0LyoqIGl0IGNvbnRhaW5zIHRoZSBtYXJnaW5MZWZ0IHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcGRmICovXHJcblx0QElucHV0KCkgbWFyZ2luTGVmdDogbnVtYmVyO1xyXG5cdC8qKiBJdCBjb250YWlucyB0aGUgZm9udCBvZiB0aGUgaHRtbCAqL1xyXG5cdEBJbnB1dCgpIGZvbnQ6IHN0cmluZztcclxuXHQvKiogSXQgY29udGFpbnMgdGhlIHBkZiBvcmllbnRhdGlvbiAqL1xyXG5cdEBJbnB1dCgpIG9yaWVudGF0aW9uOiBudW1iZXI7XHJcblx0LyoqIEl0IGNvbnRhaW5zIHRoZSBwZGYgc2l6ZSAqL1xyXG5cdEBJbnB1dCgpIHNpemU6IG51bWJlcjtcclxuXHQvKiogc2hvdyBwYWdlciAqL1xyXG5cdEBJbnB1dCgpIHNob3dQYWdlcjogYm9vbGVhbiA9IHRydWU7XHJcblx0LyoqIHJlcGVhdCBoZWFkZXIgKi9cclxuXHRASW5wdXQoKSByZXBlYXRIZWFkZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG5cdC8qKiByZXBlYXQgZm9vdGVyKi9cclxuXHRASW5wdXQoKSByZXBlYXRGb290ZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG5cdC8qKiBIZWFkZXIgaGVpZ2h0ICovXHJcblx0QElucHV0KCkgaGVhZGVySGVpZ2h0OiBudW1iZXI7XHJcblx0LyoqIEZvb3RlciBoZWlnaHQgKi9cclxuXHRASW5wdXQoKSBmb290ZXJIZWlnaHQ6IG51bWJlcjtcclxuXHJcblx0LyoqIEl0IHZlcmlmaWVzIGlmIGlzIHBvc3NpYmxlIHRvIGVkaXQgaHRtbCAqL1xyXG5cdEBJbnB1dCgpIGVuYWJsZUVkaXQ6IGJvb2xlYW47XHJcblx0LyoqIHRpdGxlIG9mIHRoZSBwZGYgKi9cclxuXHRASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xyXG5cdC8qKiB0aGUgaGVpZ2h0IG9mIHRoZSBwZGYgY2FudmFzICovXHJcblx0QElucHV0KCkgaGVpZ2h0OiBudW1iZXI7XHJcblx0LyoqIFRoZSBmaWxlbmFtZSBvZiB0aGUgcGRmICovXHJcblx0QElucHV0KCkgZmlsZW5hbWU6IHN0cmluZztcclxuXHQvKiogSXQgdmVyaWZpZXMgaWYgaXQgYWxsb3dzIHRvIHNlbmQgdGhlIGVtYWlsICovXHJcblx0QElucHV0KCkgZW5hYmxlRW1haWw6IGJvb2xlYW47XHJcblx0LyoqIEl0IGZpcmVzIHdoZW4gdGhlIGZpbGUgaGFzIGJlZW4gZG93bmxvYWRlZCAqL1xyXG5cdEBPdXRwdXQoKSBvbkRvd25sb2FkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cdC8qKiBJdCBmaXJlcyB3aGVuIHRoZSBuYW1lIGhhcyBiZWVuIHNlbnQgKi9cclxuXHRAT3V0cHV0KCkgb25TZW5kRW1haWw6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblx0LyoqIEl0IGZpcmVzIHdoZW4gdGhlIGh0bWwgaGFzIGJlZW4gbW9kaWZpZWQgKi9cclxuXHRAT3V0cHV0KCkgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblx0LyoqIEl0IGNvbnRhaW5zIHRoZSBsYW5nIG9mIHRoZSBwZGYgKi9cclxuXHRASW5wdXQoKSBsYW5nOiBzdHJpbmc7XHJcblx0LyoqIFRoZSB1cmwgb2YgdGhlIHBkZiAqL1xyXG5cdEBJbnB1dCgpIHVybEZpbGU6IHN0cmluZztcclxuXHJcblx0ZW1haWw6IHN0cmluZztcclxuXHJcblx0LyoqIGJhc2U2NCBhcyByZXN1bHQgb2YgaHRtbCAyIHBkZiAqL1xyXG5cdGJhc2U2NDogc3RyaW5nO1xyXG5cdC8qKiBpdCB2ZXJpZmllcyBpZiBjb21wb25lbnQgaXMgcmVhZHkgKi9cclxuXHRyZWFkeTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdC8qKiBJdCBjb250aW5hcyB0aGUgYWJzdHJhY3Rpb24gb2YgcGRmIGRvY3VtZW50ICovXHJcblx0cGRmRG9jdW1lbnQ6IFBkZkRvY3VtZW50O1xyXG5cclxuXHQvKiogaXQgY29udGFpbnMgdGhlIGlkIG9mIGNhbnZhcyAqL1xyXG5cdGlkX2NhbnZhczogc3RyaW5nID0gJ3BkZi1jYW52YXMnO1xyXG5cclxuXHQvKiogSXQgYWxsb3dzIHRvIGVkaXQgaHRtbCAqL1xyXG5cdGVkaXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcm90ZWN0ZWQgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcclxuXHRcdHB1YmxpYyBzYW5pdGl6YXRpb246IERvbVNhbml0aXplcixcclxuXHRcdHByaXZhdGUgdGFvc3RyU2VydmljZTogVG9hc3RyU2VydmljZSxcclxuXHRcdHByaXZhdGUgZmlsZVNlcnZpY2U6IEZpbGVTZXJ2aWNlXHJcblx0KSB7fVxyXG5cclxuXHQvLyBpdCByZXNvbHZlcyB3aGVuIHRoZSBodG1sIGlzIGNoYW5nZWRcclxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcblx0XHRjb25zdCBodG1sOiBTaW1wbGVDaGFuZ2UgPSBjaGFuZ2VzLmh0bWw7XHJcblx0XHRjb25zdCB1cmxGaWxlOiBTaW1wbGVDaGFuZ2UgPSBjaGFuZ2VzLnVybEZpbGU7XHJcblx0XHRpZiAoaHRtbCAmJiBodG1sLmN1cnJlbnRWYWx1ZSkge1xyXG5cdFx0XHR0aGlzLmh0bWwgPSBodG1sLmN1cnJlbnRWYWx1ZTtcclxuXHRcdFx0dGhpcy5nZW5lcmF0ZVBERigpO1xyXG5cdFx0fSBlbHNlIGlmICh1cmxGaWxlICYmIHVybEZpbGUuY3VycmVudFZhbHVlKSB7XHJcblx0XHRcdHRoaXMudXJsRmlsZSA9IHVybEZpbGUuY3VycmVudFZhbHVlO1xyXG5cdFx0XHR0aGlzLmdlbmVyYXRlUERGKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLnJlYWR5ID0gZmFsc2U7XHJcblx0XHRcdGlmICh0aGlzLnBkZkRvY3VtZW50ICYmIHRoaXMucGRmRG9jdW1lbnQuY2FudmFzKSB7XHJcblx0XHRcdFx0bGV0IGNhbnZhcyA9IHRoaXMucGRmRG9jdW1lbnQuY2FudmFzO1xyXG5cdFx0XHRcdHZhciBjdHggPSB0aGlzLnBkZkRvY3VtZW50LmNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xyXG5cdFx0XHRcdGN0eC5jbGVhclJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcclxuXHRcdFx0XHR0aGlzLnBkZkRvY3VtZW50ID0gdW5kZWZpbmVkO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiogSXQgZ2VuZXJhdGVzIHRoZSBwZGYgKi9cclxuXHRnZW5lcmF0ZVBERigpIHtcclxuXHRcdGlmICghVXRpbFN0cmluZy5pc1ZhbGlkKHRoaXMuaHRtbCkgJiYgVXRpbFN0cmluZy5pc1ZhbGlkKHRoaXMudXJsRmlsZSkpIHtcclxuXHRcdFx0dGhpcy5jb21tb25TZXJ2aWNlLmdldEJhc2U2NFBkZkJ5VXJsKHRoaXMudXJsRmlsZSkuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdChyZXN1bHQpID0+IHtcclxuXHRcdFx0XHRcdHRoaXMuc2hvd0Jhc2U2NFBkZihyZXN1bHQpO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0KGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnRXJyb3IgdHJ5aW5nIHRvIHJlbmRlciBQREYnLCBlcnJvcik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Ly8gaWYgaHRtbCB3YXMgY2hhbmdlZFxyXG5cdFx0XHRsZXQgcmVxdWVzdFBkZjogUmVxdWVzdFBkZiA9IG5ldyBSZXF1ZXN0UGRmKCk7XHJcblx0XHRcdHJlcXVlc3RQZGYuaHRtbCA9IHRoaXMuaHRtbDtcclxuXHRcdFx0cmVxdWVzdFBkZi5oZWFkZXIgPSB0aGlzLmhlYWRlcjtcclxuXHRcdFx0cmVxdWVzdFBkZi5mb290ZXIgPSB0aGlzLmZvb3RlcjtcclxuXHRcdFx0cmVxdWVzdFBkZi5sYW5nID0gdGhpcy5sYW5nO1xyXG5cdFx0XHRyZXF1ZXN0UGRmLm1hcmdpblRvcCA9IHRoaXMubWFyZ2luVG9wO1xyXG5cdFx0XHRyZXF1ZXN0UGRmLm1hcmdpblJpZ2h0ID0gdGhpcy5tYXJnaW5SaWdodDtcclxuXHRcdFx0cmVxdWVzdFBkZi5tYXJnaW5Cb3R0b20gPSB0aGlzLm1hcmdpbkJvdHRvbTtcclxuXHRcdFx0cmVxdWVzdFBkZi5tYXJnaW5MZWZ0ID0gdGhpcy5tYXJnaW5MZWZ0O1xyXG5cdFx0XHRyZXF1ZXN0UGRmLm9yaWVudGF0aW9uID0gdGhpcy5vcmllbnRhdGlvbjtcclxuXHRcdFx0cmVxdWVzdFBkZi5zaXplID0gdGhpcy5zaXplO1xyXG5cdFx0XHRyZXF1ZXN0UGRmLmZvbnQgPSB0aGlzLmZvbnQ7XHJcblx0XHRcdHJlcXVlc3RQZGYucmVwZWF0SGVhZGVyID0gdGhpcy5yZXBlYXRIZWFkZXI7XHJcblx0XHRcdHJlcXVlc3RQZGYucmVwZWF0Rm9vdGVyID0gdGhpcy5yZXBlYXRGb290ZXI7XHJcblx0XHRcdHJlcXVlc3RQZGYuc2hvd1BhZ2VyID0gdGhpcy5zaG93UGFnZXI7XHJcblx0XHRcdHJlcXVlc3RQZGYuaGVhZGVySGVpZ2h0ID0gdGhpcy5oZWFkZXJIZWlnaHQ7XHJcblx0XHRcdHJlcXVlc3RQZGYuZm9vdGVySGVpZ2h0ID0gdGhpcy5mb290ZXJIZWlnaHQ7XHJcblxyXG5cdFx0XHR0aGlzLmNvbW1vblNlcnZpY2UuZ2V0QmFzZTY0UGRmKHJlcXVlc3RQZGYpLnN1YnNjcmliZShcclxuXHRcdFx0XHQocmVzdWx0KSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLnNob3dCYXNlNjRQZGYocmVzdWx0KTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ0Vycm9yIHRyeWluZyB0byByZW5kZXIgUERGJywgZXJyb3IpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHNob3dCYXNlNjRQZGYocmVzdWx0KSB7XHJcblx0XHR0aGlzLmJhc2U2NCA9IHJlc3VsdC5iYXNlNjQ7XHJcblx0XHR2YXIgZGF0YSA9IGF0b2IodGhpcy5iYXNlNjQpO1xyXG5cdFx0UERGSlMud29ya2VyU3JjID0gJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vcGRmanMtZGlzdEA0LjYuODIvYnVpbGQvcGRmLndvcmtlci5taW4ubWpzJztcclxuXHRcdGlmIChQREZKUy5HbG9iYWxXb3JrZXJPcHRpb25zKVxyXG5cdFx0XHRQREZKUy5HbG9iYWxXb3JrZXJPcHRpb25zLndvcmtlclNyYyA9XHJcblx0XHRcdFx0J2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vcGRmanMtZGlzdEA0LjYuODIvYnVpbGQvcGRmLndvcmtlci5taW4ubWpzJztcclxuXHRcdC8vIGNyZWF0ZSBpbnN0YW5jZSBvZiBQZGZEb2N1bWVudCB3aXRoIHRoZSBpZCBvZiBjYW52YXNcclxuXHRcdC8vIGNyZWF0ZSBpbnN0YW5jZSBvZiBQZGZEb2N1bWVudCB3aXRoIHRoZSBpZCBvZiBjYW52YXNcclxuXHRcdHRoaXMucGRmRG9jdW1lbnQgPSBuZXcgUGRmRG9jdW1lbnQodGhpcy5pZF9jYW52YXMpO1xyXG5cclxuXHRcdC8vIGFzc2lnbiB2YXJpYWJsZXMgb3V0IG9mIHNjb3BlXHJcblx0XHRsZXQgcGRmZG9jdW1lbnQ6IFBkZkRvY3VtZW50ID0gdGhpcy5wZGZEb2N1bWVudDtcclxuXHRcdFBhbnpvb20odGhpcy5wZGZEb2N1bWVudC5jYW52YXMsIHtcclxuXHRcdFx0c21vb3RoU2Nyb2xsOiBmYWxzZVxyXG5cdFx0fSk7XHJcblx0XHRsZXQgc2VsZiA9IHRoaXM7XHJcblx0XHRsZXQgcmVhZHkgPSB0aGlzLnJlYWR5O1xyXG5cclxuXHRcdGNvbnN0IHBkZkxvYWRpbmdUYXNrID0gUERGSlMuZ2V0RG9jdW1lbnQoeyBkYXRhOiBkYXRhIH0pO1xyXG5cdFx0Ly8gSlAgLSBoZXJlIHdlIGFzayBpZiB0aGUgcHJvbWlzZSBzdXBwb3J0cyB0aGUgbmV3IHZlcnNpb24gcGRmTG9hZGluZ1Rhc2sucHJvbWlzZVxyXG5cdFx0Y29uc3QgcHJvbWlzZSA9IHBkZkxvYWRpbmdUYXNrLnByb21pc2UgPyBwZGZMb2FkaW5nVGFzay5wcm9taXNlIDogcGRmTG9hZGluZ1Rhc2s7XHJcblx0XHRwcm9taXNlLnRoZW4oZnVuY3Rpb24gKHBkZkRvY18pIHtcclxuXHRcdFx0cGRmZG9jdW1lbnQucGRmRG9jID0gcGRmRG9jXztcclxuXHRcdFx0c2VsZi5yZW5kZXJQYWdlKDEpO1xyXG5cdFx0XHRyZWFkeSA9IHRydWU7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHRlc3RCYXNlNjRUb0ZpbGUyKCkge1xyXG5cdFx0Ly8gbGV0IGRhdGF1cmwgPSB0aGlzLmJhc2U2NDtcclxuXHRcdGxldCBmaWxlTmFtZSA9ICdUZXN0T1ByYWRhMi5wZGYnO1xyXG5cdFx0Ly8gdmFyIGFyciA9IGRhdGF1cmwuc3BsaXQoJywnKSwgbWltZSA9IGFyclswXS5tYXRjaCgvOiguKj8pOy8pWzFdLFxyXG5cdFx0dmFyIGJzdHIgPSBhdG9iKHRoaXMuYmFzZTY0KSxcclxuXHRcdFx0biA9IGJzdHIubGVuZ3RoLFxyXG5cdFx0XHR1OGFyciA9IG5ldyBVaW50OEFycmF5KG4pO1xyXG5cdFx0d2hpbGUgKG4tLSkge1xyXG5cdFx0XHR1OGFycltuXSA9IGJzdHIuY2hhckNvZGVBdChuKTtcclxuXHRcdH1cclxuXHRcdGxldCBmaWxlUmV0dXJuID0gbmV3IEZpbGUoW3U4YXJyXSwgZmlsZU5hbWUsIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicgfSk7XHJcblx0XHR0aGlzLnRlc3RFbnZpb0RvYyhmaWxlUmV0dXJuLCBmaWxlTmFtZSk7XHJcblx0fVxyXG5cclxuXHR0ZXN0RW52aW9Eb2MoZmlsZVJldHVybjogYW55LCBmaWxlTmFtZTogc3RyaW5nKSB7XHJcblx0XHRjb25zdCBmaWxlUGF0aCA9IHRoaXMuZmlsZVNlcnZpY2UuZ2V0UGF0aChcclxuXHRcdFx0RVByb2Nlc28uQ09OVk9DQVRPUklBLFxyXG5cdFx0XHQ1MDAsXHJcblx0XHRcdDIsXHJcblx0XHRcdDEsXHJcblx0XHRcdCdhYWFhJyxcclxuXHRcdFx0ZmlsZU5hbWVcclxuXHRcdCk7XHJcblx0XHR0aGlzLmZpbGVTZXJ2aWNlLnVwbG9hZChmaWxlUGF0aCwgZmlsZVJldHVybikuc3Vic2NyaWJlKFxyXG5cdFx0XHQodXJsKSA9PiB7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coJ0ZpbmFsaXpvIGVudsOtbyBkb2N1bWVudG8nLCB1cmwpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHQoZXJyb3IpID0+IHtcclxuXHRcdFx0XHRjb25zb2xlLmxvZygnRXJyb3IgdHJ5aW5nIHRvIHVwbG9hZDogJywgZXJyb3IpO1xyXG5cdFx0XHR9XHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0LyoqIEl0IHJldHVybnMgdGhlIGhlaWdodCAgKi9cclxuXHRnZXRIZWlnaHQoKTogc3RyaW5nIHtcclxuXHRcdGlmICh0aGlzLmhlaWdodCkgcmV0dXJuIHRoaXMuaGVpZ2h0ICsgJ3B4JztcclxuXHRcdHJldHVybiBQZGZWaXN1YWxpemVyQ29tcG9uZW50LkRFRkFVTFRfSEVJR0hUICsgJ3B4JztcclxuXHR9XHJcblxyXG5cdC8qKiBHZXQgcGFnZSBpbmZvIGZyb20gZG9jdW1lbnQsIHJlc2l6ZSBjYW52YXMgYWNjb3JkaW5nbHksIGFuZCByZW5kZXIgcGFnZS4gKi9cclxuXHRyZW5kZXJQYWdlKG51bSkge1xyXG5cdFx0dGhpcy5wZGZEb2N1bWVudC5wYWdlUmVuZGVyaW5nID0gdHJ1ZTtcclxuXHRcdC8vIGFzc2lnbiB2YXJpYWJsZXMgb3V0IG9mIHNjb3BlXHJcblx0XHRsZXQgc2VsZlBkZkRvY3VtZW50OiBQZGZEb2N1bWVudCA9IHRoaXMucGRmRG9jdW1lbnQ7XHJcblx0XHRsZXQgc2VsZiA9IHRoaXM7XHJcblx0XHQvLyBVc2luZyBwcm9taXNlIHRvIGZldGNoIHRoZSBwYWdlXHJcblx0XHR0aGlzLnBkZkRvY3VtZW50LnBkZkRvYy5nZXRQYWdlKG51bSkudGhlbihmdW5jdGlvbiAocGFnZSkge1xyXG5cdFx0XHR2YXIgc2NhbGUgPSBzZWxmUGRmRG9jdW1lbnQuc2NhbGUgPyBzZWxmUGRmRG9jdW1lbnQuc2NhbGUgOiAxLjU7XHJcblx0XHRcdHZhciB2aWV3cG9ydCA9IHBhZ2UuZ2V0Vmlld3BvcnQoeyBzY2FsZTogc2NhbGUgfSk7XHJcblx0XHRcdHNlbGZQZGZEb2N1bWVudC5jYW52YXMuaGVpZ2h0ID0gdmlld3BvcnQuaGVpZ2h0O1xyXG5cdFx0XHRzZWxmUGRmRG9jdW1lbnQuY2FudmFzLndpZHRoID0gdmlld3BvcnQud2lkdGg7XHJcblxyXG5cdFx0XHQvLyBSZW5kZXIgUERGIHBhZ2UgaW50byBjYW52YXMgY29udGV4dFxyXG5cdFx0XHR2YXIgcmVuZGVyQ29udGV4dCA9IHtcclxuXHRcdFx0XHRjYW52YXNDb250ZXh0OiBzZWxmUGRmRG9jdW1lbnQuY2FudmFzLmdldENvbnRleHQoJzJkJyksXHJcblx0XHRcdFx0dmlld3BvcnQ6IHZpZXdwb3J0XHJcblx0XHRcdH07XHJcblx0XHRcdHZhciByZW5kZXJUYXNrID0gcGFnZS5yZW5kZXIocmVuZGVyQ29udGV4dCk7XHJcblxyXG5cdFx0XHQvLyBXYWl0IGZvciByZW5kZXJpbmcgdG8gZmluaXNoXHJcblx0XHRcdHJlbmRlclRhc2sucHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHtcclxuXHRcdFx0XHRzZWxmUGRmRG9jdW1lbnQucGFnZVJlbmRlcmluZyA9IGZhbHNlO1xyXG5cdFx0XHRcdGlmIChzZWxmUGRmRG9jdW1lbnQucGFnZU51bVBlbmRpbmcgIT09IG51bGwpIHtcclxuXHRcdFx0XHRcdC8vIE5ldyBwYWdlIHJlbmRlcmluZyBpcyBwZW5kaW5nXHJcblx0XHRcdFx0XHRzZWxmLnJlbmRlclBhZ2Uoc2VsZlBkZkRvY3VtZW50LnBhZ2VOdW1QZW5kaW5nKTtcclxuXHRcdFx0XHRcdHNlbGZQZGZEb2N1bWVudC5wYWdlTnVtUGVuZGluZyA9IG51bGw7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSWYgYW5vdGhlciBwYWdlIHJlbmRlcmluZyBpbiBwcm9ncmVzcywgd2FpdHMgdW50aWwgdGhlIHJlbmRlcmluZyBpc1xyXG5cdCAqIGZpbmlzZWQuIE90aGVyd2lzZSwgZXhlY3V0ZXMgcmVuZGVyaW5nIGltbWVkaWF0ZWx5LlxyXG5cdCAqL1xyXG5cdHF1ZXVlUmVuZGVyUGFnZShudW0pIHtcclxuXHRcdGlmICh0aGlzLnBkZkRvY3VtZW50LnBhZ2VSZW5kZXJpbmcpIHtcclxuXHRcdFx0dGhpcy5wZGZEb2N1bWVudC5wYWdlTnVtUGVuZGluZyA9IG51bTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMucmVuZGVyUGFnZShudW0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRGlzcGxheXMgcHJldmlvdXMgcGFnZS5cclxuXHQgKi9cclxuXHRvblByZXZQYWdlKCkge1xyXG5cdFx0aWYgKCF0aGlzLnBkZkRvY3VtZW50IHx8IHRoaXMucGRmRG9jdW1lbnQucGFnZU51bSA8PSAxKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHRoaXMucGRmRG9jdW1lbnQucGFnZU51bS0tO1xyXG5cdFx0dGhpcy5xdWV1ZVJlbmRlclBhZ2UodGhpcy5wZGZEb2N1bWVudC5wYWdlTnVtKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERpc3BsYXlzIG5leHQgcGFnZS5cclxuXHQgKi9cclxuXHRvbk5leHRQYWdlKCkge1xyXG5cdFx0aWYgKCF0aGlzLnBkZkRvY3VtZW50IHx8IHRoaXMucGRmRG9jdW1lbnQucGFnZU51bSA+PSB0aGlzLnBkZkRvY3VtZW50LnBkZkRvYy5udW1QYWdlcykge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLnBkZkRvY3VtZW50LnBhZ2VOdW0rKztcclxuXHRcdHRoaXMucXVldWVSZW5kZXJQYWdlKHRoaXMucGRmRG9jdW1lbnQucGFnZU51bSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEaXNwbGF5cyBab29tIEluLlxyXG5cdCAqL1xyXG5cdG9uWm9vbUluKCkge1xyXG5cdFx0aWYgKCF0aGlzLnBkZkRvY3VtZW50IHx8IHRoaXMucGRmRG9jdW1lbnQuc2NhbGUgPj0gMykge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLnBkZkRvY3VtZW50LnNjYWxlID0gdGhpcy5wZGZEb2N1bWVudC5zY2FsZSArIDAuMjtcclxuXHRcdHRoaXMucXVldWVSZW5kZXJQYWdlKHRoaXMucGRmRG9jdW1lbnQucGFnZU51bSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEaXNwbGF5cyBab29tIE91dC5cclxuXHQgKi9cclxuXHRvblpvb21PdXQoKSB7XHJcblx0XHRpZiAoIXRoaXMucGRmRG9jdW1lbnQgfHwgdGhpcy5wZGZEb2N1bWVudC5zY2FsZSA8PSAwLjQpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5wZGZEb2N1bWVudC5zY2FsZSA9IHRoaXMucGRmRG9jdW1lbnQuc2NhbGUgLSAwLjI7XHJcblx0XHR0aGlzLnF1ZXVlUmVuZGVyUGFnZSh0aGlzLnBkZkRvY3VtZW50LnBhZ2VOdW0pO1xyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKSB7fVxyXG5cclxuXHQvKiogSXQgc2VuZHMgdGhlIGRvY3VtZW50IGJ5IGVtYWlsICovXHJcblx0c2VuZEVtYWlsKCkge1xyXG5cdFx0aWYgKHRoaXMuZW1haWwgJiYgVXRpbFN0cmluZy52YWxpZGF0ZUVtYWlsKHRoaXMuZW1haWwpKSB7XHJcblx0XHRcdHRoaXMub25TZW5kRW1haWwuZW1pdCh7XHJcblx0XHRcdFx0dG86IHRoaXMuZW1haWwsXHJcblx0XHRcdFx0YmFzZTY0OiB0aGlzLmJhc2U2NFxyXG5cdFx0XHR9KTtcclxuXHRcdFx0dGhpcy5lbWFpbCA9ICcnO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLnRhb3N0clNlcnZpY2Uud2FybmluZygnQ29ycmVvIGVsZWN0csOzbmljbyBlcyBpbmNvcnJlY3RvJyk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgZmlyZXMgdGhlIGV2ZW50IGRvd25sb2FkICovXHJcblx0ZG93bmxvYWQoKSB7XHJcblx0XHRjb25zdCBjb250ZW50VHlwZSA9ICdhcHBsaWNhdGlvbi9wZGYnO1xyXG5cdFx0Y29uc3QgYjY0RGF0YSA9IHRoaXMuYmFzZTY0O1xyXG5cdFx0Y29uc3QgYmxvYiA9IHRoaXMuYjY0dG9CbG9iKGI2NERhdGEsIGNvbnRlbnRUeXBlKTtcclxuXHRcdGNvbnN0IGJsb2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG5cdFx0dmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcblx0XHRkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xyXG5cdFx0YS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG5cdFx0YS5ocmVmID0gYmxvYlVybDtcclxuXHRcdGEuZG93bmxvYWQgPSB0aGlzLmZpbGVuYW1lO1xyXG5cdFx0YS5jbGljaygpO1xyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKGJsb2JVcmwpO1xyXG5cdFx0XHRkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xyXG5cdFx0XHR0aGlzLm9uRG93bmxvYWQuZW1pdCh7XHJcblx0XHRcdFx0YmFzZTY0OiB0aGlzLmJhc2U2NFxyXG5cdFx0XHR9KTtcclxuXHRcdH0sIDIwMCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgZmlyZXMgd2hlbiB0aGUgaHRtbCBpcyBjaGFuZ2VkICovXHJcblx0Y2hhbmdlKCkge1xyXG5cdFx0dGhpcy5nZW5lcmF0ZVBERigpO1xyXG5cdFx0dGhpcy5vbkNoYW5nZS5lbWl0KHRoaXMuaHRtbCk7XHJcblx0fVxyXG5cclxuXHQvKiogaXQgYWxsb3dzIHRvIGVkaXQgKi9cclxuXHR0b2dnbGVFZGl0KCkge1xyXG5cdFx0dGhpcy5lZGl0ID0gIXRoaXMuZWRpdDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIGl0IHJldHVybnMgaWYgaXMgUGRmRG9jdW1lbnRcclxuXHQgKi9cclxuXHRpc1BkZkRvY3VtZW50KCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQgIT09IHVuZGVmaW5lZDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIGl0IHJldHVybnMgaWYgaXMgVGl0bGVcclxuXHQgKi9cclxuXHRpc1RpdGxlKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMudGl0bGUgIT09IHVuZGVmaW5lZDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIGl0IHJldHVybnMgaWYgaXMgaXNQZGZEb2NcclxuXHQgKi9cclxuXHRpc1BkZkRvYygpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiAoXHJcblx0XHRcdHRoaXMucGRmRG9jdW1lbnQgJiZcclxuXHRcdFx0dGhpcy5wZGZEb2N1bWVudC5wZGZEb2MgIT0gdW5kZWZpbmVkICYmXHJcblx0XHRcdHRoaXMucGRmRG9jdW1lbnQucGRmRG9jICE9IG51bGxcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBpdCByZXR1cm5zIGlmIGlzIGZpbGVuYW1lXHJcblx0ICovXHJcblx0aXNGaWxlbmFtZSgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmZpbGVuYW1lICE9PSB1bmRlZmluZWQ7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBpdCByZXR1cm5zIGlmIGlzIGVuYWJsZUVkaXRcclxuXHQgKi9cclxuXHRpc0VuYWJsZUVkaXQoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5lbmFibGVFZGl0ID09IHRydWU7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBpdCByZXR1cm5zIGlmIGlzIGVkaXRcclxuXHQgKi9cclxuXHRpc0VkaXQoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5lZGl0ID09IHRydWU7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBpdCByZXR1cm5zIGlmIGlzIGVuYWJsZUVtYWlsXHJcblx0ICovXHJcblx0aXNFbmFibGVFbWFpbCgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmVuYWJsZUVtYWlsID09IHRydWU7XHJcblx0fVxyXG5cclxuXHRiNjR0b0Jsb2IoYjY0RGF0YSwgY29udGVudFR5cGUgPSAnJywgc2xpY2VTaXplID0gNTEyKSB7XHJcblx0XHRjb25zdCBieXRlQXJyYXlzID0gW107XHJcblx0XHRjb25zdCBieXRlQ2hhcmFjdGVycyA9IGF0b2IoYjY0RGF0YSk7XHJcblx0XHRmb3IgKGxldCBvZmZzZXQgPSAwOyBvZmZzZXQgPCBieXRlQ2hhcmFjdGVycy5sZW5ndGg7IG9mZnNldCArPSBzbGljZVNpemUpIHtcclxuXHRcdFx0Y29uc3Qgc2xpY2UgPSBieXRlQ2hhcmFjdGVycy5zbGljZShvZmZzZXQsIG9mZnNldCArIHNsaWNlU2l6ZSk7XHJcblx0XHRcdGNvbnN0IGJ5dGVOdW1iZXJzID0gbmV3IEFycmF5KHNsaWNlLmxlbmd0aCk7XHJcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc2xpY2UubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRieXRlTnVtYmVyc1tpXSA9IHNsaWNlLmNoYXJDb2RlQXQoaSk7XHJcblx0XHRcdH1cclxuXHRcdFx0Y29uc3QgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZU51bWJlcnMpO1xyXG5cdFx0XHRieXRlQXJyYXlzLnB1c2goYnl0ZUFycmF5KTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IGJsb2IgPSBuZXcgQmxvYihieXRlQXJyYXlzLCB7IHR5cGU6IGNvbnRlbnRUeXBlIH0pO1xyXG5cdFx0cmV0dXJuIGJsb2I7XHJcblx0fVxyXG59XHJcbiIsIjxoMyBjbGFzcz1cInBkZi12aXN1YWxpemVyLXRpdGxlXCI+e3sgdGl0bGUgfX08L2gzPlxyXG48ZGl2IGNsYXNzPVwicGRmLXZpc3VhbGl6ZXItY29udGFpbmVyXCI+XHJcblx0PGRpdiBjbGFzcz1cInBkZi12aXN1YWxpemVyLWNvbnRyb2xzXCIgKm5nSWY9XCJpc1BkZkRvY3VtZW50KCkgPT09IHRydWVcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImJ0bi10b29sYmFyXCIgcm9sZT1cInRvb2xiYXJcIiBhcmlhLWxhYmVsPVwiVG9vbGJhciB3aXRoIGJ1dHRvbiBncm91cHNcIj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgYnRuLWdyb3VwLXNtIG1yLTJcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiU2Vjb25kIGdyb3VwXCI+XHJcblx0XHRcdFx0XHRcdDwhLS0gem9vbSBpbi0tPlxyXG5cdFx0XHRcdFx0XHQ8YVxyXG5cdFx0XHRcdFx0XHRcdGhyZWY9XCJKYXZhc2NyaXB0OjtcIlxyXG5cdFx0XHRcdFx0XHRcdHRpdGxlPVwiQWNlcmNhclwiXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS10b2dnbGU9XCJ0b29sdGlwXCJcclxuXHRcdFx0XHRcdFx0XHRkYXRhLXBsYWNlbWVudD1cInRvcFwiXHJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCJcclxuXHRcdFx0XHRcdFx0XHQoY2xpY2spPVwib25ab29tSW4oKVwiXHJcblx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZhIGZhLXNlYXJjaC1wbHVzXCI+PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L2E+XHJcblxyXG5cdFx0XHRcdFx0XHQ8IS0tIHpvb20gb3V0LS0+XHJcblx0XHRcdFx0XHRcdDxhXHJcblx0XHRcdFx0XHRcdFx0aHJlZj1cIkphdmFzY3JpcHQ6O1wiXHJcblx0XHRcdFx0XHRcdFx0dGl0bGU9XCJBbGVqYXJcIlxyXG5cdFx0XHRcdFx0XHRcdGRhdGEtdG9nZ2xlPVwidG9vbHRpcFwiXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS1wbGFjZW1lbnQ9XCJ0b3BcIlxyXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiXHJcblx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cIm9uWm9vbU91dCgpXCJcclxuXHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiZmEgZmEtc2VhcmNoLW1pbnVzXCI+PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGJ0bi1ncm91cC1zbSBtci0yXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIlRoaXJkIGdyb3VwXCI+XHJcblx0XHRcdFx0XHRcdDwhLS1wcmV2IC0tPlxyXG5cdFx0XHRcdFx0XHQ8YVxyXG5cdFx0XHRcdFx0XHRcdGhyZWY9XCJKYXZhc2NyaXB0OjtcIlxyXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiXHJcblx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cIm9uUHJldlBhZ2UoKVwiXHJcblx0XHRcdFx0XHRcdFx0dGl0bGU9XCJBbnRlcmlvclwiXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS10b2dnbGU9XCJ0b29sdGlwXCJcclxuXHRcdFx0XHRcdFx0XHRkYXRhLXBsYWNlbWVudD1cInRvcFwiXHJcblx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZhIGZhLWNoZXZyb24tbGVmdFwiPjwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0PC9hPlxyXG5cclxuXHRcdFx0XHRcdFx0PCEtLSBwYWdpbmF0aW9uLS0+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiICpuZ0lmPVwiaXNQZGZEb2MoKSA9PT0gdHJ1ZVwiPlxyXG5cdFx0XHRcdFx0XHRcdFDDoWdpbmE6IHt7IHBkZkRvY3VtZW50LnBhZ2VOdW0gfX0gLyB7eyBwZGZEb2N1bWVudC5wZGZEb2MubnVtUGFnZXMgfX1cclxuXHRcdFx0XHRcdFx0PC9zcGFuPlxyXG5cclxuXHRcdFx0XHRcdFx0PCEtLW5leHQgLS0+XHJcblx0XHRcdFx0XHRcdDxhXHJcblx0XHRcdFx0XHRcdFx0aHJlZj1cIkphdmFzY3JpcHQ6O1wiXHJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCJcclxuXHRcdFx0XHRcdFx0XHQoY2xpY2spPVwib25OZXh0UGFnZSgpXCJcclxuXHRcdFx0XHRcdFx0XHR0aXRsZT1cIlNpZ3VpZW50ZVwiXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS10b2dnbGU9XCJ0b29sdGlwXCJcclxuXHRcdFx0XHRcdFx0XHRkYXRhLXBsYWNlbWVudD1cInRvcFwiXHJcblx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZhIGZhLWNoZXZyb24tcmlnaHRcIj48L3NwYW4+XHJcblx0XHRcdFx0XHRcdDwvYT5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgYnRuLWdyb3VwLXNtXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIkZpcnN0IGdyb3VwXCI+XHJcblx0XHRcdFx0XHRcdDwhLS0gZG93bmxvYWQtLT5cclxuXHRcdFx0XHRcdFx0PGFcclxuXHRcdFx0XHRcdFx0XHRbZG93bmxvYWRdPVwiZmlsZW5hbWVcIlxyXG5cdFx0XHRcdFx0XHRcdCpuZ0lmPVwiaXNGaWxlbmFtZSgpID09PSB0cnVlXCJcclxuXHRcdFx0XHRcdFx0XHQoY2xpY2spPVwiZG93bmxvYWQoKVwiXHJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCJcclxuXHRcdFx0XHRcdFx0XHR0aXRsZT1cIkRlc2NhcmdhclwiXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS10b2dnbGU9XCJ0b29sdGlwXCJcclxuXHRcdFx0XHRcdFx0XHRkYXRhLXBsYWNlbWVudD1cInRvcFwiXHJcblx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHQ8IS0tIFtocmVmXT1cIlxyXG5cdFx0XHRcdFx0XHRcdHNhbml0aXphdGlvbi5ieXBhc3NTZWN1cml0eVRydXN0VXJsKFxyXG5cdFx0XHRcdFx0XHRcdFx0J2RhdGE6YXBwbGljYXRpb24vcGRmO2Jhc2U2NCwnICsgdGhpcy5iYXNlNjRcclxuXHRcdFx0XHRcdFx0XHQpXHJcblx0XHRcdFx0XHRcdFwiIC0tPlxyXG5cdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiZmEgZmEtZG93bmxvYWRcIj48L3NwYW4+XHJcblx0XHRcdFx0XHRcdDwvYT5cclxuXHJcblx0XHRcdFx0XHRcdDwhLS0gdG9nZ2xlIGVkaXQtLVxyXG4gICAgICAgICAgICA8YSBocmVmPVwiSmF2YXNjcmlwdDo7XCIgKm5nSWY9XCJpc0VuYWJsZUVkaXQoKSA9PT0gdHJ1ZVwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiIHRpdGxlPVwiRWRpdGFyXCJcclxuICAgICAgICAgICAgICBkYXRhLXRvZ2dsZT1cInRvb2x0aXBcIiBkYXRhLXBsYWNlbWVudD1cInRvcFwiIChjbGljayk9XCJ0b2dnbGVFZGl0KClcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhIGZhLWVkaXRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYT5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gZ2VuZXJhdGUgcGRmLS0+XHJcblx0XHRcdFx0XHRcdDxhXHJcblx0XHRcdFx0XHRcdFx0aHJlZj1cIkphdmFzY3JpcHQ6O1wiXHJcblx0XHRcdFx0XHRcdFx0Km5nSWY9XCJpc0VkaXQoKSA9PT0gdHJ1ZVwiXHJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCJcclxuXHRcdFx0XHRcdFx0XHR0aXRsZT1cIkdlbmVyYXJcIlxyXG5cdFx0XHRcdFx0XHRcdGRhdGEtdG9nZ2xlPVwidG9vbHRpcFwiXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS1wbGFjZW1lbnQ9XCJ0b3BcIlxyXG5cdFx0XHRcdFx0XHRcdChjbGljayk9XCJjaGFuZ2UoKVwiXHJcblx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZhIGZhLXBsYXlcIj48L3NwYW4+XHJcblx0XHRcdFx0XHRcdDwvYT5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHJcblx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtbWQtNSBwdWxsLXJpZ2h0XCIgKm5nSWY9XCJpc0VuYWJsZUVtYWlsKCkgPT09IHRydWVcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtc21cIj5cclxuXHRcdFx0XHRcdDxsYWJlbCBmb3I9XCJwZGYtdmlzdWFsaXplci1lbWFpbFwiIGNsYXNzPVwicGRmXCI+XHJcblx0XHRcdFx0XHRcdEVudmlhciBtZW5zYWplIGFcclxuXHRcdFx0XHRcdDwvbGFiZWw+XHJcblx0XHRcdFx0XHQ8aW5wdXRcclxuXHRcdFx0XHRcdFx0dHlwZT1cImVtYWlsXCJcclxuXHRcdFx0XHRcdFx0aWQ9XCJwZGYtdmlzdWFsaXplci1lbWFpbFwiXHJcblx0XHRcdFx0XHRcdG5hbWU9XCJwZGYtdmlzdWFsaXplci1lbWFpbFwiXHJcblx0XHRcdFx0XHRcdHJlcXVpcmVkPVwidHJ1ZVwiXHJcblx0XHRcdFx0XHRcdGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuXHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJDb3JyZW8gZWxlY3Ryw7NuaWNvXCJcclxuXHRcdFx0XHRcdFx0WyhuZ01vZGVsKV09XCJlbWFpbFwiXHJcblx0XHRcdFx0XHQvPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uXHJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCJcclxuXHRcdFx0XHRcdFx0XHR0eXBlPVwiYnV0dG9uXCJcclxuXHRcdFx0XHRcdFx0XHQoY2xpY2spPVwic2VuZEVtYWlsKClcIlxyXG5cdFx0XHRcdFx0XHRcdHRpdGxlPVwiRW52aWFyXCJcclxuXHRcdFx0XHRcdFx0XHRkYXRhLXRvZ2dsZT1cInRvb2x0aXBcIlxyXG5cdFx0XHRcdFx0XHRcdGRhdGEtcGxhY2VtZW50PVwidG9wXCJcclxuXHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdDxpbWdcclxuXHRcdFx0XHRcdFx0XHRcdHNyYz1cImh0dHA6Ly9naXJvMzYwLmNvL3pvbmEzNjAvY29sZnV0dXJvL1BMSUMvaW1nL2V4cG9ydC5zdmdcIlxyXG5cdFx0XHRcdFx0XHRcdFx0YWx0PVwiXCJcclxuXHRcdFx0XHRcdFx0XHRcdHdpZHRoPVwiMTZcIlxyXG5cdFx0XHRcdFx0XHRcdC8+XHJcblx0XHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblxyXG5cdDxkaXYgY2xhc3M9XCJwZGYtdmlzdWFsaXplci1kYXNoYm9hcmRcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImNvbC1tZC01XCIgKm5nSWY9XCJpc0VkaXQoKSA9PT0gdHJ1ZVwiPlxyXG5cdFx0XHRcdDx0ZXh0YXJlYVxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG5cdFx0XHRcdFx0W3N0eWxlLmhlaWdodF09XCJnZXRIZWlnaHQoKVwiXHJcblx0XHRcdFx0XHRzdHlsZT1cInJlc2l6ZTp2ZXJ0aWNhbDtcIlxyXG5cdFx0XHRcdFx0WyhuZ01vZGVsKV09XCJodG1sXCJcclxuXHRcdFx0XHQ+PC90ZXh0YXJlYT5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHRcdDxkaXYgW25nQ2xhc3NdPVwieyAnY29sLW1kLTcnOiBlZGl0ID09PSB0cnVlLCAnY29sLW1kLTEyJzogIWVkaXQgfVwiPlxyXG5cdFx0XHRcdDxkaXZcclxuXHRcdFx0XHRcdGlkPVwicGRmLXNjcm9sbGFibGVcIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJwZGYtdmlzdWFsaXplci1zY3JvbGxhYmxlXCJcclxuXHRcdFx0XHRcdFtzdHlsZS5oZWlnaHRdPVwiZ2V0SGVpZ2h0KClcIlxyXG5cdFx0XHRcdD5cclxuXHRcdFx0XHRcdDxjYW52YXMgaWQ9XCJwZGYtY2FudmFzXCIgY2xhc3M9XCJwZGYtdmlzdWFsaXplci1jYW52YXNcIj4gPC9jYW52YXM+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
405
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXZpc3VhbGl6ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcGxpLWNvbW1vbnMvc3JjL2xpYi9jb21wb25lbnRzL3BkZi12aXN1YWxpemVyL3BkZi12aXN1YWxpemVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy9saWIvY29tcG9uZW50cy9wZGYtdmlzdWFsaXplci9wZGYtdmlzdWFsaXplci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUlULEtBQUssRUFFTCxZQUFZLEVBRVosTUFBTSxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxNQUFNLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxPQUFPLE1BQU0sc0JBQXNCLENBQUM7QUFFM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7QUFLNUUsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDO0FBQ3JCLDRCQUE0QjtBQU81QixNQUFNLE9BQU8sc0JBQXNCO2FBQzNCLG1CQUFjLEdBQUcsR0FBRyxBQUFOLENBQU87SUFzRTVCLFlBQ1csYUFBNEIsRUFDL0IsWUFBMEIsRUFDekIsYUFBNEIsRUFDNUIsV0FBd0I7UUFIdEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDL0IsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDekIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFyRGpDLGlCQUFpQjtRQUNSLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFDbkMsb0JBQW9CO1FBQ1gsaUJBQVksR0FBWSxJQUFJLENBQUM7UUFDdEMsbUJBQW1CO1FBQ1YsaUJBQVksR0FB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ZCxLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUVHLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUcsUUFBUTtzQkFBakIsTUFBTTtnQkFFRSxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuXHRDb21wb25lbnQsXHJcblx0T25Jbml0LFxyXG5cdE9uQ2hhbmdlcyxcclxuXHRTaW1wbGVDaGFuZ2VzLFxyXG5cdElucHV0LFxyXG5cdFNpbXBsZUNoYW5nZSxcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0T3V0cHV0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIFBERkpTXyBmcm9tICdwZGZqcy1kaXN0L2J1aWxkL3BkZi5taW4ubWpzJztcclxuaW1wb3J0IFBhbnpvb20gZnJvbSAncGFuem9vbS9kaXN0L3Bhbnpvb20nO1xyXG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29tbW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQZGZEb2N1bWVudCwgVXRpbFN0cmluZywgRVByb2Nlc28sIFJlcXVlc3RQZGYgfSBmcm9tICduZy1wbGktdXRpbCc7XHJcbmltcG9ydCB7IEZpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmlsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcclxuXHJcbmNvbnN0IFBERkpTID0gUERGSlNfO1xyXG4vLyBjb25zdCBwYW56b29tID0gcGFuem9vbV87XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ3BsaS1wZGYtdmlzdWFsaXplcicsXHJcblx0dGVtcGxhdGVVcmw6ICcuL3BkZi12aXN1YWxpemVyLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9wZGYtdmlzdWFsaXplci5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFBkZlZpc3VhbGl6ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblx0c3RhdGljIERFRkFVTFRfSEVJR0hUID0gNTAwO1xyXG5cdC8qKiB0ZXh0IGh0bWwgd2lsbCBiZWNvbWUgcGRmICovXHJcblx0QElucHV0KCkgaHRtbDogc3RyaW5nO1xyXG5cdC8qKiB0ZXh0IGhlYWRlciB3aWxsIGJlY29tZSBwZGYgKi9cclxuXHRASW5wdXQoKSBoZWFkZXI6IHN0cmluZztcclxuXHQvKiogdGV4dCBmb290ZXIgd2lsbCBiZWNvbWUgcGRmICovXHJcblx0QElucHV0KCkgZm9vdGVyOiBzdHJpbmc7XHJcblx0LyoqIGl0IGNvbnRhaW5zIHRoZSBtYXJnaW5Ub3Agd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBwZGYgKi9cclxuXHRASW5wdXQoKSBtYXJnaW5Ub3A6IG51bWJlcjtcclxuXHQvKiogaXQgY29udGFpbnMgdGhlIG1hcmdpblJpZ2h0IHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcGRmICovXHJcblx0QElucHV0KCkgbWFyZ2luUmlnaHQ6IG51bWJlcjtcclxuXHQvKiogaXQgY29udGFpbnMgdGhlIG1hcmdpbkJvdHRvbSB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIHBkZiAqL1xyXG5cdEBJbnB1dCgpIG1hcmdpbkJvdHRvbTogbnVtYmVyO1xyXG5cdC8qKiBpdCBjb250YWlucyB0aGUgbWFyZ2luTGVmdCB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIHBkZiAqL1xyXG5cdEBJbnB1dCgpIG1hcmdpbkxlZnQ6IG51bWJlcjtcclxuXHQvKiogSXQgY29udGFpbnMgdGhlIGZvbnQgb2YgdGhlIGh0bWwgKi9cclxuXHRASW5wdXQoKSBmb250OiBzdHJpbmc7XHJcblx0LyoqIEl0IGNvbnRhaW5zIHRoZSBwZGYgb3JpZW50YXRpb24gKi9cclxuXHRASW5wdXQoKSBvcmllbnRhdGlvbjogbnVtYmVyO1xyXG5cdC8qKiBJdCBjb250YWlucyB0aGUgcGRmIHNpemUgKi9cclxuXHRASW5wdXQoKSBzaXplOiBudW1iZXI7XHJcblx0LyoqIHNob3cgcGFnZXIgKi9cclxuXHRASW5wdXQoKSBzaG93UGFnZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG5cdC8qKiByZXBlYXQgaGVhZGVyICovXHJcblx0QElucHV0KCkgcmVwZWF0SGVhZGVyOiBib29sZWFuID0gdHJ1ZTtcclxuXHQvKiogcmVwZWF0IGZvb3RlciovXHJcblx0QElucHV0KCkgcmVwZWF0Rm9vdGVyOiBib29sZWFuID0gdHJ1ZTtcclxuXHQvKiogSGVhZGVyIGhlaWdodCAqL1xyXG5cdEBJbnB1dCgpIGhlYWRlckhlaWdodDogbnVtYmVyO1xyXG5cdC8qKiBGb290ZXIgaGVpZ2h0ICovXHJcblx0QElucHV0KCkgZm9vdGVySGVpZ2h0OiBudW1iZXI7XHJcblxyXG5cdC8qKiBJdCB2ZXJpZmllcyBpZiBpcyBwb3NzaWJsZSB0byBlZGl0IGh0bWwgKi9cclxuXHRASW5wdXQoKSBlbmFibGVFZGl0OiBib29sZWFuO1xyXG5cdC8qKiB0aXRsZSBvZiB0aGUgcGRmICovXHJcblx0QElucHV0KCkgdGl0bGU6IHN0cmluZztcclxuXHQvKiogdGhlIGhlaWdodCBvZiB0aGUgcGRmIGNhbnZhcyAqL1xyXG5cdEBJbnB1dCgpIGhlaWdodDogbnVtYmVyO1xyXG5cdC8qKiBUaGUgZmlsZW5hbWUgb2YgdGhlIHBkZiAqL1xyXG5cdEBJbnB1dCgpIGZpbGVuYW1lOiBzdHJpbmc7XHJcblx0LyoqIEl0IHZlcmlmaWVzIGlmIGl0IGFsbG93cyB0byBzZW5kIHRoZSBlbWFpbCAqL1xyXG5cdEBJbnB1dCgpIGVuYWJsZUVtYWlsOiBib29sZWFuO1xyXG5cdC8qKiBJdCBmaXJlcyB3aGVuIHRoZSBmaWxlIGhhcyBiZWVuIGRvd25sb2FkZWQgKi9cclxuXHRAT3V0cHV0KCkgb25Eb3dubG9hZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHQvKiogSXQgZmlyZXMgd2hlbiB0aGUgbmFtZSBoYXMgYmVlbiBzZW50ICovXHJcblx0QE91dHB1dCgpIG9uU2VuZEVtYWlsOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cdC8qKiBJdCBmaXJlcyB3aGVuIHRoZSBodG1sIGhhcyBiZWVuIG1vZGlmaWVkICovXHJcblx0QE91dHB1dCgpIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cdC8qKiBJdCBjb250YWlucyB0aGUgbGFuZyBvZiB0aGUgcGRmICovXHJcblx0QElucHV0KCkgbGFuZzogc3RyaW5nO1xyXG5cdC8qKiBUaGUgdXJsIG9mIHRoZSBwZGYgKi9cclxuXHRASW5wdXQoKSB1cmxGaWxlOiBzdHJpbmc7XHJcblxyXG5cdGVtYWlsOiBzdHJpbmc7XHJcblxyXG5cdC8qKiBiYXNlNjQgYXMgcmVzdWx0IG9mIGh0bWwgMiBwZGYgKi9cclxuXHRiYXNlNjQ6IHN0cmluZztcclxuXHQvKiogaXQgdmVyaWZpZXMgaWYgY29tcG9uZW50IGlzIHJlYWR5ICovXHJcblx0cmVhZHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHQvKiogSXQgY29udGluYXMgdGhlIGFic3RyYWN0aW9uIG9mIHBkZiBkb2N1bWVudCAqL1xyXG5cdHBkZkRvY3VtZW50OiBQZGZEb2N1bWVudDtcclxuXHJcblx0LyoqIGl0IGNvbnRhaW5zIHRoZSBpZCBvZiBjYW52YXMgKi9cclxuXHRpZF9jYW52YXM6IHN0cmluZyA9ICdwZGYtY2FudmFzJztcclxuXHJcblx0LyoqIEl0IGFsbG93cyB0byBlZGl0IGh0bWwgKi9cclxuXHRlZGl0OiBib29sZWFuID0gZmFsc2U7XHJcblx0c2VuZEVtYWlsRGlzYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdGRvd25sb2FkRGlzYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByb3RlY3RlZCBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxyXG5cdFx0cHVibGljIHNhbml0aXphdGlvbjogRG9tU2FuaXRpemVyLFxyXG5cdFx0cHJpdmF0ZSB0YW9zdHJTZXJ2aWNlOiBUb2FzdHJTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBmaWxlU2VydmljZTogRmlsZVNlcnZpY2VcclxuXHQpIHt9XHJcblxyXG5cdC8vIGl0IHJlc29sdmVzIHdoZW4gdGhlIGh0bWwgaXMgY2hhbmdlZFxyXG5cdG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGh0bWw6IFNpbXBsZUNoYW5nZSA9IGNoYW5nZXMuaHRtbDtcclxuXHRcdGNvbnN0IHVybEZpbGU6IFNpbXBsZUNoYW5nZSA9IGNoYW5nZXMudXJsRmlsZTtcclxuXHRcdGlmIChodG1sICYmIGh0bWwuY3VycmVudFZhbHVlKSB7XHJcblx0XHRcdHRoaXMuaHRtbCA9IGh0bWwuY3VycmVudFZhbHVlO1xyXG5cdFx0XHR0aGlzLmdlbmVyYXRlUERGKCk7XHJcblx0XHR9IGVsc2UgaWYgKHVybEZpbGUgJiYgdXJsRmlsZS5jdXJyZW50VmFsdWUpIHtcclxuXHRcdFx0dGhpcy51cmxGaWxlID0gdXJsRmlsZS5jdXJyZW50VmFsdWU7XHJcblx0XHRcdHRoaXMuZ2VuZXJhdGVQREYoKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMucmVhZHkgPSBmYWxzZTtcclxuXHRcdFx0aWYgKHRoaXMucGRmRG9jdW1lbnQgJiYgdGhpcy5wZGZEb2N1bWVudC5jYW52YXMpIHtcclxuXHRcdFx0XHRsZXQgY2FudmFzID0gdGhpcy5wZGZEb2N1bWVudC5jYW52YXM7XHJcblx0XHRcdFx0dmFyIGN0eCA9IHRoaXMucGRmRG9jdW1lbnQuY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcblx0XHRcdFx0Y3R4LmNsZWFyUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xyXG5cdFx0XHRcdHRoaXMucGRmRG9jdW1lbnQgPSB1bmRlZmluZWQ7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKiBJdCBnZW5lcmF0ZXMgdGhlIHBkZiAqL1xyXG5cdGdlbmVyYXRlUERGKCkge1xyXG5cdFx0aWYgKCFVdGlsU3RyaW5nLmlzVmFsaWQodGhpcy5odG1sKSAmJiBVdGlsU3RyaW5nLmlzVmFsaWQodGhpcy51cmxGaWxlKSkge1xyXG5cdFx0XHR0aGlzLmNvbW1vblNlcnZpY2UuZ2V0QmFzZTY0UGRmQnlVcmwodGhpcy51cmxGaWxlKS5zdWJzY3JpYmUoXHJcblx0XHRcdFx0KHJlc3VsdCkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5zaG93QmFzZTY0UGRmKHJlc3VsdCk7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHQoZXJyb3IpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdFcnJvciB0cnlpbmcgdG8gcmVuZGVyIFBERicsIGVycm9yKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHQvLyBpZiBodG1sIHdhcyBjaGFuZ2VkXHJcblx0XHRcdGxldCByZXF1ZXN0UGRmOiBSZXF1ZXN0UGRmID0gbmV3IFJlcXVlc3RQZGYoKTtcclxuXHRcdFx0cmVxdWVzdFBkZi5odG1sID0gdGhpcy5odG1sO1xyXG5cdFx0XHRyZXF1ZXN0UGRmLmhlYWRlciA9IHRoaXMuaGVhZGVyO1xyXG5cdFx0XHRyZXF1ZXN0UGRmLmZvb3RlciA9IHRoaXMuZm9vdGVyO1xyXG5cdFx0XHRyZXF1ZXN0UGRmLmxhbmcgPSB0aGlzLmxhbmc7XHJcblx0XHRcdHJlcXVlc3RQZGYubWFyZ2luVG9wID0gdGhpcy5tYXJnaW5Ub3A7XHJcblx0XHRcdHJlcXVlc3RQZGYubWFyZ2luUmlnaHQgPSB0aGlzLm1hcmdpblJpZ2h0O1xyXG5cdFx0XHRyZXF1ZXN0UGRmLm1hcmdpbkJvdHRvbSA9IHRoaXMubWFyZ2luQm90dG9tO1xyXG5cdFx0XHRyZXF1ZXN0UGRmLm1hcmdpbkxlZnQgPSB0aGlzLm1hcmdpbkxlZnQ7XHJcblx0XHRcdHJlcXVlc3RQZGYub3JpZW50YXRpb24gPSB0aGlzLm9yaWVudGF0aW9uO1xyXG5cdFx0XHRyZXF1ZXN0UGRmLnNpemUgPSB0aGlzLnNpemU7XHJcblx0XHRcdHJlcXVlc3RQZGYuZm9udCA9IHRoaXMuZm9udDtcclxuXHRcdFx0cmVxdWVzdFBkZi5yZXBlYXRIZWFkZXIgPSB0aGlzLnJlcGVhdEhlYWRlcjtcclxuXHRcdFx0cmVxdWVzdFBkZi5yZXBlYXRGb290ZXIgPSB0aGlzLnJlcGVhdEZvb3RlcjtcclxuXHRcdFx0cmVxdWVzdFBkZi5zaG93UGFnZXIgPSB0aGlzLnNob3dQYWdlcjtcclxuXHRcdFx0cmVxdWVzdFBkZi5oZWFkZXJIZWlnaHQgPSB0aGlzLmhlYWRlckhlaWdodDtcclxuXHRcdFx0cmVxdWVzdFBkZi5mb290ZXJIZWlnaHQgPSB0aGlzLmZvb3RlckhlaWdodDtcclxuXHJcblx0XHRcdHRoaXMuY29tbW9uU2VydmljZS5nZXRCYXNlNjRQZGYocmVxdWVzdFBkZikuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdChyZXN1bHQpID0+IHtcclxuXHRcdFx0XHRcdHRoaXMuc2hvd0Jhc2U2NFBkZihyZXN1bHQpO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0KGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnRXJyb3IgdHJ5aW5nIHRvIHJlbmRlciBQREYnLCBlcnJvcik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0c2hvd0Jhc2U2NFBkZihyZXN1bHQpIHtcclxuXHRcdHRoaXMuYmFzZTY0ID0gcmVzdWx0LmJhc2U2NDtcclxuXHRcdHZhciBkYXRhID0gYXRvYih0aGlzLmJhc2U2NCk7XHJcblx0XHRQREZKUy53b3JrZXJTcmMgPSAnaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9wZGZqcy1kaXN0QDQuNi44Mi9idWlsZC9wZGYud29ya2VyLm1pbi5tanMnO1xyXG5cdFx0aWYgKFBERkpTLkdsb2JhbFdvcmtlck9wdGlvbnMpXHJcblx0XHRcdFBERkpTLkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjID1cclxuXHRcdFx0XHQnaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9wZGZqcy1kaXN0QDQuNi44Mi9idWlsZC9wZGYud29ya2VyLm1pbi5tanMnO1xyXG5cdFx0Ly8gY3JlYXRlIGluc3RhbmNlIG9mIFBkZkRvY3VtZW50IHdpdGggdGhlIGlkIG9mIGNhbnZhc1xyXG5cdFx0Ly8gY3JlYXRlIGluc3RhbmNlIG9mIFBkZkRvY3VtZW50IHdpdGggdGhlIGlkIG9mIGNhbnZhc1xyXG5cdFx0dGhpcy5wZGZEb2N1bWVudCA9IG5ldyBQZGZEb2N1bWVudCh0aGlzLmlkX2NhbnZhcyk7XHJcblxyXG5cdFx0Ly8gYXNzaWduIHZhcmlhYmxlcyBvdXQgb2Ygc2NvcGVcclxuXHRcdGxldCBwZGZkb2N1bWVudDogUGRmRG9jdW1lbnQgPSB0aGlzLnBkZkRvY3VtZW50O1xyXG5cdFx0UGFuem9vbSh0aGlzLnBkZkRvY3VtZW50LmNhbnZhcywge1xyXG5cdFx0XHRzbW9vdGhTY3JvbGw6IGZhbHNlXHJcblx0XHR9KTtcclxuXHRcdGxldCBzZWxmID0gdGhpcztcclxuXHRcdGxldCByZWFkeSA9IHRoaXMucmVhZHk7XHJcblxyXG5cdFx0Y29uc3QgcGRmTG9hZGluZ1Rhc2sgPSBQREZKUy5nZXREb2N1bWVudCh7IGRhdGE6IGRhdGEgfSk7XHJcblx0XHQvLyBKUCAtIGhlcmUgd2UgYXNrIGlmIHRoZSBwcm9taXNlIHN1cHBvcnRzIHRoZSBuZXcgdmVyc2lvbiBwZGZMb2FkaW5nVGFzay5wcm9taXNlXHJcblx0XHRjb25zdCBwcm9taXNlID0gcGRmTG9hZGluZ1Rhc2sucHJvbWlzZSA/IHBkZkxvYWRpbmdUYXNrLnByb21pc2UgOiBwZGZMb2FkaW5nVGFzaztcclxuXHRcdHByb21pc2UudGhlbihmdW5jdGlvbiAocGRmRG9jXykge1xyXG5cdFx0XHRwZGZkb2N1bWVudC5wZGZEb2MgPSBwZGZEb2NfO1xyXG5cdFx0XHRzZWxmLnJlbmRlclBhZ2UoMSk7XHJcblx0XHRcdHJlYWR5ID0gdHJ1ZTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0dGVzdEJhc2U2NFRvRmlsZTIoKSB7XHJcblx0XHQvLyBsZXQgZGF0YXVybCA9IHRoaXMuYmFzZTY0O1xyXG5cdFx0bGV0IGZpbGVOYW1lID0gJ1Rlc3RPUHJhZGEyLnBkZic7XHJcblx0XHQvLyB2YXIgYXJyID0gZGF0YXVybC5zcGxpdCgnLCcpLCBtaW1lID0gYXJyWzBdLm1hdGNoKC86KC4qPyk7LylbMV0sXHJcblx0XHR2YXIgYnN0ciA9IGF0b2IodGhpcy5iYXNlNjQpLFxyXG5cdFx0XHRuID0gYnN0ci5sZW5ndGgsXHJcblx0XHRcdHU4YXJyID0gbmV3IFVpbnQ4QXJyYXkobik7XHJcblx0XHR3aGlsZSAobi0tKSB7XHJcblx0XHRcdHU4YXJyW25dID0gYnN0ci5jaGFyQ29kZUF0KG4pO1xyXG5cdFx0fVxyXG5cdFx0bGV0IGZpbGVSZXR1cm4gPSBuZXcgRmlsZShbdThhcnJdLCBmaWxlTmFtZSwgeyB0eXBlOiAnYXBwbGljYXRpb24vcGRmJyB9KTtcclxuXHRcdHRoaXMudGVzdEVudmlvRG9jKGZpbGVSZXR1cm4sIGZpbGVOYW1lKTtcclxuXHR9XHJcblxyXG5cdHRlc3RFbnZpb0RvYyhmaWxlUmV0dXJuOiBhbnksIGZpbGVOYW1lOiBzdHJpbmcpIHtcclxuXHRcdGNvbnN0IGZpbGVQYXRoID0gdGhpcy5maWxlU2VydmljZS5nZXRQYXRoKFxyXG5cdFx0XHRFUHJvY2Vzby5DT05WT0NBVE9SSUEsXHJcblx0XHRcdDUwMCxcclxuXHRcdFx0MixcclxuXHRcdFx0MSxcclxuXHRcdFx0J2FhYWEnLFxyXG5cdFx0XHRmaWxlTmFtZVxyXG5cdFx0KTtcclxuXHRcdHRoaXMuZmlsZVNlcnZpY2UudXBsb2FkKGZpbGVQYXRoLCBmaWxlUmV0dXJuKS5zdWJzY3JpYmUoXHJcblx0XHRcdCh1cmwpID0+IHtcclxuXHRcdFx0XHRjb25zb2xlLmxvZygnRmluYWxpem8gZW52w61vIGRvY3VtZW50bycsIHVybCk7XHJcblx0XHRcdH0sXHJcblx0XHRcdChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdFcnJvciB0cnlpbmcgdG8gdXBsb2FkOiAnLCBlcnJvcik7XHJcblx0XHRcdH1cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgcmV0dXJucyB0aGUgaGVpZ2h0ICAqL1xyXG5cdGdldEhlaWdodCgpOiBzdHJpbmcge1xyXG5cdFx0aWYgKHRoaXMuaGVpZ2h0KSByZXR1cm4gdGhpcy5oZWlnaHQgKyAncHgnO1xyXG5cdFx0cmV0dXJuIFBkZlZpc3VhbGl6ZXJDb21wb25lbnQuREVGQVVMVF9IRUlHSFQgKyAncHgnO1xyXG5cdH1cclxuXHJcblx0LyoqIEdldCBwYWdlIGluZm8gZnJvbSBkb2N1bWVudCwgcmVzaXplIGNhbnZhcyBhY2NvcmRpbmdseSwgYW5kIHJlbmRlciBwYWdlLiAqL1xyXG5cdHJlbmRlclBhZ2UobnVtKSB7XHJcblx0XHR0aGlzLnBkZkRvY3VtZW50LnBhZ2VSZW5kZXJpbmcgPSB0cnVlO1xyXG5cdFx0Ly8gYXNzaWduIHZhcmlhYmxlcyBvdXQgb2Ygc2NvcGVcclxuXHRcdGxldCBzZWxmUGRmRG9jdW1lbnQ6IFBkZkRvY3VtZW50ID0gdGhpcy5wZGZEb2N1bWVudDtcclxuXHRcdGxldCBzZWxmID0gdGhpcztcclxuXHRcdC8vIFVzaW5nIHByb21pc2UgdG8gZmV0Y2ggdGhlIHBhZ2VcclxuXHRcdHRoaXMucGRmRG9jdW1lbnQucGRmRG9jLmdldFBhZ2UobnVtKS50aGVuKGZ1bmN0aW9uIChwYWdlKSB7XHJcblx0XHRcdHZhciBzY2FsZSA9IHNlbGZQZGZEb2N1bWVudC5zY2FsZSA/IHNlbGZQZGZEb2N1bWVudC5zY2FsZSA6IDEuNTtcclxuXHRcdFx0dmFyIHZpZXdwb3J0ID0gcGFnZS5nZXRWaWV3cG9ydCh7IHNjYWxlOiBzY2FsZSB9KTtcclxuXHRcdFx0c2VsZlBkZkRvY3VtZW50LmNhbnZhcy5oZWlnaHQgPSB2aWV3cG9ydC5oZWlnaHQ7XHJcblx0XHRcdHNlbGZQZGZEb2N1bWVudC5jYW52YXMud2lkdGggPSB2aWV3cG9ydC53aWR0aDtcclxuXHJcblx0XHRcdC8vIFJlbmRlciBQREYgcGFnZSBpbnRvIGNhbnZhcyBjb250ZXh0XHJcblx0XHRcdHZhciByZW5kZXJDb250ZXh0ID0ge1xyXG5cdFx0XHRcdGNhbnZhc0NvbnRleHQ6IHNlbGZQZGZEb2N1bWVudC5jYW52YXMuZ2V0Q29udGV4dCgnMmQnKSxcclxuXHRcdFx0XHR2aWV3cG9ydDogdmlld3BvcnRcclxuXHRcdFx0fTtcclxuXHRcdFx0dmFyIHJlbmRlclRhc2sgPSBwYWdlLnJlbmRlcihyZW5kZXJDb250ZXh0KTtcclxuXHJcblx0XHRcdC8vIFdhaXQgZm9yIHJlbmRlcmluZyB0byBmaW5pc2hcclxuXHRcdFx0cmVuZGVyVGFzay5wcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkge1xyXG5cdFx0XHRcdHNlbGZQZGZEb2N1bWVudC5wYWdlUmVuZGVyaW5nID0gZmFsc2U7XHJcblx0XHRcdFx0aWYgKHNlbGZQZGZEb2N1bWVudC5wYWdlTnVtUGVuZGluZyAhPT0gbnVsbCkge1xyXG5cdFx0XHRcdFx0Ly8gTmV3IHBhZ2UgcmVuZGVyaW5nIGlzIHBlbmRpbmdcclxuXHRcdFx0XHRcdHNlbGYucmVuZGVyUGFnZShzZWxmUGRmRG9jdW1lbnQucGFnZU51bVBlbmRpbmcpO1xyXG5cdFx0XHRcdFx0c2VsZlBkZkRvY3VtZW50LnBhZ2VOdW1QZW5kaW5nID0gbnVsbDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJZiBhbm90aGVyIHBhZ2UgcmVuZGVyaW5nIGluIHByb2dyZXNzLCB3YWl0cyB1bnRpbCB0aGUgcmVuZGVyaW5nIGlzXHJcblx0ICogZmluaXNlZC4gT3RoZXJ3aXNlLCBleGVjdXRlcyByZW5kZXJpbmcgaW1tZWRpYXRlbHkuXHJcblx0ICovXHJcblx0cXVldWVSZW5kZXJQYWdlKG51bSkge1xyXG5cdFx0aWYgKHRoaXMucGRmRG9jdW1lbnQucGFnZVJlbmRlcmluZykge1xyXG5cdFx0XHR0aGlzLnBkZkRvY3VtZW50LnBhZ2VOdW1QZW5kaW5nID0gbnVtO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5yZW5kZXJQYWdlKG51bSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEaXNwbGF5cyBwcmV2aW91cyBwYWdlLlxyXG5cdCAqL1xyXG5cdG9uUHJldlBhZ2UoKSB7XHJcblx0XHRpZiAoIXRoaXMucGRmRG9jdW1lbnQgfHwgdGhpcy5wZGZEb2N1bWVudC5wYWdlTnVtIDw9IDEpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5wZGZEb2N1bWVudC5wYWdlTnVtLS07XHJcblx0XHR0aGlzLnF1ZXVlUmVuZGVyUGFnZSh0aGlzLnBkZkRvY3VtZW50LnBhZ2VOdW0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRGlzcGxheXMgbmV4dCBwYWdlLlxyXG5cdCAqL1xyXG5cdG9uTmV4dFBhZ2UoKSB7XHJcblx0XHRpZiAoIXRoaXMucGRmRG9jdW1lbnQgfHwgdGhpcy5wZGZEb2N1bWVudC5wYWdlTnVtID49IHRoaXMucGRmRG9jdW1lbnQucGRmRG9jLm51bVBhZ2VzKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHRoaXMucGRmRG9jdW1lbnQucGFnZU51bSsrO1xyXG5cdFx0dGhpcy5xdWV1ZVJlbmRlclBhZ2UodGhpcy5wZGZEb2N1bWVudC5wYWdlTnVtKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERpc3BsYXlzIFpvb20gSW4uXHJcblx0ICovXHJcblx0b25ab29tSW4oKSB7XHJcblx0XHRpZiAoIXRoaXMucGRmRG9jdW1lbnQgfHwgdGhpcy5wZGZEb2N1bWVudC5zY2FsZSA+PSAzKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHRoaXMucGRmRG9jdW1lbnQuc2NhbGUgPSB0aGlzLnBkZkRvY3VtZW50LnNjYWxlICsgMC4yO1xyXG5cdFx0dGhpcy5xdWV1ZVJlbmRlclBhZ2UodGhpcy5wZGZEb2N1bWVudC5wYWdlTnVtKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERpc3BsYXlzIFpvb20gT3V0LlxyXG5cdCAqL1xyXG5cdG9uWm9vbU91dCgpIHtcclxuXHRcdGlmICghdGhpcy5wZGZEb2N1bWVudCB8fCB0aGlzLnBkZkRvY3VtZW50LnNjYWxlIDw9IDAuNCkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLnBkZkRvY3VtZW50LnNjYWxlID0gdGhpcy5wZGZEb2N1bWVudC5zY2FsZSAtIDAuMjtcclxuXHRcdHRoaXMucXVldWVSZW5kZXJQYWdlKHRoaXMucGRmRG9jdW1lbnQucGFnZU51bSk7XHJcblx0fVxyXG5cclxuXHRuZ09uSW5pdCgpIHt9XHJcblxyXG5cdC8qKiBJdCBzZW5kcyB0aGUgZG9jdW1lbnQgYnkgZW1haWwgKi9cclxuXHRzZW5kRW1haWwoKSB7XHJcblx0XHRpZiAodGhpcy5zZW5kRW1haWxEaXNhYmxlKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGlmICh0aGlzLmVtYWlsICYmIFV0aWxTdHJpbmcudmFsaWRhdGVFbWFpbCh0aGlzLmVtYWlsKSkge1xyXG5cdFx0XHR0aGlzLm9uU2VuZEVtYWlsLmVtaXQoe1xyXG5cdFx0XHRcdHRvOiB0aGlzLmVtYWlsLFxyXG5cdFx0XHRcdGJhc2U2NDogdGhpcy5iYXNlNjRcclxuXHRcdFx0fSk7XHJcblx0XHRcdHRoaXMuZW1haWwgPSAnJztcclxuXHRcdFx0Ly8gYmxvY2sgdGhlIHNlbmQgZW1haWwgYm90dG9tIGZvciAzIHNlY29uZHNcclxuXHRcdFx0dGhpcy5zZW5kRW1haWxEaXNhYmxlID0gdHJ1ZTtcclxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5zZW5kRW1haWxEaXNhYmxlID0gZmFsc2U7XHJcblx0XHRcdH0sIDMwMDApO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLnRhb3N0clNlcnZpY2Uud2FybmluZygnQ29ycmVvIGVsZWN0csOzbmljbyBlcyBpbmNvcnJlY3RvJyk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgZmlyZXMgdGhlIGV2ZW50IGRvd25sb2FkICovXHJcblx0ZG93bmxvYWQoKSB7XHJcblx0XHRpZiAodGhpcy5kb3dubG9hZERpc2FibGUpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgY29udGVudFR5cGUgPSAnYXBwbGljYXRpb24vcGRmJztcclxuXHRcdGNvbnN0IGI2NERhdGEgPSB0aGlzLmJhc2U2NDtcclxuXHRcdGNvbnN0IGJsb2IgPSB0aGlzLmI2NHRvQmxvYihiNjREYXRhLCBjb250ZW50VHlwZSk7XHJcblx0XHRjb25zdCBibG9iVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuXHRcdHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG5cdFx0ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcclxuXHRcdGEuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuXHRcdGEuaHJlZiA9IGJsb2JVcmw7XHJcblx0XHRhLmRvd25sb2FkID0gdGhpcy5maWxlbmFtZTtcclxuXHRcdGEuY2xpY2soKTtcclxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHR3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTChibG9iVXJsKTtcclxuXHRcdFx0ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKTtcclxuXHRcdFx0dGhpcy5vbkRvd25sb2FkLmVtaXQoe1xyXG5cdFx0XHRcdGJhc2U2NDogdGhpcy5iYXNlNjRcclxuXHRcdFx0fSk7XHJcblx0XHR9LCAyMDApO1xyXG5cdFx0Ly8gYmxvY2sgdGhlIGRvd25sb2FkIGJvdHRvbSBmb3IgMyBzZWNvbmRzXHJcblx0XHR0aGlzLmRvd25sb2FkRGlzYWJsZSA9IHRydWU7XHJcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0dGhpcy5kb3dubG9hZERpc2FibGUgPSBmYWxzZTtcclxuXHRcdH0sIDMwMDApO1xyXG5cdH1cclxuXHJcblx0LyoqIEl0IGZpcmVzIHdoZW4gdGhlIGh0bWwgaXMgY2hhbmdlZCAqL1xyXG5cdGNoYW5nZSgpIHtcclxuXHRcdHRoaXMuZ2VuZXJhdGVQREYoKTtcclxuXHRcdHRoaXMub25DaGFuZ2UuZW1pdCh0aGlzLmh0bWwpO1xyXG5cdH1cclxuXHJcblx0LyoqIGl0IGFsbG93cyB0byBlZGl0ICovXHJcblx0dG9nZ2xlRWRpdCgpIHtcclxuXHRcdHRoaXMuZWRpdCA9ICF0aGlzLmVkaXQ7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBpdCByZXR1cm5zIGlmIGlzIFBkZkRvY3VtZW50XHJcblx0ICovXHJcblx0aXNQZGZEb2N1bWVudCgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLnBkZkRvY3VtZW50ICE9PSB1bmRlZmluZWQ7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBpdCByZXR1cm5zIGlmIGlzIFRpdGxlXHJcblx0ICovXHJcblx0aXNUaXRsZSgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLnRpdGxlICE9PSB1bmRlZmluZWQ7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBpdCByZXR1cm5zIGlmIGlzIGlzUGRmRG9jXHJcblx0ICovXHJcblx0aXNQZGZEb2MoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gKFxyXG5cdFx0XHR0aGlzLnBkZkRvY3VtZW50ICYmXHJcblx0XHRcdHRoaXMucGRmRG9jdW1lbnQucGRmRG9jICE9IHVuZGVmaW5lZCAmJlxyXG5cdFx0XHR0aGlzLnBkZkRvY3VtZW50LnBkZkRvYyAhPSBudWxsXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogaXQgcmV0dXJucyBpZiBpcyBmaWxlbmFtZVxyXG5cdCAqL1xyXG5cdGlzRmlsZW5hbWUoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5maWxlbmFtZSAhPT0gdW5kZWZpbmVkO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogaXQgcmV0dXJucyBpZiBpcyBlbmFibGVFZGl0XHJcblx0ICovXHJcblx0aXNFbmFibGVFZGl0KCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuZW5hYmxlRWRpdCA9PSB0cnVlO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogaXQgcmV0dXJucyBpZiBpcyBlZGl0XHJcblx0ICovXHJcblx0aXNFZGl0KCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuZWRpdCA9PSB0cnVlO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogaXQgcmV0dXJucyBpZiBpcyBlbmFibGVFbWFpbFxyXG5cdCAqL1xyXG5cdGlzRW5hYmxlRW1haWwoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5lbmFibGVFbWFpbCA9PSB0cnVlO1xyXG5cdH1cclxuXHJcblx0YjY0dG9CbG9iKGI2NERhdGEsIGNvbnRlbnRUeXBlID0gJycsIHNsaWNlU2l6ZSA9IDUxMikge1xyXG5cdFx0Y29uc3QgYnl0ZUFycmF5cyA9IFtdO1xyXG5cdFx0Y29uc3QgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGI2NERhdGEpO1xyXG5cdFx0Zm9yIChsZXQgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgYnl0ZUNoYXJhY3RlcnMubGVuZ3RoOyBvZmZzZXQgKz0gc2xpY2VTaXplKSB7XHJcblx0XHRcdGNvbnN0IHNsaWNlID0gYnl0ZUNoYXJhY3RlcnMuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBzbGljZVNpemUpO1xyXG5cdFx0XHRjb25zdCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShzbGljZS5sZW5ndGgpO1xyXG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHNsaWNlLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0Ynl0ZU51bWJlcnNbaV0gPSBzbGljZS5jaGFyQ29kZUF0KGkpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVOdW1iZXJzKTtcclxuXHRcdFx0Ynl0ZUFycmF5cy5wdXNoKGJ5dGVBcnJheSk7XHJcblx0XHR9XHJcblx0XHRjb25zdCBibG9iID0gbmV3IEJsb2IoYnl0ZUFycmF5cywgeyB0eXBlOiBjb250ZW50VHlwZSB9KTtcclxuXHRcdHJldHVybiBibG9iO1xyXG5cdH1cclxufVxyXG4iLCI8aDMgY2xhc3M9XCJwZGYtdmlzdWFsaXplci10aXRsZVwiPnt7IHRpdGxlIH19PC9oMz5cclxuPGRpdiBjbGFzcz1cInBkZi12aXN1YWxpemVyLWNvbnRhaW5lclwiPlxyXG5cdDxkaXYgY2xhc3M9XCJwZGYtdmlzdWFsaXplci1jb250cm9sc1wiICpuZ0lmPVwiaXNQZGZEb2N1bWVudCgpID09PSB0cnVlXCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwicm93XCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJidG4tdG9vbGJhclwiIHJvbGU9XCJ0b29sYmFyXCIgYXJpYS1sYWJlbD1cIlRvb2xiYXIgd2l0aCBidXR0b24gZ3JvdXBzXCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGJ0bi1ncm91cC1zbSBtci0yXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIlNlY29uZCBncm91cFwiPlxyXG5cdFx0XHRcdFx0XHQ8IS0tIHpvb20gaW4tLT5cclxuXHRcdFx0XHRcdFx0PGFcclxuXHRcdFx0XHRcdFx0XHRocmVmPVwiSmF2YXNjcmlwdDo7XCJcclxuXHRcdFx0XHRcdFx0XHR0aXRsZT1cIkFjZXJjYXJcIlxyXG5cdFx0XHRcdFx0XHRcdGRhdGEtdG9nZ2xlPVwidG9vbHRpcFwiXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS1wbGFjZW1lbnQ9XCJ0b3BcIlxyXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiXHJcblx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cIm9uWm9vbUluKClcIlxyXG5cdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJmYSBmYS1zZWFyY2gtcGx1c1wiPjwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0PC9hPlxyXG5cclxuXHRcdFx0XHRcdFx0PCEtLSB6b29tIG91dC0tPlxyXG5cdFx0XHRcdFx0XHQ8YVxyXG5cdFx0XHRcdFx0XHRcdGhyZWY9XCJKYXZhc2NyaXB0OjtcIlxyXG5cdFx0XHRcdFx0XHRcdHRpdGxlPVwiQWxlamFyXCJcclxuXHRcdFx0XHRcdFx0XHRkYXRhLXRvZ2dsZT1cInRvb2x0aXBcIlxyXG5cdFx0XHRcdFx0XHRcdGRhdGEtcGxhY2VtZW50PVwidG9wXCJcclxuXHRcdFx0XHRcdFx0XHRjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnlcIlxyXG5cdFx0XHRcdFx0XHRcdChjbGljayk9XCJvblpvb21PdXQoKVwiXHJcblx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZhIGZhLXNlYXJjaC1taW51c1wiPjwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImJ0bi1ncm91cCBidG4tZ3JvdXAtc20gbXItMlwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJUaGlyZCBncm91cFwiPlxyXG5cdFx0XHRcdFx0XHQ8IS0tcHJldiAtLT5cclxuXHRcdFx0XHRcdFx0PGFcclxuXHRcdFx0XHRcdFx0XHRocmVmPVwiSmF2YXNjcmlwdDo7XCJcclxuXHRcdFx0XHRcdFx0XHRjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnlcIlxyXG5cdFx0XHRcdFx0XHRcdChjbGljayk9XCJvblByZXZQYWdlKClcIlxyXG5cdFx0XHRcdFx0XHRcdHRpdGxlPVwiQW50ZXJpb3JcIlxyXG5cdFx0XHRcdFx0XHRcdGRhdGEtdG9nZ2xlPVwidG9vbHRpcFwiXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS1wbGFjZW1lbnQ9XCJ0b3BcIlxyXG5cdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJmYSBmYS1jaGV2cm9uLWxlZnRcIj48L3NwYW4+XHJcblx0XHRcdFx0XHRcdDwvYT5cclxuXHJcblx0XHRcdFx0XHRcdDwhLS0gcGFnaW5hdGlvbi0tPlxyXG5cdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnlcIiAqbmdJZj1cImlzUGRmRG9jKCkgPT09IHRydWVcIj5cclxuXHRcdFx0XHRcdFx0XHRQw6FnaW5hOiB7eyBwZGZEb2N1bWVudC5wYWdlTnVtIH19IC8ge3sgcGRmRG9jdW1lbnQucGRmRG9jLm51bVBhZ2VzIH19XHJcblx0XHRcdFx0XHRcdDwvc3Bhbj5cclxuXHJcblx0XHRcdFx0XHRcdDwhLS1uZXh0IC0tPlxyXG5cdFx0XHRcdFx0XHQ8YVxyXG5cdFx0XHRcdFx0XHRcdGhyZWY9XCJKYXZhc2NyaXB0OjtcIlxyXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiXHJcblx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cIm9uTmV4dFBhZ2UoKVwiXHJcblx0XHRcdFx0XHRcdFx0dGl0bGU9XCJTaWd1aWVudGVcIlxyXG5cdFx0XHRcdFx0XHRcdGRhdGEtdG9nZ2xlPVwidG9vbHRpcFwiXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS1wbGFjZW1lbnQ9XCJ0b3BcIlxyXG5cdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJmYSBmYS1jaGV2cm9uLXJpZ2h0XCI+PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGJ0bi1ncm91cC1zbVwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJGaXJzdCBncm91cFwiPlxyXG5cdFx0XHRcdFx0XHQ8IS0tIGRvd25sb2FkLS0+XHJcblx0XHRcdFx0XHRcdDxhXHJcblx0XHRcdFx0XHRcdFx0W2Rvd25sb2FkXT1cImZpbGVuYW1lXCJcclxuXHRcdFx0XHRcdFx0XHQqbmdJZj1cImlzRmlsZW5hbWUoKSA9PT0gdHJ1ZVwiXHJcblx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cImRvd25sb2FkKClcIlxyXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiXHJcblx0XHRcdFx0XHRcdFx0dGl0bGU9XCJEZXNjYXJnYXJcIlxyXG5cdFx0XHRcdFx0XHRcdGRhdGEtdG9nZ2xlPVwidG9vbHRpcFwiXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS1wbGFjZW1lbnQ9XCJ0b3BcIlxyXG5cdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0PCEtLSBbaHJlZl09XCJcclxuXHRcdFx0XHRcdFx0XHRzYW5pdGl6YXRpb24uYnlwYXNzU2VjdXJpdHlUcnVzdFVybChcclxuXHRcdFx0XHRcdFx0XHRcdCdkYXRhOmFwcGxpY2F0aW9uL3BkZjtiYXNlNjQsJyArIHRoaXMuYmFzZTY0XHJcblx0XHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0XHRcIiAtLT5cclxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZhIGZhLWRvd25sb2FkXCI+PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L2E+XHJcblxyXG5cdFx0XHRcdFx0XHQ8IS0tIHRvZ2dsZSBlZGl0LS1cclxuICAgICAgICAgICAgPGEgaHJlZj1cIkphdmFzY3JpcHQ6O1wiICpuZ0lmPVwiaXNFbmFibGVFZGl0KCkgPT09IHRydWVcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnlcIiB0aXRsZT1cIkVkaXRhclwiXHJcbiAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJ0b29sdGlwXCIgZGF0YS1wbGFjZW1lbnQ9XCJ0b3BcIiAoY2xpY2spPVwidG9nZ2xlRWRpdCgpXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYSBmYS1lZGl0XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgICA8IS0tIGdlbmVyYXRlIHBkZi0tPlxyXG5cdFx0XHRcdFx0XHQ8YVxyXG5cdFx0XHRcdFx0XHRcdGhyZWY9XCJKYXZhc2NyaXB0OjtcIlxyXG5cdFx0XHRcdFx0XHRcdCpuZ0lmPVwiaXNFZGl0KCkgPT09IHRydWVcIlxyXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiXHJcblx0XHRcdFx0XHRcdFx0dGl0bGU9XCJHZW5lcmFyXCJcclxuXHRcdFx0XHRcdFx0XHRkYXRhLXRvZ2dsZT1cInRvb2x0aXBcIlxyXG5cdFx0XHRcdFx0XHRcdGRhdGEtcGxhY2VtZW50PVwidG9wXCJcclxuXHRcdFx0XHRcdFx0XHQoY2xpY2spPVwiY2hhbmdlKClcIlxyXG5cdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJmYSBmYS1wbGF5XCI+PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY29sLW1kLTUgcHVsbC1yaWdodFwiICpuZ0lmPVwiaXNFbmFibGVFbWFpbCgpID09PSB0cnVlXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLXNtXCI+XHJcblx0XHRcdFx0XHQ8bGFiZWwgZm9yPVwicGRmLXZpc3VhbGl6ZXItZW1haWxcIiBjbGFzcz1cInBkZlwiPlxyXG5cdFx0XHRcdFx0XHRFbnZpYXIgbWVuc2FqZSBhXHJcblx0XHRcdFx0XHQ8L2xhYmVsPlxyXG5cdFx0XHRcdFx0PGlucHV0XHJcblx0XHRcdFx0XHRcdHR5cGU9XCJlbWFpbFwiXHJcblx0XHRcdFx0XHRcdGlkPVwicGRmLXZpc3VhbGl6ZXItZW1haWxcIlxyXG5cdFx0XHRcdFx0XHRuYW1lPVwicGRmLXZpc3VhbGl6ZXItZW1haWxcIlxyXG5cdFx0XHRcdFx0XHRyZXF1aXJlZD1cInRydWVcIlxyXG5cdFx0XHRcdFx0XHRjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcblx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiQ29ycmVvIGVsZWN0csOzbmljb1wiXHJcblx0XHRcdFx0XHRcdFsobmdNb2RlbCldPVwiZW1haWxcIlxyXG5cdFx0XHRcdFx0Lz5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvblxyXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiXHJcblx0XHRcdFx0XHRcdFx0dHlwZT1cImJ1dHRvblwiXHJcblx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cInNlbmRFbWFpbCgpXCJcclxuXHRcdFx0XHRcdFx0XHR0aXRsZT1cIkVudmlhclwiXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS10b2dnbGU9XCJ0b29sdGlwXCJcclxuXHRcdFx0XHRcdFx0XHRkYXRhLXBsYWNlbWVudD1cInRvcFwiXHJcblx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHQ8aW1nXHJcblx0XHRcdFx0XHRcdFx0XHRzcmM9XCJodHRwOi8vZ2lybzM2MC5jby96b25hMzYwL2NvbGZ1dHVyby9QTElDL2ltZy9leHBvcnQuc3ZnXCJcclxuXHRcdFx0XHRcdFx0XHRcdGFsdD1cIlwiXHJcblx0XHRcdFx0XHRcdFx0XHR3aWR0aD1cIjE2XCJcclxuXHRcdFx0XHRcdFx0XHQvPlxyXG5cdFx0XHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG5cclxuXHQ8ZGl2IGNsYXNzPVwicGRmLXZpc3VhbGl6ZXItZGFzaGJvYXJkXCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwicm93XCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiICpuZ0lmPVwiaXNFZGl0KCkgPT09IHRydWVcIj5cclxuXHRcdFx0XHQ8dGV4dGFyZWFcclxuXHRcdFx0XHRcdGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuXHRcdFx0XHRcdFtzdHlsZS5oZWlnaHRdPVwiZ2V0SGVpZ2h0KClcIlxyXG5cdFx0XHRcdFx0c3R5bGU9XCJyZXNpemU6dmVydGljYWw7XCJcclxuXHRcdFx0XHRcdFsobmdNb2RlbCldPVwiaHRtbFwiXHJcblx0XHRcdFx0PjwvdGV4dGFyZWE+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IFtuZ0NsYXNzXT1cInsgJ2NvbC1tZC03JzogZWRpdCA9PT0gdHJ1ZSwgJ2NvbC1tZC0xMic6ICFlZGl0IH1cIj5cclxuXHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRpZD1cInBkZi1zY3JvbGxhYmxlXCJcclxuXHRcdFx0XHRcdGNsYXNzPVwicGRmLXZpc3VhbGl6ZXItc2Nyb2xsYWJsZVwiXHJcblx0XHRcdFx0XHRbc3R5bGUuaGVpZ2h0XT1cImdldEhlaWdodCgpXCJcclxuXHRcdFx0XHQ+XHJcblx0XHRcdFx0XHQ8Y2FudmFzIGlkPVwicGRmLWNhbnZhc1wiIGNsYXNzPVwicGRmLXZpc3VhbGl6ZXItY2FudmFzXCI+IDwvY2FudmFzPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG48L2Rpdj5cclxuIl19