tnx-shared 5.1.521 → 5.1.523

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.
@@ -218,7 +218,8 @@ export class WorkflowHistoryNewComponent extends DataListBase {
218
218
  field: 'fileDinhKem',
219
219
  label: this._translateService.instant('File đính kèm'),
220
220
  dataType: 'fileDinhKem',
221
- allowFilter: false
221
+ allowFilter: false,
222
+ visible: !this.businessSetting.showFileManagerFromWfProcess
222
223
  })
223
224
  ];
224
225
  this.model.ready = true;
@@ -513,4 +514,4 @@ WorkflowHistoryNewComponent.propDecorators = {
513
514
  item: [{ type: Input }],
514
515
  workflowSetting: [{ type: Input }]
515
516
  };
516
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctaGlzdG9yeS1uZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvd29ya2Zsb3cvd29ya2Zsb3ctaGlzdG9yeS1uZXcvd29ya2Zsb3ctaGlzdG9yeS1uZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUU5SSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDakYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbEgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFROUUsTUFBTSxPQUFP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Q0wsS0FBSzttQkFDTCxLQUFLOzhCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YUxpc3RCYXNlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9iYXNlL2RhdGEtbGlzdC1iYXNlJztcbmltcG9ydCB7IENvbHVtblNjaGVtYUJhc2UsIENydWRMaXN0U2V0dGluZywgRGF0YVR5cGUsIEVudW1GaWxlTGF5b3V0LCBIZWlnaHRUeXBlLCBNb2RlbFNjaGVtYSwgT3BlcmF0b3IgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcbmltcG9ydCB7IEdyaWRJbmZvIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dyaWQtaW5mbyc7XG5pbXBvcnQgeyBEbUNodWNWdVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9kbS1jaHVjdnUuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyR3JvdXBSZWFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3VzZXItZ3JvdXAtcmVhbC5zZXJ2aWNlJztcbmltcG9ydCB7IENvQ2F1VG9DaHVjU2VydmljZSB9IGZyb20gJy4uLy4uL2NvY2F1dG9jaHVjL3NlcnZpY2VzL2NvY2F1dG9jaHVjLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmlsZURhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZmlsZS1leHBsb3Jlci9zZXJ2aWNlcy9maWxlLWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBFbnVtU3RhdGVUeXBlLCBFbnVtV29ya2Zsb3dIaXN0b3J5U3RhdHVzIH0gZnJvbSAnLi4vLi4vc3RhdGVtYWNoaW5lcy9tb2RlbHMvZW51bXMnO1xuaW1wb3J0IHsgSnNQbHVtYk9wdGlvbiB9IGZyb20gJy4uLy4uL3N0YXRlbWFjaGluZXMvbW9kZWxzL21vZGVscyc7XG5pbXBvcnQgeyBBY3Rpb25DaG9ZS2llbkJhc2UsIEFjdGlvblRodUhvaUJhc2UsIEFjdGlvblVwZGF0ZU1vZGVsLCBNYUFjdGlvbkJhdERhdVF1eVRyaW5oIH0gZnJvbSAnLi4vbW9kZWxzL2NvbnN0JztcbmltcG9ydCB7IFdmU2NoZW1hIH0gZnJvbSAnLi4vbW9kZWxzL21vZGVscyc7XG5pbXBvcnQgeyBXb3JrZmxvd0hpc3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvd29ya2Zsb3ctaGlzdG9yeS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd3b3JrZmxvdy1oaXN0b3J5LW5ldycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3dvcmtmbG93LWhpc3RvcnktbmV3LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi93b3JrZmxvdy1oaXN0b3J5LW5ldy5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd0hpc3RvcnlOZXdDb21wb25lbnQgZXh0ZW5kcyBEYXRhTGlzdEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuXG4gICAgQElucHV0KCkgYnVzaW5lc3NTZXR0aW5nOiBDcnVkTGlzdFNldHRpbmc7XG4gICAgLy8gTMOgIGZvcm0gbOG7i2NoIHPhu60gY+G7p2EgdGFzayBuaMawbmcgbeG7nyB04burIGdpYW8gZGnhu4duIGPhu6dhIMSR4buRaSB0xrDhu6NuZyBtw6AgdGFzayBn4bqvbiB2w6BvXG4gICAgLy8g4bueIGZvcm0gbsOgeSB0aMOsIGNo4buJIHhlbSBs4buLY2ggc+G7rSBjaOG7qSBrIGRjIGzDoG0gZ8OsIGjhur90XG4gICAgQElucHV0KCkgaXNSZWxhdGl2ZUZvcm06IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSB0YWJsZU5hbWU6IHN0cmluZztcbiAgICBASW5wdXQoKSBpdGVtOiBhbnk7XG4gICAgQElucHV0KCkgd29ya2Zsb3dTZXR0aW5nOiBhbnk7XG5cbiAgICBsYXlvdXRGaWxlID0gRW51bUZpbGVMYXlvdXQ7XG4gICAgZW51bVdvcmtmbG93SGlzdG9yeVN0YXR1cyA9IEVudW1Xb3JrZmxvd0hpc3RvcnlTdGF0dXM7XG4gICAgZmlsZURhdGFTZXJ2aWNlOiBGaWxlRGF0YVNlcnZpY2U7XG4gICAgY3VycmVudFdvcmtmbG93OiB7XG4gICAgICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgICAgIGRhdGE6IFdmU2NoZW1hXG4gICAgfTtcbiAgICB3YWl0VG9EZXRhY2g6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICByZWFkeVRvUmF3OiBib29sZWFuID0gZmFsc2U7XG4gICAgd29ya2Zsb3dUaXRsZTogc3RyaW5nO1xuICAgIG1hY2hpbmVzRGF0YTogYW55ID0geyBtYWNoaW5lczogW10sIGNvbm5lY3Rpb25zOiBbXSB9O1xuICAgIGpzUGx1bWJPcHRpb246IEpzUGx1bWJPcHRpb24gPSBuZXcgSnNQbHVtYk9wdGlvbih7XG4gICAgICAgIFN0cmFpZ2h0Q29ubmVjdGlvbjogdHJ1ZSxcbiAgICAgICAgQ2VudGVyQ29ubmVjdGlvbkxhYmVsOiB0cnVlXG4gICAgfSk7XG4gICAgY3VycmVudENvbm5lY3Rpb246IGFueTtcbiAgICBtYWNoaW5lQ29kZUtldFRodWNzOiBzdHJpbmdbXTtcbiAgICBnZW5lcmF0ZWQgPSBmYWxzZTtcbiAgICBkYXRhU291cmNlQWN0aW9uOiBhbnlbXSA9IFtdO1xuICAgIHN0YXRlRGlzdGFuY2UgPSAzNTA7XG4gICAgdG9wRGlzdGFuY2UgPSA4MDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHVibGljIF93b3JrZmxvd0hpc3RvcnlTZXJ2aWNlOiBXb3JrZmxvd0hpc3RvcnlTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgX2NvQ2F1VG9DaHVjU2VydmljZTogQ29DYXVUb0NodWNTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgX3VzZXJHcm91cFNlcnZpY2U6IFVzZXJHcm91cFJlYWxTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgX2RtQ2h1Y1Z1U2VydmljZTogRG1DaHVjVnVTZXJ2aWNlLFxuICAgICAgICBfZmlsZURhdGFTZXJ2aWNlOiBGaWxlRGF0YVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoX2luamVjdG9yKTtcbiAgICAgICAgdGhpcy5maWxlRGF0YVNlcnZpY2UgPSBfZmlsZURhdGFTZXJ2aWNlO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmxvYWREZXRhaWxGcm9tUXVlcnlQYXJhbSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UgPSB0aGlzLl93b3JrZmxvd0hpc3RvcnlTZXJ2aWNlO1xuICAgICAgICB0aGlzLl93b3JrZmxvd0hpc3RvcnlTZXJ2aWNlLmNoYW5nZUVuZHBvaW50KHRoaXMuYnVzaW5lc3NTZXR0aW5nLmJhc2VTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLm11bHRpcGxlQ2hlY2tXaGVuQ2xpY2tSb3cgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLnNldHRpbmdLZXkgPSAnX193b3JrZmxvdyc7XG4gICAgICAgIHRoaXMuY3VycmVudFdvcmtmbG93ID0gdGhpcy53b3JrZmxvd1NldHRpbmcud29ya2Zsb3dzLmZpbmQocSA9PiBxLmNvZGUgPT0gdGhpcy5pdGVtLl9fd29ya2Zsb3dDb2RlKTtcblxuICAgICAgICB0aGlzLnNldHRpbmcudGl0bGUgPSAnJztcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhlaWdodFR5cGUgPSBIZWlnaHRUeXBlLmR5bmFtaWM7XG4gICAgICAgIHRoaXMuc2V0dGluZy5zaG93RWRpdExpbmsgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkJ1dHRvbnMgPSB0cnVlO1xuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuQ2hlY2tib3ggPSB0cnVlO1xuICAgICAgICBjb25zdCB1c2VyQ3VycmVudCA9IHRoaXMuX3VzZXJTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgICAgIGlmICh1c2VyQ3VycmVudC51c2VyTmFtZSAhPSAnYWRtaW4nIHx8IHRoaXMuaXNSZWxhdGl2ZUZvcm0pIHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5GdW5jdGlvbkNvbHVtbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnRhYmxlTmFtZSkge1xuICAgICAgICAgICAgdGhpcy50YWJsZU5hbWUgPSB0aGlzLmJ1c2luZXNzU2V0dGluZy5iYXNlU2VydmljZS5lbnRpdHlOYW1lO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5GdW5jdGlvbkNvbHVtbiA9ICF0aGlzLmJ1c2luZXNzU2V0dGluZy5zaG93QnV0dG9uVGh1SG9pO1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50V29ya2Zsb3cgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5tb2RlbC5yZWFkeSA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gS2nhu4NtIHRyYSBu4bq/dSBhY2NvdW50IGzDoCBhZG1pbiB0aMOsIHTDrG0gbOG7i2NoIHPhu60gY3Xhu5FpIGPDuW5nIGPhu6dhIGLhuqNuIGdoaSDEkeG7gyB4w6FjIMSR4buLbmggd29ya2Zsb3cgY29kZVxuICAgICAgICAgICAgLy8gUGjhu6VjIHbhu6Ugdmnhu4djIHJldmVydCBk4buvIGxp4buHdSBs4buXaVxuICAgICAgICAgICAgaWYgKHVzZXJDdXJyZW50LnVzZXJOYW1lID09ICdhZG1pbicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbmRMYXN0SGlzdG9yeUFuZEdldERhdGEoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMud29ya2Zsb3dUaXRsZSA9ICdLaMO0bmcgeMOhYyDEkeG7i25oJztcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ1F1eSB0csOsbmggY+G7p2EgYuG6o24gZ2hpIMSRw6MgYuG7iyB4w7NhJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50V29ya2Zsb3cgPSB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLndvcmtmbG93VGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25zOiBbXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMud29ya2Zsb3dUaXRsZSA9IHRoaXMuY3VycmVudFdvcmtmbG93LnRpdGxlO1xuICAgICAgICAgICAgdGhpcy5tYWNoaW5lc0RhdGEgPSB0aGlzLmN1cnJlbnRXb3JrZmxvdy5kYXRhO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH1cblxuICAgIGluaXQoKSB7XG4gICAgICAgIHRoaXMubWFjaGluZUNvZGVLZXRUaHVjcyA9IHRoaXMuY3VycmVudFdvcmtmbG93LmRhdGEubWFjaGluZXMuZmlsdGVyKHEgPT4gcS50eXBlID09IEVudW1TdGF0ZVR5cGUuU1RPUCkubWFwKHEgPT4gcS5jb2RlKTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLm1vZGVsU2NoZW1hcyA9IFtcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAndXNlcklkQ3JlYXRlZCcsIG5hbWU6ICdOZ8aw4budaSBn4butaScsIGZ1bGxOYW1lOiAnTmfGsOG7nWkgZ+G7rWknLCBkZXNjcmlwdGlvbjogJycgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ2FjdGlvbkNvZGUnLCBuYW1lOiAnVGhhbyB0w6FjJywgZnVsbE5hbWU6ICdUaGFvIHTDoWMnLCBkZXNjcmlwdGlvbjogJycgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ3RpbWUnLCBuYW1lOiAnVGjhu51pIGdpYW4nLCBmdWxsTmFtZTogJ1Ro4budaSBnaWFuJywgZGVzY3JpcHRpb246ICcnIH0pLFxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICd1c2VySWRzJywgbmFtZTogJ05nxrDhu51pIG5o4bqtbicsIGZ1bGxOYW1lOiAnTmfGsOG7nWkgbmjhuq1uJywgZGVzY3JpcHRpb246ICcnIH0pLFxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICd1c2VyVmlld0lkcycsIG5hbWU6ICdOZ8aw4budaSB0aGVvIGTDtWknLCBmdWxsTmFtZTogJ05nxrDhu51pIHRoZW8gZMO1aScsIGRlc2NyaXB0aW9uOiAnJyB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnZG9uVmlJZHMnLCBuYW1lOiAnxJDGoW4gduG7iyBuaOG6rW4nLCBmdWxsTmFtZTogJ8SQxqFuIHbhu4sgbmjhuq1uJywgZGVzY3JpcHRpb246ICcnIH0pLFxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdkb25WaVZpZXdJZHMnLCBuYW1lOiAnxJDGoW4gduG7iyB0aGVvIGTDtWknLCBmdWxsTmFtZTogJ8SQxqFuIHbhu4sgdGhlbyBkw7VpJywgZGVzY3JpcHRpb246ICcnIH0pLFxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdncm91cElkcycsIG5hbWU6ICdOaMOzbSBuZ8aw4budaSBkw7luZyBuaOG6rW4nLCBmdWxsTmFtZTogJ05ow7NtIG5nxrDhu51pIGTDuW5nIG5o4bqtbicsIGRlc2NyaXB0aW9uOiAnJyB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnZ3JvdXBWaWV3SWRzJywgbmFtZTogJ05ow7NtIG5nxrDhu51pIGTDuW5nIHRoZW8gZMO1aScsIGZ1bGxOYW1lOiAnTmjDs20gbmfGsOG7nWkgZMO5bmcgdGhlbyBkw7VpJywgZGVzY3JpcHRpb246ICcnIH0pLFxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdyb2xlSWRzJywgbmFtZTogJ0No4bupYyB24bulIG5o4bqtbicsIGZ1bGxOYW1lOiAnQ2jhu6ljIHbhu6Ugbmjhuq1uJywgZGVzY3JpcHRpb246ICcnIH0pLFxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdyb2xlVmlld0lkcycsIG5hbWU6ICdDaOG7qWMgduG7pSB0aGVvIGTDtWknLCBmdWxsTmFtZTogJ0No4bupYyB24bulIHRoZW8gZMO1aScsIGRlc2NyaXB0aW9uOiAnJyB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnbm90ZScsIG5hbWU6ICfDnSBraeG6v24nLCBmdWxsTmFtZTogJ8OdIGtp4bq/bicsIGRlc2NyaXB0aW9uOiAnJyB9KVxuICAgICAgICBdO1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2VBY3Rpb24gPSB0aGlzLmNyZWF0ZURhdGFzb3VyY2VBY3Rpb24oKTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLmZpZWxkU2VhcmNoVGV4dCA9IFsnY29kZScsICd0ZW4nXTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLmNvbHMgPSBbXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICd1c2VySWRDcmVhdGVkJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEyJScsXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3VzZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ2Z1bGxOYW1lTmV3J1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdmdWxsQWN0aW9uQ29kZScsXG4gICAgICAgICAgICAgICAgZmllbGRGaWx0ZXI6ICdhY3Rpb25Db2RlJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0jDoG5oIMSR4buZbmcnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnOSUnLFxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IHRoaXMuZGF0YVNvdXJjZUFjdGlvbixcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGRJbkdyaWQ6ICdzaG9ydFRlbicsXG4gICAgICAgICAgICAgICAgdmFsdWVGaWVsZDogJ2NvZGUnLFxuICAgICAgICAgICAgICAgIGZ1bGxUZXh0U2VhcmNoOiB0cnVlXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3VzZXJJZHMnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdXNlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnZnVsbE5hbWVOZXcnLFxuICAgICAgICAgICAgICAgIGZpZWxkUGx1czogJ3VzZXJOYW1lJyxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBmb3JjZUdldERhdGE6IHRydWVcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAndXNlclZpZXdJZHMnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdXNlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnZnVsbE5hbWVOZXcnLFxuICAgICAgICAgICAgICAgIGZpZWxkUGx1czogJ3VzZXJOYW1lJyxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBmb3JjZUdldERhdGE6IHRydWVcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnZG9uVmlJZHMnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fY29DYXVUb0NodWNTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGZvcmNlR2V0RGF0YTogdHJ1ZVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdkb25WaVZpZXdJZHMnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fY29DYXVUb0NodWNTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGZvcmNlR2V0RGF0YTogdHJ1ZVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdncm91cElkcycsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNSUnLFxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl91c2VyR3JvdXBTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ25hbWUnLFxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGZvcmNlR2V0RGF0YTogdHJ1ZVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdncm91cFZpZXdJZHMnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdXNlckdyb3VwU2VydmljZSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6ICduYW1lJyxcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBmb3JjZUdldERhdGE6IHRydWVcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAncm9sZUlkcycsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNSUnLFxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9kbUNodWNWdVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZm9yY2VHZXREYXRhOiB0cnVlXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3JvbGVWaWV3SWRzJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1JScsXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2RtQ2h1Y1Z1U2VydmljZSxcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBmb3JjZUdldERhdGE6IHRydWVcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnbm90ZScsXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdub3RlJyxcbiAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICd0aW1lJyxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogRGF0YVR5cGUuZGF0ZXRpbWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNDBweCdcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAncmVjZWl2ZXInLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnTmfGsOG7nWkgbmjhuq1uJyxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3JlY2VpdmVyJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzI1MHB4JyxcbiAgICAgICAgICAgICAgICBzb3J0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2VcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAncmVjZWl2ZXJWaWV3JyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ05nxrDhu51pIHRoZW8gZMO1aScsXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdyZWNlaXZlclZpZXcnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjUwcHgnLFxuICAgICAgICAgICAgICAgIHNvcnQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGFsbG93RmlsdGVyOiBmYWxzZVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdmaWxlRGluaEtlbScsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnRmlsZSDEkcOtbmgga8OobScpLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnZmlsZURpbmhLZW0nLFxuICAgICAgICAgICAgICAgIGFsbG93RmlsdGVyOiBmYWxzZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgXTtcblxuICAgICAgICB0aGlzLm1vZGVsLnJlYWR5ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5taW5pbWl6ZURhdGFzb3VyY2VBY3Rpb24oKTtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB9XG5cbiAgICBhc3luYyBmaW5kTGFzdEhpc3RvcnlBbmRHZXREYXRhKCkge1xuICAgICAgICBjb25zdCBsYXN0SGlzdG9yeSA9IChhd2FpdCB0aGlzLl93b3JrZmxvd0hpc3RvcnlTZXJ2aWNlLmdldExhc3RCeUl0ZW1JZCh0aGlzLml0ZW0uaWQpKS5kYXRhO1xuICAgICAgICBpZiAoIWxhc3RIaXN0b3J5KSByZXR1cm47XG4gICAgICAgIHRoaXMuY3VycmVudFdvcmtmbG93ID0gdGhpcy53b3JrZmxvd1NldHRpbmcud29ya2Zsb3dzLmZpbmQocSA9PiBxLmNvZGUgPT0gbGFzdEhpc3Rvcnkud29ya2Zsb3dDb2RlKTtcbiAgICAgICAgdGhpcy5pdGVtLl9fd29ya2Zsb3dDb2RlID0gbGFzdEhpc3Rvcnkud29ya2Zsb3dDb2RlO1xuICAgICAgICAvLyB0aGlzLmFwcGVuZE1hY2hpbmVzQW5kQ29ubmVjdGlvbih0aGlzLmN1cnJlbnRXb3JrZmxvdy5kYXRhLCB0aGlzLm1hY2hpbmVzRGF0YSk7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRXb3JrZmxvdyA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy53b3JrZmxvd1RpdGxlID0gdGhpcy5jdXJyZW50V29ya2Zsb3cudGl0bGU7XG4gICAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH1cblxuICAgIGFzeW5jIHJlZ2VuZXJhdGVNYWNoaW5lRGF0YSgpIHtcbiAgICAgICAgdGhpcy5yZWFkeVRvUmF3ID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IG1hY2hpbmVzRGF0YSA9IHsgbWFjaGluZXM6IFtdLCBjb25uZWN0aW9uczogW10sIGRvTm90QWRqdXN0TG9jYWx0aW9uOiB0cnVlIH07XG4gICAgICAgIGlmICh0aGlzLm1hY2hpbmVzRGF0YSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLm1hY2hpbmVzRGF0YSA9IHsgbWFjaGluZXM6IFtdLCBjb25uZWN0aW9uczogW10gfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmpUZW1wID0geyBzdGFydDogMTAgfTtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMubW9kZWwuZGF0YVNvdXJjZS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgaXRlbUhpc3RvcnkgPSB0aGlzLm1vZGVsLmRhdGFTb3VyY2VbaV07XG4gICAgICAgICAgICBpZiAoaXRlbUhpc3Rvcnkuc3RhdHVzICE9IEVudW1Xb3JrZmxvd0hpc3RvcnlTdGF0dXMuSU5fTUFJTl9USFJFQUQpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHNvdXJjZVN0YXRlLCB0YXJnZXRTdGF0ZTtcbiAgICAgICAgICAgIHRoaXMubWFjaGluZXNEYXRhLm1hY2hpbmVzLmZvckVhY2gobWFjaGluZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG1hY2hpbmUuY29kZSA9PSBpdGVtSGlzdG9yeS5zb3VyY2VTdGF0dXNDb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZVN0YXRlID0gbWFjaGluZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG1hY2hpbmUuY29kZSA9PSBpdGVtSGlzdG9yeS50YXJnZXRTdGF0dXNDb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFN0YXRlID0gbWFjaGluZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChzb3VyY2VTdGF0ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldFN0YXRlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbGFzdFN0YXRlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1hY2hpbmVzRGF0YS5tYWNoaW5lcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0U3RhdGUgPSBtYWNoaW5lc0RhdGEubWFjaGluZXNbbWFjaGluZXNEYXRhLm1hY2hpbmVzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGxldCBuZXdTb3VyY2VTdGF0ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsYXN0U3RhdGUgJiYgbGFzdFN0YXRlLmNvZGUgPT0gc291cmNlU3RhdGUuY29kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3U291cmNlU3RhdGUgPSBsYXN0U3RhdGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdTb3VyY2VTdGF0ZSA9IHRoaXMuY2xvbmVNYWNoaW5lKHNvdXJjZVN0YXRlLCBvYmpUZW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVzRGF0YS5tYWNoaW5lcy5wdXNoKG5ld1NvdXJjZVN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdUYXJnZXRTdGF0ZSA9IHRoaXMuY2xvbmVNYWNoaW5lKHRhcmdldFN0YXRlLCBvYmpUZW1wKTtcbiAgICAgICAgICAgICAgICAgICAgbWFjaGluZXNEYXRhLm1hY2hpbmVzLnB1c2gobmV3VGFyZ2V0U3RhdGUpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb25uZWN0aW9uID0gdGhpcy5tYWNoaW5lc0RhdGEuY29ubmVjdGlvbnMuZmluZChxID0+IHEuc291cmNlID09IHNvdXJjZVN0YXRlLmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBxLnRhcmdldCA9PSB0YXJnZXRTdGF0ZS5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgcS5jb2RlID09IGl0ZW1IaXN0b3J5LmFjdGlvbkNvZGVcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVzRGF0YS5jb25uZWN0aW9ucy5wdXNoKHRoaXMuY2xvbmVDb25uZWN0aW9uKGNvbm5lY3Rpb24sIG5ld1NvdXJjZVN0YXRlLCBuZXdUYXJnZXRTdGF0ZSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGFyZ2V0U3RhdGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIG1hY2hpbmVzRGF0YS5tYWNoaW5lcy5wdXNoKHRoaXMuY2xvbmVNYWNoaW5lKHRhcmdldFN0YXRlLCBvYmpUZW1wKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hY2hpbmVzRGF0YS5jb25uZWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRDb25uZWN0aW9uID0gbWFjaGluZXNEYXRhLmNvbm5lY3Rpb25zLm1hcChxID0+ICh7IC4uLnEgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMubW9kZWwuZGF0YVNvdXJjZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRDb25uZWN0aW9uID0gW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBtYWNoaW5lc0RhdGEubWFjaGluZXNbMF0uaWRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIC8vIEtp4buDbSB0cmEgc3RhdGUgY3Xhu5FpLCBu4bq/dSBjaMawYSBwaOG6o2kgc3RhdGUga+G6v3QgdGjDumMgdGjDrCB24bq9IHRow6ptIGPDoWMgc3RhdGUgcGjDrWEgc2F1IMSR4buDIG5nxrDhu51pIGTDuW5nIGJp4bq/dCBjaOG6oXkgdGhlbyBoxrDhu5tuZyBuw6BvXG4gICAgICAgIGF3YWl0IHRoaXMuYXBwZW5kU3RhdGVBZnRlckxhc3RTdGF0ZShtYWNoaW5lc0RhdGEsIHRoaXMubWFjaGluZXNEYXRhLCBvYmpUZW1wLnN0YXJ0KTtcbiAgICAgICAgdGhpcy5tYWNoaW5lc0RhdGEgPSBtYWNoaW5lc0RhdGE7XG4gICAgICAgIHRoaXMud2FpdFRvRGV0YWNoID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5yZWFkeVRvUmF3ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBhc3luYyBhcHBlbmRTdGF0ZUFmdGVyTGFzdFN0YXRlKG1hY2hpbmVzRGF0YSwgbWFjaGluZXNEYXRhUmF3LCBsZWZ0KSB7XG4gICAgICAgIGlmIChtYWNoaW5lc0RhdGEubWFjaGluZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbGFzdE1hY2hpbmUgPSBtYWNoaW5lc0RhdGEubWFjaGluZXNbbWFjaGluZXNEYXRhLm1hY2hpbmVzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgaWYgKGxhc3RNYWNoaW5lLnR5cGUgPT0gRW51bVN0YXRlVHlwZS5TVE9QKSByZXR1cm47XG4gICAgICAgICAgICAvLyBM4bqleSByYSBjw6FjIGFjdGlvbiBtw6AgbmfGsOG7nWkgZMO5bmcgxJHGsOG7o2MgcGjDqXAgdGjhu7FjIGhp4buHblxuICAgICAgICAgICAgLy8gY29uc3QgYWN0aW9uQWxsb3dzID0gKGF3YWl0IHRoaXMuYnVzaW5lc3NTZXR0aW5nLmJhc2VTZXJ2aWNlLmdldEFjdGlvbkFsbG93KHRoaXMuaXRlbS5pZCkpLmRhdGE7XG4gICAgICAgICAgICAvLyBpZiAoIWFjdGlvbkFsbG93cykgcmV0dXJuO1xuICAgICAgICAgICAgbGV0IGluZGV4ID0gMTtcbiAgICAgICAgICAgIG1hY2hpbmVzRGF0YVJhdy5jb25uZWN0aW9ucy5maWx0ZXIocSA9PiBxLnNvdXJjZSA9PSBsYXN0TWFjaGluZS5yYXdJZClcbiAgICAgICAgICAgICAgICAuZm9yRWFjaChjb25uID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0TWFjaGluZSA9IG1hY2hpbmVzRGF0YVJhdy5tYWNoaW5lcy5maW5kKHEgPT4gcS5pZCA9PSBjb25uLnRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRNYWNoaW5lLmNvZGUgPT0gbGFzdE1hY2hpbmUuY29kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMuY2xvbmVDb25uZWN0aW9uKGNvbm4sIGxhc3RNYWNoaW5lLCBsYXN0TWFjaGluZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLmNvbm5lY3RvciA9ICdTdGF0ZU1hY2hpbmUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXNEYXRhLmNvbm5lY3Rpb25zLnB1c2goY29ubmVjdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdUYXJnZXRNYWNoaW5lID0gdGhpcy5jbG9uZU1hY2hpbmUodGFyZ2V0TWFjaGluZSwge30pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3VGFyZ2V0TWFjaGluZS5sb2NhdGlvbiA9IFtsZWZ0LCB0aGlzLnRvcERpc3RhbmNlICsgMTUwICogKGluZGV4IC0gMSldO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVzRGF0YS5jb25uZWN0aW9ucy5wdXNoKHRoaXMuY2xvbmVDb25uZWN0aW9uKGNvbm4sIGxhc3RNYWNoaW5lLCBuZXdUYXJnZXRNYWNoaW5lKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lc0RhdGEubWFjaGluZXMucHVzaChuZXdUYXJnZXRNYWNoaW5lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xvbmVNYWNoaW5lKG1hY2hpbmU6IGFueSwgb2JqVGVtcCkge1xuICAgICAgICBjb25zdCBuZXdJZCA9IHRoaXMuX2NvbW1vblNlcnZpY2UuZ3VpZCgpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAgICAgICAuLi5tYWNoaW5lLFxuICAgICAgICAgICAgbG9jYXRpb246IFtvYmpUZW1wLnN0YXJ0LCB0aGlzLnRvcERpc3RhbmNlXSxcbiAgICAgICAgICAgIHJhd0lkOiBtYWNoaW5lLmlkLFxuICAgICAgICAgICAgcmF3SWROZXc6IG5ld0lkLFxuICAgICAgICAgICAgaWQ6IG5ld0lkXG4gICAgICAgIH07XG4gICAgICAgIG9ialRlbXAuc3RhcnQgKz0gdGhpcy5zdGF0ZURpc3RhbmNlO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGNsb25lQ29ubmVjdGlvbihjb25uZWN0aW9uOiBhbnksIHNvdXJjZVN0YXRlOiBhbnksIHRhcmdldFN0YXRlOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmNvbm5lY3Rpb24sXG4gICAgICAgICAgICBzb3VyY2U6IHNvdXJjZVN0YXRlLmlkLFxuICAgICAgICAgICAgdGFyZ2V0OiB0YXJnZXRTdGF0ZS5pZFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGFzeW5jIG1pbmltaXplRGF0YXNvdXJjZUFjdGlvbigpIHtcbiAgICAgICAgY29uc3QgbHN0V29ya2Zsb3dIaXN0b3J5ID0gKGF3YWl0IHRoaXMuX3dvcmtmbG93SGlzdG9yeVNlcnZpY2UuZ2V0QWxsKHRoaXMuZ2V0RGVmYXVsdEZpbHRlcigpLCAnc291cmNlU3RhdHVzQ29kZSxhY3Rpb25Db2RlJykpLmRhdGE7XG4gICAgICAgIGNvbnN0IGRhdGFTb3VyY2UgPSB0aGlzLl93b3JrZmxvd1NldHRpbmdTZXJ2aWNlLm1pbmltaXplRGF0YXNvdXJjZUFjdGlvbih0aGlzLmRhdGFTb3VyY2VBY3Rpb24sIGxzdFdvcmtmbG93SGlzdG9yeSk7XG4gICAgICAgIHRoaXMuY3J1ZExpc3Quc2V0RHJvcGRvd25EYXRhc291cmNlKCdmdWxsQWN0aW9uQ29kZScsIGRhdGFTb3VyY2UpO1xuICAgIH1cblxuICAgIGNyZWF0ZURhdGFzb3VyY2VBY3Rpb24oKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXG4gICAgICAgICAgICB7IGNvZGU6IE1hQWN0aW9uQmF0RGF1UXV5VHJpbmgsIHRlbjogJ0Lhuq90IMSR4bqndSBxdXkgdHLDrG5oJywgYnVpbGRJbjogdHJ1ZSB9XG4gICAgICAgIF07XG4gICAgICAgIHJlc3VsdC5wdXNoKC4uLnRoaXMuX3dvcmtmbG93U2V0dGluZ1NlcnZpY2UucmVuZGVyRGF0YVNvdXJjZUFjdGlvbldvcmtmbG93KHRoaXMuY3VycmVudFdvcmtmbG93LmRhdGEpKTtcbiAgICAgICAgcmVzdWx0LnB1c2goXG4gICAgICAgICAgICB7IGNvZGU6IEFjdGlvblVwZGF0ZU1vZGVsLCB0ZW46ICdDaOG7iW5oIHPhu61hJywgYnVpbGRJbjogdHJ1ZSB9LFxuICAgICAgICAgICAgeyBjb2RlOiBBY3Rpb25DaG9ZS2llbkJhc2UsIHRlbjogJ0NobyDDvSBraeG6v24nLCBidWlsZEluOiB0cnVlIH0sXG4gICAgICAgICAgICB7IGNvZGU6IEFjdGlvblRodUhvaUJhc2UsIHRlbjogJ1RodSBo4buTaSB0aGFvIHTDoWMnLCBidWlsZEluOiB0cnVlIH1cbiAgICAgICAgKTtcbiAgICAgICAgcmVzdWx0LmZpbHRlcihxID0+IHEuYnVpbGRJbikuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGl0ZW0ucmF3Q29kZSA9IGl0ZW0uY29kZTtcbiAgICAgICAgICAgIGl0ZW0uc2hvcnRUZW4gPSBpdGVtLnRlbjtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREZWZhdWx0RmlsdGVyKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ3RhYmxlTmFtZScsIE9wZXJhdG9yLmVxdWFsLCB0aGlzLnRhYmxlTmFtZSksXG4gICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignaXRlbUlkJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMuaXRlbS5pZCksXG4gICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignd29ya2Zsb3dDb2RlJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMuaXRlbS5fX3dvcmtmbG93Q29kZSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBhc3luYyBtb2RpZnlHcmlkSW5mbyhncmlkSW5mbz86IEdyaWRJbmZvKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlckJ5QWN0aW9uQ29kZSA9IGdyaWRJbmZvLmZpbHRlcnMuZmluZChxID0+IHEuZmllbGQgPT0gJ2FjdGlvbkNvZGUnKTtcbiAgICAgICAgaWYgKGZpbHRlckJ5QWN0aW9uQ29kZSkge1xuICAgICAgICAgICAgY29uc3QgYXJyVmFsdWUgPSBKU09OLnBhcnNlKGZpbHRlckJ5QWN0aW9uQ29kZS52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBhcnJBY3Rpb25Db2RlID0gdGhpcy5kYXRhU291cmNlQWN0aW9uLmZpbHRlcihxID0+IGFyclZhbHVlLnNvbWUoeCA9PiB4ID09IHEuY29kZSkpLm1hcCh4ID0+IHgucmF3Q29kZSk7XG4gICAgICAgICAgICBmaWx0ZXJCeUFjdGlvbkNvZGUudmFsdWUgPSBKU09OLnN0cmluZ2lmeShhcnJBY3Rpb25Db2RlKTtcbiAgICAgICAgfVxuICAgICAgICBncmlkSW5mby5maWx0ZXJzLnVuc2hpZnQoXG4gICAgICAgICAgICAuLi50aGlzLmdldERlZmF1bHRGaWx0ZXIoKVxuICAgICAgICApO1xuXG4gICAgICAgIGdyaWRJbmZvLnNvcnRzLnVuc2hpZnQodGhpcy5uZXdTb3J0KCdjcmVhdGVkJywgLTEpKTtcbiAgICB9XG5cbiAgICBhc3luYyBiZWZvcmVSZW5kZXJEYXRhU291cmNlKGRhdGFTb3VyY2UpIHtcbiAgICAgICAgLy8gRHV54buHdCB04burbmcgaGlzdG9yeSDEkeG7gyBjaOG7iSBoaeG7g24gdGjhu4sgbHXhu5NuZyBoaeG7h24gdOG6oWkgY+G7p2EgcXV5IHRyw6xuaC4gayBoaeG7g24gdGjhu4sgY8OhYyBixrDhu5tjIHRo4burYVxuICAgICAgICBkYXRhU291cmNlLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpdGVtLmZ1bGxBY3Rpb25Db2RlID0gaXRlbS5hY3Rpb25Db2RlO1xuICAgICAgICAgICAgaWYgKGl0ZW0uYWN0aW9uQ29kZSAhPSBNYUFjdGlvbkJhdERhdVF1eVRyaW5oXG4gICAgICAgICAgICAgICAgJiYgaXRlbS5hY3Rpb25Db2RlICE9IEFjdGlvblVwZGF0ZU1vZGVsXG4gICAgICAgICAgICAgICAgJiYgaXRlbS5hY3Rpb25Db2RlICE9IEFjdGlvbkNob1lLaWVuQmFzZVxuICAgICAgICAgICAgICAgICYmIGl0ZW0uYWN0aW9uQ29kZSAhPSBBY3Rpb25UaHVIb2lCYXNlXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBpdGVtLmZ1bGxBY3Rpb25Db2RlID0gYCR7aXRlbS5zb3VyY2VTdGF0dXNDb2RlfV9fXyR7aXRlbS5hY3Rpb25Db2RlfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNwbGl0TGlzdChpdGVtLCAndXNlcklkcycpO1xuICAgICAgICAgICAgdGhpcy5zcGxpdExpc3QoaXRlbSwgJ3VzZXJWaWV3SWRzJyk7XG4gICAgICAgICAgICB0aGlzLnNwbGl0TGlzdChpdGVtLCAnZG9uVmlJZHMnKTtcbiAgICAgICAgICAgIHRoaXMuc3BsaXRMaXN0KGl0ZW0sICdkb25WaVZpZXdJZHMnKTtcbiAgICAgICAgICAgIHRoaXMuc3BsaXRMaXN0KGl0ZW0sICdncm91cElkcycpO1xuICAgICAgICAgICAgdGhpcy5zcGxpdExpc3QoaXRlbSwgJ2dyb3VwVmlld0lkcycpO1xuICAgICAgICAgICAgdGhpcy5zcGxpdExpc3QoaXRlbSwgJ3JvbGVJZHMnKTtcbiAgICAgICAgICAgIHRoaXMuc3BsaXRMaXN0KGl0ZW0sICdyb2xlVmlld0lkcycpO1xuICAgICAgICAgICAgaWYgKCFpdGVtLmNvbFNwYW4pIGl0ZW0uY29sU3BhbiA9IHt9O1xuICAgICAgICAgICAgaWYgKCFpdGVtLmhpZGRlbikgaXRlbS5oaWRkZW4gPSB7fTtcbiAgICAgICAgICAgIGlmIChpdGVtLnN0YXR1cyA9PSBFbnVtV29ya2Zsb3dIaXN0b3J5U3RhdHVzLk5PVF9JTl9NQUlOX1RIUkVBRCkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmFjdGlvbkNvZGUgPT0gQWN0aW9uVXBkYXRlTW9kZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5jb2xTcGFuWydyZWNlaXZlciddID0gMjtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5oaWRkZW5bJ3JlY2VpdmVyVmlldyddID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uanNvbk1vZGVsQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmpzb25Nb2RlbENoYW5nZSA9IEpTT04ucGFyc2UoaXRlbS5qc29uTW9kZWxDaGFuZ2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5qc29uTW9kZWxDaGFuZ2UgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpdGVtLmFjdGlvbkNvZGUgPT0gQWN0aW9uVGh1SG9pQmFzZSkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmNsYXNzID0gJ3JlY2FsbGVkJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpdGVtLnN0YXR1cyA9PSBFbnVtV29ya2Zsb3dIaXN0b3J5U3RhdHVzLlJFQ0FMTEVEKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5jbGFzcyA9ICdyZWNhbGxlZCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzeW5jIGFmdGVyR2V0RGF0YSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmdlbmVyYXRlZCkge1xuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5yZWdlbmVyYXRlTWFjaGluZURhdGEoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3BsaXRMaXN0KGl0ZW06IGFueSwgZmllbGQ6IHN0cmluZykge1xuICAgICAgICBpZiAoaXRlbVtmaWVsZF0pIHtcbiAgICAgICAgICAgIGl0ZW1bZmllbGRdID0gaXRlbVtmaWVsZF0uc3BsaXQoJywnKS5maWx0ZXIocSA9PiAhIXEpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaXRlbVtmaWVsZF0gPSBbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVJvd1NlbGVjdChldnQpIHtcbiAgICAgICAgdGhpcy5zZXRDdXJyZW50Q29ubmVjdGlvbih0aGlzLm1vZGVsLnNlbGVjdGVkSXRlbSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRDdXJyZW50Q29ubmVjdGlvbihpdGVtSGlzdG9yeSkge1xuICAgICAgICBpZiAoIWl0ZW1IaXN0b3J5XG4gICAgICAgICAgICB8fCBpdGVtSGlzdG9yeS5zdGF0dXMgIT0gRW51bVdvcmtmbG93SGlzdG9yeVN0YXR1cy5JTl9NQUlOX1RIUkVBRFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudENvbm5lY3Rpb24gPSB0aGlzLm1vZGVsLmRhdGFTb3VyY2UuZmlsdGVyKHEgPT4gcS5zdGF0dXMgPT0gRW51bVdvcmtmbG93SGlzdG9yeVN0YXR1cy5JTl9NQUlOX1RIUkVBRClcbiAgICAgICAgICAgICAgICAubWFwKHEgPT4gdGhpcy5nZXRDb25uZWN0aW9uRnJvbUhpc3RvcnkocSkpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudENvbm5lY3Rpb24gPSBbXG4gICAgICAgICAgICB0aGlzLmdldENvbm5lY3Rpb25Gcm9tSGlzdG9yeShpdGVtSGlzdG9yeSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbm5lY3Rpb25Gcm9tSGlzdG9yeShpdGVtSGlzdG9yeTogYW55KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzb3VyY2VDb2RlOiBpdGVtSGlzdG9yeS5zb3VyY2VTdGF0dXNDb2RlLFxuICAgICAgICAgICAgdGFyZ2V0Q29kZTogaXRlbUhpc3RvcnkudGFyZ2V0U3RhdHVzQ29kZSxcbiAgICAgICAgICAgIGFjdGlvbkNvZGU6IGl0ZW1IaXN0b3J5LmFjdGlvbkNvZGVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICByb2xsYmFja0J5SGlzdG9yeShyb3dEYXRhKSB7XG4gICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93Q29uZmlybSgnQuG6oW4gY8OzIGNo4bqvYyBjaOG6r24gbXXhu5FuIHRodSBo4buTaSB0aGFvIHTDoWMgduG7gSBs4buLY2ggc+G7rSDEkcOjIGNo4buNbicpXG4gICAgICAgICAgICAudGhlbihyZXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghcmVzKSByZXR1cm47XG4gICAgICAgICAgICAgICAgbGV0IG5hbWUgPSAnJztcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnVzaW5lc3NTZXR0aW5nLmRpc3BsYXlGaWVsZCA9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICBuYW1lID0gdGhpcy5pdGVtWzxzdHJpbmc+KHRoaXMuYnVzaW5lc3NTZXR0aW5nLmRpc3BsYXlGaWVsZCldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICg8RnVuY3Rpb24+KHRoaXMuYnVzaW5lc3NTZXR0aW5nLmRpc3BsYXlGaWVsZCkpKHRoaXMuaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuYnVzaW5lc3NTZXR0aW5nLmJhc2VTZXJ2aWNlLnJvbGxiYWNrQnlIaXN0b3J5KFxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW0uaWQsIHJvd0RhdGEuaWQsXG4gICAgICAgICAgICAgICAgICAgIFt0aGlzLmJ1c2luZXNzU2V0dGluZy5iYXNlU2VydmljZS5vYmplY3ROYW1lLCBuYW1lXVxuICAgICAgICAgICAgICAgICkudGhlbihyZXMgPT4gdGhpcy5oYW5kbGVSZXNwb25zZShyZXMsICdUaHUgaOG7k2kgdGhhbyB0w6FjIHRow6BuaCBjw7RuZycsIGYgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmlnZ2VyUHJvY2Vzc0RhdGEoKTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBhZnRlclJlbG9hZGVkKCkge1xuICAgICAgICB0aGlzLmZpbGVEYXRhU2VydmljZS5nZXREYXRhKCk7XG4gICAgfVxufVxuIl19
517
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctaGlzdG9yeS1uZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvd29ya2Zsb3cvd29ya2Zsb3ctaGlzdG9yeS1uZXcvd29ya2Zsb3ctaGlzdG9yeS1uZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUU5SSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDakYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbEgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFROUUsTUFBTSxPQUFP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WUFEcEIsZUFBZTtZQUdmLGVBQWU7Ozs4QkFlbkIsS0FBSzs2QkFHTCxLQUFLO3dCQUNMLEtBQUs7bUJBQ0wsS0FBSzs4QkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGFMaXN0QmFzZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvYmFzZS9kYXRhLWxpc3QtYmFzZSc7XG5pbXBvcnQgeyBDb2x1bW5TY2hlbWFCYXNlLCBDcnVkTGlzdFNldHRpbmcsIERhdGFUeXBlLCBFbnVtRmlsZUxheW91dCwgSGVpZ2h0VHlwZSwgTW9kZWxTY2hlbWEsIE9wZXJhdG9yIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XG5pbXBvcnQgeyBHcmlkSW5mbyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9ncmlkLWluZm8nO1xuaW1wb3J0IHsgRG1DaHVjVnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZG0tY2h1Y3Z1LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlckdyb3VwUmVhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91c2VyLWdyb3VwLXJlYWwuc2VydmljZSc7XG5pbXBvcnQgeyBDb0NhdVRvQ2h1Y1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb2NhdXRvY2h1Yy9zZXJ2aWNlcy9jb2NhdXRvY2h1Yy5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbGVEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL2ZpbGUtZXhwbG9yZXIvc2VydmljZXMvZmlsZS1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgRW51bVN0YXRlVHlwZSwgRW51bVdvcmtmbG93SGlzdG9yeVN0YXR1cyB9IGZyb20gJy4uLy4uL3N0YXRlbWFjaGluZXMvbW9kZWxzL2VudW1zJztcbmltcG9ydCB7IEpzUGx1bWJPcHRpb24gfSBmcm9tICcuLi8uLi9zdGF0ZW1hY2hpbmVzL21vZGVscy9tb2RlbHMnO1xuaW1wb3J0IHsgQWN0aW9uQ2hvWUtpZW5CYXNlLCBBY3Rpb25UaHVIb2lCYXNlLCBBY3Rpb25VcGRhdGVNb2RlbCwgTWFBY3Rpb25CYXREYXVRdXlUcmluaCB9IGZyb20gJy4uL21vZGVscy9jb25zdCc7XG5pbXBvcnQgeyBXZlNjaGVtYSB9IGZyb20gJy4uL21vZGVscy9tb2RlbHMnO1xuaW1wb3J0IHsgV29ya2Zsb3dIaXN0b3J5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3dvcmtmbG93LWhpc3Rvcnkuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnd29ya2Zsb3ctaGlzdG9yeS1uZXcnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1oaXN0b3J5LW5ldy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vd29ya2Zsb3ctaGlzdG9yeS1uZXcuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dIaXN0b3J5TmV3Q29tcG9uZW50IGV4dGVuZHMgRGF0YUxpc3RCYXNlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcblxuICAgIEBJbnB1dCgpIGJ1c2luZXNzU2V0dGluZzogQ3J1ZExpc3RTZXR0aW5nO1xuICAgIC8vIEzDoCBmb3JtIGzhu4tjaCBz4butIGPhu6dhIHRhc2sgbmjGsG5nIG3hu58gdOG7qyBnaWFvIGRp4buHbiBj4bunYSDEkeG7kWkgdMaw4bujbmcgbcOgIHRhc2sgZ+G6r24gdsOgb1xuICAgIC8vIOG7niBmb3JtIG7DoHkgdGjDrCBjaOG7iSB4ZW0gbOG7i2NoIHPhu60gY2jhu6kgayBkYyBsw6BtIGfDrCBo4bq/dFxuICAgIEBJbnB1dCgpIGlzUmVsYXRpdmVGb3JtOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgdGFibGVOYW1lOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaXRlbTogYW55O1xuICAgIEBJbnB1dCgpIHdvcmtmbG93U2V0dGluZzogYW55O1xuXG4gICAgbGF5b3V0RmlsZSA9IEVudW1GaWxlTGF5b3V0O1xuICAgIGVudW1Xb3JrZmxvd0hpc3RvcnlTdGF0dXMgPSBFbnVtV29ya2Zsb3dIaXN0b3J5U3RhdHVzO1xuICAgIGZpbGVEYXRhU2VydmljZTogRmlsZURhdGFTZXJ2aWNlO1xuICAgIGN1cnJlbnRXb3JrZmxvdzoge1xuICAgICAgICB0aXRsZTogc3RyaW5nLFxuICAgICAgICBkYXRhOiBXZlNjaGVtYVxuICAgIH07XG4gICAgd2FpdFRvRGV0YWNoOiBib29sZWFuID0gZmFsc2U7XG4gICAgcmVhZHlUb1JhdzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHdvcmtmbG93VGl0bGU6IHN0cmluZztcbiAgICBtYWNoaW5lc0RhdGE6IGFueSA9IHsgbWFjaGluZXM6IFtdLCBjb25uZWN0aW9uczogW10gfTtcbiAgICBqc1BsdW1iT3B0aW9uOiBKc1BsdW1iT3B0aW9uID0gbmV3IEpzUGx1bWJPcHRpb24oe1xuICAgICAgICBTdHJhaWdodENvbm5lY3Rpb246IHRydWUsXG4gICAgICAgIENlbnRlckNvbm5lY3Rpb25MYWJlbDogdHJ1ZVxuICAgIH0pO1xuICAgIGN1cnJlbnRDb25uZWN0aW9uOiBhbnk7XG4gICAgbWFjaGluZUNvZGVLZXRUaHVjczogc3RyaW5nW107XG4gICAgZ2VuZXJhdGVkID0gZmFsc2U7XG4gICAgZGF0YVNvdXJjZUFjdGlvbjogYW55W10gPSBbXTtcbiAgICBzdGF0ZURpc3RhbmNlID0gMzUwO1xuICAgIHRvcERpc3RhbmNlID0gODA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHB1YmxpYyBfd29ya2Zsb3dIaXN0b3J5U2VydmljZTogV29ya2Zsb3dIaXN0b3J5U2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIF9jb0NhdVRvQ2h1Y1NlcnZpY2U6IENvQ2F1VG9DaHVjU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIF91c2VyR3JvdXBTZXJ2aWNlOiBVc2VyR3JvdXBSZWFsU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIF9kbUNodWNWdVNlcnZpY2U6IERtQ2h1Y1Z1U2VydmljZSxcbiAgICAgICAgX2ZpbGVEYXRhU2VydmljZTogRmlsZURhdGFTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XG4gICAgICAgIHRoaXMuZmlsZURhdGFTZXJ2aWNlID0gX2ZpbGVEYXRhU2VydmljZTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5sb2FkRGV0YWlsRnJvbVF1ZXJ5UGFyYW0gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLmJhc2VTZXJ2aWNlID0gdGhpcy5fd29ya2Zsb3dIaXN0b3J5U2VydmljZTtcbiAgICAgICAgdGhpcy5fd29ya2Zsb3dIaXN0b3J5U2VydmljZS5jaGFuZ2VFbmRwb2ludCh0aGlzLmJ1c2luZXNzU2V0dGluZy5iYXNlU2VydmljZSk7XG4gICAgICAgIHRoaXMuc2V0dGluZy5tdWx0aXBsZUNoZWNrV2hlbkNsaWNrUm93ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2V0dGluZy5zZXR0aW5nS2V5ID0gJ19fd29ya2Zsb3cnO1xuICAgICAgICB0aGlzLmN1cnJlbnRXb3JrZmxvdyA9IHRoaXMud29ya2Zsb3dTZXR0aW5nLndvcmtmbG93cy5maW5kKHEgPT4gcS5jb2RlID09IHRoaXMuaXRlbS5fX3dvcmtmbG93Q29kZSk7XG5cbiAgICAgICAgdGhpcy5zZXR0aW5nLnRpdGxlID0gJyc7XG4gICAgICAgIHRoaXMuc2V0dGluZy5oZWlnaHRUeXBlID0gSGVpZ2h0VHlwZS5keW5hbWljO1xuICAgICAgICB0aGlzLnNldHRpbmcuc2hvd0VkaXRMaW5rID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5CdXR0b25zID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkNoZWNrYm94ID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgdXNlckN1cnJlbnQgPSB0aGlzLl91c2VyU2VydmljZS5nZXRDdXJyZW50VXNlcigpO1xuICAgICAgICBpZiAodXNlckN1cnJlbnQudXNlck5hbWUgIT0gJ2FkbWluJyB8fCB0aGlzLmlzUmVsYXRpdmVGb3JtKSB7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuRnVuY3Rpb25Db2x1bW4gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy50YWJsZU5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGVOYW1lID0gdGhpcy5idXNpbmVzc1NldHRpbmcuYmFzZVNlcnZpY2UuZW50aXR5TmFtZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuRnVuY3Rpb25Db2x1bW4gPSAhdGhpcy5idXNpbmVzc1NldHRpbmcuc2hvd0J1dHRvblRodUhvaTtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFdvcmtmbG93ID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZWwucmVhZHkgPSBmYWxzZTtcbiAgICAgICAgICAgIC8vIEtp4buDbSB0cmEgbuG6v3UgYWNjb3VudCBsw6AgYWRtaW4gdGjDrCB0w6xtIGzhu4tjaCBz4butIGN14buRaSBjw7luZyBj4bunYSBi4bqjbiBnaGkgxJHhu4MgeMOhYyDEkeG7i25oIHdvcmtmbG93IGNvZGVcbiAgICAgICAgICAgIC8vIFBo4bulYyB24bulIHZp4buHYyByZXZlcnQgZOG7ryBsaeG7h3UgbOG7l2lcbiAgICAgICAgICAgIGlmICh1c2VyQ3VycmVudC51c2VyTmFtZSA9PSAnYWRtaW4nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maW5kTGFzdEhpc3RvcnlBbmRHZXREYXRhKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLndvcmtmbG93VGl0bGUgPSAnS2jDtG5nIHjDoWMgxJHhu4tuaCc7XG4gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nKCdRdXkgdHLDrG5oIGPhu6dhIGLhuqNuIGdoaSDEkcOjIGLhu4sgeMOzYScpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFdvcmtmbG93ID0ge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy53b3JrZmxvd1RpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lczogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uczogW11cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLndvcmtmbG93VGl0bGUgPSB0aGlzLmN1cnJlbnRXb3JrZmxvdy50aXRsZTtcbiAgICAgICAgICAgIHRoaXMubWFjaGluZXNEYXRhID0gdGhpcy5jdXJyZW50V29ya2Zsb3cuZGF0YTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluaXQoKTtcbiAgICB9XG5cbiAgICBpbml0KCkge1xuICAgICAgICB0aGlzLm1hY2hpbmVDb2RlS2V0VGh1Y3MgPSB0aGlzLmN1cnJlbnRXb3JrZmxvdy5kYXRhLm1hY2hpbmVzLmZpbHRlcihxID0+IHEudHlwZSA9PSBFbnVtU3RhdGVUeXBlLlNUT1ApLm1hcChxID0+IHEuY29kZSk7XG4gICAgICAgIHRoaXMuc2V0dGluZy5tb2RlbFNjaGVtYXMgPSBbXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ3VzZXJJZENyZWF0ZWQnLCBuYW1lOiAnTmfGsOG7nWkgZ+G7rWknLCBmdWxsTmFtZTogJ05nxrDhu51pIGfhu61pJywgZGVzY3JpcHRpb246ICcnIH0pLFxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdhY3Rpb25Db2RlJywgbmFtZTogJ1RoYW8gdMOhYycsIGZ1bGxOYW1lOiAnVGhhbyB0w6FjJywgZGVzY3JpcHRpb246ICcnIH0pLFxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICd0aW1lJywgbmFtZTogJ1Ro4budaSBnaWFuJywgZnVsbE5hbWU6ICdUaOG7nWkgZ2lhbicsIGRlc2NyaXB0aW9uOiAnJyB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAndXNlcklkcycsIG5hbWU6ICdOZ8aw4budaSBuaOG6rW4nLCBmdWxsTmFtZTogJ05nxrDhu51pIG5o4bqtbicsIGRlc2NyaXB0aW9uOiAnJyB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAndXNlclZpZXdJZHMnLCBuYW1lOiAnTmfGsOG7nWkgdGhlbyBkw7VpJywgZnVsbE5hbWU6ICdOZ8aw4budaSB0aGVvIGTDtWknLCBkZXNjcmlwdGlvbjogJycgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ2RvblZpSWRzJywgbmFtZTogJ8SQxqFuIHbhu4sgbmjhuq1uJywgZnVsbE5hbWU6ICfEkMahbiB24buLIG5o4bqtbicsIGRlc2NyaXB0aW9uOiAnJyB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnZG9uVmlWaWV3SWRzJywgbmFtZTogJ8SQxqFuIHbhu4sgdGhlbyBkw7VpJywgZnVsbE5hbWU6ICfEkMahbiB24buLIHRoZW8gZMO1aScsIGRlc2NyaXB0aW9uOiAnJyB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnZ3JvdXBJZHMnLCBuYW1lOiAnTmjDs20gbmfGsOG7nWkgZMO5bmcgbmjhuq1uJywgZnVsbE5hbWU6ICdOaMOzbSBuZ8aw4budaSBkw7luZyBuaOG6rW4nLCBkZXNjcmlwdGlvbjogJycgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ2dyb3VwVmlld0lkcycsIG5hbWU6ICdOaMOzbSBuZ8aw4budaSBkw7luZyB0aGVvIGTDtWknLCBmdWxsTmFtZTogJ05ow7NtIG5nxrDhu51pIGTDuW5nIHRoZW8gZMO1aScsIGRlc2NyaXB0aW9uOiAnJyB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAncm9sZUlkcycsIG5hbWU6ICdDaOG7qWMgduG7pSBuaOG6rW4nLCBmdWxsTmFtZTogJ0No4bupYyB24bulIG5o4bqtbicsIGRlc2NyaXB0aW9uOiAnJyB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAncm9sZVZpZXdJZHMnLCBuYW1lOiAnQ2jhu6ljIHbhu6UgdGhlbyBkw7VpJywgZnVsbE5hbWU6ICdDaOG7qWMgduG7pSB0aGVvIGTDtWknLCBkZXNjcmlwdGlvbjogJycgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ25vdGUnLCBuYW1lOiAnw50ga2nhur9uJywgZnVsbE5hbWU6ICfDnSBraeG6v24nLCBkZXNjcmlwdGlvbjogJycgfSlcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlQWN0aW9uID0gdGhpcy5jcmVhdGVEYXRhc291cmNlQWN0aW9uKCk7XG4gICAgICAgIHRoaXMuc2V0dGluZy5maWVsZFNlYXJjaFRleHQgPSBbJ2NvZGUnLCAndGVuJ107XG4gICAgICAgIHRoaXMuc2V0dGluZy5jb2xzID0gW1xuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAndXNlcklkQ3JlYXRlZCcsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMiUnLFxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl91c2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6ICdmdWxsTmFtZU5ldydcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnZnVsbEFjdGlvbkNvZGUnLFxuICAgICAgICAgICAgICAgIGZpZWxkRmlsdGVyOiAnYWN0aW9uQ29kZScsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdIw6BuaCDEkeG7mW5nJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzklJyxcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlOiB0aGlzLmRhdGFTb3VyY2VBY3Rpb24sXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkSW5HcmlkOiAnc2hvcnRUZW4nLFxuICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ6ICdjb2RlJyxcbiAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICd1c2VySWRzJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1JScsXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3VzZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ2Z1bGxOYW1lTmV3JyxcbiAgICAgICAgICAgICAgICBmaWVsZFBsdXM6ICd1c2VyTmFtZScsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZm9yY2VHZXREYXRhOiB0cnVlXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3VzZXJWaWV3SWRzJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1JScsXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3VzZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ2Z1bGxOYW1lTmV3JyxcbiAgICAgICAgICAgICAgICBmaWVsZFBsdXM6ICd1c2VyTmFtZScsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZm9yY2VHZXREYXRhOiB0cnVlXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2RvblZpSWRzJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1JScsXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2NvQ2F1VG9DaHVjU2VydmljZSxcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBmb3JjZUdldERhdGE6IHRydWVcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnZG9uVmlWaWV3SWRzJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1JScsXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2NvQ2F1VG9DaHVjU2VydmljZSxcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBmb3JjZUdldERhdGE6IHRydWVcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnZ3JvdXBJZHMnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdXNlckdyb3VwU2VydmljZSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6ICduYW1lJyxcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBmb3JjZUdldERhdGE6IHRydWVcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnZ3JvdXBWaWV3SWRzJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1JScsXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3VzZXJHcm91cFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnbmFtZScsXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZm9yY2VHZXREYXRhOiB0cnVlXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3JvbGVJZHMnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fZG1DaHVjVnVTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGZvcmNlR2V0RGF0YTogdHJ1ZVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdyb2xlVmlld0lkcycsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNSUnLFxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9kbUNodWNWdVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZm9yY2VHZXREYXRhOiB0cnVlXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ25vdGUnLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnbm90ZScsXG4gICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWVcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAndGltZScsXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6IERhdGFUeXBlLmRhdGV0aW1lLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTQwcHgnXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3JlY2VpdmVyJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ05nxrDhu51pIG5o4bqtbicsXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdyZWNlaXZlcicsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcyNTBweCcsXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXG4gICAgICAgICAgICAgICAgYWxsb3dGaWx0ZXI6IGZhbHNlXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3JlY2VpdmVyVmlldycsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdOZ8aw4budaSB0aGVvIGTDtWknLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAncmVjZWl2ZXJWaWV3JyxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzI1MHB4JyxcbiAgICAgICAgICAgICAgICBzb3J0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2VcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnZmlsZURpbmhLZW0nLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0ZpbGUgxJHDrW5oIGvDqG0nKSxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2ZpbGVEaW5oS2VtJyxcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogIXRoaXMuYnVzaW5lc3NTZXR0aW5nLnNob3dGaWxlTWFuYWdlckZyb21XZlByb2Nlc3NcbiAgICAgICAgICAgIH0pXG4gICAgICAgIF07XG5cbiAgICAgICAgdGhpcy5tb2RlbC5yZWFkeSA9IHRydWU7XG4gICAgICAgIHRoaXMubWluaW1pemVEYXRhc291cmNlQWN0aW9uKCk7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZmluZExhc3RIaXN0b3J5QW5kR2V0RGF0YSgpIHtcbiAgICAgICAgY29uc3QgbGFzdEhpc3RvcnkgPSAoYXdhaXQgdGhpcy5fd29ya2Zsb3dIaXN0b3J5U2VydmljZS5nZXRMYXN0QnlJdGVtSWQodGhpcy5pdGVtLmlkKSkuZGF0YTtcbiAgICAgICAgaWYgKCFsYXN0SGlzdG9yeSkgcmV0dXJuO1xuICAgICAgICB0aGlzLmN1cnJlbnRXb3JrZmxvdyA9IHRoaXMud29ya2Zsb3dTZXR0aW5nLndvcmtmbG93cy5maW5kKHEgPT4gcS5jb2RlID09IGxhc3RIaXN0b3J5LndvcmtmbG93Q29kZSk7XG4gICAgICAgIHRoaXMuaXRlbS5fX3dvcmtmbG93Q29kZSA9IGxhc3RIaXN0b3J5LndvcmtmbG93Q29kZTtcbiAgICAgICAgLy8gdGhpcy5hcHBlbmRNYWNoaW5lc0FuZENvbm5lY3Rpb24odGhpcy5jdXJyZW50V29ya2Zsb3cuZGF0YSwgdGhpcy5tYWNoaW5lc0RhdGEpO1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50V29ya2Zsb3cgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMud29ya2Zsb3dUaXRsZSA9IHRoaXMuY3VycmVudFdvcmtmbG93LnRpdGxlO1xuICAgICAgICB0aGlzLmluaXQoKTtcbiAgICB9XG5cbiAgICBhc3luYyByZWdlbmVyYXRlTWFjaGluZURhdGEoKSB7XG4gICAgICAgIHRoaXMucmVhZHlUb1JhdyA9IGZhbHNlO1xuICAgICAgICBjb25zdCBtYWNoaW5lc0RhdGEgPSB7IG1hY2hpbmVzOiBbXSwgY29ubmVjdGlvbnM6IFtdLCBkb05vdEFkanVzdExvY2FsdGlvbjogdHJ1ZSB9O1xuICAgICAgICBpZiAodGhpcy5tYWNoaW5lc0RhdGEgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5tYWNoaW5lc0RhdGEgPSB7IG1hY2hpbmVzOiBbXSwgY29ubmVjdGlvbnM6IFtdIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb2JqVGVtcCA9IHsgc3RhcnQ6IDEwIH07XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLm1vZGVsLmRhdGFTb3VyY2UubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1IaXN0b3J5ID0gdGhpcy5tb2RlbC5kYXRhU291cmNlW2ldO1xuICAgICAgICAgICAgaWYgKGl0ZW1IaXN0b3J5LnN0YXR1cyAhPSBFbnVtV29ya2Zsb3dIaXN0b3J5U3RhdHVzLklOX01BSU5fVEhSRUFEKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBzb3VyY2VTdGF0ZSwgdGFyZ2V0U3RhdGU7XG4gICAgICAgICAgICB0aGlzLm1hY2hpbmVzRGF0YS5tYWNoaW5lcy5mb3JFYWNoKG1hY2hpbmUgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChtYWNoaW5lLmNvZGUgPT0gaXRlbUhpc3Rvcnkuc291cmNlU3RhdHVzQ29kZSkge1xuICAgICAgICAgICAgICAgICAgICBzb3VyY2VTdGF0ZSA9IG1hY2hpbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChtYWNoaW5lLmNvZGUgPT0gaXRlbUhpc3RvcnkudGFyZ2V0U3RhdHVzQ29kZSkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRTdGF0ZSA9IG1hY2hpbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoc291cmNlU3RhdGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXRTdGF0ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxhc3RTdGF0ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtYWNoaW5lc0RhdGEubWFjaGluZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFN0YXRlID0gbWFjaGluZXNEYXRhLm1hY2hpbmVzW21hY2hpbmVzRGF0YS5tYWNoaW5lcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsZXQgbmV3U291cmNlU3RhdGUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBpZiAobGFzdFN0YXRlICYmIGxhc3RTdGF0ZS5jb2RlID09IHNvdXJjZVN0YXRlLmNvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NvdXJjZVN0YXRlID0gbGFzdFN0YXRlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3U291cmNlU3RhdGUgPSB0aGlzLmNsb25lTWFjaGluZShzb3VyY2VTdGF0ZSwgb2JqVGVtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lc0RhdGEubWFjaGluZXMucHVzaChuZXdTb3VyY2VTdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3VGFyZ2V0U3RhdGUgPSB0aGlzLmNsb25lTWFjaGluZSh0YXJnZXRTdGF0ZSwgb2JqVGVtcCk7XG4gICAgICAgICAgICAgICAgICAgIG1hY2hpbmVzRGF0YS5tYWNoaW5lcy5wdXNoKG5ld1RhcmdldFN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMubWFjaGluZXNEYXRhLmNvbm5lY3Rpb25zLmZpbmQocSA9PiBxLnNvdXJjZSA9PSBzb3VyY2VTdGF0ZS5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgcS50YXJnZXQgPT0gdGFyZ2V0U3RhdGUuaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIHEuY29kZSA9PSBpdGVtSGlzdG9yeS5hY3Rpb25Db2RlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lc0RhdGEuY29ubmVjdGlvbnMucHVzaCh0aGlzLmNsb25lQ29ubmVjdGlvbihjb25uZWN0aW9uLCBuZXdTb3VyY2VTdGF0ZSwgbmV3VGFyZ2V0U3RhdGUpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRhcmdldFN0YXRlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBtYWNoaW5lc0RhdGEubWFjaGluZXMucHVzaCh0aGlzLmNsb25lTWFjaGluZSh0YXJnZXRTdGF0ZSwgb2JqVGVtcCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtYWNoaW5lc0RhdGEuY29ubmVjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50Q29ubmVjdGlvbiA9IG1hY2hpbmVzRGF0YS5jb25uZWN0aW9ucy5tYXAocSA9PiAoeyAuLi5xIH0pKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLm1vZGVsLmRhdGFTb3VyY2UubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50Q29ubmVjdGlvbiA9IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldDogbWFjaGluZXNEYXRhLm1hY2hpbmVzWzBdLmlkXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgICAvLyBLaeG7g20gdHJhIHN0YXRlIGN14buRaSwgbuG6v3UgY2jGsGEgcGjhuqNpIHN0YXRlIGvhur90IHRow7pjIHRow6wgduG6vSB0aMOqbSBjw6FjIHN0YXRlIHBow61hIHNhdSDEkeG7gyBuZ8aw4budaSBkw7luZyBiaeG6v3QgY2jhuqF5IHRoZW8gaMaw4bubbmcgbsOgb1xuICAgICAgICBhd2FpdCB0aGlzLmFwcGVuZFN0YXRlQWZ0ZXJMYXN0U3RhdGUobWFjaGluZXNEYXRhLCB0aGlzLm1hY2hpbmVzRGF0YSwgb2JqVGVtcC5zdGFydCk7XG4gICAgICAgIHRoaXMubWFjaGluZXNEYXRhID0gbWFjaGluZXNEYXRhO1xuICAgICAgICB0aGlzLndhaXRUb0RldGFjaCA9IHRydWU7XG4gICAgICAgIHRoaXMucmVhZHlUb1JhdyA9IHRydWU7XG4gICAgfVxuXG4gICAgYXN5bmMgYXBwZW5kU3RhdGVBZnRlckxhc3RTdGF0ZShtYWNoaW5lc0RhdGEsIG1hY2hpbmVzRGF0YVJhdywgbGVmdCkge1xuICAgICAgICBpZiAobWFjaGluZXNEYXRhLm1hY2hpbmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RNYWNoaW5lID0gbWFjaGluZXNEYXRhLm1hY2hpbmVzW21hY2hpbmVzRGF0YS5tYWNoaW5lcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGlmIChsYXN0TWFjaGluZS50eXBlID09IEVudW1TdGF0ZVR5cGUuU1RPUCkgcmV0dXJuO1xuICAgICAgICAgICAgLy8gTOG6pXkgcmEgY8OhYyBhY3Rpb24gbcOgIG5nxrDhu51pIGTDuW5nIMSRxrDhu6NjIHBow6lwIHRo4buxYyBoaeG7h25cbiAgICAgICAgICAgIC8vIGNvbnN0IGFjdGlvbkFsbG93cyA9IChhd2FpdCB0aGlzLmJ1c2luZXNzU2V0dGluZy5iYXNlU2VydmljZS5nZXRBY3Rpb25BbGxvdyh0aGlzLml0ZW0uaWQpKS5kYXRhO1xuICAgICAgICAgICAgLy8gaWYgKCFhY3Rpb25BbGxvd3MpIHJldHVybjtcbiAgICAgICAgICAgIGxldCBpbmRleCA9IDE7XG4gICAgICAgICAgICBtYWNoaW5lc0RhdGFSYXcuY29ubmVjdGlvbnMuZmlsdGVyKHEgPT4gcS5zb3VyY2UgPT0gbGFzdE1hY2hpbmUucmF3SWQpXG4gICAgICAgICAgICAgICAgLmZvckVhY2goY29ubiA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldE1hY2hpbmUgPSBtYWNoaW5lc0RhdGFSYXcubWFjaGluZXMuZmluZChxID0+IHEuaWQgPT0gY29ubi50YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0TWFjaGluZS5jb2RlID09IGxhc3RNYWNoaW5lLmNvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB0aGlzLmNsb25lQ29ubmVjdGlvbihjb25uLCBsYXN0TWFjaGluZSwgbGFzdE1hY2hpbmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5jb25uZWN0b3IgPSAnU3RhdGVNYWNoaW5lJztcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVzRGF0YS5jb25uZWN0aW9ucy5wdXNoKGNvbm5lY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3VGFyZ2V0TWFjaGluZSA9IHRoaXMuY2xvbmVNYWNoaW5lKHRhcmdldE1hY2hpbmUsIHt9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1RhcmdldE1hY2hpbmUubG9jYXRpb24gPSBbbGVmdCwgdGhpcy50b3BEaXN0YW5jZSArIDE1MCAqIChpbmRleCAtIDEpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lc0RhdGEuY29ubmVjdGlvbnMucHVzaCh0aGlzLmNsb25lQ29ubmVjdGlvbihjb25uLCBsYXN0TWFjaGluZSwgbmV3VGFyZ2V0TWFjaGluZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXNEYXRhLm1hY2hpbmVzLnB1c2gobmV3VGFyZ2V0TWFjaGluZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsb25lTWFjaGluZShtYWNoaW5lOiBhbnksIG9ialRlbXApIHtcbiAgICAgICAgY29uc3QgbmV3SWQgPSB0aGlzLl9jb21tb25TZXJ2aWNlLmd1aWQoKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgICAgICAgLi4ubWFjaGluZSxcbiAgICAgICAgICAgIGxvY2F0aW9uOiBbb2JqVGVtcC5zdGFydCwgdGhpcy50b3BEaXN0YW5jZV0sXG4gICAgICAgICAgICByYXdJZDogbWFjaGluZS5pZCxcbiAgICAgICAgICAgIHJhd0lkTmV3OiBuZXdJZCxcbiAgICAgICAgICAgIGlkOiBuZXdJZFxuICAgICAgICB9O1xuICAgICAgICBvYmpUZW1wLnN0YXJ0ICs9IHRoaXMuc3RhdGVEaXN0YW5jZTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBjbG9uZUNvbm5lY3Rpb24oY29ubmVjdGlvbjogYW55LCBzb3VyY2VTdGF0ZTogYW55LCB0YXJnZXRTdGF0ZTogYW55KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5jb25uZWN0aW9uLFxuICAgICAgICAgICAgc291cmNlOiBzb3VyY2VTdGF0ZS5pZCxcbiAgICAgICAgICAgIHRhcmdldDogdGFyZ2V0U3RhdGUuaWRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBhc3luYyBtaW5pbWl6ZURhdGFzb3VyY2VBY3Rpb24oKSB7XG4gICAgICAgIGNvbnN0IGxzdFdvcmtmbG93SGlzdG9yeSA9IChhd2FpdCB0aGlzLl93b3JrZmxvd0hpc3RvcnlTZXJ2aWNlLmdldEFsbCh0aGlzLmdldERlZmF1bHRGaWx0ZXIoKSwgJ3NvdXJjZVN0YXR1c0NvZGUsYWN0aW9uQ29kZScpKS5kYXRhO1xuICAgICAgICBjb25zdCBkYXRhU291cmNlID0gdGhpcy5fd29ya2Zsb3dTZXR0aW5nU2VydmljZS5taW5pbWl6ZURhdGFzb3VyY2VBY3Rpb24odGhpcy5kYXRhU291cmNlQWN0aW9uLCBsc3RXb3JrZmxvd0hpc3RvcnkpO1xuICAgICAgICB0aGlzLmNydWRMaXN0LnNldERyb3Bkb3duRGF0YXNvdXJjZSgnZnVsbEFjdGlvbkNvZGUnLCBkYXRhU291cmNlKTtcbiAgICB9XG5cbiAgICBjcmVhdGVEYXRhc291cmNlQWN0aW9uKCkge1xuICAgICAgICBjb25zdCByZXN1bHQ6IGFueVtdID0gW1xuICAgICAgICAgICAgeyBjb2RlOiBNYUFjdGlvbkJhdERhdVF1eVRyaW5oLCB0ZW46ICdC4bqvdCDEkeG6p3UgcXV5IHRyw6xuaCcsIGJ1aWxkSW46IHRydWUgfVxuICAgICAgICBdO1xuICAgICAgICByZXN1bHQucHVzaCguLi50aGlzLl93b3JrZmxvd1NldHRpbmdTZXJ2aWNlLnJlbmRlckRhdGFTb3VyY2VBY3Rpb25Xb3JrZmxvdyh0aGlzLmN1cnJlbnRXb3JrZmxvdy5kYXRhKSk7XG4gICAgICAgIHJlc3VsdC5wdXNoKFxuICAgICAgICAgICAgeyBjb2RlOiBBY3Rpb25VcGRhdGVNb2RlbCwgdGVuOiAnQ2jhu4luaCBz4butYScsIGJ1aWxkSW46IHRydWUgfSxcbiAgICAgICAgICAgIHsgY29kZTogQWN0aW9uQ2hvWUtpZW5CYXNlLCB0ZW46ICdDaG8gw70ga2nhur9uJywgYnVpbGRJbjogdHJ1ZSB9LFxuICAgICAgICAgICAgeyBjb2RlOiBBY3Rpb25UaHVIb2lCYXNlLCB0ZW46ICdUaHUgaOG7k2kgdGhhbyB0w6FjJywgYnVpbGRJbjogdHJ1ZSB9XG4gICAgICAgICk7XG4gICAgICAgIHJlc3VsdC5maWx0ZXIocSA9PiBxLmJ1aWxkSW4pLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpdGVtLnJhd0NvZGUgPSBpdGVtLmNvZGU7XG4gICAgICAgICAgICBpdGVtLnNob3J0VGVuID0gaXRlbS50ZW47XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGVmYXVsdEZpbHRlcigpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCd0YWJsZU5hbWUnLCBPcGVyYXRvci5lcXVhbCwgdGhpcy50YWJsZU5hbWUpLFxuICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ2l0ZW1JZCcsIE9wZXJhdG9yLmVxdWFsLCB0aGlzLml0ZW0uaWQpLFxuICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ3dvcmtmbG93Q29kZScsIE9wZXJhdG9yLmVxdWFsLCB0aGlzLml0ZW0uX193b3JrZmxvd0NvZGUpXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgYXN5bmMgbW9kaWZ5R3JpZEluZm8oZ3JpZEluZm8/OiBHcmlkSW5mbykge1xuICAgICAgICBjb25zdCBmaWx0ZXJCeUFjdGlvbkNvZGUgPSBncmlkSW5mby5maWx0ZXJzLmZpbmQocSA9PiBxLmZpZWxkID09ICdhY3Rpb25Db2RlJyk7XG4gICAgICAgIGlmIChmaWx0ZXJCeUFjdGlvbkNvZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGFyclZhbHVlID0gSlNPTi5wYXJzZShmaWx0ZXJCeUFjdGlvbkNvZGUudmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgYXJyQWN0aW9uQ29kZSA9IHRoaXMuZGF0YVNvdXJjZUFjdGlvbi5maWx0ZXIocSA9PiBhcnJWYWx1ZS5zb21lKHggPT4geCA9PSBxLmNvZGUpKS5tYXAoeCA9PiB4LnJhd0NvZGUpO1xuICAgICAgICAgICAgZmlsdGVyQnlBY3Rpb25Db2RlLnZhbHVlID0gSlNPTi5zdHJpbmdpZnkoYXJyQWN0aW9uQ29kZSk7XG4gICAgICAgIH1cbiAgICAgICAgZ3JpZEluZm8uZmlsdGVycy51bnNoaWZ0KFxuICAgICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0RmlsdGVyKClcbiAgICAgICAgKTtcblxuICAgICAgICBncmlkSW5mby5zb3J0cy51bnNoaWZ0KHRoaXMubmV3U29ydCgnY3JlYXRlZCcsIC0xKSk7XG4gICAgfVxuXG4gICAgYXN5bmMgYmVmb3JlUmVuZGVyRGF0YVNvdXJjZShkYXRhU291cmNlKSB7XG4gICAgICAgIC8vIER1eeG7h3QgdOG7q25nIGhpc3RvcnkgxJHhu4MgY2jhu4kgaGnhu4NuIHRo4buLIGx14buTbmcgaGnhu4duIHThuqFpIGPhu6dhIHF1eSB0csOsbmguIGsgaGnhu4NuIHRo4buLIGPDoWMgYsaw4bubYyB0aOG7q2FcbiAgICAgICAgZGF0YVNvdXJjZS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaXRlbS5mdWxsQWN0aW9uQ29kZSA9IGl0ZW0uYWN0aW9uQ29kZTtcbiAgICAgICAgICAgIGlmIChpdGVtLmFjdGlvbkNvZGUgIT0gTWFBY3Rpb25CYXREYXVRdXlUcmluaFxuICAgICAgICAgICAgICAgICYmIGl0ZW0uYWN0aW9uQ29kZSAhPSBBY3Rpb25VcGRhdGVNb2RlbFxuICAgICAgICAgICAgICAgICYmIGl0ZW0uYWN0aW9uQ29kZSAhPSBBY3Rpb25DaG9ZS2llbkJhc2VcbiAgICAgICAgICAgICAgICAmJiBpdGVtLmFjdGlvbkNvZGUgIT0gQWN0aW9uVGh1SG9pQmFzZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5mdWxsQWN0aW9uQ29kZSA9IGAke2l0ZW0uc291cmNlU3RhdHVzQ29kZX1fX18ke2l0ZW0uYWN0aW9uQ29kZX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zcGxpdExpc3QoaXRlbSwgJ3VzZXJJZHMnKTtcbiAgICAgICAgICAgIHRoaXMuc3BsaXRMaXN0KGl0ZW0sICd1c2VyVmlld0lkcycpO1xuICAgICAgICAgICAgdGhpcy5zcGxpdExpc3QoaXRlbSwgJ2RvblZpSWRzJyk7XG4gICAgICAgICAgICB0aGlzLnNwbGl0TGlzdChpdGVtLCAnZG9uVmlWaWV3SWRzJyk7XG4gICAgICAgICAgICB0aGlzLnNwbGl0TGlzdChpdGVtLCAnZ3JvdXBJZHMnKTtcbiAgICAgICAgICAgIHRoaXMuc3BsaXRMaXN0KGl0ZW0sICdncm91cFZpZXdJZHMnKTtcbiAgICAgICAgICAgIHRoaXMuc3BsaXRMaXN0KGl0ZW0sICdyb2xlSWRzJyk7XG4gICAgICAgICAgICB0aGlzLnNwbGl0TGlzdChpdGVtLCAncm9sZVZpZXdJZHMnKTtcbiAgICAgICAgICAgIGlmICghaXRlbS5jb2xTcGFuKSBpdGVtLmNvbFNwYW4gPSB7fTtcbiAgICAgICAgICAgIGlmICghaXRlbS5oaWRkZW4pIGl0ZW0uaGlkZGVuID0ge307XG4gICAgICAgICAgICBpZiAoaXRlbS5zdGF0dXMgPT0gRW51bVdvcmtmbG93SGlzdG9yeVN0YXR1cy5OT1RfSU5fTUFJTl9USFJFQUQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5hY3Rpb25Db2RlID09IEFjdGlvblVwZGF0ZU1vZGVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uY29sU3BhblsncmVjZWl2ZXInXSA9IDI7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uaGlkZGVuWydyZWNlaXZlclZpZXcnXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmpzb25Nb2RlbENoYW5nZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5qc29uTW9kZWxDaGFuZ2UgPSBKU09OLnBhcnNlKGl0ZW0uanNvbk1vZGVsQ2hhbmdlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uanNvbk1vZGVsQ2hhbmdlID0gW107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXRlbS5hY3Rpb25Db2RlID09IEFjdGlvblRodUhvaUJhc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5jbGFzcyA9ICdyZWNhbGxlZCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXRlbS5zdGF0dXMgPT0gRW51bVdvcmtmbG93SGlzdG9yeVN0YXR1cy5SRUNBTExFRCkge1xuICAgICAgICAgICAgICAgIGl0ZW0uY2xhc3MgPSAncmVjYWxsZWQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBhZnRlckdldERhdGEoKSB7XG4gICAgICAgIGlmICghdGhpcy5nZW5lcmF0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucmVnZW5lcmF0ZU1hY2hpbmVEYXRhKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNwbGl0TGlzdChpdGVtOiBhbnksIGZpZWxkOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKGl0ZW1bZmllbGRdKSB7XG4gICAgICAgICAgICBpdGVtW2ZpZWxkXSA9IGl0ZW1bZmllbGRdLnNwbGl0KCcsJykuZmlsdGVyKHEgPT4gISFxKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGl0ZW1bZmllbGRdID0gW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVSb3dTZWxlY3QoZXZ0KSB7XG4gICAgICAgIHRoaXMuc2V0Q3VycmVudENvbm5lY3Rpb24odGhpcy5tb2RlbC5zZWxlY3RlZEl0ZW0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Q3VycmVudENvbm5lY3Rpb24oaXRlbUhpc3RvcnkpIHtcbiAgICAgICAgaWYgKCFpdGVtSGlzdG9yeVxuICAgICAgICAgICAgfHwgaXRlbUhpc3Rvcnkuc3RhdHVzICE9IEVudW1Xb3JrZmxvd0hpc3RvcnlTdGF0dXMuSU5fTUFJTl9USFJFQURcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRDb25uZWN0aW9uID0gdGhpcy5tb2RlbC5kYXRhU291cmNlLmZpbHRlcihxID0+IHEuc3RhdHVzID09IEVudW1Xb3JrZmxvd0hpc3RvcnlTdGF0dXMuSU5fTUFJTl9USFJFQUQpXG4gICAgICAgICAgICAgICAgLm1hcChxID0+IHRoaXMuZ2V0Q29ubmVjdGlvbkZyb21IaXN0b3J5KHEpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmN1cnJlbnRDb25uZWN0aW9uID0gW1xuICAgICAgICAgICAgdGhpcy5nZXRDb25uZWN0aW9uRnJvbUhpc3RvcnkoaXRlbUhpc3RvcnkpXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb25uZWN0aW9uRnJvbUhpc3RvcnkoaXRlbUhpc3Rvcnk6IGFueSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc291cmNlQ29kZTogaXRlbUhpc3Rvcnkuc291cmNlU3RhdHVzQ29kZSxcbiAgICAgICAgICAgIHRhcmdldENvZGU6IGl0ZW1IaXN0b3J5LnRhcmdldFN0YXR1c0NvZGUsXG4gICAgICAgICAgICBhY3Rpb25Db2RlOiBpdGVtSGlzdG9yeS5hY3Rpb25Db2RlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcm9sbGJhY2tCeUhpc3Rvcnkocm93RGF0YSkge1xuICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd0NvbmZpcm0oJ0LhuqFuIGPDsyBjaOG6r2MgY2jhuq9uIG114buRbiB0aHUgaOG7k2kgdGhhbyB0w6FjIHbhu4EgbOG7i2NoIHPhu60gxJHDoyBjaOG7jW4nKVxuICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXJlcykgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGxldCBuYW1lID0gJyc7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJ1c2luZXNzU2V0dGluZy5kaXNwbGF5RmllbGQgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHRoaXMuaXRlbVs8c3RyaW5nPih0aGlzLmJ1c2luZXNzU2V0dGluZy5kaXNwbGF5RmllbGQpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWUgPSAoPEZ1bmN0aW9uPih0aGlzLmJ1c2luZXNzU2V0dGluZy5kaXNwbGF5RmllbGQpKSh0aGlzLml0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmJ1c2luZXNzU2V0dGluZy5iYXNlU2VydmljZS5yb2xsYmFja0J5SGlzdG9yeShcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtLmlkLCByb3dEYXRhLmlkLFxuICAgICAgICAgICAgICAgICAgICBbdGhpcy5idXNpbmVzc1NldHRpbmcuYmFzZVNlcnZpY2Uub2JqZWN0TmFtZSwgbmFtZV1cbiAgICAgICAgICAgICAgICApLnRoZW4ocmVzID0+IHRoaXMuaGFuZGxlUmVzcG9uc2UocmVzLCAnVGh1IGjhu5NpIHRoYW8gdMOhYyB0aMOgbmggY8O0bmcnLCBmID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJpZ2dlclByb2Nlc3NEYXRhKCk7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgYWZ0ZXJSZWxvYWRlZCgpIHtcbiAgICAgICAgdGhpcy5maWxlRGF0YVNlcnZpY2UuZ2V0RGF0YSgpO1xuICAgIH1cbn1cbiJdfQ==
@@ -11330,6 +11330,24 @@ class CccdValidator {
11330
11330
  return 'Không đúng định dạng CCCD/CMND';
11331
11331
  }
