qms-angular 1.1.20 → 1.1.21

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.
Files changed (60) hide show
  1. package/bundles/qms-angular.umd.js +847 -485
  2. package/bundles/qms-angular.umd.js.map +1 -1
  3. package/esm2015/lib/common/models/qms-flat-node.model.js +1 -1
  4. package/esm2015/lib/common/models/qms-tree-node.model.js +1 -1
  5. package/esm2015/lib/components/select-access-dialog/common/animation.js +27 -3
  6. package/esm2015/lib/components/select-access-dialog/model/access-paging.model.js +12 -0
  7. package/esm2015/lib/components/select-access-dialog/model/filter-person.model.js +3 -0
  8. package/esm2015/lib/components/select-access-dialog/model/select-access-config.model.js +2 -1
  9. package/esm2015/lib/components/select-access-dialog/model/select-access-data.js +4 -3
  10. package/esm2015/lib/components/select-access-dialog/public-api.js +4 -1
  11. package/esm2015/lib/components/select-access-dialog/select-access-dialog.component.js +201 -125
  12. package/esm2015/lib/components/select-access-dialog/select-access-dialog.module.js +4 -2
  13. package/esm2015/lib/components/select-department/common/animation.js +26 -2
  14. package/esm2015/lib/components/select-department/select-department.component.js +21 -21
  15. package/esm2015/lib/components/select-department/select-department.module.js +2 -2
  16. package/esm2015/lib/components/select-department-tree/animation/animation.js +2 -2
  17. package/esm2015/lib/components/select-department-tree/model/department-paging.model.js +9 -0
  18. package/esm2015/lib/components/select-department-tree/model/selection-change.model.js +2 -0
  19. package/esm2015/lib/components/select-department-tree/public-api.js +3 -1
  20. package/esm2015/lib/components/select-department-tree/select-department-tree.component.js +312 -236
  21. package/esm2015/lib/directives/content-changes.directive.js +32 -0
  22. package/esm2015/lib/directives/tooltip/tooltip-elipsify.directive.js +51 -0
  23. package/esm2015/lib/directives/tooltip/tooltip-renderer.directive.js +1 -1
  24. package/esm2015/lib/model/en.js +3 -2
  25. package/esm2015/lib/model/no.js +3 -2
  26. package/esm2015/lib/qms-angular.module.js +9 -3
  27. package/esm2015/lib/qms-ckeditor-components/common/models/qms-ckeditor-data.model.js +1 -1
  28. package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.component.js +62 -50
  29. package/esm2015/public-api.js +3 -1
  30. package/fesm2015/qms-angular.js +790 -472
  31. package/fesm2015/qms-angular.js.map +1 -1
  32. package/lib/common/models/qms-flat-node.model.d.ts +2 -0
  33. package/lib/common/models/qms-tree-node.model.d.ts +5 -0
  34. package/lib/components/select-access-dialog/model/access-paging.model.d.ts +9 -0
  35. package/lib/components/select-access-dialog/model/filter-person.model.d.ts +6 -0
  36. package/lib/components/select-access-dialog/model/select-access-config.model.d.ts +1 -0
  37. package/lib/components/select-access-dialog/model/select-access-data.d.ts +4 -2
  38. package/lib/components/select-access-dialog/public-api.d.ts +3 -0
  39. package/lib/components/select-access-dialog/select-access-dialog.component.d.ts +41 -18
  40. package/lib/components/select-department/select-department.component.d.ts +7 -6
  41. package/lib/components/select-department-tree/model/department-paging.model.d.ts +5 -0
  42. package/lib/components/select-department-tree/model/selection-change.model.d.ts +4 -0
  43. package/lib/components/select-department-tree/public-api.d.ts +2 -0
  44. package/lib/components/select-department-tree/select-department-tree.component.d.ts +24 -15
  45. package/lib/directives/content-changes.directive.d.ts +9 -0
  46. package/lib/directives/tooltip/tooltip-elipsify.directive.d.ts +13 -0
  47. package/lib/directives/tooltip/tooltip-renderer.directive.d.ts +2 -2
  48. package/lib/model/en.d.ts +2 -1
  49. package/lib/model/no.d.ts +2 -1
  50. package/lib/qms-ckeditor-components/common/models/qms-ckeditor-data.model.d.ts +1 -1
  51. package/lib/qms-ckeditor-components/qms-ckeditor.component.d.ts +6 -0
  52. package/package.json +1 -1
  53. package/public-api.d.ts +2 -0
  54. package/qms-angular.metadata.json +1 -1
  55. package/src/assets/qms-ckeditor-plugin/build/ckeditor.js +1 -1
  56. package/src/assets/qms-ckeditor-plugin/build/ckeditor.js.map +1 -1
  57. package/src/assets/qms-ckeditor-plugin/src/plugins/template/loadtemplatedialogcommand.js +5 -1
  58. package/src/lib/components/select-access-dialog/select-access-dialog.component.scss +103 -41
  59. package/src/lib/components/select-department/select-department.component.scss +12 -0
  60. package/src/lib/components/select-department-tree/select-department-tree.component.scss +1 -1
@@ -42,6 +42,8 @@ import { QMSTableRowDirective } from './directives/table/table-row.directive';
42
42
  import { QMSDialogContainer, QMSDialogContainerV2, QMSDialogContent, QMSDialogFooter, QMSDialogHeader } from './directives/dialog/dialog.content.directive';
43
43
  import { QMSTextTruncateDirective } from './directives/text-truncate/text-truncate.directive';
44
44
  import { QMSMultiIconDirective } from './directives/qms-multi-icon.directive';
45
+ import { EllipsifyDirective } from './directives/tooltip/tooltip-elipsify.directive';
46
+ import { QMSContentChangesDirective } from './directives/content-changes.directive';
45
47
  const ɵ0 = { appearance: 'fill' }, ɵ1 = { color: 'none' };
46
48
  export class QmsAngularModule {
47
49
  }
@@ -100,7 +102,9 @@ QmsAngularModule.decorators = [
100
102
  QMSDialogHeader,
101
103
  QMSDialogContent,
102
104
  QMSDialogFooter,
103
- QMSMultiIconDirective
105
+ QMSMultiIconDirective,
106
+ EllipsifyDirective,
107
+ QMSContentChangesDirective
104
108
  ],
105
109
  imports: [
106
110
  CommonModule,
@@ -161,7 +165,9 @@ QmsAngularModule.decorators = [
161
165
  QMSDialogHeader,
162
166
  QMSDialogContent,
163
167
  QMSDialogFooter,
164
- QMSMultiIconDirective
168
+ QMSMultiIconDirective,
169
+ EllipsifyDirective,
170
+ QMSContentChangesDirective
165
171
  ],
166
172
  providers: [
167
173
  { provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, useValue: ɵ0 },
@@ -172,4 +178,4 @@ QmsAngularModule.decorators = [
172
178
  },] }
173
179
  ];
