@mediusinc/mng-commons 2.4.2 → 2.5.0

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 (65) hide show
  1. package/assets/i18n/en.json +14 -0
  2. package/assets/i18n/sl.json +14 -0
  3. package/esm2020/index.mjs +2 -1
  4. package/esm2020/lib/api/utils/medius-rest.util.mjs +8 -1
  5. package/esm2020/lib/components/action/editor/action-editor.component.mjs +1 -1
  6. package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +3 -2
  7. package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +3 -2
  8. package/esm2020/lib/components/form/editor/form-editor.component.mjs +4 -11
  9. package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +4 -3
  10. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +7 -6
  11. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +22 -8
  12. package/esm2020/lib/components/pages/error/error-page.component.mjs +21 -0
  13. package/esm2020/lib/components/pages/index.mjs +3 -0
  14. package/esm2020/lib/components/pages/not-found/not-found-page.component.mjs +21 -0
  15. package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +18 -10
  16. package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +8 -3
  17. package/esm2020/lib/components/tableview/table/table.component.mjs +14 -3
  18. package/esm2020/lib/components/tableview/tableview.component.mjs +36 -4
  19. package/esm2020/lib/descriptors/action/action-button.descriptor.mjs +2 -2
  20. package/esm2020/lib/descriptors/action/action.descriptor.mjs +55 -6
  21. package/esm2020/lib/descriptors/editor/editor.descriptor.mjs +3 -2
  22. package/esm2020/lib/descriptors/editor/field.descriptor.mjs +13 -1
  23. package/esm2020/lib/descriptors/filter/filter.descriptor.mjs +5 -4
  24. package/esm2020/lib/descriptors/table/column.descriptor.mjs +27 -3
  25. package/esm2020/lib/descriptors/tableview/tableview.descriptor.mjs +3 -2
  26. package/esm2020/lib/mng-commons.module.mjs +18 -5
  27. package/esm2020/lib/models/error-internal.model.mjs +27 -0
  28. package/esm2020/lib/models/index.mjs +2 -1
  29. package/esm2020/lib/router/route-builder.mjs +4 -3
  30. package/esm2020/lib/router/routes-builder.mjs +3 -2
  31. package/esm2020/lib/services/action-executor.service.mjs +4 -3
  32. package/esm2020/lib/services/configuration.service.mjs +9 -4
  33. package/esm2020/lib/styles/button-style.builder.mjs +10 -1
  34. package/esm2020/lib/utils/action-data-provider.util.mjs +7 -6
  35. package/esm2020/lib/utils/file.util.mjs +18 -0
  36. package/esm2020/lib/utils/index.mjs +2 -1
  37. package/esm2020/lib/utils/route.util.mjs +3 -2
  38. package/esm2020/lib/utils/tableview.util.mjs +3 -2
  39. package/esm2020/lib/utils/type.util.mjs +3 -2
  40. package/fesm2015/mediusinc-mng-commons.mjs +322 -75
  41. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  42. package/fesm2020/mediusinc-mng-commons.mjs +313 -72
  43. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  44. package/index.d.ts +1 -0
  45. package/lib/api/utils/medius-rest.util.d.ts +2 -0
  46. package/lib/components/form/editor/form-editor.component.d.ts +1 -3
  47. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +4 -0
  48. package/lib/components/pages/error/error-page.component.d.ts +8 -0
  49. package/lib/components/pages/index.d.ts +2 -0
  50. package/lib/components/pages/not-found/not-found-page.component.d.ts +8 -0
  51. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +1 -1
  52. package/lib/components/tableview/table/table.component.d.ts +3 -1
  53. package/lib/components/tableview/tableview.component.d.ts +4 -1
  54. package/lib/descriptors/action/action.descriptor.d.ts +2 -0
  55. package/lib/descriptors/editor/field.descriptor.d.ts +5 -0
  56. package/lib/descriptors/table/column.descriptor.d.ts +9 -1
  57. package/lib/mng-commons.module.d.ts +3 -1
  58. package/lib/models/error-internal.model.d.ts +29 -0
  59. package/lib/models/index.d.ts +1 -0
  60. package/lib/styles/button-style.builder.d.ts +1 -0
  61. package/lib/utils/file.util.d.ts +3 -0
  62. package/lib/utils/index.d.ts +1 -0
  63. package/package.json +1 -2
  64. package/scss/mng-overrides/_layout_styles.scss +4 -0
  65. package/scss/mng-overrides/_theme_dialog.scss +35 -0
@@ -1,4 +1,5 @@
1
1
  import { ObjectSerializer } from '../../api/utils';
2
+ import { MngErrorInternal } from '../../models';
2
3
  import { ModelUtil } from '../../utils';
3
4
  import { TableviewUtil } from '../../utils/tableview.util';
4
5
  import { EditorDescriptor } from '../editor';
