@dignite-ng/expand.cms 3.1.5 → 3.1.8

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.
@@ -9,8 +9,8 @@ import { FormBuilder } from '@angular/forms';
9
9
  import { ActivatedRoute } from '@angular/router';
10
10
  // import { EntryAdminService } from '../../../proxy/admin/entries';
11
11
  import { ECmsComponent } from '../../../enums';
12
- import { DigniteValidatorsService, LocationBackService, UpdateListService } from '@dignite-ng/expand.core';
13
- import { CreateOrUpdateEntryInputBase, EntriesToFormLabelMap } from './create-or-update-entry-input-base';
12
+ import { DigniteValidatorsService, LocationBackService, UpdateListService, } from '@dignite-ng/expand.core';
13
+ import { CreateOrUpdateEntryInputBase, EntriesToFormLabelMap, } from './create-or-update-entry-input-base';
14
14
  // import { ValidatorsService } from '@dignite-ng/expand.core';
15
15
  import { finalize } from 'rxjs';
16
16
  import { EntryAdminService } from '../../../proxy/dignite/cms/admin/entries';
@@ -93,7 +93,7 @@ export class EditComponent {
93
93
  // //检查form是否为FormGroup还是formArray,如果是FormGroup则继续遍历,如果是FormArray则遍历FormArray
94
94
  // if (form instanceof FormGroup) {
95
95
  // } else if (form instanceof FormArray) {
96
- // }
96
+ // }
97
97
  // }
98
98
  // traverseForm(formEntity);
99
99
  // return validationStatus
@@ -197,6 +197,7 @@ export class EditComponent {
197
197
  // }
198
198
  // this.formValidation = this.getFormValidationStatus(this.formEntity);
199
199
  // return this.isSubmit=false;
200
+ console.log('保存', input);
200
201
  this.formValidation = true;
201
202
  if (!this.formEntity.valid) {
202
203
  for (const item of this.showEntryTypeInfo.fieldTabs) {
@@ -222,7 +223,7 @@ export class EditComponent {
222
223
  this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));
223
224
  this._LocationBackService.backTo({
224
225
  url: `/cms/admin/entries`,
225
- replenish: '/edit'
226
+ replenish: '/edit',
226
227
  });
227
228
  this._updateListService.updateList();
228
229
  });
@@ -260,4 +261,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
260
261
  type: ViewChild,
261
262
  args: ['submitclick', { static: true }]
262
263
  }] } });