174
180
  export { ɵ0, ɵ1 };
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWFuZ3VsYXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtYW5ndWxhci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzlFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQy9HLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ25ILE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQ2pILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFD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ckMsc0NBQXNDO29CQUN0QyxtQkFBbUI7b0JBQ25CLHFCQUFxQjtvQkFDckIscUJBQXFCO29CQUNyQixnQkFBZ0I7b0JBQ2hCLDJCQUEyQjtvQkFDM0IsY0FBYztvQkFDZCxxQkFBcUI7b0JBQ3JCLGdDQUFnQztvQkFDaEMsbUNBQW1DO29CQUNuQyxrQ0FBa0M7b0JBQ2xDLDZCQUE2QjtvQkFDN0IseUJBQXlCO29CQUN6Qix3QkFBd0I7b0JBQ3hCLFlBQVk7b0JBQ1osU0FBUztvQkFDVCxpQkFBaUI7b0JBQ2pCLG9CQUFvQjtvQkFDcEIsd0JBQXdCO29CQUN4Qix5QkFBeUI7b0JBQ3pCLHFCQUFxQjtvQkFDckIscUJBQXFCO29CQUNyQix5QkFBeUI7b0JBQ3pCLGtCQUFrQjtvQkFDbEIsb0JBQW9CO29CQUNwQixlQUFlO29CQUNmLGdCQUFnQjtvQkFDaEIsZUFBZTtvQkFDZixxQkFBcUI7aUJBQ3RCO2dCQUNELFNBQVMsRUFBRTtvQkFDVCxFQUFFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxRQUFRLElBQXdCLEVBQUU7b0JBQzdFLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLFFBQVEsSUFBbUIsRUFBRTtvQkFDbkUscUJBQXFCO2lCQUN0QjtnQkFDRCxzQkFBc0I7YUFDdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTUFUX0ZPUk1fRklFTERfREVGQVVMVF9PUFRJT05TIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1BVF9SQURJT19ERUZBVUxUX09QVElPTlMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9yYWRpbyc7XHJcbmltcG9ydCB7IFFNU0NvbW1lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29tbWVudC9jb21tZW50JztcclxuaW1wb3J0IHsgU2VsZWN0RGlhbG9nIH0gZnJvbSAnLi9jb21wb25lbnRzL3NlbGVjdC1kaWFsb2cvc2VsZWN0LWRpYWxvZyc7XHJcbmltcG9ydCB7IFFNU0NvbmZpcm1EaWFsb2csIFFNU0Zvcm1EaWFsb2cgfSBmcm9tICcuL2NvbXBvbmVudHMvZGlhbG9nL2RpYWxvZyc7XHJcbmltcG9ydCB7IFFNU1N1ZmZpeERpcmVjdGl2ZSwgUU1TU3VmZml4RmllbGREaXJlY3RpdmUgfSBmcm9tICcuL2NvbXBvbmVudHMvc3VmZml4LWZpZWxkL3N1ZmZpeC1maWVsZC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNDaGlwSW5wdXRDaGlwTGlzdERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9jaGlwLWlucHV0L2NoaXAtaW5wdXQtY2hpcC1saXN0LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0NoaXBJbnB1dERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9jaGlwLWlucHV0L2NoaXAtaW5wdXQtZmllbGQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUU1TQ2hpcElucHV0U2VsZWN0RHJvcERvd25EaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvY2hpcC1pbnB1dC9jaGlwLWlucHV0LXNlbGVjdC1kcm9wZG93bi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNDaGlwSW5wdXRTZWxlY3RGaWVsZERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9jaGlwLWlucHV0L2NoaXAtaW5wdXQtc2VsZWN0LWZpZWxkLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0NoaXBJbnB1dFNlbGVjdFRyaWdnZXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvY2hpcC1pbnB1dC9jaGlwLWlucHV0LXNlbGVjdC10cmlnZ2VyLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0NoaXBCb2R5RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2NoaXBzL2NoaXAtYm9keS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNJbnB1dENoaXBEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvY2hpcHMvY2hpcC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNEcm9wZG93bk1lbnVJdGVtIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2Ryb3Bkb3duLW1lbnUvZHJvcGRvd24taXRlbS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNBdHRhY2htZW50TGlzdERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC1hdHRhY2htZW50LWxpc3QuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUU1TRmlsZVVwbG9hZERpc3BsYXlEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQtZGlzcGxheS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNGaWxlVXBsb2FkTXVsdGlwbGVEaXNwbGF5RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLW11bHRpcGxlLWRpc3BsYXkuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUU1TRmlsZVVwbG9hZE11bHRpcGxlU2VsZWN0b3JEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQtbXVsdGlwbGUtc2VsZWN0b3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUU1TRmlsZVVwbG9hZE11bHRpcGxlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLW11bHRpcGxlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU1Njcm9sYWJsZUF0dGFjaG1lbnRMaXN0RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLXNjcm9sbGFibGUtYXR0YWNobWVudC1saXN0LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0ZpbGVVcGxvYWRTZWxlY3RvckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC1zZWxlY3Rvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNGaWxlVXBsb2FkRGlyZWN0aXZlLCBRTVNVcGxvYWRpbmdGaWxlR3VhcmQgfSBmcm9tICcuL2RpcmVjdGl2ZXMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHtcclxuICBBdXRvY29tcGxldGVPZmZEaXJlY3RpdmUsXHJcbiAgUU1TRm9ybUZpZWxkRGF0ZVBpY2tlckRpcmVjdGl2ZSxcclxuICBRTVNGb3JtRmllbGREaXJlY3RpdmUsXHJcbiAgUU1TRm9ybUZpZWxkVGV4dGFyZWFEaXJlY3RpdmUsXHJcbiAgUU1TR3JvdXBPcHRpb25EaXJlY3RpdmVcclxufSBmcm9tICcuL2RpcmVjdGl2ZXMvZm9ybS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBNYXJnaW5EaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvbWFyZ2luLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNjcm9sbFRvU2VsZWN0ZWREaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2Nyb2xsLXNlbGVjdGVkL3Njcm9sbC10by1zZWxlY3RlZC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNTY3JvbGxiYXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2Nyb2xsYmFyL3Njcm9sbGJhci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQge1xyXG4gIFFNU0lucHV0Q2xlYXJEaXJlY3RpdmUsXHJcbiAgUU1TU2VhcmNoRmllbGREaXJlY3RpdmVcclxufSBmcm9tICcuL2RpcmVjdGl2ZXMvc2VhcmNoLWZpZWxkLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU1RleHRCbG9ja0xpbmUgfSBmcm9tIFwiLi9kaXJlY3RpdmVzL3RleHQtYmxvY2svdGV4dC1ibG9jay1saW5lLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBRTVNUZXh0QmxvY2tEaXJlY3RpdmUgfSBmcm9tIFwiLi9kaXJlY3RpdmVzL3RleHQtYmxvY2svdGV4dC1ibG9jay5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHsgUU1TVG9vbHRpcEltYWdlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3Rvb2x0aXAvdG9vbHRpcC1pbWFnZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNUb29sVGlwUmVuZGVyZXJEaXJlY3RpdmUgfSBmcm9tIFwiLi9kaXJlY3RpdmVzL3Rvb2x0aXAvdG9vbHRpcC1yZW5kZXJlci5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHsgU2hhcmVkTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuL21hdGVyaWFsLW1vZHVsZSc7XHJcbmltcG9ydCB7IERhdGVGb3JtYXRQaXBlIH0gZnJvbSAnLi9waXBlL2RhdGVGb3JtYXQucGlwZSc7XHJcbmltcG9ydCB7IFFtc0FuZ3VsYXJDb21wb25lbnQgfSBmcm9tICcuL3Ftcy1hbmd1bGFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSB9IGZyb20gJy4vc2hhcmVkLm1vZHVsZSc7XHJcbmltcG9ydCB7IFFNU0FwcEJhciB9IGZyb20gJy4vZGlyZWN0aXZlcy9hcHAtYmFyL2FwcC1iYXIuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ2RrRGV0YWlsUm93RGlyZWN0aXZlLCBRTVNDb2xsYXBzZUdyb3VwRGlyZWN0aXZlLCBRTVNSb3dEZXRhaWxEaXJlY3RpdmUsIFFNU1RhYmxlQ2hpbGRyZW5EaXJlY3RpdmUsIFFNU1RhYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3RhYmxlL3RhYmxlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU1RhYmxlUm93RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3RhYmxlL3RhYmxlLXJvdy5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNEaWFsb2dDb250YWluZXIsIFFNU0RpYWxvZ0NvbnRhaW5lclYyLCBRTVNEaWFsb2dDb250ZW50LCBRTVNEaWFsb2dGb290ZXIsIFFNU0RpYWxvZ0hlYWRlciB9IGZyb20gJy4vZGlyZWN0aXZlcy9kaWFsb2cvZGlhbG9nLmNvbnRlbnQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUU1TVGV4dFRydW5jYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3RleHQtdHJ1bmNhdGUvdGV4dC10cnVuY2F0ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNNdWx0aUljb25EaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvcW1zLW11bHRpLWljb24uZGlyZWN0aXZlJztcclxuXHJcblxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIFFtc0FuZ3VsYXJDb21wb25lbnQsXHJcbiAgICBNYXJnaW5EaXJlY3RpdmUsXHJcbiAgICBRTVNTZWFyY2hGaWVsZERpcmVjdGl2ZSxcclxuICAgIFFNU0lucHV0Q2xlYXJEaXJlY3RpdmUsXHJcbiAgICBRTVNGb3JtRmllbGREaXJlY3RpdmUsXHJcbiAgICBRTVNGb3JtRmllbGRUZXh0YXJlYURpcmVjdGl2ZSxcclxuICAgIFFNU0dyb3VwT3B0aW9uRGlyZWN0aXZlLFxyXG4gICAgUU1TU3VmZml4RmllbGREaXJlY3RpdmUsXHJcbiAgICBRTVNTdWZmaXhEaXJlY3RpdmUsXHJcbiAgICBRTVNGb3JtRmllbGRUZXh0YXJlYURpcmVjdGl2ZSxcclxuICAgIEF1dG9jb21wbGV0ZU9mZkRpcmVjdGl2ZSxcclxuICAgIFFNU0NvbW1lbnQsXHJcbiAgICBRTVNDb25maXJtRGlhbG9nLFxyXG4gICAgUU1TRm9ybURpYWxvZyxcclxuICAgIFFNU0Zvcm1GaWVsZERhdGVQaWNrZXJEaXJlY3RpdmUsXHJcbiAgICBRTVNJbnB1dENoaXBEaXJlY3RpdmUsXHJcbiAgICBRTVNDaGlwQm9keURpcmVjdGl2ZSxcclxuICAgIFFNU0ZpbGVVcGxvYWREaXJlY3RpdmUsXHJcbiAgICBRTVNGaWxlVXBsb2FkRGlzcGxheURpcmVjdGl2ZSxcclxuICAgIFFNU0ZpbGVVcGxvYWRTZWxlY3RvckRpcmVjdGl2ZSxcclxuICAgIFFNU0F0dGFjaG1lbnRMaXN0RGlyZWN0aXZlLFxyXG4gICAgUU1TU2Nyb2xhYmxlQXR0YWNobWVudExpc3REaXJlY3RpdmUsXHJcbiAgICBRTVNGaWxlVXBsb2FkTXVsdGlwbGVEaXJlY3RpdmUsXHJcbiAgICBRTVNGaWxlVXBsb2FkTXVsdGlwbGVEaXNwbGF5RGlyZWN0aXZlLFxyXG4gICAgUU1TRmlsZVVwbG9hZE11bHRpcGxlU2VsZWN0b3JEaXJlY3RpdmUsXHJcbiAgICBRTVNEcm9wZG93bk1lbnVJdGVtLFxyXG4gICAgUU1TU2Nyb2xsYmFyRGlyZWN0aXZlLFxyXG4gICAgUU1TVGV4dEJsb2NrRGlyZWN0aXZlLFxyXG4gICAgUU1TVGV4dEJsb2NrTGluZSxcclxuICAgIFFNU1Rvb2xUaXBSZW5kZXJlckRpcmVjdGl2ZSxcclxuICAgIFFNU1RhYmxlRGlyZWN0aXZlLFxyXG4gICAgUU1TVGFibGVSb3dEaXJlY3RpdmUsXHJcbiAgICBRTVNUZXh0VHJ1bmNhdGVEaXJlY3RpdmUsXHJcbiAgICBRTVNSb3dEZXRhaWxEaXJlY3RpdmUsXHJcbiAgICBRTVNUYWJsZUNoaWxkcmVuRGlyZWN0aXZlLFxyXG4gICAgQ2RrRGV0YWlsUm93RGlyZWN0aXZlLFxyXG4gICAgUU1TQ29sbGFwc2VHcm91cERpcmVjdGl2ZSxcclxuICAgIERhdGVGb3JtYXRQaXBlLFxyXG4gICAgUU1TQ2hpcElucHV0RGlyZWN0aXZlLFxyXG4gICAgUU1TQ2hpcElucHV0U2VsZWN0RmllbGREaXJlY3RpdmUsXHJcbiAgICBRTVNDaGlwSW5wdXRTZWxlY3REcm9wRG93bkRpcmVjdGl2ZSxcclxuICAgIFFNU0NoaXBJbnB1dFNlbGVjdFRyaWdnZXJEaXJlY3RpdmUsXHJcbiAgICBRTVNDaGlwSW5wdXRDaGlwTGlzdERpcmVjdGl2ZSxcclxuICAgIFNjcm9sbFRvU2VsZWN0ZWREaXJlY3RpdmUsXHJcbiAgICBRTVNUb29sdGlwSW1hZ2VEaXJlY3RpdmUsXHJcbiAgICBTZWxlY3REaWFsb2csXHJcbiAgICBRTVNBcHBCYXIsXHJcbiAgICBRTVNEaWFsb2dDb250YWluZXIsXHJcbiAgICBRTVNEaWFsb2dDb250YWluZXJWMixcclxuICAgIFFNU0RpYWxvZ0hlYWRlcixcclxuICAgIFFNU0RpYWxvZ0NvbnRlbnQsXHJcbiAgICBRTVNEaWFsb2dGb290ZXIsXHJcbiAgICBRTVNNdWx0aUljb25EaXJlY3RpdmVcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFNoYXJlZE1vZHVsZS5mb3JSb290KCksXHJcbiAgICBTaGFyZWRNYXRlcmlhbE1vZHVsZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgUW1zQW5ndWxhckNvbXBvbmVudCxcclxuICAgIE1hcmdpbkRpcmVjdGl2ZSxcclxuICAgIFFNU1NlYXJjaEZpZWxkRGlyZWN0aXZlLFxyXG4gICAgUU1TSW5wdXRDbGVhckRpcmVjdGl2ZSxcclxuICAgIFFNU0Zvcm1GaWVsZERpcmVjdGl2ZSxcclxuICAgIFFNU0Zvcm1GaWVsZFRleHRhcmVhRGlyZWN0aXZlLFxyXG4gICAgUU1TR3JvdXBPcHRpb25EaXJlY3RpdmUsXHJcbiAgICBRTVNTdWZmaXhGaWVsZERpcmVjdGl2ZSxcclxuICAgIFFNU1N1ZmZpeERpcmVjdGl2ZSxcclxuICAgIEF1dG9jb21wbGV0ZU9mZkRpcmVjdGl2ZSxcclxuICAgIFFNU0NvbW1lbnQsXHJcbiAgICBRTVNDb25maXJtRGlhbG9nLFxyXG4gICAgUU1TRm9ybURpYWxvZyxcclxuICAgIFFNU0lucHV0Q2hpcERpcmVjdGl2ZSxcclxuICAgIFFNU0NoaXBCb2R5RGlyZWN0aXZlLFxyXG4gICAgUU1TRm9ybUZpZWxkRGF0ZVBpY2tlckRpcmVjdGl2ZSxcclxuICAgIFFNU0ZpbGVVcGxvYWREaXJlY3RpdmUsXHJcbiAgICBRTVNGaWxlVXBsb2FkRGlzcGxheURpcmVjdGl2ZSxcclxuICAgIFFNU0ZpbGVVcGxvYWRTZWxlY3RvckRpcmVjdGl2ZSxcclxuICAgIFFNU0F0dGFjaG1lbnRMaXN0RGlyZWN0aXZlLFxyXG4gICAgUU1TU2Nyb2xhYmxlQXR0YWNobWVudExpc3REaXJlY3RpdmUsXHJcbiAgICBRTVNGaWxlVXBsb2FkTXVsdGlwbGVEaXJlY3RpdmUsXHJcbiAgICBRTVNGaWxlVXBsb2FkTXVsdGlwbGVEaXNwbGF5RGlyZWN0aXZlLFxyXG4gICAgUU1TRmlsZVVwbG9hZE11bHRpcGxlU2VsZWN0b3JEaXJlY3RpdmUsXHJcbiAgICBRTVNEcm9wZG93bk1lbnVJdGVtLFxyXG4gICAgUU1TU2Nyb2xsYmFyRGlyZWN0aXZlLFxyXG4gICAgUU1TVGV4dEJsb2NrRGlyZWN0aXZlLFxyXG4gICAgUU1TVGV4dEJsb2NrTGluZSxcclxuICAgIFFNU1Rvb2xUaXBSZW5kZXJlckRpcmVjdGl2ZSxcclxuICAgIERhdGVGb3JtYXRQaXBlLFxyXG4gICAgUU1TQ2hpcElucHV0RGlyZWN0aXZlLFxyXG4gICAgUU1TQ2hpcElucHV0U2VsZWN0RmllbGREaXJlY3RpdmUsXHJcbiAgICBRTVNDaGlwSW5wdXRTZWxlY3REcm9wRG93bkRpcmVjdGl2ZSxcclxuICAgIFFNU0NoaXBJbnB1dFNlbGVjdFRyaWdnZXJEaXJlY3RpdmUsXHJcbiAgICBRTVNDaGlwSW5wdXRDaGlwTGlzdERpcmVjdGl2ZSxcclxuICAgIFNjcm9sbFRvU2VsZWN0ZWREaXJlY3RpdmUsXHJcbiAgICBRTVNUb29sdGlwSW1hZ2VEaXJlY3RpdmUsXHJcbiAgICBTZWxlY3REaWFsb2csXHJcbiAgICBRTVNBcHBCYXIsXHJcbiAgICBRTVNUYWJsZURpcmVjdGl2ZSxcclxuICAgIFFNU1RhYmxlUm93RGlyZWN0aXZlLFxyXG4gICAgUU1TVGV4dFRydW5jYXRlRGlyZWN0aXZlLFxyXG4gICAgUU1TVGFibGVDaGlsZHJlbkRpcmVjdGl2ZSxcclxuICAgIFFNU1Jvd0RldGFpbERpcmVjdGl2ZSxcclxuICAgIENka0RldGFpbFJvd0RpcmVjdGl2ZSxcclxuICAgIFFNU0NvbGxhcHNlR3JvdXBEaXJlY3RpdmUsXHJcbiAgICBRTVNEaWFsb2dDb250YWluZXIsXHJcbiAgICBRTVNEaWFsb2dDb250YWluZXJWMixcclxuICAgIFFNU0RpYWxvZ0hlYWRlcixcclxuICAgIFFNU0RpYWxvZ0NvbnRlbnQsXHJcbiAgICBRTVNEaWFsb2dGb290ZXIsXHJcbiAgICBRTVNNdWx0aUljb25EaXJlY3RpdmVcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgeyBwcm92aWRlOiBNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMsIHVzZVZhbHVlOiB7IGFwcGVhcmFuY2U6ICdmaWxsJyB9IH0sXHJcbiAgICB7IHByb3ZpZGU6IE1BVF9SQURJT19ERUZBVUxUX09QVElPTlMsIHVzZVZhbHVlOiB7IGNvbG9yOiAnbm9uZScgfSB9LFxyXG4gICAgUU1TVXBsb2FkaW5nRmlsZUd1YXJkXHJcbiAgXSxcclxuICAvLyBlbnRyeUNvbXBvbmVudHM6IFtdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRbXNBbmd1bGFyTW9kdWxlIHsgfVxyXG4iXX0=
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWFuZ3VsYXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtYW5ndWxhci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzlFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQy9HLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ25ILE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQ2pILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFD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QjtvQkFDcEIsK0JBQStCO29CQUMvQixzQkFBc0I7b0JBQ3RCLDZCQUE2QjtvQkFDN0IsOEJBQThCO29CQUM5QiwwQkFBMEI7b0JBQzFCLG1DQUFtQztvQkFDbkMsOEJBQThCO29CQUM5QixxQ0FBcUM7b0JBQ3JDLHNDQUFzQztvQkFDdEMsbUJBQW1CO29CQUNuQixxQkFBcUI7b0JBQ3JCLHFCQUFxQjtvQkFDckIsZ0JBQWdCO29CQUNoQiwyQkFBMkI7b0JBQzNCLGNBQWM7b0JBQ2QscUJBQXFCO29CQUNyQixnQ0FBZ0M7b0JBQ2hDLG1DQUFtQztvQkFDbkMsa0NBQWtDO29CQUNsQyw2QkFBNkI7b0JBQzdCLHlCQUF5QjtvQkFDekIsd0JBQXdCO29CQUN4QixZQUFZO29CQUNaLFNBQVM7b0JBQ1QsaUJBQWlCO29CQUNqQixvQkFBb0I7b0JBQ3BCLHdCQUF3QjtvQkFDeEIseUJBQXlCO29CQUN6QixxQkFBcUI7b0JBQ3JCLHFCQUFxQjtvQkFDckIseUJBQXlCO29CQUN6QixrQkFBa0I7b0JBQ2xCLG9CQUFvQjtvQkFDcEIsZUFBZTtvQkFDZixnQkFBZ0I7b0JBQ2hCLGVBQWU7b0JBQ2YscUJBQXFCO29CQUNyQixrQkFBa0I7b0JBQ2xCLDBCQUEwQjtpQkFDM0I7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULEVBQUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLFFBQVEsSUFBd0IsRUFBRTtvQkFDN0UsRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsUUFBUSxJQUFtQixFQUFFO29CQUNuRSxxQkFBcUI7aUJBQ3RCO2dCQUNELHNCQUFzQjthQUN2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTUFUX1JBRElPX0RFRkFVTFRfT1BUSU9OUyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvJztcclxuaW1wb3J0IHsgUU1TQ29tbWVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb21tZW50L2NvbW1lbnQnO1xyXG5pbXBvcnQgeyBTZWxlY3REaWFsb2cgfSBmcm9tICcuL2NvbXBvbmVudHMvc2VsZWN0LWRpYWxvZy9zZWxlY3QtZGlhbG9nJztcclxuaW1wb3J0IHsgUU1TQ29uZmlybURpYWxvZywgUU1TRm9ybURpYWxvZyB9IGZyb20gJy4vY29tcG9uZW50cy9kaWFsb2cvZGlhbG9nJztcclxuaW1wb3J0IHsgUU1TU3VmZml4RGlyZWN0aXZlLCBRTVNTdWZmaXhGaWVsZERpcmVjdGl2ZSB9IGZyb20gJy4vY29tcG9uZW50cy9zdWZmaXgtZmllbGQvc3VmZml4LWZpZWxkLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0NoaXBJbnB1dENoaXBMaXN0RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2NoaXAtaW5wdXQvY2hpcC1pbnB1dC1jaGlwLWxpc3QuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUU1TQ2hpcElucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2NoaXAtaW5wdXQvY2hpcC1pbnB1dC1maWVsZC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNDaGlwSW5wdXRTZWxlY3REcm9wRG93bkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9jaGlwLWlucHV0L2NoaXAtaW5wdXQtc2VsZWN0LWRyb3Bkb3duLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0NoaXBJbnB1dFNlbGVjdEZpZWxkRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2NoaXAtaW5wdXQvY2hpcC1pbnB1dC1zZWxlY3QtZmllbGQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUU1TQ2hpcElucHV0U2VsZWN0VHJpZ2dlckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9jaGlwLWlucHV0L2NoaXAtaW5wdXQtc2VsZWN0LXRyaWdnZXIuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUU1TQ2hpcEJvZHlEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvY2hpcHMvY2hpcC1ib2R5LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0lucHV0Q2hpcERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9jaGlwcy9jaGlwLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0Ryb3Bkb3duTWVudUl0ZW0gfSBmcm9tICcuL2RpcmVjdGl2ZXMvZHJvcGRvd24tbWVudS9kcm9wZG93bi1pdGVtLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0F0dGFjaG1lbnRMaXN0RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLWF0dGFjaG1lbnQtbGlzdC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNGaWxlVXBsb2FkRGlzcGxheURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC1kaXNwbGF5LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0ZpbGVVcGxvYWRNdWx0aXBsZURpc3BsYXlEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQtbXVsdGlwbGUtZGlzcGxheS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNGaWxlVXBsb2FkTXVsdGlwbGVTZWxlY3RvckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC1tdWx0aXBsZS1zZWxlY3Rvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNGaWxlVXBsb2FkTXVsdGlwbGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQtbXVsdGlwbGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUU1TU2Nyb2xhYmxlQXR0YWNobWVudExpc3REaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQtc2Nyb2xsYWJsZS1hdHRhY2htZW50LWxpc3QuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUU1TRmlsZVVwbG9hZFNlbGVjdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLXNlbGVjdG9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0ZpbGVVcGxvYWREaXJlY3RpdmUsIFFNU1VwbG9hZGluZ0ZpbGVHdWFyZCB9IGZyb20gJy4vZGlyZWN0aXZlcy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQge1xyXG4gIEF1dG9jb21wbGV0ZU9mZkRpcmVjdGl2ZSxcclxuICBRTVNGb3JtRmllbGREYXRlUGlja2VyRGlyZWN0aXZlLFxyXG4gIFFNU0Zvcm1GaWVsZERpcmVjdGl2ZSxcclxuICBRTVNGb3JtRmllbGRUZXh0YXJlYURpcmVjdGl2ZSxcclxuICBRTVNHcm91cE9wdGlvbkRpcmVjdGl2ZVxyXG59IGZyb20gJy4vZGlyZWN0aXZlcy9mb3JtLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE1hcmdpbkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9tYXJnaW4uZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2Nyb2xsVG9TZWxlY3RlZERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zY3JvbGwtc2VsZWN0ZWQvc2Nyb2xsLXRvLXNlbGVjdGVkLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU1Njcm9sbGJhckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zY3JvbGxiYXIvc2Nyb2xsYmFyLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7XHJcbiAgUU1TSW5wdXRDbGVhckRpcmVjdGl2ZSxcclxuICBRTVNTZWFyY2hGaWVsZERpcmVjdGl2ZVxyXG59IGZyb20gJy4vZGlyZWN0aXZlcy9zZWFyY2gtZmllbGQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUU1TVGV4dEJsb2NrTGluZSB9IGZyb20gXCIuL2RpcmVjdGl2ZXMvdGV4dC1ibG9jay90ZXh0LWJsb2NrLWxpbmUuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7IFFNU1RleHRCbG9ja0RpcmVjdGl2ZSB9IGZyb20gXCIuL2RpcmVjdGl2ZXMvdGV4dC1ibG9jay90ZXh0LWJsb2NrLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBRTVNUb29sdGlwSW1hZ2VEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLWltYWdlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU1Rvb2xUaXBSZW5kZXJlckRpcmVjdGl2ZSB9IGZyb20gXCIuL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLXJlbmRlcmVyLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBTaGFyZWRNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4vbWF0ZXJpYWwtbW9kdWxlJztcclxuaW1wb3J0IHsgRGF0ZUZvcm1hdFBpcGUgfSBmcm9tICcuL3BpcGUvZGF0ZUZvcm1hdC5waXBlJztcclxuaW1wb3J0IHsgUW1zQW5ndWxhckNvbXBvbmVudCB9IGZyb20gJy4vcW1zLWFuZ3VsYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2hhcmVkTW9kdWxlIH0gZnJvbSAnLi9zaGFyZWQubW9kdWxlJztcclxuaW1wb3J0IHsgUU1TQXBwQmFyIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2FwcC1iYXIvYXBwLWJhci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDZGtEZXRhaWxSb3dEaXJlY3RpdmUsIFFNU0NvbGxhcHNlR3JvdXBEaXJlY3RpdmUsIFFNU1Jvd0RldGFpbERpcmVjdGl2ZSwgUU1TVGFibGVDaGlsZHJlbkRpcmVjdGl2ZSwgUU1TVGFibGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdGFibGUvdGFibGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUU1TVGFibGVSb3dEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdGFibGUvdGFibGUtcm93LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0RpYWxvZ0NvbnRhaW5lciwgUU1TRGlhbG9nQ29udGFpbmVyVjIsIFFNU0RpYWxvZ0NvbnRlbnQsIFFNU0RpYWxvZ0Zvb3RlciwgUU1TRGlhbG9nSGVhZGVyIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2RpYWxvZy9kaWFsb2cuY29udGVudC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNUZXh0VHJ1bmNhdGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdGV4dC10cnVuY2F0ZS90ZXh0LXRydW5jYXRlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU011bHRpSWNvbkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9xbXMtbXVsdGktaWNvbi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBFbGxpcHNpZnlEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLWVsaXBzaWZ5LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0NvbnRlbnRDaGFuZ2VzRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2NvbnRlbnQtY2hhbmdlcy5kaXJlY3RpdmUnO1xyXG5cclxuXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgUW1zQW5ndWxhckNvbXBvbmVudCxcclxuICAgIE1hcmdpbkRpcmVjdGl2ZSxcclxuICAgIFFNU1NlYXJjaEZpZWxkRGlyZWN0aXZlLFxyXG4gICAgUU1TSW5wdXRDbGVhckRpcmVjdGl2ZSxcclxuICAgIFFNU0Zvcm1GaWVsZERpcmVjdGl2ZSxcclxuICAgIFFNU0Zvcm1GaWVsZFRleHRhcmVhRGlyZWN0aXZlLFxyXG4gICAgUU1TR3JvdXBPcHRpb25EaXJlY3RpdmUsXHJcbiAgICBRTVNTdWZmaXhGaWVsZERpcmVjdGl2ZSxcclxuICAgIFFNU1N1ZmZpeERpcmVjdGl2ZSxcclxuICAgIFFNU0Zvcm1GaWVsZFRleHRhcmVhRGlyZWN0aXZlLFxyXG4gICAgQXV0b2NvbXBsZXRlT2ZmRGlyZWN0aXZlLFxyXG4gICAgUU1TQ29tbWVudCxcclxuICAgIFFNU0NvbmZpcm1EaWFsb2csXHJcbiAgICBRTVNGb3JtRGlhbG9nLFxyXG4gICAgUU1TRm9ybUZpZWxkRGF0ZVBpY2tlckRpcmVjdGl2ZSxcclxuICAgIFFNU0lucHV0Q2hpcERpcmVjdGl2ZSxcclxuICAgIFFNU0NoaXBCb2R5RGlyZWN0aXZlLFxyXG4gICAgUU1TRmlsZVVwbG9hZERpcmVjdGl2ZSxcclxuICAgIFFNU0ZpbGVVcGxvYWREaXNwbGF5RGlyZWN0aXZlLFxyXG4gICAgUU1TRmlsZVVwbG9hZFNlbGVjdG9yRGlyZWN0aXZlLFxyXG4gICAgUU1TQXR0YWNobWVudExpc3REaXJlY3RpdmUsXHJcbiAgICBRTVNTY3JvbGFibGVBdHRhY2htZW50TGlzdERpcmVjdGl2ZSxcclxuICAgIFFNU0ZpbGVVcGxvYWRNdWx0aXBsZURpcmVjdGl2ZSxcclxuICAgIFFNU0ZpbGVVcGxvYWRNdWx0aXBsZURpc3BsYXlEaXJlY3RpdmUsXHJcbiAgICBRTVNGaWxlVXBsb2FkTXVsdGlwbGVTZWxlY3RvckRpcmVjdGl2ZSxcclxuICAgIFFNU0Ryb3Bkb3duTWVudUl0ZW0sXHJcbiAgICBRTVNTY3JvbGxiYXJEaXJlY3RpdmUsXHJcbiAgICBRTVNUZXh0QmxvY2tEaXJlY3RpdmUsXHJcbiAgICBRTVNUZXh0QmxvY2tMaW5lLFxyXG4gICAgUU1TVG9vbFRpcFJlbmRlcmVyRGlyZWN0aXZlLFxyXG4gICAgUU1TVGFibGVEaXJlY3RpdmUsXHJcbiAgICBRTVNUYWJsZVJvd0RpcmVjdGl2ZSxcclxuICAgIFFNU1RleHRUcnVuY2F0ZURpcmVjdGl2ZSxcclxuICAgIFFNU1Jvd0RldGFpbERpcmVjdGl2ZSxcclxuICAgIFFNU1RhYmxlQ2hpbGRyZW5EaXJlY3RpdmUsXHJcbiAgICBDZGtEZXRhaWxSb3dEaXJlY3RpdmUsXHJcbiAgICBRTVNDb2xsYXBzZUdyb3VwRGlyZWN0aXZlLFxyXG4gICAgRGF0ZUZvcm1hdFBpcGUsXHJcbiAgICBRTVNDaGlwSW5wdXREaXJlY3RpdmUsXHJcbiAgICBRTVNDaGlwSW5wdXRTZWxlY3RGaWVsZERpcmVjdGl2ZSxcclxuICAgIFFNU0NoaXBJbnB1dFNlbGVjdERyb3BEb3duRGlyZWN0aXZlLFxyXG4gICAgUU1TQ2hpcElucHV0U2VsZWN0VHJpZ2dlckRpcmVjdGl2ZSxcclxuICAgIFFNU0NoaXBJbnB1dENoaXBMaXN0RGlyZWN0aXZlLFxyXG4gICAgU2Nyb2xsVG9TZWxlY3RlZERpcmVjdGl2ZSxcclxuICAgIFFNU1Rvb2x0aXBJbWFnZURpcmVjdGl2ZSxcclxuICAgIFNlbGVjdERpYWxvZyxcclxuICAgIFFNU0FwcEJhcixcclxuICAgIFFNU0RpYWxvZ0NvbnRhaW5lcixcclxuICAgIFFNU0RpYWxvZ0NvbnRhaW5lclYyLFxyXG4gICAgUU1TRGlhbG9nSGVhZGVyLFxyXG4gICAgUU1TRGlhbG9nQ29udGVudCxcclxuICAgIFFNU0RpYWxvZ0Zvb3RlcixcclxuICAgIFFNU011bHRpSWNvbkRpcmVjdGl2ZSxcclxuICAgIEVsbGlwc2lmeURpcmVjdGl2ZSxcclxuICAgIFFNU0NvbnRlbnRDaGFuZ2VzRGlyZWN0aXZlXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBTaGFyZWRNb2R1bGUuZm9yUm9vdCgpLFxyXG4gICAgU2hhcmVkTWF0ZXJpYWxNb2R1bGVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIFFtc0FuZ3VsYXJDb21wb25lbnQsXHJcbiAgICBNYXJnaW5EaXJlY3RpdmUsXHJcbiAgICBRTVNTZWFyY2hGaWVsZERpcmVjdGl2ZSxcclxuICAgIFFNU0lucHV0Q2xlYXJEaXJlY3RpdmUsXHJcbiAgICBRTVNGb3JtRmllbGREaXJlY3RpdmUsXHJcbiAgICBRTVNGb3JtRmllbGRUZXh0YXJlYURpcmVjdGl2ZSxcclxuICAgIFFNU0dyb3VwT3B0aW9uRGlyZWN0aXZlLFxyXG4gICAgUU1TU3VmZml4RmllbGREaXJlY3RpdmUsXHJcbiAgICBRTVNTdWZmaXhEaXJlY3RpdmUsXHJcbiAgICBBdXRvY29tcGxldGVPZmZEaXJlY3RpdmUsXHJcbiAgICBRTVNDb21tZW50LFxyXG4gICAgUU1TQ29uZmlybURpYWxvZyxcclxuICAgIFFNU0Zvcm1EaWFsb2csXHJcbiAgICBRTVNJbnB1dENoaXBEaXJlY3RpdmUsXHJcbiAgICBRTVNDaGlwQm9keURpcmVjdGl2ZSxcclxuICAgIFFNU0Zvcm1GaWVsZERhdGVQaWNrZXJEaXJlY3RpdmUsXHJcbiAgICBRTVNGaWxlVXBsb2FkRGlyZWN0aXZlLFxyXG4gICAgUU1TRmlsZVVwbG9hZERpc3BsYXlEaXJlY3RpdmUsXHJcbiAgICBRTVNGaWxlVXBsb2FkU2VsZWN0b3JEaXJlY3RpdmUsXHJcbiAgICBRTVNBdHRhY2htZW50TGlzdERpcmVjdGl2ZSxcclxuICAgIFFNU1Njcm9sYWJsZUF0dGFjaG1lbnRMaXN0RGlyZWN0aXZlLFxyXG4gICAgUU1TRmlsZVVwbG9hZE11bHRpcGxlRGlyZWN0aXZlLFxyXG4gICAgUU1TRmlsZVVwbG9hZE11bHRpcGxlRGlzcGxheURpcmVjdGl2ZSxcclxuICAgIFFNU0ZpbGVVcGxvYWRNdWx0aXBsZVNlbGVjdG9yRGlyZWN0aXZlLFxyXG4gICAgUU1TRHJvcGRvd25NZW51SXRlbSxcclxuICAgIFFNU1Njcm9sbGJhckRpcmVjdGl2ZSxcclxuICAgIFFNU1RleHRCbG9ja0RpcmVjdGl2ZSxcclxuICAgIFFNU1RleHRCbG9ja0xpbmUsXHJcbiAgICBRTVNUb29sVGlwUmVuZGVyZXJEaXJlY3RpdmUsXHJcbiAgICBEYXRlRm9ybWF0UGlwZSxcclxuICAgIFFNU0NoaXBJbnB1dERpcmVjdGl2ZSxcclxuICAgIFFNU0NoaXBJbnB1dFNlbGVjdEZpZWxkRGlyZWN0aXZlLFxyXG4gICAgUU1TQ2hpcElucHV0U2VsZWN0RHJvcERvd25EaXJlY3RpdmUsXHJcbiAgICBRTVNDaGlwSW5wdXRTZWxlY3RUcmlnZ2VyRGlyZWN0aXZlLFxyXG4gICAgUU1TQ2hpcElucHV0Q2hpcExpc3REaXJlY3RpdmUsXHJcbiAgICBTY3JvbGxUb1NlbGVjdGVkRGlyZWN0aXZlLFxyXG4gICAgUU1TVG9vbHRpcEltYWdlRGlyZWN0aXZlLFxyXG4gICAgU2VsZWN0RGlhbG9nLFxyXG4gICAgUU1TQXBwQmFyLFxyXG4gICAgUU1TVGFibGVEaXJlY3RpdmUsXHJcbiAgICBRTVNUYWJsZVJvd0RpcmVjdGl2ZSxcclxuICAgIFFNU1RleHRUcnVuY2F0ZURpcmVjdGl2ZSxcclxuICAgIFFNU1RhYmxlQ2hpbGRyZW5EaXJlY3RpdmUsXHJcbiAgICBRTVNSb3dEZXRhaWxEaXJlY3RpdmUsXHJcbiAgICBDZGtEZXRhaWxSb3dEaXJlY3RpdmUsXHJcbiAgICBRTVNDb2xsYXBzZUdyb3VwRGlyZWN0aXZlLFxyXG4gICAgUU1TRGlhbG9nQ29udGFpbmVyLFxyXG4gICAgUU1TRGlhbG9nQ29udGFpbmVyVjIsXHJcbiAgICBRTVNEaWFsb2dIZWFkZXIsXHJcbiAgICBRTVNEaWFsb2dDb250ZW50LFxyXG4gICAgUU1TRGlhbG9nRm9vdGVyLFxyXG4gICAgUU1TTXVsdGlJY29uRGlyZWN0aXZlLFxyXG4gICAgRWxsaXBzaWZ5RGlyZWN0aXZlLFxyXG4gICAgUU1TQ29udGVudENoYW5nZXNEaXJlY3RpdmVcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgeyBwcm92aWRlOiBNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMsIHVzZVZhbHVlOiB7IGFwcGVhcmFuY2U6ICdmaWxsJyB9IH0sXHJcbiAgICB7IHByb3ZpZGU6IE1BVF9SQURJT19ERUZBVUxUX09QVElPTlMsIHVzZVZhbHVlOiB7IGNvbG9yOiAnbm9uZScgfSB9LFxyXG4gICAgUU1TVXBsb2FkaW5nRmlsZUd1YXJkXHJcbiAgXSxcclxuICAvLyBlbnRyeUNvbXBvbmVudHM6IFtdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRbXNBbmd1bGFyTW9kdWxlIHsgfVxyXG4iXX0=
@@ -1,3 +1,3 @@
1
1
  export class QMSCKEditorData {
2
2
  }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL3Ftcy1ja2VkaXRvci1jb21wb25lbnRzL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLWRhdGEubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGVBQWU7Q0FhM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXUHJvb2ZyZWFkZXJDb25maWcgfSBmcm9tIFwiLi93cHJvb2ZyZWFkZXItY29uZmlnLm1vZGVsXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgUU1TQ0tFZGl0b3JEYXRhIHtcclxuICBhcGlVcmw/OiBzdHJpbmc7XHJcbiAgbW9kdWxlPzogbnVtYmVyO1xyXG4gIGVudGl0eUlkPzogc3RyaW5nO1xyXG4gIGRvY3VtZW50SWQ/OiBudW1iZXI7XHJcbiAgbWF0aHR5cGVTZXJ2aWNlVXJsPzogc3RyaW5nO1xyXG4gIHRpbWVzdGFtcEZvcm1hdD86IHN0cmluZztcclxuICBsaW5rSmF2YVNjcmlwdExpbmtzQWxsb3dlZD86IGJvb2xlYW47XHJcbiAgdG9nZ2xlVG9vbGJhcj86IHN0cmluZztcclxuICB3cHJvb2ZyZWFkZXI/OiBXUHJvb2ZyZWFkZXJDb25maWc7XHJcbiAgdGFibGVPZkNvbnRlbnRIZWFkaW5ncz86IHN0cmluZztcclxuICBtYXhGaWxlU2l6ZU1CPzogbnVtYmVyO1xyXG4gIGZ1bGxTY3JlZW5DbGFzcz86IHN0cmluZztcclxufVxyXG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL3Ftcy1ja2VkaXRvci1jb21wb25lbnRzL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLWRhdGEubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGVBQWU7Q0FhM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXUHJvb2ZyZWFkZXJDb25maWcgfSBmcm9tIFwiLi93cHJvb2ZyZWFkZXItY29uZmlnLm1vZGVsXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgUU1TQ0tFZGl0b3JEYXRhIHtcclxuICBhcGlVcmw/OiBzdHJpbmc7XHJcbiAgbW9kdWxlPzogbnVtYmVyO1xyXG4gIGVudGl0eUlkPzogc3RyaW5nO1xyXG4gIGRvY3VtZW50SWQ/OiBudW1iZXI7XHJcbiAgbWF0aHR5cGVTZXJ2aWNlVXJsPzogc3RyaW5nO1xyXG4gIHRpbWVzdGFtcEZvcm1hdD86IHN0cmluZztcclxuICBsaW5rSmF2YVNjcmlwdExpbmtzQWxsb3dlZD86IGJvb2xlYW47XHJcbiAgdG9nZ2xlZFRvb2xiYXJJdGVtcz86IHN0cmluZztcclxuICB3cHJvb2ZyZWFkZXI/OiBXUHJvb2ZyZWFkZXJDb25maWc7XHJcbiAgdGFibGVPZkNvbnRlbnRIZWFkaW5ncz86IHN0cmluZztcclxuICBtYXhGaWxlU2l6ZU1CPzogbnVtYmVyO1xyXG4gIGZ1bGxTY3JlZW5DbGFzcz86IHN0cmluZztcclxufVxyXG4iXX0=