11332
11332
  }
11333
+ class PassportValidator {
11334
+ constructor(message) {
11335
+ this.message = 'Không đúng định dạng Số hộ chiếu hoặc Số CCCD hoặc chứng minh nhân dân';
11336
+ if (message) {
11337
+ this.message = message;
11338
+ }
11339
+ }
11340
+ validate(event) {
11341
+ const value = event.value;
11342
+ if (value == null || value === '')
11343
+ return true;
11344
+ const re = /^\d{0,12}$/;
11345
+ return re.test(value);
11346
+ }
11347
+ getError() {
11348
+ return this.message;
11349
+ }
11350
+ }
11333
11351
  class LengthValidator {
11334
11352
  constructor(max, min = 0) {
11335
11353
  this._error = '';
@@ -54537,7 +54555,8 @@ class WorkflowHistoryNewComponent extends DataListBase {
54537
54555
  field: 'fileDinhKem',
54538
54556
  label: this._translateService.instant('File đính kèm'),
54539
54557
  dataType: 'fileDinhKem',
54540
- allowFilter: false
54558
+ allowFilter: false,
54559
+ visible: !this.businessSetting.showFileManagerFromWfProcess
54541
54560
  })
54542
54561
  ];
54543
54562
  this.model.ready = true;
@@ -56496,5 +56515,5 @@ class Pair {
56496
56515
  * Generated bundle index. Do not edit.
56497
56516
  */
56498
56517
 
56499
- export { AccessDeniedComponent, Action, ActionChoYKienBase, ActionThuHoiBase, ActionUpdateModel, AddressControlSchema, AddressService, AdvanceSearchData, AdvanceSearchSetting, AppComponentBase, AppListService, ApplicationContextService, ApprovalPipe, ArrayPair, AtLeastOneRowTableValidator, AuthenService, AuthorizeDirective, AutoCompleteControlSchema, AutoCompletePickerControlSchema, AutocompleteDatasourceComponent, AvatarUploaderComponent, BaseCauHinhWorkflowComponent, BaseCongViecComponent, BaseCongViecFormComponent, BaseDmLinhVucCongViecComponent, BaseDmLoaiCongViecComponent, BaseDmPriorityComponent, BaseMenuService, BaseModule, BaseService, BooleanFormatPipe, ButtonControlSchema, ButtonPermission, ButtonPermissions, ButtonTextActionCongViec, CONFIG_CALENDAR_VIETNAMESE, CalculationEngineService, CanBoHoSoService, CauHinhWorkflowService, CccdValidator, CellExcel, ChatBoxComponent, ChatSendMessageBoxComponent, CheckBoxListControlSchema, CheckControlVisibleService, CheckDuplicateFieldsValidator, CheckDuplicateValidator, CheckboxControlSchema, ChipsControlSchema, ClientV5Service, CoCauToChucControlSchema, CoCauToChucNewService, CoCauToChucPickerComponent, CoCauToChucPickerControlSchema, CoCauToChucPickerControlSchemaNew, CoCauToChucService, ColorBlack, ColorControlSchema, ColorPickerControlSchema, ColorWhite, Column, ColumnSchemaBase, ColumnSetting, ColumnSettingDetail, ComCtxConstants, CommandType, CommonAppComponentComponent, CommonDashboardComponent, CommonErrorCode, CommonService, CompareValidator, ComponentBase, ComponentBaseWithButton, ComponentConstants, ComponentContextService, ConditionalBuilderService, CongViecLienQuanService, CongViecNextFirstStepComponent, CongViecPickerControlSchema, CongViecService, ContainerSchema, ControlTreeNode, ControlType, ConvertMoneyToWordPipe, CoreConfigService, CrudBase, CrudFormComponent, CrudFormCustomFunction, CrudFormData, CrudFormSetting, CrudListComponent, CrudListConfig, CrudListCustomFunction, CrudListData, CrudListHelper, CrudListSetting, CrudService, CustomControlSchema, CustomRouterService, CustomizeUiModel, CustomizeUiService, DanhmucApiService, DataExcel, DataFormBase, DataListBase, DataSourceControlSchema, DataSourcePermissionBase, DataSourceStateType, DataSourceTargetType, DataSourceUserRule, DataSourceUserSender, DataSourceWorkflowCheckboxOption, DataSourceWorkflowCoreStatus, DataType, DateCompareValidator, DateTimeControlSchema, DateTimeRangeControlSchema, DbOrganizationOrganizationService, DbOrganizationPositionService, Deadline, DeadlineType, DhvinhGuardService, DialogModel, DmLinhVucCongViecService, DmLoaiCongViecService, DmPriorityService, DomService, DownloadLinkService, DropdownComponent, DropdownControlSchema, DropdownOptions, DummyWorkflowCode, DynamicComponentService, ENUM_DON_VI_HANH_CHINH, EXPLORER_TYPES, EXPORT_VERSION_V4, EXPORT_VERSION_V5, EditFileCommand, EditorControlSchema, EformService, EmailValidator, EntityMedataDataSetting, EntityMetadataService, EntityPickerColumn, EntityPickerControlSchema, EntityWorkflowType, EnumActionType, EnumControlPickerType, EnumFileLayout, EnumGetRefType, EnumLoaiDanhSachCongViec, EnumLoaiVanBanBase$1 as EnumLoaiVanBanBase, EnumPermissionType, EnumProcessWorkflowType, EnumStateByMenuCongViec, EnumStateType, EnumTargetType, EnumTypeSplash, EnumUserRule, EnumWFNhomTrangThai, EnumWorkflowCheckboxOption, EnumWorkflowCoreCodeSettingKey, EnumWorkflowHistoryStatus, ErrorType, EventData, EventType, ExactOneValueInTableValidator, ExportAllMode, ExportItem, ExportItemType, ExportItemsMode, ExportManyModel, ExportManyResultModel, ExportModel, ExportService, ExportWithoutTemplateModel, Extension, ExtensionsConst, FILE_TYPES, FieldCheckboxCrudList, FieldColExpandCrudList, FieldColReorderCrudList, FieldDefineHasTask, FieldDefineIsTaskFormControl, FieldDefineIsWorkflowControl, FieldFunctionCrudList, FieldIndexInDataSource, FieldOrderCrudList, FieldRowSpan, FieldWorkflowCodeInCrudForm, FileDataService, FileExplorerService, FileExtensions, FileManagerComponent, FileManagerControlSchema, FileManagerMode, FileManagerSetting, FileObjectService, FilePickerDialogComponent, FileType, FileTypeFlag, FileUploadComponent, FileUploadControlSchema, FileUploadMode, FileUploadSetting, FileV4Service, Filter, FolderService, FormControlBase, FormControlBaseWithService, FormSchemaBase, FormSchemaBaseWithService, FormState, Gender, GenerateLinkDownloadDTO, GenericGuardService, GlobalService, GmailCorrector, GridInfo, GuardService, GuardSvService, HeightType, HighPerformanceService, HighlightPipe, HtmlFormatPipe, HttpOptions, ImageService, ImageUploaderControlSchema, Include, JsPlumbOption, KeyFieldGetRefType, KeyFilterStateByMenuCongViec, KeyFlashShow, KeyFunctionReload, KeyValueComponent, KeyValueControlSchema, LabelSchema, LabelWFNhomTrangThai, LabelWorkflowCoreStatus, LengthValidator, ListHelperService, LoaiPhieuDeXuat, LocalCacheService, LowerCorrector, MA_THONG_BAO_PHAN_HE, MaActionBatDauQuyTrinh, ManagerType, MaskControlSchema, MasterDataItem, MasterDataPipe, MasterDataService, MenuService, MenuSource, MethodResult, ModelKySoDonVi, ModelSchema, ModuleConfigService, MultiTranslateHttpLoader, MultipleReferenceDataFormatPipe, NameValidator, NodeService, NotificationObjectType, NotificationService, NotifierService, NotifierType, NumberCompareValidator, NumberOnlyValidator, NumberRangeControlSchema, Operator, OrganizationFormatPipe, OrganizationNameFormatPipe, OrganizationPickerControlSchema, OrganizationService, OrganizationsFormatPipe, PageInfo, PageSetting, Pair, Pattern, PercentControlSchema, PermissionBase, PermissionConstant, PermissionService, PermissionStorage, PermissionTypes, PermissionUtilsComponent, PersonalSetting, PhanQuyenModel, PhoneNumberValidator, PhoneValidator, PopupSize, PositionService, PrintService, PublicFunction, QueryBuilderComponent, QueryBuilderGroupComponent, QueryBuilderRuleComponent, QueryGroup, QueryRule, RELOAD_FILE_LIST, RadioButtonListControlSchema, RandomDataService, RefField, ReferenceDataFormatPipe, ReferenceTextControlSchema, RegexSplitFieldByItem, ReponseResult, RequiredFieldsValidator, RequiredValidator, RowColorOption, RowExcel, SHARE_COMPONENT_ID, SHARE_EVENT, SafeHtmlPipe, SafeStylePipe, SafeUrlPipe, SameValueValidator, ScalarValueValidator, SchemaBase, SecurePipe, ServiceFileUploadComponent, ServiceRequestModel, ServiceRequestModelV5, SessionTypes, SharedFolderType, SignalRService, SimpleDicItem, SimpleDictionary, Sort, SortDirs, SpanControlSchema, SplashComponentComponent, StartupBusinessComponentBase, StateComponent, StateMachineTopic, StateMachinesConnectionMetadataComponent, StateMachinesDesignerComponent, StateMachinesService, StateMetadataComponent, Status, StatusAction, StatusGroup, StatusOption, StatusOrg, StatusUser, StorageService, StorageUpdatedService, StringCompareOption, StringFormatPipe, SummaryPipe, SwitchControlSchema, TBL_DM_COSODAOTAO_CONSTS, TBL_DM_PHONGHOC_CONSTS, TBL_KTX_NGUOITHUE_HOSO, TBL_TS_PHIEUDEXUAT, TBL_TS_TAISANCODINH_CONSTS, TabViewData, TableSchema, TagSeparator, TaiLieuComponent, TaxCodeValidator, TemplateConstant, TemplateControlSchema, TemplateInstanceService, TemplateService, TemplateTextItem, TemplateTextMany, TemplateTextV4Service, TemplateType, TemplateV4Service, TenContainer, TextAlign, TextAreaControlSchema, TextControlSchema, TextControlSchemaWithService, TitleSchema, TnClientCommand, TnClientService, TnComponentConfig, TnCustomScrollbarComponent, TnDatePipe, TnMenu, TnMenuItem, TnReorderableColumnDirective, TnReorderableRowDirective, TnSortIcon, TnSortableColumnDirective, TnTreeTableToggler, TnUser, TnxSharedModule, TopicReloadCongViecV5, TopicReloadCountCongViecV5, TopicReloadNotification, TrangThaiMasterData, TrangThais, TreeDataOption, TreeListBase, TreeNode, TrimCorrector, TrimEndCorrector, TrimStartCorrector, TypeDanhMucAPI, UniqueFieldInTableValidator, UniqueNumberService, UpperCorrector, UserFormatPipe, UserGroupRealService, UserGroupService, UserPickerControlSchema, UserPickerDialogComponent, UserPublicInfo, UserService, UserType, UserV5Service, UsersFormatPipe, Validation, ValueType, VanBanPickerControlSchema, VirtualBaseService, WorkflowConfigAdvance, WorkflowCoreStatusEnum, WorkflowFieldStateCode, WorkflowHistoryService, WorkflowPermissionDetailService, WorkflowPickerComponent, WorkflowService, WorkflowSetting, WorkflowSettingNew, WorkflowSettingsService, WrapPickerControlSchema, addDay, addZero, appendDefaultFilter, clearAll, clone, cloneOld, coreDeclaration, coreModuleImport, coreProvider, createJsPlumnInstance, createOrgPickerControl, createOrgPickerControlNew, createRolePickerControl, createUserGroupPickerControl, createUserPickerControl, dataSourceIcon, dateDiff, fileTypeSource, genQueryFromFilters, getDateFromStringDateVN, getDayOfWeek, getEnvironmentByName, getEnvironmentData, getListMenuByName, getMenuData, getMonday, getStringDate, getStringDateTime, getStringDateVN, getStringDateVNLocal, getTimeSpan, isArray, isBoolean, isDate, isFunction, isLiteralObject, isNumber, isObjectOld, isRegular, isSimpleType, isString, isValidDate, isValidTime, keyUserSurveyLocal, mapProperty, maximumPageSize, mergeJSON, mergeJSONOld, moduleConfigFunc, monthDiff, multipleSort, romanize, setMetadataConnection, setMetadataState, translateStateMachine, ɵ10, ɵ11, ɵ12, ɵ13, ɵ14, ɵ15, ɵ3, ɵ4, ɵ5, ɵ6, ɵ7, ɵ8, ɵ9, LoggerService as ɵa, DropdownService as ɵb, DM_ChucVuService as ɵba, RoleService as ɵbb, ProcessWorkflowFormComponent as ɵbc, CongViecDinhKemService as ɵbd, CongViecThayDoiService as ɵbe, AddressComponent as ɵbf, AfterViewCheckedComponent as ɵbg, AdvanceSearchComponent as ɵbh, AppRootMenuComponent as ɵbi, AppTopBarComponent as ɵbj, AppTopBarV1Component as ɵbk, AppTopBarV2Component as ɵbl, AppTopBarV3Component as ɵbm, AppProfileComponent as ɵbn, AppSubMenuComponent as ɵbo, AppMenuComponent as ɵbp, AutoCompletePickerComponent as ɵbq, ImageUploaderComponent as ɵbr, CheckBoxListComponent as ɵbs, CoCauToChucPickerListComponent as ɵbt, CoCauToChucPickerListNewComponent as ɵbu, FormBuilderComponent as ɵbv, BaseCongViecTestComponent as ɵbw, BaseCauHinhWorkflowDetailComponent as ɵbx, BaseDmLoaiCongViecFormComponent as ɵby, BaseDmLinhVucCongViecFormComponent as ɵbz, EntityPickerService as ɵc, BaseDmPriorityFormComponent as ɵca, BaseCongviecDinhkemComponent as ɵcb, BaseCongviecDinhkemFormComponent as ɵcc, DatetimePickerComponent as ɵcd, DatetimePickerRangeComponent as ɵce, DynamicNodeComponent as ɵcf, CommonSearchFormComponent as ɵcg, EntityPickerBoxComponent as ɵch, EntityPickerDataComponent as ɵci, EntityPickerSelectedComponent as ɵcj, EntityPickerComponent as ɵck, EntityPickerDialogComponent as ɵcl, EntityPickerTreeDataComponent as ɵcm, EntityPickerTreeSelectedComponent as ɵcn, EntityPermissionComponent as ɵco, EquationEditorComponent as ɵcp, MaskComponent as ɵcq, NumberPickerRangeComponent as ɵcr, PagingNextBackOnlyComponent as ɵcs, RadioButtonListComponent as ɵct, VanBanPickerComponent as ɵcu, VanBanDenService as ɵcv, VanBanDiService as ɵcw, VanBanPickerDialogComponent as ɵcx, VanbanDiPickerComponent as ɵcy, VanbanDenPickerComponent as ɵcz, ExceptionHandlerService as ɵd, CongViecPickerComponent as ɵda, SettingsComponent as ɵdb, SettingsRowComponent as ɵdc, SettingsWorkflowComponent as ɵdd, SettingsWorkflowNo1Component as ɵde, SimpleWorkflowFormComponent as ɵdf, ProcessWorkflowTargetComponent as ɵdg, DmChucVuService as ɵdh, ChoYKienFormComponent as ɵdi, SplashComponentV1Component as ɵdj, SplashComponentV2Component as ɵdk, SplashComponentV3Component as ɵdl, StateMachinesConnectionReceiverComponent as ɵdm, StateMachinesConnectionReceiverConditionComponent as ɵdn, StateMachinesConnectionReceiverDepartmentComponent as ɵdo, StateMachinesConnectionReceiverGroupComponent as ɵdp, StateMachinesConnectionReceiverUserComponent as ɵdq, StateMachinesConnectionReceiverRoleComponent as ɵdr, StateMachinesConnectionSenderComponent as ɵds, StartWorkflowComponent as ɵdt, ShareLinkByPermissionComponent as ɵdu, WorkflowSettingNewComponent as ɵdv, PermissionSharingComponent as ɵdw, WorkflowPermissionService as ɵdx, TnCheckboxComponent as ɵdy, TnDialogComponent as ɵdz, CanBo_HoSoService as ɵe, TnColorPickerComponent as ɵea, TnTinymceComponent as ɵeb, TnTabViewComponent as ɵec, TableDetailFormComponent as ɵed, FileIconPipe as ɵee, FileSizePipe as ɵef, QuickAddFormComponent as ɵeg, PreventShiftTabDirective as ɵeh, TnTemplateDirective as ɵei, UserPickerComponent as ɵej, UserPickerBoxComponent as ɵek, CoCauToChucTestService as ɵel, TnAppHelpComponent as ɵem, PathNameService as ɵen, HelperCurrentPageComponent as ɵeo, TnAppNotificationListComponent as ɵep, TnAppNotificationComponent as ɵeq, FolderFormComponent as ɵer, FileFormComponent as ɵes, FileViewerComponent as ɵet, FileVersionListComponent as ɵeu, ViewDetailComponent as ɵev, WorkflowHistoryComponent as ɵew, WorkflowHistoryDialogComponent as ɵex, WorkflowHistoryNewComponent as ɵey, WorkflowSettingComponent as ɵez, ListBase as ɵf, WorkflowSettingDialogComponent as ɵfa, WorkflowPermissionComponent as ɵfb, WorkflowPermissionFormComponent as ɵfc, ReferenceTextBoxComponent as ɵfd, QrCodeGeneratorComponent as ɵfe, AccessDeniedV1Component as ɵff, AddNewsComponent as ɵfg, ArticleService as ɵfh, NewsCategoryService as ɵfi, SignatureDetailComponent as ɵfj, KySoSimDanhSachChuKyComponent as ɵfk, KySoSimChuKyUserService as ɵfl, FileKySoSimComponent as ɵfm, KySoSimSignPDFService as ɵfn, TaiLieuCuaToiComponent as ɵfo, KhaiThacTaiLieuDungChungComponent as ɵfp, DanhMucDungChungService as ɵfq, TnTemplateComponent as ɵfr, LoadingPageV1Component as ɵfs, DropdownSettingFormComponent as ɵft, CheckReadyComponent as ɵfu, WorkflowButtonComponent as ɵfv, TnAccordionTabComponent as ɵfw, ListComponentBase as ɵg, TreeTableComponent as ɵh, UniversalLinkProcessorComponent as ɵi, NotFoundComponent as ɵj, SendAccessTokenInterceptor as ɵk, LogInterceptor as ɵl, PermissionUtilsInterceptor as ɵm, TraceInterceptor as ɵn, EntityWorkflowSettingService as ɵo, EntityWorkflowHistoryService as ɵp, EntityPermissionService as ɵq, ChatService as ɵr, MyDriveService as ɵs, ContentsService as ɵt, StatusExtendsService as ɵu, MessageBoardService as ɵv, FileExplorerNewService as ɵw, ReportQueueComponent as ɵx, FileVersionService as ɵy, FileManagerService as ɵz };
56518
+ export { AccessDeniedComponent, Action, ActionChoYKienBase, ActionThuHoiBase, ActionUpdateModel, AddressControlSchema, AddressService, AdvanceSearchData, AdvanceSearchSetting, AppComponentBase, AppListService, ApplicationContextService, ApprovalPipe, ArrayPair, AtLeastOneRowTableValidator, AuthenService, AuthorizeDirective, AutoCompleteControlSchema, AutoCompletePickerControlSchema, AutocompleteDatasourceComponent, AvatarUploaderComponent, BaseCauHinhWorkflowComponent, BaseCongViecComponent, BaseCongViecFormComponent, BaseDmLinhVucCongViecComponent, BaseDmLoaiCongViecComponent, BaseDmPriorityComponent, BaseMenuService, BaseModule, BaseService, BooleanFormatPipe, ButtonControlSchema, ButtonPermission, ButtonPermissions, ButtonTextActionCongViec, CONFIG_CALENDAR_VIETNAMESE, CalculationEngineService, CanBoHoSoService, CauHinhWorkflowService, CccdValidator, CellExcel, ChatBoxComponent, ChatSendMessageBoxComponent, CheckBoxListControlSchema, CheckControlVisibleService, CheckDuplicateFieldsValidator, CheckDuplicateValidator, CheckboxControlSchema, ChipsControlSchema, ClientV5Service, CoCauToChucControlSchema, CoCauToChucNewService, CoCauToChucPickerComponent, CoCauToChucPickerControlSchema, CoCauToChucPickerControlSchemaNew, CoCauToChucService, ColorBlack, ColorControlSchema, ColorPickerControlSchema, ColorWhite, Column, ColumnSchemaBase, ColumnSetting, ColumnSettingDetail, ComCtxConstants, CommandType, CommonAppComponentComponent, CommonDashboardComponent, CommonErrorCode, CommonService, CompareValidator, ComponentBase, ComponentBaseWithButton, ComponentConstants, ComponentContextService, ConditionalBuilderService, CongViecLienQuanService, CongViecNextFirstStepComponent, CongViecPickerControlSchema, CongViecService, ContainerSchema, ControlTreeNode, ControlType, ConvertMoneyToWordPipe, CoreConfigService, CrudBase, CrudFormComponent, CrudFormCustomFunction, CrudFormData, CrudFormSetting, CrudListComponent, CrudListConfig, CrudListCustomFunction, CrudListData, CrudListHelper, CrudListSetting, CrudService, CustomControlSchema, CustomRouterService, CustomizeUiModel, CustomizeUiService, DanhmucApiService, DataExcel, DataFormBase, DataListBase, DataSourceControlSchema, DataSourcePermissionBase, DataSourceStateType, DataSourceTargetType, DataSourceUserRule, DataSourceUserSender, DataSourceWorkflowCheckboxOption, DataSourceWorkflowCoreStatus, DataType, DateCompareValidator, DateTimeControlSchema, DateTimeRangeControlSchema, DbOrganizationOrganizationService, DbOrganizationPositionService, Deadline, DeadlineType, DhvinhGuardService, DialogModel, DmLinhVucCongViecService, DmLoaiCongViecService, DmPriorityService, DomService, DownloadLinkService, DropdownComponent, DropdownControlSchema, DropdownOptions, DummyWorkflowCode, DynamicComponentService, ENUM_DON_VI_HANH_CHINH, EXPLORER_TYPES, EXPORT_VERSION_V4, EXPORT_VERSION_V5, EditFileCommand, EditorControlSchema, EformService, EmailValidator, EntityMedataDataSetting, EntityMetadataService, EntityPickerColumn, EntityPickerControlSchema, EntityWorkflowType, EnumActionType, EnumControlPickerType, EnumFileLayout, EnumGetRefType, EnumLoaiDanhSachCongViec, EnumLoaiVanBanBase$1 as EnumLoaiVanBanBase, EnumPermissionType, EnumProcessWorkflowType, EnumStateByMenuCongViec, EnumStateType, EnumTargetType, EnumTypeSplash, EnumUserRule, EnumWFNhomTrangThai, EnumWorkflowCheckboxOption, EnumWorkflowCoreCodeSettingKey, EnumWorkflowHistoryStatus, ErrorType, EventData, EventType, ExactOneValueInTableValidator, ExportAllMode, ExportItem, ExportItemType, ExportItemsMode, ExportManyModel, ExportManyResultModel, ExportModel, ExportService, ExportWithoutTemplateModel, Extension, ExtensionsConst, FILE_TYPES, FieldCheckboxCrudList, FieldColExpandCrudList, FieldColReorderCrudList, FieldDefineHasTask, FieldDefineIsTaskFormControl, FieldDefineIsWorkflowControl, FieldFunctionCrudList, FieldIndexInDataSource, FieldOrderCrudList, FieldRowSpan, FieldWorkflowCodeInCrudForm, FileDataService, FileExplorerService, FileExtensions, FileManagerComponent, FileManagerControlSchema, FileManagerMode, FileManagerSetting, FileObjectService, FilePickerDialogComponent, FileType, FileTypeFlag, FileUploadComponent, FileUploadControlSchema, FileUploadMode, FileUploadSetting, FileV4Service, Filter, FolderService, FormControlBase, FormControlBaseWithService, FormSchemaBase, FormSchemaBaseWithService, FormState, Gender, GenerateLinkDownloadDTO, GenericGuardService, GlobalService, GmailCorrector, GridInfo, GuardService, GuardSvService, HeightType, HighPerformanceService, HighlightPipe, HtmlFormatPipe, HttpOptions, ImageService, ImageUploaderControlSchema, Include, JsPlumbOption, KeyFieldGetRefType, KeyFilterStateByMenuCongViec, KeyFlashShow, KeyFunctionReload, KeyValueComponent, KeyValueControlSchema, LabelSchema, LabelWFNhomTrangThai, LabelWorkflowCoreStatus, LengthValidator, ListHelperService, LoaiPhieuDeXuat, LocalCacheService, LowerCorrector, MA_THONG_BAO_PHAN_HE, MaActionBatDauQuyTrinh, ManagerType, MaskControlSchema, MasterDataItem, MasterDataPipe, MasterDataService, MenuService, MenuSource, MethodResult, ModelKySoDonVi, ModelSchema, ModuleConfigService, MultiTranslateHttpLoader, MultipleReferenceDataFormatPipe, NameValidator, NodeService, NotificationObjectType, NotificationService, NotifierService, NotifierType, NumberCompareValidator, NumberOnlyValidator, NumberRangeControlSchema, Operator, OrganizationFormatPipe, OrganizationNameFormatPipe, OrganizationPickerControlSchema, OrganizationService, OrganizationsFormatPipe, PageInfo, PageSetting, Pair, PassportValidator, Pattern, PercentControlSchema, PermissionBase, PermissionConstant, PermissionService, PermissionStorage, PermissionTypes, PermissionUtilsComponent, PersonalSetting, PhanQuyenModel, PhoneNumberValidator, PhoneValidator, PopupSize, PositionService, PrintService, PublicFunction, QueryBuilderComponent, QueryBuilderGroupComponent, QueryBuilderRuleComponent, QueryGroup, QueryRule, RELOAD_FILE_LIST, RadioButtonListControlSchema, RandomDataService, RefField, ReferenceDataFormatPipe, ReferenceTextControlSchema, RegexSplitFieldByItem, ReponseResult, RequiredFieldsValidator, RequiredValidator, RowColorOption, RowExcel, SHARE_COMPONENT_ID, SHARE_EVENT, SafeHtmlPipe, SafeStylePipe, SafeUrlPipe, SameValueValidator, ScalarValueValidator, SchemaBase, SecurePipe, ServiceFileUploadComponent, ServiceRequestModel, ServiceRequestModelV5, SessionTypes, SharedFolderType, SignalRService, SimpleDicItem, SimpleDictionary, Sort, SortDirs, SpanControlSchema, SplashComponentComponent, StartupBusinessComponentBase, StateComponent, StateMachineTopic, StateMachinesConnectionMetadataComponent, StateMachinesDesignerComponent, StateMachinesService, StateMetadataComponent, Status, StatusAction, StatusGroup, StatusOption, StatusOrg, StatusUser, StorageService, StorageUpdatedService, StringCompareOption, StringFormatPipe, SummaryPipe, SwitchControlSchema, TBL_DM_COSODAOTAO_CONSTS, TBL_DM_PHONGHOC_CONSTS, TBL_KTX_NGUOITHUE_HOSO, TBL_TS_PHIEUDEXUAT, TBL_TS_TAISANCODINH_CONSTS, TabViewData, TableSchema, TagSeparator, TaiLieuComponent, TaxCodeValidator, TemplateConstant, TemplateControlSchema, TemplateInstanceService, TemplateService, TemplateTextItem, TemplateTextMany, TemplateTextV4Service, TemplateType, TemplateV4Service, TenContainer, TextAlign, TextAreaControlSchema, TextControlSchema, TextControlSchemaWithService, TitleSchema, TnClientCommand, TnClientService, TnComponentConfig, TnCustomScrollbarComponent, TnDatePipe, TnMenu, TnMenuItem, TnReorderableColumnDirective, TnReorderableRowDirective, TnSortIcon, TnSortableColumnDirective, TnTreeTableToggler, TnUser, TnxSharedModule, TopicReloadCongViecV5, TopicReloadCountCongViecV5, TopicReloadNotification, TrangThaiMasterData, TrangThais, TreeDataOption, TreeListBase, TreeNode, TrimCorrector, TrimEndCorrector, TrimStartCorrector, TypeDanhMucAPI, UniqueFieldInTableValidator, UniqueNumberService, UpperCorrector, UserFormatPipe, UserGroupRealService, UserGroupService, UserPickerControlSchema, UserPickerDialogComponent, UserPublicInfo, UserService, UserType, UserV5Service, UsersFormatPipe, Validation, ValueType, VanBanPickerControlSchema, VirtualBaseService, WorkflowConfigAdvance, WorkflowCoreStatusEnum, WorkflowFieldStateCode, WorkflowHistoryService, WorkflowPermissionDetailService, WorkflowPickerComponent, WorkflowService, WorkflowSetting, WorkflowSettingNew, WorkflowSettingsService, WrapPickerControlSchema, addDay, addZero, appendDefaultFilter, clearAll, clone, cloneOld, coreDeclaration, coreModuleImport, coreProvider, createJsPlumnInstance, createOrgPickerControl, createOrgPickerControlNew, createRolePickerControl, createUserGroupPickerControl, createUserPickerControl, dataSourceIcon, dateDiff, fileTypeSource, genQueryFromFilters, getDateFromStringDateVN, getDayOfWeek, getEnvironmentByName, getEnvironmentData, getListMenuByName, getMenuData, getMonday, getStringDate, getStringDateTime, getStringDateVN, getStringDateVNLocal, getTimeSpan, isArray, isBoolean, isDate, isFunction, isLiteralObject, isNumber, isObjectOld, isRegular, isSimpleType, isString, isValidDate, isValidTime, keyUserSurveyLocal, mapProperty, maximumPageSize, mergeJSON, mergeJSONOld, moduleConfigFunc, monthDiff, multipleSort, romanize, setMetadataConnection, setMetadataState, translateStateMachine, ɵ10, ɵ11, ɵ12, ɵ13, ɵ14, ɵ15, ɵ3, ɵ4, ɵ5, ɵ6, ɵ7, ɵ8, ɵ9, LoggerService as ɵa, DropdownService as ɵb, DM_ChucVuService as ɵba, RoleService as ɵbb, ProcessWorkflowFormComponent as ɵbc, CongViecDinhKemService as ɵbd, CongViecThayDoiService as ɵbe, AddressComponent as ɵbf, AfterViewCheckedComponent as ɵbg, AdvanceSearchComponent as ɵbh, AppRootMenuComponent as ɵbi, AppTopBarComponent as ɵbj, AppTopBarV1Component as ɵbk, AppTopBarV2Component as ɵbl, AppTopBarV3Component as ɵbm, AppProfileComponent as ɵbn, AppSubMenuComponent as ɵbo, AppMenuComponent as ɵbp, AutoCompletePickerComponent as ɵbq, ImageUploaderComponent as ɵbr, CheckBoxListComponent as ɵbs, CoCauToChucPickerListComponent as ɵbt, CoCauToChucPickerListNewComponent as ɵbu, FormBuilderComponent as ɵbv, BaseCongViecTestComponent as ɵbw, BaseCauHinhWorkflowDetailComponent as ɵbx, BaseDmLoaiCongViecFormComponent as ɵby, BaseDmLinhVucCongViecFormComponent as ɵbz, EntityPickerService as ɵc, BaseDmPriorityFormComponent as ɵca, BaseCongviecDinhkemComponent as ɵcb, BaseCongviecDinhkemFormComponent as ɵcc, DatetimePickerComponent as ɵcd, DatetimePickerRangeComponent as ɵce, DynamicNodeComponent as ɵcf, CommonSearchFormComponent as ɵcg, EntityPickerBoxComponent as ɵch, EntityPickerDataComponent as ɵci, EntityPickerSelectedComponent as ɵcj, EntityPickerComponent as ɵck, EntityPickerDialogComponent as ɵcl, EntityPickerTreeDataComponent as ɵcm, EntityPickerTreeSelectedComponent as ɵcn, EntityPermissionComponent as ɵco, EquationEditorComponent as ɵcp, MaskComponent as ɵcq, NumberPickerRangeComponent as ɵcr, PagingNextBackOnlyComponent as ɵcs, RadioButtonListComponent as ɵct, VanBanPickerComponent as ɵcu, VanBanDenService as ɵcv, VanBanDiService as ɵcw, VanBanPickerDialogComponent as ɵcx, VanbanDiPickerComponent as ɵcy, VanbanDenPickerComponent as ɵcz, ExceptionHandlerService as ɵd, CongViecPickerComponent as ɵda, SettingsComponent as ɵdb, SettingsRowComponent as ɵdc, SettingsWorkflowComponent as ɵdd, SettingsWorkflowNo1Component as ɵde, SimpleWorkflowFormComponent as ɵdf, ProcessWorkflowTargetComponent as ɵdg, DmChucVuService as ɵdh, ChoYKienFormComponent as ɵdi, SplashComponentV1Component as ɵdj, SplashComponentV2Component as ɵdk, SplashComponentV3Component as ɵdl, StateMachinesConnectionReceiverComponent as ɵdm, StateMachinesConnectionReceiverConditionComponent as ɵdn, StateMachinesConnectionReceiverDepartmentComponent as ɵdo, StateMachinesConnectionReceiverGroupComponent as ɵdp, StateMachinesConnectionReceiverUserComponent as ɵdq, StateMachinesConnectionReceiverRoleComponent as ɵdr, StateMachinesConnectionSenderComponent as ɵds, StartWorkflowComponent as ɵdt, ShareLinkByPermissionComponent as ɵdu, WorkflowSettingNewComponent as ɵdv, PermissionSharingComponent as ɵdw, WorkflowPermissionService as ɵdx, TnCheckboxComponent as ɵdy, TnDialogComponent as ɵdz, CanBo_HoSoService as ɵe, TnColorPickerComponent as ɵea, TnTinymceComponent as ɵeb, TnTabViewComponent as ɵec, TableDetailFormComponent as ɵed, FileIconPipe as ɵee, FileSizePipe as ɵef, QuickAddFormComponent as ɵeg, PreventShiftTabDirective as ɵeh, TnTemplateDirective as ɵei, UserPickerComponent as ɵej, UserPickerBoxComponent as ɵek, CoCauToChucTestService as ɵel, TnAppHelpComponent as ɵem, PathNameService as ɵen, HelperCurrentPageComponent as ɵeo, TnAppNotificationListComponent as ɵep, TnAppNotificationComponent as ɵeq, FolderFormComponent as ɵer, FileFormComponent as ɵes, FileViewerComponent as ɵet, FileVersionListComponent as ɵeu, ViewDetailComponent as ɵev, WorkflowHistoryComponent as ɵew, WorkflowHistoryDialogComponent as ɵex, WorkflowHistoryNewComponent as ɵey, WorkflowSettingComponent as ɵez, ListBase as ɵf, WorkflowSettingDialogComponent as ɵfa, WorkflowPermissionComponent as ɵfb, WorkflowPermissionFormComponent as ɵfc, ReferenceTextBoxComponent as ɵfd, QrCodeGeneratorComponent as ɵfe, AccessDeniedV1Component as ɵff, AddNewsComponent as ɵfg, ArticleService as ɵfh, NewsCategoryService as ɵfi, SignatureDetailComponent as ɵfj, KySoSimDanhSachChuKyComponent as ɵfk, KySoSimChuKyUserService as ɵfl, FileKySoSimComponent as ɵfm, KySoSimSignPDFService as ɵfn, TaiLieuCuaToiComponent as ɵfo, KhaiThacTaiLieuDungChungComponent as ɵfp, DanhMucDungChungService as ɵfq, TnTemplateComponent as ɵfr, LoadingPageV1Component as ɵfs, DropdownSettingFormComponent as ɵft, CheckReadyComponent as ɵfu, WorkflowButtonComponent as ɵfv, TnAccordionTabComponent as ɵfw, ListComponentBase as ɵg, TreeTableComponent as ɵh, UniversalLinkProcessorComponent as ɵi, NotFoundComponent as ɵj, SendAccessTokenInterceptor as ɵk, LogInterceptor as ɵl, PermissionUtilsInterceptor as ɵm, TraceInterceptor as ɵn, EntityWorkflowSettingService as ɵo, EntityWorkflowHistoryService as ɵp, EntityPermissionService as ɵq, ChatService as ɵr, MyDriveService as ɵs, ContentsService as ɵt, StatusExtendsService as ɵu, MessageBoardService as ɵv, FileExplorerNewService as ɵw, ReportQueueComponent as ɵx, FileVersionService as ɵy, FileManagerService as ɵz };
56500
56519
  //# sourceMappingURL=tnx-shared.js.map