263
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2VudHJpZXMvZWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2VudHJpZXMvZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsNERBQTREO0FBRTVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFHLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBMEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsb0VBQW9FO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRywrREFBK0Q7QUFDL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSww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WUFDcEYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztnQkFDL0IsR0FBRyxFQUFFLG9CQUFvQjtnQkFDekIsU0FBUyxFQUFFLE9BQU87YUFDbkIsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUdELFVBQVU7SUFDVixXQUFXLENBQUMsSUFBSTtRQUNkLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELFdBQVc7SUFDWCxNQUFNO1FBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDOzhHQTNQVSxhQUFhO2tHQUFiLGFBQWEsbUNBUGI7WUFDVDtnQkFDRSxPQUFPLEVBQUUscUJBQXFCO2dCQUM5QixRQUFRLEVBQUUsYUFBYSxDQUFDLFlBQVk7YUFDckM7U0FDRixvSkM1QkgsaXFCQVVBOzsyRkRvQmEsYUFBYTtrQkFYekIsU0FBUzsrQkFDRSxVQUFVLGFBR1Q7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxZQUFZO3lCQUNyQztxQkFDRjs4QkFjMkMsV0FBVztzQkFBdEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L3VzZS1saWZlY3ljbGUtaW50ZXJmYWNlICovXG5cbmltcG9ydCB7IEVYVEVOU0lPTlNfSURFTlRJRklFUiB9IGZyb20gJ0BhYnAvbmcuY29tcG9uZW50cy9leHRlbnNpYmxlJztcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XG5pbXBvcnQgeyAgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIGluamVjdCwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbi8vIGltcG9ydCB7IEVudHJ5QWRtaW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJveHkvYWRtaW4vZW50cmllcyc7XG5pbXBvcnQgeyBFQ21zQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZW51bXMnO1xuaW1wb3J0IHsgRGlnbml0ZVZhbGlkYXRvcnNTZXJ2aWNlLCBMb2NhdGlvbkJhY2tTZXJ2aWNlLCBVcGRhdGVMaXN0U2VydmljZSB9IGZyb20gJ0BkaWduaXRlLW5nL2V4cGFuZC5jb3JlJztcbmltcG9ydCB7IENyZWF0ZU9yVXBkYXRlRW50cnlJbnB1dEJhc2UsIEVudHJpZXNUb0Zvcm1MYWJlbE1hcCB9IGZyb20gJy4vY3JlYXRlLW9yLXVwZGF0ZS1lbnRyeS1pbnB1dC1iYXNlJztcbi8vIGltcG9ydCB7IFZhbGlkYXRvcnNTZXJ2aWNlIH0gZnJvbSAnQGRpZ25pdGUtbmcvZXhwYW5kLmNvcmUnO1xuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVudHJ5QWRtaW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJveHkvZGlnbml0ZS9jbXMvYWRtaW4vZW50cmllcyc7XG4vLyBpbXBvcnQgeyBDbGFzc2ljRWRpdG9yLCBFc3NlbnRpYWxzLCBQYXJhZ3JhcGgsIEJvbGQsIEl0YWxpYyB9IGZyb20gJ2NrZWRpdG9yNSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Ntcy1lZGl0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lZGl0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVYVEVOU0lPTlNfSURFTlRJRklFUixcbiAgICAgIHVzZVZhbHVlOiBFQ21zQ29tcG9uZW50LkVudHJpZXNfRWRpdCxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFZGl0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XG4gIHByaXZhdGUgX3VwZGF0ZUxpc3RTZXJ2aWNlID0gaW5qZWN0KFVwZGF0ZUxpc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdGVyID0gaW5qZWN0KFRvYXN0ZXJTZXJ2aWNlKTtcbiAgcHVibGljIF9sb2NhdGlvbiA9IGluamVjdChMb2NhdGlvbik7XG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIF9FbnRyeUFkbWluU2VydmljZSA9IGluamVjdChFbnRyeUFkbWluU2VydmljZSk7XG4gIHByaXZhdGUgX0xvY2FsaXphdGlvblNlcnZpY2UgPSBpbmplY3QoTG9jYWxpemF0aW9uU2VydmljZSk7XG4gIC8vIHByaXZhdGUgX1ZhbGlkYXRvcnNTZXJ2aWNlID0gaW5qZWN0KFZhbGlkYXRvcnNTZXJ2aWNlKTtcbiAgLy8gcHJpdmF0ZSBkYXRlUGlwZSA9IGluamVjdChEYXRlUGlwZSk7XG5cbiAgLyoq6I635Y+W5o+Q5Lqk5oyJ6ZKu5pu/6Lqr77yM55So5LqO55yf5a6e6Kem5Y+R6KGo5Y2V5o+Q5LqkICovXG4gIEBWaWV3Q2hpbGQoJ3N1Ym1pdGNsaWNrJywgeyBzdGF0aWM6IHRydWUgfSkgc3VibWl0Y2xpY2s6IEVsZW1lbnRSZWY7XG5cbiAgLyoq6KGo5Y2V6aqM6K+B54q25oCBXG4gICAqIHtcbiAgICogIHRpdGxlOnRydWUsXG4gICAqIH1cbiAgICovXG4gIGZvcm1WYWxpZGF0aW9uOiBhbnkgPSAnJztcbiAgLyoq6KGo5Y2V5a6e5L2TICovXG4gIGZvcm1FbnRpdHk6IEZvcm1Hcm91cCB8IHVuZGVmaW5lZDtcbiAgLyoq6K+t6KiAICovXG4gIGN1bHR1cmVOYW1lOiBzdHJpbmcgfCBhbnkgPSAnJztcbiAgLyoq5p2h55uu57G75Z6LaWQgKi9cbiAgZW50cnlUeXBlSWQ6IHN0cmluZyB8IGFueSA9ICcnO1xuICAvKirniYjlnZdpZCAqL1xuICBzZWN0aW9uSWQ6IHN0cmluZyB8IGFueSA9ICcnO1xuICAvKirmnaHnm67niYjmnKxpZCAqL1xuICBlbnRyeVZlcnNpb25JZDogc3RyaW5nIHwgYW55ID0gJyc7XG4gIC8qKuadoeebrmlkICovXG4gIGVudHJpZUlkOiBzdHJpbmcgfCBhbnkgPSAnJztcbiAgLyoq5p2h55uu5L+h5oGvICovXG4gIGVudHJ5SW5mbzogYW55ID0gJyc7XG5cbiAgLyoq5piv5ZCm6I2J56i/5o6n5Lu2Ki9cbiAgZ2V0IGRyYWZ0SW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUVudGl0eT8uZ2V0KCdkcmFmdCcpIGFzIEZvcm1Db250cm9sO1xuICB9XG4gIC8qKuivreiogOaOp+S7tiAqL1xuICBnZXQgY3VsdHVyZUlucHV0KCk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtRW50aXR5Py5nZXQoJ2N1bHR1cmUnKSBhcyBGb3JtQ29udHJvbDtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zO1xuICAgIHRoaXMuZW50cmllSWQgPSBwYXJhbXMuZW50cmllSWQ7XG4gICAgdGhpcy5mb3JtRW50aXR5ID0gdGhpcy5mYi5ncm91cChuZXcgQ3JlYXRlT3JVcGRhdGVFbnRyeUlucHV0QmFzZSgpKTtcbiAgICBhd2FpdCB0aGlzLmdldEVudHJ5SW5mbygpO1xuICAgIHRoaXMuY3VsdHVyZUlucHV0LnBhdGNoVmFsdWUodGhpcy5jdWx0dXJlTmFtZSk7XG4gIH1cbiAgLyoq6I635Y+W5p2h55uu5L+h5oGvICovXG4gIGdldEVudHJ5SW5mbygpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdHMpID0+IHtcbiAgICAgIHRoaXMuX0VudHJ5QWRtaW5TZXJ2aWNlLmdldCh0aGlzLmVudHJpZUlkKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgdGhpcy5jdWx0dXJlTmFtZSA9IHJlcy5jdWx0dXJlO1xuICAgICAgICB0aGlzLmVudHJ5VHlwZUlkID0gcmVzLmVudHJ5VHlwZUlkO1xuICAgICAgICB0aGlzLnNlY3Rpb25JZCA9IHJlcy5zZWN0aW9uSWQ7XG4gICAgICAgIHRoaXMuZW50cnlJbmZvID0gcmVzO1xuICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKuaYvuekuuadoeebruexu+Wei+S/oeaBryAqL1xuICBzaG93RW50cnlUeXBlSW5mbzogYW55ID0gJyc7XG4gIC8qKuWPjemmiOWtkOe6p+mhtemdouS/oeaBryAqL1xuICBfZmVlZGJhY2tDaGlsZEluZm8oZXZlbnQpIHtcbiAgICB0aGlzLnNob3dFbnRyeVR5cGVJbmZvID0gZXZlbnQ/LnNob3dFbnRyeVR5cGUgfHwgJyc7XG4gIH1cbiAgLy8gLyoq5b2T6L+U5Zue57uT5p6c5Li6dHJ1ZeaXtuihqOekuuacqumAmui/h+mqjOivgSAqL1xuICBpc0NoZWNrRm9ybUNtcyhpbnB1dCwgbW9kdWxlKSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gaW5wdXQpIHtcbiAgICAgIGlmIChpbnB1dFtrZXldID09PSBmYWxzZSkge1xuICAgICAgICBsZXQgaW5mbyA9IGBgO1xuICAgICAgICAvL+ajgOafpWtleeS4reaYr+WQpuWQq+aciUV4dHJhUHJvcGVydGllcy5cbiAgICAgICAgaWYgKGtleS5pbmNsdWRlcygnZXh0cmFQcm9wZXJ0aWVzLicpKSB7XG4gICAgICAgICAgY29uc3QgYXJyID0ga2V5LnNwbGl0KCcuJyk7XG4gICAgICAgICAgY29uc3Qga2V5TmFtZSA9IGFyclsxXTtcbiAgICAgICAgICAvLyBpZiAoa2V5TmFtZS5pbmNsdWRlcygnWycpKSB7XG4gICAgICAgICAgLy8gICAvL+S9v+eUqOato+WImeaPkOWPlmtleU5hbWXkuK1bXeS4reeahOaVsOWtl+S4i+aghyzlubbkuJTovazljJbkuLrmlbDlrZfnsbvlnovvvIzlubbkuJTljrvmjolrZXlOYW1l5Lit55qEWypdXG4gICAgICAgICAgLy8gICBjb25zdCBrZXlOYW1lQXJyID0ga2V5TmFtZS5tYXRjaCgvXFxkKy9nKTtcbiAgICAgICAgICAvLyAgIGNvbnN0IGtleU5hbWVBcnJOdW0gPSBrZXlOYW1lQXJyLm1hcChpdGVtID0+IE51bWJlcihpdGVtKSk7XG4gICAgICAgICAgLy8gICBjb25zdCBrZXlOYW1lQXJyTnVtU3RyID0ga2V5TmFtZUFyck51bS5qb2luKCcuJyk7XG5cbiAgICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAgICAgLy/lsIZrZXlOYW1l55qE6aaW5a2X5q+N6L2s5Li65bCP5YaZXG4gICAgICAgICAgICBjb25zdCBrZXlOYW1lTG93ZXIgPSBrZXlOYW1lO1xuICAgICAgICAgICAgLy8gY29uc3Qga2V5TmFtZUxvd2VyID0ga2V5TmFtZS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIGtleU5hbWUuc2xpY2UoMSk7XG4gICAgICAgICAgICBpZiAodGhpcy5zaG93RW50cnlUeXBlSW5mbyAmJiB0aGlzLnNob3dFbnRyeVR5cGVJbmZvLmZpZWxkVGFicy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLnNob3dFbnRyeVR5cGVJbmZvLmZpZWxkVGFicykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZWwgb2YgaXRlbS5maWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChlbC5maWVsZC5uYW1lID09IGtleU5hbWVMb3dlcikge1xuICAgICAgICAgICAgICAgICAgICAvLyBpbmZvID0gYFwiJHt0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYCR7bW9kdWxlfTo6JHtpdGVtLm5hbWV95LiL55qEJHtlbC5maWVsZC5kaXNwbGF5TmFtZX3lrZfmrrVgKX1cImA7XG4gICAgICAgICAgICAgICAgICAgIGluZm8gPSBgJHt0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgYCR7bW9kdWxlfTo6VGhlezF9RmllbGRVbmRlclRoZXswfVRBQmAsXG4gICAgICAgICAgICAgICAgICAgICAgaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgIGVsLmZpZWxkLmRpc3BsYXlOYW1lLFxuICAgICAgICAgICAgICAgICAgICApfWA7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgLy8gfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGRpc3BsYXlOYW1lID0ga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnNsaWNlKDEpO1xuICAgICAgICAgIGluZm8gPSBgXCIke3RoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChgJHttb2R1bGV9Ojoke2Rpc3BsYXlOYW1lfWApfVwiIGA7XG4gICAgICAgIFxuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKCdpbmZvJywgaW5mbyxpbnB1dFtrZXldKTtcbiAgICAgICAgaW5mbyA9IGluZm8gKyB0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYEFicFZhbGlkYXRpb246OlRoaXNGaWVsZElzTm90VmFsaWQuYCk7XG4gICAgICAgIC8v5L2/55SoYWJw5aSa6K+t6KiA5o+Q56S6XG4gICAgICAgIHRoaXMudG9hc3Rlci53YXJuKGluZm8pO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gLyoq6I635Y+W6KGo5Y2V5omA5pyJ5a2X5q615piv5ZCm6YCa6L+H6aqM6K+BICovXG4gIC8vIGdldEZvcm1WYWxpZGF0aW9uU3RhdHVzKGZvcm1FbnRpdHk6IEZvcm1Hcm91cCB8IEZvcm1BcnJheSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAvLyAgIGNvbnN0IHZhbGlkYXRpb25TdGF0dXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcblxuICAvLyAgIC8vIOmAkuW9kumBjeWOhuihqOWNlee7hOWSjOihqOWNleaOp+S7tumbhuWQiFxuICAvLyAgIGNvbnN0IHRyYXZlcnNlRm9ybSA9IChmb3JtOiBGb3JtR3JvdXAgfCBGb3JtQXJyYXksIHByZWZpeCA9ICcnKSA9PiB7XG4gIC8vICAgICBpZiAoZm9ybSBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAvLyAgICAgICBPYmplY3Qua2V5cyhmb3JtLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XG4gIC8vICAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm0uY29udHJvbHNba2V5XTtcbiAgLy8gICAgICAgICAvLyBjb25zdCBkaXNwbGF5TmFtZSA9IGtleS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGtleS5zbGljZSgxKTtcbiAgLy8gICAgICAgICBjb25zdCBkaXNwbGF5TmFtZSA9IGtleTtcbiAgLy8gICAgICAgICBjb25zdCBmdWxsS2V5ID0gcHJlZml4ID8gYCR7cHJlZml4fS4ke2Rpc3BsYXlOYW1lfWAgOiBkaXNwbGF5TmFtZTtcbiAgLy8gICAgICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sKSB7XG4gIC8vICAgICAgICAgICB2YWxpZGF0aW9uU3RhdHVzW2Z1bGxLZXldID0gY29udHJvbC52YWxpZDtcbiAgLy8gICAgICAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgLy8gICAgICAgICAgIHRyYXZlcnNlRm9ybShjb250cm9sLCBmdWxsS2V5KTtcbiAgLy8gICAgICAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgLy8gICAgICAgICAgIHRyYXZlcnNlRm9ybShjb250cm9sLCBmdWxsS2V5KTtcbiAgLy8gICAgICAgICB9XG4gIC8vICAgICAgIH0pO1xuICAvLyAgICAgfSBlbHNlIGlmIChmb3JtIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gIC8vICAgICAgIGZvcm0uY29udHJvbHMuZm9yRWFjaCgoY29udHJvbCwgaW5kZXgpID0+IHtcbiAgLy8gICAgICAgICBjb25zdCBmdWxsS2V5ID0gcHJlZml4ID8gYCR7cHJlZml4fVske2luZGV4fV1gIDogYFske2luZGV4fV1gO1xuICAvLyAgICAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIHtcbiAgLy8gICAgICAgICAgIHZhbGlkYXRpb25TdGF0dXNbZnVsbEtleV0gPSBjb250cm9sLnZhbGlkO1xuICAvLyAgICAgICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAvLyAgICAgICAgICAgdHJhdmVyc2VGb3JtKGNvbnRyb2wsIGZ1bGxLZXkpO1xuICAvLyAgICAgICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAvLyAgICAgICAgICAgdHJhdmVyc2VGb3JtKGNvbnRyb2wsIGZ1bGxLZXkpO1xuICAvLyAgICAgICAgIH1cbiAgLy8gICAgICAgfSk7XG4gIC8vICAgICB9XG4gIC8vICAgfTtcblxuICAvLyAgIHRyYXZlcnNlRm9ybShmb3JtRW50aXR5KTtcblxuICAvLyAgIHJldHVybiB2YWxpZGF0aW9uU3RhdHVzO1xuICAvLyB9XG5cbiAgLyoq6I635Y+W6KGo5Y2V6aqM6K+B54q25oCBICovXG4gIC8vIGdldEZvcm1WYWxpZGF0aW9uU3RhdHVzKGZvcm1FbnRpdHk6IEZvcm1Hcm91cCB8IEZvcm1BcnJheSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAvLyAgIGNvbnN0IHZhbGlkYXRpb25TdGF0dXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcblxuICAvLyAgIGNvbnN0IHRyYXZlcnNlRm9ybSA9IChmb3JtOiBGb3JtR3JvdXAgfCBGb3JtQXJyYXksIHByZWZpeCA9ICcnKSA9PiB7XG4gIC8vICAgICAvL+ajgOafpWZvcm3mmK/lkKbkuLpGb3JtR3JvdXDov5jmmK9mb3JtQXJyYXks5aaC5p6c5pivRm9ybUdyb3Vw5YiZ57un57ut6YGN5Y6GLOWmguaenOaYr0Zvcm1BcnJheeWImemBjeWOhkZvcm1BcnJheVxuICAvLyAgICAgaWYgKGZvcm0gaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICAgICAgXG4gIC8vICAgICB9IGVsc2UgaWYgKGZvcm0gaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICAgICAgXG4gIC8vICAgICB9IFxuXG4gIC8vICAgfVxuICAvLyAgIHRyYXZlcnNlRm9ybShmb3JtRW50aXR5KTtcbiAgLy8gICByZXR1cm4gdmFsaWRhdGlvblN0YXR1c1xuICAvLyB9XG5wcml2YXRlIF9Mb2NhdGlvbkJhY2tTZXJ2aWNlPWluamVjdChMb2NhdGlvbkJhY2tTZXJ2aWNlKTtcbnByaXZhdGUgX0RpZ25pdGVWYWxpZGF0b3JzU2VydmljZT1pbmplY3QoRGlnbml0ZVZhbGlkYXRvcnNTZXJ2aWNlKTtcbiAgLyoq5o+Q5LqkICovXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5jdWx0dXJlSW5wdXQuZW5hYmxlKCk7XG4gICAgdGhpcy5kcmFmdElucHV0LnBhdGNoVmFsdWUodGhpcy5kcmFmdFZhbHVlIHx8IGZhbHNlKTtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuZm9ybUVudGl0eT8udmFsdWU7XG4gICAgaW5wdXQuY3VsdHVyZSA9IHRoaXMuY3VsdHVyZU5hbWU7XG4gICAgaW5wdXQucHVibGlzaFRpbWUgPSBuZXcgRGF0ZShcbiAgICAgIG5ldyBEYXRlKGlucHV0LnB1Ymxpc2hUaW1lKS5nZXRUaW1lKCkgKyA4ICogNjAgKiA2MCAqIDEwMDAsXG4gICAgKS50b0lTT1N0cmluZygpO1xuICAgIGlucHV0LmNvbmN1cnJlbmN5U3RhbXAgPSB0aGlzLmVudHJ5SW5mby5jb25jdXJyZW5jeVN0YW1wO1xuICAgIC8vIHRoaXMuZm9ybVZhbGlkYXRpb24gPSB0aGlzLl9WYWxpZGF0b3JzU2VydmljZS5nZXRGb3JtVmFsaWRhdGlvblN0YXR1cyh0aGlzLmZvcm1FbnRpdHkpO1xuICAgIC8vIGlmICh0aGlzLl9WYWxpZGF0b3JzU2VydmljZS5pc0NoZWNrRm9ybSh0aGlzLmZvcm1WYWxpZGF0aW9uLCAnQ21zJykpe1xuICAgIC8vICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xuICAgIC8vICAgcmV0dXJuIHRoaXMuY3VsdHVyZUlucHV0LmRpc2FibGUoKTtcbiAgICAvLyB9XG5cbiAgICAvLyB0aGlzLmZvcm1WYWxpZGF0aW9uID0gdGhpcy5nZXRGb3JtVmFsaWRhdGlvblN0YXR1cyh0aGlzLmZvcm1FbnRpdHkpO1xuICAgIC8vIGlmICh0aGlzLmlzQ2hlY2tGb3JtQ21zKHRoaXMuZm9ybVZhbGlkYXRpb24sICdDbXMnKSkge1xuICAgIC8vICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xuICAgIC8vICAgcmV0dXJuIHRoaXMuY3VsdHVyZUlucHV0LmRpc2FibGUoKTtcbiAgICAvLyB9XG4gICAgLy8gdGhpcy5mb3JtVmFsaWRhdGlvbiA9IHRoaXMuZ2V0Rm9ybVZhbGlkYXRpb25TdGF0dXModGhpcy5mb3JtRW50aXR5KTtcbiAgICAvLyByZXR1cm4gdGhpcy5pc1N1Ym1pdD1mYWxzZTtcbiAgICB0aGlzLmZvcm1WYWxpZGF0aW9uPXRydWU7XG4gICAgaWYgKCF0aGlzLmZvcm1FbnRpdHkudmFsaWQpIHtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLnNob3dFbnRyeVR5cGVJbmZvLmZpZWxkVGFicykge1xuICAgICAgICBmb3IgKGNvbnN0IGVsIG9mIGl0ZW0uZmllbGRzKSB7XG4gICAgICAgICAgICBjb25zdCBpbmZvID0gYCR7dGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICBgQ21zOjpUaGV7MX1GaWVsZFVuZGVyVGhlezB9VEFCYCxcbiAgICAgICAgICAgICAgaXRlbS5uYW1lLFxuICAgICAgICAgICAgICBlbC5maWVsZC5kaXNwbGF5TmFtZSxcbiAgICAgICAgICAgICl9YDtcbiAgICAgICAgICBFbnRyaWVzVG9Gb3JtTGFiZWxNYXBbZWwuZmllbGQubmFtZV09aW5mb1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX0RpZ25pdGVWYWxpZGF0b3JzU2VydmljZS5nZXRFcnJvck1lc3NhZ2Uoe1xuICAgICAgICBmb3JtOnRoaXMuZm9ybUVudGl0eSxcbiAgICAgICAgbWFwOkVudHJpZXNUb0Zvcm1MYWJlbE1hcCxcbiAgICAgIH0pO1xuXG4gICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XG4gICAgICAgdGhpcy5jdWx0dXJlSW5wdXQuZGlzYWJsZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9FbnRyeUFkbWluU2VydmljZVxuICAgICAgLnVwZGF0ZSh0aGlzLmVudHJ5SW5mby5pZCwgaW5wdXQpXG4gICAgICAucGlwZShcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMudG9hc3Rlci5zdWNjZXNzKHRoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChgQWJwVWk6OlNhdmVkU3VjY2Vzc2Z1bGx5YCkpO1xuICAgICAgICB0aGlzLl9Mb2NhdGlvbkJhY2tTZXJ2aWNlLmJhY2tUbyh7XG4gICAgICAgICAgdXJsOiBgL2Ntcy9hZG1pbi9lbnRyaWVzYCxcbiAgICAgICAgICByZXBsZW5pc2g6ICcvZWRpdCcgXG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMuX3VwZGF0ZUxpc3RTZXJ2aWNlLnVwZGF0ZUxpc3QoKTtcbiAgICAgIH0pO1xuICB9XG4gIGlzU3VibWl0OiBib29sZWFuIHwgYW55ID0gZmFsc2U7XG4gIGRyYWZ0VmFsdWU6IHN0cmluZyB8IGFueSA9ICcnO1xuICAvKirngrnlh7vmj5DkuqQgKi9cbiAgY2xpY2tTdWJtaXQodHlwZSkge1xuICAgIGlmICh0aGlzLmlzU3VibWl0KSByZXR1cm47XG4gICAgdGhpcy5pc1N1Ym1pdCA9IHRydWU7XG4gICAgdGhpcy5kcmFmdFZhbHVlID0gdHlwZTtcbiAgICB0aGlzLmN1bHR1cmVJbnB1dC5lbmFibGUoKTtcbiAgICB0aGlzLnN1Ym1pdGNsaWNrPy5uYXRpdmVFbGVtZW50Py5jbGljaygpO1xuICB9XG5cbiAgLyoq6L+U5Zue5LiK5LiA6aG1ICovXG4gIGJhY2tUbygpIHtcbiAgICB0aGlzLl9sb2NhdGlvbi5iYWNrKCk7XG4gIH1cbn1cbiIsIjxhYnAtcGFnZSBbdGl0bGVdPVwiJ0Ntczo6RWRpdCd8IGFicExvY2FsaXphdGlvblwiIFt0b29sYmFyXT1cInRydWVcIj5cbiAgICA8Zm9ybSBjbGFzcz1cInJvdyBnLTMgbmVlZHMtdmFsaWRhdGlvblwiXG4gICAgICAgIFtjbGFzc109XCJ7J3dhcy12YWxpZGF0ZWQnOmZvcm1WYWxpZGF0aW9ufVwiICBbZm9ybUdyb3VwXT1cImZvcm1FbnRpdHlcIiAgKHN1Ym1pdCk9XCJzYXZlKClcIiA+XG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiAjc3VibWl0Y2xpY2s+PC9idXR0b24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtRW50aXR5JiZlbnRyeUluZm9cIj5cbiAgICAgICAgICAgICAgICA8Y21zLWNyZWF0ZS1vci1lZGl0LWVudHJpZXMgIFtzZWN0aW9uSWRdPVwic2VjdGlvbklkXCIgW2VudHJ5VHlwZUlkXT1cImVudHJ5VHlwZUlkXCIgW2lzRWRpdF09XCJ0cnVlXCIgW3NlbGVjdF09XCJlbnRyeUluZm9cIiAgKGZlZWRiYWNrQ2hpbGRJbmZvKT1cIl9mZWVkYmFja0NoaWxkSW5mbygkZXZlbnQpXCIgIFtlbnRpdHldPVwiZm9ybUVudGl0eVwiPjwvY21zLWNyZWF0ZS1vci1lZGl0LWVudHJpZXM+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICBcbiAgICA8L2Zvcm0+XG48L2FicC1wYWdlPlxuIl19
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2VudHJpZXMvZWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2VudHJpZXMvZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsNERBQTREO0FBRTVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBMEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsb0VBQW9FO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLG1CQUFtQixFQUNuQixpQkFBaUIsR0FDbEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLHFCQUFxQixHQUN0QixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLCtEQUErRDtBQUMvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7OztBQUM3RSxrRkFBa0Y7QUFhbEYsTUFBTSxPQUFPLGFBQWE7SUFYMUI7UUFZVSxPQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pCLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQy9DLFlBQU8sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbEMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixVQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9CLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQy9DLHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBTzNEOzs7O1dBSUc7UUFDSCxtQkFBYyxHQUFRLEVBQUUsQ0FBQztRQUd6QixRQUFRO1FBQ1IsZ0JBQVcsR0FBaUIsRUFBRSxDQUFDO1FBQy9CLFlBQVk7UUFDWixnQkFBVyxHQUFpQixFQUFFLENBQUM7UUFDL0IsVUFBVTtRQUNWLGNBQVMsR0FBaUIsRUFBRSxDQUFDO1FBQzdCLFlBQVk7UUFDWixtQkFBYyxHQUFpQixFQUFFLENBQUM7UUFDbEMsVUFBVTtRQUNWLGFBQVEsR0FBaUIsRUFBRSxDQUFDO1FBQzVCLFVBQVU7UUFDVixjQUFTLEdBQVEsRUFBRSxDQUFDO1FBK0JwQixjQUFjO1FBQ2Qsc0JBQWlCLEdBQVEsRUFBRSxDQUFDO1FBcUQ1Qix1QkFBdUI7UUFDdkIsdUZBQXVGO1FBQ3ZGLHlEQUF5RDtRQUV6RCxzQkFBc0I7UUFDdEIseUVBQXlFO1FBQ3pFLHVDQUF1QztRQUN2QyxvREFBb0Q7UUFDcEQsOENBQThDO1FBQzlDLDZFQUE2RTtRQUM3RSxtQ0FBbUM7UUFDbkMsNkVBQTZFO1FBQzdFLGdEQUFnRDtRQUNoRCx1REFBdUQ7UUFDdkQscURBQXFEO1FBQ3JELDRDQUE0QztRQUM1QyxxREFBcUQ7UUFDckQsNENBQTRDO1FBQzVDLFlBQVk7UUFDWixZQUFZO1FBQ1osOENBQThDO1FBQzlDLG9EQUFvRDtRQUNwRCx5RUFBeUU7UUFDekUsZ0RBQWdEO1FBQ2hELHVEQUF1RDtRQUN2RCxxREFBcUQ7UUFDckQsNENBQTRDO1FBQzVDLHFEQUFxRDtRQUNyRCw0Q0FBNEM7UUFDNUMsWUFBWTtRQUNaLFlBQVk7UUFDWixRQUFRO1FBQ1IsT0FBTztRQUVQLDhCQUE4QjtRQUU5Qiw2QkFBNkI7UUFDN0IsSUFBSTtRQUVKLGNBQWM7UUFDZCx1RkFBdUY7UUFDdkYseURBQXlEO1FBRXpELHlFQUF5RTtRQUN6RSxpRkFBaUY7UUFDakYsdUNBQXVDO1FBRXZDLDhDQUE4QztRQUU5QyxRQUFRO1FBRVIsTUFBTTtRQUNOLDhCQUE4QjtRQUM5Qiw0QkFBNEI7UUFDNUIsSUFBSTtRQUNJLHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ25ELDhCQUF5QixHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBK0RyRSxhQUFRLEdBQWtCLEtBQUssQ0FBQztRQUNoQyxlQUFVLEdBQWlCLEVBQUUsQ0FBQztLQWMvQjtJQXpOQyxXQUFXO0lBQ1gsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQWdCLENBQUM7SUFDdEQsQ0FBQztJQUNELFVBQVU7SUFDVixJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBZ0IsQ0FBQztJQUN4RCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDWixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSw0QkFBNEIsRUFBRSxDQUFDLENBQUM7UUFDcEUsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFDRCxZQUFZO0lBQ1osWUFBWTtRQUNWLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN6RCxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO2dCQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztnQkFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFJRCxjQUFjO0lBQ2Qsa0JBQWtCLENBQUMsS0FBSztRQUN0QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxFQUFFLGFBQWEsSUFBSSxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUNELDJCQUEyQjtJQUMzQixjQUFjLENBQUMsS0FBSyxFQUFFLE1BQU07UUFDMUIsS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN4QixJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNkLDRCQUE0QjtnQkFDNUIsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztvQkFDckMsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDM0IsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN2QiwrQkFBK0I7b0JBQy9CLHdEQUF3RDtvQkFDeEQsOENBQThDO29CQUM5QyxnRUFBZ0U7b0JBQ2hFLHNEQUFzRDtvQkFFdEQsV0FBVztvQkFDWCxrQkFBa0I7b0JBQ2xCLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQztvQkFDN0IsMkVBQTJFO29CQUMzRSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDMUUsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLENBQUM7NEJBQ3BELEtBQUssTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dDQUM3QixJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLFlBQVksRUFBRSxDQUFDO29DQUNsQyx5R0FBeUc7b0NBQ3pHLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQ3pDLEdBQUcsTUFBTSw2QkFBNkIsRUFDdEMsSUFBSSxDQUFDLElBQUksRUFDVCxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FDckIsRUFBRSxDQUFDO2dDQUNOLENBQUM7NEJBQ0gsQ0FBQzt3QkFDSCxDQUFDO29CQUNILENBQUM7b0JBQ0QsSUFBSTtnQkFDTixDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUMvRCxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLEdBQUcsTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQztnQkFDaEYsQ0FBQztnQkFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO2dCQUN2RixZQUFZO2dCQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN4QixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBMERELFFBQVE7SUFDUixJQUFJO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxDQUFDO1FBQ3JELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDO1FBQ3JDLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNqQyxLQUFLLENBQUMsV0FBVyxHQUFHLElBQUksSUFBSSxDQUMxQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUMzRCxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hCLEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDO1FBQ3pELDBGQUEwRjtRQUMxRix3RUFBd0U7UUFDeEUsMkJBQTJCO1FBQzNCLHdDQUF3QztRQUN4QyxJQUFJO1FBRUosdUVBQXVFO1FBQ3ZFLHlEQUF5RDtRQUN6RCwyQkFBMkI7UUFDM0Isd0NBQXdDO1FBQ3hDLElBQUk7UUFDSix1RUFBdUU7UUFDdkUsOEJBQThCO1FBQzlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNCLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNwRCxLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDN0IsTUFBTSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUMvQyxnQ0FBZ0MsRUFDaEMsSUFBSSxDQUFDLElBQUksRUFDVCxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FDckIsRUFBRSxDQUFDO29CQUNKLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUM5QyxDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxlQUFlLENBQUM7Z0JBQzdDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDckIsR0FBRyxFQUFFLHFCQUFxQjthQUMzQixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzVCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQjthQUNwQixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDO2FBQ2hDLElBQUksQ0FDSCxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQztZQUNwRixJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDO2dCQUMvQixHQUFHLEVBQUUsb0JBQW9CO2dCQUN6QixTQUFTLEVBQUUsT0FBTzthQUNuQixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBR0QsVUFBVTtJQUNWLFdBQVcsQ0FBQyxJQUFJO1FBQ2QsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsV0FBVztJQUNYLE1BQU07UUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7OEdBM1BVLGFBQWE7a0dBQWIsYUFBYSxtQ0FQYjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxxQkFBcUI7Z0JBQzlCLFFBQVEsRUFBRSxhQUFhLENBQUMsWUFBWTthQUNyQztTQUNGLG9KQ25DSCxpcUJBVUE7OzJGRDJCYSxhQUFhO2tCQVh6QixTQUFTOytCQUNFLFVBQVUsYUFHVDt3QkFDVDs0QkFDRSxPQUFPLEVBQUUscUJBQXFCOzRCQUM5QixRQUFRLEVBQUUsYUFBYSxDQUFDLFlBQVk7eUJBQ3JDO3FCQUNGOzhCQWMyQyxXQUFXO3NCQUF0RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvdXNlLWxpZmVjeWNsZS1pbnRlcmZhY2UgKi9cblxuaW1wb3J0IHsgRVhURU5TSU9OU19JREVOVElGSUVSIH0gZnJvbSAnQGFicC9uZy5jb21wb25lbnRzL2V4dGVuc2libGUnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBpbmplY3QsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG4vLyBpbXBvcnQgeyBFbnRyeUFkbWluU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L2FkbWluL2VudHJpZXMnO1xuaW1wb3J0IHsgRUNtc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2VudW1zJztcbmltcG9ydCB7XG4gIERpZ25pdGVWYWxpZGF0b3JzU2VydmljZSxcbiAgTG9jYXRpb25CYWNrU2VydmljZSxcbiAgVXBkYXRlTGlzdFNlcnZpY2UsXG59IGZyb20gJ0BkaWduaXRlLW5nL2V4cGFuZC5jb3JlJztcbmltcG9ydCB7XG4gIENyZWF0ZU9yVXBkYXRlRW50cnlJbnB1dEJhc2UsXG4gIEVudHJpZXNUb0Zvcm1MYWJlbE1hcCxcbn0gZnJvbSAnLi9jcmVhdGUtb3ItdXBkYXRlLWVudHJ5LWlucHV0LWJhc2UnO1xuLy8gaW1wb3J0IHsgVmFsaWRhdG9yc1NlcnZpY2UgfSBmcm9tICdAZGlnbml0ZS1uZy9leHBhbmQuY29yZSc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRW50cnlBZG1pblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wcm94eS9kaWduaXRlL2Ntcy9hZG1pbi9lbnRyaWVzJztcbi8vIGltcG9ydCB7IENsYXNzaWNFZGl0b3IsIEVzc2VudGlhbHMsIFBhcmFncmFwaCwgQm9sZCwgSXRhbGljIH0gZnJvbSAnY2tlZGl0b3I1JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY21zLWVkaXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VkaXQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogRVhURU5TSU9OU19JREVOVElGSUVSLFxuICAgICAgdXNlVmFsdWU6IEVDbXNDb21wb25lbnQuRW50cmllc19FZGl0LFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcbiAgcHJpdmF0ZSBfdXBkYXRlTGlzdFNlcnZpY2UgPSBpbmplY3QoVXBkYXRlTGlzdFNlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ZXIgPSBpbmplY3QoVG9hc3RlclNlcnZpY2UpO1xuICBwdWJsaWMgX2xvY2F0aW9uID0gaW5qZWN0KExvY2F0aW9uKTtcbiAgcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHByaXZhdGUgX0VudHJ5QWRtaW5TZXJ2aWNlID0gaW5qZWN0KEVudHJ5QWRtaW5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfTG9jYWxpemF0aW9uU2VydmljZSA9IGluamVjdChMb2NhbGl6YXRpb25TZXJ2aWNlKTtcbiAgLy8gcHJpdmF0ZSBfVmFsaWRhdG9yc1NlcnZpY2UgPSBpbmplY3QoVmFsaWRhdG9yc1NlcnZpY2UpO1xuICAvLyBwcml2YXRlIGRhdGVQaXBlID0gaW5qZWN0KERhdGVQaXBlKTtcblxuICAvKirojrflj5bmj5DkuqTmjInpkq7mm7/ouqvvvIznlKjkuo7nnJ/lrp7op6blj5HooajljZXmj5DkuqQgKi9cbiAgQFZpZXdDaGlsZCgnc3VibWl0Y2xpY2snLCB7IHN0YXRpYzogdHJ1ZSB9KSBzdWJtaXRjbGljazogRWxlbWVudFJlZjtcblxuICAvKirooajljZXpqozor4HnirbmgIFcbiAgICoge1xuICAgKiAgdGl0bGU6dHJ1ZSxcbiAgICogfVxuICAgKi9cbiAgZm9ybVZhbGlkYXRpb246IGFueSA9ICcnO1xuICAvKirooajljZXlrp7kvZMgKi9cbiAgZm9ybUVudGl0eTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkO1xuICAvKiror63oqIAgKi9cbiAgY3VsdHVyZU5hbWU6IHN0cmluZyB8IGFueSA9ICcnO1xuICAvKirmnaHnm67nsbvlnotpZCAqL1xuICBlbnRyeVR5cGVJZDogc3RyaW5nIHwgYW55ID0gJyc7XG4gIC8qKueJiOWdl2lkICovXG4gIHNlY3Rpb25JZDogc3RyaW5nIHwgYW55ID0gJyc7XG4gIC8qKuadoeebrueJiOacrGlkICovXG4gIGVudHJ5VmVyc2lvbklkOiBzdHJpbmcgfCBhbnkgPSAnJztcbiAgLyoq5p2h55uuaWQgKi9cbiAgZW50cmllSWQ6IHN0cmluZyB8IGFueSA9ICcnO1xuICAvKirmnaHnm67kv6Hmga8gKi9cbiAgZW50cnlJbmZvOiBhbnkgPSAnJztcblxuICAvKirmmK/lkKbojYnnqL/mjqfku7YqL1xuICBnZXQgZHJhZnRJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtRW50aXR5Py5nZXQoJ2RyYWZ0JykgYXMgRm9ybUNvbnRyb2w7XG4gIH1cbiAgLyoq6K+t6KiA5o6n5Lu2ICovXG4gIGdldCBjdWx0dXJlSW5wdXQoKTogRm9ybUNvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLmZvcm1FbnRpdHk/LmdldCgnY3VsdHVyZScpIGFzIEZvcm1Db250cm9sO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGFyYW1zID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXM7XG4gICAgdGhpcy5lbnRyaWVJZCA9IHBhcmFtcy5lbnRyaWVJZDtcbiAgICB0aGlzLmZvcm1FbnRpdHkgPSB0aGlzLmZiLmdyb3VwKG5ldyBDcmVhdGVPclVwZGF0ZUVudHJ5SW5wdXRCYXNlKCkpO1xuICAgIGF3YWl0IHRoaXMuZ2V0RW50cnlJbmZvKCk7XG4gICAgdGhpcy5jdWx0dXJlSW5wdXQucGF0Y2hWYWx1ZSh0aGlzLmN1bHR1cmVOYW1lKTtcbiAgfVxuICAvKirojrflj5bmnaHnm67kv6Hmga8gKi9cbiAgZ2V0RW50cnlJbmZvKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0cykgPT4ge1xuICAgICAgdGhpcy5fRW50cnlBZG1pblNlcnZpY2UuZ2V0KHRoaXMuZW50cmllSWQpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLmN1bHR1cmVOYW1lID0gcmVzLmN1bHR1cmU7XG4gICAgICAgIHRoaXMuZW50cnlUeXBlSWQgPSByZXMuZW50cnlUeXBlSWQ7XG4gICAgICAgIHRoaXMuc2VjdGlvbklkID0gcmVzLnNlY3Rpb25JZDtcbiAgICAgICAgdGhpcy5lbnRyeUluZm8gPSByZXM7XG4gICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoq5pi+56S65p2h55uu57G75Z6L5L+h5oGvICovXG4gIHNob3dFbnRyeVR5cGVJbmZvOiBhbnkgPSAnJztcbiAgLyoq5Y+N6aaI5a2Q57qn6aG16Z2i5L+h5oGvICovXG4gIF9mZWVkYmFja0NoaWxkSW5mbyhldmVudCkge1xuICAgIHRoaXMuc2hvd0VudHJ5VHlwZUluZm8gPSBldmVudD8uc2hvd0VudHJ5VHlwZSB8fCAnJztcbiAgfVxuICAvLyAvKirlvZPov5Tlm57nu5PmnpzkuLp0cnVl5pe26KGo56S65pyq6YCa6L+H6aqM6K+BICovXG4gIGlzQ2hlY2tGb3JtQ21zKGlucHV0LCBtb2R1bGUpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBpbnB1dCkge1xuICAgICAgaWYgKGlucHV0W2tleV0gPT09IGZhbHNlKSB7XG4gICAgICAgIGxldCBpbmZvID0gYGA7XG4gICAgICAgIC8v5qOA5p+la2V55Lit5piv5ZCm5ZCr5pyJRXh0cmFQcm9wZXJ0aWVzLlxuICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKCdleHRyYVByb3BlcnRpZXMuJykpIHtcbiAgICAgICAgICBjb25zdCBhcnIgPSBrZXkuc3BsaXQoJy4nKTtcbiAgICAgICAgICBjb25zdCBrZXlOYW1lID0gYXJyWzFdO1xuICAgICAgICAgIC8vIGlmIChrZXlOYW1lLmluY2x1ZGVzKCdbJykpIHtcbiAgICAgICAgICAvLyAgIC8v5L2/55So5q2j5YiZ5o+Q5Y+Wa2V5TmFtZeS4rVtd5Lit55qE5pWw5a2X5LiL5qCHLOW5tuS4lOi9rOWMluS4uuaVsOWtl+exu+Wei++8jOW5tuS4lOWOu+aOiWtleU5hbWXkuK3nmoRbKl1cbiAgICAgICAgICAvLyAgIGNvbnN0IGtleU5hbWVBcnIgPSBrZXlOYW1lLm1hdGNoKC9cXGQrL2cpO1xuICAgICAgICAgIC8vICAgY29uc3Qga2V5TmFtZUFyck51bSA9IGtleU5hbWVBcnIubWFwKGl0ZW0gPT4gTnVtYmVyKGl0ZW0pKTtcbiAgICAgICAgICAvLyAgIGNvbnN0IGtleU5hbWVBcnJOdW1TdHIgPSBrZXlOYW1lQXJyTnVtLmpvaW4oJy4nKTtcblxuICAgICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgICAgLy/lsIZrZXlOYW1l55qE6aaW5a2X5q+N6L2s5Li65bCP5YaZXG4gICAgICAgICAgY29uc3Qga2V5TmFtZUxvd2VyID0ga2V5TmFtZTtcbiAgICAgICAgICAvLyBjb25zdCBrZXlOYW1lTG93ZXIgPSBrZXlOYW1lLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsga2V5TmFtZS5zbGljZSgxKTtcbiAgICAgICAgICBpZiAodGhpcy5zaG93RW50cnlUeXBlSW5mbyAmJiB0aGlzLnNob3dFbnRyeVR5cGVJbmZvLmZpZWxkVGFicy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5zaG93RW50cnlUeXBlSW5mby5maWVsZFRhYnMpIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBlbCBvZiBpdGVtLmZpZWxkcykge1xuICAgICAgICAgICAgICAgIGlmIChlbC5maWVsZC5uYW1lID09IGtleU5hbWVMb3dlcikge1xuICAgICAgICAgICAgICAgICAgLy8gaW5mbyA9IGBcIiR7dGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGAke21vZHVsZX06OiR7aXRlbS5uYW1lfeS4i+eahCR7ZWwuZmllbGQuZGlzcGxheU5hbWV95a2X5q61YCl9XCJgO1xuICAgICAgICAgICAgICAgICAgaW5mbyA9IGAke3RoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgYCR7bW9kdWxlfTo6VGhlezF9RmllbGRVbmRlclRoZXswfVRBQmAsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgZWwuZmllbGQuZGlzcGxheU5hbWUsXG4gICAgICAgICAgICAgICAgICApfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBkaXNwbGF5TmFtZSA9IGtleS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGtleS5zbGljZSgxKTtcbiAgICAgICAgICBpbmZvID0gYFwiJHt0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYCR7bW9kdWxlfTo6JHtkaXNwbGF5TmFtZX1gKX1cIiBgO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKCdpbmZvJywgaW5mbywgaW5wdXRba2V5XSk7XG4gICAgICAgIGluZm8gPSBpbmZvICsgdGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGBBYnBWYWxpZGF0aW9uOjpUaGlzRmllbGRJc05vdFZhbGlkLmApO1xuICAgICAgICAvL+S9v+eUqGFicOWkmuivreiogOaPkOekulxuICAgICAgICB0aGlzLnRvYXN0ZXIud2FybihpbmZvKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIC8qKuiOt+WPluihqOWNleaJgOacieWtl+auteaYr+WQpumAmui/h+mqjOivgSAqL1xuICAvLyBnZXRGb3JtVmFsaWRhdGlvblN0YXR1cyhmb3JtRW50aXR5OiBGb3JtR3JvdXAgfCBGb3JtQXJyYXkpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgLy8gICBjb25zdCB2YWxpZGF0aW9uU3RhdHVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG5cbiAgLy8gICAvLyDpgJLlvZLpgY3ljobooajljZXnu4TlkozooajljZXmjqfku7bpm4blkIhcbiAgLy8gICBjb25zdCB0cmF2ZXJzZUZvcm0gPSAoZm9ybTogRm9ybUdyb3VwIHwgRm9ybUFycmF5LCBwcmVmaXggPSAnJykgPT4ge1xuICAvLyAgICAgaWYgKGZvcm0gaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgLy8gICAgICAgT2JqZWN0LmtleXMoZm9ybS5jb250cm9scykuZm9yRWFjaChrZXkgPT4ge1xuICAvLyAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtLmNvbnRyb2xzW2tleV07XG4gIC8vICAgICAgICAgLy8gY29uc3QgZGlzcGxheU5hbWUgPSBrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBrZXkuc2xpY2UoMSk7XG4gIC8vICAgICAgICAgY29uc3QgZGlzcGxheU5hbWUgPSBrZXk7XG4gIC8vICAgICAgICAgY29uc3QgZnVsbEtleSA9IHByZWZpeCA/IGAke3ByZWZpeH0uJHtkaXNwbGF5TmFtZX1gIDogZGlzcGxheU5hbWU7XG4gIC8vICAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCkge1xuICAvLyAgICAgICAgICAgdmFsaWRhdGlvblN0YXR1c1tmdWxsS2V5XSA9IGNvbnRyb2wudmFsaWQ7XG4gIC8vICAgICAgICAgfSBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gIC8vICAgICAgICAgICB0cmF2ZXJzZUZvcm0oY29udHJvbCwgZnVsbEtleSk7XG4gIC8vICAgICAgICAgfSBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gIC8vICAgICAgICAgICB0cmF2ZXJzZUZvcm0oY29udHJvbCwgZnVsbEtleSk7XG4gIC8vICAgICAgICAgfVxuICAvLyAgICAgICB9KTtcbiAgLy8gICAgIH0gZWxzZSBpZiAoZm9ybSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAvLyAgICAgICBmb3JtLmNvbnRyb2xzLmZvckVhY2goKGNvbnRyb2wsIGluZGV4KSA9PiB7XG4gIC8vICAgICAgICAgY29uc3QgZnVsbEtleSA9IHByZWZpeCA/IGAke3ByZWZpeH1bJHtpbmRleH1dYCA6IGBbJHtpbmRleH1dYDtcbiAgLy8gICAgICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sKSB7XG4gIC8vICAgICAgICAgICB2YWxpZGF0aW9uU3RhdHVzW2Z1bGxLZXldID0gY29udHJvbC52YWxpZDtcbiAgLy8gICAgICAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgLy8gICAgICAgICAgIHRyYXZlcnNlRm9ybShjb250cm9sLCBmdWxsS2V5KTtcbiAgLy8gICAgICAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgLy8gICAgICAgICAgIHRyYXZlcnNlRm9ybShjb250cm9sLCBmdWxsS2V5KTtcbiAgLy8gICAgICAgICB9XG4gIC8vICAgICAgIH0pO1xuICAvLyAgICAgfVxuICAvLyAgIH07XG5cbiAgLy8gICB0cmF2ZXJzZUZvcm0oZm9ybUVudGl0eSk7XG5cbiAgLy8gICByZXR1cm4gdmFsaWRhdGlvblN0YXR1cztcbiAgLy8gfVxuXG4gIC8qKuiOt+WPluihqOWNlemqjOivgeeKtuaAgSAqL1xuICAvLyBnZXRGb3JtVmFsaWRhdGlvblN0YXR1cyhmb3JtRW50aXR5OiBGb3JtR3JvdXAgfCBGb3JtQXJyYXkpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgLy8gICBjb25zdCB2YWxpZGF0aW9uU3RhdHVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG5cbiAgLy8gICBjb25zdCB0cmF2ZXJzZUZvcm0gPSAoZm9ybTogRm9ybUdyb3VwIHwgRm9ybUFycmF5LCBwcmVmaXggPSAnJykgPT4ge1xuICAvLyAgICAgLy/mo4Dmn6Vmb3Jt5piv5ZCm5Li6Rm9ybUdyb3Vw6L+Y5pivZm9ybUFycmF5LOWmguaenOaYr0Zvcm1Hcm91cOWImee7p+e7remBjeWOhizlpoLmnpzmmK9Gb3JtQXJyYXnliJnpgY3ljoZGb3JtQXJyYXlcbiAgLy8gICAgIGlmIChmb3JtIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG5cbiAgLy8gICAgIH0gZWxzZSBpZiAoZm9ybSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuXG4gIC8vICAgICB9XG5cbiAgLy8gICB9XG4gIC8vICAgdHJhdmVyc2VGb3JtKGZvcm1FbnRpdHkpO1xuICAvLyAgIHJldHVybiB2YWxpZGF0aW9uU3RhdHVzXG4gIC8vIH1cbiAgcHJpdmF0ZSBfTG9jYXRpb25CYWNrU2VydmljZSA9IGluamVjdChMb2NhdGlvbkJhY2tTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfRGlnbml0ZVZhbGlkYXRvcnNTZXJ2aWNlID0gaW5qZWN0KERpZ25pdGVWYWxpZGF0b3JzU2VydmljZSk7XG4gIC8qKuaPkOS6pCAqL1xuICBzYXZlKCkge1xuICAgIHRoaXMuY3VsdHVyZUlucHV0LmVuYWJsZSgpO1xuICAgIHRoaXMuZHJhZnRJbnB1dC5wYXRjaFZhbHVlKHRoaXMuZHJhZnRWYWx1ZSB8fCBmYWxzZSk7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmZvcm1FbnRpdHk/LnZhbHVlO1xuICAgIGlucHV0LmN1bHR1cmUgPSB0aGlzLmN1bHR1cmVOYW1lO1xuICAgIGlucHV0LnB1Ymxpc2hUaW1lID0gbmV3IERhdGUoXG4gICAgICBuZXcgRGF0ZShpbnB1dC5wdWJsaXNoVGltZSkuZ2V0VGltZSgpICsgOCAqIDYwICogNjAgKiAxMDAwLFxuICAgICkudG9JU09TdHJpbmcoKTtcbiAgICBpbnB1dC5jb25jdXJyZW5jeVN0YW1wID0gdGhpcy5lbnRyeUluZm8uY29uY3VycmVuY3lTdGFtcDtcbiAgICAvLyB0aGlzLmZvcm1WYWxpZGF0aW9uID0gdGhpcy5fVmFsaWRhdG9yc1NlcnZpY2UuZ2V0Rm9ybVZhbGlkYXRpb25TdGF0dXModGhpcy5mb3JtRW50aXR5KTtcbiAgICAvLyBpZiAodGhpcy5fVmFsaWRhdG9yc1NlcnZpY2UuaXNDaGVja0Zvcm0odGhpcy5mb3JtVmFsaWRhdGlvbiwgJ0NtcycpKXtcbiAgICAvLyAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcbiAgICAvLyAgIHJldHVybiB0aGlzLmN1bHR1cmVJbnB1dC5kaXNhYmxlKCk7XG4gICAgLy8gfVxuXG4gICAgLy8gdGhpcy5mb3JtVmFsaWRhdGlvbiA9IHRoaXMuZ2V0Rm9ybVZhbGlkYXRpb25TdGF0dXModGhpcy5mb3JtRW50aXR5KTtcbiAgICAvLyBpZiAodGhpcy5pc0NoZWNrRm9ybUNtcyh0aGlzLmZvcm1WYWxpZGF0aW9uLCAnQ21zJykpIHtcbiAgICAvLyAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcbiAgICAvLyAgIHJldHVybiB0aGlzLmN1bHR1cmVJbnB1dC5kaXNhYmxlKCk7XG4gICAgLy8gfVxuICAgIC8vIHRoaXMuZm9ybVZhbGlkYXRpb24gPSB0aGlzLmdldEZvcm1WYWxpZGF0aW9uU3RhdHVzKHRoaXMuZm9ybUVudGl0eSk7XG4gICAgLy8gcmV0dXJuIHRoaXMuaXNTdWJtaXQ9ZmFsc2U7XG4gICAgY29uc29sZS5sb2coJ+S/neWtmCcsIGlucHV0KTtcbiAgICB0aGlzLmZvcm1WYWxpZGF0aW9uID0gdHJ1ZTtcbiAgICBpZiAoIXRoaXMuZm9ybUVudGl0eS52YWxpZCkge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuc2hvd0VudHJ5VHlwZUluZm8uZmllbGRUYWJzKSB7XG4gICAgICAgIGZvciAoY29uc3QgZWwgb2YgaXRlbS5maWVsZHMpIHtcbiAgICAgICAgICBjb25zdCBpbmZvID0gYCR7dGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgYENtczo6VGhlezF9RmllbGRVbmRlclRoZXswfVRBQmAsXG4gICAgICAgICAgICBpdGVtLm5hbWUsXG4gICAgICAgICAgICBlbC5maWVsZC5kaXNwbGF5TmFtZSxcbiAgICAgICAgICApfWA7XG4gICAgICAgICAgRW50cmllc1RvRm9ybUxhYmVsTWFwW2VsLmZpZWxkLm5hbWVdID0gaW5mbztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLl9EaWduaXRlVmFsaWRhdG9yc1NlcnZpY2UuZ2V0RXJyb3JNZXNzYWdlKHtcbiAgICAgICAgZm9ybTogdGhpcy5mb3JtRW50aXR5LFxuICAgICAgICBtYXA6IEVudHJpZXNUb0Zvcm1MYWJlbE1hcCxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XG4gICAgICB0aGlzLmN1bHR1cmVJbnB1dC5kaXNhYmxlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX0VudHJ5QWRtaW5TZXJ2aWNlXG4gICAgICAudXBkYXRlKHRoaXMuZW50cnlJbmZvLmlkLCBpbnB1dClcbiAgICAgIC5waXBlKFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3ModGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGBBYnBVaTo6U2F2ZWRTdWNjZXNzZnVsbHlgKSk7XG4gICAgICAgIHRoaXMuX0xvY2F0aW9uQmFja1NlcnZpY2UuYmFja1RvKHtcbiAgICAgICAgICB1cmw6IGAvY21zL2FkbWluL2VudHJpZXNgLFxuICAgICAgICAgIHJlcGxlbmlzaDogJy9lZGl0JyxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUxpc3RTZXJ2aWNlLnVwZGF0ZUxpc3QoKTtcbiAgICAgIH0pO1xuICB9XG4gIGlzU3VibWl0OiBib29sZWFuIHwgYW55ID0gZmFsc2U7XG4gIGRyYWZ0VmFsdWU6IHN0cmluZyB8IGFueSA9ICcnO1xuICAvKirngrnlh7vmj5DkuqQgKi9cbiAgY2xpY2tTdWJtaXQodHlwZSkge1xuICAgIGlmICh0aGlzLmlzU3VibWl0KSByZXR1cm47XG4gICAgdGhpcy5pc1N1Ym1pdCA9IHRydWU7XG4gICAgdGhpcy5kcmFmdFZhbHVlID0gdHlwZTtcbiAgICB0aGlzLmN1bHR1cmVJbnB1dC5lbmFibGUoKTtcbiAgICB0aGlzLnN1Ym1pdGNsaWNrPy5uYXRpdmVFbGVtZW50Py5jbGljaygpO1xuICB9XG5cbiAgLyoq6L+U5Zue5LiK5LiA6aG1ICovXG4gIGJhY2tUbygpIHtcbiAgICB0aGlzLl9sb2NhdGlvbi5iYWNrKCk7XG4gIH1cbn1cbiIsIjxhYnAtcGFnZSBbdGl0bGVdPVwiJ0Ntczo6RWRpdCd8IGFicExvY2FsaXphdGlvblwiIFt0b29sYmFyXT1cInRydWVcIj5cbiAgICA8Zm9ybSBjbGFzcz1cInJvdyBnLTMgbmVlZHMtdmFsaWRhdGlvblwiXG4gICAgICAgIFtjbGFzc109XCJ7J3dhcy12YWxpZGF0ZWQnOmZvcm1WYWxpZGF0aW9ufVwiICBbZm9ybUdyb3VwXT1cImZvcm1FbnRpdHlcIiAgKHN1Ym1pdCk9XCJzYXZlKClcIiA+XG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiAjc3VibWl0Y2xpY2s+PC9idXR0b24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtRW50aXR5JiZlbnRyeUluZm9cIj5cbiAgICAgICAgICAgICAgICA8Y21zLWNyZWF0ZS1vci1lZGl0LWVudHJpZXMgIFtzZWN0aW9uSWRdPVwic2VjdGlvbklkXCIgW2VudHJ5VHlwZUlkXT1cImVudHJ5VHlwZUlkXCIgW2lzRWRpdF09XCJ0cnVlXCIgW3NlbGVjdF09XCJlbnRyeUluZm9cIiAgKGZlZWRiYWNrQ2hpbGRJbmZvKT1cIl9mZWVkYmFja0NoaWxkSW5mbygkZXZlbnQpXCIgIFtlbnRpdHldPVwiZm9ybUVudGl0eVwiPjwvY21zLWNyZWF0ZS1vci1lZGl0LWVudHJpZXM+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICBcbiAgICA8L2Zvcm0+XG48L2FicC1wYWdlPlxuIl19