@@ -232,7 +233,7 @@ export class TableviewDescriptor {
232
233
  */
233
234
  withModifiedType(property, columnType, fieldType, columnDisplayType) {
234
235
  if (columnType === ColumnTypeEnum.Enum) {
235
- throw new Error('Do not use with types where args are required');
236
+ throw new MngErrorInternal('Do not use with types where args are required', 'TableViewDescriptor error').consoleError();
236
237
  }
237
238
  const attributeDef = TableviewUtil.getAttributeDefMap(this._modelType).find(atribute => atribute.name === property);
238
239
  if (attributeDef != null) {
@@ -343,4 +344,4 @@ export class TableviewDynamicDescriptor extends TableviewDescriptor {
343
344
  return descriptor;
344
345
  }
345
346
  }
346
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rlc2NyaXB0b3JzL3RhYmxldmlldy90YWJsZXZpZXcuZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUtqRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBRUgsZ0JBQWdCLEVBTW5CLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQW1CLGVBQWUsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNuRixPQUFPLEVBQXdCLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUU1RyxNQUFNLE9BQU8sbUJBQW1CO0lBZTVCLFlBQVksU0FBdUIsRUFBRSxVQUFtQixFQUFFLGFBQXNCLEVBQUUsV0FBeUM7UUFKakgsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFLM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBSSxTQUFTLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN4RixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFJLFNBQVMsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3hGLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBSSxTQUFTLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSx1QkFBdUIsQ0FBQyxPQUFP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SSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7OztPQUdHO0lBQ2EsbUJBQW1CLENBQUMsVUFBa0M7UUFDbEUsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDYSxZQUFZLENBQUMsUUFBZ0I7UUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOztPQUVHO0lBQ2EsSUFBSTtRQUNoQixNQUFNLFVBQVUsR0FBRyxJQUFJLDBCQUEwQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzRyxVQUFVLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkMsVUFBVSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzFDLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7RmllbGRWYWxpZGF0b3JGbn0gZnJvbSAnQG5neC1mb3JtbHkvY29yZS9saWIvbW9kZWxzL2NvbmZpZyc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge01lZGl1c1F1ZXJ5UGFyYW19IGZyb20gJy4uLy4uL2FwaS9tb2RlbHMnO1xuaW1wb3J0IHtPYmplY3RTZXJpYWxpemVyfSBmcm9tICcuLi8uLi9hcGkvdXRpbHMnO1xuaW1wb3J0IHtJTG9va3VwRGF0YVByb3ZpZGVyfSBmcm9tICcuLi8uLi9kYXRhLXByb3ZpZGVycyc7XG5pbXBvcnQge0lDb2x1bW5WYWx1ZUNvbXBvbmVudH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7VGFibGV2aWV3QXR0cmlidXRlRGVmfSBmcm9tICcuLi8uLi9tb2RlbHMvdGFibGV2aWV3LWF0dHIubW9kZWwnO1xuaW1wb3J0IHtDbGFzc1R5cGUsIEVudW1Db25zdGFudFR5cGUsIEVudW1UeXBlfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQge01vZGVsVXRpbH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtUYWJsZXZpZXdVdGlsfSBmcm9tICcuLi8uLi91dGlscy90YWJsZXZpZXcudXRpbCc7XG5pbXBvcnQge1xuICAgIEFGaWVsZERlc2NyaXB0b3IsXG4gICAgRWRpdG9yRGVzY3JpcHRvcixcbiAgICBGaWVsZElucHV0RGVzY3JpcHRvcixcbiAgICBGaWVsZExvb2t1cERlc2NyaXB0b3IsXG4gICAgRmllbGRMb29rdXBFbnVtRGVzY3JpcHRvcixcbiAgICBGaWVsZE1hbnlFZGl0b3JEZXNjcmlwdG9yLFxuICAgIEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3Jcbn0gZnJvbSAnLi4vZWRpdG9yJztcbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yfSBmcm9tICcuLi9tb2RlbC5kZXNjcmlwdG9yJztcbmltcG9ydCB7Q29sdW1uRGVzY3JpcHRvciwgVGFibGVEZXNjcmlwdG9yLCBUYWJsZUR5bmFtaWNEZXNjcmlwdG9yfSBmcm9tICcuLi90YWJsZSc7XG5pbXBvcnQge0NvbHVtbkRpc3BsYXlUeXBlRW51bSwgQ29sdW1uVHlwZUVudW0sIEZpZWxkSW5wdXRUeXBlRW51bSwgVGFibGV2aWV3RWRpdG9yVHlwZUVudW19IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIFRhYmxldmlld0Rlc2NyaXB0b3I8VD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX21vZGVsOiBNb2RlbERlc2NyaXB0b3I8VD47XG4gICAgcHJpdmF0ZSBfbW9kZWxUeXBlOiBDbGFzc1R5cGU8VD47XG5cbiAgICBwcm90ZWN0ZWQgX3RhYmxlOiBUYWJsZURlc2NyaXB0b3I8VD47XG4gICAgcHJvdGVjdGVkIF9kZXRhaWxzRWRpdG9yOiBFZGl0b3JEZXNjcmlwdG9yPFQ+O1xuICAgIHByb3RlY3RlZCBfYWRkRWRpdG9yOiBFZGl0b3JEZXNjcmlwdG9yPFQ+O1xuICAgIHByb3RlY3RlZCBfZWRpdEVkaXRvcjogRWRpdG9yRGVzY3JpcHRvcjxUPjtcblxuICAgIHByb3RlY3RlZCBfdGFibGVUaXRsZT86IHN0cmluZztcblxuICAgIHByb3RlY3RlZCBfaXNMb2NhbGl6ZWQgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgX2xvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5Pzogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBfbG9jYWxpemF0aW9uTG9jYWxpemF0aW9uUHJvcGVydHk/OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3Rvcihtb2RlbFR5cGU6IENsYXNzVHlwZTxUPiwgaWRQcm9wZXJ0eT86IHN0cmluZywgdGl0bGVQcm9wZXJ0eT86IHN0cmluZywgaTE4bkJhc2VLZXk/OiBzdHJpbmcgfCBDbGFzc1R5cGU8dW5rbm93bj4pIHtcbiAgICAgICAgdGhpcy5fbW9kZWxUeXBlID0gbW9kZWxUeXBlO1xuICAgICAgICB0aGlzLl9tb2RlbCA9IG5ldyBNb2RlbERlc2NyaXB0b3I8VD4obW9kZWxUeXBlLCBpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5LCBpMThuQmFzZUtleSk7XG4gICAgICAgIHRoaXMuX3RhYmxlID0gbmV3IFRhYmxlRGVzY3JpcHRvcjxUPihtb2RlbFR5cGUsIGlkUHJvcGVydHksIHRpdGxlUHJvcGVydHksIGkxOG5CYXNlS2V5KTtcbiAgICAgICAgdGhpcy5fZGV0YWlsc0VkaXRvciA9IG5ldyBFZGl0b3JEZXNjcmlwdG9yPFQ+KG1vZGVsVHlwZSwgaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSwgVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uRGV0YWlscywgaTE4bkJhc2VLZXkpO1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yLndpdGhEaXNhYmxlZCgpO1xuICAgICAgICB0aGlzLl9hZGRFZGl0b3IgPSBuZXcgRWRpdG9yRGVzY3JpcHRvcjxUPihtb2RlbFR5cGUsIGlkUHJvcGVydHksIHRpdGxlUHJvcGVydHksIFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkFkZCwgaTE4bkJhc2VLZXkpO1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yID0gbmV3IEVkaXRvckRlc2NyaXB0b3I8VD4obW9kZWxUeXBlLCBpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5LCBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5FZGl0LCBpMThuQmFzZUtleSk7XG4gICAgICAgIHRoaXMuX3RhYmxlVGl0bGUgPSBgJHt0aGlzLl9tb2RlbC5pMThuQmFzZUtleX0ubmFtZWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2VuZXJhdGVzIGRlc2NyaXB0b3IgZnJvbSBhdHRyaWJ1dGUgZGVmaW5pdGlvbiBvZiBvcGVuYWFwaSBtb2RlbFxuICAgICAqIEBwYXJhbSBtb2RlbFR5cGUgY2xhc3MgdHlwZVxuICAgICAqIEBwYXJhbSBpZFByb3BlcnR5XG4gICAgICogQHBhcmFtIHRpdGxlUHJvcGVydHlcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGZyb208VD4obW9kZWxUeXBlOiBDbGFzc1R5cGU8VD4sIGlkUHJvcGVydHk/OiBzdHJpbmcsIHRpdGxlUHJvcGVydHk/OiBzdHJpbmcpOiBUYWJsZXZpZXdEZXNjcmlwdG9yPFQ+IHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBUYWJsZXZpZXdEZXNjcmlwdG9yKG1vZGVsVHlwZSwgaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSk7XG4gICAgICAgIGRlc2NyaXB0b3IuX3RhYmxlID0gVGFibGVEZXNjcmlwdG9yLmZyb20obW9kZWxUeXBlLCBpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5KTtcbiAgICAgICAgZGVzY3JpcHRvci5fZWRpdEVkaXRvciA9IEVkaXRvckRlc2NyaXB0b3IuZnJvbShtb2RlbFR5cGUsIGlkUHJvcGVydHksIHRpdGxlUHJvcGVydHksIFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkVkaXQpO1xuICAgICAgICBkZXNjcmlwdG9yLl9kZXRhaWxzRWRpdG9yID0gRWRpdG9yRGVzY3JpcHRvci5mcm9tKG1vZGVsVHlwZSwgaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSwgVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uRGV0YWlscykud2l0aERpc2FibGVkKCk7XG4gICAgICAgIGRlc2NyaXB0b3IuX2FkZEVkaXRvciA9IEVkaXRvckRlc2NyaXB0b3IuZnJvbShtb2RlbFR5cGUsIGlkUHJvcGVydHksIHRpdGxlUHJvcGVydHksIFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkFkZCk7XG5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2VuZXJhdGVzIGRlc2NyaXB0b3IgZnJvbSBnaXZlbiBhdHRyaWJ1dGUgZGVmaW5pdGlvblxuICAgICAqIEBwYXJhbSBtb2RlbFR5cGUgY2xhc3MgdHlwZVxuICAgICAqIEBwYXJhbSBjb2x1bW5BdHRyaWJ1dGVzIGF0dHJpYnV0ZSBkZWZpbml0aW9uIHRvIGdlbmVyYXRlIGNvbHVtbnNcbiAgICAgKiBAcGFyYW0gZmllbGRBdHRyaWJ1dGVzIGF0dHJpYnV0ZSBkZWZpbml0aW9uIHRvIGdlbmVyYXRlIGZpZWxkcywgaWYgdW5kZWZpbmVkIGNvbHVtbkRlZmluaXRpb24gaXMgdXNlZCwgaWYgbnVsbCBlZGl0b3JzIGFyZSBub3QgZ2VuZXJhdGVkXG4gICAgICogQHBhcmFtIGlkUHJvcGVydHlcbiAgICAgKiBAcGFyYW0gdGl0bGVQcm9wZXJ0eVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZnJvbU1vZGVsV2l0aERlZmluaXRpb248VD4oXG4gICAgICAgIG1vZGVsVHlwZTogQ2xhc3NUeXBlPFQ+LFxuICAgICAgICBjb2x1bW5BdHRyaWJ1dGVzOiBUYWJsZXZpZXdBdHRyaWJ1dGVEZWZbXSxcbiAgICAgICAgZmllbGRBdHRyaWJ1dGVzPzogVGFibGV2aWV3QXR0cmlidXRlRGVmW10gfCBudWxsLFxuICAgICAgICBpZFByb3BlcnR5Pzogc3RyaW5nLFxuICAgICAgICB0aXRsZVByb3BlcnR5Pzogc3RyaW5nXG4gICAgKTogVGFibGV2aWV3RGVzY3JpcHRvcjxUPiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgVGFibGV2aWV3RGVzY3JpcHRvcihtb2RlbFR5cGUsIGlkUHJvcGVydHksIHRpdGxlUHJvcGVydHkpO1xuICAgICAgICBkZXNjcmlwdG9yLl90YWJsZSA9IFRhYmxlRGVzY3JpcHRvci5mcm9tTW9kZWxXaXRoQXR0cmlidXRlcyhtb2RlbFR5cGUsIGNvbHVtbkF0dHJpYnV0ZXMsIGlkUHJvcGVydHksIHRpdGxlUHJvcGVydHkpO1xuXG4gICAgICAgIGlmIChmaWVsZEF0dHJpYnV0ZXMgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGRlc2NyaXB0b3IuX2VkaXRFZGl0b3IgPSBFZGl0b3JEZXNjcmlwdG9yLmZyb21Nb2RlbFdpdGhBdHRyaWJ1dGVzKFxuICAgICAgICAgICAgICAgIG1vZGVsVHlwZSxcbiAgICAgICAgICAgICAgICBmaWVsZEF0dHJpYnV0ZXMgPz8gY29sdW1uQXR0cmlidXRlcyxcbiAgICAgICAgICAgICAgICBpZFByb3BlcnR5LFxuICAgICAgICAgICAgICAgIHRpdGxlUHJvcGVydHksXG4gICAgICAgICAgICAgICAgVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uRWRpdFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGRlc2NyaXB0b3IuX2RldGFpbHNFZGl0b3IgPSBFZGl0b3JEZXNjcmlwdG9yLmZyb21Nb2RlbFdpdGhBdHRyaWJ1dGVzKFxuICAgICAgICAgICAgICAgIG1vZGVsVHlwZSxcbiAgICAgICAgICAgICAgICBmaWVsZEF0dHJpYnV0ZXMgPz8gY29sdW1uQXR0cmlidXRlcyxcbiAgICAgICAgICAgICAgICBpZFByb3BlcnR5LFxuICAgICAgICAgICAgICAgIHRpdGxlUHJvcGVydHksXG4gICAgICAgICAgICAgICAgVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uRGV0YWlsc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGRlc2NyaXB0b3IuX2FkZEVkaXRvciA9IEVkaXRvckRlc2NyaXB0b3IuZnJvbU1vZGVsV2l0aEF0dHJpYnV0ZXMoXG4gICAgICAgICAgICAgICAgbW9kZWxUeXBlLFxuICAgICAgICAgICAgICAgIGZpZWxkQXR0cmlidXRlcyA/PyBjb2x1bW5BdHRyaWJ1dGVzLFxuICAgICAgICAgICAgICAgIGlkUHJvcGVydHksXG4gICAgICAgICAgICAgICAgdGl0bGVQcm9wZXJ0eSxcbiAgICAgICAgICAgICAgICBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5BZGRcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRhYmxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZXRhaWxzRWRpdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGV0YWlsc0VkaXRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFkZEVkaXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZEVkaXRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVkaXRFZGl0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0RWRpdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGFibGVUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlVGl0bGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtb2RlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21vZGVsO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0xvY2FsaXplZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTG9jYWxpemVkO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVGFibGVEZXNjcmlwdG9yKGRlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvcjxUPik6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZSA9IGRlc2NyaXB0b3I7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRWRpdG9yRGVzY3JpcHRvcnMoZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvcjxUPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvciA9IGRlc2NyaXB0b3I7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvciA9IGRlc2NyaXB0b3I7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGV0YWlsc0Rlc2NyaXB0b3IoZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvcjxUPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhBZGREZXNjcmlwdG9yKGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3I8VD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhFZGl0RGVzY3JpcHRvcihkZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9yPFQ+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IgPSBkZXNjcmlwdG9yO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjcmVhdGVzIG5ldyBjb3B5IG9mIGVkaXRvciBkZXNjcmlwdG9yIGFuZCBtYWtlcyBpdCBkaXNhYmxlZFxuICAgICAqIHVzYWJsZSBpbiBjb21iaW5hdGlvbiB3aXRoIHRoaXM6OndpdGhFZGl0b3JEZXNjcmlwdG9ycywgd2hlcmUgZGV0YWlsc0Rlc2NyaXB0b3IgaXMgbWFkZSBub24gZGlzYWJsZWRcbiAgICAgKiBAcGFyYW0gdHlwZSB3aGljaCBlZGl0b3IgdHlwZSB0byBzZXQgdG8gZGlzYWJsZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aERpc2FibGVkRWRpdG9yRGVzY3JpcHRvcih0eXBlID0gVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uRGV0YWlscyk6IHRoaXMge1xuICAgICAgICBpZiAodHlwZSA9PT0gVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uRWRpdCkge1xuICAgICAgICAgICAgdGhpcy5fZWRpdEVkaXRvciA9IHRoaXMuX2VkaXRFZGl0b3IuY29weSgpLndpdGhEaXNhYmxlZCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkRldGFpbHMpIHtcbiAgICAgICAgICAgIHRoaXMuX2RldGFpbHNFZGl0b3IgPSB0aGlzLl9kZXRhaWxzRWRpdG9yLmNvcHkoKS53aXRoRGlzYWJsZWQoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5BZGQpIHtcbiAgICAgICAgICAgIHRoaXMuX2FkZEVkaXRvciA9IHRoaXMuX2FkZEVkaXRvci5jb3B5KCkud2l0aERpc2FibGVkKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUYWJsZVRpdGxlKHRpdGxlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGVUaXRsZSA9IHRpdGxlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFZhbGlkYXRvcihuYW1lOiBzdHJpbmcsIGV4cHJlc3Npb246IEZpZWxkVmFsaWRhdG9yRm4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRWYWxpZGF0aW9uKG5hbWUsIGV4cHJlc3Npb24pO1xuICAgICAgICB0aGlzLl9hZGRFZGl0b3IuYWRkVmFsaWRhdGlvbihuYW1lLCBleHByZXNzaW9uKTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvci5hZGRWYWxpZGF0aW9uKG5hbWUsIGV4cHJlc3Npb24pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29sdW1uRGVzY3JpcHRvcjxDVD4oY29sdW1uOiBDb2x1bW5EZXNjcmlwdG9yPENULCBUPik6IFRhYmxlRGVzY3JpcHRvcjxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRDb2x1bW5EZXNjcmlwdG9yPENUPihjb2x1bW4pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRDb2x1bW4ocHJvcGVydHk6IHN0cmluZyk6IENvbHVtbkRlc2NyaXB0b3I8c3RyaW5nLCBUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRDb2x1bW4ocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVDb2x1bW4ocHJvcGVydHk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJsZS5yZW1vdmVDb2x1bW4ocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaWVsZChwcm9wZXJ0eTogc3RyaW5nLCBlZGl0b3JUeXBlOiBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bSk6IEFGaWVsZERlc2NyaXB0b3I8YW55LCBUPiB8IG51bGwge1xuICAgICAgICBzd2l0Y2ggKGVkaXRvclR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uRWRpdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZWRpdEVkaXRvci5nZXRGaWVsZChwcm9wZXJ0eSk7XG4gICAgICAgICAgICBjYXNlIFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkFkZDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fYWRkRWRpdG9yLmdldEZpZWxkKHByb3BlcnR5KTtcbiAgICAgICAgICAgIGNhc2UgVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uRGV0YWlsczpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZGV0YWlsc0VkaXRvci5nZXRGaWVsZChwcm9wZXJ0eSk7XG4gICAgICAgICAgICBjYXNlIFRhYmxldmlld0VkaXRvclR5cGVFbnVtLk5vbmU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlRmllbGQocHJvcGVydHk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLnJlbW92ZUZpZWxkKHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLnJlbW92ZUZpZWxkKHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fZGV0YWlsc0VkaXRvci5yZW1vdmVGaWVsZChwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtbk51bWJlcihwcm9wZXJ0eTogc3RyaW5nLCBkaXNwbGF5Rm9ybWF0Pzogc3RyaW5nKTogQ29sdW1uRGVzY3JpcHRvcjxudW1iZXIsIFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZENvbHVtbk51bWJlcihwcm9wZXJ0eSwgZGlzcGxheUZvcm1hdCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtbkRhdGUocHJvcGVydHk6IHN0cmluZywgZGlzcGxheUZvcm1hdD86IHN0cmluZyk6IENvbHVtbkRlc2NyaXB0b3I8RGF0ZSwgVD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkQ29sdW1uRGF0ZShwcm9wZXJ0eSwgZGlzcGxheUZvcm1hdCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtbkJvb2xlYW4ocHJvcGVydHk6IHN0cmluZywgeWVzPzogc3RyaW5nLCBubz86IHN0cmluZywgYXNJY29uID0gZmFsc2UpOiBDb2x1bW5EZXNjcmlwdG9yPGJvb2xlYW4sIFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZENvbHVtbkJvb2xlYW4ocHJvcGVydHksIHllcywgbm8sIGFzSWNvbik7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtbkVudW0ocHJvcGVydHk6IHN0cmluZywgZW51bVR5cGU6IEVudW1UeXBlLCBuYW1lQXNWYWx1ZSA9IGZhbHNlLCB0aXRsZVBhdGg/OiBzdHJpbmcgfCBudWxsKTogQ29sdW1uRGVzY3JpcHRvcjxFbnVtVHlwZSwgVD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkQ29sdW1uRW51bShwcm9wZXJ0eSwgZW51bVR5cGUsIG5hbWVBc1ZhbHVlLCB0aXRsZVBhdGgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRDb2x1bW5DdXN0b21Db21wb25lbnQocHJvcGVydHk6IHN0cmluZywgY3VzdG9tQ29tcG9uZW50VHlwZTogVHlwZTxJQ29sdW1uVmFsdWVDb21wb25lbnQ8VD4+KTogQ29sdW1uRGVzY3JpcHRvcjxhbnksIFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZENvbHVtbkN1c3RvbUNvbXBvbmVudChwcm9wZXJ0eSwgY3VzdG9tQ29tcG9uZW50VHlwZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZVRhYkdyb3VwKG5hbWU6IHN0cmluZywgdGl0bGU/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGV0YWlsc0VkaXRvci5jcmVhdGVUYWJHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvci5jcmVhdGVUYWJHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IuY3JlYXRlVGFiR3JvdXAobmFtZSwgdGl0bGUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRmllbGRHcm91cChuYW1lOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RldGFpbHNFZGl0b3IuY3JlYXRlRmllbGRHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvci5jcmVhdGVGaWVsZEdyb3VwKG5hbWUsIHRpdGxlKTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvci5jcmVhdGVGaWVsZEdyb3VwKG5hbWUsIHRpdGxlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkRGVzY3JpcHRvcjxGVD4oZmllbGQ6IEFGaWVsZERlc2NyaXB0b3I8RlQsIFQ+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RldGFpbHNFZGl0b3IuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkKHByb3BlcnR5OiBzdHJpbmcpOiBGaWVsZElucHV0RGVzY3JpcHRvcjxUPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZChwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXA8RlQ+KHByb3BlcnR5OiBzdHJpbmcsIG1vZGVsVHlwZTogQ2xhc3NUeXBlPEZUPik6IEZpZWxkTG9va3VwRGVzY3JpcHRvcjxGVCwgVD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX2RldGFpbHNFZGl0b3IuYWRkRmllbGRMb29rdXAocHJvcGVydHksIG1vZGVsVHlwZSk7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXBFbnVtKFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICBlbnVtVHlwZTogRW51bVR5cGUsXG4gICAgICAgIG9wdGlvbnM/OiBBcnJheTxFbnVtQ29uc3RhbnRUeXBlPixcbiAgICAgICAgbmFtZUFzVmFsdWUgPSBmYWxzZSxcbiAgICAgICAgb3B0aW9uc1RpdGxlUGF0aD86IHN0cmluZyB8IG51bGxcbiAgICApOiBGaWVsZExvb2t1cEVudW1EZXNjcmlwdG9yPFQ+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkTG9va3VwRW51bShwcm9wZXJ0eSwgZW51bVR5cGUsIG9wdGlvbnMsIG5hbWVBc1ZhbHVlLCBvcHRpb25zVGl0bGVQYXRoKTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZE1hbnlFZGl0b3I8RlQ+KHByb3BlcnR5OiBzdHJpbmcsIHRhYmxldmlld0Rlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3I8RlQ+KTogRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcjxGVCwgVD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX2RldGFpbHNFZGl0b3IuYWRkRmllbGRNYW55RWRpdG9yKHByb3BlcnR5LCB0YWJsZXZpZXdEZXNjcmlwdG9yKTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZE1hbnlUb01hbnlFZGl0b3I8RlQ+KFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICBtYWluVGFibGVEZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3I8RlQ+LFxuICAgICAgICBsb29rdXBUYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvcjxGVD5cbiAgICApOiBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yPEZULCBUPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZE1hbnlUb01hbnlFZGl0b3IocHJvcGVydHksIG1haW5UYWJsZURlc2NyaXB0b3IsIGxvb2t1cFRhYmxlRGVzY3JpcHRvcik7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weSgpOiBUYWJsZXZpZXdEZXNjcmlwdG9yPFQ+IHtcbiAgICAgICAgY29uc3QgdGFibGV2aWV3ID0gbmV3IFRhYmxldmlld0Rlc2NyaXB0b3IodGhpcy5fbW9kZWwudHlwZSwgdGhpcy5fbW9kZWwuaWRQcm9wZXJ0eU5hbWUsIHRoaXMuX21vZGVsLnRpdGxlUHJvcGVydHlOYW1lKTtcbiAgICAgICAgdGFibGV2aWV3Ll90YWJsZSA9IHRoaXMuX3RhYmxlLmNvcHkoKTtcbiAgICAgICAgdGFibGV2aWV3Ll9kZXRhaWxzRWRpdG9yID0gdGhpcy5fZGV0YWlsc0VkaXRvci5jb3B5KCk7XG4gICAgICAgIHRhYmxldmlldy5fYWRkRWRpdG9yID0gdGhpcy5fYWRkRWRpdG9yLmNvcHkoKTtcbiAgICAgICAgdGFibGV2aWV3Ll9lZGl0RWRpdG9yID0gdGhpcy5fZWRpdEVkaXRvci5jb3B5KCk7XG4gICAgICAgIHRhYmxldmlldy5fdGFibGVUaXRsZSA9IHRoaXMuX3RhYmxlVGl0bGU7XG4gICAgICAgIHRhYmxldmlldy5faXNMb2NhbGl6ZWQgPSB0aGlzLl9pc0xvY2FsaXplZDtcbiAgICAgICAgdGFibGV2aWV3Ll9sb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eSA9IHRoaXMuX2xvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5O1xuICAgICAgICB0YWJsZXZpZXcuX2xvY2FsaXphdGlvbkxvY2FsaXphdGlvblByb3BlcnR5ID0gdGhpcy5fbG9jYWxpemF0aW9uTG9jYWxpemF0aW9uUHJvcGVydHk7XG4gICAgICAgIHJldHVybiB0YWJsZXZpZXc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBjb2x1bW4gYW5kIGZpZWxkIHdpdGggY3VzdG9tIHR5cGUsIGZvciBleGFtcGxlIGN1cnJlbmN5XG4gICAgICogaWYgZmllbGQgZXhpc3RzLCBpdCBpcyByZXBsYWNlZFxuICAgICAqIERPIE5PVCBVU0UgV0lUSCBUWVBFUyBXSEVSRSBBUkdTIEFSRSBSRVFVSVJFRCAtIEVSUk9SIFdJTEwgQkUgVEhST1dOXG4gICAgICogZm9yIGVudW0gdXNlIHdpdGhFbnVtVHlwZVxuICAgICAqIGZvciBjdXN0b20gY2xhc3MgdXNlIHdpdGhDbGFzc1R5cGVcbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgbmFtZSBvZiBmaWVsZFxuICAgICAqIEBwYXJhbSBjb2x1bW5UeXBlIHJlcXVpcmVkIGNvbHVtbiB0eXBlXG4gICAgICogQHBhcmFtIGZpZWxkVHlwZSBvcHRpb25hbCwgaWYgbm90IHByb3ZpZGVkIGl0IGlzIGNvbnZlcnRlZCBmcm9tIGNvbHVtbiB0eXBlXG4gICAgICovXG4gICAgcHVibGljIHdpdGhNb2RpZmllZFR5cGUocHJvcGVydHk6IHN0cmluZywgY29sdW1uVHlwZTogQ29sdW1uVHlwZUVudW0sIGZpZWxkVHlwZT86IEZpZWxkSW5wdXRUeXBlRW51bSwgY29sdW1uRGlzcGxheVR5cGU/OiBDb2x1bW5EaXNwbGF5VHlwZUVudW0pOiB0aGlzIHtcbiAgICAgICAgaWYgKGNvbHVtblR5cGUgPT09IENvbHVtblR5cGVFbnVtLkVudW0pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRG8gbm90IHVzZSB3aXRoIHR5cGVzIHdoZXJlIGFyZ3MgYXJlIHJlcXVpcmVkJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhdHRyaWJ1dGVEZWYgPSBUYWJsZXZpZXdVdGlsLmdldEF0dHJpYnV0ZURlZk1hcCh0aGlzLl9tb2RlbFR5cGUpLmZpbmQoYXRyaWJ1dGUgPT4gYXRyaWJ1dGUubmFtZSA9PT0gcHJvcGVydHkpO1xuXG4gICAgICAgIGlmIChhdHRyaWJ1dGVEZWYgIT0gbnVsbCkge1xuICAgICAgICAgICAgZmllbGRUeXBlID8/PSBUYWJsZXZpZXdVdGlsLnRvRmllbGRJbnB1dFR5cGVGcm9tQ29sdW1uVHlwZShjb2x1bW5UeXBlLCBjb2x1bW5EaXNwbGF5VHlwZSk7XG4gICAgICAgICAgICBhdHRyaWJ1dGVEZWYuZmllbGRUeXBlID0gZmllbGRUeXBlO1xuXG4gICAgICAgICAgICB0aGlzLl90YWJsZS53aXRoQ29sdW1uTW9kaWZpZWRUeXBlKHByb3BlcnR5LCBjb2x1bW5UeXBlLCBjb2x1bW5EaXNwbGF5VHlwZSk7XG4gICAgICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLndpdGhGaWVsZE1vZGlmaWVkVHlwZShwcm9wZXJ0eSwgZmllbGRUeXBlKTtcbiAgICAgICAgICAgIHRoaXMuX2FkZEVkaXRvci53aXRoRmllbGRNb2RpZmllZFR5cGUocHJvcGVydHksIGZpZWxkVHlwZSk7XG4gICAgICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yLndpdGhGaWVsZE1vZGlmaWVkVHlwZShwcm9wZXJ0eSwgZmllbGRUeXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNyZWF0ZXMgY29sdW1uIHdpdGggZW51bSB0eXBlXG4gICAgICogaWYgZmllbGRzIGV4aXN0cywgaXQgaXMgcmVwbGFjZWRcbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgcHJvcGVydHkgbmFtZVxuICAgICAqIEBwYXJhbSBlbnVtVHlwZSB0eXBlIG9mIGVudW1cbiAgICAgKiBAcGFyYW0gZmllbGRUeXBlIHR5cGUgb2YgZmllbGQsIG9wdGlvbmFsLCBkZWZhdWx0IGlzIFRleHRcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aE1vZGlmaWVkRW51bShwcm9wZXJ0eTogc3RyaW5nLCBlbnVtVHlwZT86IEVudW1UeXBlLCBmaWVsZFR5cGU/OiBGaWVsZElucHV0VHlwZUVudW0pOiB0aGlzIHtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlRGVmID0gVGFibGV2aWV3VXRpbC5nZXRBdHRyaWJ1dGVEZWZNYXAodGhpcy5fbW9kZWxUeXBlKS5maW5kKGF0cmlidXRlID0+IGF0cmlidXRlLm5hbWUgPT09IHByb3BlcnR5KTtcblxuICAgICAgICBpZiAoYXR0cmlidXRlRGVmICE9IG51bGwpIHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZURlZi5maWVsZFR5cGUgPSBmaWVsZFR5cGUgPz8gRmllbGRJbnB1dFR5cGVFbnVtLlRleHQ7XG5cbiAgICAgICAgICAgIHRoaXMuX3RhYmxlLndpdGhDb2x1bW5Nb2RpZmllZEVudW0ocHJvcGVydHksIGVudW1UeXBlKTtcbiAgICAgICAgICAgIHRoaXMuX2VkaXRFZGl0b3Iud2l0aEZpZWxkTW9kaWZpZWRFbnVtKHByb3BlcnR5LCBlbnVtVHlwZSk7XG4gICAgICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yLndpdGhGaWVsZE1vZGlmaWVkRW51bShwcm9wZXJ0eSwgZW51bVR5cGUpO1xuICAgICAgICAgICAgdGhpcy5fYWRkRWRpdG9yLndpdGhGaWVsZE1vZGlmaWVkRW51bShwcm9wZXJ0eSwgZW51bVR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2VuZXJhdGVzIGNvbHVtbiB3aXRoIGN1c3RvbSBjbGFzcyB0eXBlXG4gICAgICogZmllbGQgaXMgZ2VuZXJhdGVkIG9ubHkgaWYgbG9va3VwUHJvdmlkZXIgaXMgcHJvdmlkZWRcbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgcHJvcGVydHkgbmFtZVxuICAgICAqIEBwYXJhbSBtb2RlbFR5cGUgY2xhc3MgdHlwZSBvZiBvYmplY3RcbiAgICAgKiBAcGFyYW0gdGl0bGVQcm9wZXJ0eVxuICAgICAqIEBwYXJhbSBsb29rdXBQcm92aWRlclxuICAgICAqIEBwYXJhbSBpdGVtc0xhYmVsUHJvcGVydHlcbiAgICAgKiBAcGFyYW0gZmlsdGVyUHJvcGVydHlcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aE1vZGlmaWVkTG9va3VwPE1UPihcbiAgICAgICAgcHJvcGVydHk6IHN0cmluZyxcbiAgICAgICAgbW9kZWxUeXBlPzogQ2xhc3NUeXBlPE1UPixcbiAgICAgICAgbG9va3VwUHJvdmlkZXI/OiBJTG9va3VwRGF0YVByb3ZpZGVyPE1ULCBhbnk+LFxuICAgICAgICB0aXRsZVByb3BlcnR5Pzogc3RyaW5nLFxuICAgICAgICBpdGVtc0xhYmVsUHJvcGVydHk/OiBzdHJpbmcsXG4gICAgICAgIGZpbHRlclByb3BlcnR5Pzogc3RyaW5nXG4gICAgKTogdGhpcyB7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZURlZiA9IFRhYmxldmlld1V0aWwuZ2V0QXR0cmlidXRlRGVmTWFwKHRoaXMuX21vZGVsVHlwZSkuZmluZChhdHJpYnV0ZSA9PiBhdHJpYnV0ZS5uYW1lID09PSBwcm9wZXJ0eSk7XG5cbiAgICAgICAgaWYgKGF0dHJpYnV0ZURlZiAhPSBudWxsKSB7XG4gICAgICAgICAgICBtb2RlbFR5cGUgPz89IGF0dHJpYnV0ZURlZi5jbGFzc1R5cGUgPz8gT2JqZWN0U2VyaWFsaXplci5nZXQoKS5maW5kVHlwZShhdHRyaWJ1dGVEZWYudHlwZSk7XG4gICAgICAgICAgICB0aXRsZVByb3BlcnR5ID8/PSBNb2RlbFV0aWwuZmluZFRpdGxlQXR0cmlidXRlKG1vZGVsVHlwZSEpID8/IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGl0ZW1zTGFiZWxQcm9wZXJ0eSA/Pz0gdGl0bGVQcm9wZXJ0eTtcbiAgICAgICAgICAgIGF0dHJpYnV0ZURlZi5jb2x1bW5UeXBlID0gQ29sdW1uVHlwZUVudW0uU3RyaW5nO1xuICAgICAgICAgICAgYXR0cmlidXRlRGVmLmZpZWxkVHlwZSA9IEZpZWxkSW5wdXRUeXBlRW51bS5UZXh0O1xuXG4gICAgICAgICAgICBpZiAobG9va3VwUHJvdmlkZXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlLndpdGhDb2x1bW5Nb2RpZmllZExvb2t1cChwcm9wZXJ0eSwgbG9va3VwUHJvdmlkZXIsIGl0ZW1zTGFiZWxQcm9wZXJ0eSwgZmlsdGVyUHJvcGVydHkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2FkZEVkaXRvci53aXRoRmllbGRNb2RpZmllZExvb2t1cChwcm9wZXJ0eSwgbW9kZWxUeXBlISwgbG9va3VwUHJvdmlkZXIsIGl0ZW1zTGFiZWxQcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGV0YWlsc0VkaXRvci53aXRoRmllbGRNb2RpZmllZExvb2t1cChwcm9wZXJ0eSwgbW9kZWxUeXBlISwgbG9va3VwUHJvdmlkZXIsIGl0ZW1zTGFiZWxQcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZWRpdEVkaXRvci53aXRoRmllbGRNb2RpZmllZExvb2t1cChwcm9wZXJ0eSwgbW9kZWxUeXBlISwgbG9va3VwUHJvdmlkZXIsIGl0ZW1zTGFiZWxQcm9wZXJ0eSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuX3RhYmxlLmdldENvbHVtbihwcm9wZXJ0eSkgPz8gdGhpcy5hZGRDb2x1bW4ocHJvcGVydHkpO1xuICAgICAgICAgICAgICAgIGNvbHVtbi53aXRoT2JqZWN0UHJvcGVydHkobW9kZWxUeXBlISwgdGl0bGVQcm9wZXJ0eSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9jYWxpemVkPFM+KFxuICAgICAgICBsb2NhbGl6YXRpb25Qcm9wZXJ0eT86IHN0cmluZyxcbiAgICAgICAgbG9jYWxlUHJvcGVydHk/OiBzdHJpbmcsXG4gICAgICAgIGxvY2FsaXphdGlvbkJlYW5UeXBlPzogQ2xhc3NUeXBlPGFueT4sXG4gICAgICAgIGxvY2FsZUxvb2t1cD86IChxdWVyeVBhcmFtPzogTWVkaXVzUXVlcnlQYXJhbSwgc2VydmljZT86IFMsIHNlYXJjaD86IHN0cmluZykgPT4gT2JzZXJ2YWJsZTxBcnJheTxzdHJpbmc+PlxuICAgICk6IHRoaXMge1xuICAgICAgICB0aGlzLl9sb2NhbGl6YXRpb25Mb2NhbGl6YXRpb25Qcm9wZXJ0eSA9IGxvY2FsaXphdGlvblByb3BlcnR5O1xuICAgICAgICB0aGlzLl9sb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eSA9IGxvY2FsZVByb3BlcnR5O1xuICAgICAgICB0aGlzLl9pc0xvY2FsaXplZCA9IHRydWU7XG5cbiAgICAgICAgaWYgKGxvY2FsZVByb3BlcnR5KSB7XG4gICAgICAgICAgICB0aGlzLl90YWJsZS53aXRoTG9jYWxpemF0aW9uTG9jYWxlUHJvcGVydHkobG9jYWxlUHJvcGVydHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kZXRhaWxzRWRpdG9yLmxvY2FsaXplZDxTPihsb2NhbGl6YXRpb25Qcm9wZXJ0eSwgbG9jYWxlUHJvcGVydHksIGxvY2FsaXphdGlvbkJlYW5UeXBlLCBsb2NhbGVMb29rdXApO1xuICAgICAgICB0aGlzLmFkZEVkaXRvci5sb2NhbGl6ZWQ8Uz4obG9jYWxpemF0aW9uUHJvcGVydHksIGxvY2FsZVByb3BlcnR5LCBsb2NhbGl6YXRpb25CZWFuVHlwZSwgbG9jYWxlTG9va3VwKTtcbiAgICAgICAgdGhpcy5lZGl0RWRpdG9yLmxvY2FsaXplZDxTPihsb2NhbGl6YXRpb25Qcm9wZXJ0eSwgbG9jYWxlUHJvcGVydHksIGxvY2FsaXphdGlvbkJlYW5UeXBlLCBsb2NhbGVMb29rdXApO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxldmlld0R5bmFtaWNEZXNjcmlwdG9yIGV4dGVuZHMgVGFibGV2aWV3RGVzY3JpcHRvcjxhbnk+IHtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX3RhYmxlOiBUYWJsZUR5bmFtaWNEZXNjcmlwdG9yO1xuXG4gICAgY29uc3RydWN0b3IoaWRQcm9wZXJ0eT86IHN0cmluZywgdGl0bGVQcm9wZXJ0eT86IHN0cmluZykge1xuICAgICAgICBzdXBlcih7fSBhcyBDbGFzc1R5cGU8YW55PiwgaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX3RhYmxlID0gbmV3IFRhYmxlRHluYW1pY0Rlc2NyaXB0b3IoaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSk7XG4gICAgICAgIHN1cGVyLl90YWJsZVRpdGxlID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgdGFibGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXRzIGN1c3RvbSB0YWJsZSBkZXNjcmlwdG9yXG4gICAgICogQHBhcmFtIGRlc2NyaXB0b3JcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aFRhYmxlRGVzY3JpcHRvcihkZXNjcmlwdG9yOiBUYWJsZUR5bmFtaWNEZXNjcmlwdG9yKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlID0gZGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogc2V0cyB2aXNpYmlsaXR5IGhpZGRlbiBzdGF0ZSB0byBjb2x1bW4gd2l0aCBnaXZlbiBwcm9wZXJ0eVxuICAgICAqIGVxdWFscyB0byBiZSByZW1vdmluZyBpbiBhdXRvIGFuZCBiYXNlIHRhYmxldmlldyBkZXNjcmlwdG9yXG4gICAgICogKiBAcGFyYW0gcHJvcGVydHkgY29sdW1uJ3MgcHJvcGVydHlcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgcmVtb3ZlQ29sdW1uKHByb3BlcnR5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUucmVtb3ZlQ29sdW1uKHByb3BlcnR5KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBkZXBwIGNvcHkgb2YgdGFibGV2aWV3IG9iamVjdCBhbmQgaXRzIGNoaWxkcmVuXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGNvcHkoKTogVGFibGV2aWV3RHluYW1pY0Rlc2NyaXB0b3Ige1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IFRhYmxldmlld0R5bmFtaWNEZXNjcmlwdG9yKHRoaXMubW9kZWwuaWRQcm9wZXJ0eU5hbWUsIHRoaXMubW9kZWwudGl0bGVQcm9wZXJ0eU5hbWUpO1xuICAgICAgICBkZXNjcmlwdG9yLl90YWJsZSA9IHRoaXMuX3RhYmxlLmNvcHkoKTtcbiAgICAgICAgZGVzY3JpcHRvci5fdGFibGVUaXRsZSA9IHRoaXMuX3RhYmxlVGl0bGU7XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cbn1cbiJdfQ==
347
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rlc2NyaXB0b3JzL3RhYmxldmlldy90YWJsZXZpZXcuZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQXdCLGdCQUFnQixFQUFDLE1BQU0sY0FBYyxDQUFDO0FBR3JFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFFSCxnQkFBZ0IsRUFNbkIsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBbUIsZUFBZSxFQUFFLHNCQUFzQixFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ25GLE9BQU8sRUFBd0IsY0FBYyxFQUFFLGtCQUFrQixFQUFFLHVCQUF1QixFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRTVHLE1BQU0sT0FBTyxtQkFBbUI7SUFlNUIsWUFBWSxTQUF1QixFQUFFLFVBQW1CLEVBQUUsYUFBc0IsRUFBRSxXQUF5QztRQUpqSCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUszQixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFJLFNBQVMsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3hGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUksU0FBUyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGdCQUFnQixDQUFJLFNB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RSxLQUFLLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBb0IsS0FBSztRQUNyQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7T0FHRztJQUNhLG1CQUFtQixDQUFDLFVBQWtDO1FBQ2xFLElBQUksQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ2EsWUFBWSxDQUFDLFFBQWdCO1FBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNhLElBQUk7UUFDaEIsTUFBTSxVQUFVLEdBQUcsSUFBSSwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0csVUFBVSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZDLFVBQVUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMxQyxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0ZpZWxkVmFsaWRhdG9yRm59IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUvbGliL21vZGVscy9jb25maWcnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtNZWRpdXNRdWVyeVBhcmFtfSBmcm9tICcuLi8uLi9hcGkvbW9kZWxzJztcbmltcG9ydCB7T2JqZWN0U2VyaWFsaXplcn0gZnJvbSAnLi4vLi4vYXBpL3V0aWxzJztcbmltcG9ydCB7SUxvb2t1cERhdGFQcm92aWRlcn0gZnJvbSAnLi4vLi4vZGF0YS1wcm92aWRlcnMnO1xuaW1wb3J0IHtJQ29sdW1uVmFsdWVDb21wb25lbnQsIE1uZ0Vycm9ySW50ZXJuYWx9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge1RhYmxldmlld0F0dHJpYnV0ZURlZn0gZnJvbSAnLi4vLi4vbW9kZWxzL3RhYmxldmlldy1hdHRyLm1vZGVsJztcbmltcG9ydCB7Q2xhc3NUeXBlLCBFbnVtQ29uc3RhbnRUeXBlLCBFbnVtVHlwZX0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHtNb2RlbFV0aWx9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7VGFibGV2aWV3VXRpbH0gZnJvbSAnLi4vLi4vdXRpbHMvdGFibGV2aWV3LnV0aWwnO1xuaW1wb3J0IHtcbiAgICBBRmllbGREZXNjcmlwdG9yLFxuICAgIEVkaXRvckRlc2NyaXB0b3IsXG4gICAgRmllbGRJbnB1dERlc2NyaXB0b3IsXG4gICAgRmllbGRMb29rdXBEZXNjcmlwdG9yLFxuICAgIEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3IsXG4gICAgRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcixcbiAgICBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yXG59IGZyb20gJy4uL2VkaXRvcic7XG5pbXBvcnQge01vZGVsRGVzY3JpcHRvcn0gZnJvbSAnLi4vbW9kZWwuZGVzY3JpcHRvcic7XG5pbXBvcnQge0NvbHVtbkRlc2NyaXB0b3IsIFRhYmxlRGVzY3JpcHRvciwgVGFibGVEeW5hbWljRGVzY3JpcHRvcn0gZnJvbSAnLi4vdGFibGUnO1xuaW1wb3J0IHtDb2x1bW5EaXNwbGF5VHlwZUVudW0sIENvbHVtblR5cGVFbnVtLCBGaWVsZElucHV0VHlwZUVudW0sIFRhYmxldmlld0VkaXRvclR5cGVFbnVtfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBUYWJsZXZpZXdEZXNjcmlwdG9yPFQ+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9tb2RlbDogTW9kZWxEZXNjcmlwdG9yPFQ+O1xuICAgIHByaXZhdGUgX21vZGVsVHlwZTogQ2xhc3NUeXBlPFQ+O1xuXG4gICAgcHJvdGVjdGVkIF90YWJsZTogVGFibGVEZXNjcmlwdG9yPFQ+O1xuICAgIHByb3RlY3RlZCBfZGV0YWlsc0VkaXRvcjogRWRpdG9yRGVzY3JpcHRvcjxUPjtcbiAgICBwcm90ZWN0ZWQgX2FkZEVkaXRvcjogRWRpdG9yRGVzY3JpcHRvcjxUPjtcbiAgICBwcm90ZWN0ZWQgX2VkaXRFZGl0b3I6IEVkaXRvckRlc2NyaXB0b3I8VD47XG5cbiAgICBwcm90ZWN0ZWQgX3RhYmxlVGl0bGU/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX2lzTG9jYWxpemVkID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIF9sb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eT86IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgX2xvY2FsaXphdGlvbkxvY2FsaXphdGlvblByb3BlcnR5Pzogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IobW9kZWxUeXBlOiBDbGFzc1R5cGU8VD4sIGlkUHJvcGVydHk/OiBzdHJpbmcsIHRpdGxlUHJvcGVydHk/OiBzdHJpbmcsIGkxOG5CYXNlS2V5Pzogc3RyaW5nIHwgQ2xhc3NUeXBlPHVua25vd24+KSB7XG4gICAgICAgIHRoaXMuX21vZGVsVHlwZSA9IG1vZGVsVHlwZTtcbiAgICAgICAgdGhpcy5fbW9kZWwgPSBuZXcgTW9kZWxEZXNjcmlwdG9yPFQ+KG1vZGVsVHlwZSwgaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSwgaTE4bkJhc2VLZXkpO1xuICAgICAgICB0aGlzLl90YWJsZSA9IG5ldyBUYWJsZURlc2NyaXB0b3I8VD4obW9kZWxUeXBlLCBpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5LCBpMThuQmFzZUtleSk7XG4gICAgICAgIHRoaXMuX2RldGFpbHNFZGl0b3IgPSBuZXcgRWRpdG9yRGVzY3JpcHRvcjxUPihtb2RlbFR5cGUsIGlkUHJvcGVydHksIHRpdGxlUHJvcGVydHksIFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkRldGFpbHMsIGkxOG5CYXNlS2V5KTtcbiAgICAgICAgdGhpcy5fZGV0YWlsc0VkaXRvci53aXRoRGlzYWJsZWQoKTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yID0gbmV3IEVkaXRvckRlc2NyaXB0b3I8VD4obW9kZWxUeXBlLCBpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5LCBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5BZGQsIGkxOG5CYXNlS2V5KTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvciA9IG5ldyBFZGl0b3JEZXNjcmlwdG9yPFQ+KG1vZGVsVHlwZSwgaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSwgVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uRWRpdCwgaTE4bkJhc2VLZXkpO1xuICAgICAgICB0aGlzLl90YWJsZVRpdGxlID0gYCR7dGhpcy5fbW9kZWwuaTE4bkJhc2VLZXl9Lm5hbWVgO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdlbmVyYXRlcyBkZXNjcmlwdG9yIGZyb20gYXR0cmlidXRlIGRlZmluaXRpb24gb2Ygb3BlbmFhcGkgbW9kZWxcbiAgICAgKiBAcGFyYW0gbW9kZWxUeXBlIGNsYXNzIHR5cGVcbiAgICAgKiBAcGFyYW0gaWRQcm9wZXJ0eVxuICAgICAqIEBwYXJhbSB0aXRsZVByb3BlcnR5XG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBmcm9tPFQ+KG1vZGVsVHlwZTogQ2xhc3NUeXBlPFQ+LCBpZFByb3BlcnR5Pzogc3RyaW5nLCB0aXRsZVByb3BlcnR5Pzogc3RyaW5nKTogVGFibGV2aWV3RGVzY3JpcHRvcjxUPiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgVGFibGV2aWV3RGVzY3JpcHRvcihtb2RlbFR5cGUsIGlkUHJvcGVydHksIHRpdGxlUHJvcGVydHkpO1xuICAgICAgICBkZXNjcmlwdG9yLl90YWJsZSA9IFRhYmxlRGVzY3JpcHRvci5mcm9tKG1vZGVsVHlwZSwgaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSk7XG4gICAgICAgIGRlc2NyaXB0b3IuX2VkaXRFZGl0b3IgPSBFZGl0b3JEZXNjcmlwdG9yLmZyb20obW9kZWxUeXBlLCBpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5LCBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5FZGl0KTtcbiAgICAgICAgZGVzY3JpcHRvci5fZGV0YWlsc0VkaXRvciA9IEVkaXRvckRlc2NyaXB0b3IuZnJvbShtb2RlbFR5cGUsIGlkUHJvcGVydHksIHRpdGxlUHJvcGVydHksIFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkRldGFpbHMpLndpdGhEaXNhYmxlZCgpO1xuICAgICAgICBkZXNjcmlwdG9yLl9hZGRFZGl0b3IgPSBFZGl0b3JEZXNjcmlwdG9yLmZyb20obW9kZWxUeXBlLCBpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5LCBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5BZGQpO1xuXG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdlbmVyYXRlcyBkZXNjcmlwdG9yIGZyb20gZ2l2ZW4gYXR0cmlidXRlIGRlZmluaXRpb25cbiAgICAgKiBAcGFyYW0gbW9kZWxUeXBlIGNsYXNzIHR5cGVcbiAgICAgKiBAcGFyYW0gY29sdW1uQXR0cmlidXRlcyBhdHRyaWJ1dGUgZGVmaW5pdGlvbiB0byBnZW5lcmF0ZSBjb2x1bW5zXG4gICAgICogQHBhcmFtIGZpZWxkQXR0cmlidXRlcyBhdHRyaWJ1dGUgZGVmaW5pdGlvbiB0byBnZW5lcmF0ZSBmaWVsZHMsIGlmIHVuZGVmaW5lZCBjb2x1bW5EZWZpbml0aW9uIGlzIHVzZWQsIGlmIG51bGwgZWRpdG9ycyBhcmUgbm90IGdlbmVyYXRlZFxuICAgICAqIEBwYXJhbSBpZFByb3BlcnR5XG4gICAgICogQHBhcmFtIHRpdGxlUHJvcGVydHlcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGZyb21Nb2RlbFdpdGhEZWZpbml0aW9uPFQ+KFxuICAgICAgICBtb2RlbFR5cGU6IENsYXNzVHlwZTxUPixcbiAgICAgICAgY29sdW1uQXR0cmlidXRlczogVGFibGV2aWV3QXR0cmlidXRlRGVmW10sXG4gICAgICAgIGZpZWxkQXR0cmlidXRlcz86IFRhYmxldmlld0F0dHJpYnV0ZURlZltdIHwgbnVsbCxcbiAgICAgICAgaWRQcm9wZXJ0eT86IHN0cmluZyxcbiAgICAgICAgdGl0bGVQcm9wZXJ0eT86IHN0cmluZ1xuICAgICk6IFRhYmxldmlld0Rlc2NyaXB0b3I8VD4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IFRhYmxldmlld0Rlc2NyaXB0b3IobW9kZWxUeXBlLCBpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5KTtcbiAgICAgICAgZGVzY3JpcHRvci5fdGFibGUgPSBUYWJsZURlc2NyaXB0b3IuZnJvbU1vZGVsV2l0aEF0dHJpYnV0ZXMobW9kZWxUeXBlLCBjb2x1bW5BdHRyaWJ1dGVzLCBpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5KTtcblxuICAgICAgICBpZiAoZmllbGRBdHRyaWJ1dGVzICE9PSBudWxsKSB7XG4gICAgICAgICAgICBkZXNjcmlwdG9yLl9lZGl0RWRpdG9yID0gRWRpdG9yRGVzY3JpcHRvci5mcm9tTW9kZWxXaXRoQXR0cmlidXRlcyhcbiAgICAgICAgICAgICAgICBtb2RlbFR5cGUsXG4gICAgICAgICAgICAgICAgZmllbGRBdHRyaWJ1dGVzID8/IGNvbHVtbkF0dHJpYnV0ZXMsXG4gICAgICAgICAgICAgICAgaWRQcm9wZXJ0eSxcbiAgICAgICAgICAgICAgICB0aXRsZVByb3BlcnR5LFxuICAgICAgICAgICAgICAgIFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkVkaXRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBkZXNjcmlwdG9yLl9kZXRhaWxzRWRpdG9yID0gRWRpdG9yRGVzY3JpcHRvci5mcm9tTW9kZWxXaXRoQXR0cmlidXRlcyhcbiAgICAgICAgICAgICAgICBtb2RlbFR5cGUsXG4gICAgICAgICAgICAgICAgZmllbGRBdHRyaWJ1dGVzID8/IGNvbHVtbkF0dHJpYnV0ZXMsXG4gICAgICAgICAgICAgICAgaWRQcm9wZXJ0eSxcbiAgICAgICAgICAgICAgICB0aXRsZVByb3BlcnR5LFxuICAgICAgICAgICAgICAgIFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkRldGFpbHNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBkZXNjcmlwdG9yLl9hZGRFZGl0b3IgPSBFZGl0b3JEZXNjcmlwdG9yLmZyb21Nb2RlbFdpdGhBdHRyaWJ1dGVzKFxuICAgICAgICAgICAgICAgIG1vZGVsVHlwZSxcbiAgICAgICAgICAgICAgICBmaWVsZEF0dHJpYnV0ZXMgPz8gY29sdW1uQXR0cmlidXRlcyxcbiAgICAgICAgICAgICAgICBpZFByb3BlcnR5LFxuICAgICAgICAgICAgICAgIHRpdGxlUHJvcGVydHksXG4gICAgICAgICAgICAgICAgVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uQWRkXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0YWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGV0YWlsc0VkaXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RldGFpbHNFZGl0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhZGRFZGl0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRFZGl0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlZGl0RWRpdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWRpdEVkaXRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRhYmxlVGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZVRpdGxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbW9kZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNMb2NhbGl6ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0xvY2FsaXplZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRhYmxlRGVzY3JpcHRvcihkZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3I8VD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUgPSBkZXNjcmlwdG9yO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEVkaXRvckRlc2NyaXB0b3JzKGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3I8VD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGV0YWlsc0VkaXRvciA9IGRlc2NyaXB0b3I7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IgPSBkZXNjcmlwdG9yO1xuICAgICAgICB0aGlzLl9hZGRFZGl0b3IgPSBkZXNjcmlwdG9yO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERldGFpbHNEZXNjcmlwdG9yKGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3I8VD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGV0YWlsc0VkaXRvciA9IGRlc2NyaXB0b3I7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQWRkRGVzY3JpcHRvcihkZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9yPFQ+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvciA9IGRlc2NyaXB0b3I7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRWRpdERlc2NyaXB0b3IoZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvcjxUPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBuZXcgY29weSBvZiBlZGl0b3IgZGVzY3JpcHRvciBhbmQgbWFrZXMgaXQgZGlzYWJsZWRcbiAgICAgKiB1c2FibGUgaW4gY29tYmluYXRpb24gd2l0aCB0aGlzOjp3aXRoRWRpdG9yRGVzY3JpcHRvcnMsIHdoZXJlIGRldGFpbHNEZXNjcmlwdG9yIGlzIG1hZGUgbm9uIGRpc2FibGVkXG4gICAgICogQHBhcmFtIHR5cGUgd2hpY2ggZWRpdG9yIHR5cGUgdG8gc2V0IHRvIGRpc2FibGVkXG4gICAgICovXG4gICAgcHVibGljIHdpdGhEaXNhYmxlZEVkaXRvckRlc2NyaXB0b3IodHlwZSA9IFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkRldGFpbHMpOiB0aGlzIHtcbiAgICAgICAgaWYgKHR5cGUgPT09IFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkVkaXQpIHtcbiAgICAgICAgICAgIHRoaXMuX2VkaXRFZGl0b3IgPSB0aGlzLl9lZGl0RWRpdG9yLmNvcHkoKS53aXRoRGlzYWJsZWQoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5EZXRhaWxzKSB7XG4gICAgICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yID0gdGhpcy5fZGV0YWlsc0VkaXRvci5jb3B5KCkud2l0aERpc2FibGVkKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uQWRkKSB7XG4gICAgICAgICAgICB0aGlzLl9hZGRFZGl0b3IgPSB0aGlzLl9hZGRFZGl0b3IuY29weSgpLndpdGhEaXNhYmxlZCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVGFibGVUaXRsZSh0aXRsZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlVGl0bGUgPSB0aXRsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhWYWxpZGF0b3IobmFtZTogc3RyaW5nLCBleHByZXNzaW9uOiBGaWVsZFZhbGlkYXRvckZuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RldGFpbHNFZGl0b3IuYWRkVmFsaWRhdGlvbihuYW1lLCBleHByZXNzaW9uKTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLmFkZFZhbGlkYXRpb24obmFtZSwgZXhwcmVzc2lvbik7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IuYWRkVmFsaWRhdGlvbihuYW1lLCBleHByZXNzaW9uKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtbkRlc2NyaXB0b3I8Q1Q+KGNvbHVtbjogQ29sdW1uRGVzY3JpcHRvcjxDVCwgVD4pOiBUYWJsZURlc2NyaXB0b3I8VD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkQ29sdW1uRGVzY3JpcHRvcjxDVD4oY29sdW1uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29sdW1uKHByb3BlcnR5OiBzdHJpbmcpOiBDb2x1bW5EZXNjcmlwdG9yPHN0cmluZywgVD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkQ29sdW1uKHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlQ29sdW1uKHByb3BlcnR5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFibGUucmVtb3ZlQ29sdW1uKHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmllbGQocHJvcGVydHk6IHN0cmluZywgZWRpdG9yVHlwZTogVGFibGV2aWV3RWRpdG9yVHlwZUVudW0pOiBBRmllbGREZXNjcmlwdG9yPGFueSwgVD4gfCBudWxsIHtcbiAgICAgICAgc3dpdGNoIChlZGl0b3JUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkVkaXQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRFZGl0b3IuZ2V0RmllbGQocHJvcGVydHkpO1xuICAgICAgICAgICAgY2FzZSBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5BZGQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FkZEVkaXRvci5nZXRGaWVsZChwcm9wZXJ0eSk7XG4gICAgICAgICAgICBjYXNlIFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkRldGFpbHM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RldGFpbHNFZGl0b3IuZ2V0RmllbGQocHJvcGVydHkpO1xuICAgICAgICAgICAgY2FzZSBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5Ob25lOlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUZpZWxkKHByb3BlcnR5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvci5yZW1vdmVGaWVsZChwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvci5yZW1vdmVGaWVsZChwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX2RldGFpbHNFZGl0b3IucmVtb3ZlRmllbGQocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRDb2x1bW5OdW1iZXIocHJvcGVydHk6IHN0cmluZywgZGlzcGxheUZvcm1hdD86IHN0cmluZyk6IENvbHVtbkRlc2NyaXB0b3I8bnVtYmVyLCBUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRDb2x1bW5OdW1iZXIocHJvcGVydHksIGRpc3BsYXlGb3JtYXQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRDb2x1bW5EYXRlKHByb3BlcnR5OiBzdHJpbmcsIGRpc3BsYXlGb3JtYXQ/OiBzdHJpbmcpOiBDb2x1bW5EZXNjcmlwdG9yPERhdGUsIFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZENvbHVtbkRhdGUocHJvcGVydHksIGRpc3BsYXlGb3JtYXQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRDb2x1bW5Cb29sZWFuKHByb3BlcnR5OiBzdHJpbmcsIHllcz86IHN0cmluZywgbm8/OiBzdHJpbmcsIGFzSWNvbiA9IGZhbHNlKTogQ29sdW1uRGVzY3JpcHRvcjxib29sZWFuLCBUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRDb2x1bW5Cb29sZWFuKHByb3BlcnR5LCB5ZXMsIG5vLCBhc0ljb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRDb2x1bW5FbnVtKHByb3BlcnR5OiBzdHJpbmcsIGVudW1UeXBlOiBFbnVtVHlwZSwgbmFtZUFzVmFsdWUgPSBmYWxzZSwgdGl0bGVQYXRoPzogc3RyaW5nIHwgbnVsbCk6IENvbHVtbkRlc2NyaXB0b3I8RW51bVR5cGUsIFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZENvbHVtbkVudW0ocHJvcGVydHksIGVudW1UeXBlLCBuYW1lQXNWYWx1ZSwgdGl0bGVQYXRoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29sdW1uQ3VzdG9tQ29tcG9uZW50KHByb3BlcnR5OiBzdHJpbmcsIGN1c3RvbUNvbXBvbmVudFR5cGU6IFR5cGU8SUNvbHVtblZhbHVlQ29tcG9uZW50PFQ+Pik6IENvbHVtbkRlc2NyaXB0b3I8YW55LCBUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRDb2x1bW5DdXN0b21Db21wb25lbnQocHJvcGVydHksIGN1c3RvbUNvbXBvbmVudFR5cGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVUYWJHcm91cChuYW1lOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RldGFpbHNFZGl0b3IuY3JlYXRlVGFiR3JvdXAobmFtZSwgdGl0bGUpO1xuICAgICAgICB0aGlzLl9hZGRFZGl0b3IuY3JlYXRlVGFiR3JvdXAobmFtZSwgdGl0bGUpO1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLmNyZWF0ZVRhYkdyb3VwKG5hbWUsIHRpdGxlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZUZpZWxkR3JvdXAobmFtZTogc3RyaW5nLCB0aXRsZT86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yLmNyZWF0ZUZpZWxkR3JvdXAobmFtZSwgdGl0bGUpO1xuICAgICAgICB0aGlzLl9hZGRFZGl0b3IuY3JlYXRlRmllbGRHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IuY3JlYXRlRmllbGRHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZERlc2NyaXB0b3I8RlQ+KGZpZWxkOiBBRmllbGREZXNjcmlwdG9yPEZULCBUPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZChwcm9wZXJ0eTogc3RyaW5nKTogRmllbGRJbnB1dERlc2NyaXB0b3I8VD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX2RldGFpbHNFZGl0b3IuYWRkRmllbGQocHJvcGVydHkpO1xuICAgICAgICB0aGlzLl9hZGRFZGl0b3IuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkTG9va3VwPEZUPihwcm9wZXJ0eTogc3RyaW5nLCBtb2RlbFR5cGU6IENsYXNzVHlwZTxGVD4pOiBGaWVsZExvb2t1cERlc2NyaXB0b3I8RlQsIFQ+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkTG9va3VwKHByb3BlcnR5LCBtb2RlbFR5cGUpO1xuICAgICAgICB0aGlzLl9hZGRFZGl0b3IuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkTG9va3VwRW51bShcbiAgICAgICAgcHJvcGVydHk6IHN0cmluZyxcbiAgICAgICAgZW51bVR5cGU6IEVudW1UeXBlLFxuICAgICAgICBvcHRpb25zPzogQXJyYXk8RW51bUNvbnN0YW50VHlwZT4sXG4gICAgICAgIG5hbWVBc1ZhbHVlID0gZmFsc2UsXG4gICAgICAgIG9wdGlvbnNUaXRsZVBhdGg/OiBzdHJpbmcgfCBudWxsXG4gICAgKTogRmllbGRMb29rdXBFbnVtRGVzY3JpcHRvcjxUPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZExvb2t1cEVudW0ocHJvcGVydHksIGVudW1UeXBlLCBvcHRpb25zLCBuYW1lQXNWYWx1ZSwgb3B0aW9uc1RpdGxlUGF0aCk7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55RWRpdG9yPEZUPihwcm9wZXJ0eTogc3RyaW5nLCB0YWJsZXZpZXdEZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9yPEZUPik6IEZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3I8RlQsIFQ+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkTWFueUVkaXRvcihwcm9wZXJ0eSwgdGFibGV2aWV3RGVzY3JpcHRvcik7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55VG9NYW55RWRpdG9yPEZUPihcbiAgICAgICAgcHJvcGVydHk6IHN0cmluZyxcbiAgICAgICAgbWFpblRhYmxlRGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9yPEZUPixcbiAgICAgICAgbG9va3VwVGFibGVEZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3I8RlQ+XG4gICAgKTogRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvcjxGVCwgVD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX2RldGFpbHNFZGl0b3IuYWRkRmllbGRNYW55VG9NYW55RWRpdG9yKHByb3BlcnR5LCBtYWluVGFibGVEZXNjcmlwdG9yLCBsb29rdXBUYWJsZURlc2NyaXB0b3IpO1xuICAgICAgICB0aGlzLl9hZGRFZGl0b3IuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHkoKTogVGFibGV2aWV3RGVzY3JpcHRvcjxUPiB7XG4gICAgICAgIGNvbnN0IHRhYmxldmlldyA9IG5ldyBUYWJsZXZpZXdEZXNjcmlwdG9yKHRoaXMuX21vZGVsLnR5cGUsIHRoaXMuX21vZGVsLmlkUHJvcGVydHlOYW1lLCB0aGlzLl9tb2RlbC50aXRsZVByb3BlcnR5TmFtZSk7XG4gICAgICAgIHRhYmxldmlldy5fdGFibGUgPSB0aGlzLl90YWJsZS5jb3B5KCk7XG4gICAgICAgIHRhYmxldmlldy5fZGV0YWlsc0VkaXRvciA9IHRoaXMuX2RldGFpbHNFZGl0b3IuY29weSgpO1xuICAgICAgICB0YWJsZXZpZXcuX2FkZEVkaXRvciA9IHRoaXMuX2FkZEVkaXRvci5jb3B5KCk7XG4gICAgICAgIHRhYmxldmlldy5fZWRpdEVkaXRvciA9IHRoaXMuX2VkaXRFZGl0b3IuY29weSgpO1xuICAgICAgICB0YWJsZXZpZXcuX3RhYmxlVGl0bGUgPSB0aGlzLl90YWJsZVRpdGxlO1xuICAgICAgICB0YWJsZXZpZXcuX2lzTG9jYWxpemVkID0gdGhpcy5faXNMb2NhbGl6ZWQ7XG4gICAgICAgIHRhYmxldmlldy5fbG9jYWxpemF0aW9uTG9jYWxlUHJvcGVydHkgPSB0aGlzLl9sb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eTtcbiAgICAgICAgdGFibGV2aWV3Ll9sb2NhbGl6YXRpb25Mb2NhbGl6YXRpb25Qcm9wZXJ0eSA9IHRoaXMuX2xvY2FsaXphdGlvbkxvY2FsaXphdGlvblByb3BlcnR5O1xuICAgICAgICByZXR1cm4gdGFibGV2aWV3O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNyZWF0ZXMgY29sdW1uIGFuZCBmaWVsZCB3aXRoIGN1c3RvbSB0eXBlLCBmb3IgZXhhbXBsZSBjdXJyZW5jeVxuICAgICAqIGlmIGZpZWxkIGV4aXN0cywgaXQgaXMgcmVwbGFjZWRcbiAgICAgKiBETyBOT1QgVVNFIFdJVEggVFlQRVMgV0hFUkUgQVJHUyBBUkUgUkVRVUlSRUQgLSBFUlJPUiBXSUxMIEJFIFRIUk9XTlxuICAgICAqIGZvciBlbnVtIHVzZSB3aXRoRW51bVR5cGVcbiAgICAgKiBmb3IgY3VzdG9tIGNsYXNzIHVzZSB3aXRoQ2xhc3NUeXBlXG4gICAgICogQHBhcmFtIHByb3BlcnR5IG5hbWUgb2YgZmllbGRcbiAgICAgKiBAcGFyYW0gY29sdW1uVHlwZSByZXF1aXJlZCBjb2x1bW4gdHlwZVxuICAgICAqIEBwYXJhbSBmaWVsZFR5cGUgb3B0aW9uYWwsIGlmIG5vdCBwcm92aWRlZCBpdCBpcyBjb252ZXJ0ZWQgZnJvbSBjb2x1bW4gdHlwZVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoTW9kaWZpZWRUeXBlKHByb3BlcnR5OiBzdHJpbmcsIGNvbHVtblR5cGU6IENvbHVtblR5cGVFbnVtLCBmaWVsZFR5cGU/OiBGaWVsZElucHV0VHlwZUVudW0sIGNvbHVtbkRpc3BsYXlUeXBlPzogQ29sdW1uRGlzcGxheVR5cGVFbnVtKTogdGhpcyB7XG4gICAgICAgIGlmIChjb2x1bW5UeXBlID09PSBDb2x1bW5UeXBlRW51bS5FbnVtKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTW5nRXJyb3JJbnRlcm5hbCgnRG8gbm90IHVzZSB3aXRoIHR5cGVzIHdoZXJlIGFyZ3MgYXJlIHJlcXVpcmVkJywgJ1RhYmxlVmlld0Rlc2NyaXB0b3IgZXJyb3InKS5jb25zb2xlRXJyb3IoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZURlZiA9IFRhYmxldmlld1V0aWwuZ2V0QXR0cmlidXRlRGVmTWFwKHRoaXMuX21vZGVsVHlwZSkuZmluZChhdHJpYnV0ZSA9PiBhdHJpYnV0ZS5uYW1lID09PSBwcm9wZXJ0eSk7XG5cbiAgICAgICAgaWYgKGF0dHJpYnV0ZURlZiAhPSBudWxsKSB7XG4gICAgICAgICAgICBmaWVsZFR5cGUgPz89IFRhYmxldmlld1V0aWwudG9GaWVsZElucHV0VHlwZUZyb21Db2x1bW5UeXBlKGNvbHVtblR5cGUsIGNvbHVtbkRpc3BsYXlUeXBlKTtcbiAgICAgICAgICAgIGF0dHJpYnV0ZURlZi5maWVsZFR5cGUgPSBmaWVsZFR5cGU7XG5cbiAgICAgICAgICAgIHRoaXMuX3RhYmxlLndpdGhDb2x1bW5Nb2RpZmllZFR5cGUocHJvcGVydHksIGNvbHVtblR5cGUsIGNvbHVtbkRpc3BsYXlUeXBlKTtcbiAgICAgICAgICAgIHRoaXMuX2VkaXRFZGl0b3Iud2l0aEZpZWxkTW9kaWZpZWRUeXBlKHByb3BlcnR5LCBmaWVsZFR5cGUpO1xuICAgICAgICAgICAgdGhpcy5fYWRkRWRpdG9yLndpdGhGaWVsZE1vZGlmaWVkVHlwZShwcm9wZXJ0eSwgZmllbGRUeXBlKTtcbiAgICAgICAgICAgIHRoaXMuX2RldGFpbHNFZGl0b3Iud2l0aEZpZWxkTW9kaWZpZWRUeXBlKHByb3BlcnR5LCBmaWVsZFR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBjb2x1bW4gd2l0aCBlbnVtIHR5cGVcbiAgICAgKiBpZiBmaWVsZHMgZXhpc3RzLCBpdCBpcyByZXBsYWNlZFxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBwcm9wZXJ0eSBuYW1lXG4gICAgICogQHBhcmFtIGVudW1UeXBlIHR5cGUgb2YgZW51bVxuICAgICAqIEBwYXJhbSBmaWVsZFR5cGUgdHlwZSBvZiBmaWVsZCwgb3B0aW9uYWwsIGRlZmF1bHQgaXMgVGV4dFxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoTW9kaWZpZWRFbnVtKHByb3BlcnR5OiBzdHJpbmcsIGVudW1UeXBlPzogRW51bVR5cGUsIGZpZWxkVHlwZT86IEZpZWxkSW5wdXRUeXBlRW51bSk6IHRoaXMge1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVEZWYgPSBUYWJsZXZpZXdVdGlsLmdldEF0dHJpYnV0ZURlZk1hcCh0aGlzLl9tb2RlbFR5cGUpLmZpbmQoYXRyaWJ1dGUgPT4gYXRyaWJ1dGUubmFtZSA9PT0gcHJvcGVydHkpO1xuXG4gICAgICAgIGlmIChhdHRyaWJ1dGVEZWYgIT0gbnVsbCkge1xuICAgICAgICAgICAgYXR0cmlidXRlRGVmLmZpZWxkVHlwZSA9IGZpZWxkVHlwZSA/PyBGaWVsZElucHV0VHlwZUVudW0uVGV4dDtcblxuICAgICAgICAgICAgdGhpcy5fdGFibGUud2l0aENvbHVtbk1vZGlmaWVkRW51bShwcm9wZXJ0eSwgZW51bVR5cGUpO1xuICAgICAgICAgICAgdGhpcy5fZWRpdEVkaXRvci53aXRoRmllbGRNb2RpZmllZEVudW0ocHJvcGVydHksIGVudW1UeXBlKTtcbiAgICAgICAgICAgIHRoaXMuX2RldGFpbHNFZGl0b3Iud2l0aEZpZWxkTW9kaWZpZWRFbnVtKHByb3BlcnR5LCBlbnVtVHlwZSk7XG4gICAgICAgICAgICB0aGlzLl9hZGRFZGl0b3Iud2l0aEZpZWxkTW9kaWZpZWRFbnVtKHByb3BlcnR5LCBlbnVtVHlwZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZW5lcmF0ZXMgY29sdW1uIHdpdGggY3VzdG9tIGNsYXNzIHR5cGVcbiAgICAgKiBmaWVsZCBpcyBnZW5lcmF0ZWQgb25seSBpZiBsb29rdXBQcm92aWRlciBpcyBwcm92aWRlZFxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBwcm9wZXJ0eSBuYW1lXG4gICAgICogQHBhcmFtIG1vZGVsVHlwZSBjbGFzcyB0eXBlIG9mIG9iamVjdFxuICAgICAqIEBwYXJhbSB0aXRsZVByb3BlcnR5XG4gICAgICogQHBhcmFtIGxvb2t1cFByb3ZpZGVyXG4gICAgICogQHBhcmFtIGl0ZW1zTGFiZWxQcm9wZXJ0eVxuICAgICAqIEBwYXJhbSBmaWx0ZXJQcm9wZXJ0eVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoTW9kaWZpZWRMb29rdXA8TVQ+KFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICBtb2RlbFR5cGU/OiBDbGFzc1R5cGU8TVQ+LFxuICAgICAgICBsb29rdXBQcm92aWRlcj86IElMb29rdXBEYXRhUHJvdmlkZXI8TVQsIGFueT4sXG4gICAgICAgIHRpdGxlUHJvcGVydHk/OiBzdHJpbmcsXG4gICAgICAgIGl0ZW1zTGFiZWxQcm9wZXJ0eT86IHN0cmluZyxcbiAgICAgICAgZmlsdGVyUHJvcGVydHk/OiBzdHJpbmdcbiAgICApOiB0aGlzIHtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlRGVmID0gVGFibGV2aWV3VXRpbC5nZXRBdHRyaWJ1dGVEZWZNYXAodGhpcy5fbW9kZWxUeXBlKS5maW5kKGF0cmlidXRlID0+IGF0cmlidXRlLm5hbWUgPT09IHByb3BlcnR5KTtcblxuICAgICAgICBpZiAoYXR0cmlidXRlRGVmICE9IG51bGwpIHtcbiAgICAgICAgICAgIG1vZGVsVHlwZSA/Pz0gYXR0cmlidXRlRGVmLmNsYXNzVHlwZSA/PyBPYmplY3RTZXJpYWxpemVyLmdldCgpLmZpbmRUeXBlKGF0dHJpYnV0ZURlZi50eXBlKTtcbiAgICAgICAgICAgIHRpdGxlUHJvcGVydHkgPz89IE1vZGVsVXRpbC5maW5kVGl0bGVBdHRyaWJ1dGUobW9kZWxUeXBlISkgPz8gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaXRlbXNMYWJlbFByb3BlcnR5ID8/PSB0aXRsZVByb3BlcnR5O1xuICAgICAgICAgICAgYXR0cmlidXRlRGVmLmNvbHVtblR5cGUgPSBDb2x1bW5UeXBlRW51bS5TdHJpbmc7XG4gICAgICAgICAgICBhdHRyaWJ1dGVEZWYuZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLlRleHQ7XG5cbiAgICAgICAgICAgIGlmIChsb29rdXBQcm92aWRlciAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFibGUud2l0aENvbHVtbk1vZGlmaWVkTG9va3VwKHByb3BlcnR5LCBsb29rdXBQcm92aWRlciwgaXRlbXNMYWJlbFByb3BlcnR5LCBmaWx0ZXJQcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWRkRWRpdG9yLndpdGhGaWVsZE1vZGlmaWVkTG9va3VwKHByb3BlcnR5LCBtb2RlbFR5cGUhLCBsb29rdXBQcm92aWRlciwgaXRlbXNMYWJlbFByb3BlcnR5KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yLndpdGhGaWVsZE1vZGlmaWVkTG9va3VwKHByb3BlcnR5LCBtb2RlbFR5cGUhLCBsb29rdXBQcm92aWRlciwgaXRlbXNMYWJlbFByb3BlcnR5KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLndpdGhGaWVsZE1vZGlmaWVkTG9va3VwKHByb3BlcnR5LCBtb2RlbFR5cGUhLCBsb29rdXBQcm92aWRlciwgaXRlbXNMYWJlbFByb3BlcnR5KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5fdGFibGUuZ2V0Q29sdW1uKHByb3BlcnR5KSA/PyB0aGlzLmFkZENvbHVtbihwcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgY29sdW1uLndpdGhPYmplY3RQcm9wZXJ0eShtb2RlbFR5cGUhLCB0aXRsZVByb3BlcnR5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2NhbGl6ZWQ8Uz4oXG4gICAgICAgIGxvY2FsaXphdGlvblByb3BlcnR5Pzogc3RyaW5nLFxuICAgICAgICBsb2NhbGVQcm9wZXJ0eT86IHN0cmluZyxcbiAgICAgICAgbG9jYWxpemF0aW9uQmVhblR5cGU/OiBDbGFzc1R5cGU8YW55PixcbiAgICAgICAgbG9jYWxlTG9va3VwPzogKHF1ZXJ5UGFyYW0/OiBNZWRpdXNRdWVyeVBhcmFtLCBzZXJ2aWNlPzogUywgc2VhcmNoPzogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPEFycmF5PHN0cmluZz4+XG4gICAgKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2xvY2FsaXphdGlvbkxvY2FsaXphdGlvblByb3BlcnR5ID0gbG9jYWxpemF0aW9uUHJvcGVydHk7XG4gICAgICAgIHRoaXMuX2xvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5ID0gbG9jYWxlUHJvcGVydHk7XG4gICAgICAgIHRoaXMuX2lzTG9jYWxpemVkID0gdHJ1ZTtcblxuICAgICAgICBpZiAobG9jYWxlUHJvcGVydHkpIHtcbiAgICAgICAgICAgIHRoaXMuX3RhYmxlLndpdGhMb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eShsb2NhbGVQcm9wZXJ0eSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRldGFpbHNFZGl0b3IubG9jYWxpemVkPFM+KGxvY2FsaXphdGlvblByb3BlcnR5LCBsb2NhbGVQcm9wZXJ0eSwgbG9jYWxpemF0aW9uQmVhblR5cGUsIGxvY2FsZUxvb2t1cCk7XG4gICAgICAgIHRoaXMuYWRkRWRpdG9yLmxvY2FsaXplZDxTPihsb2NhbGl6YXRpb25Qcm9wZXJ0eSwgbG9jYWxlUHJvcGVydHksIGxvY2FsaXphdGlvbkJlYW5UeXBlLCBsb2NhbGVMb29rdXApO1xuICAgICAgICB0aGlzLmVkaXRFZGl0b3IubG9jYWxpemVkPFM+KGxvY2FsaXphdGlvblByb3BlcnR5LCBsb2NhbGVQcm9wZXJ0eSwgbG9jYWxpemF0aW9uQmVhblR5cGUsIGxvY2FsZUxvb2t1cCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGFibGV2aWV3RHluYW1pY0Rlc2NyaXB0b3IgZXh0ZW5kcyBUYWJsZXZpZXdEZXNjcmlwdG9yPGFueT4ge1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSBfdGFibGU6IFRhYmxlRHluYW1pY0Rlc2NyaXB0b3I7XG5cbiAgICBjb25zdHJ1Y3RvcihpZFByb3BlcnR5Pzogc3RyaW5nLCB0aXRsZVByb3BlcnR5Pzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHt9IGFzIENsYXNzVHlwZTxhbnk+LCBpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fdGFibGUgPSBuZXcgVGFibGVEeW5hbWljRGVzY3JpcHRvcihpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5KTtcbiAgICAgICAgc3VwZXIuX3RhYmxlVGl0bGUgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCB0YWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHMgY3VzdG9tIHRhYmxlIGRlc2NyaXB0b3JcbiAgICAgKiBAcGFyYW0gZGVzY3JpcHRvclxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSB3aXRoVGFibGVEZXNjcmlwdG9yKGRlc2NyaXB0b3I6IFRhYmxlRHluYW1pY0Rlc2NyaXB0b3IpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUgPSBkZXNjcmlwdG9yO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXRzIHZpc2liaWxpdHkgaGlkZGVuIHN0YXRlIHRvIGNvbHVtbiB3aXRoIGdpdmVuIHByb3BlcnR5XG4gICAgICogZXF1YWxzIHRvIGJlIHJlbW92aW5nIGluIGF1dG8gYW5kIGJhc2UgdGFibGV2aWV3IGRlc2NyaXB0b3JcbiAgICAgKiAqIEBwYXJhbSBwcm9wZXJ0eSBjb2x1bW4ncyBwcm9wZXJ0eVxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSByZW1vdmVDb2x1bW4ocHJvcGVydHk6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZS5yZW1vdmVDb2x1bW4ocHJvcGVydHkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjcmVhdGVzIGRlcHAgY29weSBvZiB0YWJsZXZpZXcgb2JqZWN0IGFuZCBpdHMgY2hpbGRyZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29weSgpOiBUYWJsZXZpZXdEeW5hbWljRGVzY3JpcHRvciB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgVGFibGV2aWV3RHluYW1pY0Rlc2NyaXB0b3IodGhpcy5tb2RlbC5pZFByb3BlcnR5TmFtZSwgdGhpcy5tb2RlbC50aXRsZVByb3BlcnR5TmFtZSk7XG4gICAgICAgIGRlc2NyaXB0b3IuX3RhYmxlID0gdGhpcy5fdGFibGUuY29weSgpO1xuICAgICAgICBkZXNjcmlwdG9yLl90YWJsZVRpdGxlID0gdGhpcy5fdGFibGVUaXRsZTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuIl19
@@ -48,6 +48,7 @@ import { MngFormlyFieldActionComponent, MngFormlyFieldAutocompleteComponent, Mng
48
48
  import { MngFormlyFieldNoLabelWrapperComponent, MngFormlyFieldWrapperComponent } from './components/form/formly/wrappers';
49
49
  import { MngBreadcrumbComponent, MngFooterComponent, MngMainLayoutComponent, MngMenuComponent, MngMenuItemComponent, MngTopbarComponent, MngVersionComponent } from './components/layout';
50
50
  import { MngTopbarUserComponent } from './components/layout/topbar-user.component';
51
+ import { MngErrorPageComponent, MngNotFoundPageComponent } from './components/pages';
51
52
  import { MngTableColumnFilterComponent, MngTableColumnValueComponent, MngTableComponent, MngTableviewComponent, MngTableviewRouteComponent } from './components/tableview';
52
53
  import { MngComponentDirective, MngTemplateDirective } from './directives';
53
54
  import { JsonPathPipe, MngBooleanPipe, MngClassMapPipe, MngEnumPipe, MngEnumerateAsyncPipe, MngEnumeratePipe, MngGetterPipe, MngI18nPropertyPipe, MngLocaleDefaultRowClassPipe, MngParametrizePipe, MngTemplatePipe } from './pipes';
@@ -149,7 +150,10 @@ const standalone = [
149
150
  MngFormEditorComponent,
150
151
  MngActionComponent,
151
152
  MngActionEditorComponent,
152
- MngDataLanguageDropdownComponent
153
+ MngDataLanguageDropdownComponent,
154
+ // pages
155
+ MngErrorPageComponent,
156
+ MngNotFoundPageComponent
153
157
  ];
154
158
  export class MngCommonsModule {
155
159
  static forRoot(config) {
@@ -254,7 +258,10 @@ MngCommonsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
254
258
  MngFormEditorComponent,
255
259
  MngActionComponent,
256
260
  MngActionEditorComponent,
257
- MngDataLanguageDropdownComponent], exports: [AutoCompleteModule,
261
+ MngDataLanguageDropdownComponent,
262
+ // pages
263
+ MngErrorPageComponent,
264
+ MngNotFoundPageComponent], exports: [AutoCompleteModule,
258
265
  BreadcrumbModule,
259
266
  ButtonModule,
260
267
  CalendarModule,
@@ -343,7 +350,10 @@ MngCommonsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
343
350
  MngFormEditorComponent,
344
351
  MngActionComponent,
345
352
  MngActionEditorComponent,
346
- MngDataLanguageDropdownComponent] });
353
+ MngDataLanguageDropdownComponent,
354
+ // pages
355
+ MngErrorPageComponent,
356
+ MngNotFoundPageComponent] });
347
357
  MngCommonsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: MngCommonsModule, imports: [
348
358
  // angular modules
349
359
  CommonModule,
@@ -392,7 +402,10 @@ MngCommonsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versio
392
402
  MngFormEditorComponent,
393
403
  MngActionComponent,
394
404
  MngActionEditorComponent,
395
- MngDataLanguageDropdownComponent, AutoCompleteModule,
405
+ MngDataLanguageDropdownComponent,
406
+ // pages
407
+ MngErrorPageComponent,
408
+ MngNotFoundPageComponent, AutoCompleteModule,
396
409
  BreadcrumbModule,
397
410
  ButtonModule,
398
411
  CalendarModule,
@@ -450,4 +463,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
450
463
  exports: [...primeNgModules, ...standalone]
451
464
  }]