@@ -42,8 +42,10 @@ export class QMSCKEditorComponent extends QMSCKEditorBaseComponent {
42
42
  this.renderer = renderer;
43
43
  this.elRef = elRef;
44
44
  this.required = false;
45
+ this.editorId = 'qmsckeditor';
45
46
  this.qmsckContentOutput = new EventEmitter();
46
47
  this.ckEditorEventConst = CKEditorEventConst;
48
+ this.isToolbarItemsIdSet = false;
47
49
  this.ckTagname = 'div';
48
50
  }
49
51
  onMessage(event) {
@@ -83,6 +85,7 @@ export class QMSCKEditorComponent extends QMSCKEditorBaseComponent {
83
85
  }
84
86
  }
85
87
  ngOnInit() {
88
+ this.toolbarItemPrefixId = `${this.editorId}_toolbar_item_`;
86
89
  this.name = 'CKEditor custom build';
87
90
  this.ckEditor = this.qmsckPlugin.pluginObject;
88
91
  this.translate.getLanguageSubject$.pipe(takeUntil(this.ngUnsubcribe)).subscribe((res) => {
@@ -90,7 +93,11 @@ export class QMSCKEditorComponent extends QMSCKEditorBaseComponent {
90
93
  this.LANG = this.translate.getObjectLang(res);
91
94
  }
92
95
  });
93
- this.ckeditorConfig = CKEditorCommonFunctions.getCKEditorConfiguration(this.qmsckPlugin.itemToolbar);
96
+ let toolbarItems = this.qmsckPlugin.itemToolbar;
97
+ if (this.isEnabledToggleToolbar() && this.qmsckData.toggledToolbarItems) {
98
+ toolbarItems += ',' + this.qmsckData.toggledToolbarItems;
99
+ }
100
+ this.ckeditorConfig = CKEditorCommonFunctions.getCKEditorConfiguration(toolbarItems);
94
101
  this.globalService.setApiUrl(this.qmsckData.apiUrl);
95
102
  if (this.isEnabledMathtypeConfig()) {
96
103
  this.addMathTypeConfig();
@@ -98,9 +105,6 @@ export class QMSCKEditorComponent extends QMSCKEditorBaseComponent {
98
105
  if (this.isEnabledTimestampConfig()) {
99
106
  this.addTimestampConfig();
100
107
  }
101
- if (this.isEnabledToggleToolbar()) {
102
- this.addToggleToolbarConfig();
103
- }
104
108
  if (this.isEnabledWProofreader()) {
105
109
  this.addWProofreaderConfig();
106
110
  }
@@ -115,6 +119,7 @@ export class QMSCKEditorComponent extends QMSCKEditorBaseComponent {
115
119
  if (this.editorInstance) {
116
120
  this.editorInstance.destroy();
117
121
  }
122
+ $(document).off();
118
123
  }
119
124
  registerOnChange(fn) {
120
125
  this.onChange = fn;
@@ -146,12 +151,12 @@ export class QMSCKEditorComponent extends QMSCKEditorBaseComponent {
146
151
  }
147
152
  isEnabledToggleToolbar() {
148
153
  const pattern = /(toggleToolbar)/gmi;
149
- return !!this.qmsckData.toggleToolbar
154
+ return !!this.qmsckData.toggledToolbarItems
150
155
  && !!this.qmsckPlugin.itemToolbar
151
156
  && this.qmsckPlugin.itemToolbar.search(pattern) > -1;
152
157
  }
153
158
  addToggleToolbarConfig() {
154
- const items = this.qmsckData.toggleToolbar.split(',');
159
+ const items = this.qmsckData.toggledToolbarItems.split(',');
155
160
  const toggleToolbarConfig = {
156
161
  toggleToolbarConfig: {
157
162
  toolbar: items
@@ -266,6 +271,7 @@ export class QMSCKEditorComponent extends QMSCKEditorBaseComponent {
266
271
  wordsBox.textContent = `${this.LANG.QMSCKEDITOR.WORDS}: ${stats.words} / ${this.LANG.QMSCKEDITOR.CHARACTERS}: ${stats.characters}`;
267
272
  }
268
273
  });
274
+ this._setEditorInstanceObserver(this.editorId);
269
275
  }
270
276
  /**
271
277
  * Add template - Load template
@@ -453,62 +459,48 @@ export class QMSCKEditorComponent extends QMSCKEditorBaseComponent {
453
459
  }
454
460
  /*
455
461
  Toolbar toggle
462
+
463
+ This is a temporary workaround.
464
+ Tracking status and progress of the issue https://github.com/ckeditor/ckeditor5/issues/7383
465
+
466
+ - Render both default toolbar and toggle toolbar at init time
467
+ - Set ID for toolbar items using index:
468
+ + From index 0 to toolbarLength - 1 is the default toolbar
469
+ + From index toolbarLength on is the toggle toolbar
470
+ - Show/hide default and toggle toolbar by set display none to corresponding toolbar items based on ID
456
471
  */
457
472
  toggleToolbarEventHandling() {
458
- const qmsckeditor = window.document.getElementById('qmsckeditor');
473
+ const qmsckeditor = window.document.getElementById(this.editorId);
459
474
  const toggleAttribute = 'isToggleToolbar';
460
475
  const ckeditorTag = 'ckeditor';
461
476
  if (qmsckeditor) {
462
477
  const isToggleToolbar = qmsckeditor.getAttribute(toggleAttribute) == 'true';
463
478
  if (isToggleToolbar) {
464
- this.ckeditorConfig = CKEditorCommonFunctions.getCKEditorConfiguration(this.qmsckPlugin.itemToolbar);
479
+ this._setToolbarViewMode(true);
465
480
  qmsckeditor.setAttribute(toggleAttribute, 'false');
466
481
  }
467
482
  else {
468
- this.ckeditorConfig = CKEditorCommonFunctions.getCKEditorConfiguration(this.qmsckData.toggleToolbar);
483
+ this._setToolbarViewMode(false);
469
484
  qmsckeditor.setAttribute(toggleAttribute, 'true');
470
485
  }
471
- const onChanged = this.onChanged.bind(this);
472
- const onBlur = this.onBlur.bind(this);
473
- if (this.editorInstance) {
474
- try {
475
- this.editorInstance.destroy();
476
- }
477
- catch (err) {
478
- console.log(err);
479
- }
480
- }
481
- //This is a temporary workaround.
482
- //Tracking status and progress of the issue https://github.com/ckeditor/ckeditor5/issues/7383
483
- const root = window.document.querySelector(ckeditorTag);
484
- if (!!root) {
485
- let editorElement = null;
486
- if (root.childElementCount > 0) {
487
- editorElement = Array.from(root.children).find(i => i.nodeName.toLowerCase() == this.ckTagname.toLowerCase());
488
- }
489
- else {
490
- editorElement = window.document.createElement(this.ckTagname);
491
- editorElement.style = 'display: none;';
492
- root.appendChild(editorElement);
493
- }
494
- this.ckEditor.create(editorElement, this.ckeditorConfig).then(editor => {
495
- this.initEditor(editor);
496
- this.editorInstance = editor;
497
- //Delete cache content
498
- editorElement.innerHTML = '';
499
- //setup editor events
500
- const modelDocument = editor.model.document;
501
- const viewDocument = editor.editing.view.document;
502
- modelDocument.on('change:data', () => {
503
- onChanged({ editor });
504
- });
505
- viewDocument.on('blur', () => {
506
- onBlur({ editor });
507
- });
508
- });
509
- }
510
486
  }
511
487
  }
488
+ _setToolbarViewMode(showToggleToolbar) {
489
+ var _a, _b, _c, _d;
490
+ const toolbarLength = ((_a = this.qmsckPlugin.itemToolbar) === null || _a === void 0 ? void 0 : _a.split(',').length) || 0;
491
+ /*
492
+ Items in toolbar are indexed:
493
+ - From index 0 to toolbarLength - 1 is the default toolbar
494
+ - From index toolbarLength on is the toggle toolbar
495
+ */
496
+ (_b = $(`#${this.toolbarItemPrefixId}${toolbarLength - 1}`)) === null || _b === void 0 ? void 0 : _b.prevAll().each((index, element) => {
497
+ element.style.display = showToggleToolbar ? 'none' : '';
498
+ });
499
+ (_c = $(`#${this.toolbarItemPrefixId}${toolbarLength - 1}`)) === null || _c === void 0 ? void 0 : _c.css('display', showToggleToolbar ? 'none' : '');
500
+ (_d = $(`#${this.toolbarItemPrefixId}${toolbarLength - 1}`)) === null || _d === void 0 ? void 0 : _d.nextAll().each((index, element) => {
501
+ element.style.display = showToggleToolbar ? '' : 'none';
502
+ });
503
+ }
512
504
  /**
513
505
  * Flowchart
514
506
  */
@@ -608,11 +600,30 @@ export class QMSCKEditorComponent extends QMSCKEditorBaseComponent {
608
600
  });
609
601
  });
610
602
  }
