UNPKG

@ecip/auth

Version:
311 lines 26.9 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ViewChild } from '@angular/core'; import { NzMessageService } from 'ng-zorro-antd'; import { SFComponent } from '@delon/form'; import { map } from "rxjs/operators"; import { DataSourceService, RuleService, DictService } from "@ecip/service"; import { ActivatedRoute, Router } from "@angular/router"; export class AuthRuleEditComponent { /** * @param {?} ruleService * @param {?} messageService * @param {?} dataSourceService * @param {?} dictService * @param {?} activeRoute * @param {?} router */ constructor(ruleService, messageService, dataSourceService, dictService, activeRoute, router) { this.ruleService = ruleService; this.messageService = messageService; this.dataSourceService = dataSourceService; this.dictService = dictService; this.activeRoute = activeRoute; this.router = router; this.schema = { properties: { ruleName: { type: 'string', title: '规则名称', ui: { //异步验证:判断是否已经存在相同数据源名称的记录, //如果是修改数据源,和修改前的数据源名称相同则忽略 validator: (/** * @param {?} value * @return {?} */ (value) => this.ruleService.existsRuleName(value) .pipe(map((/** * @param {?} res * @return {?} */ res => (res && (this.isNew || this.record.ruleName != value)) ? [{ keyword: 'required', message: '规则名称已存在' }] : [])))) } }, appId: { type: 'number', title: '源应用', ui: { widget: 'select', notFoundContent: '没有数据', asyncData: (/** * @return {?} */ () => this.ruleService.appListVL()), } }, srcDs: { type: "string", title: '源数据源', ui: { widget: 'select', notFoundContent: '没有数据', asyncData: (/** * @return {?} */ () => this.dataSourceService.getVoList()) } }, srcSql: { type: 'string', title: '源SQL', ui: { widget: 'textarea', autosize: { minRows: 3 } } }, cron: { type: "string", title: 'Cron表达式', ui: { placeholder: 'Cron为空时将立即执行同步', } }, syncType: { type: 'string', title: '同步类型', ui: { widget: 'radio', //todo:dirty asyncData: (/** * @return {?} */ () => this.dictService.getTypeList("syncType")) } }, destTable: { type: "string", title: '表名称', ui: { visibleIf: { syncType: ["other"] }, } }, idType: { type: "string", title: '新增主键策略', ui: { widget: 'radio', //todo:dirty asyncData: (/** * @return {?} */ () => this.dictService.getTypeList("syncIdType")), validator: (/** * @param {?} value * @return {?} */ (value) => { return value === 'auto' && this.sf.value.uniqConstraint.trim().toUpperCase() === 'ID' ? [{ keyword: 'format', message: "唯一约束字段为'ID'时新增主键策略不能为自动生成" }] : []; }), } }, uniqConstraint: { type: "string", title: '唯一约束字段', ui: { placeholder: "唯一约束字段为'ID'时不可选择自动生成新主键", validator: (/** * @param {?} value * @return {?} */ (value) => { return value.trim().toUpperCase() === 'ID' && this.sf.value.idType === 'auto' ? [{ keyword: 'format', message: "唯一约束字段为'ID'时新增主键策略不能为自动生成" }] : []; }), }, }, fieldMappings: { type: 'array', title: '字段映射', minItems: 1, uniqueItems: true, items: { type: 'object', properties: { srcField: { type: 'string', title: '源字段', }, destField: { type: 'string', title: '目标字段', }, }, required: ['srcField', 'destField'], }, ui: { grid: { arraySpan: 12, }, addTitle: '添加字段', } }, }, required: ['ruleName', 'srcDs', 'syncType', 'srcSql', 'uniqConstraint', 'appId', 'idType'], }; } /** * @return {?} */ ngOnInit() { this.isNew = this.activeRoute.snapshot.data.isNew; //必须由路由传入title值,否则不能在页标上显示 this.title = this.activeRoute.snapshot.data.title; if (this.isNew === false) { /** @type {?} */ let id = this.activeRoute.snapshot.params["id"]; if (id != null) { this.ruleService.getById(id).subscribe((/** * @param {?} res * @return {?} */ res => { //未查询到记录 if (res == null) { this.router.navigateByUrl("404"); } else { this.record = res; } })); } } } /** * @param {?} value * @return {?} */ submit(value) { if (this.isNew === true) { this.create(value); //回到同步策略列表页面 this.router.navigateByUrl("/auth/rule"); } else { this.update(value); } } /** * @param {?} value * @return {?} */ create(value) { this.ruleService.post(value).subscribe((/** * @return {?} */ () => { this.messageService.success("已保存"); })); } /** * @param {?} value * @return {?} */ update(value) { this.ruleService.put(this.record.id, value).subscribe((/** * @return {?} */ () => { this.messageService.success("已保存"); })); } /** * @return {?} */ close() { } /** * @param {?} value * @return {?} */ testSync(value) { this.ruleService.testSync(value).subscribe((/** * @param {?} res * @return {?} */ res => { if (res.body === true) { this.messageService.success("同步测试成功"); } else { this.messageService.error("同步测试失败"); } })); } } AuthRuleEditComponent.decorators = [ { type: Component, args: [{ selector: 'app-auth-rule-edit', template: "<page-header [title]=\"title\"></page-header>\r\n<nz-card>\r\n <sf #sf mode=\"edit\" [schema]=\"schema\" [formData]=\"record\" button=\"none\">\r\n <div class=\"modal-footer\">\r\n <button nz-button type=\"button\" nzType=\"primary\" (click)=\"testSync(sf.value)\" [disabled]=\"!sf.valid\" [nzLoading]=\"ruleService.http.loading\">\u540C\u6B65\u6D4B\u8BD5</button>\r\n <button nz-button type=\"submit\" nzType=\"primary\" (click)=\"submit(sf.value)\" [disabled]=\"!sf.valid\" [nzLoading]=\"ruleService.http.loading\">\u4FDD\u5B58</button>\r\n <button nz-button type=\"button\" routerLink=\"/auth/rule\">\u5173\u95ED</button>\r\n </div>\r\n </sf>\r\n</nz-card>" }] } ]; /** @nocollapse */ AuthRuleEditComponent.ctorParameters = () => [ { type: RuleService }, { type: NzMessageService }, { type: DataSourceService }, { type: DictService }, { type: ActivatedRoute }, { type: Router } ]; AuthRuleEditComponent.propDecorators = { sf: [{ type: ViewChild, args: ['sf',] }] }; if (false) { /** @type {?} */ AuthRuleEditComponent.prototype.sf; /** @type {?} */ AuthRuleEditComponent.prototype.record; /** @type {?} */ AuthRuleEditComponent.prototype.isNew; /** @type {?} */ AuthRuleEditComponent.prototype.title; /** @type {?} */ AuthRuleEditComponent.prototype.schema; /** @type {?} */ AuthRuleEditComponent.prototype.ruleService; /** * @type {?} * @private */ AuthRuleEditComponent.prototype.messageService; /** * @type {?} * @private */ AuthRuleEditComponent.prototype.dataSourceService; /** @type {?} */ AuthRuleEditComponent.prototype.dictService; /** * @type {?} * @private */ AuthRuleEditComponent.prototype.activeRoute; /** * @type {?} * @private */ AuthRuleEditComponent.prototype.router; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGVjaXAvYXV0aC8iLCJzb3VyY2VzIjpbInNyYy9ydWxlL2VkaXQvcnVsZWVkaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFpQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxXQUFXLEVBQVcsTUFBTSxhQUFhLENBQUM7QUFDbEQsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBQyxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFNdkQsTUFBTSxPQUFPLHFCQUFxQjs7Ozs7Ozs7O0lBOEhoQyxZQUVTLFdBQXVCLEVBQ3RCLGNBQStCLEVBQy9CLGlCQUFtQyxFQUNwQyxXQUF3QixFQUN2QixXQUEwQixFQUMxQixNQUFjO1FBTGYsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdEIsbUJBQWMsR0FBZCxjQUFjLENBQWlCO1FBQy9CLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDcEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDdkIsZ0JBQVcsR0FBWCxXQUFXLENBQWU7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTFIeEIsV0FBTSxHQUFhO1lBQ2pCLFVBQVUsRUFBRTtnQkFDVixRQUFRLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsS0FBSyxFQUFFLE1BQU07b0JBQ2IsRUFBRSxFQUFDOzs7d0JBR0QsU0FBUzs7Ozt3QkFBRSxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFj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bnQsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7TnpNZXNzYWdlU2VydmljZX0gZnJvbSAnbmctem9ycm8tYW50ZCc7XHJcbmltcG9ydCB7U0ZDb21wb25lbnQsIFNGU2NoZW1hfSBmcm9tICdAZGVsb24vZm9ybSc7XHJcbmltcG9ydCB7bWFwfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgRGF0YVNvdXJjZVNlcnZpY2UsIFJ1bGVTZXJ2aWNlLCBEaWN0U2VydmljZSB9IGZyb20gXCJAZWNpcC9zZXJ2aWNlXCI7XHJcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYXV0aC1ydWxlLWVkaXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ydWxlZWRpdC5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRoUnVsZUVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXR7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3NmJylcclxuICBzZjpTRkNvbXBvbmVudDtcclxuXHJcbiAgcmVjb3JkOiBhbnkgO1xyXG5cclxuICBpc05ldzogYm9vbGVhbjtcclxuXHJcbiAgdGl0bGU6c3RyaW5nO1xyXG5cclxuICBzY2hlbWE6IFNGU2NoZW1hID0ge1xyXG4gICAgcHJvcGVydGllczoge1xyXG4gICAgICBydWxlTmFtZToge1xyXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgIHRpdGxlOiAn6KeE5YiZ5ZCN56ewJyxcclxuICAgICAgICB1aTp7XHJcbiAgICAgICAgICAvL+W8guatpemqjOivge+8muWIpOaWreaYr+WQpuW3sue7j+WtmOWcqOebuOWQjOaVsOaNrua6kOWQjeensOeahOiusOW9le+8jFxyXG4gICAgICAgICAgLy/lpoLmnpzmmK/kv67mlLnmlbDmja7mupDvvIzlkozkv67mlLnliY3nmoTmlbDmja7mupDlkI3np7Dnm7jlkIzliJnlv73nlaVcclxuICAgICAgICAgIHZhbGlkYXRvcjogKHZhbHVlOiBhbnkpID0+IHRoaXMucnVsZVNlcnZpY2UuZXhpc3RzUnVsZU5hbWUodmFsdWUpXHJcbiAgICAgICAgICAgIC5waXBlKCBtYXAocmVzID0+IChyZXMgJiYgKHRoaXMuaXNOZXcgfHwgdGhpcy5yZWNvcmQucnVsZU5hbWUhPXZhbHVlKSkgPyBbIHsga2V5d29yZDogJ3JlcXVpcmVkJywgbWVzc2FnZTogJ+inhOWImeWQjeensOW3suWtmOWcqCd9IF0gOiBbXSkpXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBhcHBJZDoge1xyXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgIHRpdGxlOiAn5rqQ5bqU55SoJyxcclxuICAgICAgICB1aToge1xyXG4gICAgICAgICAgd2lkZ2V0OiAnc2VsZWN0JyxcclxuICAgICAgICAgIG5vdEZvdW5kQ29udGVudDogJ+ayoeacieaVsOaNricsXHJcbiAgICAgICAgICBhc3luY0RhdGE6ICgpID0+IHRoaXMucnVsZVNlcnZpY2UuYXBwTGlzdFZMKCksXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSxcclxuICAgICAgc3JjRHM6IHtcclxuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxyXG4gICAgICAgIHRpdGxlOiAn5rqQ5pWw5o2u5rqQJyxcclxuICAgICAgICB1aToge1xyXG4gICAgICAgICAgd2lkZ2V0OiAnc2VsZWN0JyxcclxuICAgICAgICAgIG5vdEZvdW5kQ29udGVudDogJ+ayoeacieaVsOaNricsXHJcbiAgICAgICAgICBhc3luY0RhdGE6ICgpID0+IHRoaXMuZGF0YVNvdXJjZVNlcnZpY2UuZ2V0Vm9MaXN0KClcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHNyY1NxbDoge1xyXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgIHRpdGxlOiAn5rqQU1FMJyxcclxuICAgICAgICB1aToge1xyXG4gICAgICAgICAgd2lkZ2V0OiAndGV4dGFyZWEnLFxyXG4gICAgICAgICAgYXV0b3NpemU6IHsgbWluUm93czogMyB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBjcm9uOiB7XHJcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcclxuICAgICAgICB0aXRsZTogJ0Nyb27ooajovr7lvI8nLFxyXG4gICAgICAgIHVpOntcclxuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnQ3JvbuS4uuepuuaXtuWwhueri+WNs+aJp+ihjOWQjOatpScsXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBzeW5jVHlwZToge1xyXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgIHRpdGxlOiAn5ZCM5q2l57G75Z6LJyxcclxuICAgICAgICB1aToge1xyXG4gICAgICAgICAgd2lkZ2V0OiAncmFkaW8nLFxyXG4gICAgICAgICAgLy90b2RvOmRpcnR5XHJcbiAgICAgICAgICBhc3luY0RhdGE6ICgpID0+IHRoaXMuZGljdFNlcnZpY2UuZ2V0VHlwZUxpc3QoXCJzeW5jVHlwZVwiKVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZGVzdFRhYmxlOntcclxuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxyXG4gICAgICAgIHRpdGxlOiAn6KGo5ZCN56ewJyxcclxuICAgICAgICB1aToge1xyXG4gICAgICAgICAgdmlzaWJsZUlmOntzeW5jVHlwZTogW1wib3RoZXJcIl19LFxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgaWRUeXBlOntcclxuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxyXG4gICAgICAgIHRpdGxlOiAn5paw5aKe5Li76ZSu562W55WlJyxcclxuICAgICAgICB1aToge1xyXG4gICAgICAgICAgd2lkZ2V0OiAncmFkaW8nLFxyXG4gICAgICAgICAgLy90b2RvOmRpcnR5XHJcbiAgICAgICAgICBhc3luY0RhdGE6ICgpID0+IHRoaXMuZGljdFNlcnZpY2UuZ2V0VHlwZUxpc3QoXCJzeW5jSWRUeXBlXCIpLFxyXG4gICAgICAgICAgdmFsaWRhdG9yOiAodmFsdWU6YW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSA9PT0gJ2F1dG8nICYmIHRoaXMuc2YudmFsdWUudW5pcUNvbnN0cmFpbnQudHJpbSgpLnRvVXBwZXJDYXNlKCkgPT09ICdJRCcgID8gIFt7a2V5d29yZDogJ2Zvcm1hdCcsIG1lc3NhZ2U6IFwi5ZSv5LiA57qm5p2f5a2X5q615Li6J0lEJ+aXtuaWsOWinuS4u+mUruetlueVpeS4jeiDveS4uuiHquWKqOeUn+aIkFwifV0gOiBbXTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB1bmlxQ29uc3RyYWludDp7XHJcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcclxuICAgICAgICB0aXRsZTogJ+WUr+S4gOe6puadn+Wtl+autScsXHJcbiAgICAgICAgdWk6e1xyXG4gICAgICAgICAgcGxhY2Vob2xkZXI6IFwi5ZSv5LiA57qm5p2f5a2X5q615Li6J0lEJ+aXtuS4jeWPr+mAieaLqeiHquWKqOeUn+aIkOaWsOS4u+mUrlwiLFxyXG4gICAgICAgICAgdmFsaWRhdG9yOiAodmFsdWU6YW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS50cmltKCkudG9VcHBlckNhc2UoKSA9PT0gJ0lEJyAmJiB0aGlzLnNmLnZhbHVlLmlkVHlwZSA9PT0gJ2F1dG8nICA/ICBbe2tleXdvcmQ6ICdmb3JtYXQnLCBtZXNzYWdlOiBcIuWUr+S4gOe6puadn+Wtl+auteS4uidJRCfml7bmlrDlop7kuLvplK7nrZbnlaXkuI3og73kuLroh6rliqjnlJ/miJBcIn1dIDogW107XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcblxyXG4gICAgICBmaWVsZE1hcHBpbmdzOntcclxuICAgICAgICB0eXBlOidhcnJheScsXHJcbiAgICAgICAgdGl0bGU6J+Wtl+auteaYoOWwhCcsXHJcbiAgICAgICAgbWluSXRlbXM6IDEsXHJcbiAgICAgICAgdW5pcXVlSXRlbXM6IHRydWUsXHJcbiAgICAgICAgaXRlbXM6IHtcclxuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxyXG4gICAgICAgICAgcHJvcGVydGllczoge1xyXG4gICAgICAgICAgICBzcmNGaWVsZDoge1xyXG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgICAgICAgIHRpdGxlOiAn5rqQ5a2X5q61JyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGVzdEZpZWxkOiB7XHJcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgICAgICAgICAgdGl0bGU6ICfnm67moIflrZfmrrUnLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHJlcXVpcmVkOiBbICdzcmNGaWVsZCcsICdkZXN0RmllbGQnIF0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICB1aTp7XHJcbiAgICAgICAgICBncmlkOiB7XHJcbiAgICAgICAgICAgIGFycmF5U3BhbjogMTIsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgYWRkVGl0bGU6ICfmt7vliqDlrZfmrrUnLFxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICByZXF1aXJlZDogWydydWxlTmFtZScsICdzcmNEcycsICdzeW5jVHlwZScsICdzcmNTcWwnLCAndW5pcUNvbnN0cmFpbnQnLCAnYXBwSWQnLCAnaWRUeXBlJ10sXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBwcml2YXRlIG1vZGFsOiBOek1vZGFsUmVmLFxyXG4gICAgcHVibGljIHJ1bGVTZXJ2aWNlOlJ1bGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTpOek1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkYXRhU291cmNlU2VydmljZTpEYXRhU291cmNlU2VydmljZSxcclxuICAgIHB1YmxpYyBkaWN0U2VydmljZTogRGljdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFjdGl2ZVJvdXRlOkFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzTmV3ID0gdGhpcy5hY3RpdmVSb3V0ZS5zbmFwc2hvdC5kYXRhLmlzTmV3O1xyXG4gICAgLy/lv4XpobvnlLHot6/nlLHkvKDlhaV0aXRsZeWAvO+8jOWQpuWImeS4jeiDveWcqOmhteagh+S4iuaYvuekulxyXG4gICAgdGhpcy50aXRsZSA9IHRoaXMuYWN0aXZlUm91dGUuc25hcHNob3QuZGF0YS50aXRsZTtcclxuICAgIGlmKHRoaXMuaXNOZXc9PT1mYWxzZSl7XHJcbiAgICAgIGxldCBpZCA9IHRoaXMuYWN0aXZlUm91dGUuc25hcHNob3QucGFyYW1zW1wiaWRcIl07XHJcbiAgICAgIGlmKGlkIT1udWxsKXtcclxuICAgICAgICB0aGlzLnJ1bGVTZXJ2aWNlLmdldEJ5SWQoaWQpLnN1YnNjcmliZShyZXM9PntcclxuICAgICAgICAgIC8v5pyq5p+l6K+i5Yiw6K6w5b2VXHJcbiAgICAgICAgICBpZihyZXM9PW51bGwpe1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFwiNDA0XCIpO1xyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMucmVjb3JkID0gcmVzO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgc3VibWl0KHZhbHVlOmFueSl7XHJcbiAgICBpZih0aGlzLmlzTmV3PT09dHJ1ZSl7XHJcbiAgICAgIHRoaXMuY3JlYXRlKHZhbHVlKTtcclxuICAgICAgLy/lm57liLDlkIzmraXnrZbnlaXliJfooajpobXpnaJcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChcIi9hdXRoL3J1bGVcIik7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy51cGRhdGUodmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMucnVsZVNlcnZpY2UucG9zdCh2YWx1ZSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKFwi5bey5L+d5a2YXCIpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5ydWxlU2VydmljZS5wdXQodGhpcy5yZWNvcmQuaWQsIHZhbHVlKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnN1Y2Nlc3MoXCLlt7Lkv53lrZhcIik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG5cclxuICB9XHJcblxyXG4gIHRlc3RTeW5jKHZhbHVlOiBhbnkpe1xyXG4gICAgdGhpcy5ydWxlU2VydmljZS50ZXN0U3luYyh2YWx1ZSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIGlmKHJlcy5ib2R5PT09dHJ1ZSl7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKFwi5ZCM5q2l5rWL6K+V5oiQ5YqfXCIpO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKFwi5ZCM5q2l5rWL6K+V5aSx6LSlXCIpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==