452
465
  }] });
453
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW5nLWNvbW1vbnMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9tbmctY29tbW9ucy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBc0IsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLGNBQWMsRUFBQyxN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QkFBa0I7UUFDbEIsd0JBQXdCO1FBQ3hCLGdDQUFnQyxFQXJHaEMsa0JBQWtCO1FBQ2xCLGdCQUFnQjtRQUNoQixZQUFZO1FBQ1osY0FBYztRQUNkLFVBQVU7UUFDVixjQUFjO1FBQ2QsVUFBVTtRQUNWLG1CQUFtQjtRQUNuQixrQkFBa0I7UUFDbEIsWUFBWTtRQUNaLG1CQUFtQjtRQUNuQixjQUFjO1FBQ2QsZ0JBQWdCO1FBQ2hCLGlCQUFpQjtRQUNqQixlQUFlO1FBQ2YsaUJBQWlCO1FBQ2pCLGVBQWU7UUFDZixtQkFBbUI7UUFDbkIsZUFBZTtRQUNmLGlCQUFpQjtRQUNqQixZQUFZO1FBQ1osa0JBQWtCO1FBQ2xCLGlCQUFpQjtRQUNqQixXQUFXO1FBQ1gsU0FBUztRQUNULFdBQVc7UUFDWCxrQkFBa0I7UUFDbEIsYUFBYTtRQUNiLGFBQWE7UUFDYixjQUFjO1FBQ2QscUJBQXFCO1FBQ3JCLGFBQWE7UUFDYixjQUFjO1FBQ2QsaUJBQWlCO1FBQ2pCLGNBQWM7UUFDZCxlQUFlO1FBQ2YsV0FBVzsyRkF3RkYsZ0JBQWdCO2tCQXBCNUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsa0JBQWtCO3dCQUNsQixZQUFZO3dCQUNaLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBRW5CLGdCQUFnQjt3QkFDaEIsZUFBZSxDQUFDLFFBQVEsQ0FBQzs0QkFDckIsTUFBTSxFQUFFLElBQUk7eUJBQ2YsQ0FBQzt3QkFDRixZQUFZLENBQUMsUUFBUSxFQUFFO3dCQUN2QixHQUFHLGNBQWM7d0JBRWpCLHdCQUF3Qjt3QkFDeEIsR0FBRyxVQUFVO3FCQUNoQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxHQUFHLGNBQWMsRUFBRSxHQUFHLFVBQVUsQ0FBQztpQkFDOUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7SHR0cENsaWVudE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Um91dGVyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge0Zvcm1seU1vZHVsZX0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0F1dG9Db21wbGV0ZU1vZHVsZX0gZnJvbSAncHJpbWVuZy9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHtCcmVhZGNydW1iTW9kdWxlfSBmcm9tICdwcmltZW5nL2JyZWFkY3J1bWInO1xuaW1wb3J0IHtCdXR0b25Nb2R1bGV9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7Q2FsZW5kYXJNb2R1bGV9IGZyb20gJ3ByaW1lbmcvY2FsZW5kYXInO1xuaW1wb3J0IHtDYXJkTW9kdWxlfSBmcm9tICdwcmltZW5nL2NhcmQnO1xuaW1wb3J0IHtDaGVja2JveE1vZHVsZX0gZnJvbSAncHJpbWVuZy9jaGVja2JveCc7XG5pbXBvcnQge0NoaXBNb2R1bGV9IGZyb20gJ3ByaW1lbmcvY2hpcCc7XG5pbXBvcnQge0NvbmZpcm1EaWFsb2dNb2R1bGV9IGZyb20gJ3ByaW1lbmcvY29uZmlybWRpYWxvZyc7XG5pbXBvcnQge0NvbmZpcm1Qb3B1cE1vZHVsZX0gZnJvbSAncHJpbWVuZy9jb25maXJtcG9wdXAnO1xuaW1wb3J0IHtEaWFsb2dNb2R1bGV9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcbmltcG9ydCB7RHJvcGRvd25Nb2R1bGV9IGZyb20gJ3ByaW1lbmcvZHJvcGRvd24nO1xuaW1wb3J0IHtEeW5hbWljRGlhbG9nTW9kdWxlfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xuaW1wb3J0IHtGaWVsZHNldE1vZHVsZX0gZnJvbSAncHJpbWVuZy9maWVsZHNldCc7XG5pbXBvcnQge0ZpbGVVcGxvYWRNb2R1bGV9IGZyb20gJ3ByaW1lbmcvZmlsZXVwbG9hZCc7XG5pbXBvcnQge0ltYWdlTW9kdWxlfSBmcm9tICdwcmltZW5nL2ltYWdlJztcbmltcG9ydCB7SW5wdXRNYXNrTW9kdWxlfSBmcm9tICdwcmltZW5nL2lucHV0bWFzayc7XG5pbXBvcnQge0lucHV0TnVtYmVyTW9kdWxlfSBmcm9tICdwcmltZW5nL2lucHV0bnVtYmVyJztcbmltcG9ydCB7SW5wdXRTd2l0Y2hNb2R1bGV9IGZyb20gJ3ByaW1lbmcvaW5wdXRzd2l0Y2gnO1xuaW1wb3J0IHtJbnB1dFRleHRNb2R1bGV9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0JztcbmltcG9ydCB7SW5wdXRUZXh0YXJlYU1vZHVsZX0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHRhcmVhJztcbmltcG9ydCB7TWVzc2FnZXNNb2R1bGV9IGZyb20gJ3ByaW1lbmcvbWVzc2FnZXMnO1xuaW1wb3J0IHtNdWx0aVNlbGVjdE1vZHVsZX0gZnJvbSAncHJpbWVuZy9tdWx0aXNlbGVjdCc7XG5pbXBvcnQge1BhZ2luYXRvck1vZHVsZX0gZnJvbSAncHJpbWVuZy9wYWdpbmF0b3InO1xuaW1wb3J0IHtQcm9ncmVzc1NwaW5uZXJNb2R1bGV9IGZyb20gJ3ByaW1lbmcvcHJvZ3Jlc3NzcGlubmVyJztcbmltcG9ydCB7UmFkaW9CdXR0b25Nb2R1bGV9IGZyb20gJ3ByaW1lbmcvcmFkaW9idXR0b24nO1xuaW1wb3J0IHtSaXBwbGVNb2R1bGV9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcbmltcG9ydCB7U2VsZWN0QnV0dG9uTW9kdWxlfSBmcm9tICdwcmltZW5nL3NlbGVjdGJ1dHRvbic7XG5pbXBvcnQge1NrZWxldG9uTW9kdWxlfSBmcm9tICdwcmltZW5nL3NrZWxldG9uJztcbmltcG9ydCB7U2xpZGVNZW51TW9kdWxlfSBmcm9tICdwcmltZW5nL3NsaWRlbWVudSc7XG5pbXBvcnQge1NwbGl0QnV0dG9uTW9kdWxlfSBmcm9tICdwcmltZW5nL3NwbGl0YnV0dG9uJztcbmltcG9ydCB7VGFibGVNb2R1bGV9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xuaW1wb3J0IHtUYWJWaWV3TW9kdWxlfSBmcm9tICdwcmltZW5nL3RhYnZpZXcnO1xuaW1wb3J0IHtUYWdNb2R1bGV9IGZyb20gJ3ByaW1lbmcvdGFnJztcbmltcG9ydCB7VG9hc3RNb2R1bGV9IGZyb20gJ3ByaW1lbmcvdG9hc3QnO1xuaW1wb3J0IHtUb2dnbGVCdXR0b25Nb2R1bGV9IGZyb20gJ3ByaW1lbmcvdG9nZ2xlYnV0dG9uJztcbmltcG9ydCB7VG9vbGJhck1vZHVsZX0gZnJvbSAncHJpbWVuZy90b29sYmFyJztcbmltcG9ydCB7VG9vbHRpcE1vZHVsZX0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcblxuaW1wb3J0IHtNbmdBY3Rpb25Db21wb25lbnQsIE1uZ0FjdGlvbkVkaXRvckNvbXBvbmVudCwgTW5nQWN0aW9uUm91dGVDb21wb25lbnQsIE1uZ0RhdGFMYW5ndWFnZURyb3Bkb3duQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvYWN0aW9uJztcbmltcG9ydCB7TW5nQXV0b2NvbXBsZXRlQ29tcG9uZW50LCBNbmdEYXRlUmFuZ2VDb21wb25lbnQsIE1uZ0Ryb3Bkb3duQ29tcG9uZW50LCBNbmdGb3JtRWRpdG9yQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybSc7XG5pbXBvcnQge1xuICAgIE1uZ0Zvcm1seUZpZWxkQWN0aW9uQ29tcG9uZW50LFxuICAgIE1uZ0Zvcm1seUZpZWxkQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxuICAgIE1uZ0Zvcm1seUZpZWxkRHJvcGRvd25Db21wb25lbnQsXG4gICAgTW5nRm9ybWx5RmllbGRGaWVsZHNldENvbXBvbmVudCxcbiAgICBNbmdGb3JtbHlGaWVsZElucHV0Q29tcG9uZW50LFxuICAgIE1uZ0Zvcm1seUZpZWxkTGFiZWxDb21wb25lbnQsXG4gICAgTW5nRm9ybWx5RmllbGRMb29rdXBEaWFsb2dDb21wb25lbnQsXG4gICAgTW5nRm9ybWx5RmllbGRUYWJsZURpYWxvZ0Zvcm1Db21wb25lbnQsXG4gICAgTW5nRm9ybWx5RmllbGRUYWJsZURpYWxvZ011bHRpc2VsZWN0Q29tcG9uZW50LFxuICAgIE1uZ0Zvcm1seUZpZWxkVGFic0NvbXBvbmVudFxufSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS9mb3JtbHkvZmllbGRzJztcbmltcG9ydCB7TW5nRm9ybWx5RmllbGROb0xhYmVsV3JhcHBlckNvbXBvbmVudCwgTW5nRm9ybWx5RmllbGRXcmFwcGVyQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS9mb3JtbHkvd3JhcHBlcnMnO1xuaW1wb3J0IHtcbiAgICBNbmdCcmVhZGNydW1iQ29tcG9uZW50LFxuICAgIE1uZ0Zvb3RlckNvbXBvbmVudCxcbiAgICBNbmdNYWluTGF5b3V0Q29tcG9uZW50LFxuICAgIE1uZ01lbnVDb21wb25lbnQsXG4gICAgTW5nTWVudUl0ZW1Db21wb25lbnQsXG4gICAgTW5nVG9wYmFyQ29tcG9uZW50LFxuICAgIE1uZ1ZlcnNpb25Db21wb25lbnRcbn0gZnJvbSAnLi9jb21wb25lbnRzL2xheW91dCc7XG5pbXBvcnQge01uZ1RvcGJhclVzZXJDb21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50cy9sYXlvdXQvdG9wYmFyLXVzZXIuY29tcG9uZW50JztcbmltcG9ydCB7TW5nVGFibGVDb2x1bW5GaWx0ZXJDb21wb25lbnQsIE1uZ1RhYmxlQ29sdW1uVmFsdWVDb21wb25lbnQsIE1uZ1RhYmxlQ29tcG9uZW50LCBNbmdUYWJsZXZpZXdDb21wb25lbnQsIE1uZ1RhYmxldmlld1JvdXRlQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGV2aWV3JztcbmltcG9ydCB7TW5nQ29tcG9uZW50RGlyZWN0aXZlLCBNbmdUZW1wbGF0ZURpcmVjdGl2ZX0gZnJvbSAnLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7TW5nTW9kdWxlQ29uZmlnfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQge1xuICAgIEpzb25QYXRoUGlwZSxcbiAgICBNbmdCb29sZWFuUGlwZSxcbiAgICBNbmdDbGFzc01hcFBpcGUsXG4gICAgTW5nRW51bVBpcGUsXG4gICAgTW5nRW51bWVyYXRlQXN5bmNQaXBlLFxuICAgIE1uZ0VudW1lcmF0ZVBpcGUsXG4gICAgTW5nR2V0dGVyUGlwZSxcbiAgICBNbmdJMThuUHJvcGVydHlQaXBlLFxuICAgIE1uZ0xvY2FsZURlZmF1bHRSb3dDbGFzc1BpcGUsXG4gICAgTW5nUGFyYW1ldHJpemVQaXBlLFxuICAgIE1uZ1RlbXBsYXRlUGlwZVxufSBmcm9tICcuL3BpcGVzJztcbmltcG9ydCB7cHJvdmlkZU1uZ0NvbW1vbnN9IGZyb20gJy4vcHJvdmlkZS1jb21tb25zJztcblxuLy8gcHJpbWVuZyBtb2R1bGVzXG5leHBvcnQgY29uc3QgcHJpbWVOZ01vZHVsZXMgPSBbXG4gICAgQXV0b0NvbXBsZXRlTW9kdWxlLFxuICAgIEJyZWFkY3J1bWJNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIENhbGVuZGFyTW9kdWxlLFxuICAgIENhcmRNb2R1bGUsXG4gICAgQ2hlY2tib3hNb2R1bGUsXG4gICAgQ2hpcE1vZHVsZSxcbiAgICBDb25maXJtRGlhbG9nTW9kdWxlLFxuICAgIENvbmZpcm1Qb3B1cE1vZHVsZSxcbiAgICBEaWFsb2dNb2R1bGUsXG4gICAgRHluYW1pY0RpYWxvZ01vZHVsZSxcbiAgICBEcm9wZG93bk1vZHVsZSxcbiAgICBGaWxlVXBsb2FkTW9kdWxlLFxuICAgIElucHV0TnVtYmVyTW9kdWxlLFxuICAgIElucHV0TWFza01vZHVsZSxcbiAgICBJbnB1dFN3aXRjaE1vZHVsZSxcbiAgICBJbnB1dFRleHRNb2R1bGUsXG4gICAgSW5wdXRUZXh0YXJlYU1vZHVsZSxcbiAgICBQYWdpbmF0b3JNb2R1bGUsXG4gICAgUmFkaW9CdXR0b25Nb2R1bGUsXG4gICAgUmlwcGxlTW9kdWxlLFxuICAgIFNlbGVjdEJ1dHRvbk1vZHVsZSxcbiAgICBTcGxpdEJ1dHRvbk1vZHVsZSxcbiAgICBUYWJsZU1vZHVsZSxcbiAgICBUYWdNb2R1bGUsXG4gICAgVG9hc3RNb2R1bGUsXG4gICAgVG9nZ2xlQnV0dG9uTW9kdWxlLFxuICAgIFRvb2xiYXJNb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBNZXNzYWdlc01vZHVsZSxcbiAgICBQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gICAgVGFiVmlld01vZHVsZSxcbiAgICBGaWVsZHNldE1vZHVsZSxcbiAgICBNdWx0aVNlbGVjdE1vZHVsZSxcbiAgICBTa2VsZXRvbk1vZHVsZSxcbiAgICBTbGlkZU1lbnVNb2R1bGUsXG4gICAgSW1hZ2VNb2R1bGVcbl07XG5cbmNvbnN0IHN0YW5kYWxvbmUgPSBbXG4gICAgTW5nQWN0aW9uUm91dGVDb21wb25lbnQsXG5cbiAgICAvLyBkaXJlY3RpdmVzXG4gICAgTW5nQ29tcG9uZW50RGlyZWN0aXZlLFxuICAgIE1uZ1RlbXBsYXRlRGlyZWN0aXZlLFxuXG4gICAgLy8gcGlwZXNcbiAgICBKc29uUGF0aFBpcGUsXG4gICAgTW5nRW51bVBpcGUsXG4gICAgTW5nQm9vbGVhblBpcGUsXG4gICAgTW5nSTE4blByb3BlcnR5UGlwZSxcbiAgICBNbmdQYXJhbWV0cml6ZVBpcGUsXG4gICAgTW5nR2V0dGVyUGlwZSxcbiAgICBNbmdUZW1wbGF0ZVBpcGUsXG4gICAgTW5nQ2xhc3NNYXBQaXBlLFxuICAgIE1uZ0VudW1lcmF0ZVBpcGUsXG4gICAgTW5nRW51bWVyYXRlQXN5bmNQaXBlLFxuICAgIE1uZ0xvY2FsZURlZmF1bHRSb3dDbGFzc1BpcGUsXG5cbiAgICAvLyBsYXlvdXQgY29tcG9uZW50c1xuICAgIE1uZ0JyZWFkY3J1bWJDb21wb25lbnQsXG4gICAgTW5nRm9vdGVyQ29tcG9uZW50LFxuICAgIE1uZ01haW5MYXlvdXRDb21wb25lbnQsXG4gICAgTW5nTWVudUNvbXBvbmVudCxcbiAgICBNbmdNZW51SXRlbUNvbXBvbmVudCxcbiAgICBNbmdUb3BiYXJDb21wb25lbnQsXG4gICAgTW5nVG9wYmFyVXNlckNvbXBvbmVudCxcbiAgICBNbmdWZXJzaW9uQ29tcG9uZW50LFxuXG4gICAgLy8gbW5nIGZpZWxkc1xuICAgIE1uZ0F1dG9jb21wbGV0ZUNvbXBvbmVudCxcbiAgICBNbmdEcm9wZG93bkNvbXBvbmVudCxcbiAgICBNbmdEYXRlUmFuZ2VDb21wb25lbnQsXG5cbiAgICAvLyBmb3JtbHkgd3JhcHBlcnNcbiAgICBNbmdGb3JtbHlGaWVsZFdyYXBwZXJDb21wb25lbnQsXG4gICAgTW5nRm9ybWx5RmllbGROb0xhYmVsV3JhcHBlckNvbXBvbmVudCxcblxuICAgIC8vIGZvcm1seSBmaWVsZHNcbiAgICBNbmdGb3JtbHlGaWVsZElucHV0Q29tcG9uZW50LFxuICAgIE1uZ0Zvcm1seUZpZWxkTGFiZWxDb21wb25lbnQsXG4gICAgTW5nRm9ybWx5RmllbGREcm9wZG93bkNvbXBvbmVudCxcbiAgICBNbmdGb3JtbHlGaWVsZEF1dG9jb21wbGV0ZUNvbXBvbmVudCxcbiAgICBNbmdGb3JtbHlGaWVsZExvb2t1cERpYWxvZ0NvbXBvbmVudCxcbiAgICBNbmdGb3JtbHlGaWVsZFRhYmxlRGlhbG9nTXVsdGlzZWxlY3RDb21wb25lbnQsXG4gICAgTW5nRm9ybWx5RmllbGRUYWJsZURpYWxvZ0Zvcm1Db21wb25lbnQsXG4gICAgTW5nRm9ybWx5RmllbGRUYWJzQ29tcG9uZW50LFxuICAgIE1uZ0Zvcm1seUZpZWxkRmllbGRzZXRDb21wb25lbnQsXG4gICAgTW5nRm9ybWx5RmllbGRBY3Rpb25Db21wb25lbnQsXG5cbiAgICAvLyB0YWJsZSBjb21wb25lbnRzXG4gICAgTW5nVGFibGVDb21wb25lbnQsXG4gICAgTW5nVGFibGV2aWV3Q29tcG9uZW50LFxuICAgIE1uZ1RhYmxlQ29sdW1uVmFsdWVDb21wb25lbnQsXG4gICAgTW5nVGFibGVDb2x1bW5GaWx0ZXJDb21wb25lbnQsXG4gICAgTW5nVGFibGV2aWV3Um91dGVDb21wb25lbnQsXG5cbiAgICAvLyBlZGl0b3IgY29tcG9uZW50c1xuICAgIE1uZ0Zvcm1FZGl0b3JDb21wb25lbnQsXG4gICAgTW5nQWN0aW9uQ29tcG9uZW50LFxuICAgIE1uZ0FjdGlvbkVkaXRvckNvbXBvbmVudCxcbiAgICBNbmdEYXRhTGFuZ3VhZ2VEcm9wZG93bkNvbXBvbmVudFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIC8vIGFuZ3VsYXIgbW9kdWxlc1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFJvdXRlck1vZHVsZSxcbiAgICAgICAgSHR0cENsaWVudE1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcblxuICAgICAgICAvLyBvdGhlciBtb2R1bGVzXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JDaGlsZCh7XG4gICAgICAgICAgICBleHRlbmQ6IHRydWVcbiAgICAgICAgfSksXG4gICAgICAgIEZvcm1seU1vZHVsZS5mb3JDaGlsZCgpLFxuICAgICAgICAuLi5wcmltZU5nTW9kdWxlcyxcblxuICAgICAgICAvLyBzdGFuZGFsb25lIGNvbXBvbmVudHNcbiAgICAgICAgLi4uc3RhbmRhbG9uZVxuICAgIF0sXG4gICAgZXhwb3J0czogWy4uLnByaW1lTmdNb2R1bGVzLCAuLi5zdGFuZGFsb25lXVxufSlcbmV4cG9ydCBjbGFzcyBNbmdDb21tb25zTW9kdWxlIHtcbiAgICBzdGF0aWMgZm9yUm9vdChjb25maWc6IE1uZ01vZHVsZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8TW5nQ29tbW9uc01vZHVsZT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IE1uZ0NvbW1vbnNNb2R1bGUsXG4gICAgICAgICAgICBwcm92aWRlcnM6IHByb3ZpZGVNbmdDb21tb25zKGNvbmZpZylcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
466
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW5nLWNvbW1vbnMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9tbmctY29tbW9ucy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBc0IsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLGNBQWMsRUFBQyxN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QUFHLFVBQVU7cUJBQ2hCO29CQUNELE9BQU8sRUFBRSxDQUFDLEdBQUcsY0FBYyxFQUFFLEdBQUcsVUFBVSxDQUFDO2lCQUM5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtIdHRwQ2xpZW50TW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge01vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtSb3V0ZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7Rm9ybWx5TW9kdWxlfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7QXV0b0NvbXBsZXRlTW9kdWxlfSBmcm9tICdwcmltZW5nL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQge0JyZWFkY3J1bWJNb2R1bGV9IGZyb20gJ3ByaW1lbmcvYnJlYWRjcnVtYic7XG5pbXBvcnQge0J1dHRvbk1vZHVsZX0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHtDYWxlbmRhck1vZHVsZX0gZnJvbSAncHJpbWVuZy9jYWxlbmRhcic7XG5pbXBvcnQge0NhcmRNb2R1bGV9IGZyb20gJ3ByaW1lbmcvY2FyZCc7XG5pbXBvcnQge0NoZWNrYm94TW9kdWxlfSBmcm9tICdwcmltZW5nL2NoZWNrYm94JztcbmltcG9ydCB7Q2hpcE1vZHVsZX0gZnJvbSAncHJpbWVuZy9jaGlwJztcbmltcG9ydCB7Q29uZmlybURpYWxvZ01vZHVsZX0gZnJvbSAncHJpbWVuZy9jb25maXJtZGlhbG9nJztcbmltcG9ydCB7Q29uZmlybVBvcHVwTW9kdWxlfSBmcm9tICdwcmltZW5nL2NvbmZpcm1wb3B1cCc7XG5pbXBvcnQge0RpYWxvZ01vZHVsZX0gZnJvbSAncHJpbWVuZy9kaWFsb2cnO1xuaW1wb3J0IHtEcm9wZG93bk1vZHVsZX0gZnJvbSAncHJpbWVuZy9kcm9wZG93bic7XG5pbXBvcnQge0R5bmFtaWNEaWFsb2dNb2R1bGV9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5pbXBvcnQge0ZpZWxkc2V0TW9kdWxlfSBmcm9tICdwcmltZW5nL2ZpZWxkc2V0JztcbmltcG9ydCB7RmlsZVVwbG9hZE1vZHVsZX0gZnJvbSAncHJpbWVuZy9maWxldXBsb2FkJztcbmltcG9ydCB7SW1hZ2VNb2R1bGV9IGZyb20gJ3ByaW1lbmcvaW1hZ2UnO1xuaW1wb3J0IHtJbnB1dE1hc2tNb2R1bGV9IGZyb20gJ3ByaW1lbmcvaW5wdXRtYXNrJztcbmltcG9ydCB7SW5wdXROdW1iZXJNb2R1bGV9IGZyb20gJ3ByaW1lbmcvaW5wdXRudW1iZXInO1xuaW1wb3J0IHtJbnB1dFN3aXRjaE1vZHVsZX0gZnJvbSAncHJpbWVuZy9pbnB1dHN3aXRjaCc7XG5pbXBvcnQge0lucHV0VGV4dE1vZHVsZX0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuaW1wb3J0IHtJbnB1dFRleHRhcmVhTW9kdWxlfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dGFyZWEnO1xuaW1wb3J0IHtNZXNzYWdlc01vZHVsZX0gZnJvbSAncHJpbWVuZy9tZXNzYWdlcyc7XG5pbXBvcnQge011bHRpU2VsZWN0TW9kdWxlfSBmcm9tICdwcmltZW5nL211bHRpc2VsZWN0JztcbmltcG9ydCB7UGFnaW5hdG9yTW9kdWxlfSBmcm9tICdwcmltZW5nL3BhZ2luYXRvcic7XG5pbXBvcnQge1Byb2dyZXNzU3Bpbm5lck1vZHVsZX0gZnJvbSAncHJpbWVuZy9wcm9ncmVzc3NwaW5uZXInO1xuaW1wb3J0IHtSYWRpb0J1dHRvbk1vZHVsZX0gZnJvbSAncHJpbWVuZy9yYWRpb2J1dHRvbic7XG5pbXBvcnQge1JpcHBsZU1vZHVsZX0gZnJvbSAncHJpbWVuZy9yaXBwbGUnO1xuaW1wb3J0IHtTZWxlY3RCdXR0b25Nb2R1bGV9IGZyb20gJ3ByaW1lbmcvc2VsZWN0YnV0dG9uJztcbmltcG9ydCB7U2tlbGV0b25Nb2R1bGV9IGZyb20gJ3ByaW1lbmcvc2tlbGV0b24nO1xuaW1wb3J0IHtTbGlkZU1lbnVNb2R1bGV9IGZyb20gJ3ByaW1lbmcvc2xpZGVtZW51JztcbmltcG9ydCB7U3BsaXRCdXR0b25Nb2R1bGV9IGZyb20gJ3ByaW1lbmcvc3BsaXRidXR0b24nO1xuaW1wb3J0IHtUYWJsZU1vZHVsZX0gZnJvbSAncHJpbWVuZy90YWJsZSc7XG5pbXBvcnQge1RhYlZpZXdNb2R1bGV9IGZyb20gJ3ByaW1lbmcvdGFidmlldyc7XG5pbXBvcnQge1RhZ01vZHVsZX0gZnJvbSAncHJpbWVuZy90YWcnO1xuaW1wb3J0IHtUb2FzdE1vZHVsZX0gZnJvbSAncHJpbWVuZy90b2FzdCc7XG5pbXBvcnQge1RvZ2dsZUJ1dHRvbk1vZHVsZX0gZnJvbSAncHJpbWVuZy90b2dnbGVidXR0b24nO1xuaW1wb3J0IHtUb29sYmFyTW9kdWxlfSBmcm9tICdwcmltZW5nL3Rvb2xiYXInO1xuaW1wb3J0IHtUb29sdGlwTW9kdWxlfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xuXG5pbXBvcnQge01uZ0FjdGlvbkNvbXBvbmVudCwgTW5nQWN0aW9uRWRpdG9yQ29tcG9uZW50LCBNbmdBY3Rpb25Sb3V0ZUNvbXBvbmVudCwgTW5nRGF0YUxhbmd1YWdlRHJvcGRvd25Db21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50cy9hY3Rpb24nO1xuaW1wb3J0IHtNbmdBdXRvY29tcGxldGVDb21wb25lbnQsIE1uZ0RhdGVSYW5nZUNvbXBvbmVudCwgTW5nRHJvcGRvd25Db21wb25lbnQsIE1uZ0Zvcm1FZGl0b3JDb21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCB7XG4gICAgTW5nRm9ybWx5RmllbGRBY3Rpb25Db21wb25lbnQsXG4gICAgTW5nRm9ybWx5RmllbGRBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgTW5nRm9ybWx5RmllbGREcm9wZG93bkNvbXBvbmVudCxcbiAgICBNbmdGb3JtbHlGaWVsZEZpZWxkc2V0Q29tcG9uZW50LFxuICAgIE1uZ0Zvcm1seUZpZWxkSW5wdXRDb21wb25lbnQsXG4gICAgTW5nRm9ybWx5RmllbGRMYWJlbENvbXBvbmVudCxcbiAgICBNbmdGb3JtbHlGaWVsZExvb2t1cERpYWxvZ0NvbXBvbmVudCxcbiAgICBNbmdGb3JtbHlGaWVsZFRhYmxlRGlhbG9nRm9ybUNvbXBvbmVudCxcbiAgICBNbmdGb3JtbHlGaWVsZFRhYmxlRGlhbG9nTXVsdGlzZWxlY3RDb21wb25lbnQsXG4gICAgTW5nRm9ybWx5RmllbGRUYWJzQ29tcG9uZW50XG59IGZyb20gJy4vY29tcG9uZW50cy9mb3JtL2Zvcm1seS9maWVsZHMnO1xuaW1wb3J0IHtNbmdGb3JtbHlGaWVsZE5vTGFiZWxXcmFwcGVyQ29tcG9uZW50LCBNbmdGb3JtbHlGaWVsZFdyYXBwZXJDb21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50cy9mb3JtL2Zvcm1seS93cmFwcGVycyc7XG5pbXBvcnQge1xuICAgIE1uZ0JyZWFkY3J1bWJDb21wb25lbnQsXG4gICAgTW5nRm9vdGVyQ29tcG9uZW50LFxuICAgIE1uZ01haW5MYXlvdXRDb21wb25lbnQsXG4gICAgTW5nTWVudUNvbXBvbmVudCxcbiAgICBNbmdNZW51SXRlbUNvbXBvbmVudCxcbiAgICBNbmdUb3BiYXJDb21wb25lbnQsXG4gICAgTW5nVmVyc2lvbkNvbXBvbmVudFxufSBmcm9tICcuL2NvbXBvbmVudHMvbGF5b3V0JztcbmltcG9ydCB7TW5nVG9wYmFyVXNlckNvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL2xheW91dC90b3BiYXItdXNlci5jb21wb25lbnQnO1xuaW1wb3J0IHtNbmdFcnJvclBhZ2VDb21wb25lbnQsIE1uZ05vdEZvdW5kUGFnZUNvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL3BhZ2VzJztcbmltcG9ydCB7TW5nVGFibGVDb2x1bW5GaWx0ZXJDb21wb25lbnQsIE1uZ1RhYmxlQ29sdW1uVmFsdWVDb21wb25lbnQsIE1uZ1RhYmxlQ29tcG9uZW50LCBNbmdUYWJsZXZpZXdDb21wb25lbnQsIE1uZ1RhYmxldmlld1JvdXRlQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGV2aWV3JztcbmltcG9ydCB7TW5nQ29tcG9uZW50RGlyZWN0aXZlLCBNbmdUZW1wbGF0ZURpcmVjdGl2ZX0gZnJvbSAnLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7TW5nTW9kdWxlQ29uZmlnfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQge1xuICAgIEpzb25QYXRoUGlwZSxcbiAgICBNbmdCb29sZWFuUGlwZSxcbiAgICBNbmdDbGFzc01hcFBpcGUsXG4gICAgTW5nRW51bVBpcGUsXG4gICAgTW5nRW51bWVyYXRlQXN5bmNQaXBlLFxuICAgIE1uZ0VudW1lcmF0ZVBpcGUsXG4gICAgTW5nR2V0dGVyUGlwZSxcbiAgICBNbmdJMThuUHJvcGVydHlQaXBlLFxuICAgIE1uZ0xvY2FsZURlZmF1bHRSb3dDbGFzc1BpcGUsXG4gICAgTW5nUGFyYW1ldHJpemVQaXBlLFxuICAgIE1uZ1RlbXBsYXRlUGlwZVxufSBmcm9tICcuL3BpcGVzJztcbmltcG9ydCB7cHJvdmlkZU1uZ0NvbW1vbnN9IGZyb20gJy4vcHJvdmlkZS1jb21tb25zJztcblxuLy8gcHJpbWVuZyBtb2R1bGVzXG5leHBvcnQgY29uc3QgcHJpbWVOZ01vZHVsZXMgPSBbXG4gICAgQXV0b0NvbXBsZXRlTW9kdWxlLFxuICAgIEJyZWFkY3J1bWJNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIENhbGVuZGFyTW9kdWxlLFxuICAgIENhcmRNb2R1bGUsXG4gICAgQ2hlY2tib3hNb2R1bGUsXG4gICAgQ2hpcE1vZHVsZSxcbiAgICBDb25maXJtRGlhbG9nTW9kdWxlLFxuICAgIENvbmZpcm1Qb3B1cE1vZHVsZSxcbiAgICBEaWFsb2dNb2R1bGUsXG4gICAgRHluYW1pY0RpYWxvZ01vZHVsZSxcbiAgICBEcm9wZG93bk1vZHVsZSxcbiAgICBGaWxlVXBsb2FkTW9kdWxlLFxuICAgIElucHV0TnVtYmVyTW9kdWxlLFxuICAgIElucHV0TWFza01vZHVsZSxcbiAgICBJbnB1dFN3aXRjaE1vZHVsZSxcbiAgICBJbnB1dFRleHRNb2R1bGUsXG4gICAgSW5wdXRUZXh0YXJlYU1vZHVsZSxcbiAgICBQYWdpbmF0b3JNb2R1bGUsXG4gICAgUmFkaW9CdXR0b25Nb2R1bGUsXG4gICAgUmlwcGxlTW9kdWxlLFxuICAgIFNlbGVjdEJ1dHRvbk1vZHVsZSxcbiAgICBTcGxpdEJ1dHRvbk1vZHVsZSxcbiAgICBUYWJsZU1vZHVsZSxcbiAgICBUYWdNb2R1bGUsXG4gICAgVG9hc3RNb2R1bGUsXG4gICAgVG9nZ2xlQnV0dG9uTW9kdWxlLFxuICAgIFRvb2xiYXJNb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBNZXNzYWdlc01vZHVsZSxcbiAgICBQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gICAgVGFiVmlld01vZHVsZSxcbiAgICBGaWVsZHNldE1vZHVsZSxcbiAgICBNdWx0aVNlbGVjdE1vZHVsZSxcbiAgICBTa2VsZXRvbk1vZHVsZSxcbiAgICBTbGlkZU1lbnVNb2R1bGUsXG4gICAgSW1hZ2VNb2R1bGVcbl07XG5cbmNvbnN0IHN0YW5kYWxvbmUgPSBbXG4gICAgTW5nQWN0aW9uUm91dGVDb21wb25lbnQsXG5cbiAgICAvLyBkaXJlY3RpdmVzXG4gICAgTW5nQ29tcG9uZW50RGlyZWN0aXZlLFxuICAgIE1uZ1RlbXBsYXRlRGlyZWN0aXZlLFxuXG4gICAgLy8gcGlwZXNcbiAgICBKc29uUGF0aFBpcGUsXG4gICAgTW5nRW51bVBpcGUsXG4gICAgTW5nQm9vbGVhblBpcGUsXG4gICAgTW5nSTE4blByb3BlcnR5UGlwZSxcbiAgICBNbmdQYXJhbWV0cml6ZVBpcGUsXG4gICAgTW5nR2V0dGVyUGlwZSxcbiAgICBNbmdUZW1wbGF0ZVBpcGUsXG4gICAgTW5nQ2xhc3NNYXBQaXBlLFxuICAgIE1uZ0VudW1lcmF0ZVBpcGUsXG4gICAgTW5nRW51bWVyYXRlQXN5bmNQaXBlLFxuICAgIE1uZ0xvY2FsZURlZmF1bHRSb3dDbGFzc1BpcGUsXG5cbiAgICAvLyBsYXlvdXQgY29tcG9uZW50c1xuICAgIE1uZ0JyZWFkY3J1bWJDb21wb25lbnQsXG4gICAgTW5nRm9vdGVyQ29tcG9uZW50LFxuICAgIE1uZ01haW5MYXlvdXRDb21wb25lbnQsXG4gICAgTW5nTWVudUNvbXBvbmVudCxcbiAgICBNbmdNZW51SXRlbUNvbXBvbmVudCxcbiAgICBNbmdUb3BiYXJDb21wb25lbnQsXG4gICAgTW5nVG9wYmFyVXNlckNvbXBvbmVudCxcbiAgICBNbmdWZXJzaW9uQ29tcG9uZW50LFxuXG4gICAgLy8gbW5nIGZpZWxkc1xuICAgIE1uZ0F1dG9jb21wbGV0ZUNvbXBvbmVudCxcbiAgICBNbmdEcm9wZG93bkNvbXBvbmVudCxcbiAgICBNbmdEYXRlUmFuZ2VDb21wb25lbnQsXG5cbiAgICAvLyBmb3JtbHkgd3JhcHBlcnNcbiAgICBNbmdGb3JtbHlGaWVsZFdyYXBwZXJDb21wb25lbnQsXG4gICAgTW5nRm9ybWx5RmllbGROb0xhYmVsV3JhcHBlckNvbXBvbmVudCxcblxuICAgIC8vIGZvcm1seSBmaWVsZHNcbiAgICBNbmdGb3JtbHlGaWVsZElucHV0Q29tcG9uZW50LFxuICAgIE1uZ0Zvcm1seUZpZWxkTGFiZWxDb21wb25lbnQsXG4gICAgTW5nRm9ybWx5RmllbGREcm9wZG93bkNvbXBvbmVudCxcbiAgICBNbmdGb3JtbHlGaWVsZEF1dG9jb21wbGV0ZUNvbXBvbmVudCxcbiAgICBNbmdGb3JtbHlGaWVsZExvb2t1cERpYWxvZ0NvbXBvbmVudCxcbiAgICBNbmdGb3JtbHlGaWVsZFRhYmxlRGlhbG9nTXVsdGlzZWxlY3RDb21wb25lbnQsXG4gICAgTW5nRm9ybWx5RmllbGRUYWJsZURpYWxvZ0Zvcm1Db21wb25lbnQsXG4gICAgTW5nRm9ybWx5RmllbGRUYWJzQ29tcG9uZW50LFxuICAgIE1uZ0Zvcm1seUZpZWxkRmllbGRzZXRDb21wb25lbnQsXG4gICAgTW5nRm9ybWx5RmllbGRBY3Rpb25Db21wb25lbnQsXG5cbiAgICAvLyB0YWJsZSBjb21wb25lbnRzXG4gICAgTW5nVGFibGVDb21wb25lbnQsXG4gICAgTW5nVGFibGV2aWV3Q29tcG9uZW50LFxuICAgIE1uZ1RhYmxlQ29sdW1uVmFsdWVDb21wb25lbnQsXG4gICAgTW5nVGFibGVDb2x1bW5GaWx0ZXJDb21wb25lbnQsXG4gICAgTW5nVGFibGV2aWV3Um91dGVDb21wb25lbnQsXG5cbiAgICAvLyBlZGl0b3IgY29tcG9uZW50c1xuICAgIE1uZ0Zvcm1FZGl0b3JDb21wb25lbnQsXG4gICAgTW5nQWN0aW9uQ29tcG9uZW50LFxuICAgIE1uZ0FjdGlvbkVkaXRvckNvbXBvbmVudCxcbiAgICBNbmdEYXRhTGFuZ3VhZ2VEcm9wZG93bkNvbXBvbmVudCxcblxuICAgIC8vIHBhZ2VzXG4gICAgTW5nRXJyb3JQYWdlQ29tcG9uZW50LFxuICAgIE1uZ05vdEZvdW5kUGFnZUNvbXBvbmVudFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIC8vIGFuZ3VsYXIgbW9kdWxlc1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFJvdXRlck1vZHVsZSxcbiAgICAgICAgSHR0cENsaWVudE1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcblxuICAgICAgICAvLyBvdGhlciBtb2R1bGVzXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JDaGlsZCh7XG4gICAgICAgICAgICBleHRlbmQ6IHRydWVcbiAgICAgICAgfSksXG4gICAgICAgIEZvcm1seU1vZHVsZS5mb3JDaGlsZCgpLFxuICAgICAgICAuLi5wcmltZU5nTW9kdWxlcyxcblxuICAgICAgICAvLyBzdGFuZGFsb25lIGNvbXBvbmVudHNcbiAgICAgICAgLi4uc3RhbmRhbG9uZVxuICAgIF0sXG4gICAgZXhwb3J0czogWy4uLnByaW1lTmdNb2R1bGVzLCAuLi5zdGFuZGFsb25lXVxufSlcbmV4cG9ydCBjbGFzcyBNbmdDb21tb25zTW9kdWxlIHtcbiAgICBzdGF0aWMgZm9yUm9vdChjb25maWc6IE1uZ01vZHVsZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8TW5nQ29tbW9uc01vZHVsZT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IE1uZ0NvbW1vbnNNb2R1bGUsXG4gICAgICAgICAgICBwcm92aWRlcnM6IHByb3ZpZGVNbmdDb21tb25zKGNvbmZpZylcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,27 @@
1
+ export class MngErrorInternal {
2
+ constructor(message, name = 'Commons Internal Error', options) {
3
+ this.name = name;
4
+ this.message = message;
5
+ this.id = options?.id;
6
+ this.messageCode = options?.messageCode;
7
+ this.notification = options?.notification ?? this.generateNotification();
8
+ this.details = options?.details;
9
+ this.status = options?.status;
10
+ this.statusDescription = options?.statusDescription;
11
+ this.url = options?.url;
12
+ this.cause = options?.cause;
13
+ this.stack = options?.stack ?? (options?.cause ? options.cause.stack : new Error(message).stack);
14
+ }
15
+ consoleError() {
16
+ let cause = '';
17
+ if (this.cause) {
18
+ cause += `; Caused by ${this.cause.name}: ${this.cause.message}`;
19
+ }
20
+ console.error(`${this.name}: ${this.message}${cause}`, this);
21
+ return this;
22
+ }
23
+ generateNotification() {
24
+ return { severity: 'error', summary: this.name, detail: this.message, life: 10000 };
25
+ }
26
+ }
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaW50ZXJuYWwubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL21vZGVscy9lcnJvci1pbnRlcm5hbC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLE9BQU8sZ0JBQWdCO0lBY3pCLFlBQ0ksT0FBZSxFQUNmLElBQUksR0FBRyx3QkFBd0IsRUFDL0IsT0FVQztRQUVELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBRXZCLElBQUksQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sRUFBRSxXQUFXLENBQUM7UUFDeEMsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLEVBQUUsWUFBWSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3pFLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxFQUFFLE9BQU8sQ0FBQztRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sRUFBRSxNQUFNLENBQUM7UUFDOUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQztRQUNwRCxJQUFJLENBQUMsR0FBRyxHQUFHLE9BQU8sRUFBRSxHQUFHLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLEVBQUUsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxFQUFFLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRU0sWUFBWTtRQUNmLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNaLEtBQUssSUFBSSxlQUFlLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDcEU7UUFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxvQkFBb0I7UUFDeEIsT0FBTyxFQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBQyxDQUFDO0lBQ3RGLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWVzc2FnZX0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5pbXBvcnQge0lkVHlwZX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtNbmdFcnJvcn0gZnJvbSAnLi9pbmRleCc7XG5cbmV4cG9ydCBjbGFzcyBNbmdFcnJvckludGVybmFsIGltcGxlbWVudHMgTW5nRXJyb3Ige1xuICAgIHB1YmxpYyBpZD86IElkVHlwZTtcbiAgICBwdWJsaWMgbWVzc2FnZUNvZGU/OiBudW1iZXIgfCBzdHJpbmc7XG4gICAgcHVibGljIG5vdGlmaWNhdGlvbj86IE1lc3NhZ2U7XG4gICAgcHVibGljIGRldGFpbHM/OiBhbnk7XG4gICAgcHVibGljIHN0YXR1cz86IG51bWJlcjtcbiAgICBwdWJsaWMgc3RhdHVzRGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgcHVibGljIHVybD86IHN0cmluZztcbiAgICBwdWJsaWMgY2F1c2U/OiBFcnJvcjtcbiAgICBwdWJsaWMgc3RhY2s/OiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICAgIHB1YmxpYyBtZXNzYWdlOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICBuYW1lID0gJ0NvbW1vbnMgSW50ZXJuYWwgRXJyb3InLFxuICAgICAgICBvcHRpb25zPzoge1xuICAgICAgICAgICAgaWQ/OiBJZFR5cGU7XG4gICAgICAgICAgICBtZXNzYWdlQ29kZT86IG51bWJlciB8IHN0cmluZztcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbj86IE1lc3NhZ2U7XG4gICAgICAgICAgICBkZXRhaWxzPzogYW55O1xuICAgICAgICAgICAgc3RhdHVzPzogbnVtYmVyO1xuICAgICAgICAgICAgc3RhdHVzRGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgICAgICAgICB1cmw/OiBzdHJpbmc7XG4gICAgICAgICAgICBjYXVzZT86IEVycm9yO1xuICAgICAgICAgICAgc3RhY2s/OiBzdHJpbmc7XG4gICAgICAgIH1cbiAgICApIHtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcblxuICAgICAgICB0aGlzLmlkID0gb3B0aW9ucz8uaWQ7XG4gICAgICAgIHRoaXMubWVzc2FnZUNvZGUgPSBvcHRpb25zPy5tZXNzYWdlQ29kZTtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb24gPSBvcHRpb25zPy5ub3RpZmljYXRpb24gPz8gdGhpcy5nZW5lcmF0ZU5vdGlmaWNhdGlvbigpO1xuICAgICAgICB0aGlzLmRldGFpbHMgPSBvcHRpb25zPy5kZXRhaWxzO1xuICAgICAgICB0aGlzLnN0YXR1cyA9IG9wdGlvbnM/LnN0YXR1cztcbiAgICAgICAgdGhpcy5zdGF0dXNEZXNjcmlwdGlvbiA9IG9wdGlvbnM/LnN0YXR1c0Rlc2NyaXB0aW9uO1xuICAgICAgICB0aGlzLnVybCA9IG9wdGlvbnM/LnVybDtcbiAgICAgICAgdGhpcy5jYXVzZSA9IG9wdGlvbnM/LmNhdXNlO1xuICAgICAgICB0aGlzLnN0YWNrID0gb3B0aW9ucz8uc3RhY2sgPz8gKG9wdGlvbnM/LmNhdXNlID8gb3B0aW9ucy5jYXVzZS5zdGFjayA6IG5ldyBFcnJvcihtZXNzYWdlKS5zdGFjayk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbnNvbGVFcnJvcigpOiB0aGlzIHtcbiAgICAgICAgbGV0IGNhdXNlID0gJyc7XG4gICAgICAgIGlmICh0aGlzLmNhdXNlKSB7XG4gICAgICAgICAgICBjYXVzZSArPSBgOyBDYXVzZWQgYnkgJHt0aGlzLmNhdXNlLm5hbWV9OiAke3RoaXMuY2F1c2UubWVzc2FnZX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5lcnJvcihgJHt0aGlzLm5hbWV9OiAke3RoaXMubWVzc2FnZX0ke2NhdXNlfWAsIHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlTm90aWZpY2F0aW9uKCk6IE1lc3NhZ2Uge1xuICAgICAgICByZXR1cm4ge3NldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiB0aGlzLm5hbWUsIGRldGFpbDogdGhpcy5tZXNzYWdlLCBsaWZlOiAxMDAwMH07XG4gICAgfVxufVxuIl19
@@ -7,4 +7,5 @@ export * from './user.model';
7
7
  export * from './version.model';