603
+ _setEditorInstanceObserver(editorId) {
604
+ $(document).off('DOMNodeInserted').on('DOMNodeInserted', (e) => {
605
+ if (!this.isToolbarItemsIdSet && $(e.target).has('#' + editorId)) {
606
+ this._setIdForToolbarItems();
607
+ }
608
+ });
609
+ }
610
+ _setIdForToolbarItems() {
611
+ var _a;
612
+ const toolbarItems = ((_a = document.querySelector(`${this.editorId ? '#' + this.editorId : ''} .ck-toolbar__items`)) === null || _a === void 0 ? void 0 : _a.children) || [];
613
+ if (!toolbarItems.length) {
614
+ return;
615
+ }
616
+ this.isToolbarItemsIdSet = true;
617
+ Array.from(toolbarItems).forEach((item, index) => {
618
+ item.id = `${this.toolbarItemPrefixId}${index}`;
619
+ });
620
+ this.toggleToolbarEventHandling();
621
+ }
611
622
  }
612
623
  QMSCKEditorComponent.decorators = [
613
624
  { type: Component, args: [{
614
625
  selector: 'qms-ckeditor',
615
- template: "<div id=\"qmsckeditor\" class=\"qmsckeditor_container\">\r\n <ckeditor class=\"qms-ckeditor\" [tagName]=\"ckTagname\" [(editor)]=\"ckEditor\" [config]=\"ckeditorConfig\"\r\n (ready)=\"onReady($event)\" [(ngModel)]=\"qmsckContentInput\" (change)=\"onChanged($event)\" (blur)=\"onBlur($event)\"\r\n [disabled]=\"isDisabled\">\r\n </ckeditor>\r\n <div class=\"sub-container\">\r\n <div class=\"\">\r\n <span>{{LANG.QMSCKEDITOR.ASSISTIVE_TEXT}}</span>\r\n </div>\r\n <div class=\"wordcount-content\"></div>\r\n </div>\r\n</div>\r\n",
626
+ template: "<div class=\"qmsckeditor_container\" [id]=\"editorId\">\r\n <ckeditor class=\"qms-ckeditor\" [tagName]=\"ckTagname\" [(editor)]=\"ckEditor\" [config]=\"ckeditorConfig\"\r\n (ready)=\"onReady($event)\" [(ngModel)]=\"qmsckContentInput\" (change)=\"onChanged($event)\" (blur)=\"onBlur($event)\"\r\n [disabled]=\"isDisabled\">\r\n </ckeditor>\r\n <div class=\"sub-container\">\r\n <div class=\"\">\r\n <span>{{LANG.QMSCKEDITOR.ASSISTIVE_TEXT}}</span>\r\n </div>\r\n <div class=\"wordcount-content\"></div>\r\n </div>\r\n</div>",
616
627
  providers: [
617
628
  QMSCKEditorFullscreenComponent,
618
629
  {
@@ -646,7 +657,8 @@ QMSCKEditorComponent.propDecorators = {
646
657
  qmsckContentInput: [{ type: Input }],
647
658
  isDisabled: [{ type: Input, args: ['disabled',] }],
648
659
  required: [{ type: Input, args: ['required',] }],
660
+ editorId: [{ type: Input }],
649
661
  qmsckContentOutput: [{ type: Output }],
650
662
  onMessage: [{ type: HostListener, args: ['window:message', ['$event'],] }]
651
663
  };
652
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvcW1zLWNrZWRpdG9yLWNvbXBvbmVudHMvcW1zLWNrZWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0wsT0FBTyxFQUFlLGFBQWEsRUFBRSxpQkFBaUIsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxTQUFTLEVBQW1CLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBMEIsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLHVCQUF1QixNQUFNLG9DQUFvQyxDQUFDO0FBR3pFLE9BQU8sZUFBZSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBQ3hILE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQ2xILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDhFQUE4RSxDQUFD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QixFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDekcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDM0I7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7O1lBMXBCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGNBQWM7Z0JBQ3hCLG1qQkFBNEM7Z0JBRTVDLFNBQVMsRUFBRTtvQkFDVCw4QkFBOEI7b0JBQzlCO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7d0JBQ25ELEtBQUssRUFBRSxJQUFJO3FCQUNaO29CQUNEO3dCQUNFLE9BQU8sRUFBRSxhQUFhO3dCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO3dCQUNuRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUFqRFEsU0FBUztZQUVULHVCQUF1QjtZQWtCdkIsd0JBQXdCO1lBT3hCLHNCQUFzQjtZQWpCdEIsOEJBQThCO1lBWmdHLFNBQVM7WUFBcEYsVUFBVTs7O3dCQXFEbkUsS0FBSzswQkFDTCxLQUFLO2dDQUNMLEtBQUs7eUJBQ0wsS0FBSyxTQUFDLFVBQVU7dUJBQ2hCLEtBQUssU0FBQyxVQUFVO2lDQUNoQixNQUFNO3dCQVlOLFlBQVksU0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFJlbmRlcmVyMiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBRbXNVcGxvYWRBZGFwdGVyLCBRbXNVcGxvYWRBZGFwdGVyQ29uZmlnIH0gZnJvbSAnLi9jb21tb24vY2xhc3Nlcy9xbXNVcGxvYWRBZGFwdGVyJztcclxuaW1wb3J0IHsgQ0tFZGl0b3JFdmVudENvbnN0IH0gZnJvbSAnLi9jb21tb24vY29uc3RhbnRzL2NrZWRpdG9yRXZlbnQuY29uc3RhbnQnO1xyXG5pbXBvcnQgQ0tFZGl0b3JDb21tb25GdW5jdGlvbnMgZnJvbSAnLi9jb21tb24vZnVuY3Rpb25zL2NvbW1vbi5mdW5jdGlvbic7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yRGF0YSB9IGZyb20gJy4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItZGF0YS5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yUGx1Z2luIH0gZnJvbSAnLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1wbHVnaW4ubW9kZWwnO1xyXG5pbXBvcnQgUU1TQ0tFZGl0b3JMaW5rIGZyb20gJy4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItdXJsLm1vZGVsJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCcG1uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1icG1uL3Ftcy1ja2VkaXRvci1icG1uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yRnVsbHNjcmVlbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItZnVsbHNjcmVlbi9xbXMtY2tlZGl0b3ItZnVsbHNjcmVlbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckltYWdlTWFwQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1pbWFnZW1hcC9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JMaW5rQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1saW5rL3Ftcy1ja2VkaXRvci1saW5rLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yTG9hZFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1sb2FkLXRlbXBsYXRlL3Ftcy1ja2VkaXRvci1sb2FkLXRlbXBsYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcW1zLWNrZWRpdG9yLXRlbXBsYXRlL3Ftcy1ja2VkaXRvci10ZW1wbGF0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcW1zLWNrZWRpdG9yLXRvb2x0aXAvcW1zLWNrZWRpdG9yLXRvb2x0aXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JJbWFnZU1hcCB9IGZyb20gJy4vbW9kZWxzL3Ftcy1ja2VkaXRvci1pbWFnZW1hcC5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yVGVtcGxhdGUgfSBmcm9tICcuL21vZGVscy9xbXMtY2tlZGl0b3ItdGVtcGxhdGUubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclRvb2x0aXAgfSBmcm9tICcuL21vZGVscy9xbXMtY2tlZGl0b3ItdG9vbHRpcC5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcW1zLWNrZWRpdG9yLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JHbG9iYWxTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItZ2xvYmFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckFib3V0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1hYm91dC9xbXMtY2tlZGl0b3ItYWJvdXQuY29tcG9uZW50JztcclxuLy9pbXBvcnQgeyBDS0VkaXRvcjUgfSBmcm9tICdAY2tlZGl0b3IvY2tlZGl0b3I1LWFuZ3VsYXIvY2tlZGl0b3InO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckJwbW5EYXRhIH0gZnJvbSAnLi9tb2RlbHMvcW1zLWNrZWRpdG9yLWJwbW4tZGF0YS5tb2RlbCc7XHJcbmltcG9ydCB7IERhdGFUeXBlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9yZWxhdGVkL2NvbW1vbi9kYXRhLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IFBvcHVwRGF0YSB9IGZyb20gJy4uL2NvbXBvbmVudHMvcmVsYXRlZC9tb2RlbC9wb3B1cC1kYXRhLm1vZGVsJztcclxuaW1wb3J0IHsgUmVsYXRlZFBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9yZWxhdGVkL3BvcHVwL3JlbGF0ZWQtcG9wdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JUcmVlU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcW1zLWNrZWRpdG9yLXRyZWUuc2VydmljZSc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yRmxvd2NoYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1mbG93Y2hhcnQvcW1zLWNrZWRpdG9yLWZsb3djaGFydC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRbXNDa2VkaXRvckxpbmtTaW1wbGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcW1zLWNrZWRpdG9yLWxpbmstc2ltcGxlL3Ftcy1ja2VkaXRvci1saW5rLXNpbXBsZS5jb21wb25lbnQnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3Ftcy1ja2VkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Ftcy1ja2VkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcW1zLWNrZWRpdG9yLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBRTVNDS0VkaXRvckZ1bGxzY3JlZW5Db21wb25lbnQsXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBRTVNDS0VkaXRvckNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBRTVNDS0VkaXRvckNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbiAgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRTVNDS0VkaXRvckNvbXBvbmVudCBleHRlbmRzIFFNU0NLRWRpdG9yQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgVmFsaWRhdG9yIHtcclxuICBASW5wdXQoKSBxbXNja0RhdGE6IFFNU0NLRWRpdG9yRGF0YTtcclxuICBASW5wdXQoKSBxbXNja1BsdWdpbjogUU1TQ0tFZGl0b3JQbHVnaW47XHJcbiAgQElucHV0KCkgcW1zY2tDb250ZW50SW5wdXQ6IHN0cmluZztcclxuICBASW5wdXQoJ2Rpc2FibGVkJykgaXNEaXNhYmxlZDogYm9vbGVhbjtcclxuICBASW5wdXQoJ3JlcXVpcmVkJykgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgcW1zY2tDb250ZW50T3V0cHV0OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgTEFORzogYW55O1xyXG4gIGNrRWRpdG9yOiBhbnk7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGNrZWRpdG9yQ29uZmlnOiBhbnk7XHJcbiAgY2tFZGl0b3JFdmVudENvbnN0ID0gQ0tFZGl0b3JFdmVudENvbnN0O1xyXG4gIGNvdW50V29yZDogbnVtYmVyO1xyXG4gIGNvdW50Q2hhcjogbnVtYmVyO1xyXG4gIGVkaXRvckluc3RhbmNlOiBhbnk7XHJcbiAgY2tUYWduYW1lOiBzdHJpbmc7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptZXNzYWdlJywgWyckZXZlbnQnXSlcclxuICBvbk1lc3NhZ2UoZXZlbnQpIHtcclxuICAgIHN3aXRjaCAoZXZlbnQuZGF0YS5ldmVudE5hbWUpIHtcclxuICAgICAgY2FzZSB0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19URU1QTEFURV9QTFVHSU5fTVNHOlxyXG4gICAgICAgIHRoaXMudGVtcGxhdGVFdmVudEhhbmRsaW5nKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfTE9BRF9URU1QTEFURV9QTFVHSU5fTVNHOlxyXG4gICAgICAgIHRoaXMubG9hZFRlbXBsYXRlRXZlbnRIYW5kbGluZygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0xJTktfUExVR0lOX01TRzpcclxuICAgICAgICB0aGlzLmxpbmtFdmVudEhhbmRsaW5nKGV2ZW50LmRhdGEudmFsdWUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX1RPT0xUSVBfUExVR0lOX01TRzpcclxuICAgICAgICB0aGlzLnRvb2x0aXBFdmVudEhhbmRsaW5nKGV2ZW50LmRhdGEudmFsdWUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0lNQUdFTUFQX1BMVUdJTl9NU0c6XHJcbiAgICAgICAgdGhpcy5pbWFnZU1hcEV2ZW50SGFuZGxpbmcoZXZlbnQuZGF0YS52YWx1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfQlBNTl9QTFVHSU5fTVNHOlxyXG4gICAgICAgIHRoaXMuYnBtbkV2ZW50SGFuZGxpbmcoZXZlbnQuZGF0YS52YWx1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfQUJPVVRfQ0tFRElUT1JfUExVR0lOX01TRzpcclxuICAgICAgICB0aGlzLmFib3V0Q0tFZGl0b3JFdmVudEhhbmRsaW5nKGV2ZW50LmRhdGEudmFsdWUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0ZMT1dDSEFSVF9QTFVHSU5fTVNHOlxyXG4gICAgICAgIHRoaXMuZmxvd2NoYXJ0RXZlbnRIYW5kbGluZyhldmVudC5kYXRhLnZhbHVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19UT0dHTEVfVE9PTEJBUl9NU0c6XHJcbiAgICAgICAgdGhpcy50b2dnbGVUb29sYmFyRXZlbnRIYW5kbGluZygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0JST1dTRV9WSURFT19NU0c6XHJcbiAgICAgICAgdGhpcy5icm93c2VWaWRlb0V2ZW50SGFuZGxpbmcoZXZlbnQuZGF0YS52YWx1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb25zdHJ1Y3RvclxyXG4gICAqL1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdsb2JhbFNlcnZpY2U6IFFNU0NLRWRpdG9yR2xvYmFsU2VydmljZSxcclxuICAgIHByaXZhdGUgdHJlZVNlcnZpY2U6IFFNU0NLRWRpdG9yVHJlZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHFtc0NLRWRpdG9yRnVsbHNjcmVlbkNvbXBvbmVudDogUU1TQ0tFZGl0b3JGdWxsc2NyZWVuQ29tcG9uZW50LFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZlxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuY2tUYWduYW1lID0gJ2Rpdic7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubmFtZSA9ICdDS0VkaXRvciBjdXN0b20gYnVpbGQnO1xyXG4gICAgdGhpcy5ja0VkaXRvciA9IHRoaXMucW1zY2tQbHVnaW4ucGx1Z2luT2JqZWN0O1xyXG4gICAgdGhpcy50cmFuc2xhdGUuZ2V0TGFuZ3VhZ2VTdWJqZWN0JC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICB0aGlzLkxBTkcgPSB0aGlzLnRyYW5zbGF0ZS5nZXRPYmplY3RMYW5nKHJlcyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5ja2VkaXRvckNvbmZpZyA9IENLRWRpdG9yQ29tbW9uRnVuY3Rpb25zLmdldENLRWRpdG9yQ29uZmlndXJhdGlvbih0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyKTtcclxuICAgIHRoaXMuZ2xvYmFsU2VydmljZS5zZXRBcGlVcmwodGhpcy5xbXNja0RhdGEuYXBpVXJsKTtcclxuICAgIGlmICh0aGlzLmlzRW5hYmxlZE1hdGh0eXBlQ29uZmlnKCkpIHtcclxuICAgICAgdGhpcy5hZGRNYXRoVHlwZUNvbmZpZygpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzRW5hYmxlZFRpbWVzdGFtcENvbmZpZygpKSB7XHJcbiAgICAgIHRoaXMuYWRkVGltZXN0YW1wQ29uZmlnKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5pc0VuYWJsZWRUb2dnbGVUb29sYmFyKCkpIHtcclxuICAgICAgdGhpcy5hZGRUb2dnbGVUb29sYmFyQ29uZmlnKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNFbmFibGVkV1Byb29mcmVhZGVyKCkpIHtcclxuICAgICAgdGhpcy5hZGRXUHJvb2ZyZWFkZXJDb25maWcoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmlzRW5hYmxlZFRPQ1Rvb2xiYXIoKSkge1xyXG4gICAgICB0aGlzLmFkZFRvZ2dsZVRPQ0NvbmZpZygpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNFbmFibGVkRnVsbFNjcmVlbkNvbmZpZygpKSB7XHJcbiAgICAgIHRoaXMuYWRkRnVsbFNjcmVlbkNvbmZpZygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBpZiAodGhpcy5lZGl0b3JJbnN0YW5jZSkge1xyXG4gICAgICB0aGlzLmVkaXRvckluc3RhbmNlLmRlc3Ryb3koKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlOiAoY29udGVudDogYW55KSA9PiB2b2lkO1xyXG4gIG9uVG91Y2hlZDogKCkgPT4gdm9pZDtcclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCAnY2stZGlzYWJsZWQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzRW5hYmxlZFdQcm9vZnJlYWRlcigpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHBhdHRlcm4gPSAvKHdwcm9vZnJlYWRlcikvZ21pO1xyXG4gICAgcmV0dXJuICEhdGhpcy5xbXNja0RhdGEud3Byb29mcmVhZGVyXHJcbiAgICAgICYmICEhdGhpcy5xbXNja0RhdGEud3Byb29mcmVhZGVyLnNyY1VybFxyXG4gICAgICAmJiAhIXRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXJcclxuICAgICAgJiYgdGhpcy5xbXNja1BsdWdpbi5pdGVtVG9vbGJhci5zZWFyY2gocGF0dGVybikgPiAtMTtcclxuICB9XHJcblxyXG4gIGFkZFdQcm9vZnJlYWRlckNvbmZpZygpIHtcclxuICAgIGNvbnN0IHdwcm9vZnJlYWRlckNvbmZpZyA9IHtcclxuICAgICAgd3Byb29mcmVhZGVyOiB7XHJcbiAgICAgICAgLi4udGhpcy5xbXNja0RhdGEud3Byb29mcmVhZGVyXHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBpZiAoIXRoaXMucW1zY2tEYXRhLndwcm9vZnJlYWRlci5zZXJ2aWNlSWQgfHwgdGhpcy5xbXNja0RhdGEud3Byb29mcmVhZGVyLnNlcnZpY2VJZC5sZW5ndGggPT0gMCkge1xyXG4gICAgICAvL0ZhbGxiYWNrIHZhbHVlIG9mIHNlcnZpY2VJZCBwcm9wZXJ0eSB0byBkZW1vIHNlcnZpY2VJZFxyXG4gICAgICB0aGlzLnFtc2NrRGF0YS53cHJvb2ZyZWFkZXIuc2VydmljZUlkID0gJzE6S3BrdlEyLTZLTlVqLUwxVzN1Mi1DOWowSzEtWnYydFkxLUNmRE94LVdmR1JnMi1xWHRjaS1ZeXlFMzQtajA5SDQyLWIwYUN0My1kOWEnO1xyXG4gICAgfVxyXG4gICAgdGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnID0gT2JqZWN0LmFzc2lnbih0aGlzLmNrRWRpdG9yLmRlZmF1bHRDb25maWcgfHwge30sIHdwcm9vZnJlYWRlckNvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBpc0VuYWJsZWRUb2dnbGVUb29sYmFyKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcGF0dGVybiA9IC8odG9nZ2xlVG9vbGJhcikvZ21pO1xyXG4gICAgcmV0dXJuICEhdGhpcy5xbXNja0RhdGEudG9nZ2xlVG9vbGJhclxyXG4gICAgICAmJiAhIXRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXJcclxuICAgICAgJiYgdGhpcy5xbXNja1BsdWdpbi5pdGVtVG9vbGJhci5zZWFyY2gocGF0dGVybikgPiAtMTtcclxuICB9XHJcblxyXG4gIGFkZFRvZ2dsZVRvb2xiYXJDb25maWcoKSB7XHJcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMucW1zY2tEYXRhLnRvZ2dsZVRvb2xiYXIuc3BsaXQoJywnKTtcclxuICAgIGNvbnN0IHRvZ2dsZVRvb2xiYXJDb25maWcgPSB7XHJcbiAgICAgIHRvZ2dsZVRvb2xiYXJDb25maWc6IHtcclxuICAgICAgICB0b29sYmFyOiBpdGVtc1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnID0gT2JqZWN0LmFzc2lnbih0aGlzLmNrRWRpdG9yLmRlZmF1bHRDb25maWcgfHwge30sIHRvZ2dsZVRvb2xiYXJDb25maWcpO1xyXG4gIH1cclxuXHJcbiAgaXNFbmFibGVkRnVsbFNjcmVlbkNvbmZpZygpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHBhdHRlcm4gPSAvKHFtc0Z1bGxzY3JlZW4pL2dtaTtcclxuICAgIHJldHVybiAhIXRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXJcclxuICAgICAgJiYgISF0aGlzLnFtc2NrRGF0YS5mdWxsU2NyZWVuQ2xhc3NcclxuICAgICAgJiYgdGhpcy5xbXNja1BsdWdpbi5pdGVtVG9vbGJhci5zZWFyY2gocGF0dGVybikgPiAtMTtcclxuICB9XHJcblxyXG4gIGFkZEZ1bGxTY3JlZW5Db25maWcoKSB7XHJcbiAgICBjb25zdCBmdWxsU2NyZWVuQ29uZmlnID0ge1xyXG4gICAgICBmdWxsU2NyZWVuQ29uZmlnOiB7XHJcbiAgICAgICAgY2xhc3M6IHRoaXMucW1zY2tEYXRhLmZ1bGxTY3JlZW5DbGFzc1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNrRWRpdG9yLmRlZmF1bHRDb25maWcgPSBPYmplY3QuYXNzaWduKHRoaXMuY2tFZGl0b3IuZGVmYXVsdENvbmZpZyB8fCB7fSwgZnVsbFNjcmVlbkNvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBpc0VuYWJsZWRUT0NUb29sYmFyKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcGF0dGVybiA9IC8odGFibGVPZkNvbnRlbnRzKS9nbWk7XHJcbiAgICByZXR1cm4gISF0aGlzLnFtc2NrRGF0YS50YWJsZU9mQ29udGVudEhlYWRpbmdzXHJcbiAgICAgICYmICEhdGhpcy5xbXNja1BsdWdpbi5pdGVtVG9vbGJhclxyXG4gICAgICAmJiB0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyLnNlYXJjaChwYXR0ZXJuKSA+IC0xO1xyXG4gIH1cclxuXHJcbiAgYWRkVG9nZ2xlVE9DQ29uZmlnKCkge1xyXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLnFtc2NrRGF0YS50YWJsZU9mQ29udGVudEhlYWRpbmdzLnNwbGl0KCcsJyk7XHJcbiAgICBjb25zdCB0YWJsZU9mQ29udGVudHMgPSB7XHJcbiAgICAgIHRhYmxlT2ZDb250ZW50czoge1xyXG4gICAgICAgIHN1cHBvcnRlZEhlYWRpbmdzOiBpdGVtc1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnID0gT2JqZWN0LmFzc2lnbih0aGlzLmNrRWRpdG9yLmRlZmF1bHRDb25maWcgfHwge30sIHRhYmxlT2ZDb250ZW50cyk7XHJcbiAgfVxyXG5cclxuICBpc0VuYWJsZWRUaW1lc3RhbXBDb25maWcoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwYXR0ZXJuID0gLyh0aW1lc3RhbXApL2dtaTtcclxuICAgIHJldHVybiAhIXRoaXMucW1zY2tEYXRhLnRpbWVzdGFtcEZvcm1hdFxyXG4gICAgICAmJiAhIXRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXJcclxuICAgICAgJiYgdGhpcy5xbXNja1BsdWdpbi5pdGVtVG9vbGJhci5zZWFyY2gocGF0dGVybikgPiAtMTtcclxuICB9XHJcblxyXG4gIGFkZFRpbWVzdGFtcENvbmZpZygpIHtcclxuICAgIGNvbnN0IHRpbWVzdGFtcENvbmZpZyA9IHtcclxuICAgICAgdGltZXN0YW1wQ29uZmlnOiB7XHJcbiAgICAgICAgZGF0ZXRpbWVGb3JtYXQ6IHRoaXMucW1zY2tEYXRhLnRpbWVzdGFtcEZvcm1hdFxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnID0gT2JqZWN0LmFzc2lnbih0aGlzLmNrRWRpdG9yLmRlZmF1bHRDb25maWcgfHwge30sIHRpbWVzdGFtcENvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBpc0VuYWJsZWRNYXRodHlwZUNvbmZpZygpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHBhdHRlcm4gPSAvKE1hdGhUeXBlKXwoQ2hlbVR5cGUpL2dtaTtcclxuICAgIHJldHVybiAhIXRoaXMucW1zY2tEYXRhLm1hdGh0eXBlU2VydmljZVVybFxyXG4gICAgICAmJiAhIXRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXJcclxuICAgICAgJiYgdGhpcy5xbXNja1BsdWdpbi5pdGVtVG9vbGJhci5zZWFyY2gocGF0dGVybikgPiAtMTtcclxuICB9XHJcblxyXG4gIGFkZE1hdGhUeXBlQ29uZmlnKCkge1xyXG4gICAgY29uc3QgbWF0aFR5cGVDb25maWcgPSB7XHJcbiAgICAgIG1hdGhUeXBlUGFyYW1ldGVyczoge1xyXG4gICAgICAgIHNlcnZpY2VQcm92aWRlclByb3BlcnRpZXM6IHtcclxuICAgICAgICAgIFVSSTogdGhpcy5xbXNja0RhdGEubWF0aHR5cGVTZXJ2aWNlVXJsLFxyXG4gICAgICAgICAgc2VydmVyOiAnYXNweCdcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aGlzLmNrRWRpdG9yLmRlZmF1bHRDb25maWcgPSBPYmplY3QuYXNzaWduKHRoaXMuY2tFZGl0b3IuZGVmYXVsdENvbmZpZyB8fCB7fSwgbWF0aFR5cGVDb25maWcpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2hhbmdlZCh7IGVkaXRvciB9KSB7XHJcbiAgICAvL3RoaXMucW1zY2tDb250ZW50SW5wdXQgPSBlZGl0b3IuZ2V0RGF0YSgpO1xyXG4gICAgdGhpcy5xbXNja0NvbnRlbnRPdXRwdXQuZW1pdCh0aGlzLnFtc2NrQ29udGVudElucHV0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkJsdXIoeyBlZGl0b3IgfSkge1xyXG4gICAgdGhpcy5xbXNja0NvbnRlbnRJbnB1dCA9IGVkaXRvci5nZXREYXRhKCk7XHJcbiAgICB0aGlzLnFtc2NrQ29udGVudE91dHB1dC5lbWl0KHRoaXMucW1zY2tDb250ZW50SW5wdXQpO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGUoYzogRm9ybUNvbnRyb2wpIHtcclxuICAgIGlmICghdGhpcy5yZXF1aXJlZCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiAodGhpcy5xbXNja0NvbnRlbnRJbnB1dCAmJiAhdGhpcy5yZXF1aXJlZCkgPyBudWxsIDoge1xyXG4gICAgICB0eXBlOiB7XHJcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxyXG4gICAgICAgIGFjdHVhbDogYy52YWx1ZVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogb25SZWFkeVxyXG4gICAqL1xyXG4gIHB1YmxpYyBvblJlYWR5KGVkaXRvcikge1xyXG4gICAgdGhpcy5lZGl0b3JJbnN0YW5jZSA9IGVkaXRvcjtcclxuICAgIGlmICh0aGlzLnFtc2NrQ29udGVudElucHV0KSB7XHJcbiAgICAgIGVkaXRvci5zZXREYXRhKHRoaXMucW1zY2tDb250ZW50SW5wdXQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbml0RWRpdG9yKGVkaXRvcik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRFZGl0b3IoZWRpdG9yKSB7XHJcbiAgICBjb25zdCBpbWFnZVVwbG9hZFR5cGVzID0gZWRpdG9yLmNvbmZpZy5nZXQoJ2ltYWdlLnVwbG9hZC50eXBlcycpO1xyXG4gICAgY29uc3QgbWF4RmlsZVNpemVNQiA9IHRoaXMucW1zY2tEYXRhLm1heEZpbGVTaXplTUI7XHJcbiAgICBjb25zdCBjb25maWc6IFFtc1VwbG9hZEFkYXB0ZXJDb25maWcgPSB7IGFwaVVybDogdGhpcy5xbXNja0RhdGEuYXBpVXJsLCBMQU5HOiB0aGlzLkxBTkcsIGltYWdlVXBsb2FkVHlwZXMsIG1heEZpbGVTaXplTUIgfTtcclxuICAgIGVkaXRvci5wbHVnaW5zLmdldChcIkZpbGVSZXBvc2l0b3J5XCIpLmNyZWF0ZVVwbG9hZEFkYXB0ZXIgPSAobG9hZGVyKSA9PiB7XHJcbiAgICAgIHJldHVybiBuZXcgUW1zVXBsb2FkQWRhcHRlcihsb2FkZXIsIGNvbmZpZyk7XHJcbiAgICB9O1xyXG5cclxuICAgIGVkaXRvci51aVxyXG4gICAgICAuZ2V0RWRpdGFibGVFbGVtZW50KClcclxuICAgICAgLnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKGVkaXRvci51aS52aWV3LnRvb2xiYXIuZWxlbWVudCwgZWRpdG9yLnVpLmdldEVkaXRhYmxlRWxlbWVudCgpKTtcclxuXHJcbiAgICAvLyBBcHBlZCBXb3JkY291bnQgdG8gQ0tlZGl0b3JcclxuICAgIGVkaXRvci5wbHVnaW5zLmdldCgnV29yZENvdW50Jykub24oJ3VwZGF0ZScsIChldnQsIHN0YXRzKSA9PiB7XHJcbiAgICAgIC8vIFByaW50cyB0aGUgY3VycmVudCBjb250ZW50IHN0YXRpc3RpY3MuXHJcbiAgICAgIGNvbnN0IHdvcmRzQm94ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLndvcmRjb3VudC1jb250ZW50Jyk7XHJcbiAgICAgIGlmICghIXdvcmRzQm94KSB7XHJcbiAgICAgICAgd29yZHNCb3gudGV4dENvbnRlbnQgPSBgJHt0aGlzLkxBTkcuUU1TQ0tFRElUT1IuV09SRFN9OiAke3N0YXRzLndvcmRzfSAvICR7dGhpcy5MQU5HLlFNU0NLRURJVE9SLkNIQVJBQ1RFUlN9OiAke3N0YXRzLmNoYXJhY3RlcnN9YDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgdGVtcGxhdGUgLSBMb2FkIHRlbXBsYXRlXHJcbiAgICovXHJcbiAgcHVibGljIHRlbXBsYXRlRXZlbnRIYW5kbGluZygpIHtcclxuICAgIGNvbnN0IGRhdGE6IFFNU0NLRWRpdG9yVGVtcGxhdGUgPSBuZXcgUU1TQ0tFZGl0b3JUZW1wbGF0ZSgpO1xyXG4gICAgZGF0YS5pZCA9IDA7XHJcbiAgICBkYXRhLmNvbnRlbnQgPSB0aGlzLnFtc2NrQ29udGVudElucHV0O1xyXG4gICAgZGF0YS5lZGl0ID0gZmFsc2U7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JUZW1wbGF0ZUNvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnNTIwcHgnLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgLy8gVERPXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCB0ZW1wbGF0ZSAtIExvYWQgdGVtcGxhdGVcclxuICAgKi9cclxuICBwdWJsaWMgbG9hZFRlbXBsYXRlRXZlbnRIYW5kbGluZygpIHtcclxuICAgIGNvbnN0IGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihRTVNDS0VkaXRvckxvYWRUZW1wbGF0ZUNvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnNzAwcHgnLFxyXG4gICAgICBkYXRhOiB0aGlzLnFtc2NrQ29udGVudElucHV0LFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0xPQURfVEVNUExBVEVfUExVR0lOX1JFU1AsIHtcclxuICAgICAgICAgICAgZGV0YWlsOiByZXN1bHRcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoZXZ0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQW5jaG9yIC0gTGluayAtIEltYWdlIG1hcHBpbmdcclxuICAgKi9cclxuICBwdWJsaWMgbGlua0V2ZW50SGFuZGxpbmcobGluaykge1xyXG4gICAgbGV0IGRhdGEgPSBuZXcgUU1TQ0tFZGl0b3JMaW5rKCk7XHJcbiAgICBkYXRhID0gbGluaztcclxuICAgIGRhdGEuZWRpdG9yQ29udGVudCA9IHRoaXMucW1zY2tDb250ZW50SW5wdXQ7XHJcbiAgICBkYXRhLm1vZHVsZSA9IHRoaXMucW1zY2tEYXRhLm1vZHVsZTtcclxuICAgIGRhdGEuZW50aXR5SWQgPSB0aGlzLnFtc2NrRGF0YS5lbnRpdHlJZDtcclxuICAgIGxldCBkaWFsb2dUZW1wbGF0ZVxyXG4gICAgaWYoIXRoaXMucW1zY2tQbHVnaW4uc2ltcGxlTW9kZSkge1xyXG4gICAgICBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JMaW5rQ29tcG9uZW50LCB7XHJcbiAgICAgICAgd2lkdGg6ICc2NTBweCcsXHJcbiAgICAgICAgaGVpZ2h0OiAnNjYwcHgnLFxyXG4gICAgICAgIGRhdGEsXHJcbiAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHsgXHJcbiAgICAgIGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihRbXNDa2VkaXRvckxpbmtTaW1wbGVDb21wb25lbnQsIHtcclxuICAgICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgICBoZWlnaHQ6ICcyMDBweCcsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBkaWFsb2dUZW1wbGF0ZVxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICBjb25zdCBldnQgPSBuZXcgQ3VzdG9tRXZlbnQodGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfTElOS19QTFVHSU5fUkVTUCwge1xyXG4gICAgICAgICAgICBkZXRhaWw6IHJlc3VsdFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb29sdGlwIG1hcHBpbmdcclxuICAgKi9cclxuICBwdWJsaWMgdG9vbHRpcEV2ZW50SGFuZGxpbmcodmFsdWUpIHtcclxuICAgIGxldCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yVG9vbHRpcCgpO1xyXG4gICAgZGF0YS50ZXh0ID0gdmFsdWUudGV4dDtcclxuICAgIGRhdGEuY29udGVudCA9IHZhbHVlLmNvbnRlbnQ7XHJcbiAgICBkYXRhLmNrRWRpdG9yID0gdGhpcy5xbXNja1BsdWdpbi5wbHVnaW5PYmplY3Q7XHJcblxyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9yVG9vbHRpcENvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnNTU1cHgnLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX1RPT0xUSVBfUExVR0lOX1JFU1AsIHtcclxuICAgICAgICAgICAgZGV0YWlsOiByZXN1bHRcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoZXZ0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIEltYWdlTWFwIG1hcHBpbmdcclxuICovXHJcbiAgcHVibGljIGltYWdlTWFwRXZlbnRIYW5kbGluZyh2YWx1ZSkge1xyXG4gICAgbGV0IGRhdGEgPSBuZXcgUU1TQ0tFZGl0b3JJbWFnZU1hcCgpO1xyXG4gICAgZGF0YS5uYW1lID0gdmFsdWUubmFtZTtcclxuICAgIGRhdGEuYXJlYXMgPSB2YWx1ZS5hcmVhcztcclxuICAgIGRhdGEuaW1hZ2VVcmwgPSB2YWx1ZS5pbWFnZVVybDtcclxuICAgIGRhdGEuaW1hZ2VXaWR0aCA9IHZhbHVlLmltYWdlV2lkdGg7XHJcbiAgICBkYXRhLmltYWdlSGVpZ2h0ID0gdmFsdWUuaW1hZ2VIZWlnaHQ7XHJcbiAgICBkYXRhLm1vZHVsZSA9IHRoaXMucW1zY2tEYXRhLm1vZHVsZTtcclxuICAgIGRhdGEuZW50aXR5SWQgPSB0aGlzLnFtc2NrRGF0YS5lbnRpdHlJZDtcclxuICAgIGRhdGEuZWRpdG9yQ29udGVudCA9IHRoaXMucW1zY2tDb250ZW50SW5wdXQ7XHJcbiAgICBkYXRhLmxpbmtKYXZhU2NyaXB0TGlua3NBbGxvd2VkID0gdGhpcy5xbXNja0RhdGEubGlua0phdmFTY3JpcHRMaW5rc0FsbG93ZWQ7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JJbWFnZU1hcENvbXBvbmVudCwge1xyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0lNQUdFTUFQX1BMVUdJTl9SRVNQLCB7XHJcbiAgICAgICAgICAgIGRldGFpbDogcmVzdWx0XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICBCdXNpbmVzcyBQcm9jZXNzIE1vZGVsIGFuZCBOb3RhdGlvblxyXG4gICovXHJcbiAgcHVibGljIGJwbW5FdmVudEhhbmRsaW5nKGlkOiBzdHJpbmcpIHtcclxuICAgIGxldCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yQnBtbkRhdGEoKTtcclxuICAgIGRhdGEuaWQgPSBpZDtcclxuICAgIGRhdGEubW9kdWxlID0gdGhpcy5xbXNja0RhdGEubW9kdWxlO1xyXG4gICAgZGF0YS5lbnRpdHlJZCA9IHRoaXMucW1zY2tEYXRhLmVudGl0eUlkO1xyXG4gICAgZGF0YS5lZGl0b3JDb250ZW50ID0gdGhpcy5xbXNja0NvbnRlbnRJbnB1dDtcclxuICAgIGNvbnN0IGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihRTVNDS0VkaXRvckJwbW5Db21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc4OXZ3JyxcclxuICAgICAgbWF4V2lkdGg6ICcxMDB2dycsXHJcbiAgICAgIGhlaWdodDogJzcwMHB4JyxcclxuICAgICAgbWF4SGVpZ2h0OiAnMTAwdncnLFxyXG4gICAgICBkYXRhOiBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0JQTU5fUExVR0lOX1JFU1AsIHtcclxuICAgICAgICAgICAgZGV0YWlsOiByZXN1bHRcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoZXZ0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKlxyXG4gICBBYm91dCBDS0VkaXRvclxyXG4gKi9cclxuICBwdWJsaWMgYWJvdXRDS0VkaXRvckV2ZW50SGFuZGxpbmcodmVyc2lvbjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JBYm91dENvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzUwMHB4JyxcclxuICAgICAgZGF0YTogdmVyc2lvbixcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1RlbXBsYXRlXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG5cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAgVG9vbGJhciB0b2dnbGVcclxuICAqL1xyXG4gIHB1YmxpYyB0b2dnbGVUb29sYmFyRXZlbnRIYW5kbGluZygpIHtcclxuICAgIGNvbnN0IHFtc2NrZWRpdG9yID0gd2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxbXNja2VkaXRvcicpO1xyXG4gICAgY29uc3QgdG9nZ2xlQXR0cmlidXRlID0gJ2lzVG9nZ2xlVG9vbGJhcic7XHJcbiAgICBjb25zdCBja2VkaXRvclRhZyA9ICdja2VkaXRvcic7XHJcblxyXG4gICAgaWYgKHFtc2NrZWRpdG9yKSB7XHJcbiAgICAgIGNvbnN0IGlzVG9nZ2xlVG9vbGJhciA9IHFtc2NrZWRpdG9yLmdldEF0dHJpYnV0ZSh0b2dnbGVBdHRyaWJ1dGUpID09ICd0cnVlJztcclxuICAgICAgaWYgKGlzVG9nZ2xlVG9vbGJhcikge1xyXG4gICAgICAgIHRoaXMuY2tlZGl0b3JDb25maWcgPSBDS0VkaXRvckNvbW1vbkZ1bmN0aW9ucy5nZXRDS0VkaXRvckNvbmZpZ3VyYXRpb24odGhpcy5xbXNja1BsdWdpbi5pdGVtVG9vbGJhcik7XHJcbiAgICAgICAgcW1zY2tlZGl0b3Iuc2V0QXR0cmlidXRlKHRvZ2dsZUF0dHJpYnV0ZSwgJ2ZhbHNlJyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5ja2VkaXRvckNvbmZpZyA9IENLRWRpdG9yQ29tbW9uRnVuY3Rpb25zLmdldENLRWRpdG9yQ29uZmlndXJhdGlvbih0aGlzLnFtc2NrRGF0YS50b2dnbGVUb29sYmFyKTtcclxuICAgICAgICBxbXNja2VkaXRvci5zZXRBdHRyaWJ1dGUodG9nZ2xlQXR0cmlidXRlLCAndHJ1ZScpXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IG9uQ2hhbmdlZCA9IHRoaXMub25DaGFuZ2VkLmJpbmQodGhpcyk7XHJcbiAgICAgIGNvbnN0IG9uQmx1ciA9IHRoaXMub25CbHVyLmJpbmQodGhpcyk7XHJcblxyXG4gICAgICBpZiAodGhpcy5lZGl0b3JJbnN0YW5jZSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICB0aGlzLmVkaXRvckluc3RhbmNlLmRlc3Ryb3koKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vVGhpcyBpcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kLlxyXG4gICAgICAvL1RyYWNraW5nIHN0YXR1cyBhbmQgcHJvZ3Jlc3Mgb2YgdGhlIGlzc3VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ja2VkaXRvci9ja2VkaXRvcjUvaXNzdWVzLzczODNcclxuICAgICAgY29uc3Qgcm9vdCA9IHdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGNrZWRpdG9yVGFnKTtcclxuICAgICAgaWYgKCEhcm9vdCkge1xyXG4gICAgICAgIGxldCBlZGl0b3JFbGVtZW50ID0gbnVsbDtcclxuICAgICAgICBpZiAocm9vdC5jaGlsZEVsZW1lbnRDb3VudCA+IDApIHtcclxuICAgICAgICAgIGVkaXRvckVsZW1lbnQgPSBBcnJheS5mcm9tKHJvb3QuY2hpbGRyZW4pLmZpbmQoaSA9PiBpLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT0gdGhpcy5ja1RhZ25hbWUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGVkaXRvckVsZW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLmNrVGFnbmFtZSk7XHJcbiAgICAgICAgICBlZGl0b3JFbGVtZW50LnN0eWxlID0gJ2Rpc3BsYXk6IG5vbmU7JztcclxuICAgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoZWRpdG9yRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNrRWRpdG9yLmNyZWF0ZShlZGl0b3JFbGVtZW50LCB0aGlzLmNrZWRpdG9yQ29uZmlnKS50aGVuKGVkaXRvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLmluaXRFZGl0b3IoZWRpdG9yKTtcclxuICAgICAgICAgIHRoaXMuZWRpdG9ySW5zdGFuY2UgPSBlZGl0b3I7XHJcblxyXG4gICAgICAgICAgLy9EZWxldGUgY2FjaGUgY29udGVudFxyXG4gICAgICAgICAgZWRpdG9yRWxlbWVudC5pbm5lckhUTUwgPSAnJztcclxuXHJcbiAgICAgICAgICAvL3NldHVwIGVkaXRvciBldmVudHNcclxuICAgICAgICAgIGNvbnN0IG1vZGVsRG9jdW1lbnQgPSBlZGl0b3IubW9kZWwuZG9jdW1lbnQ7XHJcbiAgICAgICAgICBjb25zdCB2aWV3RG9jdW1lbnQgPSBlZGl0b3IuZWRpdGluZy52aWV3LmRvY3VtZW50O1xyXG4gICAgICAgICAgbW9kZWxEb2N1bWVudC5vbignY2hhbmdlOmRhdGEnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIG9uQ2hhbmdlZCh7IGVkaXRvciB9KTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIHZpZXdEb2N1bWVudC5vbignYmx1cicsICgpID0+IHtcclxuICAgICAgICAgICAgb25CbHVyKHsgZWRpdG9yIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBGbG93Y2hhcnRcclxuICovXHJcbiAgcHVibGljIGZsb3djaGFydEV2ZW50SGFuZGxpbmcoaWQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9yRmxvd2NoYXJ0Q29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnODl2dycsXHJcbiAgICAgIG1heFdpZHRoOiAnMTAwdncnLFxyXG4gICAgICBoZWlnaHQ6ICc3MjVweCcsXHJcbiAgICAgIG1heEhlaWdodDogJzEwMHZ3JyxcclxuICAgICAgZGF0YTogaWQsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dUZW1wbGF0ZVxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV2dCA9IG5ldyBDdXN0b21FdmVudCh0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19GTE9XQ0hBUlRfUExVR0lOX1JFU1AsIHtcclxuICAgICAgICAgICAgICBkZXRhaWw6IHJlc3VsdFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoZXZ0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQnJvd3NlIFZpZGVvXHJcbiAgICovXHJcbiAgcHVibGljIGJyb3dzZVZpZGVvRXZlbnRIYW5kbGluZyh2YWx1ZSkge1xyXG4gICAgdGhpcy50cmVlU2VydmljZVxyXG4gICAgICAuZ2V0VXBsb2FkVmlkZW9MaXN0KClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBjb25zdCB2aWRlb3MgPSByZXNwb25zZSB8fCBbXTtcclxuICAgICAgICBjb25zdCBjb25maWcgPSB7XHJcbiAgICAgICAgICBhbGxvd1NlbGVjdEZvbGRlcjogZmFsc2UsXHJcbiAgICAgICAgICBhcmVhT2ZDdXJyZW50UHJvY2VzczogJycsXHJcbiAgICAgICAgICBzaG93Q2hlY2tCb3g6IHRydWUsXHJcbiAgICAgICAgICBhbGxvd011bHRpcGxlQ2hlY2s6IHZhbHVlLmFsbG93TXVsdGlwbGVGaWxlcyxcclxuICAgICAgICAgIG9ubHlDaGVja0JveEZvckNoaWxkOiB0cnVlLFxyXG4gICAgICAgICAgbW9kdWxlSWQ6IERhdGFUeXBlLmRvY3VtZW50LFxyXG4gICAgICAgICAgb3Blbkljb246ICdmb2xkZXJfb3BlbicsXHJcbiAgICAgICAgICBvcGVuSWNvbkNvbG9yOiAnIzE5NTRBOScsXHJcbiAgICAgICAgICBjbG9zZUljb246ICdmb2xkZXJfZmlsbGVkJyxcclxuICAgICAgICAgIGNsb3NlSWNvbkNvbG9yOiAnIzRhY2FmZicsXHJcbiAgICAgICAgICBpdGVtSWNvbjogJ2luc2VydF9kcml2ZV9maWxlJyxcclxuICAgICAgICAgIGl0ZW1JY29uUGF0aDogJycsXHJcbiAgICAgICAgICBpdGVtSWNvbkJhc2U2NDogJycsXHJcbiAgICAgICAgICBzaW5nbGVTZWxlY3RlZE5vZGU6IHRydWUsXHJcbiAgICAgICAgICBleHBhbmRBbGw6IHRydWVcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IGRhdGE6IFBvcHVwRGF0YSA9IG5ldyBQb3B1cERhdGEoKTtcclxuICAgICAgICBkYXRhLm1vZHVsZUlkID0gMjtcclxuICAgICAgICBkYXRhLm1vZHVsZU5hbWUgPSB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuU0VMRUNUX1ZJREVPX0ZST01fQVJDSElWRTtcclxuICAgICAgICBkYXRhLnRyZWVEYXRhMSA9IHZpZGVvcy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHJvb3RJZDogaXRlbS5yb290SWQsXHJcbiAgICAgICAgICAgIHBhcmVudElkOiBpdGVtLnBhcmVudElkLFxyXG4gICAgICAgICAgICByb290TmFtZTogaXRlbS5yb290TmFtZSxcclxuICAgICAgICAgICAgc3ViTmFtZTogaXRlbS5zdWJOYW1lLFxyXG4gICAgICAgICAgICBjaGlsZElkOiBpdGVtLmNoaWxkSWQsXHJcbiAgICAgICAgICAgIGNoaWxkTmFtZTogaXRlbS5jaGlsZE5hbWUsXHJcbiAgICAgICAgICAgIHN0YXR1c0lkOiBpdGVtLnN0YXR1c0lkLFxyXG4gICAgICAgICAgICBkaXNwbGF5SWQ6IGl0ZW0uZGlzcGxheUlkLFxyXG4gICAgICAgICAgICBjb250ZW50VHlwZTogaXRlbS5jb250ZW50VHlwZSxcclxuICAgICAgICAgICAgdXJsOiBpdGVtLnVybFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBkYXRhLnRyZWVEYXRhMiA9IFtdO1xyXG4gICAgICAgIGRhdGEudHJlZUNvbmZpZzEgPSBjb25maWc7XHJcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihSZWxhdGVkUG9wdXBDb21wb25lbnQsIHtcclxuICAgICAgICAgIG1pbldpZHRoOiAnNDUwcHgnLFxyXG4gICAgICAgICAgbWF4V2lkdGg6ICc4MDBweCcsXHJcbiAgICAgICAgICBtaW5IZWlnaHQ6ICc2MjBweCcsXHJcbiAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgcGFuZWxDbGFzczogJ3Ftc2NrZWRpdG9yLWJyb3dzZS12aWRlby1wb3B1cCdcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBzZWFyY2hCb3ggPSB3aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnFtc2NrZWRpdG9yLWJyb3dzZS12aWRlby1wb3B1cCAjcW1zbGliX3JlbGF0ZWRfcG9wdXBfc2VhcmNoJykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgICBpZiAoc2VhcmNoQm94KSB7XHJcbiAgICAgICAgICAgIHNlYXJjaEJveC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIDEwMCk7XHJcblxyXG4gICAgICAgIGRpYWxvZ1JlZlxyXG4gICAgICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaWRzID0gcmVzdWx0LnJlZHVjZSgocmVzdWx0LCBpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHRbaXRlbS5pZC50b1N0cmluZygpXSA9IGl0ZW0uaWQ7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgIH0sIHt9KTtcclxuICAgICAgICAgICAgICBjb25zdCB1cmxzID0gdmlkZW9zLmZpbHRlcihpID0+IGkuY2hpbGRJZCAmJiAhIWlkc1tpLmNoaWxkSWQudG9TdHJpbmcoKV0pLm1hcChpID0+IGkudXJsKTtcclxuICAgICAgICAgICAgICBjb25zdCBldnQgPSBuZXcgQ3VzdG9tRXZlbnQodGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfQlJPV1NFX1ZJREVPX1JFU1AsIHsgZGV0YWlsOiB7IHVybHM6IHVybHMgfSB9KTtcclxuICAgICAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
664
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvcW1zLWNrZWRpdG9yLWNvbXBvbmVudHMvcW1zLWNrZWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBYSxTQUFTLEVBQTJCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9OLE9BQU8sRUFBZSxhQUFhLEVBQUUsaUJBQWlCLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsZ0JBQWdCLEVBQTBCLE1BQU0sbUNBQW1DLENBQUM7QUFDN0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDL0UsT0FBTyx1QkFBdUIsTUFBTSxvQ0FBb0MsQ0FBQztBQUd6RSxPQUFPLGVBQWUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUN4SCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUNsSCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw4RUFBOEUsQ0FB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QUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUFqRFEsU0FBUztZQUVULHVCQUF1QjtZQWtCdkIsd0JBQXdCO1lBT3hCLHNCQUFzQjtZQWpCdEIsOEJBQThCO1lBWjJHLFNBQVM7WUFBL0YsVUFBVTs7O3dCQXFEbkUsS0FBSzswQkFDTCxLQUFLO2dDQUNMLEtBQUs7eUJBQ0wsS0FBSyxTQUFDLFVBQVU7dUJBQ2hCLEtBQUssU0FBQyxVQUFVO3VCQUNoQixLQUFLO2lDQUNMLE1BQU07d0JBY04sWUFBWSxTQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBSZW5kZXJlcjIsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdHJhbnNsYXRpb24tcmVnaXN0cnkuc2VydmljZSc7XHJcbmltcG9ydCB7IFFtc1VwbG9hZEFkYXB0ZXIsIFFtc1VwbG9hZEFkYXB0ZXJDb25maWcgfSBmcm9tICcuL2NvbW1vbi9jbGFzc2VzL3Ftc1VwbG9hZEFkYXB0ZXInO1xyXG5pbXBvcnQgeyBDS0VkaXRvckV2ZW50Q29uc3QgfSBmcm9tICcuL2NvbW1vbi9jb25zdGFudHMvY2tlZGl0b3JFdmVudC5jb25zdGFudCc7XHJcbmltcG9ydCBDS0VkaXRvckNvbW1vbkZ1bmN0aW9ucyBmcm9tICcuL2NvbW1vbi9mdW5jdGlvbnMvY29tbW9uLmZ1bmN0aW9uJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JEYXRhIH0gZnJvbSAnLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1kYXRhLm1vZGVsJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JQbHVnaW4gfSBmcm9tICcuL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLXBsdWdpbi5tb2RlbCc7XHJcbmltcG9ydCBRTVNDS0VkaXRvckxpbmsgZnJvbSAnLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci11cmwubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckJwbW5Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcW1zLWNrZWRpdG9yLWJwbW4vcW1zLWNrZWRpdG9yLWJwbW4uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JGdWxsc2NyZWVuQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1mdWxsc2NyZWVuL3Ftcy1ja2VkaXRvci1mdWxsc2NyZWVuLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9ySW1hZ2VNYXBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcW1zLWNrZWRpdG9yLWltYWdlbWFwL3Ftcy1ja2VkaXRvci1pbWFnZW1hcC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckxpbmtDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcW1zLWNrZWRpdG9yLWxpbmsvcW1zLWNrZWRpdG9yLWxpbmsuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JMb2FkVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcW1zLWNrZWRpdG9yLWxvYWQtdGVtcGxhdGUvcW1zLWNrZWRpdG9yLWxvYWQtdGVtcGxhdGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItdGVtcGxhdGUvcW1zLWNrZWRpdG9yLXRlbXBsYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yVG9vbHRpcENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItdG9vbHRpcC9xbXMtY2tlZGl0b3ItdG9vbHRpcC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckltYWdlTWFwIH0gZnJvbSAnLi9tb2RlbHMvcW1zLWNrZWRpdG9yLWltYWdlbWFwLm1vZGVsJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JUZW1wbGF0ZSB9IGZyb20gJy4vbW9kZWxzL3Ftcy1ja2VkaXRvci10ZW1wbGF0ZS5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yVG9vbHRpcCB9IGZyb20gJy4vbW9kZWxzL3Ftcy1ja2VkaXRvci10b29sdGlwLm1vZGVsJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9xbXMtY2tlZGl0b3ItYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckdsb2JhbFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci1nbG9iYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQWJvdXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcW1zLWNrZWRpdG9yLWFib3V0L3Ftcy1ja2VkaXRvci1hYm91dC5jb21wb25lbnQnO1xyXG4vL2ltcG9ydCB7IENLRWRpdG9yNSB9IGZyb20gJ0Bja2VkaXRvci9ja2VkaXRvcjUtYW5ndWxhci9ja2VkaXRvcic7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQnBtbkRhdGEgfSBmcm9tICcuL21vZGVscy9xbXMtY2tlZGl0b3ItYnBtbi1kYXRhLm1vZGVsJztcclxuaW1wb3J0IHsgRGF0YVR5cGUgfSBmcm9tICcuLi9jb21wb25lbnRzL3JlbGF0ZWQvY29tbW9uL2RhdGEtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgUG9wdXBEYXRhIH0gZnJvbSAnLi4vY29tcG9uZW50cy9yZWxhdGVkL21vZGVsL3BvcHVwLWRhdGEubW9kZWwnO1xyXG5pbXBvcnQgeyBSZWxhdGVkUG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL3JlbGF0ZWQvcG9wdXAvcmVsYXRlZC1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclRyZWVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItdHJlZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JGbG93Y2hhcnRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcW1zLWNrZWRpdG9yLWZsb3djaGFydC9xbXMtY2tlZGl0b3ItZmxvd2NoYXJ0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFtc0NrZWRpdG9yTGlua1NpbXBsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItbGluay1zaW1wbGUvcW1zLWNrZWRpdG9yLWxpbmstc2ltcGxlLmNvbXBvbmVudCc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncW1zLWNrZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcW1zLWNrZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9xbXMtY2tlZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIFFNU0NLRWRpdG9yRnVsbHNjcmVlbkNvbXBvbmVudCxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFFNU0NLRWRpdG9yQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFFNU0NLRWRpdG9yQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFFNU0NLRWRpdG9yQ29tcG9uZW50IGV4dGVuZHMgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBWYWxpZGF0b3Ige1xyXG4gIEBJbnB1dCgpIHFtc2NrRGF0YTogUU1TQ0tFZGl0b3JEYXRhO1xyXG4gIEBJbnB1dCgpIHFtc2NrUGx1Z2luOiBRTVNDS0VkaXRvclBsdWdpbjtcclxuICBASW5wdXQoKSBxbXNja0NvbnRlbnRJbnB1dDogc3RyaW5nO1xyXG4gIEBJbnB1dCgnZGlzYWJsZWQnKSBpc0Rpc2FibGVkOiBib29sZWFuO1xyXG4gIEBJbnB1dCgncmVxdWlyZWQnKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGVkaXRvcklkID0gJ3Ftc2NrZWRpdG9yJztcclxuICBAT3V0cHV0KCkgcW1zY2tDb250ZW50T3V0cHV0OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgTEFORzogYW55O1xyXG4gIGNrRWRpdG9yOiBhbnk7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGNrZWRpdG9yQ29uZmlnOiBhbnk7XHJcbiAgY2tFZGl0b3JFdmVudENvbnN0ID0gQ0tFZGl0b3JFdmVudENvbnN0O1xyXG4gIGNvdW50V29yZDogbnVtYmVyO1xyXG4gIGNvdW50Q2hhcjogbnVtYmVyO1xyXG4gIGVkaXRvckluc3RhbmNlOiBhbnk7XHJcbiAgY2tUYWduYW1lOiBzdHJpbmc7XHJcbiAgdG9vbGJhckl0ZW1QcmVmaXhJZDogc3RyaW5nO1xyXG4gIGlzVG9vbGJhckl0ZW1zSWRTZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1lc3NhZ2UnLCBbJyRldmVudCddKVxyXG4gIG9uTWVzc2FnZShldmVudCkge1xyXG4gICAgc3dpdGNoIChldmVudC5kYXRhLmV2ZW50TmFtZSkge1xyXG4gICAgICBjYXNlIHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX1RFTVBMQVRFX1BMVUdJTl9NU0c6XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUV2ZW50SGFuZGxpbmcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19MT0FEX1RFTVBMQVRFX1BMVUdJTl9NU0c6XHJcbiAgICAgICAgdGhpcy5sb2FkVGVtcGxhdGVFdmVudEhhbmRsaW5nKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfTElOS19QTFVHSU5fTVNHOlxyXG4gICAgICAgIHRoaXMubGlua0V2ZW50SGFuZGxpbmcoZXZlbnQuZGF0YS52YWx1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfVE9PTFRJUF9QTFVHSU5fTVNHOlxyXG4gICAgICAgIHRoaXMudG9vbHRpcEV2ZW50SGFuZGxpbmcoZXZlbnQuZGF0YS52YWx1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfSU1BR0VNQVBfUExVR0lOX01TRzpcclxuICAgICAgICB0aGlzLmltYWdlTWFwRXZlbnRIYW5kbGluZyhldmVudC5kYXRhLnZhbHVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19CUE1OX1BMVUdJTl9NU0c6XHJcbiAgICAgICAgdGhpcy5icG1uRXZlbnRIYW5kbGluZyhldmVudC5kYXRhLnZhbHVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19BQk9VVF9DS0VESVRPUl9QTFVHSU5fTVNHOlxyXG4gICAgICAgIHRoaXMuYWJvdXRDS0VkaXRvckV2ZW50SGFuZGxpbmcoZXZlbnQuZGF0YS52YWx1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfRkxPV0NIQVJUX1BMVUdJTl9NU0c6XHJcbiAgICAgICAgdGhpcy5mbG93Y2hhcnRFdmVudEhhbmRsaW5nKGV2ZW50LmRhdGEudmFsdWUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX1RPR0dMRV9UT09MQkFSX01TRzpcclxuICAgICAgICB0aGlzLnRvZ2dsZVRvb2xiYXJFdmVudEhhbmRsaW5nKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfQlJPV1NFX1ZJREVPX01TRzpcclxuICAgICAgICB0aGlzLmJyb3dzZVZpZGVvRXZlbnRIYW5kbGluZyhldmVudC5kYXRhLnZhbHVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdG9yXHJcbiAgICovXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgZ2xvYmFsU2VydmljZTogUU1TQ0tFZGl0b3JHbG9iYWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmVlU2VydmljZTogUU1TQ0tFZGl0b3JUcmVlU2VydmljZSxcclxuICAgIHByaXZhdGUgcW1zQ0tFZGl0b3JGdWxsc2NyZWVuQ29tcG9uZW50OiBRTVNDS0VkaXRvckZ1bGxzY3JlZW5Db21wb25lbnQsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5ja1RhZ25hbWUgPSAnZGl2JztcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy50b29sYmFySXRlbVByZWZpeElkID0gYCR7dGhpcy5lZGl0b3JJZH1fdG9vbGJhcl9pdGVtX2A7XHJcbiAgICB0aGlzLm5hbWUgPSAnQ0tFZGl0b3IgY3VzdG9tIGJ1aWxkJztcclxuICAgIHRoaXMuY2tFZGl0b3IgPSB0aGlzLnFtc2NrUGx1Z2luLnBsdWdpbk9iamVjdDtcclxuICAgIHRoaXMudHJhbnNsYXRlLmdldExhbmd1YWdlU3ViamVjdCQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFuc2xhdGUuZ2V0T2JqZWN0TGFuZyhyZXMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGxldCB0b29sYmFySXRlbXMgPSB0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyO1xyXG4gICAgaWYgKHRoaXMuaXNFbmFibGVkVG9nZ2xlVG9vbGJhcigpICYmIHRoaXMucW1zY2tEYXRhLnRvZ2dsZWRUb29sYmFySXRlbXMpIHtcclxuICAgICAgdG9vbGJhckl0ZW1zICs9ICcsJyArIHRoaXMucW1zY2tEYXRhLnRvZ2dsZWRUb29sYmFySXRlbXM7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5ja2VkaXRvckNvbmZpZyA9IENLRWRpdG9yQ29tbW9uRnVuY3Rpb25zLmdldENLRWRpdG9yQ29uZmlndXJhdGlvbih0b29sYmFySXRlbXMpO1xyXG4gICAgdGhpcy5nbG9iYWxTZXJ2aWNlLnNldEFwaVVybCh0aGlzLnFtc2NrRGF0YS5hcGlVcmwpO1xyXG4gICAgaWYgKHRoaXMuaXNFbmFibGVkTWF0aHR5cGVDb25maWcoKSkge1xyXG4gICAgICB0aGlzLmFkZE1hdGhUeXBlQ29uZmlnKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNFbmFibGVkVGltZXN0YW1wQ29uZmlnKCkpIHtcclxuICAgICAgdGhpcy5hZGRUaW1lc3RhbXBDb25maWcoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc0VuYWJsZWRXUHJvb2ZyZWFkZXIoKSkge1xyXG4gICAgICB0aGlzLmFkZFdQcm9vZnJlYWRlckNvbmZpZygpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNFbmFibGVkVE9DVG9vbGJhcigpKSB7XHJcbiAgICAgIHRoaXMuYWRkVG9nZ2xlVE9DQ29uZmlnKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5pc0VuYWJsZWRGdWxsU2NyZWVuQ29uZmlnKCkpIHtcclxuICAgICAgdGhpcy5hZGRGdWxsU2NyZWVuQ29uZmlnKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLmVkaXRvckluc3RhbmNlKSB7XHJcbiAgICAgIHRoaXMuZWRpdG9ySW5zdGFuY2UuZGVzdHJveSgpO1xyXG4gICAgfVxyXG4gICAgJChkb2N1bWVudCkub2ZmKCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZTogKGNvbnRlbnQ6IGFueSkgPT4gdm9pZDtcclxuICBvblRvdWNoZWQ6ICgpID0+IHZvaWQ7XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgJ2NrLWRpc2FibGVkJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0VuYWJsZWRXUHJvb2ZyZWFkZXIoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwYXR0ZXJuID0gLyh3cHJvb2ZyZWFkZXIpL2dtaTtcclxuICAgIHJldHVybiAhIXRoaXMucW1zY2tEYXRhLndwcm9vZnJlYWRlclxyXG4gICAgICAmJiAhIXRoaXMucW1zY2tEYXRhLndwcm9vZnJlYWRlci5zcmNVcmxcclxuICAgICAgJiYgISF0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyXHJcbiAgICAgICYmIHRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXIuc2VhcmNoKHBhdHRlcm4pID4gLTE7XHJcbiAgfVxyXG5cclxuICBhZGRXUHJvb2ZyZWFkZXJDb25maWcoKSB7XHJcbiAgICBjb25zdCB3cHJvb2ZyZWFkZXJDb25maWcgPSB7XHJcbiAgICAgIHdwcm9vZnJlYWRlcjoge1xyXG4gICAgICAgIC4uLnRoaXMucW1zY2tEYXRhLndwcm9vZnJlYWRlclxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgaWYgKCF0aGlzLnFtc2NrRGF0YS53cHJvb2ZyZWFkZXIuc2VydmljZUlkIHx8IHRoaXMucW1zY2tEYXRhLndwcm9vZnJlYWRlci5zZXJ2aWNlSWQubGVuZ3RoID09IDApIHtcclxuICAgICAgLy9GYWxsYmFjayB2YWx1ZSBvZiBzZXJ2aWNlSWQgcHJvcGVydHkgdG8gZGVtbyBzZXJ2aWNlSWRcclxuICAgICAgdGhpcy5xbXNja0RhdGEud3Byb29mcmVhZGVyLnNlcnZpY2VJZCA9ICcxOktwa3ZRMi02S05Vai1MMVczdTItQzlqMEsxLVp2MnRZMS1DZkRPeC1XZkdSZzItcVh0Y2ktWXl5RTM0LWowOUg0Mi1iMGFDdDMtZDlhJztcclxuICAgIH1cclxuICAgIHRoaXMuY2tFZGl0b3IuZGVmYXVsdENvbmZpZyA9IE9iamVjdC5hc3NpZ24odGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnIHx8IHt9LCB3cHJvb2ZyZWFkZXJDb25maWcpO1xyXG4gIH1cclxuXHJcbiAgaXNFbmFibGVkVG9nZ2xlVG9vbGJhcigpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHBhdHRlcm4gPSAvKHRvZ2dsZVRvb2xiYXIpL2dtaTtcclxuICAgIHJldHVybiAhIXRoaXMucW1zY2tEYXRhLnRvZ2dsZWRUb29sYmFySXRlbXNcclxuICAgICAgJiYgISF0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyXHJcbiAgICAgICYmIHRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXIuc2VhcmNoKHBhdHRlcm4pID4gLTE7XHJcbiAgfVxyXG5cclxuICBhZGRUb2dnbGVUb29sYmFyQ29uZmlnKCkge1xyXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLnFtc2NrRGF0YS50b2dnbGVkVG9vbGJhckl0ZW1zLnNwbGl0KCcsJyk7XHJcbiAgICBjb25zdCB0b2dnbGVUb29sYmFyQ29uZmlnID0ge1xyXG4gICAgICB0b2dnbGVUb29sYmFyQ29uZmlnOiB7XHJcbiAgICAgICAgdG9vbGJhcjogaXRlbXNcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRoaXMuY2tFZGl0b3IuZGVmYXVsdENvbmZpZyA9IE9iamVjdC5hc3NpZ24odGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnIHx8IHt9LCB0b2dnbGVUb29sYmFyQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIGlzRW5hYmxlZEZ1bGxTY3JlZW5Db25maWcoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwYXR0ZXJuID0gLyhxbXNGdWxsc2NyZWVuKS9nbWk7XHJcbiAgICByZXR1cm4gISF0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyXHJcbiAgICAgICYmICEhdGhpcy5xbXNja0RhdGEuZnVsbFNjcmVlbkNsYXNzXHJcbiAgICAgICYmIHRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXIuc2VhcmNoKHBhdHRlcm4pID4gLTE7XHJcbiAgfVxyXG5cclxuICBhZGRGdWxsU2NyZWVuQ29uZmlnKCkge1xyXG4gICAgY29uc3QgZnVsbFNjcmVlbkNvbmZpZyA9IHtcclxuICAgICAgZnVsbFNjcmVlbkNvbmZpZzoge1xyXG4gICAgICAgIGNsYXNzOiB0aGlzLnFtc2NrRGF0YS5mdWxsU2NyZWVuQ2xhc3NcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnID0gT2JqZWN0LmFzc2lnbih0aGlzLmNrRWRpdG9yLmRlZmF1bHRDb25maWcgfHwge30sIGZ1bGxTY3JlZW5Db25maWcpO1xyXG4gIH1cclxuXHJcbiAgaXNFbmFibGVkVE9DVG9vbGJhcigpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHBhdHRlcm4gPSAvKHRhYmxlT2ZDb250ZW50cykvZ21pO1xyXG4gICAgcmV0dXJuICEhdGhpcy5xbXNja0RhdGEudGFibGVPZkNvbnRlbnRIZWFkaW5nc1xyXG4gICAgICAmJiAhIXRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXJcclxuICAgICAgJiYgdGhpcy5xbXNja1BsdWdpbi5pdGVtVG9vbGJhci5zZWFyY2gocGF0dGVybikgPiAtMTtcclxuICB9XHJcblxyXG4gIGFkZFRvZ2dsZVRPQ0NvbmZpZygpIHtcclxuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5xbXNja0RhdGEudGFibGVPZkNvbnRlbnRIZWFkaW5ncy5zcGxpdCgnLCcpO1xyXG4gICAgY29uc3QgdGFibGVPZkNvbnRlbnRzID0ge1xyXG4gICAgICB0YWJsZU9mQ29udGVudHM6IHtcclxuICAgICAgICBzdXBwb3J0ZWRIZWFkaW5nczogaXRlbXNcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRoaXMuY2tFZGl0b3IuZGVmYXVsdENvbmZpZyA9IE9iamVjdC5hc3NpZ24odGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnIHx8IHt9LCB0YWJsZU9mQ29udGVudHMpO1xyXG4gIH1cclxuXHJcbiAgaXNFbmFibGVkVGltZXN0YW1wQ29uZmlnKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcGF0dGVybiA9IC8odGltZXN0YW1wKS9nbWk7XHJcbiAgICByZXR1cm4gISF0aGlzLnFtc2NrRGF0YS50aW1lc3RhbXBGb3JtYXRcclxuICAgICAgJiYgISF0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyXHJcbiAgICAgICYmIHRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXIuc2VhcmNoKHBhdHRlcm4pID4gLTE7XHJcbiAgfVxyXG5cclxuICBhZGRUaW1lc3RhbXBDb25maWcoKSB7XHJcbiAgICBjb25zdCB0aW1lc3RhbXBDb25maWcgPSB7XHJcbiAgICAgIHRpbWVzdGFtcENvbmZpZzoge1xyXG4gICAgICAgIGRhdGV0aW1lRm9ybWF0OiB0aGlzLnFtc2NrRGF0YS50aW1lc3RhbXBGb3JtYXRcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRoaXMuY2tFZGl0b3IuZGVmYXVsdENvbmZpZyA9IE9iamVjdC5hc3NpZ24odGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnIHx8IHt9LCB0aW1lc3RhbXBDb25maWcpO1xyXG4gIH1cclxuXHJcbiAgaXNFbmFibGVkTWF0aHR5cGVDb25maWcoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwYXR0ZXJuID0gLyhNYXRoVHlwZSl8KENoZW1UeXBlKS9nbWk7XHJcbiAgICByZXR1cm4gISF0aGlzLnFtc2NrRGF0YS5tYXRodHlwZVNlcnZpY2VVcmxcclxuICAgICAgJiYgISF0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyXHJcbiAgICAgICYmIHRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXIuc2VhcmNoKHBhdHRlcm4pID4gLTE7XHJcbiAgfVxyXG5cclxuICBhZGRNYXRoVHlwZUNvbmZpZygpIHtcclxuICAgIGNvbnN0IG1hdGhUeXBlQ29uZmlnID0ge1xyXG4gICAgICBtYXRoVHlwZVBhcmFtZXRlcnM6IHtcclxuICAgICAgICBzZXJ2aWNlUHJvdmlkZXJQcm9wZXJ0aWVzOiB7XHJcbiAgICAgICAgICBVUkk6IHRoaXMucW1zY2tEYXRhLm1hdGh0eXBlU2VydmljZVVybCxcclxuICAgICAgICAgIHNlcnZlcjogJ2FzcHgnXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnID0gT2JqZWN0LmFzc2lnbih0aGlzLmNrRWRpdG9yLmRlZmF1bHRDb25maWcgfHwge30sIG1hdGhUeXBlQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNoYW5nZWQoeyBlZGl0b3IgfSkge1xyXG4gICAgLy90aGlzLnFtc2NrQ29udGVudElucHV0ID0gZWRpdG9yLmdldERhdGEoKTtcclxuICAgIHRoaXMucW1zY2tDb250ZW50T3V0cHV0LmVtaXQodGhpcy5xbXNja0NvbnRlbnRJbnB1dCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25CbHVyKHsgZWRpdG9yIH0pIHtcclxuICAgIHRoaXMucW1zY2tDb250ZW50SW5wdXQgPSBlZGl0b3IuZ2V0RGF0YSgpO1xyXG4gICAgdGhpcy5xbXNja0NvbnRlbnRPdXRwdXQuZW1pdCh0aGlzLnFtc2NrQ29udGVudElucHV0KTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlKGM6IEZvcm1Db250cm9sKSB7XHJcbiAgICBpZiAoIXRoaXMucmVxdWlyZWQpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKHRoaXMucW1zY2tDb250ZW50SW5wdXQgJiYgIXRoaXMucmVxdWlyZWQpID8gbnVsbCA6IHtcclxuICAgICAgdHlwZToge1xyXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcclxuICAgICAgICBhY3R1YWw6IGMudmFsdWVcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIG9uUmVhZHlcclxuICAgKi9cclxuICBwdWJsaWMgb25SZWFkeShlZGl0b3IpIHtcclxuICAgIHRoaXMuZWRpdG9ySW5zdGFuY2UgPSBlZGl0b3I7XHJcbiAgICBpZiAodGhpcy5xbXNja0NvbnRlbnRJbnB1dCkge1xyXG4gICAgICBlZGl0b3Iuc2V0RGF0YSh0aGlzLnFtc2NrQ29udGVudElucHV0KTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5pdEVkaXRvcihlZGl0b3IpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0RWRpdG9yKGVkaXRvcikge1xyXG4gICAgY29uc3QgaW1hZ2VVcGxvYWRUeXBlcyA9IGVkaXRvci5jb25maWcuZ2V0KCdpbWFnZS51cGxvYWQudHlwZXMnKTtcclxuICAgIGNvbnN0IG1heEZpbGVTaXplTUIgPSB0aGlzLnFtc2NrRGF0YS5tYXhGaWxlU2l6ZU1CO1xyXG4gICAgY29uc3QgY29uZmlnOiBRbXNVcGxvYWRBZGFwdGVyQ29uZmlnID0geyBhcGlVcmw6IHRoaXMucW1zY2tEYXRhLmFwaVVybCwgTEFORzogdGhpcy5MQU5HLCBpbWFnZVVwbG9hZFR5cGVzLCBtYXhGaWxlU2l6ZU1CIH07XHJcbiAgICBlZGl0b3IucGx1Z2lucy5nZXQoXCJGaWxlUmVwb3NpdG9yeVwiKS5jcmVhdGVVcGxvYWRBZGFwdGVyID0gKGxvYWRlcikgPT4ge1xyXG4gICAgICByZXR1cm4gbmV3IFFtc1VwbG9hZEFkYXB0ZXIobG9hZGVyLCBjb25maWcpO1xyXG4gICAgfTtcclxuXHJcbiAgICBlZGl0b3IudWlcclxuICAgICAgLmdldEVkaXRhYmxlRWxlbWVudCgpXHJcbiAgICAgIC5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShlZGl0b3IudWkudmlldy50b29sYmFyLmVsZW1lbnQsIGVkaXRvci51aS5nZXRFZGl0YWJsZUVsZW1lbnQoKSk7XHJcblxyXG4gICAgLy8gQXBwZWQgV29yZGNvdW50IHRvIENLZWRpdG9yXHJcbiAgICBlZGl0b3IucGx1Z2lucy5nZXQoJ1dvcmRDb3VudCcpLm9uKCd1cGRhdGUnLCAoZXZ0LCBzdGF0cykgPT4ge1xyXG4gICAgICAvLyBQcmludHMgdGhlIGN1cnJlbnQgY29udGVudCBzdGF0aXN0aWNzLlxyXG4gICAgICBjb25zdCB3b3Jkc0JveCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy53b3JkY291bnQtY29udGVudCcpO1xyXG4gICAgICBpZiAoISF3b3Jkc0JveCkge1xyXG4gICAgICAgIHdvcmRzQm94LnRleHRDb250ZW50ID0gYCR7dGhpcy5MQU5HLlFNU0NLRURJVE9SLldPUkRTfTogJHtzdGF0cy53b3Jkc30gLyAke3RoaXMuTEFORy5RTVNDS0VESVRPUi5DSEFSQUNURVJTfTogJHtzdGF0cy5jaGFyYWN0ZXJzfWA7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX3NldEVkaXRvckluc3RhbmNlT2JzZXJ2ZXIodGhpcy5lZGl0b3JJZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgdGVtcGxhdGUgLSBMb2FkIHRlbXBsYXRlXHJcbiAgICovXHJcbiAgcHVibGljIHRlbXBsYXRlRXZlbnRIYW5kbGluZygpIHtcclxuICAgIGNvbnN0IGRhdGE6IFFNU0NLRWRpdG9yVGVtcGxhdGUgPSBuZXcgUU1TQ0tFZGl0b3JUZW1wbGF0ZSgpO1xyXG4gICAgZGF0YS5pZCA9IDA7XHJcbiAgICBkYXRhLmNvbnRlbnQgPSB0aGlzLnFtc2NrQ29udGVudElucHV0O1xyXG4gICAgZGF0YS5lZGl0ID0gZmFsc2U7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JUZW1wbGF0ZUNvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnNTIwcHgnLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgLy8gVERPXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCB0ZW1wbGF0ZSAtIExvYWQgdGVtcGxhdGVcclxuICAgKi9cclxuICBwdWJsaWMgbG9hZFRlbXBsYXRlRXZlbnRIYW5kbGluZygpIHtcclxuICAgIGNvbnN0IGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihRTVNDS0VkaXRvckxvYWRUZW1wbGF0ZUNvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnNzAwcHgnLFxyXG4gICAgICBkYXRhOiB0aGlzLnFtc2NrQ29udGVudElucHV0LFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0xPQURfVEVNUExBVEVfUExVR0lOX1JFU1AsIHtcclxuICAgICAgICAgICAgZGV0YWlsOiByZXN1bHRcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoZXZ0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQW5jaG9yIC0gTGluayAtIEltYWdlIG1hcHBpbmdcclxuICAgKi9cclxuICBwdWJsaWMgbGlua0V2ZW50SGFuZGxpbmcobGluaykge1xyXG4gICAgbGV0IGRhdGEgPSBuZXcgUU1TQ0tFZGl0b3JMaW5rKCk7XHJcbiAgICBkYXRhID0gbGluaztcclxuICAgIGRhdGEuZWRpdG9yQ29udGVudCA9IHRoaXMucW1zY2tDb250ZW50SW5wdXQ7XHJcbiAgICBkYXRhLm1vZHVsZSA9IHRoaXMucW1zY2tEYXRhLm1vZHVsZTtcclxuICAgIGRhdGEuZW50aXR5SWQgPSB0aGlzLnFtc2NrRGF0YS5lbnRpdHlJZDtcclxuICAgIGxldCBkaWFsb2dUZW1wbGF0ZVxyXG4gICAgaWYgKCF0aGlzLnFtc2NrUGx1Z2luLnNpbXBsZU1vZGUpIHtcclxuICAgICAgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9yTGlua0NvbXBvbmVudCwge1xyXG4gICAgICAgIHdpZHRoOiAnNjUwcHgnLFxyXG4gICAgICAgIGhlaWdodDogJzY2MHB4JyxcclxuICAgICAgICBkYXRhLFxyXG4gICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihRbXNDa2VkaXRvckxpbmtTaW1wbGVDb21wb25lbnQsIHtcclxuICAgICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgICBoZWlnaHQ6ICcyMDBweCcsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBkaWFsb2dUZW1wbGF0ZVxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICBjb25zdCBldnQgPSBuZXcgQ3VzdG9tRXZlbnQodGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfTElOS19QTFVHSU5fUkVTUCwge1xyXG4gICAgICAgICAgICBkZXRhaWw6IHJlc3VsdFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb29sdGlwIG1hcHBpbmdcclxuICAgKi9cclxuICBwdWJsaWMgdG9vbHRpcEV2ZW50SGFuZGxpbmcodmFsdWUpIHtcclxuICAgIGxldCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yVG9vbHRpcCgpO1xyXG4gICAgZGF0YS50ZXh0ID0gdmFsdWUudGV4dDtcclxuICAgIGRhdGEuY29udGVudCA9IHZhbHVlLmNvbnRlbnQ7XHJcbiAgICBkYXRhLmNrRWRpdG9yID0gdGhpcy5xbXNja1BsdWdpbi5wbHVnaW5PYmplY3Q7XHJcblxyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9yVG9vbHRpcENvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnNTU1cHgnLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX1RPT0xUSVBfUExVR0lOX1JFU1AsIHtcclxuICAgICAgICAgICAgZGV0YWlsOiByZXN1bHRcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoZXZ0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIEltYWdlTWFwIG1hcHBpbmdcclxuICovXHJcbiAgcHVibGljIGltYWdlTWFwRXZlbnRIYW5kbGluZyh2YWx1ZSkge1xyXG4gICAgbGV0IGRhdGEgPSBuZXcgUU1TQ0tFZGl0b3JJbWFnZU1hcCgpO1xyXG4gICAgZGF0YS5uYW1lID0gdmFsdWUubmFtZTtcclxuICAgIGRhdGEuYXJlYXMgPSB2YWx1ZS5hcmVhcztcclxuICAgIGRhdGEuaW1hZ2VVcmwgPSB2YWx1ZS5pbWFnZVVybDtcclxuICAgIGRhdGEuaW1hZ2VXaWR0aCA9IHZhbHVlLmltYWdlV2lkdGg7XHJcbiAgICBkYXRhLmltYWdlSGVpZ2h0ID0gdmFsdWUuaW1hZ2VIZWlnaHQ7XHJcbiAgICBkYXRhLm1vZHVsZSA9IHRoaXMucW1zY2tEYXRhLm1vZHVsZTtcclxuICAgIGRhdGEuZW50aXR5SWQgPSB0aGlzLnFtc2NrRGF0YS5lbnRpdHlJZDtcclxuICAgIGRhdGEuZWRpdG9yQ29udGVudCA9IHRoaXMucW1zY2tDb250ZW50SW5wdXQ7XHJcbiAgICBkYXRhLmxpbmtKYXZhU2NyaXB0TGlua3NBbGxvd2VkID0gdGhpcy5xbXNja0RhdGEubGlua0phdmFTY3JpcHRMaW5rc0FsbG93ZWQ7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JJbWFnZU1hcENvbXBvbmVudCwge1xyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0lNQUdFTUFQX1BMVUdJTl9SRVNQLCB7XHJcbiAgICAgICAgICAgIGRldGFpbDogcmVzdWx0XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICBCdXNpbmVzcyBQcm9jZXNzIE1vZGVsIGFuZCBOb3RhdGlvblxyXG4gICovXHJcbiAgcHVibGljIGJwbW5FdmVudEhhbmRsaW5nKGlkOiBzdHJpbmcpIHtcclxuICAgIGxldCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yQnBtbkRhdGEoKTtcclxuICAgIGRhdGEuaWQgPSBpZDtcclxuICAgIGRhdGEubW9kdWxlID0gdGhpcy5xbXNja0RhdGEubW9kdWxlO1xyXG4gICAgZGF0YS5lbnRpdHlJZCA9IHRoaXMucW1zY2tEYXRhLmVudGl0eUlkO1xyXG4gICAgZGF0YS5lZGl0b3JDb250ZW50ID0gdGhpcy5xbXNja0NvbnRlbnRJbnB1dDtcclxuICAgIGNvbnN0IGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihRTVNDS0VkaXRvckJwbW5Db21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc4OXZ3JyxcclxuICAgICAgbWF4V2lkdGg6ICcxMDB2dycsXHJcbiAgICAgIGhlaWdodDogJzcwMHB4JyxcclxuICAgICAgbWF4SGVpZ2h0OiAnMTAwdncnLFxyXG4gICAgICBkYXRhOiBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0JQTU5fUExVR0lOX1JFU1AsIHtcclxuICAgICAgICAgICAgZGV0YWlsOiByZXN1bHRcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoZXZ0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKlxyXG4gICBBYm91dCBDS0VkaXRvclxyXG4gKi9cclxuICBwdWJsaWMgYWJvdXRDS0VkaXRvckV2ZW50SGFuZGxpbmcodmVyc2lvbjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JBYm91dENvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzUwMHB4JyxcclxuICAgICAgZGF0YTogdmVyc2lvbixcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1RlbXBsYXRlXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG5cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAgVG9vbGJhciB0b2dnbGVcclxuXHJcbiAgICBUaGlzIGlzIGEgdGVtcG9yYXJ5IHdvcmthcm91bmQuXHJcbiAgICBUcmFja2luZyBzdGF0dXMgYW5kIHByb2dyZXNzIG9mIHRoZSBpc3N1ZSBodHRwczovL2dpdGh1Yi5jb20vY2tlZGl0b3IvY2tlZGl0b3I1L2lzc3Vlcy83MzgzXHJcblxyXG4gICAgLSBSZW5kZXIgYm90aCBkZWZhdWx0IHRvb2xiYXIgYW5kIHRvZ2dsZSB0b29sYmFyIGF0IGluaXQgdGltZVxyXG4gICAgLSBTZXQgSUQgZm9yIHRvb2xiYXIgaXRlbXMgdXNpbmcgaW5kZXg6XHJcbiAgICAgICsgRnJvbSBpbmRleCAwIHRvIHRvb2xiYXJMZW5ndGggLSAxIGlzIHRoZSBkZWZhdWx0IHRvb2xiYXJcclxuICAgICAgKyBGcm9tIGluZGV4IHRvb2xiYXJMZW5ndGggb24gaXMgdGhlIHRvZ2dsZSB0b29sYmFyXHJcbiAgICAtIFNob3cvaGlkZSBkZWZhdWx0IGFuZCB0b2dnbGUgdG9vbGJhciBieSBzZXQgZGlzcGxheSBub25lIHRvIGNvcnJlc3BvbmRpbmcgdG9vbGJhciBpdGVtcyBiYXNlZCBvbiBJRFxyXG4gICovXHJcbiAgcHVibGljIHRvZ2dsZVRvb2xiYXJFdmVudEhhbmRsaW5nKCkge1xyXG4gICAgY29uc3QgcW1zY2tlZGl0b3IgPSB3aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5lZGl0b3JJZCk7XHJcbiAgICBjb25zdCB0b2dnbGVBdHRyaWJ1dGUgPSAnaXNUb2dnbGVUb29sYmFyJztcclxuICAgIGNvbnN0IGNrZWRpdG9yVGFnID0gJ2NrZWRpdG9yJztcclxuXHJcbiAgICBpZiAocW1zY2tlZGl0b3IpIHtcclxuICAgICAgY29uc3QgaXNUb2dnbGVUb29sYmFyID0gcW1zY2tlZGl0b3IuZ2V0QXR0cmlidXRlKHRvZ2dsZUF0dHJpYnV0ZSkgPT0gJ3RydWUnO1xyXG4gICAgICBpZiAoaXNUb2dnbGVUb29sYmFyKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0VG9vbGJhclZpZXdNb2RlKHRydWUpO1xyXG4gICAgICAgIHFtc2NrZWRpdG9yLnNldEF0dHJpYnV0ZSh0b2dnbGVBdHRyaWJ1dGUsICdmYWxzZScpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX3NldFRvb2xiYXJWaWV3TW9kZShmYWxzZSk7XHJcbiAgICAgICAgcW1zY2tlZGl0b3Iuc2V0QXR0cmlidXRlKHRvZ2dsZUF0dHJpYnV0ZSwgJ3RydWUnKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRUb29sYmFyVmlld01vZGUoc2hvd1RvZ2dsZVRvb2xiYXI6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IHRvb2xiYXJMZW5ndGggPSB0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyPy5zcGxpdCgnLCcpLmxlbmd0aCB8fCAwO1xyXG4gICAgLypcclxuICAgICAgSXRlbXMgaW4gdG9vbGJhciBhcmUgaW5kZXhlZDpcclxuICAgICAgLSBGcm9tIGluZGV4IDAgdG8gdG9vbGJhckxlbmd0aCAtIDEgaXMgdGhlIGRlZmF1bHQgdG9vbGJhclxyXG4gICAgICAtIEZyb20gaW5kZXggdG9vbGJhckxlbmd0aCBvbiBpcyB0aGUgdG9nZ2xlIHRvb2xiYXJcclxuICAgICovXHJcbiAgICAkKGAjJHt0aGlzLnRvb2xiYXJJdGVtUHJlZml4SWR9JHt0b29sYmFyTGVuZ3RoIC0gMX1gKT8ucHJldkFsbCgpLmVhY2goKGluZGV4LCBlbGVtZW50KSA9PiB7XHJcbiAgICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IHNob3dUb2dnbGVUb29sYmFyID8gJ25vbmUnIDogJyc7XHJcbiAgICB9KVxyXG5cclxuICAgICQoYCMke3RoaXMudG9vbGJhckl0ZW1QcmVmaXhJZH0ke3Rvb2xiYXJMZW5ndGggLSAxfWApPy5jc3MoJ2Rpc3BsYXknLCBzaG93VG9nZ2xlVG9vbGJhciA/ICdub25lJyA6ICcnKTtcclxuXHJcbiAgICAkKGAjJHt0aGlzLnRvb2xiYXJJdGVtUHJlZml4SWR9JHt0b29sYmFyTGVuZ3RoIC0gMX1gKT8ubmV4dEFsbCgpLmVhY2goKGluZGV4LCBlbGVtZW50KSA9PiB7XHJcbiAgICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IHNob3dUb2dnbGVUb29sYmFyID8gJycgOiAnbm9uZSc7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIEZsb3djaGFydFxyXG4gKi9cclxuICBwdWJsaWMgZmxvd2NoYXJ0RXZlbnRIYW5kbGluZyhpZDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JGbG93Y2hhcnRDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc4OXZ3JyxcclxuICAgICAgbWF4V2lkdGg6ICcxMDB2dycsXHJcbiAgICAgIGhlaWdodDogJzcyNXB4JyxcclxuICAgICAgbWF4SGVpZ2h0OiAnMTAwdncnLFxyXG4gICAgICBkYXRhOiBpZCxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1RlbXBsYXRlXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgY29uc3QgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0ZMT1dDSEFSVF9QTFVHSU5fUkVTUCwge1xyXG4gICAgICAgICAgICAgIGRldGFpbDogcmVzdWx0XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCcm93c2UgVmlkZW9cclxuICAgKi9cclxuICBwdWJsaWMgYnJvd3NlVmlkZW9FdmVudEhhbmRsaW5nKHZhbHVlKSB7XHJcbiAgICB0aGlzLnRyZWVTZXJ2aWNlXHJcbiAgICAgIC5nZXRVcGxvYWRWaWRlb0xpc3QoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZpZGVvcyA9IHJlc3BvbnNlIHx8IFtdO1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHtcclxuICAgICAgICAgIGFsbG93U2VsZWN0Rm9sZGVyOiBmYWxzZSxcclxuICAgICAgICAgIGFyZWFPZkN1cnJlbnRQcm9jZXNzOiAnJyxcclxuICAgICAgICAgIHNob3dDaGVja0JveDogdHJ1ZSxcclxuICAgICAgICAgIGFsbG93TXVsdGlwbGVDaGVjazogdmFsdWUuYWxsb3dNdWx0aXBsZUZpbGVzLFxyXG4gICAgICAgICAgb25seUNoZWNrQm94Rm9yQ2hpbGQ6IHRydWUsXHJcbiAgICAgICAgICBtb2R1bGVJZDogRGF0YVR5cGUuZG9jdW1lbnQsXHJcbiAgICAgICAgICBvcGVuSWNvbjogJ2ZvbGRlcl9vcGVuJyxcclxuICAgICAgICAgIG9wZW5JY29uQ29sb3I6ICcjMTk1NEE5JyxcclxuICAgICAgICAgIGNsb3NlSWNvbjogJ2ZvbGRlcl9maWxsZWQnLFxyXG4gICAgICAgICAgY2xvc2VJY29uQ29sb3I6ICcjNGFjYWZmJyxcclxuICAgICAgICAgIGl0ZW1JY29uOiAnaW5zZXJ0X2RyaXZlX2ZpbGUnLFxyXG4gICAgICAgICAgaXRlbUljb25QYXRoOiAnJyxcclxuICAgICAgICAgIGl0ZW1JY29uQmFzZTY0OiAnJyxcclxuICAgICAgICAgIHNpbmdsZVNlbGVjdGVkTm9kZTogdHJ1ZSxcclxuICAgICAgICAgIGV4cGFuZEFsbDogdHJ1ZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgZGF0YTogUG9wdXBEYXRhID0gbmV3IFBvcHVwRGF0YSgpO1xyXG4gICAgICAgIGRhdGEubW9kdWxlSWQgPSAyO1xyXG4gICAgICAgIGRhdGEubW9kdWxlTmFtZSA9IHRoaXMuTEFORy5RTVNDS0VESVRPUi5TRUxFQ1RfVklERU9fRlJPTV9BUkNISVZFO1xyXG4gICAgICAgIGRhdGEudHJlZURhdGExID0gdmlkZW9zLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcm9vdElkOiBpdGVtLnJvb3RJZCxcclxuICAgICAgICAgICAgcGFyZW50SWQ6IGl0ZW0ucGFyZW50SWQsXHJcbiAgICAgICAgICAgIHJvb3ROYW1lOiBpdGVtLnJvb3ROYW1lLFxyXG4gICAgICAgICAgICBzdWJOYW1lOiBpdGVtLnN1Yk5hbWUsXHJcbiAgICAgICAgICAgIGNoaWxkSWQ6IGl0ZW0uY2hpbGRJZCxcclxuICAgICAgICAgICAgY2hpbGROYW1lOiBpdGVtLmNoaWxkTmFtZSxcclxuICAgICAgICAgICAgc3RhdHVzSWQ6IGl0ZW0uc3RhdHVzSWQsXHJcbiAgICAgICAgICAgIGRpc3BsYXlJZDogaXRlbS5kaXNwbGF5SWQsXHJcbiAgICAgICAgICAgIGNvbnRlbnRUeXBlOiBpdGVtLmNvbnRlbnRUeXBlLFxyXG4gICAgICAgICAgICB1cmw6IGl0ZW0udXJsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGRhdGEudHJlZURhdGEyID0gW107XHJcbiAgICAgICAgZGF0YS50cmVlQ29uZmlnMSA9IGNvbmZpZztcclxuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFJlbGF0ZWRQb3B1cENvbXBvbmVudCwge1xyXG4gICAgICAgICAgbWluV2lkdGg6ICc0NTBweCcsXHJcbiAgICAgICAgICBtYXhXaWR0aDogJzgwMHB4JyxcclxuICAgICAgICAgIG1pbkhlaWdodDogJzYyMHB4JyxcclxuICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICBwYW5lbENsYXNzOiAncW1zY2tlZGl0b3ItYnJvd3NlLXZpZGVvLXBvcHVwJ1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHNlYXJjaEJveCA9IHdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucW1zY2tlZGl0b3ItYnJvd3NlLXZpZGVvLXBvcHVwICNxbXNsaWJfcmVsYXRlZF9wb3B1cF9zZWFyY2gnKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgIGlmIChzZWFyY2hCb3gpIHtcclxuICAgICAgICAgICAgc2VhcmNoQm94LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMTAwKTtcclxuXHJcbiAgICAgICAgZGlhbG9nUmVmXHJcbiAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICBjb25zdCBpZHMgPSByZXN1bHQucmVkdWNlKChyZXN1bHQsIGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdFtpdGVtLmlkLnRvU3RyaW5nKCldID0gaXRlbS5pZDtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgfSwge30pO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHVybHMgPSB2aWRlb3MuZmlsdGVyKGkgPT4gaS5jaGlsZElkICYmICEhaWRzW2kuY2hpbGRJZC50b1N0cmluZygpXSkubWFwKGkgPT4gaS51cmwpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGV2dCA9IG5ldyBDdXN0b21FdmVudCh0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19CUk9XU0VfVklERU9fUkVTUCwgeyBkZXRhaWw6IHsgdXJsczogdXJscyB9IH0pO1xyXG4gICAgICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldEVkaXRvckluc3RhbmNlT2JzZXJ2ZXIoZWRpdG9ySWQ6IHN0cmluZykge1xyXG4gICAgJChkb2N1bWVudCkub2ZmKCdET01Ob2RlSW5zZXJ0ZWQnKS5vbignRE9NTm9kZUluc2VydGVkJywgKGUpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmlzVG9vbGJhckl0ZW1zSWRTZXQgJiYgJChlLnRhcmdldCkuaGFzKCcjJyArIGVkaXRvcklkKSkge1xyXG4gICAgICAgIHRoaXMuX3NldElkRm9yVG9vbGJhckl0ZW1zKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0SWRGb3JUb29sYmFySXRlbXMoKSB7XHJcbiAgICBjb25zdCB0b29sYmFySXRlbXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAke3RoaXMuZWRpdG9ySWQgPyAnIycgKyB0aGlzLmVkaXRvcklkIDogJyd9IC5jay10b29sYmFyX19pdGVtc2ApPy5jaGlsZHJlbiB8fCBbXTtcclxuICAgIGlmICghdG9vbGJhckl0ZW1zLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzVG9vbGJhckl0ZW1zSWRTZXQgPSB0cnVlO1xyXG4gICAgKEFycmF5LmZyb20odG9vbGJhckl0ZW1zKSBhcyBIVE1MRWxlbWVudFtdKS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICBpdGVtLmlkID0gYCR7dGhpcy50b29sYmFySXRlbVByZWZpeElkfSR7aW5kZXh9YDtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMudG9nZ2xlVG9vbGJhckV2ZW50SGFuZGxpbmcoKTtcclxuICB9XHJcbn1cclxuIl19