8
8
  export * from './view-container.model';
9
9
  export * from './tableview-attr.model';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbHVtbi12YWx1ZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2VudW0ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lcnJvci5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL21lbnUubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi91c2VyLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vdmVyc2lvbi5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXctY29udGFpbmVyLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3LWF0dHIubW9kZWwnO1xuIl19
10
+ export * from './error-internal.model';
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29sdW1uLXZhbHVlLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlnLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZW51bS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Vycm9yLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbWVudS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3VzZXIubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi92ZXJzaW9uLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vdmlldy1jb250YWluZXIubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXctYXR0ci5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Vycm9yLWludGVybmFsLm1vZGVsJztcbiJdfQ==
@@ -1,4 +1,5 @@
1
1
  import { MngMainLayoutComponent } from '../components/layout';
2
+ import { MngErrorInternal } from '../models';
2
3
  import { MngAuthorizationGuard } from '../security';
3
4
  import { RouteUtil } from '../utils/route.util';
4
5
  export class RouteBuilder {
@@ -159,13 +160,13 @@ export class RouteBuilder {
159
160
  }
160
161
  toParent() {
161
162
  if (!this.parent) {
162
- throw new Error('Parent was not provided.');
163
+ throw new MngErrorInternal('Parent was not provided.', 'RouteBuilder error').consoleError();
163
164
  }
164
165
  return this.parent;
165
166
  }
166
167
  toRoot() {
167
168
  if (!this.root) {
168
- throw new Error('Root was not provided.');
169
+ throw new MngErrorInternal('Root was not provided.', 'RouteBuilder error').consoleError();
169
170
  }
170
171
  return this.root;
171
172
  }
@@ -308,4 +309,4 @@ export class RouteBuilder {
308
309
  return undefined;
309
310
  }
310
311
  }
311
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcm91dGVyL3JvdXRlLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFNUQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sYUFBYSxDQUFDO0FBRWxELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUs5QyxNQUFNLE9BQU8sWUFBWTtJQWdCckIsWUFBc0IsS0FBWTtRQWQxQixjQUFTLEdBQWtCLEVBQUUsQ0FBQztRQUM1QixjQUFTLEdBQWtCLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBQyxDQUFDO1FBR2hELGFBQVEsR0FBd0IsRUFBRSxDQUFDO1FBR25DLHFCQUFnQixHQUF1QixFQUFFLENBQUM7UUFROUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQy9DLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3RDO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBWSxFQUFFLFNBQW9CO1FBQ25ELE9BQU8sSUFBSSxZQUFZLENBQUM7WUFDcEIsSUFBSSxFQUFFLElBQUk7WUFDVixTQUFTLEVBQUUsU0FBUztTQUN2QixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFZLEVBQUUsVUFBa0IsRUFBRSxZQUErQixRQUFRO1FBQ2xHLE9BQU8sSUFBSSxZQUFZLENBQUM7WUFDcEIsSUFBSSxFQUFFLElBQUk7WUFDVixVQUFVLEVBQUUsVUFB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Q0FBQyxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2xCO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFUyx1QkFBdUI7UUFDN0IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRTtZQUM1QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1NBQ3BDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRTtZQUM1Qix3QkFBd0I7WUFDeEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztTQUNyQztRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDM0I7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEZWZhdWx0RXhwb3J0LCBMb2FkQ2hpbGRyZW4sIFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge01uZ01haW5MYXlvdXRDb21wb25lbnR9IGZyb20gJy4uL2NvbXBvbmVudHMvbGF5b3V0JztcbmltcG9ydCB7TW5nTWVudUl0ZW19IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQge01uZ0F1dGhvcml6YXRpb25HdWFyZH0gZnJvbSAnLi4vc2VjdXJpdHknO1xuaW1wb3J0IHtBUGVybWlzc2lvbnN9IGZyb20gJy4uL3NlY3VyaXR5L21vZGVsJztcbmltcG9ydCB7Um91dGVVdGlsfSBmcm9tICcuLi91dGlscy9yb3V0ZS51dGlsJztcbmltcG9ydCB7QnJlYWRjcnVtYlR5cGUsIE1uZ1JvdXRlckRhdGF9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7Um91dGVzQnVpbGRlcn0gZnJvbSAnLi9yb3V0ZXMtYnVpbGRlcic7XG5pbXBvcnQge1RhYmxldmlld1JvdXRlQnVpbGRlckludGVybmFsfSBmcm9tICcuL3RhYmxldmlldy1yb3V0ZS1idWlsZGVyJztcblxuZXhwb3J0IGNsYXNzIFJvdXRlQnVpbGRlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogUm91dGU7XG4gICAgcHJpdmF0ZSByb3V0ZVBhdGg6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgICBwcm90ZWN0ZWQgcm91dGVEYXRhOiBNbmdSb3V0ZXJEYXRhID0ge2JyZWFkY3J1bWI6IG51bGx9O1xuICAgIHByaXZhdGUgcm9vdD86IFJvdXRlc0J1aWxkZXI7XG4gICAgcHJpdmF0ZSBwYXJlbnQ/OiBSb3V0ZUJ1aWxkZXI7XG4gICAgcHJpdmF0ZSBjaGlsZHJlbjogQXJyYXk8Um91dGVCdWlsZGVyPiA9IFtdO1xuXG4gICAgcHJpdmF0ZSBtZW51SXRlbT86IE1uZ01lbnVJdGVtO1xuICAgIHByaXZhdGUgbWVudUl0ZW1DaGlsZHJlbjogQXJyYXk8TW5nTWVudUl0ZW0+ID0gW107XG5cbiAgICBwcml2YXRlIGJyZWFkY3J1bWI/OiBCcmVhZGNydW1iVHlwZTtcbiAgICBwcml2YXRlIHBhZ2VUaXRsZT86IHN0cmluZztcblxuICAgIHByaXZhdGUgcGVybWlzc2lvbnM/OiBBUGVybWlzc2lvbnM7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3Iocm91dGU6IFJvdXRlKSB7XG4gICAgICAgIHRoaXMucm91dGUgPSByb3V0ZTtcbiAgICAgICAgaWYgKHRoaXMucm91dGUucGF0aCAmJiB0aGlzLnJvdXRlLnBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZVBhdGggPSBbdGhpcy5yb3V0ZS5wYXRoXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlKHBhdGg6IHN0cmluZywgY29tcG9uZW50OiBUeXBlPGFueT4pOiBSb3V0ZUJ1aWxkZXIge1xuICAgICAgICByZXR1cm4gbmV3IFJvdXRlQnVpbGRlcih7XG4gICAgICAgICAgICBwYXRoOiBwYXRoLFxuICAgICAgICAgICAgY29tcG9uZW50OiBjb21wb25lbnRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVSZWRpcmVjdChwYXRoOiBzdHJpbmcsIHJlZGlyZWN0VG86IHN0cmluZywgcGF0aE1hdGNoOiAnZnVsbCcgfCAncHJlZml4JyA9ICdwcmVmaXgnKTogUm91dGVCdWlsZGVyIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSb3V0ZUJ1aWxkZXIoe1xuICAgICAgICAgICAgcGF0aDogcGF0aCxcbiAgICAgICAgICAgIHJlZGlyZWN0VG86IHJlZGlyZWN0VG8sXG4gICAgICAgICAgICBwYXRoTWF0Y2g6IHBhdGhNYXRjaFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQuXG4gICAgICogVXNlIG1ldGhvZCB7QGxpbmsgY3JlYXRlTGF6eVJvdXRlQ29tcG9uZW50fSBvciB7QGxpbmsgY3JlYXRlTGF6eVJvdXRlTW9kdWxlfSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlTGF6eVJvdXRlKHBhdGg6IHN0cmluZywgbG9hZENoaWxkcmVuOiBMb2FkQ2hpbGRyZW4sIGNhbkxvYWQ/OiBBcnJheTxhbnk+KTogUm91dGVCdWlsZGVyIHtcbiAgICAgICAgY29uc3Qgcm91dGU6IFJvdXRlID0ge3BhdGg6IHBhdGgsIGxvYWRDaGlsZHJlbjogbG9hZENoaWxkcmVufTtcbiAgICAgICAgaWYgKGNhbkxvYWQ/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcm91dGUuY2FuTG9hZCA9IGNhbkxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBSb3V0ZUJ1aWxkZXIocm91dGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlTGF6eVJvdXRlTW9kdWxlKHBhdGg6IHN0cmluZywgbG9hZENoaWxkcmVuOiBMb2FkQ2hpbGRyZW4sIGNhbk1hdGNoPzogQXJyYXk8YW55Pik6IFJvdXRlQnVpbGRlciB7XG4gICAgICAgIGNvbnN0IHJvdXRlOiBSb3V0ZSA9IHtwYXRoOiBwYXRoLCBsb2FkQ2hpbGRyZW46IGxvYWRDaGlsZHJlbn07XG4gICAgICAgIGlmIChjYW5NYXRjaD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByb3V0ZS5jYW5NYXRjaCA9IGNhbk1hdGNoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgUm91dGVCdWlsZGVyKHJvdXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUxhenlSb3V0ZUNvbXBvbmVudChcbiAgICAgICAgcGF0aDogc3RyaW5nLFxuICAgICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiBUeXBlPHVua25vd24+IHwgT2JzZXJ2YWJsZTxUeXBlPHVua25vd24+IHwgRGVmYXVsdEV4cG9ydDxUeXBlPHVua25vd24+Pj4gfCBQcm9taXNlPFR5cGU8dW5rbm93bj4gfCBEZWZhdWx0RXhwb3J0PFR5cGU8dW5rbm93bj4+PixcbiAgICAgICAgY2FuTWF0Y2g/OiBBcnJheTxhbnk+XG4gICAgKTogUm91dGVCdWlsZGVyIHtcbiAgICAgICAgY29uc3Qgcm91dGU6IFJvdXRlID0ge3BhdGg6IHBhdGgsIGxvYWRDb21wb25lbnQ6IGxvYWRDb21wb25lbnR9O1xuICAgICAgICBpZiAoY2FuTWF0Y2g/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcm91dGUuY2FuTWF0Y2ggPSBjYW5NYXRjaDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFJvdXRlQnVpbGRlcihyb3V0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGcm9tUm91dGUocm91dGU6IFJvdXRlKTogUm91dGVCdWlsZGVyIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSb3V0ZUJ1aWxkZXIocm91dGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlTGF5b3V0Um91dGUocGF0aDogc3RyaW5nLCBsYXlvdXRDb21wb25lbnQgPSBNbmdNYWluTGF5b3V0Q29tcG9uZW50KTogUm91dGVCdWlsZGVyIHtcbiAgICAgICAgcmV0dXJuIFJvdXRlQnVpbGRlci5jcmVhdGUocGF0aCwgbGF5b3V0Q29tcG9uZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJvb3Qocm91dGVzQnVpbGRlcjogUm91dGVzQnVpbGRlcik6IHRoaXMge1xuICAgICAgICB0aGlzLnJvb3QgPSByb3V0ZXNCdWlsZGVyO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFBhcmVudChwYXJlbnQ6IFJvdXRlQnVpbGRlcik6IHRoaXMge1xuICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgdGhpcy5yb3V0ZVBhdGggPSBSb3V0ZVV0aWwucmVtb3ZlRW1wdHlQYXRoU2VnbWVudHMoWy4uLnRoaXMucGFyZW50LnJvdXRlUGF0aCwgdGhpcy5yb3V0ZS5wYXRoID8/ICcnXSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQnJlYWRjcnVtYihicmVhZGNydW1iOiBCcmVhZGNydW1iVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLmJyZWFkY3J1bWIgPSBicmVhZGNydW1iO1xuICAgICAgICB0aGlzLnJvdXRlRGF0YS5icmVhZGNydW1iID0gYnJlYWRjcnVtYjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQYWdlVGl0bGUocGFnZVRpdGxlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5wYWdlVGl0bGUgPSBwYWdlVGl0bGU7XG4gICAgICAgIHRoaXMucm91dGVEYXRhLnBhZ2VUaXRsZSA9IHBhZ2VUaXRsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSZWRpcmVjdFRvKHJlZGlyZWN0VG86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLnJvdXRlLnJlZGlyZWN0VG8gPSByZWRpcmVjdFRvO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFBhdGhNYXRjaChwYXRoTWF0Y2g6ICdmdWxsJyB8ICdwcmVmaXgnKTogdGhpcyB7XG4gICAgICAgIHRoaXMucm91dGUucGF0aE1hdGNoID0gcGF0aE1hdGNoO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRpdGxlKHRpdGxlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy53aXRoUGFnZVRpdGxlKHRpdGxlKTtcbiAgICAgICAgdGhpcy53aXRoQnJlYWRjcnVtYih0aXRsZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ2FuQWN0aXZhdGUoZGlUb2tlbjogYW55KTogdGhpcyB7XG4gICAgICAgIGlmICghdGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucm91dGUuY2FuQWN0aXZhdGUucHVzaChkaVRva2VuKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhDYW5EZWFjdGl2YXRlKGRpVG9rZW46IGFueSk6IHRoaXMge1xuICAgICAgICBpZiAoIXRoaXMucm91dGUuY2FuRGVhY3RpdmF0ZSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZS5jYW5EZWFjdGl2YXRlID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3V0ZS5jYW5EZWFjdGl2YXRlLnB1c2goZGlUb2tlbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUmVzb2x2ZXIoZGlUb2tlbjogYW55LCBuYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgaWYgKCF0aGlzLnJvdXRlLnJlc29sdmUpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGUucmVzb2x2ZSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucm91dGUucmVzb2x2ZVtuYW1lXSA9IGRpVG9rZW47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGF0YShkYXRhOiBNbmdSb3V0ZXJEYXRhKTogdGhpcyB7XG4gICAgICAgIGlmICghZGF0YS5icmVhZGNydW1iKSB7XG4gICAgICAgICAgICBkYXRhLmJyZWFkY3J1bWIgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucm91dGVEYXRhID0gZGF0YTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhNbmdNZW51SXRlbShtZW51SXRlbTogTW5nTWVudUl0ZW0pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5tZW51SXRlbSA9IG1lbnVJdGVtO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE1lbnVJdGVtKGljb24/OiBzdHJpbmcsIGxhYmVsPzogc3RyaW5nLCByb3V0ZXJMaW5rPzogQXJyYXk8c3RyaW5nPik6IHRoaXMge1xuICAgICAgICB0aGlzLm1lbnVJdGVtID0gdGhpcy5jcmVhdGVNZW51SXRlbShpY29uLCBsYWJlbCwgcm91dGVyTGluayk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTWVudUl0ZW1DaGlsZChsYWJlbDogc3RyaW5nLCBpY29uPzogc3RyaW5nLCByb3V0ZXJMaW5rPzogQXJyYXk8c3RyaW5nPik6IHRoaXMge1xuICAgICAgICB0aGlzLm1lbnVJdGVtQ2hpbGRyZW4ucHVzaCh0aGlzLmNyZWF0ZU1lbnVJdGVtKGljb24sIGxhYmVsLCByb3V0ZXJMaW5rKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTW5nTWVudUl0ZW1DaGlsZChtZW51SXRlbTogTW5nTWVudUl0ZW0pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5tZW51SXRlbUNoaWxkcmVuLnB1c2gobWVudUl0ZW0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE1lbnVJdGVtTGF6eUNoaWxkcmVuKCk6IHRoaXMge1xuICAgICAgICBpZiAoIXRoaXMubWVudUl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW0gPSB7fTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1lbnVJdGVtLmxhenlDaGlsZHJlbiA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUGVybWlzc2lvbnMocGVybWlzc2lvbnM6IEFQZXJtaXNzaW9ucyk6IHRoaXMge1xuICAgICAgICB0aGlzLnBlcm1pc3Npb25zID0gcGVybWlzc2lvbnM7XG4gICAgICAgIHRoaXMud2l0aENhbkFjdGl2YXRlKE1uZ0F1dGhvcml6YXRpb25HdWFyZCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRDaGlsZChwYXRoOiBzdHJpbmcsIGNvbXBvbmVudDogVHlwZTxhbnk+KTogUm91dGVCdWlsZGVyIHtcbiAgICAgICAgY29uc3QgY2hpbGRSb3V0ZUJ1aWxkZXIgPSBSb3V0ZUJ1aWxkZXIuY3JlYXRlKHBhdGgsIGNvbXBvbmVudCk7XG4gICAgICAgIHRoaXMuYWRkQ2hpbGRCdWlsZGVyKGNoaWxkUm91dGVCdWlsZGVyKTtcbiAgICAgICAgcmV0dXJuIGNoaWxkUm91dGVCdWlsZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRDaGlsZEJ1aWxkZXIoYnVpbGRlcjogUm91dGVCdWlsZGVyIHwgVGFibGV2aWV3Um91dGVCdWlsZGVySW50ZXJuYWwpOiB0aGlzIHtcbiAgICAgICAgYnVpbGRlci53aXRoUGFyZW50KHRoaXMpO1xuICAgICAgICBpZiAodGhpcy5yb290KSB7XG4gICAgICAgICAgICBidWlsZGVyLndpdGhSb290KHRoaXMucm9vdCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoKGJ1aWxkZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9QYXJlbnQoKTogUm91dGVCdWlsZGVyIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhcmVudCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXJlbnQgd2FzIG5vdCBwcm92aWRlZC4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIHRvUm9vdCgpOiBSb3V0ZXNCdWlsZGVyIHtcbiAgICAgICAgaWYgKCF0aGlzLnJvb3QpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUm9vdCB3YXMgbm90IHByb3ZpZGVkLicpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJvb3Q7XG4gICAgfVxuXG4gICAgcHVibGljIGZpbmlzaCgpOiBSb3V0ZXNCdWlsZGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Sb290KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGJ1aWxkKCk6IFJvdXRlIHtcbiAgICAgICAgY29uc3QgYW5ndWxhclJvdXRlOiBSb3V0ZSA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMucm91dGVcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoYW5ndWxhclJvdXRlLmRhdGEpIHtcbiAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZS5kYXRhID0ge1xuICAgICAgICAgICAgICAgIC4uLmFuZ3VsYXJSb3V0ZS5kYXRhLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMucm91dGVEYXRhXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYW5ndWxhclJvdXRlLmRhdGEgPSB7Li4udGhpcy5yb3V0ZURhdGF9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gYXBwZW5kIHBlcm1pc3Npb25zIGlmIG5vdCBhbHJlYWR5IGluIHJvdXRlIGRhdGFcbiAgICAgICAgaWYgKHRoaXMucGVybWlzc2lvbnMgJiYgIShhbmd1bGFyUm91dGUuZGF0YSBhcyBNbmdSb3V0ZXJEYXRhKS5wZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgKGFuZ3VsYXJSb3V0ZS5kYXRhIGFzIE1uZ1JvdXRlckRhdGEpLnBlcm1pc3Npb25zID0gdGhpcy5wZXJtaXNzaW9ucztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1lbnUgPSB0aGlzLmJ1aWxkTWVudSgpO1xuICAgICAgICBpZiAobWVudS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAoYW5ndWxhclJvdXRlLmRhdGEgYXMgTW5nUm91dGVyRGF0YSkubWVudUl0ZW1zID0gbWVudTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgodGhpcy5yb3V0ZS5jaGlsZHJlbj8ubGVuZ3RoID8/IDApID4gMCB8fCB0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIHJvdXRlIGhhcyBjaGlsZHJlblxuICAgICAgICAgICAgYW5ndWxhclJvdXRlLmNoaWxkcmVuID0gW107XG4gICAgICAgICAgICBpZiAodGhpcy5yb3V0ZS5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgYW5ndWxhclJvdXRlLmNoaWxkcmVuLnB1c2goLi4udGhpcy5yb3V0ZS5jaGlsZHJlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkUm91dGUgb2YgdGhpcy5jaGlsZHJlbikge1xuICAgICAgICAgICAgICAgICAgICBhbmd1bGFyUm91dGUuY2hpbGRyZW4ucHVzaChjaGlsZFJvdXRlLmJ1aWxkKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJvdXRlLmNhbkFjdGl2YXRlKSB7XG4gICAgICAgICAgICBhbmd1bGFyUm91dGUuY2FuQWN0aXZhdGUgPSBbLi4udGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucm91dGUuY2FuQWN0aXZhdGVDaGlsZCkge1xuICAgICAgICAgICAgYW5ndWxhclJvdXRlLmNhbkFjdGl2YXRlQ2hpbGQgPSBbLi4udGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZUNoaWxkXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yb3V0ZS5jYW5Mb2FkKSB7XG4gICAgICAgICAgICBhbmd1bGFyUm91dGUuY2FuTG9hZCA9IFsuLi50aGlzLnJvdXRlLmNhbkxvYWRdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJvdXRlLmNhbkRlYWN0aXZhdGUpIHtcbiAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZS5jYW5EZWFjdGl2YXRlID0gWy4uLnRoaXMucm91dGUuY2FuRGVhY3RpdmF0ZV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucm91dGUucmVzb2x2ZSkge1xuICAgICAgICAgICAgYW5ndWxhclJvdXRlLnJlc29sdmUgPSB7Li4udGhpcy5yb3V0ZS5yZXNvbHZlfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhbmd1bGFyUm91dGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZE1lbnUoKTogQXJyYXk8TW5nTWVudUl0ZW0+IHtcbiAgICAgICAgY29uc3QgbWVudUl0ZW1CdWlsZDogTW5nTWVudUl0ZW0gfCBudWxsID0gdGhpcy5tZW51SXRlbSA/IHsuLi50aGlzLm1lbnVJdGVtfSA6IG51bGw7XG4gICAgICAgIGNvbnN0IHJvdXRlQ2hpbGRyZW5NZW51SXRlbXM6IEFycmF5PE1uZ01lbnVJdGVtPiA9IHRoaXMuY2hpbGRyZW4uZmxhdE1hcChjaGlsZCA9PiBjaGlsZC5idWlsZE1lbnUoKSk7XG4gICAgICAgIGNvbnN0IG1lbnVJdGVtQ2hpbGRyZW46IEFycmF5PE1uZ01lbnVJdGVtPiA9IFtdO1xuICAgICAgICBjb25zdCBtZW51SXRlbUNoaWxkcmVuQnVpbGQ6IEFycmF5PE1uZ01lbnVJdGVtPiA9IFtdO1xuXG4gICAgICAgIGlmIChtZW51SXRlbUJ1aWxkPy5pdGVtcykge1xuICAgICAgICAgICAgbWVudUl0ZW1DaGlsZHJlbkJ1aWxkLnB1c2goLi4ubWVudUl0ZW1CdWlsZC5pdGVtcyk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IG1lbnVJdGVtQ2hpbGQgb2YgdGhpcy5tZW51SXRlbUNoaWxkcmVuKSB7XG4gICAgICAgICAgICBjb25zdCBmaW5hbE1lbnVJdGVtQ2hpbGQ6IE1uZ01lbnVJdGVtID0gey4uLm1lbnVJdGVtQ2hpbGR9O1xuICAgICAgICAgICAgaWYgKCFmaW5hbE1lbnVJdGVtQ2hpbGQucm91dGVyTGluaykge1xuICAgICAgICAgICAgICAgIGZpbmFsTWVudUl0ZW1DaGlsZC5yb3V0ZXJMaW5rID0gdGhpcy5yb3V0ZVBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIGZpbmFsTWVudUl0ZW1DaGlsZC5yb3V0ZXJMaW5rID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGZpbmFsTWVudUl0ZW1DaGlsZC5yb3V0ZXJMaW5rID0gW2ZpbmFsTWVudUl0ZW1DaGlsZC5yb3V0ZXJMaW5rXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsTWVudUl0ZW1DaGlsZC5yb3V0ZXJMaW5rID0gUm91dGVVdGlsLnJlbW92ZUVtcHR5UGF0aFNlZ21lbnRzKGZpbmFsTWVudUl0ZW1DaGlsZC5yb3V0ZXJMaW5rKTtcbiAgICAgICAgICAgIG1lbnVJdGVtQ2hpbGRyZW4ucHVzaChmaW5hbE1lbnVJdGVtQ2hpbGQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbWVudUl0ZW1DaGlsZHJlbkJ1aWxkLnB1c2goLi4ubWVudUl0ZW1DaGlsZHJlbiwgLi4ucm91dGVDaGlsZHJlbk1lbnVJdGVtcyk7XG5cbiAgICAgICAgaWYgKCFtZW51SXRlbUJ1aWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gbWVudUl0ZW1DaGlsZHJlbkJ1aWxkO1xuICAgICAgICB9XG5cbiAgICAgICAgbWVudUl0ZW1CdWlsZC5sYWJlbCA9IG1lbnVJdGVtQnVpbGQubGFiZWwgPz8gdGhpcy5wYWdlVGl0bGU7XG4gICAgICAgIGlmICh0eXBlb2YgbWVudUl0ZW1CdWlsZC5yb3V0ZXJMaW5rID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgbWVudUl0ZW1CdWlsZC5yb3V0ZXJMaW5rID0gW21lbnVJdGVtQnVpbGQucm91dGVyTGlua107XG4gICAgICAgIH1cbiAgICAgICAgbWVudUl0ZW1CdWlsZC5yb3V0ZXJMaW5rID0gUm91dGVVdGlsLnJlbW92ZUVtcHR5UGF0aFNlZ21lbnRzKG1lbnVJdGVtQnVpbGQucm91dGVyTGluayA/PyB0aGlzLnJvdXRlUGF0aCk7XG4gICAgICAgIGlmIChtZW51SXRlbUNoaWxkcmVuQnVpbGQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbWVudUl0ZW1CdWlsZC5pdGVtcyA9IG1lbnVJdGVtQ2hpbGRyZW5CdWlsZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbWVudUl0ZW1CdWlsZC5ndWFyZHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGd1YXJkcyA9IHRoaXMuZmluZE1lbnVJdGVtR3VhcmRzKCk7XG4gICAgICAgICAgICBpZiAoZ3VhcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBtZW51SXRlbUJ1aWxkLmd1YXJkcyA9IGd1YXJkcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbWVudUl0ZW1CdWlsZC5wZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgbWVudUl0ZW1CdWlsZC5wZXJtaXNzaW9ucyA9IHRoaXMuZmluZE1lbnVJdGVtUGVybWlzc2lvbnMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbbWVudUl0ZW1CdWlsZF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVNZW51SXRlbShpY29uPzogc3RyaW5nLCBsYWJlbD86IHN0cmluZywgcm91dGVyTGluaz86IEFycmF5PHN0cmluZz4pIHtcbiAgICAgICAgY29uc3QgbWVudUl0ZW06IE1uZ01lbnVJdGVtID0ge307XG4gICAgICAgIGlmIChpY29uKSB7XG4gICAgICAgICAgICBtZW51SXRlbS5pY29uID0gaWNvbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGFiZWwpIHtcbiAgICAgICAgICAgIG1lbnVJdGVtLmxhYmVsID0gbGFiZWw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJvdXRlckxpbmspIHtcbiAgICAgICAgICAgIG1lbnVJdGVtLnJvdXRlckxpbmsgPSByb3V0ZXJMaW5rO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZW51SXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRNZW51SXRlbUd1YXJkcygpOiBBcnJheTxhbnk+IHtcbiAgICAgICAgY29uc3QgZ3VhcmRzOiBBcnJheTxhbnk+ID0gW107XG4gICAgICAgIGlmICh0aGlzLnJvdXRlLmNhbkFjdGl2YXRlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGd1YXJkcy5wdXNoKC4uLnRoaXMucm91dGUuY2FuQWN0aXZhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIHBhcmVudCBndWFyZHMgdGhhdCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gZGVjaXNpb24gdG8gaGlkZSBtZW51IGl0ZW0hXG4gICAgICAgICAgICAvLyBTb21lIHBhcmVudCByb3V0ZXMgbWlnaHQgaGF2ZSBndWFyZHMsIGJ1dCBubyBtZW51IGl0ZW1zLCBzbyB0aGlzIGd1YXJkcyBtdXN0IGJlIHRha2VuIGludG8gYWNjb3VudCBoZXJlLFxuICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGVyZSBpcyBubyBwYXJlbnQgbWVudSBpdGVtIHRvIGhpZGUuXG4gICAgICAgICAgICB0aGlzLnBhcmVudC5maW5kTWVudUl0ZW1HdWFyZHMoKS5mb3JFYWNoKGcgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChndWFyZHMuaW5kZXhPZihnKSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZ3VhcmRzLnB1c2goZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGd1YXJkcztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZmluZE1lbnVJdGVtUGVybWlzc2lvbnMoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtPy5wZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVudUl0ZW0ucGVybWlzc2lvbnM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucm91dGVEYXRhLnBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICAvLyB0aGlzIGlzIGFscmVhZHkgYnVpbHRcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdXRlRGF0YS5wZXJtaXNzaW9ucztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGVybWlzc2lvbnM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG59XG4iXX0=
312
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcm91dGVyL3JvdXRlLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGdCQUFnQixFQUFjLE1BQU0sV0FBVyxDQUFDO0FBQ3hELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUVsRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFLOUMsTUFBTSxPQUFPLFlBQVk7SUFnQnJCLFlBQXNCLEtBQVk7UUFkMUIsY0FBUyxHQUFrQixFQUFFLENBQUM7UUFDNUIsY0FBUyxHQUFrQixFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUMsQ0FBQztRQUdoRCxhQUFRLEdBQXdCLEVBQUUsQ0FBQztRQUduQyxxQkFBZ0IsR0FBdUIsRUFBRSxDQUFDO1FBUTlDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMvQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN0QztJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQVksRUFBRSxTQUFvQjtRQUNuRCxPQUFPLElBQUksWUFBWSxDQUFDO1lBQ3BCLElBQUksRUFBRSxJQUFJO1lBQ1YsU0FBUyxFQUFFLFNBQVM7U0FDdkIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBWSxFQUFFLFVBQWtCLEVBQUUsWUFBK0IsUUFBUTtRQUNsRyxPQUFPLElBQUksWUFBWSxD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TUFBTSxFQUFFO1lBQ2IsaUZBQWlGO1lBQ2pGLDJHQUEyRztZQUMzRyxnREFBZ0Q7WUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDekMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDbEI7WUFDTCxDQUFDLENBQUMsQ0FBQztTQUNOO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVTLHVCQUF1QjtRQUM3QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFO1lBQzVCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7U0FDcEM7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFO1lBQzVCLHdCQUF3QjtZQUN4QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO1NBQ3JDO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUMzQjtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RlZmF1bHRFeHBvcnQsIExvYWRDaGlsZHJlbiwgUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7TW5nTWFpbkxheW91dENvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy9sYXlvdXQnO1xuaW1wb3J0IHtNbmdFcnJvckludGVybmFsLCBNbmdNZW51SXRlbX0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7TW5nQXV0aG9yaXphdGlvbkd1YXJkfSBmcm9tICcuLi9zZWN1cml0eSc7XG5pbXBvcnQge0FQZXJtaXNzaW9uc30gZnJvbSAnLi4vc2VjdXJpdHkvbW9kZWwnO1xuaW1wb3J0IHtSb3V0ZVV0aWx9IGZyb20gJy4uL3V0aWxzL3JvdXRlLnV0aWwnO1xuaW1wb3J0IHtCcmVhZGNydW1iVHlwZSwgTW5nUm91dGVyRGF0YX0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHtSb3V0ZXNCdWlsZGVyfSBmcm9tICcuL3JvdXRlcy1idWlsZGVyJztcbmltcG9ydCB7VGFibGV2aWV3Um91dGVCdWlsZGVySW50ZXJuYWx9IGZyb20gJy4vdGFibGV2aWV3LXJvdXRlLWJ1aWxkZXInO1xuXG5leHBvcnQgY2xhc3MgUm91dGVCdWlsZGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBSb3V0ZTtcbiAgICBwcml2YXRlIHJvdXRlUGF0aDogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgIHByb3RlY3RlZCByb3V0ZURhdGE6IE1uZ1JvdXRlckRhdGEgPSB7YnJlYWRjcnVtYjogbnVsbH07XG4gICAgcHJpdmF0ZSByb290PzogUm91dGVzQnVpbGRlcjtcbiAgICBwcml2YXRlIHBhcmVudD86IFJvdXRlQnVpbGRlcjtcbiAgICBwcml2YXRlIGNoaWxkcmVuOiBBcnJheTxSb3V0ZUJ1aWxkZXI+ID0gW107XG5cbiAgICBwcml2YXRlIG1lbnVJdGVtPzogTW5nTWVudUl0ZW07XG4gICAgcHJpdmF0ZSBtZW51SXRlbUNoaWxkcmVuOiBBcnJheTxNbmdNZW51SXRlbT4gPSBbXTtcblxuICAgIHByaXZhdGUgYnJlYWRjcnVtYj86IEJyZWFkY3J1bWJUeXBlO1xuICAgIHByaXZhdGUgcGFnZVRpdGxlPzogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9ucz86IEFQZXJtaXNzaW9ucztcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihyb3V0ZTogUm91dGUpIHtcbiAgICAgICAgdGhpcy5yb3V0ZSA9IHJvdXRlO1xuICAgICAgICBpZiAodGhpcy5yb3V0ZS5wYXRoICYmIHRoaXMucm91dGUucGF0aC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlUGF0aCA9IFt0aGlzLnJvdXRlLnBhdGhdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUocGF0aDogc3RyaW5nLCBjb21wb25lbnQ6IFR5cGU8YW55Pik6IFJvdXRlQnVpbGRlciB7XG4gICAgICAgIHJldHVybiBuZXcgUm91dGVCdWlsZGVyKHtcbiAgICAgICAgICAgIHBhdGg6IHBhdGgsXG4gICAgICAgICAgICBjb21wb25lbnQ6IGNvbXBvbmVudFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZVJlZGlyZWN0KHBhdGg6IHN0cmluZywgcmVkaXJlY3RUbzogc3RyaW5nLCBwYXRoTWF0Y2g6ICdmdWxsJyB8ICdwcmVmaXgnID0gJ3ByZWZpeCcpOiBSb3V0ZUJ1aWxkZXIge1xuICAgICAgICByZXR1cm4gbmV3IFJvdXRlQnVpbGRlcih7XG4gICAgICAgICAgICBwYXRoOiBwYXRoLFxuICAgICAgICAgICAgcmVkaXJlY3RUbzogcmVkaXJlY3RUbyxcbiAgICAgICAgICAgIHBhdGhNYXRjaDogcGF0aE1hdGNoXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZC5cbiAgICAgKiBVc2UgbWV0aG9kIHtAbGluayBjcmVhdGVMYXp5Um91dGVDb21wb25lbnR9IG9yIHtAbGluayBjcmVhdGVMYXp5Um91dGVNb2R1bGV9IGluc3RlYWQuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVMYXp5Um91dGUocGF0aDogc3RyaW5nLCBsb2FkQ2hpbGRyZW46IExvYWRDaGlsZHJlbiwgY2FuTG9hZD86IEFycmF5PGFueT4pOiBSb3V0ZUJ1aWxkZXIge1xuICAgICAgICBjb25zdCByb3V0ZTogUm91dGUgPSB7cGF0aDogcGF0aCwgbG9hZENoaWxkcmVuOiBsb2FkQ2hpbGRyZW59O1xuICAgICAgICBpZiAoY2FuTG9hZD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByb3V0ZS5jYW5Mb2FkID0gY2FuTG9hZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFJvdXRlQnVpbGRlcihyb3V0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVMYXp5Um91dGVNb2R1bGUocGF0aDogc3RyaW5nLCBsb2FkQ2hpbGRyZW46IExvYWRDaGlsZHJlbiwgY2FuTWF0Y2g/OiBBcnJheTxhbnk+KTogUm91dGVCdWlsZGVyIHtcbiAgICAgICAgY29uc3Qgcm91dGU6IFJvdXRlID0ge3BhdGg6IHBhdGgsIGxvYWRDaGlsZHJlbjogbG9hZENoaWxkcmVufTtcbiAgICAgICAgaWYgKGNhbk1hdGNoPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJvdXRlLmNhbk1hdGNoID0gY2FuTWF0Y2g7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBSb3V0ZUJ1aWxkZXIocm91dGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlTGF6eVJvdXRlQ29tcG9uZW50KFxuICAgICAgICBwYXRoOiBzdHJpbmcsXG4gICAgICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IFR5cGU8dW5rbm93bj4gfCBPYnNlcnZhYmxlPFR5cGU8dW5rbm93bj4gfCBEZWZhdWx0RXhwb3J0PFR5cGU8dW5rbm93bj4+PiB8IFByb21pc2U8VHlwZTx1bmtub3duPiB8IERlZmF1bHRFeHBvcnQ8VHlwZTx1bmtub3duPj4+LFxuICAgICAgICBjYW5NYXRjaD86IEFycmF5PGFueT5cbiAgICApOiBSb3V0ZUJ1aWxkZXIge1xuICAgICAgICBjb25zdCByb3V0ZTogUm91dGUgPSB7cGF0aDogcGF0aCwgbG9hZENvbXBvbmVudDogbG9hZENvbXBvbmVudH07XG4gICAgICAgIGlmIChjYW5NYXRjaD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByb3V0ZS5jYW5NYXRjaCA9IGNhbk1hdGNoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgUm91dGVCdWlsZGVyKHJvdXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUZyb21Sb3V0ZShyb3V0ZTogUm91dGUpOiBSb3V0ZUJ1aWxkZXIge1xuICAgICAgICByZXR1cm4gbmV3IFJvdXRlQnVpbGRlcihyb3V0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVMYXlvdXRSb3V0ZShwYXRoOiBzdHJpbmcsIGxheW91dENvbXBvbmVudCA9IE1uZ01haW5MYXlvdXRDb21wb25lbnQpOiBSb3V0ZUJ1aWxkZXIge1xuICAgICAgICByZXR1cm4gUm91dGVCdWlsZGVyLmNyZWF0ZShwYXRoLCBsYXlvdXRDb21wb25lbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUm9vdChyb3V0ZXNCdWlsZGVyOiBSb3V0ZXNCdWlsZGVyKTogdGhpcyB7XG4gICAgICAgIHRoaXMucm9vdCA9IHJvdXRlc0J1aWxkZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUGFyZW50KHBhcmVudDogUm91dGVCdWlsZGVyKTogdGhpcyB7XG4gICAgICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgICAgICB0aGlzLnJvdXRlUGF0aCA9IFJvdXRlVXRpbC5yZW1vdmVFbXB0eVBhdGhTZWdtZW50cyhbLi4udGhpcy5wYXJlbnQucm91dGVQYXRoLCB0aGlzLnJvdXRlLnBhdGggPz8gJyddKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhCcmVhZGNydW1iKGJyZWFkY3J1bWI6IEJyZWFkY3J1bWJUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuYnJlYWRjcnVtYiA9IGJyZWFkY3J1bWI7XG4gICAgICAgIHRoaXMucm91dGVEYXRhLmJyZWFkY3J1bWIgPSBicmVhZGNydW1iO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFBhZ2VUaXRsZShwYWdlVGl0bGU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLnBhZ2VUaXRsZSA9IHBhZ2VUaXRsZTtcbiAgICAgICAgdGhpcy5yb3V0ZURhdGEucGFnZVRpdGxlID0gcGFnZVRpdGxlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJlZGlyZWN0VG8ocmVkaXJlY3RUbzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMucm91dGUucmVkaXJlY3RUbyA9IHJlZGlyZWN0VG87XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUGF0aE1hdGNoKHBhdGhNYXRjaDogJ2Z1bGwnIHwgJ3ByZWZpeCcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5yb3V0ZS5wYXRoTWF0Y2ggPSBwYXRoTWF0Y2g7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVGl0bGUodGl0bGU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLndpdGhQYWdlVGl0bGUodGl0bGUpO1xuICAgICAgICB0aGlzLndpdGhCcmVhZGNydW1iKHRpdGxlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhDYW5BY3RpdmF0ZShkaVRva2VuOiBhbnkpOiB0aGlzIHtcbiAgICAgICAgaWYgKCF0aGlzLnJvdXRlLmNhbkFjdGl2YXRlKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlLmNhbkFjdGl2YXRlID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZS5wdXNoKGRpVG9rZW4pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENhbkRlYWN0aXZhdGUoZGlUb2tlbjogYW55KTogdGhpcyB7XG4gICAgICAgIGlmICghdGhpcy5yb3V0ZS5jYW5EZWFjdGl2YXRlKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlLmNhbkRlYWN0aXZhdGUgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJvdXRlLmNhbkRlYWN0aXZhdGUucHVzaChkaVRva2VuKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSZXNvbHZlcihkaVRva2VuOiBhbnksIG5hbWU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICBpZiAoIXRoaXMucm91dGUucmVzb2x2ZSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZS5yZXNvbHZlID0ge307XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3V0ZS5yZXNvbHZlW25hbWVdID0gZGlUb2tlbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEYXRhKGRhdGE6IE1uZ1JvdXRlckRhdGEpOiB0aGlzIHtcbiAgICAgICAgaWYgKCFkYXRhLmJyZWFkY3J1bWIpIHtcbiAgICAgICAgICAgIGRhdGEuYnJlYWRjcnVtYiA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3V0ZURhdGEgPSBkYXRhO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE1uZ01lbnVJdGVtKG1lbnVJdGVtOiBNbmdNZW51SXRlbSk6IHRoaXMge1xuICAgICAgICB0aGlzLm1lbnVJdGVtID0gbWVudUl0ZW07XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTWVudUl0ZW0oaWNvbj86IHN0cmluZywgbGFiZWw/OiBzdHJpbmcsIHJvdXRlckxpbms/OiBBcnJheTxzdHJpbmc+KTogdGhpcyB7XG4gICAgICAgIHRoaXMubWVudUl0ZW0gPSB0aGlzLmNyZWF0ZU1lbnVJdGVtKGljb24sIGxhYmVsLCByb3V0ZXJMaW5rKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhNZW51SXRlbUNoaWxkKGxhYmVsOiBzdHJpbmcsIGljb24/OiBzdHJpbmcsIHJvdXRlckxpbms/OiBBcnJheTxzdHJpbmc+KTogdGhpcyB7XG4gICAgICAgIHRoaXMubWVudUl0ZW1DaGlsZHJlbi5wdXNoKHRoaXMuY3JlYXRlTWVudUl0ZW0oaWNvbiwgbGFiZWwsIHJvdXRlckxpbmspKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhNbmdNZW51SXRlbUNoaWxkKG1lbnVJdGVtOiBNbmdNZW51SXRlbSk6IHRoaXMge1xuICAgICAgICB0aGlzLm1lbnVJdGVtQ2hpbGRyZW4ucHVzaChtZW51SXRlbSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTWVudUl0ZW1MYXp5Q2hpbGRyZW4oKTogdGhpcyB7XG4gICAgICAgIGlmICghdGhpcy5tZW51SXRlbSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWVudUl0ZW0ubGF6eUNoaWxkcmVuID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQZXJtaXNzaW9ucyhwZXJtaXNzaW9uczogQVBlcm1pc3Npb25zKTogdGhpcyB7XG4gICAgICAgIHRoaXMucGVybWlzc2lvbnMgPSBwZXJtaXNzaW9ucztcbiAgICAgICAgdGhpcy53aXRoQ2FuQWN0aXZhdGUoTW5nQXV0aG9yaXphdGlvbkd1YXJkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENoaWxkKHBhdGg6IHN0cmluZywgY29tcG9uZW50OiBUeXBlPGFueT4pOiBSb3V0ZUJ1aWxkZXIge1xuICAgICAgICBjb25zdCBjaGlsZFJvdXRlQnVpbGRlciA9IFJvdXRlQnVpbGRlci5jcmVhdGUocGF0aCwgY29tcG9uZW50KTtcbiAgICAgICAgdGhpcy5hZGRDaGlsZEJ1aWxkZXIoY2hpbGRSb3V0ZUJ1aWxkZXIpO1xuICAgICAgICByZXR1cm4gY2hpbGRSb3V0ZUJ1aWxkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENoaWxkQnVpbGRlcihidWlsZGVyOiBSb3V0ZUJ1aWxkZXIgfCBUYWJsZXZpZXdSb3V0ZUJ1aWxkZXJJbnRlcm5hbCk6IHRoaXMge1xuICAgICAgICBidWlsZGVyLndpdGhQYXJlbnQodGhpcyk7XG4gICAgICAgIGlmICh0aGlzLnJvb3QpIHtcbiAgICAgICAgICAgIGJ1aWxkZXIud2l0aFJvb3QodGhpcy5yb290KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoaWxkcmVuLnB1c2goYnVpbGRlcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b1BhcmVudCgpOiBSb3V0ZUJ1aWxkZXIge1xuICAgICAgICBpZiAoIXRoaXMucGFyZW50KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTW5nRXJyb3JJbnRlcm5hbCgnUGFyZW50IHdhcyBub3QgcHJvdmlkZWQuJywgJ1JvdXRlQnVpbGRlciBlcnJvcicpLmNvbnNvbGVFcnJvcigpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9Sb290KCk6IFJvdXRlc0J1aWxkZXIge1xuICAgICAgICBpZiAoIXRoaXMucm9vdCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE1uZ0Vycm9ySW50ZXJuYWwoJ1Jvb3Qgd2FzIG5vdCBwcm92aWRlZC4nLCAnUm91dGVCdWlsZGVyIGVycm9yJykuY29uc29sZUVycm9yKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucm9vdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmluaXNoKCk6IFJvdXRlc0J1aWxkZXIge1xuICAgICAgICByZXR1cm4gdGhpcy50b1Jvb3QoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYnVpbGQoKTogUm91dGUge1xuICAgICAgICBjb25zdCBhbmd1bGFyUm91dGU6IFJvdXRlID0ge1xuICAgICAgICAgICAgLi4udGhpcy5yb3V0ZVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChhbmd1bGFyUm91dGUuZGF0YSkge1xuICAgICAgICAgICAgYW5ndWxhclJvdXRlLmRhdGEgPSB7XG4gICAgICAgICAgICAgICAgLi4uYW5ndWxhclJvdXRlLmRhdGEsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5yb3V0ZURhdGFcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbmd1bGFyUm91dGUuZGF0YSA9IHsuLi50aGlzLnJvdXRlRGF0YX07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhcHBlbmQgcGVybWlzc2lvbnMgaWYgbm90IGFscmVhZHkgaW4gcm91dGUgZGF0YVxuICAgICAgICBpZiAodGhpcy5wZXJtaXNzaW9ucyAmJiAhKGFuZ3VsYXJSb3V0ZS5kYXRhIGFzIE1uZ1JvdXRlckRhdGEpLnBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICAoYW5ndWxhclJvdXRlLmRhdGEgYXMgTW5nUm91dGVyRGF0YSkucGVybWlzc2lvbnMgPSB0aGlzLnBlcm1pc3Npb25zO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWVudSA9IHRoaXMuYnVpbGRNZW51KCk7XG4gICAgICAgIGlmIChtZW51Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIChhbmd1bGFyUm91dGUuZGF0YSBhcyBNbmdSb3V0ZXJEYXRhKS5tZW51SXRlbXMgPSBtZW51O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCh0aGlzLnJvdXRlLmNoaWxkcmVuPy5sZW5ndGggPz8gMCkgPiAwIHx8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gcm91dGUgaGFzIGNoaWxkcmVuXG4gICAgICAgICAgICBhbmd1bGFyUm91dGUuY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgIGlmICh0aGlzLnJvdXRlLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBhbmd1bGFyUm91dGUuY2hpbGRyZW4ucHVzaCguLi50aGlzLnJvdXRlLmNoaWxkcmVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGRSb3V0ZSBvZiB0aGlzLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZS5jaGlsZHJlbi5wdXNoKGNoaWxkUm91dGUuYnVpbGQoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucm91dGUuY2FuQWN0aXZhdGUpIHtcbiAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZS5jYW5BY3RpdmF0ZSA9IFsuLi50aGlzLnJvdXRlLmNhbkFjdGl2YXRlXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZUNoaWxkKSB7XG4gICAgICAgICAgICBhbmd1bGFyUm91dGUuY2FuQWN0aXZhdGVDaGlsZCA9IFsuLi50aGlzLnJvdXRlLmNhbkFjdGl2YXRlQ2hpbGRdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJvdXRlLmNhbkxvYWQpIHtcbiAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZS5jYW5Mb2FkID0gWy4uLnRoaXMucm91dGUuY2FuTG9hZF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucm91dGUuY2FuRGVhY3RpdmF0ZSkge1xuICAgICAgICAgICAgYW5ndWxhclJvdXRlLmNhbkRlYWN0aXZhdGUgPSBbLi4udGhpcy5yb3V0ZS5jYW5EZWFjdGl2YXRlXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yb3V0ZS5yZXNvbHZlKSB7XG4gICAgICAgICAgICBhbmd1bGFyUm91dGUucmVzb2x2ZSA9IHsuLi50aGlzLnJvdXRlLnJlc29sdmV9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFuZ3VsYXJSb3V0ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkTWVudSgpOiBBcnJheTxNbmdNZW51SXRlbT4ge1xuICAgICAgICBjb25zdCBtZW51SXRlbUJ1aWxkOiBNbmdNZW51SXRlbSB8IG51bGwgPSB0aGlzLm1lbnVJdGVtID8gey4uLnRoaXMubWVudUl0ZW19IDogbnVsbDtcbiAgICAgICAgY29uc3Qgcm91dGVDaGlsZHJlbk1lbnVJdGVtczogQXJyYXk8TW5nTWVudUl0ZW0+ID0gdGhpcy5jaGlsZHJlbi5mbGF0TWFwKGNoaWxkID0+IGNoaWxkLmJ1aWxkTWVudSgpKTtcbiAgICAgICAgY29uc3QgbWVudUl0ZW1DaGlsZHJlbjogQXJyYXk8TW5nTWVudUl0ZW0+ID0gW107XG4gICAgICAgIGNvbnN0IG1lbnVJdGVtQ2hpbGRyZW5CdWlsZDogQXJyYXk8TW5nTWVudUl0ZW0+ID0gW107XG5cbiAgICAgICAgaWYgKG1lbnVJdGVtQnVpbGQ/Lml0ZW1zKSB7XG4gICAgICAgICAgICBtZW51SXRlbUNoaWxkcmVuQnVpbGQucHVzaCguLi5tZW51SXRlbUJ1aWxkLml0ZW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgbWVudUl0ZW1DaGlsZCBvZiB0aGlzLm1lbnVJdGVtQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbmFsTWVudUl0ZW1DaGlsZDogTW5nTWVudUl0ZW0gPSB7Li4ubWVudUl0ZW1DaGlsZH07XG4gICAgICAgICAgICBpZiAoIWZpbmFsTWVudUl0ZW1DaGlsZC5yb3V0ZXJMaW5rKSB7XG4gICAgICAgICAgICAgICAgZmluYWxNZW51SXRlbUNoaWxkLnJvdXRlckxpbmsgPSB0aGlzLnJvdXRlUGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgZmluYWxNZW51SXRlbUNoaWxkLnJvdXRlckxpbmsgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZmluYWxNZW51SXRlbUNoaWxkLnJvdXRlckxpbmsgPSBbZmluYWxNZW51SXRlbUNoaWxkLnJvdXRlckxpbmtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxNZW51SXRlbUNoaWxkLnJvdXRlckxpbmsgPSBSb3V0ZVV0aWwucmVtb3ZlRW1wdHlQYXRoU2VnbWVudHMoZmluYWxNZW51SXRlbUNoaWxkLnJvdXRlckxpbmspO1xuICAgICAgICAgICAgbWVudUl0ZW1DaGlsZHJlbi5wdXNoKGZpbmFsTWVudUl0ZW1DaGlsZCk7XG4gICAgICAgIH1cblxuICAgICAgICBtZW51SXRlbUNoaWxkcmVuQnVpbGQucHVzaCguLi5tZW51SXRlbUNoaWxkcmVuLCAuLi5yb3V0ZUNoaWxkcmVuTWVudUl0ZW1zKTtcblxuICAgICAgICBpZiAoIW1lbnVJdGVtQnVpbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBtZW51SXRlbUNoaWxkcmVuQnVpbGQ7XG4gICAgICAgIH1cblxuICAgICAgICBtZW51SXRlbUJ1aWxkLmxhYmVsID0gbWVudUl0ZW1CdWlsZC5sYWJlbCA/PyB0aGlzLnBhZ2VUaXRsZTtcbiAgICAgICAgaWYgKHR5cGVvZiBtZW51SXRlbUJ1aWxkLnJvdXRlckxpbmsgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBtZW51SXRlbUJ1aWxkLnJvdXRlckxpbmsgPSBbbWVudUl0ZW1CdWlsZC5yb3V0ZXJMaW5rXTtcbiAgICAgICAgfVxuICAgICAgICBtZW51SXRlbUJ1aWxkLnJvdXRlckxpbmsgPSBSb3V0ZVV0aWwucmVtb3ZlRW1wdHlQYXRoU2VnbWVudHMobWVudUl0ZW1CdWlsZC5yb3V0ZXJMaW5rID8/IHRoaXMucm91dGVQYXRoKTtcbiAgICAgICAgaWYgKG1lbnVJdGVtQ2hpbGRyZW5CdWlsZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBtZW51SXRlbUJ1aWxkLml0ZW1zID0gbWVudUl0ZW1DaGlsZHJlbkJ1aWxkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFtZW51SXRlbUJ1aWxkLmd1YXJkcykge1xuICAgICAgICAgICAgY29uc3QgZ3VhcmRzID0gdGhpcy5maW5kTWVudUl0ZW1HdWFyZHMoKTtcbiAgICAgICAgICAgIGlmIChndWFyZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIG1lbnVJdGVtQnVpbGQuZ3VhcmRzID0gZ3VhcmRzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFtZW51SXRlbUJ1aWxkLnBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICBtZW51SXRlbUJ1aWxkLnBlcm1pc3Npb25zID0gdGhpcy5maW5kTWVudUl0ZW1QZXJtaXNzaW9ucygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFttZW51SXRlbUJ1aWxkXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZU1lbnVJdGVtKGljb24/OiBzdHJpbmcsIGxhYmVsPzogc3RyaW5nLCByb3V0ZXJMaW5rPzogQXJyYXk8c3RyaW5nPikge1xuICAgICAgICBjb25zdCBtZW51SXRlbTogTW5nTWVudUl0ZW0gPSB7fTtcbiAgICAgICAgaWYgKGljb24pIHtcbiAgICAgICAgICAgIG1lbnVJdGVtLmljb24gPSBpY29uO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsYWJlbCkge1xuICAgICAgICAgICAgbWVudUl0ZW0ubGFiZWwgPSBsYWJlbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocm91dGVyTGluaykge1xuICAgICAgICAgICAgbWVudUl0ZW0ucm91dGVyTGluayA9IHJvdXRlckxpbms7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lbnVJdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZE1lbnVJdGVtR3VhcmRzKCk6IEFycmF5PGFueT4ge1xuICAgICAgICBjb25zdCBndWFyZHM6IEFycmF5PGFueT4gPSBbXTtcbiAgICAgICAgaWYgKHRoaXMucm91dGUuY2FuQWN0aXZhdGU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgZ3VhcmRzLnB1c2goLi4udGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucGFyZW50KSB7XG4gICAgICAgICAgICAvLyBDaGVjayBmb3IgcGFyZW50IGd1YXJkcyB0aGF0IHNob3VsZCBiZSBpbmNsdWRlZCBpbiBkZWNpc2lvbiB0byBoaWRlIG1lbnUgaXRlbSFcbiAgICAgICAgICAgIC8vIFNvbWUgcGFyZW50IHJvdXRlcyBtaWdodCBoYXZlIGd1YXJkcywgYnV0IG5vIG1lbnUgaXRlbXMsIHNvIHRoaXMgZ3VhcmRzIG11c3QgYmUgdGFrZW4gaW50byBhY2NvdW50IGhlcmUsXG4gICAgICAgICAgICAvLyBiZWNhdXNlIHRoZXJlIGlzIG5vIHBhcmVudCBtZW51IGl0ZW0gdG8gaGlkZS5cbiAgICAgICAgICAgIHRoaXMucGFyZW50LmZpbmRNZW51SXRlbUd1YXJkcygpLmZvckVhY2goZyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGd1YXJkcy5pbmRleE9mKGcpIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICBndWFyZHMucHVzaChnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ3VhcmRzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBmaW5kTWVudUl0ZW1QZXJtaXNzaW9ucygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW0/LnBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tZW51SXRlbS5wZXJtaXNzaW9ucztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yb3V0ZURhdGEucGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgYWxyZWFkeSBidWlsdFxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVEYXRhLnBlcm1pc3Npb25zO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wZXJtaXNzaW9ucztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbn1cbiJdfQ==