@bizdoc/core 1.11.0 → 1.11.4

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 (40) hide show
  1. package/esm2020/lib/admin/document-trace/document-trace.component.mjs +3 -3
  2. package/esm2020/lib/admin/document-trace/trace-element.component.mjs +2 -2
  3. package/esm2020/lib/admin/form/workflow/role-node.component.mjs +5 -4
  4. package/esm2020/lib/admin/positions/positions.component.mjs +16 -3
  5. package/esm2020/lib/compose/action/action-picker.component.mjs +7 -36
  6. package/esm2020/lib/compose/action/action.base.mjs +43 -0
  7. package/esm2020/lib/compose/action/action.pane.dialog.exp.mjs +70 -0
  8. package/esm2020/lib/compose/compose.pane.component.mjs +3 -3
  9. package/esm2020/lib/compose/trace/flow.component.mjs +6 -5
  10. package/esm2020/lib/core/configuration.mjs +8 -10
  11. package/esm2020/lib/core/mailbox.service.mjs +1 -1
  12. package/esm2020/lib/core/translations.mjs +3 -1
  13. package/esm2020/lib/cube/accum/accum.component.mjs +2 -2
  14. package/esm2020/lib/cube/chart/chart.component.mjs +2 -2
  15. package/esm2020/lib/cube/explore/explore.pane.component.mjs +2 -2
  16. package/esm2020/lib/cube/grid/grid.component.mjs +2 -2
  17. package/esm2020/lib/cube/grid/spreadsheet.component.mjs +3 -3
  18. package/esm2020/lib/cube/matrix/matrix.pane.component.mjs +2 -4
  19. package/esm2020/lib/cube/matrix/popup.component.mjs +3 -3
  20. package/esm2020/lib/cube/matrix/table.component.mjs +8 -7
  21. package/esm2020/lib/cube/parallel/parallel.component.mjs +2 -2
  22. package/esm2020/lib/cube/pivot/pivot.component.mjs +2 -2
  23. package/esm2020/lib/cube/view.mobile.component.mjs +2 -2
  24. package/esm2020/lib/desktop.module.mjs +6 -6
  25. package/esm2020/lib/routes.desktop.mjs +13 -7
  26. package/esm2020/lib/views/cube/explore.component.mjs +2 -2
  27. package/fesm2015/bizdoc-core.mjs +277 -237
  28. package/fesm2015/bizdoc-core.mjs.map +1 -1
  29. package/fesm2020/bizdoc-core.mjs +277 -237
  30. package/fesm2020/bizdoc-core.mjs.map +1 -1
  31. package/lib/admin/positions/positions.component.d.ts +5 -0
  32. package/lib/compose/action/action-picker.component.d.ts +4 -6
  33. package/lib/compose/action/action.base.d.ts +11 -0
  34. package/lib/compose/action/action.pane.dialog.exp.d.ts +29 -0
  35. package/lib/core/configuration.d.ts +8 -10
  36. package/lib/core/translations.d.ts +2 -0
  37. package/lib/desktop.module.d.ts +2 -2
  38. package/package.json +1 -1
  39. package/esm2020/lib/compose/action/action.pane.dialog.mjs +0 -59
  40. package/lib/compose/action/action.pane.dialog.d.ts +0 -26
@@ -152,16 +152,17 @@ export class FlowViewComponent extends TraceBase {
152
152
  connector.targetDecorator.height = 7;
153
153
  connector.targetDecorator.width = 7;
154
154
  if (connector.addInfo.estimate) {
155
+ connector.style.strokeDashArray = '2 2';
155
156
  connector.style.strokeColor =
156
157
  connector.targetDecorator.style.fill =
157
158
  connector.targetDecorator.style.strokeColor =
158
159
  this._session.theme.dark ? 'white' : 'black';
159
- connector.style.opacity = .6;
160
+ connector.style.strokeWidth = 1;
160
161
  }
161
162
  else {
162
163
  connector.style.strokeColor = connector.targetDecorator.style.strokeColor = connector.targetDecorator.style.fill = this._accentColor;
164
+ connector.style.strokeWidth = 2;
163
165
  }
164
- connector.style.strokeWidth = 2;
165
166
  connector.targetDecorator.shape = 'None';
166
167
  }
167
168
  /** */
@@ -222,7 +223,7 @@ export class FlowViewComponent extends TraceBase {
222
223
  estimate: c.estimate
223
224
  }
224
225
  });
225
- if (c.sourceId === node.id && !node.fyi)
226
+ if (c.sourceId === node.id)
226
227
  connectors.push({
227
228
  sourceID: nod.id,
228
229
  targetID: c.targetId,
@@ -328,7 +329,7 @@ export class FlowViewComponent extends TraceBase {
328
329
  y: 1
329
330
  } : { x: .5 },
330
331
  style: {
331
- bold: true
332
+ //bold: true
332
333
  },
333
334
  verticalAlignment: shape.type === 'Path' ? 'Top' : 'Center'
334
335
  }]
@@ -614,4 +615,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
614
615
  }], connectorType: [{
615
616
  type: Input
616
617
  }] } });
617
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvbXBvc2UvdHJhY2UvZmxvdy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW1ELE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBMEMsWUFBWSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBRSw4QkFBOEIsRUFBcUIsWUFBWSxFQUFFLFdBQVcsRUFBOEcscUJBQXFCLEVBQUUsZUFBZSxFQUFtQixlQUFlLEVBQWtDLE1BQU0sa0NBQWtDLENBQUM7QUFDbGMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRTFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7OztBQU9yRCxPQUFPLENBQUMsTUFBTSxDQUFDLHVCQUF1QixFQUFFLFlBQVksRUFBRSxXQUFXLENBQUEscURBQXFELENBQUMsQ0FBQztBQUV4SCxNQUFNLFlBQVksR0FBRyx1RkFBdUYsRUFDMUcsUUFBUSxHQUFHLGtHQUFrRyxFQUM3RyxjQUFjLEdBQUcsbVFBQW1RLEVBQ3BSLGFBQWEsR0FBRyxzVEFBc1QsQ0FBQztBQVd6VSx5QkFBeUI7QUFDekIsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFNBQVM7SUFxQzlDLHlCQUF5QjtJQUN6QixZQUFvQixTQUF5QixFQUFVLFFBQXdCLEVBQVUsVUFBNEIsRUFDM0csU0FBNkIsRUFDN0IsV0FBdUMsRUFDL0MsR0FBZTtRQUNmLEtBQUss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QyxNQUFNLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDbkUsTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztZQUN2RSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sUUFBUSxDQUFDLElBQVU7UUFDekIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUNELFdBQVc7UUFDVCxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3pDLENBQUM7OzhHQTdsQlUsaUJBQWlCO2tHQUFqQixpQkFBaUIsbU1BUmxCLEVBQUUsK0NBRUcsQ0FBQyw4QkFBOEIsQ0FBQzsyRkFNcEMsaUJBQWlCO2tCQVY3QixTQUFTOytCQUNFLGFBQWEsWUFDYixFQUFFLGlCQUVHLENBQUMsOEJBQThCLENBQUMsUUFDekM7d0JBQ0osR0FBRyxFQUFFLEtBQUs7cUJBQ1g7b1BBSVEsS0FBSztzQkFBYixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIFNpbXBsZUNoYW5nZXMsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOb2RlTW9kZWwsIENvbm5lY3Rvck1vZGVsLCBMYXlvdXRNb2RlbCwgRGlhZ3JhbVRvb2xzLCBEaWFncmFtLCBEaWFncmFtQ29uc3RyYWludHMsIENvbXBsZXhIaWVyYXJjaGljYWxUcmVlLCBDb21wbGV4SGllcmFyY2hpY2FsVHJlZVNlcnZpY2UsIENvbm5lY3RvckJyaWRnaW5nLCBCcG1uRGlhZ3JhbXMsIERhdGFCaW5kaW5nLCBTY3JvbGxTZXR0aW5nc01vZGVsLCBTbmFwU2V0dGluZ3NNb2RlbCwgU2VnbWVudHMsIExpbmVSb3V0aW5nLCBUcmVlSW5mbywgSU1vdXNlRXZlbnRBcmdzLCBMaW5lRGlzdHJpYnV0aW9uLCBDb25uZWN0aW9uUG9pbnRPcmlnaW4sIFNuYXBDb25zdHJhaW50cywgTGF5b3V0QW5pbWF0aW9uLCBOb2RlQ29uc3RyYWludHMsIEZsb3dTaGFwZU1vZGVsLCBCcG1uU2hhcGVNb2RlbCB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWRpYWdyYW1zJztcclxuaW1wb3J0IHsgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgeyBEb2N1bWVudE1vZGVsLCBSZWNpcGllbnQsIE5vZGVJbmZvLCBHZW5kZXIsIEZsb3dOb2RlLCBVc2VySW5mbywgU3RhdGUsIENvbm5lY3RvckluZm8gfSBmcm9tIFwiLi4vLi4vY29yZS9tb2RlbHNcIjtcclxuaW1wb3J0IHsgZ2V0V2FybiB9IGZyb20gJy4uLy4uL2NvcmUvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgVHJhY2VCYXNlLCBTVEFSVF9OT0RFIH0gZnJvbSAnLi90cmFjZS5iYXNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9hY2NvdW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEh1YlNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2h1Yi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRHVyYXRpb25Gb3JtYXRQaXBlIH0gZnJvbSAnLi4vLi4vY29yZS9waXBlcy9kdXJhdGlvbi1mb3JtYXQucGlwZSc7XHJcblxyXG5EaWFncmFtLkluamVjdChDb21wbGV4SGllcmFyY2hpY2FsVHJlZSwgQnBtbkRpYWdyYW1zLCBEYXRhQmluZGluZy8qLCBMYXlvdXRBbmltYXRpb24sIExpbmVSb3V0aW5nLCBDb25uZWN0b3JCcmlkZ2luZyovKTtcclxuXHJcbmNvbnN0IFBFTkRJTkdfUEFUSCA9ICdNMTgsMjJsLTAuMDEtNkwxNCwxMmwzLjk5LTQuMDFMMTgsMkg2djZsNCw0bC00LDMuOTlWMjJIMTh6IE04LDcuNVY0aDh2My41bC00LDRMOCw3LjV6JyxcclxuICBGWUlfUEFUSCA9ICdNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtNmgydjZ6bTAtOGgtMlY3aDJ2MnonLFxyXG4gIEVTQ0FMQVRFRF9QQVRIID0gJ00yMiA1LjcybC00LjYtMy44Ni0xLjI5IDEuNTMgNC42IDMuODZMMjIgNS43MnpNNy44OCAzLjM5TDYuNiAxLjg2IDIgNS43MWwxLjI5IDEuNTMgNC41OS0zLjg1ek0xMi41IDhIMTF2Nmw0Ljc1IDIuODUuNzUtMS4yMy00LTIuMzdWOHpNMTIgNGMtNC45NyAwLTkgNC4wMy05IDlzNC4wMiA5IDkgOWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXptMCAxNmMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6JyxcclxuICBXQVJOTklOR19QQVRIID0gJ00gMTMuNzYzNzM1LDEuODQzMzczNSBIIDYuMzAzNzM0OSBsIC01LjI3LDUuMjcgdiA3LjQ1OTk5OTUgbCA1LjI3LDUuMjcgaCA3LjQ2MDAwMDEgbCA1LjI3LC01LjI3IFYgNy4xMTMzNzM1IFogbSAtMy43MywxNC4yOTk5OTk1IGMgLTAuNzIwMDAwMSwwIC0xLjMwMDAwMDEsLTAuNTggLTEuMzAwMDAwMSwtMS4zIDAsLTAuNzIgMC41OCwtMS4zIDEuMzAwMDAwMSwtMS4zIDAuNzIsMCAxLjMsMC41OCAxLjMsMS4zIDAsMC43MiAtMC41OCwxLjMgLTEuMywxLjMgeiBtIDEsLTQuMyBIIDkuMDMzNzM0OSBWIDUuODQzMzczNSBoIDIuMDAwMDAwMSB6JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWZsb3cnLFxyXG4gIHRlbXBsYXRlOiAnJyxcclxuICBzdHlsZVVybHM6IFsnLi9mbG93LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgdmlld1Byb3ZpZGVyczogW0NvbXBsZXhIaWVyYXJjaGljYWxUcmVlU2VydmljZV0sXHJcbiAgaG9zdDoge1xyXG4gICAgZGlyOiAnbHRyJ1xyXG4gIH1cclxufSlcclxuLyoqIGZsb3ctdmlldyBjb21wb25lbnQqL1xyXG5leHBvcnQgY2xhc3MgRmxvd1ZpZXdDb21wb25lbnQgZXh0ZW5kcyBUcmFjZUJhc2UgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgbW9kZWw6IERvY3VtZW50TW9kZWw8YW55PjtcclxuICBASW5wdXQoKSBjb25uZWN0b3JUeXBlOiBTZWdtZW50cyA9ICdPcnRob2dvbmFsJztcclxuICBkaWFncmFtOiBEaWFncmFtO1xyXG4gIHJlYWRvbmx5IHRvb2w6IERpYWdyYW1Ub29scyA9IERpYWdyYW1Ub29scy5ab29tUGFuO1xyXG4gIHJlYWRvbmx5IGRpYWdyYW1Db25zdHJhaW50czogRGlhZ3JhbUNvbnN0cmFpbnRzID1cclxuICAgIERpYWdyYW1Db25zdHJhaW50cy5EZWZhdWx0IHxcclxuICAgIERpYWdyYW1Db25zdHJhaW50cy5QYW4gfFxyXG4gICAgRGlhZ3JhbUNvbnN0cmFpbnRzLkxpbmVSb3V0aW5nIHxcclxuICAgIERpYWdyYW1Db25zdHJhaW50cy5CcmlkZ2luZztcclxuICBwdWJsaWMgcmVhZG9ubHkgbGF5b3V0ID0ge1xyXG4gICAgdHlwZTogJ0NvbXBsZXhIaWVyYXJjaGljYWxUcmVlJyxcclxuICAgIGNvbm5lY3Rpb25Qb2ludE9yaWdpbjogQ29ubmVjdGlvblBvaW50T3JpZ2luLkRpZmZlcmVudFBvaW50LFxyXG4gICAgaG9yaXpvbnRhbFNwYWNpbmc6IDUwLFxyXG4gICAgdmVydGljYWxTcGFjaW5nOiA1MCxcclxuICAgIHZlcnRpY2FsQWxpZ25tZW50OiAnVG9wJyxcclxuICAgIGNvbm5lY3Rpb25EaXJlY3Rpb246ICdPcmllbnRhdGlvbicsXHJcbiAgICBvcmllbnRhdGlvbjogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlID8gJ1JpZ2h0VG9MZWZ0JyA6ICdMZWZ0VG9SaWdodCcsXHJcbiAgICBtYXJnaW46IHsgbGVmdDogMTAsIHJpZ2h0OiAxMCwgdG9wOiAxMCwgYm90dG9tOiAxMCB9XHJcbiAgfSBhcyBMYXlvdXRNb2RlbDtcclxuXHJcbiAgcmVhZG9ubHkgc2Nyb2xsU2V0dGluZ3MgPSB7XHJcbiAgICBtaW5ab29tOiAuNSxcclxuICAgIGNhbkF1dG9TY3JvbGw6IHRydWUsXHJcbiAgICBjdXJyZW50Wm9vbTogMS4yLFxyXG4gICAgcGFkZGluZzogeyB0b3A6IDAsIGJvdHRvbTogMCB9LFxyXG4gICAgYXV0b1Njcm9sbEJvcmRlcjogeyB0b3A6IDAsIGJvdHRvbTogMCB9LFxyXG4gICAgbWF4Wm9vbTogMi41XHJcbiAgfSBhcyBTY3JvbGxTZXR0aW5nc01vZGVsO1xyXG5cclxuICByZWFkb25seSBzbmFwU2V0dGluZ3MgPSB7XHJcbiAgICBjb25zdHJhaW50czogU25hcENvbnN0cmFpbnRzLk5vbmUsXHJcbiAgICBncmlkVHlwZTogJ0RvdHMnXHJcbiAgfSBhcyBTbmFwU2V0dGluZ3NNb2RlbDtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9jb25maWd1cmF0aW9uOiB7IFtuYW1lOiBzdHJpbmddOiBGbG93Tm9kZSB9ID0ge307XHJcbiAgcHJpdmF0ZSBfaXNzdWVkOiBEYXRlO1xyXG4gIHByaXZhdGUgX2FjY2VudENvbG9yID0gdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoKTtcclxuICAvKiogd29ya2Zsb3ctdmlldyBjdG9yICovXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfYWNjb3VudHM6IEFjY291bnRTZXJ2aWNlLCBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSwgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZHVyYXRpb246IER1cmF0aW9uRm9ybWF0UGlwZSxcclxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+LFxyXG4gICAgaHViOiBIdWJTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcihodWIpO1xyXG4gICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5vZGVzLmZvckVhY2gobiA9PlxyXG4gICAgICB0aGlzLl9jb25maWd1cmF0aW9uW24ubmFtZV0gPSBuKTtcclxuICAgIF9zZXNzaW9uLnRoZW1lQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5cclxuICAgICAgc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLl9hY2NlbnRDb2xvciA9IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KCk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhfY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgdGhpcy5faW5pdGlhbGl6ZSgpO1xyXG4gIH1cclxuICBwcml2YXRlIGFzeW5jIF9pbml0aWFsaXplKCkge1xyXG4gICAgY29uc3QgeyBjb25uZWN0b3JzLCBub2RlcywgaW5kaWNhdG9ycyB9ID0gYXdhaXQgdGhpcy5fcHJlcGFyZSgpO1xyXG4gICAgdGhpcy5kaWFncmFtICYmIHRoaXMuZGlhZ3JhbS5kZXN0cm95KCk7XHJcbiAgICB0aGlzLmRpYWdyYW0gPSBuZXcgRGlhZ3JhbSh7XHJcbiAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgIGhlaWdodDogMzgwLFxyXG4gICAgICBub2RlcyxcclxuICAgICAgY29ubmVjdG9ycyxcclxuICAgICAgbGF5b3V0OiB0aGlzLmxheW91dCxcclxuICAgICAgdG9vbDogdGhpcy50b29sLFxyXG4gICAgICBzY3JvbGxTZXR0aW5nczogdGhpcy5zY3JvbGxTZXR0aW5ncyxcclxuICAgICAgc25hcFNldHRpbmdzOiB0aGlzLnNuYXBTZXR0aW5ncyxcclxuICAgICAgY29uc3RyYWludHM6IHRoaXMuZGlhZ3JhbUNvbnN0cmFpbnRzLFxyXG4gICAgICBnZXRDb25uZWN0b3JEZWZhdWx0czogdGhpcy5jb25uRGVmYXVsdHMuYmluZCh0aGlzKSxcclxuICAgICAgZ2V0Tm9kZURlZmF1bHRzOiB0aGlzLm5vZGVEZWZhdWx0cy5iaW5kKHRoaXMpLFxyXG4gICAgfSwgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICAgIHRoaXMuZGlhZ3JhbS5kb0xheW91dCgpO1xyXG4gICAgaW5kaWNhdG9ycy5mb3JFYWNoKChuLCBpKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZGlhZ3JhbS5nZXROb2RlT2JqZWN0KChuLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbCkucGFyZW50SWQpO1xyXG4gICAgICBuLm9mZnNldFggPSBwYXJlbnQub2Zmc2V0WCArICh0aGlzLl9zZXNzaW9uLmludmVyc2UgPyAtMjUgOiAyNSk7XHJcbiAgICAgIG4ub2Zmc2V0WSA9IHBhcmVudC5vZmZzZXRZICsgMjU7XHJcbiAgICAgIG4uekluZGV4ID0gMTAwMCArIGk7XHJcbiAgICAgIHRoaXMuZGlhZ3JhbS5hZGQobik7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhZ3JhbS5maXRUb1BhZ2UoKTtcclxuICAgIGludGVydmFsKDYwMDAwKS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKFxyXG4gICAgICB0aGlzLl9yZWZyZXNoLmJpbmQodGhpcylcclxuICAgICk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3JlZnJlc2goKSB7XHJcbiAgICBzdXBlci5yZXNldEVzdGltYXRlVGltZSgpO1xyXG4gICAgdGhpcy5kaWFncmFtLm5vZGVzLmZvckVhY2gobiA9PiB7XHJcbiAgICAgIGNvbnN0IHsgbm9kZSwgcmVjaXBpZW50IH0gPSBuLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbDtcclxuICAgICAgaWYgKHJlY2lwaWVudCkge1xyXG4gICAgICAgIGlmICghcmVjaXBpZW50LnJlcGxpZWQgJiYgcmVjaXBpZW50LnBlbmRpbmcpIHtcclxuICAgICAgICAgIGlmIChyZWNpcGllbnQuZXN0aW1hdGUpIChuLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbCkudG9vbHRpcC5lc3RpbWF0ZWRUaW1lID0gdGhpcy5fdGltZUVzdGltYXRlKG5vZGUpO1xyXG4gICAgICAgICAgZWxzZSBpZiAobm9kZS5zdGFuZGFyZFRpbWUpIHtcclxuICAgICAgICAgICAgY29uc3QgZGlmZiA9IG5vZGUuc3RhbmRhcmRUaW1lIC0gZGF5anMoKS5kaWZmKG5vZGUudGltZSwgJ3MnKTtcclxuICAgICAgICAgICAgaWYgKGRpZmYgPiAwKVxyXG4gICAgICAgICAgICAgIChuLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbCkudG9vbHRpcC5lc3RpbWF0ZWRUaW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRXN0aW1hdGVUaW1lJywgdGhpcy5fZHVyYXRpb24udHJhbnNmb3JtKGRpZmYpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIG4udG9vbHRpcC5jb250ZW50ID0gdGhpcy5fdG9vbHRpcCgobi5hZGRJbmZvIGFzIE5vZGVJbmZvTW9kZWwpLnRvb2x0aXApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS5lc3RpbWF0ZSlcclxuICAgICAgICAgIChuLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbCkudG9vbHRpcC5lc3RpbWF0ZWRUaW1lID0gdGhpcy5fdGltZUVzdGltYXRlKG5vZGUpLFxyXG4gICAgICAgICAgICBuLnRvb2x0aXAuY29udGVudCA9IHRoaXMuX3Rvb2x0aXAoKG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsKS50b29sdGlwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBwdWJsaWMgcmVmcmVzaCgpIHtcclxuICAgIHRoaXMubmdPbkNoYW5nZXMobnVsbCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBvYmpcclxuICAgKi9cclxuICBwdWJsaWMgbm9kZURlZmF1bHRzKG9iajogTm9kZU1vZGVsKTogTm9kZU1vZGVsIHtcclxuICAgIGNvbnN0IHsgcmVjaXBpZW50LCBub2RlLCBpbmRpY2F0b3IgfSA9IG9iai5hZGRJbmZvIGFzIE5vZGVJbmZvTW9kZWw7XHJcblxyXG4gICAgaWYgKGluZGljYXRvcikge1xyXG4gICAgICBvYmoud2lkdGggPSBvYmouaGVpZ2h0ID0gMTU7XHJcbiAgICAgIG9iai5zdHlsZS5zdHJva2VXaWR0aCA9IDA7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgLy8gb2JqLnNoYXBlID0geyB0eXBlOiAnQnBtbicsIHNoYXBlOiAnRXZlbnQnIH0gYXMgQnBtblNoYXBlTW9kZWw7XHJcbiAgICAgIG9iai53aWR0aCA9IG9iai5oZWlnaHQgPSA1MDtcclxuICAgICAgaWYgKG9iai5hbm5vdGF0aW9ucyAmJiBvYmouYW5ub3RhdGlvbnMubGVuZ3RoKSBvYmouYW5ub3RhdGlvbnNbMF0uc3R5bGUuY29sb3IgPSB0aGlzLl9zZXNzaW9uLnRoZW1lLmRhcmsgPyAnd2hpdGUnIDogJ2JsYWNrJztcclxuICAgICAgaWYgKG5vZGUgJiYgbm9kZS5lc3RpbWF0ZSkge1xyXG4gICAgICAgIG9iai5zdHlsZS5zdHJva2VDb2xvciA9IHRoaXMuX3Nlc3Npb24udGhlbWUuZGFyayA/ICd3aGl0ZScgOiAnYmxhY2snO1xyXG4gICAgICAgIG9iai5zdHlsZS5vcGFjaXR5ID0gb2JqLmFubm90YXRpb25zWzBdLnN0eWxlLm9wYWNpdHkgPSAuNjtcclxuICAgICAgICBvYmouc3R5bGUuZmlsbCA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgb2JqLnN0eWxlLnN0cm9rZUNvbG9yID0gdGhpcy5fYWNjZW50Q29sb3I7XHJcbiAgICAgICAgb2JqLnN0eWxlLmZpbGwgPSByZWNpcGllbnQgJiYgcmVjaXBpZW50LnBlbmRpbmcgPyB0aGlzLl9zZXNzaW9uLmdldEFjY2VudCg0MDApIDogJ3RyYW5zcGFyZW50JztcclxuICAgICAgfVxyXG4gICAgICBvYmouc3R5bGUuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9iajtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGNvbm5lY3RvclxyXG4gICAqL1xyXG4gIHB1YmxpYyBjb25uRGVmYXVsdHMoY29ubmVjdG9yOiBDb25uZWN0b3JNb2RlbCkge1xyXG4gICAgY29ubmVjdG9yLnR5cGUgPSB0aGlzLmNvbm5lY3RvclR5cGU7XHJcbiAgICBjb25uZWN0b3IuY29ybmVyUmFkaXVzID0gNjtcclxuICAgIGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3IuaGVpZ2h0ID0gNztcclxuICAgIGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iud2lkdGggPSA3O1xyXG4gICAgaWYgKChjb25uZWN0b3IuYWRkSW5mbyBhcyBDb25uZWN0b3JJbmZvTW9kZWwpLmVzdGltYXRlKSB7XHJcbiAgICAgIGNvbm5lY3Rvci5zdHlsZS5zdHJva2VDb2xvciA9XHJcbiAgICAgICAgY29ubmVjdG9yLnRhcmdldERlY29yYXRvci5zdHlsZS5maWxsID1cclxuICAgICAgICBjb25uZWN0b3IudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLnN0cm9rZUNvbG9yID1cclxuICAgICAgICB0aGlzLl9zZXNzaW9uLnRoZW1lLmRhcmsgPyAnd2hpdGUnIDogJ2JsYWNrJztcclxuICAgICAgY29ubmVjdG9yLnN0eWxlLm9wYWNpdHkgPSAuNjtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPSBjb25uZWN0b3IudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLnN0cm9rZUNvbG9yID0gY29ubmVjdG9yLnRhcmdldERlY29yYXRvci5zdHlsZS5maWxsID0gdGhpcy5fYWNjZW50Q29sb3I7XHJcbiAgICB9XHJcbiAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgY29ubmVjdG9yLnRhcmdldERlY29yYXRvci5zaGFwZSA9ICdOb25lJztcclxuICB9XHJcbiAgLyoqICovXHJcbiAgcHJpdmF0ZSBhc3luYyBfcHJlcGFyZSgpOiBQcm9taXNlPHsgbm9kZXM6IE5vZGVNb2RlbFtdOyBjb25uZWN0b3JzOiBDb25uZWN0b3JNb2RlbFtdOyBpbmRpY2F0b3JzOiBOb2RlTW9kZWxbXSB9PiB7XHJcbiAgICBjb25zdCB7IGNvbm5lY3RvcnM6IGRjb25uZWN0b3JzLCBub2RlczogZG5vZGVzIH0gPSB0aGlzLm1vZGVsLndvcmtmbG93O1xyXG4gICAgY29uc3QgaW5kaWNhdG9yczogTm9kZU1vZGVsW10gPSBbXSwgY29ubmVjdG9yczogQ29ubmVjdG9yTW9kZWxbXSA9IGRjb25uZWN0b3JzLm1hcChjID0+IChcclxuICAgICAge1xyXG4gICAgICAgIHNvdXJjZUlEOiBjLnNvdXJjZUlkLFxyXG4gICAgICAgIHRhcmdldElEOiBjLnRhcmdldElkLFxyXG4gICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgIGVzdGltYXRlOiBjLmVzdGltYXRlLFxyXG4gICAgICAgICAgdGltZTogYy50aW1lXHJcbiAgICAgICAgfSBhcyBDb25uZWN0b3JJbmZvTW9kZWxcclxuICAgICAgfSBhcyBDb25uZWN0b3JNb2RlbFxyXG4gICAgKSksIG5vZGVzOiBOb2RlTW9kZWxbXSA9IFtdO1xyXG4gICAgdGhpcy5faXNzdWVkID0gdGhpcy5tb2RlbC5pc3N1ZWQgfHwgdGhpcy5tb2RlbC5sb2cuZmlsdGVyKGwgPT4gbC50eXBlID09PSAnU3VibWl0JylbMF0udGltZTtcclxuICAgIGxldCB6SW5kZXggPSA1MDAsIGkgPSAwO1xyXG4gICAgd2hpbGUgKGkgPCBkbm9kZXMubGVuZ3RoKSB7XHJcbiAgICAgIGxldCBub2RlID0gZG5vZGVzW2ldO1xyXG4gICAgICBpKys7XHJcbiAgICAgIGxldCBjb25maWd1cmF0aW9uID0gdGhpcy5fY29uZmlndXJhdGlvbltub2RlLnR5cGVdO1xyXG4gICAgICBsZXQgcmVjaXBpZW50cyA9IHRoaXMubW9kZWwucmVjaXBpZW50cy5cclxuICAgICAgICBmaWx0ZXIociA9PiByLm5vZGVJZCA9PT0gbm9kZS5pZCAmJiByLnJlY2VpdmVkID49IHRoaXMuX2lzc3VlZCk7XHJcbiAgICAgIGlmIChyZWNpcGllbnRzLmxlbmd0aCkge1xyXG4gICAgICAgIHJlY2lwaWVudHMgPSByZWNpcGllbnRzLnNvcnQoYSA9PiBhLnJlcGxpZWQgPyAtMSA6IDEpO1xyXG4gICAgICAgIGZvciAodmFyIHIgPSAwOyByIDwgcmVjaXBpZW50cy5sZW5ndGg7IHIrKykge1xyXG4gICAgICAgICAgbGV0IHJlY2lwaWVudCA9IHJlY2lwaWVudHNbcl07XHJcbiAgICAgICAgICBjb25zdCB7IGFubm90YXRpb24sIHRvb2x0aXAgfSA9IGF3YWl0IHRoaXMuX25vdGUobm9kZSwgcmVjaXBpZW50KTtcclxuICAgICAgICAgIGNvbnN0IG5vZCA9IHtcclxuICAgICAgICAgICAgaWQ6IHIgPT09IDAgPyBub2RlLmlkIDogbm9kZS5pZCArIHIudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgc2hhcGU6IHRoaXMuX2NvbmZpZ3VyYXRpb25bbm9kZS50eXBlXS5zaGFwZSxcclxuICAgICAgICAgICAgekluZGV4OiB6SW5kZXgrKyxcclxuICAgICAgICAgICAgdG9vbHRpcDoge1xyXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHRoaXMuX3Rvb2x0aXAodG9vbHRpcCksXHJcbiAgICAgICAgICAgICAgcG9zaXRpb246ICdUb3BDZW50ZXInXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzOiBOb2RlQ29uc3RyYWludHMuRGVmYXVsdCB8IE5vZGVDb25zdHJhaW50cy5Ub29sdGlwLFxyXG4gICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgdG9vbHRpcCxcclxuICAgICAgICAgICAgICByZWNpcGllbnQsXHJcbiAgICAgICAgICAgICAgbm9kZVxyXG4gICAgICAgICAgICB9IGFzIE5vZGVJbmZvTW9kZWwsXHJcbiAgICAgICAgICAgIGFubm90YXRpb25zOiBbe1xyXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IGFubm90YXRpb24sXHJcbiAgICAgICAgICAgICAgbWFyZ2luOiB7IHRvcDogNCB9LFxyXG4gICAgICAgICAgICAgIHZlcnRpY2FsQWxpZ25tZW50OiAnVG9wJyxcclxuICAgICAgICAgICAgICBvZmZzZXQ6IHtcclxuICAgICAgICAgICAgICAgIHk6IDEsXHJcbiAgICAgICAgICAgICAgICB4OiAuNVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfV1cclxuICAgICAgICAgIH0gYXMgTm9kZU1vZGVsO1xyXG4gICAgICAgICAgaWYgKHIgPiAwKSB7XHJcbiAgICAgICAgICAgIGRjb25uZWN0b3JzLmZvckVhY2goYyA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGMudGFyZ2V0SWQgPT09IG5vZGUuaWQpIGNvbm5lY3RvcnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBzb3VyY2VJRDogYy5zb3VyY2VJZCxcclxuICAgICAgICAgICAgICAgIHRhcmdldElEOiBub2QuaWQsXHJcbiAgICAgICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgIGVzdGltYXRlOiBjLmVzdGltYXRlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgaWYgKGMuc291cmNlSWQgPT09IG5vZGUuaWQgJiYgIW5vZGUuZnlpKVxyXG4gICAgICAgICAgICAgICAgY29ubmVjdG9ycy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgc291cmNlSUQ6IG5vZC5pZCxcclxuICAgICAgICAgICAgICAgICAgdGFyZ2V0SUQ6IGMudGFyZ2V0SWQsXHJcbiAgICAgICAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICAgICAgICBlc3RpbWF0ZTogYy5lc3RpbWF0ZVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBub2Rlcy5wdXNoKG5vZCk7XHJcbiAgICAgICAgICBpZiAocmVjaXBpZW50LmFjdGlvbikge1xyXG4gICAgICAgICAgICBjb25zdCBhY3Rpb24gPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYWN0aW9ucy5maW5kKGEgPT4gYS5uYW1lID09PSByZWNpcGllbnQuYWN0aW9uKTtcclxuICAgICAgICAgICAgaWYgKGFjdGlvbiAmJiBhY3Rpb24uc2hhcGUpIHtcclxuICAgICAgICAgICAgICBjb25zdCBhY3Rpb25JbmRpY2F0b3IgPSB7XHJcbiAgICAgICAgICAgICAgICBpZDogbm9kLmlkICsgJ2FjdGlvbicsXHJcbiAgICAgICAgICAgICAgICBzaGFwZToge1xyXG4gICAgICAgICAgICAgICAgICB0eXBlOiAnUGF0aCcsXHJcbiAgICAgICAgICAgICAgICAgIGRhdGE6IGFjdGlvbi5zaGFwZSxcclxuICAgICAgICAgICAgICAgICAgYWxpZ246IHRoaXMuX3Nlc3Npb24uaW52ZXJzZSA/ICdYTWluWU1heCcgOiAnWE1heFlNYXgnLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICAgIGZpbGw6IGFjdGlvbi5jb2xvciB8fCB0aGlzLl9zZXNzaW9uLmdldEFjY2VudCg5MDApXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgICBpbmRpY2F0b3I6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgIHBhcmVudElkOiBub2QuaWRcclxuICAgICAgICAgICAgICAgIH0gYXMgTm9kZUluZm9Nb2RlbFxyXG4gICAgICAgICAgICAgIH0gYXMgTm9kZU1vZGVsO1xyXG4gICAgICAgICAgICAgIGluZGljYXRvcnMucHVzaChhY3Rpb25JbmRpY2F0b3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVjaXBpZW50LnBlbmRpbmcgJiYgIXJlY2lwaWVudC5lc3RpbWF0ZSlcclxuICAgICAgICAgICAgaW5kaWNhdG9ycy5wdXNoKHtcclxuICAgICAgICAgICAgICBpZDogbm9kLmlkICsgJ3BlbmRpbmcnLFxyXG4gICAgICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnUGF0aCcsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBQRU5ESU5HX1BBVEgsXHJcbiAgICAgICAgICAgICAgICBhbGlnbjogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlID8gJ1hNYXhZTWF4JyA6ICdYTWluWU1heCdcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICBmaWxsOiB0aGlzLl9zZXNzaW9uLmdldEFjY2VudCg5MDApXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICBpbmRpY2F0b3I6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBwYXJlbnRJZDogbm9kLmlkXHJcbiAgICAgICAgICAgICAgfSBhcyBOb2RlSW5mb01vZGVsXHJcbiAgICAgICAgICAgIH0gYXMgTm9kZU1vZGVsKTtcclxuICAgICAgICAgIGlmIChub2RlLmZ5aSlcclxuICAgICAgICAgICAgaW5kaWNhdG9ycy5wdXNoKHtcclxuICAgICAgICAgICAgICBpZDogbm9kLmlkICsgJ2Z5aScsXHJcbiAgICAgICAgICAgICAgc2hhcGU6IHtcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdQYXRoJyxcclxuICAgICAgICAgICAgICAgIGRhdGE6IEZZSV9QQVRILFxyXG4gICAgICAgICAgICAgICAgYWxpZ246IHRoaXMuX3Nlc3Npb24uaW52ZXJzZSA/ICdYTWluWU1heCcgOiAnWE1heFlNYXgnXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgICAgICAgZmlsbDogJyMxOTc2ZDInXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICBpbmRpY2F0b3I6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBwYXJlbnRJZDogbm9kLmlkXHJcbiAgICAgICAgICAgICAgfSBhcyBOb2RlSW5mb01vZGVsXHJcbiAgICAgICAgICAgIH0gYXMgTm9kZU1vZGVsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAvLyAgaWYgKHRoaXMubW9kZWwubG9nLmZpbHRlcihsID0+IGwudGltZSA+IHRoaXMuX3N1Ym1pdHRlZCAmJiBsLnR5cGUgPT09ICdFc2NhbGF0aW9uJyAmJiBsLnJlY2lwaWVudElkID09PSByZWNpcGllbnQuaWQpLmxlbmd0aCkge1xyXG4gICAgICAgICAgLy8gICAgY29uc3QgZXNjYWxhdGVJbmRpY2F0b3IgPSB7XHJcbiAgICAgICAgICAvLyAgICAgIGlkOiBub2QuaWQgKyAnZXNjYWxhdGUnLFxyXG4gICAgICAgICAgLy8gICAgICBzaGFwZToge1xyXG4gICAgICAgICAgLy8gICAgICAgIHR5cGU6ICdQYXRoJyxcclxuICAgICAgICAgIC8vICAgICAgICBkYXRhOiBFU0NBTEFURURfUEFUSCxcclxuICAgICAgICAgIC8vICAgICAgICBhbGlnbjogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlID8gJ1hNaW5ZTWF4JyA6ICdYTWF4WU1heCdcclxuICAgICAgICAgIC8vICAgICAgfSxcclxuICAgICAgICAgIC8vICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgIC8vICAgICAgICBmaWxsOiB0aGlzLl9zZXNzaW9uLmdldEFjY2VudCg5MDApXHJcbiAgICAgICAgICAvLyAgICAgIH0sXHJcbiAgICAgICAgICAvLyAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgIC8vICAgICAgICBpbmRpY2F0b3I6IHRydWUsXHJcbiAgICAgICAgICAvLyAgICAgICAgcGFyZW50SWQ6IG5vZC5pZFxyXG4gICAgICAgICAgLy8gICAgICB9IGFzIE5vZGVJbmZvTW9kZWxcclxuICAgICAgICAgIC8vICAgIH0gYXMgTm9kZU1vZGVsO1xyXG4gICAgICAgICAgLy8gICAgaW5kaWNhdG9ycy5wdXNoKGVzY2FsYXRlSW5kaWNhdG9yKTtcclxuICAgICAgICAgIC8vICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHsgc3RhdGUsIGFubm90YXRpb24sIHRvb2x0aXAgfSA9IGF3YWl0IHRoaXMuX3NoYXBlKG5vZGUpO1xyXG4gICAgICAgIGNvbnN0IHsgc2hhcGUgfSA9IGNvbmZpZ3VyYXRpb247XHJcbiAgICAgICAgbm9kZXMucHVzaCh7XHJcbiAgICAgICAgICBpZDogbm9kZS5pZCxcclxuICAgICAgICAgIHNoYXBlLFxyXG4gICAgICAgICAgekluZGV4OiB6SW5kZXgrKyxcclxuICAgICAgICAgIHRvb2x0aXA6IHtcclxuICAgICAgICAgICAgY29udGVudDogdGhpcy5fdG9vbHRpcCh0b29sdGlwKSxcclxuICAgICAgICAgICAgcG9zaXRpb246ICdUb3BDZW50ZXInXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgY29uc3RyYWludHM6IE9iamVjdC5rZXlzKHRvb2x0aXApLmxlbmd0aCA/IE5vZGVDb25zdHJhaW50cy5EZWZhdWx0IHwgTm9kZUNvbnN0cmFpbnRzLlRvb2x0aXAgOiBOb2RlQ29uc3RyYWludHMuRGVmYXVsdCxcclxuICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgdG9vbHRpcCxcclxuICAgICAgICAgICAgbm9kZVxyXG4gICAgICAgICAgfSBhcyBOb2RlSW5mb01vZGVsLFxyXG4gICAgICAgICAgYW5ub3RhdGlvbnM6IFt7XHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IGFubm90YXRpb24sXHJcbiAgICAgICAgICAgIG9mZnNldDogc2hhcGUudHlwZSA9PT0gJ1BhdGgnID8ge1xyXG4gICAgICAgICAgICAgIHk6IDFcclxuICAgICAgICAgICAgfSA6IHsgeDogLjUgfSxcclxuICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgICBib2xkOiB0cnVlXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHZlcnRpY2FsQWxpZ25tZW50OiBzaGFwZS50eXBlID09PSAnUGF0aCcgPyAnVG9wJyA6ICdDZW50ZXInXHJcbiAgICAgICAgICB9XVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChzdGF0ZSAmJiBzdGF0ZS5zaGFwZSAmJiAhbm9kZS5lc3RpbWF0ZSlcclxuICAgICAgICAgIGluZGljYXRvcnMucHVzaCh7XHJcbiAgICAgICAgICAgIGlkOiBub2RlLmlkICsgJ3N0YXRlJyxcclxuICAgICAgICAgICAgc2hhcGU6IHtcclxuICAgICAgICAgICAgICB0eXBlOiAnUGF0aCcsXHJcbiAgICAgICAgICAgICAgZGF0YTogc3RhdGUuc2hhcGUsXHJcbiAgICAgICAgICAgICAgYWxpZ246IHRoaXMuX3Nlc3Npb24uaW52ZXJzZSA/ICdYTWF4WU1heCcgOiAnWE1pbllNYXgnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgZmlsbDogc3RhdGUuY29sb3IgfHwgJ2JsYWNrJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxyXG4gICAgICAgICAgICAgIHBhcmVudElkOiBub2RlLmlkLFxyXG4gICAgICAgICAgICAgIG5vZGU6IG5vZGVcclxuICAgICAgICAgICAgfSBhcyBOb2RlSW5mb01vZGVsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICBpZiAobm9kZS5lcnJvcikge1xyXG4gICAgICAgICAgY29uc3Qgd2Fybm5pbmdJbmRpY2F0b3IgPSB7XHJcbiAgICAgICAgICAgIGlkOiBub2RlLmlkICsgJ2V4Y2VwdGlvbicsXHJcbiAgICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgICAgdHlwZTogJ1BhdGgnLFxyXG4gICAgICAgICAgICAgIGRhdGE6IFdBUk5OSU5HX1BBVEgsXHJcbiAgICAgICAgICAgICAgYWxpZ246IHRoaXMuX3Nlc3Npb24uaW52ZXJzZSA/ICdYTWluWU1heCcgOiAnWE1heFlNYXgnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgZmlsbDogZ2V0V2Fybig4MDApXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICBpbmRpY2F0b3I6IHRydWUsXHJcbiAgICAgICAgICAgICAgcGFyZW50SWQ6IG5vZGUuaWRcclxuICAgICAgICAgICAgfSBhcyBOb2RlSW5mb01vZGVsXHJcbiAgICAgICAgICB9IGFzIE5vZGVNb2RlbDtcclxuICAgICAgICAgIGluZGljYXRvcnMucHVzaCh3YXJubmluZ0luZGljYXRvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIGNvbm5lY3RvclxyXG4gICAgICogQHBhcmFtIGluZGV4XHJcbiAgICAgKiBAcGFyYW0gdmNvbm5lY3RvcnNcclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gcmVyb3V0ZShjb25uZWN0b3I6IENvbm5lY3RvckluZm8sIGluZGV4OiBudW1iZXIpIHtcclxuICAgICAgd2hpbGUgKGluZGV4IDwgZGNvbm5lY3RvcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgbGV0IGRjb25uZWN0b3IgPSBkY29ubmVjdG9yc1tpbmRleF07XHJcbiAgICAgICAgaWYgKGRjb25uZWN0b3Iuc291cmNlSWQgPT09IGNvbm5lY3Rvci50YXJnZXRJZCkge1xyXG4gICAgICAgICAgaWYgKG5vZGVzLnNvbWUobiA9PiBuLmlkID09PSBkY29ubmVjdG9yLnRhcmdldElkKSlcclxuICAgICAgICAgICAgY29ubmVjdG9ycy5wdXNoKHtcclxuICAgICAgICAgICAgICBzb3VyY2VJRDogY29ubmVjdG9yLnNvdXJjZUlkLFxyXG4gICAgICAgICAgICAgIHRhcmdldElEOiBkY29ubmVjdG9yLnRhcmdldElkLFxyXG4gICAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICAgIGVzdGltYXRlOiBkY29ubmVjdG9yLmVzdGltYXRlLFxyXG4gICAgICAgICAgICAgICAgdGltZTogZGNvbm5lY3Rvci50aW1lXHJcbiAgICAgICAgICAgICAgfSBhcyBDb25uZWN0b3JJbmZvTW9kZWxcclxuICAgICAgICAgICAgfSBhcyBDb25uZWN0b3JNb2RlbCk7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJlcm91dGUoe1xyXG4gICAgICAgICAgICAgIHRpbWU6IGRjb25uZWN0b3IudGltZSxcclxuICAgICAgICAgICAgICB0YXJnZXRJZDogZGNvbm5lY3Rvci50YXJnZXRJZCxcclxuICAgICAgICAgICAgICBlc3RpbWF0ZTogZGNvbm5lY3Rvci5lc3RpbWF0ZSxcclxuICAgICAgICAgICAgICBzb3VyY2VJZDogY29ubmVjdG9yLnNvdXJjZUlkXHJcbiAgICAgICAgICAgIH0sIGluZGV4ICsgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGluZGV4Kys7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7IGNvbm5lY3RvcnMsIG5vZGVzLCBpbmRpY2F0b3JzIH07XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBub2RlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhc3luYyBfc2hhcGUobm9kZTogTm9kZUluZm8pOiBQcm9taXNlPHsgc3RhdGU6IFN0YXRlOyBhbm5vdGF0aW9uOiBzdHJpbmc7IHRvb2x0aXA6IE5vZGVUb29sdGlwTW9kZWw7IH0+IHtcclxuICAgIGNvbnN0IHRvb2x0aXAgPSB7fSBhcyBOb2RlVG9vbHRpcE1vZGVsO1xyXG4gICAgaWYgKG5vZGUuZXJyb3IpIHRvb2x0aXAuZXJyb3IgPSBub2RlLmVycm9yO1xyXG4gICAgbGV0IGFubm90YXRpb246IHN0cmluZywgc3RhdGU6IFN0YXRlO1xyXG4gICAgY29uc3QgbG9nID0gdGhpcy5tb2RlbC5sb2cuZmlsdGVyKGwgPT4gbC5ub2RlSWQgPT09IG5vZGUuaWQgJiYgbC50aW1lID49IHRoaXMuX2lzc3VlZCk7XHJcbiAgICBjb25zdCBzdGF0ZUxvZyA9IGxvZy5maW5kKGwgPT4gbC50eXBlID09PSAnU3RhdGVDaGFuZ2UnKTtcclxuICAgIGlmIChzdGF0ZUxvZykge1xyXG4gICAgICBzdGF0ZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5zdGF0ZXMuZmluZChzID0+IHMubmFtZSA9PT0gc3RhdGVMb2cuc3RhdGUpO1xyXG5cclxuICAgICAgYW5ub3RhdGlvbiA9IHN0YXRlID8gKChub2RlLmVzdGltYXRlID8gc3RhdGUuZnV0dXJlIDogc3RhdGUucGFzdCkgfHwgc3RhdGUudGl0bGUpIDogc3RhdGVMb2cuc3RhdGU7XHJcbiAgICB9XHJcbiAgICBpZiAobm9kZS50eXBlID09PSBTVEFSVF9OT0RFKSB7XHJcbiAgICAgIGlmICghbm9kZS5lc3RpbWF0ZSkge1xyXG4gICAgICAgIGNvbnN0IHsgbm90ZSwgcm9sZSB9ID0gYXdhaXQgdGhpcy5fc3RhcnROb2RlKCk7XHJcbiAgICAgICAgdG9vbHRpcC5ub3RlID0gbm90ZSxcclxuICAgICAgICAgIHRvb2x0aXAucm9sZSA9IHJvbGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG5vZGUuZXN0aW1hdGUpXHJcbiAgICAgIHRvb2x0aXAuZXN0aW1hdGVkVGltZSA9IHRoaXMuX3RpbWVFc3RpbWF0ZShub2RlKTtcclxuICAgIHJldHVybiB7IHN0YXRlLCB0b29sdGlwLCBhbm5vdGF0aW9uIH07XHJcbiAgfVxyXG4gIHJlc2l6ZSgpIHtcclxuICAgIGlmICh0aGlzLmRpYWdyYW0pIHRoaXMuZGlhZ3JhbS53aWR0aCA9ICdhdXRvJztcclxuICB9XHJcbiAgcHJpdmF0ZSBfdGltZUVzdGltYXRlKG5vZGU6IE5vZGVJbmZvKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHsgbWluLCBtYXggfSA9IHN1cGVyLl9lc3RpbWF0ZVRpbWUobm9kZSk7XHJcbiAgICBpZiAobWF4KVxyXG4gICAgICByZXR1cm4gIW1pbiB8fCBtaW4gPT09IG1heCA/XHJcbiAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnRXN0aW1hdGVUaW1lJywgdGhpcy5fZHVyYXRpb24udHJhbnNmb3JtKG1heCkpIDpcclxuICAgICAgICB0aGlzLl90cmFuc2xhdGUuZ2V0KCdFc3RpbWF0ZVRpbWVSYW5nZScsIHRoaXMuX2R1cmF0aW9uLnRyYW5zZm9ybShtaW4pLCB0aGlzLl9kdXJhdGlvbi50cmFuc2Zvcm0obWF4KSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3Rvb2x0aXAob2JqOiBOb2RlVG9vbHRpcE1vZGVsKSB7XHJcbiAgICBjb25zdCB7IG5vdGUsIHJvbGUsIHN1YnN0aXR1dGluZywgZHVyYXRpb24sIHN0YW5kYXJkVGltZSwgZXN0aW1hdGVkVGltZSwgZXJyb3IsIGZ5aSB9ID0gb2JqXHJcbiAgICBjb25zdCByb3dzID0gW2Vycm9yLCBub3RlLCByb2xlLCBzdWJzdGl0dXRpbmcsIGZ5aSwgZHVyYXRpb24sIHN0YW5kYXJkVGltZSwgZXN0aW1hdGVkVGltZV07XHJcbiAgICBsZXQgZGl2OiBIVE1MRGl2RWxlbWVudDtcclxuICAgIHJvd3MuZm9yRWFjaChyID0+IHtcclxuICAgICAgaWYgKCFyKSByZXR1cm47XHJcbiAgICAgIGlmICghZGl2KSBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgICAgc3Bhbi5pbm5lclRleHQgPSByO1xyXG4gICAgICBkaXYuYXBwZW5kKHNwYW4pO1xyXG4gICAgICBjb25zdCBiciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJyk7XHJcbiAgICAgIGRpdi5hcHBlbmQoYnIpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGl2O1xyXG4gIH1cclxuICBwcml2YXRlIGFzeW5jIF9zdGFydE5vZGUoKTogUHJvbWlzZTx7XHJcbiAgICBub3RlOiBzdHJpbmcsIHJvbGU6IHN0cmluZztcclxuICB9PiB7XHJcbiAgICBsZXQgd2hvOiBVc2VySW5mbyB8ICd5b3UnLCBieTogVXNlckluZm8gfCAneW91JztcclxuICAgIGlmICh0aGlzLm1vZGVsLm93bmVySWQgPT09IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS51c2VySWQgJiYgIXRoaXMuX3Nlc3Npb24uaXNJbXBlcnNvbmF0aW5nKVxyXG4gICAgICB3aG8gPSAneW91JztcclxuICAgIGVsc2VcclxuICAgICAgd2hvID0gYXdhaXQgdGhpcy5fYWNjb3VudHMuZ2V0KHRoaXMubW9kZWwub3duZXJJZCkudG9Qcm9taXNlKCk7XHJcbiAgICBpZiAodGhpcy5tb2RlbC5vd25lckJ5SWQpIHtcclxuICAgICAgaWYgKHRoaXMubW9kZWwub3duZXJCeUlkID09PSB0aGlzLl9zZXNzaW9uLnVzZXJJZClcclxuICAgICAgICBieSA9ICd5b3UnO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgYnkgPSBhd2FpdCB0aGlzLl9hY2NvdW50cy5nZXQodGhpcy5tb2RlbC5vd25lckJ5SWQpLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG4gICAgbGV0IG5vdGU6IHN0cmluZywgcm9sZTogc3RyaW5nO1xyXG4gICAgaWYgKGJ5KSB7XHJcbiAgICAgIGlmIChieSA9PT0gJ3lvdScpXHJcbiAgICAgICAgbm90ZSA9XHJcbiAgICAgICAgICB0aGlzLl90cmFuc2xhdGUuZ2V0KCdTdWJtaXR0ZWROb3RlQnlZb3UnLFxyXG4gICAgICAgICAgICB3aG8gPT09ICd5b3UnID8gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91JykgOiAod2hvIGFzIFVzZXJJbmZvKS5uYW1lLFxyXG4gICAgICAgICAgICB0aGlzLl9mcm9tTm93KHRoaXMubW9kZWwuaXNzdWVkKSk7XHJcblxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgbm90ZSA9XHJcbiAgICAgICAgICB0aGlzLl90cmFuc2xhdGUuZ2V0KCdTdWJtaXR0ZWROb3RlQnknLFxyXG4gICAgICAgICAgICB3aG8gPT09ICd5b3UnID8gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91JykgOiAod2hvIGFzIFVzZXJJbmZvKS5uYW1lLFxyXG4gICAgICAgICAgICAoYnkgYXMgVXNlckluZm8pLm5hbWUsXHJcbiAgICAgICAgICAgIHRoaXMuX2Zyb21Ob3codGhpcy5tb2RlbC5pc3N1ZWQpKTtcclxuICAgIH1cclxuXHJcbiAgICBlbHNlIGlmICh3aG8gPT09ICd5b3UnKVxyXG4gICAgICBub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91U3VibWl0dGVkTm90ZScsIHRoaXMuX2Zyb21Ob3codGhpcy5tb2RlbC5pc3N1ZWQpKTtcclxuXHJcbiAgICBlbHNlXHJcbiAgICAgIG5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdTdWJtaXR0ZWROb3RlJywgKHdobyBhcyBVc2VySW5mbykubmFtZSwgdGhpcy5fZnJvbU5vdyh0aGlzLm1vZGVsLmlzc3VlZCkpO1xyXG4gICAgaWYgKHdobyAhPT0gJ3lvdScgJiYgd2hvLnJvbGUpXHJcbiAgICAgIHJvbGUgPSBgLSAke3doby5yb2xlfWA7XHJcbiAgICByZXR1cm4geyBub3RlLCByb2xlIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9ub3RlKG5vZGU6IE5vZGVJbmZvLCByZWNpcGllbnQ6IFJlY2lwaWVudCk6IFByb21pc2U8eyBhbm5vdGF0aW9uOiBzdHJpbmc7IHRvb2x0aXA6IE5vZGVUb29sdGlwTW9kZWwgfT4ge1xyXG4gICAgY29uc3QgdG9vbHRpcDogTm9kZVRvb2x0aXBNb2RlbCA9IHt9O1xyXG4gICAgbGV0IGFubm90YXRpb246IHN0cmluZztcclxuXHJcbiAgICBpZiAocmVjaXBpZW50LnVzZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnVzZXJJZCkge1xyXG4gICAgICBhbm5vdGF0aW9uID0gdGhpcy5fc2Vzc2lvbi5pc0ltcGVyc29uYXRpbmcgPyB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSA6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdScpO1xyXG4gICAgICBpZiAocmVjaXBpZW50LmJ5SWQpIHtcclxuICAgICAgICBjb25zdCB1ID0gYXdhaXQgdGhpcy5fYWNjb3VudHMuZ2V0KHJlY2lwaWVudC5ieUlkKS50b1Byb21pc2UoKVxyXG4gICAgICAgIGNvbnN0IHBhc3QgPSB0aGlzLl9hY3Rpb24ocmVjaXBpZW50LmFjdGlvbiwgdS5nZW5kZXIpLCB0aW1lID0gdGhpcy5fZnJvbU5vdyhyZWNpcGllbnQucmVwbGllZCk7XHJcbiAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91VGFrZW5BY3Rpb25CeScsIHUubmFtZSwgcGFzdCwgdGltZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAocmVjaXBpZW50LnJlcGxpZWQpIHtcclxuICAgICAgICBjb25zdCB0aW1lID0gdGhpcy5fZnJvbU5vdyhyZWNpcGllbnQucmVwbGllZCk7XHJcbiAgICAgICAgaWYgKHRoaXMuX3Nlc3Npb24uaXNJbXBlcnNvbmF0aW5nKSB7XHJcbiAgICAgICAgICBjb25zdCBwYXN0ID0gdGhpcy5fYWN0aW9uKHJlY2lwaWVudC5hY3Rpb24sIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5nZW5kZXIpO1xyXG4gICAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aW9uVGFrZW4nLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSwgcGFzdCwgdGltZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgcGFzdCA9IHRoaXMuX2FjdGlvbihyZWNpcGllbnQuYWN0aW9uLCAneW91Jyk7XHJcbiAgICAgICAgICB0b29sdGlwLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3VUYWtlbkFjdGlvbicsIHBhc3QsIHRpbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICghbm9kZS5lc3RpbWF0ZSkge1xyXG4gICAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLl9mcm9tTm93KHJlY2lwaWVudC5yZWNlaXZlZCk7XHJcbiAgICAgICAgaWYgKHRoaXMuX3Nlc3Npb24uaXNJbXBlcnNvbmF0aW5nKVxyXG4gICAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdSZWNlaXZlZEJ5JywgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmdlbmRlciwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIHRpbWUpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdVJlY2VpdmVkJywgdGltZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHJlY2lwaWVudC5yb2xlKSB7XHJcbiAgICAgICAgY29uc3QgY3JvbGUgPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUucm9sZXMuZmluZChvID0+IG8ubmFtZSA9PT0gcmVjaXBpZW50LnJvbGUpO1xyXG4gICAgICAgIHRvb2x0aXAucm9sZSA9IGAtICR7Y3JvbGUgPyBjcm9sZS50aXRsZSA6IHJlY2lwaWVudC5yb2xlfWA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25zdCB3aG8gPSBhd2FpdCB0aGlzLl9hY2NvdW50cy5nZXQocmVjaXBpZW50LnVzZXJJZCkudG9Qcm9taXNlKCk7XHJcbiAgICAgIGFubm90YXRpb24gPSB3aG8ubmFtZTtcclxuICAgICAgaWYgKHdoby5yb2xlKSB0b29sdGlwLnJvbGUgPSBgLSAke3doby5yb2xlfWA7XHJcbiAgICAgIGVsc2UgaWYgKHJlY2lwaWVudC5yb2xlKSB7XHJcbiAgICAgICAgY29uc3QgY3JvbGUgPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUucm9sZXMuZmluZChvID0+IG8ubmFtZSA9PT0gcmVjaXBpZW50LnJvbGUpO1xyXG4gICAgICAgIHRvb2x0aXAucm9sZSA9IGAtICR7Y3JvbGUgPyBjcm9sZS50aXRsZSA6IHJlY2lwaWVudC5yb2xlfWA7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAocmVjaXBpZW50LnJlcGxpZWQpIHtcclxuICAgICAgICBpZiAocmVjaXBpZW50LmJ5SWQpIHtcclxuICAgICAgICAgIGNvbnN0IGJ5ID0gYXdhaXQgdGhpcy5fYWNjb3VudHMuZ2V0KHJlY2lwaWVudC5ieUlkKS50b1Byb21pc2UoKTtcclxuICAgICAgICAgIGNvbnN0IHBhc3QgPSB0aGlzLl9hY3Rpb24ocmVjaXBpZW50LmFjdGlvbiwgYnkuZ2VuZGVyKSxcclxuICAgICAgICAgICAgdGltZSA9IHRoaXMuX2Zyb21Ob3cocmVjaXBpZW50LnJlcGxpZWQpO1xyXG4gICAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aW9uVGFrZW5CeScsIGJ5Lm5hbWUsIHBhc3QsIHRpbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHBhc3QgPSB0aGlzLl9hY3Rpb24ocmVjaXBpZW50LmFjdGlvbiwgd2hvLmdlbmRlciksXHJcbiAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9mcm9tTm93KHJlY2lwaWVudC5yZXBsaWVkKTtcclxuICAgICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvblRha2VuJywgd2hvLm5hbWUsIHBhc3QsIHRpbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICghcmVjaXBpZW50LmVzdGltYXRlKSB7XHJcbiAgICAgICAgY29uc3QgdGltZSA9IHRoaXMuX2Zyb21Ob3cocmVjaXBpZW50LnJlY2VpdmVkKTtcclxuICAgICAgICB0b29sdGlwLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1JlY2VpdmVkVGltZScsIHdoby5nZW5kZXIsIHRpbWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocmVjaXBpZW50LnN1YnN0aXR1dGluZ0lkICYmIHJlY2lwaWVudC5lc3RpbWF0ZSkge1xyXG4gICAgICBpZiAocmVjaXBpZW50LnN1YnN0aXR1dGluZ0lkID09PSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYnlJZClcclxuICAgICAgICB0b29sdGlwLnN1YnN0aXR1dGluZyA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnU3Vic3RpdHV0aW5nWW91JywgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmdlbmRlcik7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHUgPSBhd2FpdCB0aGlzLl9hY2NvdW50cy5nZXQocmVjaXBpZW50LnN1YnN0aXR1dGluZ0lkKS50b1Byb21pc2UoKTtcclxuICAgICAgICB0b29sdGlwLnN1YnN0aXR1dGluZyA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnU3Vic3RpdHV0aW5nRm9yJywgdS5nZW5kZXIsIHUubmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGVzY2FsYXRpb25zID0gdGhpcy5tb2RlbC5sb2cuZmlsdGVyKGwgPT4gbC50aW1lID4gdGhpcy5faXNzdWVkICYmIGwudHlwZSA9PT0gJ0VzY2FsYXRpb24nICYmIGwucmVjaXBpZW50SWQgPT09IHJlY2lwaWVudC5pZCk7XHJcbiAgICBpZiAoZXNjYWxhdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IHVzZXJJZHMgPSBlc2NhbGF0aW9ucy5tYXAoZSA9PiBlLnVzZXJJZCk7XHJcbiAgICAgIGNvbnN0IHVzZXJzID0gYXdhaXQgdGhpcy5fYWNjb3VudHMuZ2V0QWxsKHVzZXJJZHMpLnRvUHJvbWlzZSgpO1xyXG4gICAgICBjb25zdCBkdXJhdGlvbiA9IHRoaXMuX2R1cmF0aW9uLnRyYW5zZm9ybShkYXlqcyhlc2NhbGF0aW9uc1tlc2NhbGF0aW9ucy5sZW5ndGggLSAxXS50aW1lKS5kaWZmKHJlY2lwaWVudC5yZWNlaXZlZCwgJ3MnKSk7XHJcbiAgICAgIHRvb2x0aXAuc3Vic3RpdHV0aW5nID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRXNjYWxhdGVkVG8nLCB0aGlzLl90cmFuc2xhdGUuam9pbih1c2Vycy5tYXAodSA9PiB1Lm5hbWUpKSwgZHVyYXRpb24pO1xyXG4gICAgfVxyXG4gICAgaWYgKHJlY2lwaWVudC5yZXBsaWVkKSB7XHJcbiAgICAgIGNvbnN0IGR1cmF0aW9uID0gZGF5anMocmVjaXBpZW50LnJlcGxpZWQpLmRpZmYocmVjaXBpZW50LnJlY2VpdmVkLCAncycpO1xyXG4gICAgICB0b29sdGlwLmR1cmF0aW9uID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRHVyYXRpb25UaW1lJywgdGhpcy5fZHVyYXRpb24udHJhbnNmb3JtKGR1cmF0aW9uKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChyZWNpcGllbnQucGVuZGluZykge1xyXG4gICAgICBpZiAocmVjaXBpZW50LmVzdGltYXRlKSB0b29sdGlwLmVzdGltYXRlZFRpbWUgPSB0aGlzLl90aW1lRXN0aW1hdGUobm9kZSk7XHJcbiAgICAgIGVsc2UgaWYgKG5vZGUuc3RhbmRhcmRUaW1lKSB7XHJcbiAgICAgICAgY29uc3QgZGlmZiA9IG5vZGUuc3RhbmRhcmRUaW1lIC0gZGF5anMoKS5kaWZmKG5vZGUudGltZSwgJ3MnKTtcclxuICAgICAgICBpZiAoZGlmZiA+IDApXHJcbiAgICAgICAgICB0b29sdGlwLmVzdGltYXRlZFRpbWUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdFc3RpbWF0ZVRpbWUnLCB0aGlzLl9kdXJhdGlvbi50cmFuc2Zvcm0oZGlmZikpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChub2RlLnN0YW5kYXJkVGltZSlcclxuICAgICAgdG9vbHRpcC5zdGFuZGFyZFRpbWUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdOb2RlU3RhbmRhcmRUaW1lJywgdGhpcy5fZHVyYXRpb24udHJhbnNmb3JtKG5vZGUuc3RhbmRhcmRUaW1lKSk7XHJcbiAgICBpZiAobm9kZS5meWkpXHJcbiAgICAgIHRvb2x0aXAuZnlpID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRllJJyk7XHJcbiAgICByZXR1cm4geyBhbm5vdGF0aW9uLCB0b29sdGlwIH07XHJcbiAgfVxyXG4gIHByaXZhdGUgX2FjdGlvbihuYW1lOiBzdHJpbmcsIGdlbmRlcj86IEdlbmRlciB8ICd5b3UnKSB7XHJcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYWN0aW9ucy5maW5kKGEgPT4gYS5uYW1lID09PSBuYW1lKTtcclxuICAgIGlmICghYWN0aW9uKSByZXR1cm4gbmFtZTtcclxuICAgIGlmIChnZW5kZXIgPT09ICd5b3UnKSB7XHJcbiAgICAgIGNvbnN0IGdlbmRlciA9IHRoaXMuX3Nlc3Npb24uZ2VuZGVyLCBwZXJzb25hbCA9XHJcbiAgICAgICAgKGdlbmRlciA9PT0gJ01hbGUnID8gKGFjdGlvbi55b3VNYWxlIHx8IGFjdGlvbi55b3UpIDpcclxuICAgICAgICAgIGdlbmRlciA9PT0gJ0ZlbWFsZScgPyAoYWN0aW9uLnlvdUZlbWFsZSB8fCBhY3Rpb24ueW91KSA6XHJcbiAgICAgICAgICAgIGFjdGlvbi55b3UpO1xyXG4gICAgICByZXR1cm4gKHBlcnNvbmFsIHx8XHJcbiAgICAgICAgYWN0aW9uLnBhc3QgfHxcclxuICAgICAgICBhY3Rpb24udGl0bGUpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBwYXN0ID0gKChnZW5kZXIgPT09ICdNYWxlJyA/IChhY3Rpb24ucGFzdE1hbGUgfHwgYWN0aW9uLnBhc3QpIDpcclxuICAgICAgZ2VuZGVyID09PSAnRmVtYWxlJyA/IChhY3Rpb24ucGFzdEZlbWFsZSB8fCBhY3Rpb24ucGFzdCkgOiBhY3Rpb24ucGFzdCkgfHxcclxuICAgICAgYWN0aW9uLnRpdGxlKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgcmV0dXJuIHBhc3Q7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9mcm9tTm93KGRhdGU6IERhdGUpIHtcclxuICAgIHJldHVybiBkYXlqcyhkYXRlKS5mcm9tTm93KCk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICAgIHRoaXMuZGlhZ3JhbSAmJiB0aGlzLmRpYWdyYW0uZGVzdHJveSgpO1xyXG4gIH1cclxufVxyXG5pbnRlcmZhY2UgQ29ubmVjdG9ySW5mb01vZGVsIHtcclxuICBlc3RpbWF0ZT86IGJvb2xlYW47XHJcbiAgcGFyZW50SWQ6IHN0cmluZztcclxuICB0aW1lOiBEYXRlXHJcbn1cclxuaW50ZXJmYWNlIE5vZGVJbmZvTW9kZWwge1xyXG4gIHRvb2x0aXA6IE5vZGVUb29sdGlwTW9kZWw7XHJcbiAgbm9kZTogTm9kZUluZm87XHJcbiAgcmVjaXBpZW50OiBSZWNpcGllbnRcclxuICBpbmRpY2F0b3I/OiBib29sZWFuO1xyXG4gIHBhcmVudElkPzogc3RyaW5nO1xyXG59XHJcbmludGVyZmFjZSBOb2RlVG9vbHRpcE1vZGVsIHtcclxuICBmeWk/OiBzdHJpbmc7XHJcbiAgZXJyb3I/OiBzdHJpbmc7XHJcbiAgbm90ZT86IHN0cmluZztcclxuICByb2xlPzogc3RyaW5nO1xyXG4gIHN1YnN0aXR1dGluZz86IHN0cmluZztcclxuICBzdGFuZGFyZFRpbWU/OiBzdHJpbmc7XHJcbiAgZHVyYXRpb24/OiBzdHJpbmc7XHJcbiAgZXN0aW1hdGVkVGltZT86IHN0cmluZztcclxufVxyXG4iXX0=
618
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvbXBvc2UvdHJhY2UvZmxvdy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW1ELE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBMEMsWUFBWSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBRSw4QkFBOEIsRUFBcUIsWUFBWSxFQUFFLFdBQVcsRUFBOEcscUJBQXFCLEVBQUUsZUFBZSxFQUFtQixlQUFlLEVBQWtDLE1BQU0sa0NBQWtDLENBQUM7QUFDbGMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRTFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7OztBQU9yRCxPQUFPLENBQUMsTUFBTSxDQUFDLHVCQUF1QixFQUFFLFlBQVksRUFBRSxXQUFXLENBQUEscURBQXFELENBQUMsQ0FBQztBQUV4SCxNQUFNLFlBQVksR0FBRyx1RkFBdUYsRUFDMUcsUUFBUSxHQUFHLGtHQUFrRyxFQUM3RyxjQUFjLEdBQUcsbVFBQW1RLEVBQ3BSLGFBQWEsR0FBRyxzVEFBc1QsQ0FBQztBQVd6VSx5QkFBeUI7QUFDekIsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFNBQVM7SUFxQzlDLHlCQUF5QjtJQUN6QixZQUFvQixTQUF5QixFQUFVLFFBQXdCLEVBQVUsVUFBNEIsRUFDM0csU0FBNkIsRUFDN0IsV0FBdUMsRUFDL0MsR0FBZTtRQUNmLEtBQUss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QUcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNuRSxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ3ZFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxRQUFRLENBQUMsSUFBVTtRQUN6QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBQ0QsV0FBVztRQUNULEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDekMsQ0FBQzs7OEdBOWxCVSxpQkFBaUI7a0dBQWpCLGlCQUFpQixtTUFSbEIsRUFBRSwrQ0FFRyxDQUFDLDhCQUE4QixDQUFDOzJGQU1wQyxpQkFBaUI7a0JBVjdCLFNBQVM7K0JBQ0UsYUFBYSxZQUNiLEVBQUUsaUJBRUcsQ0FBQyw4QkFBOEIsQ0FBQyxRQUN6Qzt3QkFDSixHQUFHLEVBQUUsS0FBSztxQkFDWDtvUEFJUSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5vZGVNb2RlbCwgQ29ubmVjdG9yTW9kZWwsIExheW91dE1vZGVsLCBEaWFncmFtVG9vbHMsIERpYWdyYW0sIERpYWdyYW1Db25zdHJhaW50cywgQ29tcGxleEhpZXJhcmNoaWNhbFRyZWUsIENvbXBsZXhIaWVyYXJjaGljYWxUcmVlU2VydmljZSwgQ29ubmVjdG9yQnJpZGdpbmcsIEJwbW5EaWFncmFtcywgRGF0YUJpbmRpbmcsIFNjcm9sbFNldHRpbmdzTW9kZWwsIFNuYXBTZXR0aW5nc01vZGVsLCBTZWdtZW50cywgTGluZVJvdXRpbmcsIFRyZWVJbmZvLCBJTW91c2VFdmVudEFyZ3MsIExpbmVEaXN0cmlidXRpb24sIENvbm5lY3Rpb25Qb2ludE9yaWdpbiwgU25hcENvbnN0cmFpbnRzLCBMYXlvdXRBbmltYXRpb24sIE5vZGVDb25zdHJhaW50cywgRmxvd1NoYXBlTW9kZWwsIEJwbW5TaGFwZU1vZGVsIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItZGlhZ3JhbXMnO1xyXG5pbXBvcnQgeyBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XHJcbmltcG9ydCB7IERvY3VtZW50TW9kZWwsIFJlY2lwaWVudCwgTm9kZUluZm8sIEdlbmRlciwgRmxvd05vZGUsIFVzZXJJbmZvLCBTdGF0ZSwgQ29ubmVjdG9ySW5mbyB9IGZyb20gXCIuLi8uLi9jb3JlL21vZGVsc1wiO1xyXG5pbXBvcnQgeyBnZXRXYXJuIH0gZnJvbSAnLi4vLi4vY29yZS9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBUcmFjZUJhc2UsIFNUQVJUX05PREUgfSBmcm9tICcuL3RyYWNlLmJhc2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2FjY291bnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHViU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvaHViLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEdXJhdGlvbkZvcm1hdFBpcGUgfSBmcm9tICcuLi8uLi9jb3JlL3BpcGVzL2R1cmF0aW9uLWZvcm1hdC5waXBlJztcclxuXHJcbkRpYWdyYW0uSW5qZWN0KENvbXBsZXhIaWVyYXJjaGljYWxUcmVlLCBCcG1uRGlhZ3JhbXMsIERhdGFCaW5kaW5nLyosIExheW91dEFuaW1hdGlvbiwgTGluZVJvdXRpbmcsIENvbm5lY3RvckJyaWRnaW5nKi8pO1xyXG5cclxuY29uc3QgUEVORElOR19QQVRIID0gJ00xOCwyMmwtMC4wMS02TDE0LDEybDMuOTktNC4wMUwxOCwySDZ2Nmw0LDRsLTQsMy45OVYyMkgxOHogTTgsNy41VjRoOHYzLjVsLTQsNEw4LDcuNXonLFxyXG4gIEZZSV9QQVRIID0gJ00xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDE1aC0ydi02aDJ2NnptMC04aC0yVjdoMnYyeicsXHJcbiAgRVNDQUxBVEVEX1BBVEggPSAnTTIyIDUuNzJsLTQuNi0zLjg2LTEuMjkgMS41MyA0LjYgMy44NkwyMiA1Ljcyek03Ljg4IDMuMzlMNi42IDEuODYgMiA1LjcxbDEuMjkgMS41MyA0LjU5LTMuODV6TTEyLjUgOEgxMXY2bDQuNzUgMi44NS43NS0xLjIzLTQtMi4zN1Y4ek0xMiA0Yy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAyIDkgOSA5YzQuOTcgMCA5LTQuMDMgOS05cy00LjAzLTktOS05em0wIDE2Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3onLFxyXG4gIFdBUk5OSU5HX1BBVEggPSAnTSAxMy43NjM3MzUsMS44NDMzNzM1IEggNi4zMDM3MzQ5IGwgLTUuMjcsNS4yNyB2IDcuNDU5OTk5NSBsIDUuMjcsNS4yNyBoIDcuNDYwMDAwMSBsIDUuMjcsLTUuMjcgViA3LjExMzM3MzUgWiBtIC0zLjczLDE0LjI5OTk5OTUgYyAtMC43MjAwMDAxLDAgLTEuMzAwMDAwMSwtMC41OCAtMS4zMDAwMDAxLC0xLjMgMCwtMC43MiAwLjU4LC0xLjMgMS4zMDAwMDAxLC0xLjMgMC43MiwwIDEuMywwLjU4IDEuMywxLjMgMCwwLjcyIC0wLjU4LDEuMyAtMS4zLDEuMyB6IG0gMSwtNC4zIEggOS4wMzM3MzQ5IFYgNS44NDMzNzM1IGggMi4wMDAwMDAxIHonO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtZmxvdycsXHJcbiAgdGVtcGxhdGU6ICcnLFxyXG4gIHN0eWxlVXJsczogWycuL2Zsb3cuY29tcG9uZW50LnNjc3MnXSxcclxuICB2aWV3UHJvdmlkZXJzOiBbQ29tcGxleEhpZXJhcmNoaWNhbFRyZWVTZXJ2aWNlXSxcclxuICBob3N0OiB7XHJcbiAgICBkaXI6ICdsdHInXHJcbiAgfVxyXG59KVxyXG4vKiogZmxvdy12aWV3IGNvbXBvbmVudCovXHJcbmV4cG9ydCBjbGFzcyBGbG93Vmlld0NvbXBvbmVudCBleHRlbmRzIFRyYWNlQmFzZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBtb2RlbDogRG9jdW1lbnRNb2RlbDxhbnk+O1xyXG4gIEBJbnB1dCgpIGNvbm5lY3RvclR5cGU6IFNlZ21lbnRzID0gJ09ydGhvZ29uYWwnO1xyXG4gIGRpYWdyYW06IERpYWdyYW07XHJcbiAgcmVhZG9ubHkgdG9vbDogRGlhZ3JhbVRvb2xzID0gRGlhZ3JhbVRvb2xzLlpvb21QYW47XHJcbiAgcmVhZG9ubHkgZGlhZ3JhbUNvbnN0cmFpbnRzOiBEaWFncmFtQ29uc3RyYWludHMgPVxyXG4gICAgRGlhZ3JhbUNvbnN0cmFpbnRzLkRlZmF1bHQgfFxyXG4gICAgRGlhZ3JhbUNvbnN0cmFpbnRzLlBhbiB8XHJcbiAgICBEaWFncmFtQ29uc3RyYWludHMuTGluZVJvdXRpbmcgfFxyXG4gICAgRGlhZ3JhbUNvbnN0cmFpbnRzLkJyaWRnaW5nO1xyXG4gIHB1YmxpYyByZWFkb25seSBsYXlvdXQgPSB7XHJcbiAgICB0eXBlOiAnQ29tcGxleEhpZXJhcmNoaWNhbFRyZWUnLFxyXG4gICAgY29ubmVjdGlvblBvaW50T3JpZ2luOiBDb25uZWN0aW9uUG9pbnRPcmlnaW4uRGlmZmVyZW50UG9pbnQsXHJcbiAgICBob3Jpem9udGFsU3BhY2luZzogNTAsXHJcbiAgICB2ZXJ0aWNhbFNwYWNpbmc6IDUwLFxyXG4gICAgdmVydGljYWxBbGlnbm1lbnQ6ICdUb3AnLFxyXG4gICAgY29ubmVjdGlvbkRpcmVjdGlvbjogJ09yaWVudGF0aW9uJyxcclxuICAgIG9yaWVudGF0aW9uOiB0aGlzLl9zZXNzaW9uLmludmVyc2UgPyAnUmlnaHRUb0xlZnQnIDogJ0xlZnRUb1JpZ2h0JyxcclxuICAgIG1hcmdpbjogeyBsZWZ0OiAxMCwgcmlnaHQ6IDEwLCB0b3A6IDEwLCBib3R0b206IDEwIH1cclxuICB9IGFzIExheW91dE1vZGVsO1xyXG5cclxuICByZWFkb25seSBzY3JvbGxTZXR0aW5ncyA9IHtcclxuICAgIG1pblpvb206IC41LFxyXG4gICAgY2FuQXV0b1Njcm9sbDogdHJ1ZSxcclxuICAgIGN1cnJlbnRab29tOiAxLjIsXHJcbiAgICBwYWRkaW5nOiB7IHRvcDogMCwgYm90dG9tOiAwIH0sXHJcbiAgICBhdXRvU2Nyb2xsQm9yZGVyOiB7IHRvcDogMCwgYm90dG9tOiAwIH0sXHJcbiAgICBtYXhab29tOiAyLjVcclxuICB9IGFzIFNjcm9sbFNldHRpbmdzTW9kZWw7XHJcblxyXG4gIHJlYWRvbmx5IHNuYXBTZXR0aW5ncyA9IHtcclxuICAgIGNvbnN0cmFpbnRzOiBTbmFwQ29uc3RyYWludHMuTm9uZSxcclxuICAgIGdyaWRUeXBlOiAnRG90cydcclxuICB9IGFzIFNuYXBTZXR0aW5nc01vZGVsO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbmZpZ3VyYXRpb246IHsgW25hbWU6IHN0cmluZ106IEZsb3dOb2RlIH0gPSB7fTtcclxuICBwcml2YXRlIF9pc3N1ZWQ6IERhdGU7XHJcbiAgcHJpdmF0ZSBfYWNjZW50Q29sb3IgPSB0aGlzLl9zZXNzaW9uLmdldEFjY2VudCgpO1xyXG4gIC8qKiB3b3JrZmxvdy12aWV3IGN0b3IgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9hY2NvdW50czogQWNjb3VudFNlcnZpY2UsIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLCBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kdXJhdGlvbjogRHVyYXRpb25Gb3JtYXRQaXBlLFxyXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4sXHJcbiAgICBodWI6IEh1YlNlcnZpY2UpIHtcclxuICAgIHN1cGVyKGh1Yik7XHJcbiAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubm9kZXMuZm9yRWFjaChuID0+XHJcbiAgICAgIHRoaXMuX2NvbmZpZ3VyYXRpb25bbi5uYW1lXSA9IG4pO1xyXG4gICAgX3Nlc3Npb24udGhlbWVDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLlxyXG4gICAgICBzdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX2FjY2VudENvbG9yID0gdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIG5nT25DaGFuZ2VzKF9jaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pbml0aWFsaXplKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgYXN5bmMgX2luaXRpYWxpemUoKSB7XHJcbiAgICBjb25zdCB7IGNvbm5lY3RvcnMsIG5vZGVzLCBpbmRpY2F0b3JzIH0gPSBhd2FpdCB0aGlzLl9wcmVwYXJlKCk7XHJcbiAgICB0aGlzLmRpYWdyYW0gJiYgdGhpcy5kaWFncmFtLmRlc3Ryb3koKTtcclxuICAgIHRoaXMuZGlhZ3JhbSA9IG5ldyBEaWFncmFtKHtcclxuICAgICAgd2lkdGg6ICcxMDAlJyxcclxuICAgICAgaGVpZ2h0OiAzODAsXHJcbiAgICAgIG5vZGVzLFxyXG4gICAgICBjb25uZWN0b3JzLFxyXG4gICAgICBsYXlvdXQ6IHRoaXMubGF5b3V0LFxyXG4gICAgICB0b29sOiB0aGlzLnRvb2wsXHJcbiAgICAgIHNjcm9sbFNldHRpbmdzOiB0aGlzLnNjcm9sbFNldHRpbmdzLFxyXG4gICAgICBzbmFwU2V0dGluZ3M6IHRoaXMuc25hcFNldHRpbmdzLFxyXG4gICAgICBjb25zdHJhaW50czogdGhpcy5kaWFncmFtQ29uc3RyYWludHMsXHJcbiAgICAgIGdldENvbm5lY3RvckRlZmF1bHRzOiB0aGlzLmNvbm5EZWZhdWx0cy5iaW5kKHRoaXMpLFxyXG4gICAgICBnZXROb2RlRGVmYXVsdHM6IHRoaXMubm9kZURlZmF1bHRzLmJpbmQodGhpcyksXHJcbiAgICB9LCB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgdGhpcy5kaWFncmFtLmRvTGF5b3V0KCk7XHJcbiAgICBpbmRpY2F0b3JzLmZvckVhY2goKG4sIGkpID0+IHtcclxuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5kaWFncmFtLmdldE5vZGVPYmplY3QoKG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsKS5wYXJlbnRJZCk7XHJcbiAgICAgIG4ub2Zmc2V0WCA9IHBhcmVudC5vZmZzZXRYICsgKHRoaXMuX3Nlc3Npb24uaW52ZXJzZSA/IC0yNSA6IDI1KTtcclxuICAgICAgbi5vZmZzZXRZID0gcGFyZW50Lm9mZnNldFkgKyAyNTtcclxuICAgICAgbi56SW5kZXggPSAxMDAwICsgaTtcclxuICAgICAgdGhpcy5kaWFncmFtLmFkZChuKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFncmFtLmZpdFRvUGFnZSgpO1xyXG4gICAgaW50ZXJ2YWwoNjAwMDApLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoXHJcbiAgICAgIHRoaXMuX3JlZnJlc2guYmluZCh0aGlzKVxyXG4gICAgKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfcmVmcmVzaCgpIHtcclxuICAgIHN1cGVyLnJlc2V0RXN0aW1hdGVUaW1lKCk7XHJcbiAgICB0aGlzLmRpYWdyYW0ubm9kZXMuZm9yRWFjaChuID0+IHtcclxuICAgICAgY29uc3QgeyBub2RlLCByZWNpcGllbnQgfSA9IG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsO1xyXG4gICAgICBpZiAocmVjaXBpZW50KSB7XHJcbiAgICAgICAgaWYgKCFyZWNpcGllbnQucmVwbGllZCAmJiByZWNpcGllbnQucGVuZGluZykge1xyXG4gICAgICAgICAgaWYgKHJlY2lwaWVudC5lc3RpbWF0ZSkgKG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsKS50b29sdGlwLmVzdGltYXRlZFRpbWUgPSB0aGlzLl90aW1lRXN0aW1hdGUobm9kZSk7XHJcbiAgICAgICAgICBlbHNlIGlmIChub2RlLnN0YW5kYXJkVGltZSkge1xyXG4gICAgICAgICAgICBjb25zdCBkaWZmID0gbm9kZS5zdGFuZGFyZFRpbWUgLSBkYXlqcygpLmRpZmYobm9kZS50aW1lLCAncycpO1xyXG4gICAgICAgICAgICBpZiAoZGlmZiA+IDApXHJcbiAgICAgICAgICAgICAgKG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsKS50b29sdGlwLmVzdGltYXRlZFRpbWUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdFc3RpbWF0ZVRpbWUnLCB0aGlzLl9kdXJhdGlvbi50cmFuc2Zvcm0oZGlmZikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbi50b29sdGlwLmNvbnRlbnQgPSB0aGlzLl90b29sdGlwKChuLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbCkudG9vbHRpcCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBpZiAobm9kZSAmJiBub2RlLmVzdGltYXRlKVxyXG4gICAgICAgICAgKG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsKS50b29sdGlwLmVzdGltYXRlZFRpbWUgPSB0aGlzLl90aW1lRXN0aW1hdGUobm9kZSksXHJcbiAgICAgICAgICAgIG4udG9vbHRpcC5jb250ZW50ID0gdGhpcy5fdG9vbHRpcCgobi5hZGRJbmZvIGFzIE5vZGVJbmZvTW9kZWwpLnRvb2x0aXApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHB1YmxpYyByZWZyZXNoKCkge1xyXG4gICAgdGhpcy5uZ09uQ2hhbmdlcyhudWxsKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIG9ialxyXG4gICAqL1xyXG4gIHB1YmxpYyBub2RlRGVmYXVsdHMob2JqOiBOb2RlTW9kZWwpOiBOb2RlTW9kZWwge1xyXG4gICAgY29uc3QgeyByZWNpcGllbnQsIG5vZGUsIGluZGljYXRvciB9ID0gb2JqLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbDtcclxuXHJcbiAgICBpZiAoaW5kaWNhdG9yKSB7XHJcbiAgICAgIG9iai53aWR0aCA9IG9iai5oZWlnaHQgPSAxNTtcclxuICAgICAgb2JqLnN0eWxlLnN0cm9rZVdpZHRoID0gMDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAvLyBvYmouc2hhcGUgPSB7IHR5cGU6ICdCcG1uJywgc2hhcGU6ICdFdmVudCcgfSBhcyBCcG1uU2hhcGVNb2RlbDtcclxuICAgICAgb2JqLndpZHRoID0gb2JqLmhlaWdodCA9IDUwO1xyXG4gICAgICBpZiAob2JqLmFubm90YXRpb25zICYmIG9iai5hbm5vdGF0aW9ucy5sZW5ndGgpIG9iai5hbm5vdGF0aW9uc1swXS5zdHlsZS5jb2xvciA9IHRoaXMuX3Nlc3Npb24udGhlbWUuZGFyayA/ICd3aGl0ZScgOiAnYmxhY2snO1xyXG4gICAgICBpZiAobm9kZSAmJiBub2RlLmVzdGltYXRlKSB7XHJcbiAgICAgICAgb2JqLnN0eWxlLnN0cm9rZUNvbG9yID0gdGhpcy5fc2Vzc2lvbi50aGVtZS5kYXJrID8gJ3doaXRlJyA6ICdibGFjayc7XHJcbiAgICAgICAgb2JqLnN0eWxlLm9wYWNpdHkgPSBvYmouYW5ub3RhdGlvbnNbMF0uc3R5bGUub3BhY2l0eSA9IC42O1xyXG4gICAgICAgIG9iai5zdHlsZS5maWxsID0gJ3RyYW5zcGFyZW50JztcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBvYmouc3R5bGUuc3Ryb2tlQ29sb3IgPSB0aGlzLl9hY2NlbnRDb2xvcjtcclxuICAgICAgICBvYmouc3R5bGUuZmlsbCA9IHJlY2lwaWVudCAmJiByZWNpcGllbnQucGVuZGluZyA/IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KDQwMCkgOiAndHJhbnNwYXJlbnQnO1xyXG4gICAgICB9XHJcbiAgICAgIG9iai5zdHlsZS5zdHJva2VXaWR0aCA9IDI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb2JqO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gY29ubmVjdG9yXHJcbiAgICovXHJcbiAgcHVibGljIGNvbm5EZWZhdWx0cyhjb25uZWN0b3I6IENvbm5lY3Rvck1vZGVsKSB7XHJcbiAgICBjb25uZWN0b3IudHlwZSA9IHRoaXMuY29ubmVjdG9yVHlwZTtcclxuICAgIGNvbm5lY3Rvci5jb3JuZXJSYWRpdXMgPSA2O1xyXG4gICAgY29ubmVjdG9yLnRhcmdldERlY29yYXRvci5oZWlnaHQgPSA3O1xyXG4gICAgY29ubmVjdG9yLnRhcmdldERlY29yYXRvci53aWR0aCA9IDc7XHJcbiAgICBpZiAoKGNvbm5lY3Rvci5hZGRJbmZvIGFzIENvbm5lY3RvckluZm9Nb2RlbCkuZXN0aW1hdGUpIHtcclxuICAgICAgY29ubmVjdG9yLnN0eWxlLnN0cm9rZURhc2hBcnJheSA9ICcyIDInO1xyXG4gICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPVxyXG4gICAgICAgIGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iuc3R5bGUuZmlsbCA9XHJcbiAgICAgICAgY29ubmVjdG9yLnRhcmdldERlY29yYXRvci5zdHlsZS5zdHJva2VDb2xvciA9XHJcbiAgICAgICAgdGhpcy5fc2Vzc2lvbi50aGVtZS5kYXJrID8gJ3doaXRlJyA6ICdibGFjayc7XHJcbiAgICAgIGNvbm5lY3Rvci5zdHlsZS5zdHJva2VXaWR0aCA9IDE7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29ubmVjdG9yLnN0eWxlLnN0cm9rZUNvbG9yID0gY29ubmVjdG9yLnRhcmdldERlY29yYXRvci5zdHlsZS5zdHJva2VDb2xvciA9IGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iuc3R5bGUuZmlsbCA9IHRoaXMuX2FjY2VudENvbG9yO1xyXG4gICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgfVxyXG4gICAgY29ubmVjdG9yLnRhcmdldERlY29yYXRvci5zaGFwZSA9ICdOb25lJztcclxuICB9XHJcbiAgLyoqICovXHJcbiAgcHJpdmF0ZSBhc3luYyBfcHJlcGFyZSgpOiBQcm9taXNlPHsgbm9kZXM6IE5vZGVNb2RlbFtdOyBjb25uZWN0b3JzOiBDb25uZWN0b3JNb2RlbFtdOyBpbmRpY2F0b3JzOiBOb2RlTW9kZWxbXSB9PiB7XHJcbiAgICBjb25zdCB7IGNvbm5lY3RvcnM6IGRjb25uZWN0b3JzLCBub2RlczogZG5vZGVzIH0gPSB0aGlzLm1vZGVsLndvcmtmbG93O1xyXG4gICAgY29uc3QgaW5kaWNhdG9yczogTm9kZU1vZGVsW10gPSBbXSwgY29ubmVjdG9yczogQ29ubmVjdG9yTW9kZWxbXSA9IGRjb25uZWN0b3JzLm1hcChjID0+IChcclxuICAgICAge1xyXG4gICAgICAgIHNvdXJjZUlEOiBjLnNvdXJjZUlkLFxyXG4gICAgICAgIHRhcmdldElEOiBjLnRhcmdldElkLFxyXG4gICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgIGVzdGltYXRlOiBjLmVzdGltYXRlLFxyXG4gICAgICAgICAgdGltZTogYy50aW1lXHJcbiAgICAgICAgfSBhcyBDb25uZWN0b3JJbmZvTW9kZWxcclxuICAgICAgfSBhcyBDb25uZWN0b3JNb2RlbFxyXG4gICAgKSksIG5vZGVzOiBOb2RlTW9kZWxbXSA9IFtdO1xyXG4gICAgdGhpcy5faXNzdWVkID0gdGhpcy5tb2RlbC5pc3N1ZWQgfHwgdGhpcy5tb2RlbC5sb2cuZmlsdGVyKGwgPT4gbC50eXBlID09PSAnU3VibWl0JylbMF0udGltZTtcclxuICAgIGxldCB6SW5kZXggPSA1MDAsIGkgPSAwO1xyXG4gICAgd2hpbGUgKGkgPCBkbm9kZXMubGVuZ3RoKSB7XHJcbiAgICAgIGxldCBub2RlID0gZG5vZGVzW2ldO1xyXG4gICAgICBpKys7XHJcbiAgICAgIGxldCBjb25maWd1cmF0aW9uID0gdGhpcy5fY29uZmlndXJhdGlvbltub2RlLnR5cGVdO1xyXG4gICAgICBsZXQgcmVjaXBpZW50cyA9IHRoaXMubW9kZWwucmVjaXBpZW50cy5cclxuICAgICAgICBmaWx0ZXIociA9PiByLm5vZGVJZCA9PT0gbm9kZS5pZCAmJiByLnJlY2VpdmVkID49IHRoaXMuX2lzc3VlZCk7XHJcbiAgICAgIGlmIChyZWNpcGllbnRzLmxlbmd0aCkge1xyXG4gICAgICAgIHJlY2lwaWVudHMgPSByZWNpcGllbnRzLnNvcnQoYSA9PiBhLnJlcGxpZWQgPyAtMSA6IDEpO1xyXG4gICAgICAgIGZvciAodmFyIHIgPSAwOyByIDwgcmVjaXBpZW50cy5sZW5ndGg7IHIrKykge1xyXG4gICAgICAgICAgbGV0IHJlY2lwaWVudCA9IHJlY2lwaWVudHNbcl07XHJcbiAgICAgICAgICBjb25zdCB7IGFubm90YXRpb24sIHRvb2x0aXAgfSA9IGF3YWl0IHRoaXMuX25vdGUobm9kZSwgcmVjaXBpZW50KTtcclxuICAgICAgICAgIGNvbnN0IG5vZCA9IHtcclxuICAgICAgICAgICAgaWQ6IHIgPT09IDAgPyBub2RlLmlkIDogbm9kZS5pZCArIHIudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgc2hhcGU6IHRoaXMuX2NvbmZpZ3VyYXRpb25bbm9kZS50eXBlXS5zaGFwZSxcclxuICAgICAgICAgICAgekluZGV4OiB6SW5kZXgrKyxcclxuICAgICAgICAgICAgdG9vbHRpcDoge1xyXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHRoaXMuX3Rvb2x0aXAodG9vbHRpcCksXHJcbiAgICAgICAgICAgICAgcG9zaXRpb246ICdUb3BDZW50ZXInXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzOiBOb2RlQ29uc3RyYWludHMuRGVmYXVsdCB8IE5vZGVDb25zdHJhaW50cy5Ub29sdGlwLFxyXG4gICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgdG9vbHRpcCxcclxuICAgICAgICAgICAgICByZWNpcGllbnQsXHJcbiAgICAgICAgICAgICAgbm9kZVxyXG4gICAgICAgICAgICB9IGFzIE5vZGVJbmZvTW9kZWwsXHJcbiAgICAgICAgICAgIGFubm90YXRpb25zOiBbe1xyXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IGFubm90YXRpb24sXHJcbiAgICAgICAgICAgICAgbWFyZ2luOiB7IHRvcDogNCB9LFxyXG4gICAgICAgICAgICAgIHZlcnRpY2FsQWxpZ25tZW50OiAnVG9wJyxcclxuICAgICAgICAgICAgICBvZmZzZXQ6IHtcclxuICAgICAgICAgICAgICAgIHk6IDEsXHJcbiAgICAgICAgICAgICAgICB4OiAuNVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfV1cclxuICAgICAgICAgIH0gYXMgTm9kZU1vZGVsO1xyXG4gICAgICAgICAgaWYgKHIgPiAwKSB7XHJcbiAgICAgICAgICAgIGRjb25uZWN0b3JzLmZvckVhY2goYyA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGMudGFyZ2V0SWQgPT09IG5vZGUuaWQpIGNvbm5lY3RvcnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBzb3VyY2VJRDogYy5zb3VyY2VJZCxcclxuICAgICAgICAgICAgICAgIHRhcmdldElEOiBub2QuaWQsXHJcbiAgICAgICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgIGVzdGltYXRlOiBjLmVzdGltYXRlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgaWYgKGMuc291cmNlSWQgPT09IG5vZGUuaWQpXHJcbiAgICAgICAgICAgICAgICBjb25uZWN0b3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICBzb3VyY2VJRDogbm9kLmlkLFxyXG4gICAgICAgICAgICAgICAgICB0YXJnZXRJRDogYy50YXJnZXRJZCxcclxuICAgICAgICAgICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgICAgIGVzdGltYXRlOiBjLmVzdGltYXRlXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIG5vZGVzLnB1c2gobm9kKTtcclxuICAgICAgICAgIGlmIChyZWNpcGllbnQuYWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbmQoYSA9PiBhLm5hbWUgPT09IHJlY2lwaWVudC5hY3Rpb24pO1xyXG4gICAgICAgICAgICBpZiAoYWN0aW9uICYmIGFjdGlvbi5zaGFwZSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFjdGlvbkluZGljYXRvciA9IHtcclxuICAgICAgICAgICAgICAgIGlkOiBub2QuaWQgKyAnYWN0aW9uJyxcclxuICAgICAgICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdQYXRoJyxcclxuICAgICAgICAgICAgICAgICAgZGF0YTogYWN0aW9uLnNoYXBlLFxyXG4gICAgICAgICAgICAgICAgICBhbGlnbjogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlID8gJ1hNaW5ZTWF4JyA6ICdYTWF4WU1heCcsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgICAgICAgZmlsbDogYWN0aW9uLmNvbG9yIHx8IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KDkwMClcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IG5vZC5pZFxyXG4gICAgICAgICAgICAgICAgfSBhcyBOb2RlSW5mb01vZGVsXHJcbiAgICAgICAgICAgICAgfSBhcyBOb2RlTW9kZWw7XHJcbiAgICAgICAgICAgICAgaW5kaWNhdG9ycy5wdXNoKGFjdGlvbkluZGljYXRvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZWNpcGllbnQucGVuZGluZyAmJiAhcmVjaXBpZW50LmVzdGltYXRlKVxyXG4gICAgICAgICAgICBpbmRpY2F0b3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgIGlkOiBub2QuaWQgKyAncGVuZGluZycsXHJcbiAgICAgICAgICAgICAgc2hhcGU6IHtcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdQYXRoJyxcclxuICAgICAgICAgICAgICAgIGRhdGE6IFBFTkRJTkdfUEFUSCxcclxuICAgICAgICAgICAgICAgIGFsaWduOiB0aGlzLl9zZXNzaW9uLmludmVyc2UgPyAnWE1heFlNYXgnIDogJ1hNaW5ZTWF4J1xyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgICAgIGZpbGw6IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KDkwMClcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHBhcmVudElkOiBub2QuaWRcclxuICAgICAgICAgICAgICB9IGFzIE5vZGVJbmZvTW9kZWxcclxuICAgICAgICAgICAgfSBhcyBOb2RlTW9kZWwpO1xyXG4gICAgICAgICAgaWYgKG5vZGUuZnlpKVxyXG4gICAgICAgICAgICBpbmRpY2F0b3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgIGlkOiBub2QuaWQgKyAnZnlpJyxcclxuICAgICAgICAgICAgICBzaGFwZToge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogJ1BhdGgnLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogRllJX1BBVEgsXHJcbiAgICAgICAgICAgICAgICBhbGlnbjogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlID8gJ1hNaW5ZTWF4JyA6ICdYTWF4WU1heCdcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICBmaWxsOiAnIzE5NzZkMidcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHBhcmVudElkOiBub2QuaWRcclxuICAgICAgICAgICAgICB9IGFzIE5vZGVJbmZvTW9kZWxcclxuICAgICAgICAgICAgfSBhcyBOb2RlTW9kZWxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIC8vICBpZiAodGhpcy5tb2RlbC5sb2cuZmlsdGVyKGwgPT4gbC50aW1lID4gdGhpcy5fc3VibWl0dGVkICYmIGwudHlwZSA9PT0gJ0VzY2FsYXRpb24nICYmIGwucmVjaXBpZW50SWQgPT09IHJlY2lwaWVudC5pZCkubGVuZ3RoKSB7XHJcbiAgICAgICAgICAvLyAgICBjb25zdCBlc2NhbGF0ZUluZGljYXRvciA9IHtcclxuICAgICAgICAgIC8vICAgICAgaWQ6IG5vZC5pZCArICdlc2NhbGF0ZScsXHJcbiAgICAgICAgICAvLyAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAvLyAgICAgICAgdHlwZTogJ1BhdGgnLFxyXG4gICAgICAgICAgLy8gICAgICAgIGRhdGE6IEVTQ0FMQVRFRF9QQVRILFxyXG4gICAgICAgICAgLy8gICAgICAgIGFsaWduOiB0aGlzLl9zZXNzaW9uLmludmVyc2UgPyAnWE1pbllNYXgnIDogJ1hNYXhZTWF4J1xyXG4gICAgICAgICAgLy8gICAgICB9LFxyXG4gICAgICAgICAgLy8gICAgICBzdHlsZToge1xyXG4gICAgICAgICAgLy8gICAgICAgIGZpbGw6IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KDkwMClcclxuICAgICAgICAgIC8vICAgICAgfSxcclxuICAgICAgICAgIC8vICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgLy8gICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgIC8vICAgICAgICBwYXJlbnRJZDogbm9kLmlkXHJcbiAgICAgICAgICAvLyAgICAgIH0gYXMgTm9kZUluZm9Nb2RlbFxyXG4gICAgICAgICAgLy8gICAgfSBhcyBOb2RlTW9kZWw7XHJcbiAgICAgICAgICAvLyAgICBpbmRpY2F0b3JzLnB1c2goZXNjYWxhdGVJbmRpY2F0b3IpO1xyXG4gICAgICAgICAgLy8gIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgeyBzdGF0ZSwgYW5ub3RhdGlvbiwgdG9vbHRpcCB9ID0gYXdhaXQgdGhpcy5fc2hhcGUobm9kZSk7XHJcbiAgICAgICAgY29uc3QgeyBzaGFwZSB9ID0gY29uZmlndXJhdGlvbjtcclxuICAgICAgICBub2Rlcy5wdXNoKHtcclxuICAgICAgICAgIGlkOiBub2RlLmlkLFxyXG4gICAgICAgICAgc2hhcGUsXHJcbiAgICAgICAgICB6SW5kZXg6IHpJbmRleCsrLFxyXG4gICAgICAgICAgdG9vbHRpcDoge1xyXG4gICAgICAgICAgICBjb250ZW50OiB0aGlzLl90b29sdGlwKHRvb2x0aXApLFxyXG4gICAgICAgICAgICBwb3NpdGlvbjogJ1RvcENlbnRlcidcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBjb25zdHJhaW50czogT2JqZWN0LmtleXModG9vbHRpcCkubGVuZ3RoID8gTm9kZUNvbnN0cmFpbnRzLkRlZmF1bHQgfCBOb2RlQ29uc3RyYWludHMuVG9vbHRpcCA6IE5vZGVDb25zdHJhaW50cy5EZWZhdWx0LFxyXG4gICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICB0b29sdGlwLFxyXG4gICAgICAgICAgICBub2RlXHJcbiAgICAgICAgICB9IGFzIE5vZGVJbmZvTW9kZWwsXHJcbiAgICAgICAgICBhbm5vdGF0aW9uczogW3tcclxuICAgICAgICAgICAgY29udGVudDogYW5ub3RhdGlvbixcclxuICAgICAgICAgICAgb2Zmc2V0OiBzaGFwZS50eXBlID09PSAnUGF0aCcgPyB7XHJcbiAgICAgICAgICAgICAgeTogMVxyXG4gICAgICAgICAgICB9IDogeyB4OiAuNSB9LFxyXG4gICAgICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgICAgIC8vYm9sZDogdHJ1ZVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB2ZXJ0aWNhbEFsaWdubWVudDogc2hhcGUudHlwZSA9PT0gJ1BhdGgnID8gJ1RvcCcgOiAnQ2VudGVyJ1xyXG4gICAgICAgICAgfV1cclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoc3RhdGUgJiYgc3RhdGUuc2hhcGUgJiYgIW5vZGUuZXN0aW1hdGUpXHJcbiAgICAgICAgICBpbmRpY2F0b3JzLnB1c2goe1xyXG4gICAgICAgICAgICBpZDogbm9kZS5pZCArICdzdGF0ZScsXHJcbiAgICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgICAgdHlwZTogJ1BhdGgnLFxyXG4gICAgICAgICAgICAgIGRhdGE6IHN0YXRlLnNoYXBlLFxyXG4gICAgICAgICAgICAgIGFsaWduOiB0aGlzLl9zZXNzaW9uLmludmVyc2UgPyAnWE1heFlNYXgnIDogJ1hNaW5ZTWF4J1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgICAgIGZpbGw6IHN0YXRlLmNvbG9yIHx8ICdibGFjaydcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICBwYXJlbnRJZDogbm9kZS5pZCxcclxuICAgICAgICAgICAgICBub2RlOiBub2RlXHJcbiAgICAgICAgICAgIH0gYXMgTm9kZUluZm9Nb2RlbFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKG5vZGUuZXJyb3IpIHtcclxuICAgICAgICAgIGNvbnN0IHdhcm5uaW5nSW5kaWNhdG9yID0ge1xyXG4gICAgICAgICAgICBpZDogbm9kZS5pZCArICdleGNlcHRpb24nLFxyXG4gICAgICAgICAgICBzaGFwZToge1xyXG4gICAgICAgICAgICAgIHR5cGU6ICdQYXRoJyxcclxuICAgICAgICAgICAgICBkYXRhOiBXQVJOTklOR19QQVRILFxyXG4gICAgICAgICAgICAgIGFsaWduOiB0aGlzLl9zZXNzaW9uLmludmVyc2UgPyAnWE1pbllNYXgnIDogJ1hNYXhZTWF4J1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgICAgIGZpbGw6IGdldFdhcm4oODAwKVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxyXG4gICAgICAgICAgICAgIHBhcmVudElkOiBub2RlLmlkXHJcbiAgICAgICAgICAgIH0gYXMgTm9kZUluZm9Nb2RlbFxyXG4gICAgICAgICAgfSBhcyBOb2RlTW9kZWw7XHJcbiAgICAgICAgICBpbmRpY2F0b3JzLnB1c2god2Fybm5pbmdJbmRpY2F0b3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBjb25uZWN0b3JcclxuICAgICAqIEBwYXJhbSBpbmRleFxyXG4gICAgICogQHBhcmFtIHZjb25uZWN0b3JzXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIHJlcm91dGUoY29ubmVjdG9yOiBDb25uZWN0b3JJbmZvLCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICAgIHdoaWxlIChpbmRleCA8IGRjb25uZWN0b3JzLmxlbmd0aCkge1xyXG4gICAgICAgIGxldCBkY29ubmVjdG9yID0gZGNvbm5lY3RvcnNbaW5kZXhdO1xyXG4gICAgICAgIGlmIChkY29ubmVjdG9yLnNvdXJjZUlkID09PSBjb25uZWN0b3IudGFyZ2V0SWQpIHtcclxuICAgICAgICAgIGlmIChub2Rlcy5zb21lKG4gPT4gbi5pZCA9PT0gZGNvbm5lY3Rvci50YXJnZXRJZCkpXHJcbiAgICAgICAgICAgIGNvbm5lY3RvcnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgc291cmNlSUQ6IGNvbm5lY3Rvci5zb3VyY2VJZCxcclxuICAgICAgICAgICAgICB0YXJnZXRJRDogZGNvbm5lY3Rvci50YXJnZXRJZCxcclxuICAgICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICBlc3RpbWF0ZTogZGNvbm5lY3Rvci5lc3RpbWF0ZSxcclxuICAgICAgICAgICAgICAgIHRpbWU6IGRjb25uZWN0b3IudGltZVxyXG4gICAgICAgICAgICAgIH0gYXMgQ29ubmVjdG9ySW5mb01vZGVsXHJcbiAgICAgICAgICAgIH0gYXMgQ29ubmVjdG9yTW9kZWwpO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXJvdXRlKHtcclxuICAgICAgICAgICAgICB0aW1lOiBkY29ubmVjdG9yLnRpbWUsXHJcbiAgICAgICAgICAgICAgdGFyZ2V0SWQ6IGRjb25uZWN0b3IudGFyZ2V0SWQsXHJcbiAgICAgICAgICAgICAgZXN0aW1hdGU6IGRjb25uZWN0b3IuZXN0aW1hdGUsXHJcbiAgICAgICAgICAgICAgc291cmNlSWQ6IGNvbm5lY3Rvci5zb3VyY2VJZFxyXG4gICAgICAgICAgICB9LCBpbmRleCArIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpbmRleCsrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBjb25uZWN0b3JzLCBub2RlcywgaW5kaWNhdG9ycyB9O1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gbm9kZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgYXN5bmMgX3NoYXBlKG5vZGU6IE5vZGVJbmZvKTogUHJvbWlzZTx7IHN0YXRlOiBTdGF0ZTsgYW5ub3RhdGlvbjogc3RyaW5nOyB0b29sdGlwOiBOb2RlVG9vbHRpcE1vZGVsOyB9PiB7XHJcbiAgICBjb25zdCB0b29sdGlwID0ge30gYXMgTm9kZVRvb2x0aXBNb2RlbDtcclxuICAgIGlmIChub2RlLmVycm9yKSB0b29sdGlwLmVycm9yID0gbm9kZS5lcnJvcjtcclxuICAgIGxldCBhbm5vdGF0aW9uOiBzdHJpbmcsIHN0YXRlOiBTdGF0ZTtcclxuICAgIGNvbnN0IGxvZyA9IHRoaXMubW9kZWwubG9nLmZpbHRlcihsID0+IGwubm9kZUlkID09PSBub2RlLmlkICYmIGwudGltZSA+PSB0aGlzLl9pc3N1ZWQpO1xyXG4gICAgY29uc3Qgc3RhdGVMb2cgPSBsb2cuZmluZChsID0+IGwudHlwZSA9PT0gJ1N0YXRlQ2hhbmdlJyk7XHJcbiAgICBpZiAoc3RhdGVMb2cpIHtcclxuICAgICAgc3RhdGUgPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuc3RhdGVzLmZpbmQocyA9PiBzLm5hbWUgPT09IHN0YXRlTG9nLnN0YXRlKTtcclxuXHJcbiAgICAgIGFubm90YXRpb24gPSBzdGF0ZSA/ICgobm9kZS5lc3RpbWF0ZSA/IHN0YXRlLmZ1dHVyZSA6IHN0YXRlLnBhc3QpIHx8IHN0YXRlLnRpdGxlKSA6IHN0YXRlTG9nLnN0YXRlO1xyXG4gICAgfVxyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gU1RBUlRfTk9ERSkge1xyXG4gICAgICBpZiAoIW5vZGUuZXN0aW1hdGUpIHtcclxuICAgICAgICBjb25zdCB7IG5vdGUsIHJvbGUgfSA9IGF3YWl0IHRoaXMuX3N0YXJ0Tm9kZSgpO1xyXG4gICAgICAgIHRvb2x0aXAubm90ZSA9IG5vdGUsXHJcbiAgICAgICAgICB0b29sdGlwLnJvbGUgPSByb2xlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChub2RlLmVzdGltYXRlKVxyXG4gICAgICB0b29sdGlwLmVzdGltYXRlZFRpbWUgPSB0aGlzLl90aW1lRXN0aW1hdGUobm9kZSk7XHJcbiAgICByZXR1cm4geyBzdGF0ZSwgdG9vbHRpcCwgYW5ub3RhdGlvbiB9O1xyXG4gIH1cclxuICByZXNpemUoKSB7XHJcbiAgICBpZiAodGhpcy5kaWFncmFtKSB0aGlzLmRpYWdyYW0ud2lkdGggPSAnYXV0byc7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3RpbWVFc3RpbWF0ZShub2RlOiBOb2RlSW5mbyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB7IG1pbiwgbWF4IH0gPSBzdXBlci5fZXN0aW1hdGVUaW1lKG5vZGUpO1xyXG4gICAgaWYgKG1heClcclxuICAgICAgcmV0dXJuICFtaW4gfHwgbWluID09PSBtYXggP1xyXG4gICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0VzdGltYXRlVGltZScsIHRoaXMuX2R1cmF0aW9uLnRyYW5zZm9ybShtYXgpKSA6XHJcbiAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnRXN0aW1hdGVUaW1lUmFuZ2UnLCB0aGlzLl9kdXJhdGlvbi50cmFuc2Zvcm0obWluKSwgdGhpcy5fZHVyYXRpb24udHJhbnNmb3JtKG1heCkpO1xyXG4gIH1cclxuICBwcml2YXRlIF90b29sdGlwKG9iajogTm9kZVRvb2x0aXBNb2RlbCkge1xyXG4gICAgY29uc3QgeyBub3RlLCByb2xlLCBzdWJzdGl0dXRpbmcsIGR1cmF0aW9uLCBzdGFuZGFyZFRpbWUsIGVzdGltYXRlZFRpbWUsIGVycm9yLCBmeWkgfSA9IG9ialxyXG4gICAgY29uc3Qgcm93cyA9IFtlcnJvciwgbm90ZSwgcm9sZSwgc3Vic3RpdHV0aW5nLCBmeWksIGR1cmF0aW9uLCBzdGFuZGFyZFRpbWUsIGVzdGltYXRlZFRpbWVdO1xyXG4gICAgbGV0IGRpdjogSFRNTERpdkVsZW1lbnQ7XHJcbiAgICByb3dzLmZvckVhY2gociA9PiB7XHJcbiAgICAgIGlmICghcikgcmV0dXJuO1xyXG4gICAgICBpZiAoIWRpdikgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XHJcbiAgICAgIHNwYW4uaW5uZXJUZXh0ID0gcjtcclxuICAgICAgZGl2LmFwcGVuZChzcGFuKTtcclxuICAgICAgY29uc3QgYnIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdicicpO1xyXG4gICAgICBkaXYuYXBwZW5kKGJyKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRpdjtcclxuICB9XHJcbiAgcHJpdmF0ZSBhc3luYyBfc3RhcnROb2RlKCk6IFByb21pc2U8e1xyXG4gICAgbm90ZTogc3RyaW5nLCByb2xlOiBzdHJpbmc7XHJcbiAgfT4ge1xyXG4gICAgbGV0IHdobzogVXNlckluZm8gfCAneW91JywgYnk6IFVzZXJJbmZvIHwgJ3lvdSc7XHJcbiAgICBpZiAodGhpcy5tb2RlbC5vd25lcklkID09PSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUudXNlcklkICYmICF0aGlzLl9zZXNzaW9uLmlzSW1wZXJzb25hdGluZylcclxuICAgICAgd2hvID0gJ3lvdSc7XHJcbiAgICBlbHNlXHJcbiAgICAgIHdobyA9IGF3YWl0IHRoaXMuX2FjY291bnRzLmdldCh0aGlzLm1vZGVsLm93bmVySWQpLnRvUHJvbWlzZSgpO1xyXG4gICAgaWYgKHRoaXMubW9kZWwub3duZXJCeUlkKSB7XHJcbiAgICAgIGlmICh0aGlzLm1vZGVsLm93bmVyQnlJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpXHJcbiAgICAgICAgYnkgPSAneW91JztcclxuICAgICAgZWxzZVxyXG4gICAgICAgIGJ5ID0gYXdhaXQgdGhpcy5fYWNjb3VudHMuZ2V0KHRoaXMubW9kZWwub3duZXJCeUlkKS50b1Byb21pc2UoKTtcclxuICAgIH1cclxuICAgIGxldCBub3RlOiBzdHJpbmcsIHJvbGU6IHN0cmluZztcclxuICAgIGlmIChieSkge1xyXG4gICAgICBpZiAoYnkgPT09ICd5b3UnKVxyXG4gICAgICAgIG5vdGUgPVxyXG4gICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnU3VibWl0dGVkTm90ZUJ5WW91JyxcclxuICAgICAgICAgICAgd2hvID09PSAneW91JyA/IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdScpIDogKHdobyBhcyBVc2VySW5mbykubmFtZSxcclxuICAgICAgICAgICAgdGhpcy5fZnJvbU5vdyh0aGlzLm1vZGVsLmlzc3VlZCkpO1xyXG5cclxuICAgICAgZWxzZVxyXG4gICAgICAgIG5vdGUgPVxyXG4gICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnU3VibWl0dGVkTm90ZUJ5JyxcclxuICAgICAgICAgICAgd2hvID09PSAneW91JyA/IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdScpIDogKHdobyBhcyBVc2VySW5mbykubmFtZSxcclxuICAgICAgICAgICAgKGJ5IGFzIFVzZXJJbmZvKS5uYW1lLFxyXG4gICAgICAgICAgICB0aGlzLl9mcm9tTm93KHRoaXMubW9kZWwuaXNzdWVkKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAod2hvID09PSAneW91JylcclxuICAgICAgbm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdVN1Ym1pdHRlZE5vdGUnLCB0aGlzLl9mcm9tTm93KHRoaXMubW9kZWwuaXNzdWVkKSk7XHJcblxyXG4gICAgZWxzZVxyXG4gICAgICBub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnU3VibWl0dGVkTm90ZScsICh3aG8gYXMgVXNlckluZm8pLm5hbWUsIHRoaXMuX2Zyb21Ob3codGhpcy5tb2RlbC5pc3N1ZWQpKTtcclxuICAgIGlmICh3aG8gIT09ICd5b3UnICYmIHdoby5yb2xlKVxyXG4gICAgICByb2xlID0gYC0gJHt3aG8ucm9sZX1gO1xyXG4gICAgcmV0dXJuIHsgbm90ZSwgcm9sZSB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfbm90ZShub2RlOiBOb2RlSW5mbywgcmVjaXBpZW50OiBSZWNpcGllbnQpOiBQcm9taXNlPHsgYW5ub3RhdGlvbjogc3RyaW5nOyB0b29sdGlwOiBOb2RlVG9vbHRpcE1vZGVsIH0+IHtcclxuICAgIGNvbnN0IHRvb2x0aXA6IE5vZGVUb29sdGlwTW9kZWwgPSB7fTtcclxuICAgIGxldCBhbm5vdGF0aW9uOiBzdHJpbmc7XHJcblxyXG4gICAgaWYgKHJlY2lwaWVudC51c2VySWQgPT09IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS51c2VySWQpIHtcclxuICAgICAgYW5ub3RhdGlvbiA9IHRoaXMuX3Nlc3Npb24uaXNJbXBlcnNvbmF0aW5nID8gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUgOiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3UnKTtcclxuICAgICAgaWYgKHJlY2lwaWVudC5ieUlkKSB7XHJcbiAgICAgICAgY29uc3QgdSA9IGF3YWl0IHRoaXMuX2FjY291bnRzLmdldChyZWNpcGllbnQuYnlJZCkudG9Qcm9taXNlKClcclxuICAgICAgICBjb25zdCBwYXN0ID0gdGhpcy5fYWN0aW9uKHJlY2lwaWVudC5hY3Rpb24sIHUuZ2VuZGVyKSwgdGltZSA9IHRoaXMuX2Zyb21Ob3cocmVjaXBpZW50LnJlcGxpZWQpO1xyXG4gICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdVRha2VuQWN0aW9uQnknLCB1Lm5hbWUsIHBhc3QsIHRpbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHJlY2lwaWVudC5yZXBsaWVkKSB7XHJcbiAgICAgICAgY29uc3QgdGltZSA9IHRoaXMuX2Zyb21Ob3cocmVjaXBpZW50LnJlcGxpZWQpO1xyXG4gICAgICAgIGlmICh0aGlzLl9zZXNzaW9uLmlzSW1wZXJzb25hdGluZykge1xyXG4gICAgICAgICAgY29uc3QgcGFzdCA9IHRoaXMuX2FjdGlvbihyZWNpcGllbnQuYWN0aW9uLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyKTtcclxuICAgICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvblRha2VuJywgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIHBhc3QsIHRpbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHBhc3QgPSB0aGlzLl9hY3Rpb24ocmVjaXBpZW50LmFjdGlvbiwgJ3lvdScpO1xyXG4gICAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91VGFrZW5BY3Rpb24nLCBwYXN0LCB0aW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoIW5vZGUuZXN0aW1hdGUpIHtcclxuICAgICAgICBjb25zdCB0aW1lID0gdGhpcy5fZnJvbU5vdyhyZWNpcGllbnQucmVjZWl2ZWQpO1xyXG4gICAgICAgIGlmICh0aGlzLl9zZXNzaW9uLmlzSW1wZXJzb25hdGluZylcclxuICAgICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnUmVjZWl2ZWRCeScsIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5nZW5kZXIsIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5uYW1lLCB0aW1lKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0b29sdGlwLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3VSZWNlaXZlZCcsIHRpbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZWNpcGllbnQucm9sZSkge1xyXG4gICAgICAgIGNvbnN0IGNyb2xlID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnJvbGVzLmZpbmQobyA9PiBvLm5hbWUgPT09IHJlY2lwaWVudC5yb2xlKTtcclxuICAgICAgICB0b29sdGlwLnJvbGUgPSBgLSAke2Nyb2xlID8gY3JvbGUudGl0bGUgOiByZWNpcGllbnQucm9sZX1gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29uc3Qgd2hvID0gYXdhaXQgdGhpcy5fYWNjb3VudHMuZ2V0KHJlY2lwaWVudC51c2VySWQpLnRvUHJvbWlzZSgpO1xyXG4gICAgICBhbm5vdGF0aW9uID0gd2hvLm5hbWU7XHJcbiAgICAgIGlmICh3aG8ucm9sZSkgdG9vbHRpcC5yb2xlID0gYC0gJHt3aG8ucm9sZX1gO1xyXG4gICAgICBlbHNlIGlmIChyZWNpcGllbnQucm9sZSkge1xyXG4gICAgICAgIGNvbnN0IGNyb2xlID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnJvbGVzLmZpbmQobyA9PiBvLm5hbWUgPT09IHJlY2lwaWVudC5yb2xlKTtcclxuICAgICAgICB0b29sdGlwLnJvbGUgPSBgLSAke2Nyb2xlID8gY3JvbGUudGl0bGUgOiByZWNpcGllbnQucm9sZX1gO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHJlY2lwaWVudC5yZXBsaWVkKSB7XHJcbiAgICAgICAgaWYgKHJlY2lwaWVudC5ieUlkKSB7XHJcbiAgICAgICAgICBjb25zdCBieSA9IGF3YWl0IHRoaXMuX2FjY291bnRzLmdldChyZWNpcGllbnQuYnlJZCkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICBjb25zdCBwYXN0ID0gdGhpcy5fYWN0aW9uKHJlY2lwaWVudC5hY3Rpb24sIGJ5LmdlbmRlciksXHJcbiAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9mcm9tTm93KHJlY2lwaWVudC5yZXBsaWVkKTtcclxuICAgICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvblRha2VuQnknLCBieS5uYW1lLCBwYXN0LCB0aW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBwYXN0ID0gdGhpcy5fYWN0aW9uKHJlY2lwaWVudC5hY3Rpb24sIHdoby5nZW5kZXIpLFxyXG4gICAgICAgICAgICB0aW1lID0gdGhpcy5fZnJvbU5vdyhyZWNpcGllbnQucmVwbGllZCk7XHJcbiAgICAgICAgICB0b29sdGlwLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpb25UYWtlbicsIHdoby5uYW1lLCBwYXN0LCB0aW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoIXJlY2lwaWVudC5lc3RpbWF0ZSkge1xyXG4gICAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLl9mcm9tTm93KHJlY2lwaWVudC5yZWNlaXZlZCk7XHJcbiAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdSZWNlaXZlZFRpbWUnLCB3aG8uZ2VuZGVyLCB0aW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHJlY2lwaWVudC5zdWJzdGl0dXRpbmdJZCAmJiByZWNpcGllbnQuZXN0aW1hdGUpIHtcclxuICAgICAgaWYgKHJlY2lwaWVudC5zdWJzdGl0dXRpbmdJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmJ5SWQpXHJcbiAgICAgICAgdG9vbHRpcC5zdWJzdGl0dXRpbmcgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1YnN0aXR1dGluZ1lvdScsIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5nZW5kZXIpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCB1ID0gYXdhaXQgdGhpcy5fYWNjb3VudHMuZ2V0KHJlY2lwaWVudC5zdWJzdGl0dXRpbmdJZCkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgdG9vbHRpcC5zdWJzdGl0dXRpbmcgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1YnN0aXR1dGluZ0ZvcicsIHUuZ2VuZGVyLCB1Lm5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBlc2NhbGF0aW9ucyA9IHRoaXMubW9kZWwubG9nLmZpbHRlcihsID0+IGwudGltZSA+IHRoaXMuX2lzc3VlZCAmJiBsLnR5cGUgPT09ICdFc2NhbGF0aW9uJyAmJiBsLnJlY2lwaWVudElkID09PSByZWNpcGllbnQuaWQpO1xyXG4gICAgaWYgKGVzY2FsYXRpb25zLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCB1c2VySWRzID0gZXNjYWxhdGlvbnMubWFwKGUgPT4gZS51c2VySWQpO1xyXG4gICAgICBjb25zdCB1c2VycyA9IGF3YWl0IHRoaXMuX2FjY291bnRzLmdldEFsbCh1c2VySWRzKS50b1Byb21pc2UoKTtcclxuICAgICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLl9kdXJhdGlvbi50cmFuc2Zvcm0oZGF5anMoZXNjYWxhdGlvbnNbZXNjYWxhdGlvbnMubGVuZ3RoIC0gMV0udGltZSkuZGlmZihyZWNpcGllbnQucmVjZWl2ZWQsICdzJykpO1xyXG4gICAgICB0b29sdGlwLnN1YnN0aXR1dGluZyA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0VzY2FsYXRlZFRvJywgdGhpcy5fdHJhbnNsYXRlLmpvaW4odXNlcnMubWFwKHUgPT4gdS5uYW1lKSksIGR1cmF0aW9uKTtcclxuICAgIH1cclxuICAgIGlmIChyZWNpcGllbnQucmVwbGllZCkge1xyXG4gICAgICBjb25zdCBkdXJhdGlvbiA9IGRheWpzKHJlY2lwaWVudC5yZXBsaWVkKS5kaWZmKHJlY2lwaWVudC5yZWNlaXZlZCwgJ3MnKTtcclxuICAgICAgdG9vbHRpcC5kdXJhdGlvbiA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0R1cmF0aW9uVGltZScsIHRoaXMuX2R1cmF0aW9uLnRyYW5zZm9ybShkdXJhdGlvbikpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocmVjaXBpZW50LnBlbmRpbmcpIHtcclxuICAgICAgaWYgKHJlY2lwaWVudC5lc3RpbWF0ZSkgdG9vbHRpcC5lc3RpbWF0ZWRUaW1lID0gdGhpcy5fdGltZUVzdGltYXRlKG5vZGUpO1xyXG4gICAgICBlbHNlIGlmIChub2RlLnN0YW5kYXJkVGltZSkge1xyXG4gICAgICAgIGNvbnN0IGRpZmYgPSBub2RlLnN0YW5kYXJkVGltZSAtIGRheWpzKCkuZGlmZihub2RlLnRpbWUsICdzJyk7XHJcbiAgICAgICAgaWYgKGRpZmYgPiAwKVxyXG4gICAgICAgICAgdG9vbHRpcC5lc3RpbWF0ZWRUaW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRXN0aW1hdGVUaW1lJywgdGhpcy5fZHVyYXRpb24udHJhbnNmb3JtKGRpZmYpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobm9kZS5zdGFuZGFyZFRpbWUpXHJcbiAgICAgIHRvb2x0aXAuc3RhbmRhcmRUaW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnTm9kZVN0YW5kYXJkVGltZScsIHRoaXMuX2R1cmF0aW9uLnRyYW5zZm9ybShub2RlLnN0YW5kYXJkVGltZSkpO1xyXG4gICAgaWYgKG5vZGUuZnlpKVxyXG4gICAgICB0b29sdGlwLmZ5aSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0ZZSScpO1xyXG4gICAgcmV0dXJuIHsgYW5ub3RhdGlvbiwgdG9vbHRpcCB9O1xyXG4gIH1cclxuICBwcml2YXRlIF9hY3Rpb24obmFtZTogc3RyaW5nLCBnZW5kZXI/OiBHZW5kZXIgfCAneW91Jykge1xyXG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmFjdGlvbnMuZmluZChhID0+IGEubmFtZSA9PT0gbmFtZSk7XHJcbiAgICBpZiAoIWFjdGlvbikgcmV0dXJuIG5hbWU7XHJcbiAgICBpZiAoZ2VuZGVyID09PSAneW91Jykge1xyXG4gICAgICBjb25zdCBnZW5kZXIgPSB0aGlzLl9zZXNzaW9uLmdlbmRlciwgcGVyc29uYWwgPVxyXG4gICAgICAgIChnZW5kZXIgPT09ICdNYWxlJyA/IChhY3Rpb24ueW91TWFsZSB8fCBhY3Rpb24ueW91KSA6XHJcbiAgICAgICAgICBnZW5kZXIgPT09ICdGZW1hbGUnID8gKGFjdGlvbi55b3VGZW1hbGUgfHwgYWN0aW9uLnlvdSkgOlxyXG4gICAgICAgICAgICBhY3Rpb24ueW91KTtcclxuICAgICAgcmV0dXJuIChwZXJzb25hbCB8fFxyXG4gICAgICAgIGFjdGlvbi5wYXN0IHx8XHJcbiAgICAgICAgYWN0aW9uLnRpdGxlKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcGFzdCA9ICgoZ2VuZGVyID09PSAnTWFsZScgPyAoYWN0aW9uLnBhc3RNYWxlIHx8IGFjdGlvbi5wYXN0KSA6XHJcbiAgICAgIGdlbmRlciA9PT0gJ0ZlbWFsZScgPyAoYWN0aW9uLnBhc3RGZW1hbGUgfHwgYWN0aW9uLnBhc3QpIDogYWN0aW9uLnBhc3QpIHx8XHJcbiAgICAgIGFjdGlvbi50aXRsZSkudG9Mb3dlckNhc2UoKTtcclxuICAgIHJldHVybiBwYXN0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZnJvbU5vdyhkYXRlOiBEYXRlKSB7XHJcbiAgICByZXR1cm4gZGF5anMoZGF0ZSkuZnJvbU5vdygpO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICB0aGlzLmRpYWdyYW0gJiYgdGhpcy5kaWFncmFtLmRlc3Ryb3koKTtcclxuICB9XHJcbn1cclxuaW50ZXJmYWNlIENvbm5lY3RvckluZm9Nb2RlbCB7XHJcbiAgZXN0aW1hdGU/OiBib29sZWFuO1xyXG4gIHBhcmVudElkOiBzdHJpbmc7XHJcbiAgdGltZTogRGF0ZVxyXG59XHJcbmludGVyZmFjZSBOb2RlSW5mb01vZGVsIHtcclxuICB0b29sdGlwOiBOb2RlVG9vbHRpcE1vZGVsO1xyXG4gIG5vZGU6IE5vZGVJbmZvO1xyXG4gIHJlY2lwaWVudDogUmVjaXBpZW50XHJcbiAgaW5kaWNhdG9yPzogYm9vbGVhbjtcclxuICBwYXJlbnRJZD86IHN0cmluZztcclxufVxyXG5pbnRlcmZhY2UgTm9kZVRvb2x0aXBNb2RlbCB7XHJcbiAgZnlpPzogc3RyaW5nO1xyXG4gIGVycm9yPzogc3RyaW5nO1xyXG4gIG5vdGU/OiBzdHJpbmc7XHJcbiAgcm9sZT86IHN0cmluZztcclxuICBzdWJzdGl0dXRpbmc/OiBzdHJpbmc7XHJcbiAgc3RhbmRhcmRUaW1lPzogc3RyaW5nO1xyXG4gIGR1cmF0aW9uPzogc3RyaW5nO1xyXG4gIGVzdGltYXRlZFRpbWU/OiBzdHJpbmc7XHJcbn1cclxuIl19
@@ -2,16 +2,14 @@ import { InjectionToken } from '@angular/core';
2
2
  export const BIZDOC_CONFIG = new InjectionToken('bizdoc');
3
3
  export var OpenPolicy;
4
4
  (function (OpenPolicy) {
5
- OpenPolicy[OpenPolicy["Replace"] = 1] = "Replace";
5
+ OpenPolicy[OpenPolicy["Pane"] = 1] = "Pane";
6
6
  OpenPolicy[OpenPolicy["Clear"] = 2] = "Clear";
7
- OpenPolicy[OpenPolicy["Tab"] = 4] = "Tab";
7
+ OpenPolicy[OpenPolicy["Defer"] = 4] = "Defer";
8
8
  OpenPolicy[OpenPolicy["Pinnable"] = 8] = "Pinnable";
9
- OpenPolicy[OpenPolicy["Scope"] = 16] = "Scope";
10
- OpenPolicy[OpenPolicy["Defer"] = 32] = "Defer";
11
- OpenPolicy[OpenPolicy["Expandable"] = 64] = "Expandable";
12
- OpenPolicy[OpenPolicy["Preserve"] = 128] = "Preserve";
13
- OpenPolicy[OpenPolicy["Dialog"] = 256] = "Dialog";
14
- OpenPolicy[OpenPolicy["Dismissable"] = 256] = "Dismissable";
9
+ OpenPolicy[OpenPolicy["Expandable"] = 16] = "Expandable";
10
+ OpenPolicy[OpenPolicy["Tab"] = 48] = "Tab";
11
+ OpenPolicy[OpenPolicy["Dialog"] = 112] = "Dialog";
12
+ OpenPolicy[OpenPolicy["Dismissable"] = 128] = "Dismissable";
15
13
  })(OpenPolicy || (OpenPolicy = {}));
16
- export const DEFAULT_POLICY = OpenPolicy.Replace | OpenPolicy.Pinnable;
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFJckQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUFlLFFBQVEsQ0FBQyxDQUFDO0FBdUJ4RSxNQUFNLENBQU4sSUFBWSxVQVdYO0FBWEQsV0FBWSxVQUFVO0lBQ3BCLGlEQUFnQixDQUFBO0lBQ2hCLDZDQUFjLENBQUE7SUFDZCx5Q0FBWSxDQUFBO0lBQ1osbURBQWlCLENBQUE7SUFDakIsOENBQWMsQ0FBQTtJQUNkLDhDQUFjLENBQUE7SUFDZCx3REFBbUIsQ0FBQTtJQUNuQixxREFBaUIsQ0FBQTtJQUNqQixpREFBZSxDQUFBO0lBQ2YsMkRBQW9CLENBQUE7QUFDdEIsQ0FBQyxFQVhXLFVBQVUsS0FBVixVQUFVLFFBV3JCO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRm9sZGVyQ29sdW1uIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IEJJWkRPQ19DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48Qml6RG9jQ29uZmlnPignYml6ZG9jJyk7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBhbmVSb3V0ZSB7XHJcbiAgcGF0aDogc3RyaW5nO1xyXG4gIGd1aWRlPzogc3RyaW5nO1xyXG4gIGNvbXBvbmVudD86IFR5cGU8YW55PjtcclxuICByZXNvbHZlPzogeyBba2V5OiBzdHJpbmddOiBUeXBlPFBhbmVSZXNvbHZlPGFueT4+IH07XHJcbiAgY2FuRGlzbWlzcz86IFR5cGU8Q2FuRGlzbWlzczxhbnk+PjtcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIGhlbHA/OiBzdHJpbmc7XHJcbiAgY2hpbGRyZW4/OiBQYW5lUm91dGVbXTtcclxuICBwb2xpY3k/OiBPcGVuUG9saWN5O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQYXJhbU1hcCA9IHsgW2tleTogc3RyaW5nXTogYW55IH07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBhbmVSZXNvbHZlPFQ+IHtcclxuICBvblJlc29sdmUocGFyYW1zOiBQYXJhbU1hcCwgcXVlcnlQYXJhbXM/OiBQYXJhbU1hcCk6IE9ic2VydmFibGU8VD4gfCBQcm9taXNlPFQ+IHwgVDtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIENhbkRpc21pc3M8VD4ge1xyXG4gIG9uRGlzbWlzcyhjb21wb25lbnQ6IFQpOiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPiB8IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIE9wZW5Qb2xpY3kge1xyXG4gIFJlcGxhY2UgPSAxIDw8IDAsXHJcbiAgQ2xlYXIgPSAxIDw8IDEsXHJcbiAgVGFiID0gMSA8PCAyLFxyXG4gIFBpbm5hYmxlID0gMSA8PCAzLFxyXG4gIFNjb3BlID0gMSA8PCA0LFxyXG4gIERlZmVyID0gMSA8PCA1LFxyXG4gIEV4cGFuZGFibGUgPSAxIDw8IDYsXHJcbiAgUHJlc2VydmUgPSAxIDw8IDcsXHJcbiAgRGlhbG9nID0gMSA8PCA4LFxyXG4gIERpc21pc3NhYmxlID0gMSA8PCA4XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX1BPTElDWSA9IE9wZW5Qb2xpY3kuUmVwbGFjZSB8IE9wZW5Qb2xpY3kuUGlubmFibGU7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEJpekRvY0NoaWxkQ29uZmlnIHtcclxuICBjb21wb25lbnRzOiBUeXBlPGFueT5bXTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFRoZW1lIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgcHJpbWFyeTogc3RyaW5nO1xyXG4gIGFjY2VudDogc3RyaW5nO1xyXG4gIGNvbG9yOiBzdHJpbmc7XHJcbiAgZGFyaz86IGJvb2xlYW5cclxufVxyXG5cclxuLyoqIEJpekRvYyBhcHAgb3B0aW9ucyAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEJpekRvY0NvbmZpZyB7XHJcbiAgY3VycmVuY3lDb2RlPzogc3RyaW5nO1xyXG4gIC8qKiBhdmFpbGFibGUgdXNlciBpbnRlcmZhY2UgbGFuZ3VhZ2VzICovXHJcbiAgdGhlbWVzPzogVGhlbWVbXTtcclxuICBsYW5ndWFnZXM/OiBzdHJpbmdbXTtcclxuICBhcHBUaXRsZT86IHN0cmluZztcclxuICBmaXJlYmFzZT86IEZpcmViYXNlU2V0dGluZ3M7XHJcbiAgY2hhdGluZz86IENoYXRTZXR0aW5ncyB8IGJvb2xlYW47XHJcbiAgY29tbWVudHM/OiBDb21tZW50c1NldHRpbmdzO1xyXG4gIG1hcHM/OiBHb29nbGVNYXBzU2V0dGluZ3MgfCBib29sZWFuO1xyXG4gIGZvcm1hdHM/OiBGb3JtYXRzU2V0dGluZ3M7XHJcbiAgcm91dGVzPzogUGFuZVJvdXRlW107XHJcbiAgY29tcG9uZW50czogVHlwZTxhbnk+W107XHJcbiAgc2NoZWR1bGVyPzogU2NoZWR1bGVyU2V0dGluZ3MgfCBib29sZWFuO1xyXG4gIGZvbGRlcnM/OiBGb2xkZXJzU2V0dGluZ3M7XHJcbiAgYW5hbHlzaXM/OiBBbmFseXNpc1NldHRpbmdzIHwgYm9vbGVhbjtcclxufVxyXG5leHBvcnQgdHlwZSBTY29wZVR5cGUgPSAncGF0dGVybnMnIHwgJ3Bvc2l0aW9ucyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFuYWx5c2lzU2V0dGluZ3Mge1xyXG59XHJcbmV4cG9ydFxyXG4gIGludGVyZmFjZSBTY2hlZHVsZXJTZXR0aW5ncyB7XHJcblxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZvbGRlcnNTZXR0aW5ncyB7XHJcbiAgY3ViZT86IHN0cmluZztcclxuICBheGVzPzogc3RyaW5nW107XHJcbiAgY29sdW1ucz86IEZvbGRlckNvbHVtbltdO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0c1NldHRpbmdzIHtcclxuICBkYXRlPzogc3RyaW5nO1xyXG4gIGRhdGVUaW1lPzogc3RyaW5nO1xyXG4gIGZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWVudHNTZXR0aW5ncyB7XHJcbiAgcHJlc2VydmVEcmFmdD86IGJvb2xlYW47XHJcbiAgdm90aW5nPzogYm9vbGVhbjtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIENoYXRTZXR0aW5ncyB7XHJcbiAgcHJlc2VydmVEcmFmdD86IGJvb2xlYW47XHJcbiAgYXBwPzogc3RyaW5nIHwgQ2hhdExhdW5jaGVyRm47XHJcbn1cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIENoYXRMYXVuY2hlckZuIHtcclxuICAoaWRlbnRpdHk6IHN0cmluZyk6IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmlyZWJhc2VTZXR0aW5ncyB7XHJcbiAgYXBpS2V5OiBzdHJpbmc7XHJcbiAgdmFwaWRLZXk/OiBzdHJpbmc7XHJcbiAgcHJvamVjdElkOiBzdHJpbmc7XHJcbiAgc2VuZGVySWQ6IHN0cmluZztcclxuICBhcHBJZDogc3RyaW5nO1xyXG4gIC8qKiBtaWxsaXNlY29uZGVzIGJlZm9yZSB1c2VyIGlzIHByb21wdCB0byBhcHByb3ZlIHJlY2VpdmluZyBtZXNzYWdlcyAqL1xyXG4gIGdyYWNlPzogbnVtYmVyO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgR29vZ2xlTWFwc1NldHRpbmdzIHtcclxuICBhcGlLZXk6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBjb25maWd1cmF0aW9uIHsgfVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRDb25maWcge1xyXG4gIG1hcHM/OiBHb29nbGVNYXBzU2V0dGluZ3MgfCBib29sZWFuO1xyXG4gIGZvcm1hdHM/OiBGb3JtYXRzU2V0dGluZ3M7XHJcbiAgcm91dGluZz86ICduZycgfCAncGFuZSdcclxufVxyXG4iXX0=
14
+ export const DEFAULT_POLICY = OpenPolicy.Pane;
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFJckQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUFlLFFBQVEsQ0FBQyxDQUFDO0FBdUJ4RSxNQUFNLENBQU4sSUFBWSxVQVNYO0FBVEQsV0FBWSxVQUFVO0lBQ3BCLDJDQUFhLENBQUE7SUFDYiw2Q0FBYyxDQUFBO0lBQ2QsNkNBQWMsQ0FBQTtJQUNkLG1EQUFpQixDQUFBO0lBQ2pCLHdEQUFtQixDQUFBO0lBQ25CLDBDQUFvQyxDQUFBO0lBQ3BDLGlEQUFnQyxDQUFBO0lBQ2hDLDJEQUFvQixDQUFBO0FBQ3RCLENBQUMsRUFUVyxVQUFVLEtBQVYsVUFBVSxRQVNyQjtBQUVELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGb2xkZXJDb2x1bW4gfSBmcm9tICcuL21vZGVscyc7XHJcblxyXG5leHBvcnQgY29uc3QgQklaRE9DX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxCaXpEb2NDb25maWc+KCdiaXpkb2MnKTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFuZVJvdXRlIHtcclxuICBwYXRoOiBzdHJpbmc7XHJcbiAgZ3VpZGU/OiBzdHJpbmc7XHJcbiAgY29tcG9uZW50PzogVHlwZTxhbnk+O1xyXG4gIHJlc29sdmU/OiB7IFtrZXk6IHN0cmluZ106IFR5cGU8UGFuZVJlc29sdmU8YW55Pj4gfTtcclxuICBjYW5EaXNtaXNzPzogVHlwZTxDYW5EaXNtaXNzPGFueT4+O1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgaGVscD86IHN0cmluZztcclxuICBjaGlsZHJlbj86IFBhbmVSb3V0ZVtdO1xyXG4gIHBvbGljeT86IE9wZW5Qb2xpY3k7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFBhcmFtTWFwID0geyBba2V5OiBzdHJpbmddOiBhbnkgfTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFuZVJlc29sdmU8VD4ge1xyXG4gIG9uUmVzb2x2ZShwYXJhbXM6IFBhcmFtTWFwLCBxdWVyeVBhcmFtcz86IFBhcmFtTWFwKTogT2JzZXJ2YWJsZTxUPiB8IFByb21pc2U8VD4gfCBUO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2FuRGlzbWlzczxUPiB7XHJcbiAgb25EaXNtaXNzKGNvbXBvbmVudDogVCk6IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+IHwgT2JzZXJ2YWJsZTxib29sZWFuPjtcclxufVxyXG5cclxuZXhwb3J0IGVudW0gT3BlblBvbGljeSB7XHJcbiAgUGFuZSA9IDEgPDwgMCxcclxuICBDbGVhciA9IDEgPDwgMSxcclxuICBEZWZlciA9IDEgPDwgMixcclxuICBQaW5uYWJsZSA9IDEgPDwgMyxcclxuICBFeHBhbmRhYmxlID0gMSA8PCA0LFxyXG4gIFRhYiA9IDEgPDwgNSB8IE9wZW5Qb2xpY3kuRXhwYW5kYWJsZSxcclxuICBEaWFsb2cgPSAxIDw8IDYgfCBPcGVuUG9saWN5LlRhYixcclxuICBEaXNtaXNzYWJsZSA9IDEgPDwgN1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgREVGQVVMVF9QT0xJQ1kgPSBPcGVuUG9saWN5LlBhbmU7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEJpekRvY0NoaWxkQ29uZmlnIHtcclxuICBjb21wb25lbnRzOiBUeXBlPGFueT5bXTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFRoZW1lIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgcHJpbWFyeTogc3RyaW5nO1xyXG4gIGFjY2VudDogc3RyaW5nO1xyXG4gIGNvbG9yOiBzdHJpbmc7XHJcbiAgZGFyaz86IGJvb2xlYW5cclxufVxyXG5cclxuLyoqIEJpekRvYyBhcHAgb3B0aW9ucyAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEJpekRvY0NvbmZpZyB7XHJcbiAgY3VycmVuY3lDb2RlPzogc3RyaW5nO1xyXG4gIC8qKiBhdmFpbGFibGUgdXNlciBpbnRlcmZhY2UgbGFuZ3VhZ2VzICovXHJcbiAgdGhlbWVzPzogVGhlbWVbXTtcclxuICBsYW5ndWFnZXM/OiBzdHJpbmdbXTtcclxuICBhcHBUaXRsZT86IHN0cmluZztcclxuICBmaXJlYmFzZT86IEZpcmViYXNlU2V0dGluZ3M7XHJcbiAgY2hhdGluZz86IENoYXRTZXR0aW5ncyB8IGJvb2xlYW47XHJcbiAgY29tbWVudHM/OiBDb21tZW50c1NldHRpbmdzO1xyXG4gIG1hcHM/OiBHb29nbGVNYXBzU2V0dGluZ3MgfCBib29sZWFuO1xyXG4gIGZvcm1hdHM/OiBGb3JtYXRzU2V0dGluZ3M7XHJcbiAgcm91dGVzPzogUGFuZVJvdXRlW107XHJcbiAgY29tcG9uZW50czogVHlwZTxhbnk+W107XHJcbiAgc2NoZWR1bGVyPzogU2NoZWR1bGVyU2V0dGluZ3MgfCBib29sZWFuO1xyXG4gIGZvbGRlcnM/OiBGb2xkZXJzU2V0dGluZ3M7XHJcbiAgYW5hbHlzaXM/OiBBbmFseXNpc1NldHRpbmdzIHwgYm9vbGVhbjtcclxufVxyXG5leHBvcnQgdHlwZSBTY29wZVR5cGUgPSAncGF0dGVybnMnIHwgJ3Bvc2l0aW9ucyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFuYWx5c2lzU2V0dGluZ3Mge1xyXG59XHJcbmV4cG9ydFxyXG4gIGludGVyZmFjZSBTY2hlZHVsZXJTZXR0aW5ncyB7XHJcblxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZvbGRlcnNTZXR0aW5ncyB7XHJcbiAgY3ViZT86IHN0cmluZztcclxuICBheGVzPzogc3RyaW5nW107XHJcbiAgY29sdW1ucz86IEZvbGRlckNvbHVtbltdO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0c1NldHRpbmdzIHtcclxuICBkYXRlPzogc3RyaW5nO1xyXG4gIGRhdGVUaW1lPzogc3RyaW5nO1xyXG4gIGZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWVudHNTZXR0aW5ncyB7XHJcbiAgcHJlc2VydmVEcmFmdD86IGJvb2xlYW47XHJcbiAgdm90aW5nPzogYm9vbGVhbjtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIENoYXRTZXR0aW5ncyB7XHJcbiAgcHJlc2VydmVEcmFmdD86IGJvb2xlYW47XHJcbiAgYXBwPzogc3RyaW5nIHwgQ2hhdExhdW5jaGVyRm47XHJcbn1cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIENoYXRMYXVuY2hlckZuIHtcclxuICAoaWRlbnRpdHk6IHN0cmluZyk6IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmlyZWJhc2VTZXR0aW5ncyB7XHJcbiAgYXBpS2V5OiBzdHJpbmc7XHJcbiAgdmFwaWRLZXk/OiBzdHJpbmc7XHJcbiAgcHJvamVjdElkOiBzdHJpbmc7XHJcbiAgc2VuZGVySWQ6IHN0cmluZztcclxuICBhcHBJZDogc3RyaW5nO1xyXG4gIC8qKiBtaWxsaXNlY29uZGVzIGJlZm9yZSB1c2VyIGlzIHByb21wdCB0byBhcHByb3ZlIHJlY2VpdmluZyBtZXNzYWdlcyAqL1xyXG4gIGdyYWNlPzogbnVtYmVyO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgR29vZ2xlTWFwc1NldHRpbmdzIHtcclxuICBhcGlLZXk6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBjb25maWd1cmF0aW9uIHsgfVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRDb25maWcge1xyXG4gIG1hcHM/OiBHb29nbGVNYXBzU2V0dGluZ3MgfCBib29sZWFuO1xyXG4gIGZvcm1hdHM/OiBGb3JtYXRzU2V0dGluZ3M7XHJcbiAgcm91dGluZz86ICduZycgfCAncGFuZSdcclxufVxyXG4iXX0=
@@ -366,4 +366,4 @@ function calculateState(upload, event) {
366
366
  }
367
367
  return upload;
368
368
  }
369
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbGJveC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb3JlL21haWxib3guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBRUwsYUFBYSxFQUNNLFdBQVcsRUFBRSxZQUFZLEVBQzdDLE1BQU0sc0JBQXNCLENBQUM7QUFHOUIsT0FBTyxFQUFFLFVBQVUsRUFBTSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQTZCLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7OztBQUsvQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQXFCLE9BQU8sQ0FBQyxDQUFDO0FBUzlFLE1BQU0sT0FBTyxjQUFjO0lBTXpCLFlBQW9CLFFBQXdCLEVBQ2xDLEtBQXlCLEVBQ2pDLFNBQXFCLEVBQ2IsS0FBaUI7UUFIUCxhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUNsQyxVQUFLLEdBQUwsS0FBSyxDQUFvQjtRQUV6QixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBUlYsYUFBUSxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQzlDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ2xELE1BQU07UUFDVSxZQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2QyxZQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQW9WdkQ7V0FDRztRQUNLLFlBQU8sR0FBRyxHQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQXNDLEVBQUUsRUFBRTtZQUNwRSxP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SSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDaEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRO1lBQ25CLEtBQUssRUFBRSxVQUFVO1NBQ2xCLENBQUE7S0FDRjtJQUNELElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ3pCLE9BQU87WUFDTCxRQUFRLEVBQUUsR0FBRztZQUNiLEtBQUssRUFBRSxNQUFNO1NBQ2QsQ0FBQTtLQUNGO0lBQ0QsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBIdHRwQ2xpZW50LCBIdHRwRXZlbnQsXHJcbiAgSHR0cEV2ZW50VHlwZSxcclxuICBIdHRwUHJvZ3Jlc3NFdmVudCwgSHR0cFJlcXVlc3QsIEh0dHBSZXNwb25zZVxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ29tbWVudCwgVXNlckluZm8sIFJlY2lwaWVudE1vZGVsLCBBdHRhY2htZW50LCBTY2hlZHVsZWRFdmVudCwgSGVhZGVyTW9kZWwsIERvY3VtZW50TW9kZWwsIFZvdGUsIENvbW1lbnRWZXJzaW9uLCBDaGFpbiwgQXR0YWNobWVudE1vZGUgfSBmcm9tICcuL21vZGVscyc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YXAsIHN3aXRjaE1hcCwgbWFwLCB0YWtlVW50aWwsIHNraXBXaGlsZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuaW1wb3J0IHsgY2xlYW51cCwgaXNBcnJheSB9IGZyb20gJy4vZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgSHViU2VydmljZSB9IGZyb20gJy4vaHViLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbkltcGwgfSBmcm9tICcuL2F1dGhlbnRpY2F0aW9uJztcclxuaW1wb3J0IHsgU2FmZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5cclxuZXhwb3J0IGNvbnN0IERPQ1VNRU5UX01PREVMID0gbmV3IEluamVjdGlvblRva2VuPERvY3VtZW50TW9kZWw8YW55Pj4oJ21vZGVsJyk7XHJcblxyXG5leHBvcnQgdHlwZSBGaWx0ZXJUeXBlID0gJ3JlY2VudCcgfCAndW5yZWFkJyB8ICdmbGFnZ2VkJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbmdlRXZlbnQ8VD4ge1xyXG4gIG1vZGVsOiBSZWNpcGllbnRNb2RlbDxUPjtcclxufVxyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIE1haWxib3hTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2UkID0gbmV3IFN1YmplY3Q8UmVjaXBpZW50TW9kZWw8YW55Pj4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZWxldGUkID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xyXG4gIC8qKiAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBjaGFuZ2VkID0gdGhpcy5fY2hhbmdlJC5hc09ic2VydmFibGUoKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgZGVsZXRlZCA9IHRoaXMuX2RlbGV0ZSQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9hdXRoOiBBdXRoZW50aWNhdGlvbkltcGwsXHJcbiAgICBtZXNzYWdpbmc6IEh1YlNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9odHRwOiBIdHRwQ2xpZW50KSB7XHJcbiAgICBtZXNzYWdpbmcubmV3JC5cclxuICAgICAgc3Vic2NyaWJlKG0gPT4ge1xyXG4gICAgICAgIF9zZXNzaW9uLnByb2ZpbGUuaW5ib3hDb3VudCsrO1xyXG4gICAgICAgIGNvbnN0IGZvbGRlciA9IF9zZXNzaW9uLnByb2ZpbGUuZm9sZGVycy5maW5kKGYgPT4gZi5uYW1lID09PSBtLm1vZGVsLmZvbGRlcklkKTtcclxuICAgICAgICBmb2xkZXIuY291bnQrKztcclxuICAgICAgICAvLyBfc2Vzc2lvbi5wcm9maWxlLmluYm94LnB1c2gobS5tb2RlbCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBmb3JtYXREb3dubG9hZFVybChkb2N1bWVudElkOiBudW1iZXIsIGZpbGVJZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHRva2VuID0gdGhpcy5fYXV0aC5nZXRBY2Nlc3NUb2tlbigpO1xyXG4gICAgcmV0dXJuIGAvYXBpL2F0dGFjaG1lbnRzLyR7ZG9jdW1lbnRJZH0vJHtmaWxlSWR9P2FjY2Vzc190b2tlbj0ke3Rva2VufWA7XHJcbiAgfVxyXG4gIGRvd25sb2FkKGRvY3VtZW50SWQ6IG51bWJlciwgZmlsZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgLy9uZXcgT2JzZXJ2YWJsZTxhbnk+KG9ic2VydmUgPT4ge1xyXG4gICAgLy8gIG9ic2VydmUubmV4dCh7fSk7XHJcbiAgICAvLyAgcmV0dXJuIHtcclxuICAgIC8vICAgIHVuc3Vic2NyaWJlKCkgeyB9XHJcbiAgICAvLyAgfVxyXG4gICAgLy99KTtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldChgL2FwaS9hdHRhY2htZW50cy8ke2RvY3VtZW50SWR9LyR7ZmlsZUlkfWAsIHtcclxuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInLFxyXG4gICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJlbW92ZWF0dGFjaG1lbnQocmVjaXBpZW50SWQ6IG51bWJlciwgZmlsZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZGVsZXRlKGAvYXBpL2F0dGFjaG1lbnRzLyR7cmVjaXBpZW50SWR9LyR7ZmlsZUlkfWApO1xyXG4gIH1cclxuICByZWFkKGlkOiBudW1iZXIsIHJlYWQ6IGJvb2xlYW4sIGZvbGRlcklkPzogc3RyaW5nLCByZWNlaXZlZD86IERhdGUpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0KGAvYXBpL21haWxib3gvcmVhZC8ke2lkfWAsIHVuZGVmaW5lZCwgeyBwYXJhbXM6IHsgcmVhZCB9IGFzIGFueSB9KS5waXBlKHRhcCgoKSA9PlxyXG4gICAgICBmb2xkZXJJZCAmJiB0aGlzLl91cGRhdGV1bnJlYWRjb3VudGVyKHJlY2VpdmVkLCBmb2xkZXJJZCwgcmVhZCA/IDEgOiAtMSlcclxuICAgICkpO1xyXG4gIH1cclxuICBjb21tZW50cyhpZDogbnVtYmVyLCBiZWZvcmU6IERhdGUpOiBPYnNlcnZhYmxlPENvbW1lbnRbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PENvbW1lbnRbXT4oYC9hcGkvY29tbWVudHMvJHtpZH1gLCB7IHBhcmFtczogeyBiZWZvcmU6IG5ldyBEYXRlKGJlZm9yZSkudG9KU09OKCkgfSB9KTtcclxuICB9XHJcbiAgdGFncyhpZDogbnVtYmVyLCB0YWdzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQoYC9hcGkvbWFpbGJveC90YWcvJHtpZH1gLCB7IHRhZ3MgfSkucGlwZSh0YXAoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9jaGFuZ2UkLm5leHQoeyBpZCwgdGFncyB9IGFzIGFueSk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBkb2N1bWVudElkXHJcbiAgICogQHBhcmFtIHN0YXRlSWRcclxuICAgKiBAcGFyYW0gdXNlcklkIHN1YnN0aXR1dGVcclxuICAgKi9cclxuICBjaGFuZ2VTdGF0ZShkb2N1bWVudElkOiBudW1iZXIsIHN0YXRlSWQ6IHN0cmluZywgdXNlcklkPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9tYWlsYm94L2NoYW5nZXN0YXRlLyR7ZG9jdW1lbnRJZH1gLCB7IHN0YXRlSWQsIHVzZXJJZCB9KTtcclxuICB9XHJcbiAgbW92ZShpZDogbnVtYmVyLCBmb2xkZXJJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9tYWlsYm94L21vdmUvJHtpZH0/Zm9sZGVySWQ9JHtmb2xkZXJJZH1gLCB7fSkucGlwZSh0YXAoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9jaGFuZ2UkLm5leHQoe1xyXG4gICAgICAgIGlkLFxyXG4gICAgICAgIGZvbGRlcklkXHJcbiAgICAgIH0gYXMgYW55KTtcclxuICAgIH0pKTtcclxuICB9XHJcbiAgY2hlY2tPdXQocmVjaXBpZW50SWQ6IG51bWJlciwgdmVyc2lvbjogbnVtYmVyLCBhdHRhY2htZW50SWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0PEF0dGFjaG1lbnQ+KGAvYXBpL2F0dGFjaG1lbnRzLyR7cmVjaXBpZW50SWR9LyR7YXR0YWNobWVudElkfS9jaGVja291dGAsIG51bGwsIHsgcGFyYW1zOiB7IHZlcnNpb24gfSB9KTtcclxuICB9XHJcbiAgY2hlY2tJbihyZWNpcGllbnRJZDogbnVtYmVyLCB2ZXJzaW9uOiBudW1iZXIsIGF0dGFjaG1lbnRJZDogbnVtYmVyLCBmaWxlOiBGaWxlKTogT2JzZXJ2YWJsZTxBdHRhY2htZW50PiB7XHJcbiAgICBjb25zdCBmZCA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgZmQuYXBwZW5kKGZpbGUubmFtZSwgZmlsZSk7XHJcbiAgICBjb25zdCByZXEgPSBuZXcgSHR0cFJlcXVlc3QoJ1BVVCcsXHJcbiAgICAgIGAvYXBpL2F0dGFjaG1lbnRzLyR7cmVjaXBpZW50SWR9LyR7YXR0YWNobWVudElkfS9jaGVja2luP3ZlcnNpb249JHt2ZXJzaW9ufWAsIGZkLCB7XHJcbiAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICAvL2NvbnN0IGluaXRpYWxTdGF0ZTogVXBsb2FkRXZlbnQgPSB7IHN0YXRlOiAnUEVORElORycsIHByb2dyZXNzOiAwIH1cclxuICAgIC8vY29uc3QgY2FsY3VsYXRlU3RhdGUgPSAoXHJcbiAgICAvLyAgdXBsb2FkOiBVcGxvYWRFdmVudCxcclxuICAgIC8vICBldmVudDogSHR0cEV2ZW50PHVua25vd24+XHJcbiAgICAvLyk6IFVwbG9hZEV2ZW50ID0+IHtcclxuICAgIC8vICAvLyBpbXBsZW1lbnRhdGlvblxyXG4gICAgLy99XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8YW55PihvYnNlcnZlID0+IHtcclxuICAgICAgdGhpcy5faHR0cC5yZXF1ZXN0KHJlcSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBQcm9ncmVzc0V2ZW50KSB7XHJcbiAgICAgICAgICAvLyAgb2JzZXJ2ZS5uZXh0KG5ldyBVcGxvYWRFdmVudChcclxuICAgICAgICAgIC8vICAgIGZpbGUubmFtZSxcclxuICAgICAgICAgIC8vICAgIChldmVudCBhcyBQcm9ncmVzc0V2ZW50KS5sb2FkZWQsXHJcbiAgICAgICAgICAvLyAgICAoZXZlbnQgYXMgUHJvZ3Jlc3NFdmVudCkudG90YWxcclxuICAgICAgICAgIC8vICApKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICBjb25zdCByZXMgPSBldmVudCBhcyBIdHRwUmVzcG9uc2U8YW55PjtcclxuICAgICAgICAgIGlmIChyZXMuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgY29uc3QgbW9kZWwgPSByZXMuYm9keSBhcyBBdHRhY2htZW50O1xyXG4gICAgICAgICAgICBvYnNlcnZlLm5leHQobW9kZWwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBvYnNlcnZlLmVycm9yKHsgc3RhdHVzOiByZXMuc3RhdHVzLCBlcnJvcjogcmVzLmJvZHkgfSk7XHJcbiAgICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlID0+IHtcclxuICAgICAgICBvYnNlcnZlLmVycm9yKGUpO1xyXG4gICAgICAgIG9ic2VydmUuY29tcGxldGUoKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgdW5zdWJzY3JpYmUoKSB7XHJcbiAgICAgICAgICAvL3JlcS5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICB1cGxvYWQocmVjaXBpZW50SWQ6IG51bWJlciwgZm9ybUlkOiBzdHJpbmcsIHZlcnNpb246IG51bWJlciwgZmlsZTogRmlsZSwgb3B0aW9ucz86IHsgaXNQcml2YXRlPzogYm9vbGVhbiB9KTogT2JzZXJ2YWJsZTxBdHRhY2htZW50PjtcclxuICB1cGxvYWQocmVjaXBpZW50SWQ6IG51bWJlciwgZm9ybUlkOiBzdHJpbmcsIHZlcnNpb246IG51bWJlciwgZmlsZXM6IEZpbGVbXSwgb3B0aW9ucz86IHsgaXNQcml2YXRlPzogYm9vbGVhbiB9KTogT2JzZXJ2YWJsZTxBdHRhY2htZW50W10+O1xyXG4gIHVwbG9hZChyZWNpcGllbnRJZDogbnVtYmVyLCBmb3JtSWQ6IHN0cmluZywgdmVyc2lvbjogbnVtYmVyLCBmaWxlczogRmlsZSB8IEZpbGVbXSwgb3B0aW9ucz86IHsgaXNQcml2YXRlPzogYm9vbGVhbiB9KTogT2JzZXJ2YWJsZTxBdHRhY2htZW50IHwgQXR0YWNobWVudFtdPiB7XHJcbiAgICBjb25zdCBmZCA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgaWYgKGlzQXJyYXkoZmlsZXMpKSBmaWxlcy5mb3JFYWNoKGYgPT5cclxuICAgICAgZmQuYXBwZW5kKGYubmFtZSwgZikpO1xyXG4gICAgZWxzZSBmZC5hcHBlbmQoZmlsZXMubmFtZSwgZmlsZXMpO1xyXG4gICAgLy9jb25zdCBieXRlc1BlckNodW5rID0gMjAgKiAxMDI0ICogMTAyNDtcclxuICAgIC8vIGFxdWlyZSB0aGUgbG9jYXRpb24gcHJpb3IgdG8gc2VuZGluZyB0aGUgcmVxdWVzdFxyXG4gICAgcmV0dXJuIHRoaXMuX3dpdGhHZW9Mb2NhdGlvbihmb3JtSWQpLnBpcGUoc3dpdGNoTWFwKHBhcmFtcyA9PlxyXG4gICAgICBuZXcgT2JzZXJ2YWJsZTxhbnk+KG9ic2VydmUgPT4ge1xyXG4gICAgICAgIGxldCB1cmwgPSBgL2FwaS9hdHRhY2htZW50cy8ke3JlY2lwaWVudElkfT92ZXJzaW9uPSR7dmVyc2lvbn1gO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaChwID0+IHVybCArPSBgJiR7cH09JHtwYXJhbXNbcF19YCk7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgICAgIGlmIChvcHRpb25zLmlzUHJpdmF0ZSkgdXJsICs9ICcmaXNwcml2YXRlPXRydWUnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJlcSA9IG5ldyBIdHRwUmVxdWVzdCgnUE9TVCcsIHVybCwgZmQsIHtcclxuICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX2h0dHAucmVxdWVzdChyZXEpLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBQcm9ncmVzc0V2ZW50KSB7XHJcbiAgICAgICAgICAgIC8vIFRoaXMgaXMgYW4gdXBsb2FkIHByb2dyZXNzIGV2ZW50LiBDb21wdXRlIGFuZCBzaG93IHRoZSAlIGRvbmU6XHJcbiAgICAgICAgICAgIC8vY29uc3QgcGVyY2VudERvbmUgPSBNYXRoLnJvdW5kKDEwMCAqIGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsKTtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhgRmlsZSBpcyAke3BlcmNlbnREb25lfSUgdXBsb2FkZWQuYCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGV2ZW50IGFzIEh0dHBSZXNwb25zZTxhbnk+O1xyXG4gICAgICAgICAgICBpZiAocmVzLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgbW9kZWwgPSByZXMuYm9keSBhcyBBdHRhY2htZW50W107XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZS5uZXh0KGlzQXJyYXkoZmlsZXMpID8gbW9kZWwgOiBtb2RlbFswXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIG9ic2VydmUuZXJyb3IoeyBzdGF0dXM6IHJlcy5zdGF0dXMsIGVycm9yOiByZXMuYm9keSB9KTtcclxuICAgICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIGUgPT4ge1xyXG4gICAgICAgICAgb2JzZXJ2ZS5lcnJvcihlKTtcclxuICAgICAgICAgIG9ic2VydmUuY29tcGxldGUoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgdW5zdWJzY3JpYmUoKSB7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiByZXRyaWV2ZSBzZW5kZXJzXHJcbiAgICogQHBhcmFtIG5hbWVcclxuICAgKi9cclxuICBzZW5kZXJzKG5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8VXNlckluZm9bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFVzZXJJbmZvW10+KCcvYXBpL21haWxib3gvc2VuZGVycy8nLCB7XHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgIG5hbWVcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGZsYWcoaWQ6IG51bWJlciwgZmxhZzogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQoYC9hcGkvbWFpbGJveC9mbGFnLyR7aWR9P2ZsYWc9JHtmbGFnfWAsIG51bGwpLnBpcGUodGFwKCgpID0+IHRoaXMuX2NoYW5nZSQubmV4dCh7IGlkLCBmbGFnIH0gYXMgYW55KSkpO1xyXG4gIH1cclxuICB2aWV3ZWRjb21tZW50cyhpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTx7IHRpbWU6IERhdGUgfT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0PHsgdGltZTogRGF0ZSB9PihgL2FwaS9jb21tZW50cy92aWV3ZWQvJHtpZH1gLCB7fSwgeyBoZWFkZXJzOiB7ICduby1wcm9ncmVzcyc6ICd0cnVlJyB9IH0pLnBpcGUodGFwKChlOiB7IHRpbWU6IERhdGUgfSkgPT4gdGhpcy5fY2hhbmdlJC5uZXh0KHsgaWQsIHZpZXdlZDogZS50aW1lIH0gYXMgYW55KSkpO1xyXG4gIH1cclxuICB0eXBpbmcoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQoYC9hcGkvY29tbWVudHMvdHlwaW5nLyR7aWR9YCwge30sIHsgaGVhZGVyczogeyAnbm8tcHJvZ3Jlc3MnOiAndHJ1ZScgfSB9KTtcclxuICB9XHJcbiAgY29weShpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxSZWNpcGllbnRNb2RlbDxhbnk+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlY2lwaWVudE1vZGVsPGFueT4+KGAvYXBpL21haWxib3gvY29weS8ke2lkfWAsIHt9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGlkIGRvY3VtZW50IGlkXHJcbiAgICogQHBhcmFtIG9wdGlvbnNcclxuICAgKi9cclxuICBjb21tZW50KGlkOiBudW1iZXIsIG9wdGlvbnM6IHtcclxuICAgIHRleHQ/OiBzdHJpbmcsXHJcbiAgICByZXNvdXJjZT86IHsgW2tleTogc3RyaW5nXTogYW55IH0sXHJcbiAgICBpbWFnZT86IHN0cmluZyxcclxuICAgIHBhcmVudElkPzogbnVtYmVyXHJcbiAgfSk6IE9ic2VydmFibGU8Q29tbWVudD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxDb21tZW50PihgL2FwaS9jb21tZW50cy8ke2lkfWAsIG9wdGlvbnMpO1xyXG4gIH1cclxuICBjb21tZW50dXBkYXRlKGlkOiBudW1iZXIsIGNvbW1lbnRJZDogbnVtYmVyLCBvcHRpb25zOiB7XHJcbiAgICB0ZXh0Pzogc3RyaW5nLFxyXG4gICAgaW1hZ2U/OiBzdHJpbmcsXHJcbiAgICByZXNvdXJjZT86IHsgW2tleTogc3RyaW5nXTogYW55IH1cclxuICB9KTogT2JzZXJ2YWJsZTxDb21tZW50PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQ8Q29tbWVudD4oYC9hcGkvY29tbWVudHMvZWRpdC8ke2lkfS8ke2NvbW1lbnRJZH1gLCBvcHRpb25zKTtcclxuICB9XHJcbiAgaW5mbzxUID0gYW55Pihkb2N1bWVudElkOiBudW1iZXIpOiBPYnNlcnZhYmxlPERvY3VtZW50TW9kZWw8VD4+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxEb2N1bWVudE1vZGVsPFQ+PihgL2FwaS9tYWlsYm94L2luZm8vJHtkb2N1bWVudElkfWApO1xyXG4gIH1cclxuICB0aW1lbGluZShkb2N1bWVudElkOiBudW1iZXIpOiBPYnNlcnZhYmxlPENoYWluPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8Q2hhaW4+KGAvYXBpL21haWxib3gvdGltZWxpbmUvJHtkb2N1bWVudElkfWApO1xyXG4gIH1cclxuICB2b3RlKGlkOiBudW1iZXIsIGNvbW1lbnRJZDogbnVtYmVyLCB2YWx1ZTogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3QoYC9hcGkvY29tbWVudHMvdm90ZS8ke2lkfS8ke2NvbW1lbnRJZH1gLCB7fSwgeyBwYXJhbXM6IHsgdmFsdWU6IHZhbHVlLnRvU3RyaW5nKCkgfSB9KTtcclxuICB9XHJcbiAgdm90ZXMoaWQ6IG51bWJlciwgY29tbWVudElkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFZvdGVbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFZvdGVbXT4oYC9hcGkvY29tbWVudHMvdm90ZXMvJHtpZH0vJHtjb21tZW50SWR9YCk7XHJcbiAgfVxyXG4gIGVkaXRzKGlkOiBudW1iZXIsIGNvbW1lbnRJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxDb21tZW50VmVyc2lvbltdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8Q29tbWVudFZlcnNpb25bXT4oYC9hcGkvY29tbWVudHMvZWRpdHMvJHtpZH0vJHtjb21tZW50SWR9YCk7XHJcbiAgfVxyXG4gIGZpbmRBbGwoZmlsdGVyOiB7IHR5cGU/OiBGaWx0ZXJUeXBlOyBjb250YWlucz86IHN0cmluZzsgc3RhdGU/OiBzdHJpbmc7IGZvcm0/OiBzdHJpbmc7IGZvbGRlcklkPzogc3RyaW5nOyBzZW5kZXJJZD86IHN0cmluZzsgfSxcclxuICAgIG9wdGlvbnM/OiB7IHNraXA/OiBudW1iZXI7IHRha2U/OiBudW1iZXI7IG9yZGVyQnk/OiAndmFsdWUnIHwgJ3JlY2VpdmVkJyB9KTogT2JzZXJ2YWJsZTxIZWFkZXJNb2RlbFtdPiB7XHJcbiAgICBjb25zdCBwYXJhbXM6IGFueSA9IHsgLi4uZmlsdGVyLCAuLi5vcHRpb25zIH07XHJcbiAgICBjbGVhbnVwKHBhcmFtcyk7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8SGVhZGVyTW9kZWxbXT4oJy9hcGkvbWFpbCcsIHsgcGFyYW1zIH0pO1xyXG4gIH1cclxuICBjcmVhdGU8VCA9IGFueT4oZm9ybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxSZWNpcGllbnRNb2RlbDxUPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dpdGhHZW9Mb2NhdGlvbihmb3JtKS5waXBlKHN3aXRjaE1hcChwID0+XHJcbiAgICAgIHRoaXMuX2h0dHAucG9zdDxSZWNpcGllbnRNb2RlbDxhbnk+PignL2FwaS9tYWlsJywgbnVsbCwge1xyXG4gICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgZm9ybSxcclxuICAgICAgICAgIC4uLnBcclxuICAgICAgICB9XHJcbiAgICAgIH0pKSwgdGhpcy5fbm90aWZ5PFQ+KCkpO1xyXG4gIH1cclxuICBnZXQ8VCA9IGFueT4oaWQ6IG51bWJlciwgcmVhZD86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPFJlY2lwaWVudE1vZGVsPFQ+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8UmVjaXBpZW50TW9kZWw8VD4+KGAvYXBpL21haWwvJHtpZH1gKS5waXBlKFxyXG4gICAgICB0YXAoKG06IFJlY2lwaWVudE1vZGVsKSA9PlxyXG4gICAgICAgIHJlYWQgPT09IGZhbHNlICYmIG0ucmVhZCA9PT0gdHJ1ZSAmJlxyXG4gICAgICAgIHRoaXMuX3VwZGF0ZXVucmVhZGNvdW50ZXIobS5yZWNlaXZlZCwgbS5mb2xkZXJJZCwgLTEpXHJcbiAgICAgICkpO1xyXG4gIH1cclxuICBwcml2YXRlIF91cGRhdGV1bnJlYWRjb3VudGVyKGRhdGU6IERhdGUsIGZvbGRlcklkOiBzdHJpbmcsIHZhbDogbnVtYmVyKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIC8vIGRhdGUgaXMgYWJvdmUgd2F0ZXJtYXJrXHJcbiAgICAgICF0aGlzLl9zZXNzaW9uLmlzSW1wZXJzb25hdGluZyAmJlxyXG4gICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUub3B0aW9ucy5pbmJveFZpZXcgJiZcclxuICAgICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm9wdGlvbnMuaW5ib3hWaWV3IDwgZGF0ZVxyXG4gICAgKVxyXG4gICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuaW5ib3hDb3VudCAtPSB2YWw7XHJcbiAgICAvLyBkZWNyZWFzZVxyXG4gICAgY29uc3QgZm9sZGVyID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmZvbGRlcnMuXHJcbiAgICAgIGZpbmQoZiA9PiBmLm5hbWUgPT09IGZvbGRlcklkKTtcclxuICAgIGZvbGRlci5jb3VudCAtPSB2YWw7XHJcbiAgfVxyXG5cclxuICBzYXZlPFQgPSBhbnk+KGlkOiBudW1iZXIsIGZvcm06IHN0cmluZywgdmVyc2lvbjogbnVtYmVyLCBtb2RlbDoge30sIGZpbGVzPzogRmlsZVtdIHwgRmlsZUxpc3QpOiBPYnNlcnZhYmxlPFJlY2lwaWVudE1vZGVsPFQ+PiB7XHJcbiAgICAvL2NvbnN0IGZkID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICAvL2NvbnN0IG1vZGVsQmxvYiA9IG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShtb2RlbCldLCB7XHJcbiAgICAvLyAgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgLy99KTtcclxuICAgIC8vZmQuYXBwZW5kKCdmb3JtLWRhdGEnLCBtb2RlbEJsb2IpO1xyXG4gICAgLy9pZiAoZmlsZXMpIHtcclxuICAgIC8vICBpZiAoaXNBcnJheShmaWxlcykpIGZpbGVzLmZvckVhY2goZiA9PlxyXG4gICAgLy8gICAgZmQuYXBwZW5kKGYubmFtZSwgZikpO1xyXG4gICAgLy8gIGVsc2UgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgLy8gICAgbGV0IGZpbGUgPSBmaWxlcy5pdGVtKGkpO1xyXG4gICAgLy8gICAgZmQuYXBwZW5kKGZpbGUubmFtZSwgZmlsZSk7XHJcbiAgICAvLyAgfVxyXG4gICAgLy99XHJcbiAgICAvLyAgcmV0dXJuIHRoaXMuX3dpdGhHZW9Mb2NhdGlvbihmb3JtKS5waXBlKHN3aXRjaE1hcChwYXJhbXMgPT4ge1xyXG4gICAgLy8gICAgbGV0IHVybCA9IGAvYXBpL21haWwvJHtpZH0/dmVyc2lvbj0ke3ZlcnNpb259YDtcclxuICAgIC8vICAgIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaChwID0+IHVybCArPSBgJiR7cH09JHtwYXJhbXNbcF19YCk7XHJcbiAgICAvLyAgICBjb25zdCByZXEgPSBuZXcgSHR0cFJlcXVlc3QoJ1BVVCcsIHVybCwgZmQsIHtcclxuICAgIC8vICAgIH0pO1xyXG4gICAgLy8gICAgcmV0dXJuIHRoaXMuX2h0dHAucmVxdWVzdChyZXEpLnBpcGUobWFwKGV2ZW50ID0+IHtcclxuICAgIC8vICAgICAgY29uc3QgcmVzID0gZXZlbnQgYXMgSHR0cFJlc3BvbnNlPGFueT47XHJcbiAgICAvLyAgICAgIGlmIChyZXMuc3RhdHVzID09PSAyMDApIHtcclxuICAgIC8vICAgICAgICBjb25zdCBtb2RlbCA9IHJlcy5ib2R5IGFzIFJlY2lwaWVudE1vZGVsPGFueT47XHJcbiAgICAvLyAgICAgICAgcmV0dXJuIG1vZGVsO1xyXG4gICAgLy8gICAgICB9XHJcbiAgICAvLyAgICAgIGVsc2VcclxuICAgIC8vICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih7IHN0YXR1czogcmVzLnN0YXR1cywgZXJyb3I6IHJlcy5ib2R5IH0pO1xyXG4gICAgLy8gICAgfSkpXHJcbiAgICAvLyAgfSksIHRoaXMuX25vdGlmeTxUPigpKTtcclxuICAgIHJldHVybiB0aGlzLl93aXRoR2VvTG9jYXRpb24oZm9ybSkucGlwZShzd2l0Y2hNYXAocGFyYW1zID0+XHJcbiAgICAgIHRoaXMuX2h0dHAucHV0PFJlY2lwaWVudE1vZGVsPFQ+PihgL2FwaS9tYWlsLyR7aWR9P3ZlcnNpb249JHt2ZXJzaW9ufWAsIG1vZGVsLCB7IHBhcmFtcyB9KSksIHRoaXMuX25vdGlmeTxUPigpKTtcclxuICB9XHJcbiAgZGVsZXRlKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZGVsZXRlKGAvYXBpL21haWwvJHtpZH1gKS5waXBlKHRhcCgoKSA9PlxyXG4gICAgICB0aGlzLl9kZWxldGUkLm5leHQoaWQpKSk7XHJcbiAgfVxyXG4gIHJlbW92ZWNvbW1lbnQoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5kZWxldGUoYC9hcGkvY29tbWVudHMvJHtpZH1gKS5waXBlKHRhcCgoKSA9PiB7IH0pKTtcclxuICB9XHJcbiAgc3VibWl0PFQgPSBhbnk+KGlkOiBudW1iZXIsIHZlcnNpb246IG51bWJlciwgZm9ybTogc3RyaW5nLCBtb2RlbD86IGFueSwgcmVhZD86IGJvb2xlYW4sIGZvbGRlcklkPzogc3RyaW5nLCByZWNlaXZlZD86IERhdGUpOiBPYnNlcnZhYmxlPFJlY2lwaWVudE1vZGVsPFQ+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fd2l0aEdlb0xvY2F0aW9uKGZvcm0pLnBpcGUoc3dpdGNoTWFwKHBhcmFtcyA9PlxyXG4gICAgICB0aGlzLl9odHRwLnB1dDxSZWNpcGllbnRNb2RlbDxhbnk+PihgL2FwaS9tYWlsLyR7aWR9P3ZlcnNpb249JHt2ZXJzaW9ufSZnbz10cnVlYCwgbW9kZWwsIHsgcGFyYW1zIH0pKSkucGlwZShcclxuICAgICAgICB0aGlzLl9ub3RpZnk8VD4oKSk7XHJcbiAgfVxyXG4gIHNlbmQ8VCA9IGFueT4oaWQ6IG51bWJlciwgdmVyc2lvbjogbnVtYmVyLCBmb3JtOiBzdHJpbmcsIG1vZGVsOiBhbnksIGFjdGlvbjogc3RyaW5nLCBhY3Rpb25BcmdzOiB7fSwgcmVhZD86IGJvb2xlYW4sIGZvbGRlcklkPzogc3RyaW5nLCByZWNlaXZlZD86IERhdGUpOiBPYnNlcnZhYmxlPFJlY2lwaWVudE1vZGVsPFQ+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fd2l0aEdlb0xvY2F0aW9uKGZvcm0pLnBpcGUoc3dpdGNoTWFwKHBhcmFtcyA9PlxyXG4gICAgICB0aGlzLl9odHRwLnB1dDxSZWNpcGllbnRNb2RlbDxUPj4oYC9hcGkvbWFpbC8ke2lkfT92ZXJzaW9uPSR7dmVyc2lvbn0mYWN0aW9uPSR7YWN0aW9ufWAsIG1vZGVsLCB7IHBhcmFtczogT2JqZWN0LmFzc2lnbihwYXJhbXMsIGFjdGlvbkFyZ3MpIH0pKSkucGlwZShcclxuICAgICAgICB0YXAoKCkgPT5cclxuICAgICAgICAgIHJlYWQgPT09IGZhbHNlICYmIHRoaXMuX3VwZGF0ZXVucmVhZGNvdW50ZXIocmVjZWl2ZWQsIGZvbGRlcklkLCAtMSlcclxuICAgICAgICApLFxyXG4gICAgICAgIHRoaXMuX25vdGlmeTxUPigpKTtcclxuICB9XHJcbiAgZXZlbnRzKHN0YXJ0aW5nOiBEYXRlLCBlbmRpbmc/OiBEYXRlLCBjb250YWlucz86IHN0cmluZyk6IE9ic2VydmFibGU8U2NoZWR1bGVkRXZlbnRbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFNjaGVkdWxlZEV2ZW50W10+KGAvYXBpL2V2ZW50c2AsIHtcclxuICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgc3RhcnRpbmc6IHN0YXJ0aW5nLnRvSlNPTigpLFxyXG4gICAgICAgIGVuZGluZzogZW5kaW5nLnRvSlNPTigpLFxyXG4gICAgICAgIGNvbnRhaW5zOiBjb250YWlucyB8fCAnJ1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgY2hhbmdlRXZlbnQoaWQ6IG51bWJlciwgb3B0aW9uczogeyBzdGFydGluZzogRGF0ZTsgZW5kaW5nPzogRGF0ZTsgY29tcGxldGU/OiBib29sZWFuIH0pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0KGAvYXBpL2V2ZW50cy8ke2lkfWAsIG9wdGlvbnMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBnZXQgZ2VvIGxvY2F0aW9uIGlmIGZvcm0gc2V0dGluZ3MgcmVxdWllc1xyXG4gICAqIEBwYXJhbSBmb3JtXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfd2l0aEdlb0xvY2F0aW9uKGZvcm06IHN0cmluZyk6IE9ic2VydmFibGU8eyBsbmc/OiBzdHJpbmc7IGxhdD86IHN0cmluZyB9PiB7XHJcbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmZvcm1zLmZpbmQoZiA9PiBmLm5hbWUgPT09IGZvcm0pO1xyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPGFueT4ob2JzZXJ2ZSA9PiB7XHJcbiAgICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbi5wb3NpdGlvbikge1xyXG4gICAgICAgIGNhc2UgJ1JlcXVpcmUnOlxyXG4gICAgICAgIGNhc2UgJ0Fzayc6XHJcbiAgICAgICAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKHIgPT4ge1xyXG4gICAgICAgICAgICBvYnNlcnZlLm5leHQoe1xyXG4gICAgICAgICAgICAgIGxuZzogci5jb29yZHMubG9uZ2l0dWRlLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgbGF0OiByLmNvb3Jkcy5sYXRpdHVkZS50b1N0cmluZygpXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uLnBvc2l0aW9uID09PSAnQXNrJylcclxuICAgICAgICAgICAgICBvYnNlcnZlLm5leHQoe30pO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZS5lcnJvcignbm8gcG9zaXRpb24nKTtcclxuICAgICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgb2JzZXJ2ZS5uZXh0KHt9KTtcclxuICAgICAgICAgIG9ic2VydmUuY29tcGxldGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqL1xyXG4gIHByaXZhdGUgX25vdGlmeSA9IDxUPigpID0+IChvYnNlcnZlOiBPYnNlcnZhYmxlPFJlY2lwaWVudE1vZGVsPFQ+PikgPT4ge1xyXG4gICAgcmV0dXJuIG9ic2VydmUucGlwZSh0YXAobSA9PiB7XHJcbiAgICAgIChtIGFzIEl0ZW1FeHRyYSkubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5fY2hhbmdlJC5uZXh0KG0pO1xyXG4gICAgfSkpO1xyXG4gIH07XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBJdGVtRXh0cmEge1xyXG4gIGxvYWRpbmc/OiBib29sZWFuO1xyXG4gIGxvYWRlZD86IGJvb2xlYW47XHJcbiAgd29ya2luZz86IGJvb2xlYW47XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBBdHRhY2htZW50RXh0cmEgZXh0ZW5kcyBBdHRhY2htZW50IHtcclxuICB1cmw6IFNhZmVVcmw7XHJcbiAgaWNvbj86IHN0cmluZztcclxuICBmaWxlRXh0OiBzdHJpbmc7XHJcbiAgaXNJbWFnZTogYm9vbGVhbjtcclxuICBwcm9ncmVzcz86IG51bWJlcjtcclxuICBjaGVja2VkT3V0PzogRGF0ZTtcclxuICB2aWV3ZWQ/OiBEYXRlO1xyXG4gIGZhaWxlZD86IGJvb2xlYW47XHJcbn1cclxuZnVuY3Rpb24gaXNIdHRwUmVzcG9uc2U8VD4oZXZlbnQ6IEh0dHBFdmVudDxUPik6IGV2ZW50IGlzIEh0dHBSZXNwb25zZTxUPiB7XHJcbiAgcmV0dXJuIGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuUmVzcG9uc2VcclxufVxyXG5cclxuZnVuY3Rpb24gaXNIdHRwUHJvZ3Jlc3NFdmVudChcclxuICBldmVudDogSHR0cEV2ZW50PHVua25vd24+XHJcbik6IGV2ZW50IGlzIEh0dHBQcm9ncmVzc0V2ZW50IHtcclxuICByZXR1cm4gKFxyXG4gICAgZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5Eb3dubG9hZFByb2dyZXNzIHx8XHJcbiAgICBldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzXHJcbiAgKVxyXG59XHJcbmZ1bmN0aW9uIGNhbGN1bGF0ZVN0YXRlKHVwbG9hZDogVXBsb2FkRXZlbnQsIGV2ZW50OiBIdHRwRXZlbnQ8dW5rbm93bj4pOiBVcGxvYWRFdmVudCB7XHJcbiAgaWYgKGlzSHR0cFByb2dyZXNzRXZlbnQoZXZlbnQpKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBwcm9ncmVzczogZXZlbnQudG90YWxcclxuICAgICAgICA/IE1hdGgucm91bmQoKDEwMCAqIGV2ZW50LmxvYWRlZCkgLyBldmVudC50b3RhbClcclxuICAgICAgICA6IHVwbG9hZC5wcm9ncmVzcyxcclxuICAgICAgc3RhdGU6ICdwcm9ncmVzcycsXHJcbiAgICB9XHJcbiAgfVxyXG4gIGlmIChpc0h0dHBSZXNwb25zZShldmVudCkpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHByb2dyZXNzOiAxMDAsXHJcbiAgICAgIHN0YXRlOiAnZG9uZScsXHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiB1cGxvYWRcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZEV2ZW50IHtcclxuICAvLyByZWFkb25seSBmaWxlTmFtZTogc3RyaW5nLFxyXG4gIHByb2dyZXNzOiBudW1iZXIsXHJcbiAgLy8gdG90YWw6IG51bWJlcixcclxuICBzdGF0ZTogJ3BlbmRpbmcnIHwgJ3Byb2dyZXNzJyB8ICdkb25lJ1xyXG59XHJcbiJdfQ==
369
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbGJveC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb3JlL21haWxib3guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBRUwsYUFBYSxFQUNNLFdBQVcsRUFBRSxZQUFZLEVBQzdDLE1BQU0sc0JBQXNCLENBQUM7QUFHOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7O0FBSy9DLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBcUIsT0FBTyxDQUFDLENBQUM7QUFTOUUsTUFBTSxPQUFPLGNBQWM7SUFNekIsWUFBb0IsUUFBd0IsRUFDbEMsS0FBeUIsRUFDakMsU0FBcUIsRUFDYixLQUFpQjtRQUhQLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ2xDLFVBQUssR0FBTCxLQUFLLENBQW9CO1FBRXpCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFSVixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7UUFDOUMsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDbEQsTUFBTTtRQUNVLFlBQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3ZDLFlBQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBb1Z2RDtXQUNHO1FBQ0ssWUFBTyxHQUFHLEdBQU0sRUFBRSxDQUFDLENBQUMsT0FBc0MsRUFBRSxFQUFFO1lBQ3BFLE9B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LENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUNoRCxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVE7WUFDbkIsS0FBSyxFQUFFLFVBQVU7U0FDbEIsQ0FBQTtLQUNGO0lBQ0QsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDekIsT0FBTztZQUNMLFFBQVEsRUFBRSxHQUFHO1lBQ2IsS0FBSyxFQUFFLE1BQU07U0FDZCxDQUFBO0tBQ0Y7SUFDRCxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEh0dHBDbGllbnQsIEh0dHBFdmVudCxcclxuICBIdHRwRXZlbnRUeXBlLFxyXG4gIEh0dHBQcm9ncmVzc0V2ZW50LCBIdHRwUmVxdWVzdCwgSHR0cFJlc3BvbnNlXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb21tZW50LCBVc2VySW5mbywgUmVjaXBpZW50TW9kZWwsIEF0dGFjaG1lbnQsIFNjaGVkdWxlZEV2ZW50LCBIZWFkZXJNb2RlbCwgRG9jdW1lbnRNb2RlbCwgVm90ZSwgQ29tbWVudFZlcnNpb24sIENoYWluIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgY2xlYW51cCwgaXNBcnJheSB9IGZyb20gJy4vZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgSHViU2VydmljZSB9IGZyb20gJy4vaHViLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbkltcGwgfSBmcm9tICcuL2F1dGhlbnRpY2F0aW9uJztcclxuaW1wb3J0IHsgU2FmZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5cclxuZXhwb3J0IGNvbnN0IERPQ1VNRU5UX01PREVMID0gbmV3IEluamVjdGlvblRva2VuPERvY3VtZW50TW9kZWw8YW55Pj4oJ21vZGVsJyk7XHJcblxyXG5leHBvcnQgdHlwZSBGaWx0ZXJUeXBlID0gJ3JlY2VudCcgfCAndW5yZWFkJyB8ICdmbGFnZ2VkJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbmdlRXZlbnQ8VD4ge1xyXG4gIG1vZGVsOiBSZWNpcGllbnRNb2RlbDxUPjtcclxufVxyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIE1haWxib3hTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2UkID0gbmV3IFN1YmplY3Q8UmVjaXBpZW50TW9kZWw8YW55Pj4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZWxldGUkID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xyXG4gIC8qKiAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBjaGFuZ2VkID0gdGhpcy5fY2hhbmdlJC5hc09ic2VydmFibGUoKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgZGVsZXRlZCA9IHRoaXMuX2RlbGV0ZSQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9hdXRoOiBBdXRoZW50aWNhdGlvbkltcGwsXHJcbiAgICBtZXNzYWdpbmc6IEh1YlNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9odHRwOiBIdHRwQ2xpZW50KSB7XHJcbiAgICBtZXNzYWdpbmcubmV3JC5cclxuICAgICAgc3Vic2NyaWJlKG0gPT4ge1xyXG4gICAgICAgIF9zZXNzaW9uLnByb2ZpbGUuaW5ib3hDb3VudCsrO1xyXG4gICAgICAgIGNvbnN0IGZvbGRlciA9IF9zZXNzaW9uLnByb2ZpbGUuZm9sZGVycy5maW5kKGYgPT4gZi5uYW1lID09PSBtLm1vZGVsLmZvbGRlcklkKTtcclxuICAgICAgICBmb2xkZXIuY291bnQrKztcclxuICAgICAgICAvLyBfc2Vzc2lvbi5wcm9maWxlLmluYm94LnB1c2gobS5tb2RlbCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBmb3JtYXREb3dubG9hZFVybChkb2N1bWVudElkOiBudW1iZXIsIGZpbGVJZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHRva2VuID0gdGhpcy5fYXV0aC5nZXRBY2Nlc3NUb2tlbigpO1xyXG4gICAgcmV0dXJuIGAvYXBpL2F0dGFjaG1lbnRzLyR7ZG9jdW1lbnRJZH0vJHtmaWxlSWR9P2FjY2Vzc190b2tlbj0ke3Rva2VufWA7XHJcbiAgfVxyXG4gIGRvd25sb2FkKGRvY3VtZW50SWQ6IG51bWJlciwgZmlsZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgLy9uZXcgT2JzZXJ2YWJsZTxhbnk+KG9ic2VydmUgPT4ge1xyXG4gICAgLy8gIG9ic2VydmUubmV4dCh7fSk7XHJcbiAgICAvLyAgcmV0dXJuIHtcclxuICAgIC8vICAgIHVuc3Vic2NyaWJlKCkgeyB9XHJcbiAgICAvLyAgfVxyXG4gICAgLy99KTtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldChgL2FwaS9hdHRhY2htZW50cy8ke2RvY3VtZW50SWR9LyR7ZmlsZUlkfWAsIHtcclxuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInLFxyXG4gICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJlbW92ZWF0dGFjaG1lbnQocmVjaXBpZW50SWQ6IG51bWJlciwgZmlsZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZGVsZXRlKGAvYXBpL2F0dGFjaG1lbnRzLyR7cmVjaXBpZW50SWR9LyR7ZmlsZUlkfWApO1xyXG4gIH1cclxuICByZWFkKGlkOiBudW1iZXIsIHJlYWQ6IGJvb2xlYW4sIGZvbGRlcklkPzogc3RyaW5nLCByZWNlaXZlZD86IERhdGUpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0KGAvYXBpL21haWxib3gvcmVhZC8ke2lkfWAsIHVuZGVmaW5lZCwgeyBwYXJhbXM6IHsgcmVhZCB9IGFzIGFueSB9KS5waXBlKHRhcCgoKSA9PlxyXG4gICAgICBmb2xkZXJJZCAmJiB0aGlzLl91cGRhdGV1bnJlYWRjb3VudGVyKHJlY2VpdmVkLCBmb2xkZXJJZCwgcmVhZCA/IDEgOiAtMSlcclxuICAgICkpO1xyXG4gIH1cclxuICBjb21tZW50cyhpZDogbnVtYmVyLCBiZWZvcmU6IERhdGUpOiBPYnNlcnZhYmxlPENvbW1lbnRbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PENvbW1lbnRbXT4oYC9hcGkvY29tbWVudHMvJHtpZH1gLCB7IHBhcmFtczogeyBiZWZvcmU6IG5ldyBEYXRlKGJlZm9yZSkudG9KU09OKCkgfSB9KTtcclxuICB9XHJcbiAgdGFncyhpZDogbnVtYmVyLCB0YWdzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQoYC9hcGkvbWFpbGJveC90YWcvJHtpZH1gLCB7IHRhZ3MgfSkucGlwZSh0YXAoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9jaGFuZ2UkLm5leHQoeyBpZCwgdGFncyB9IGFzIGFueSk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBkb2N1bWVudElkXHJcbiAgICogQHBhcmFtIHN0YXRlSWRcclxuICAgKiBAcGFyYW0gdXNlcklkIHN1YnN0aXR1dGVcclxuICAgKi9cclxuICBjaGFuZ2VTdGF0ZShkb2N1bWVudElkOiBudW1iZXIsIHN0YXRlSWQ6IHN0cmluZywgdXNlcklkPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9tYWlsYm94L2NoYW5nZXN0YXRlLyR7ZG9jdW1lbnRJZH1gLCB7IHN0YXRlSWQsIHVzZXJJZCB9KTtcclxuICB9XHJcbiAgbW92ZShpZDogbnVtYmVyLCBmb2xkZXJJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9tYWlsYm94L21vdmUvJHtpZH0/Zm9sZGVySWQ9JHtmb2xkZXJJZH1gLCB7fSkucGlwZSh0YXAoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9jaGFuZ2UkLm5leHQoe1xyXG4gICAgICAgIGlkLFxyXG4gICAgICAgIGZvbGRlcklkXHJcbiAgICAgIH0gYXMgYW55KTtcclxuICAgIH0pKTtcclxuICB9XHJcbiAgY2hlY2tPdXQocmVjaXBpZW50SWQ6IG51bWJlciwgdmVyc2lvbjogbnVtYmVyLCBhdHRhY2htZW50SWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0PEF0dGFjaG1lbnQ+KGAvYXBpL2F0dGFjaG1lbnRzLyR7cmVjaXBpZW50SWR9LyR7YXR0YWNobWVudElkfS9jaGVja291dGAsIG51bGwsIHsgcGFyYW1zOiB7IHZlcnNpb24gfSB9KTtcclxuICB9XHJcbiAgY2hlY2tJbihyZWNpcGllbnRJZDogbnVtYmVyLCB2ZXJzaW9uOiBudW1iZXIsIGF0dGFjaG1lbnRJZDogbnVtYmVyLCBmaWxlOiBGaWxlKTogT2JzZXJ2YWJsZTxBdHRhY2htZW50PiB7XHJcbiAgICBjb25zdCBmZCA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgZmQuYXBwZW5kKGZpbGUubmFtZSwgZmlsZSk7XHJcbiAgICBjb25zdCByZXEgPSBuZXcgSHR0cFJlcXVlc3QoJ1BVVCcsXHJcbiAgICAgIGAvYXBpL2F0dGFjaG1lbnRzLyR7cmVjaXBpZW50SWR9LyR7YXR0YWNobWVudElkfS9jaGVja2luP3ZlcnNpb249JHt2ZXJzaW9ufWAsIGZkLCB7XHJcbiAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICAvL2NvbnN0IGluaXRpYWxTdGF0ZTogVXBsb2FkRXZlbnQgPSB7IHN0YXRlOiAnUEVORElORycsIHByb2dyZXNzOiAwIH1cclxuICAgIC8vY29uc3QgY2FsY3VsYXRlU3RhdGUgPSAoXHJcbiAgICAvLyAgdXBsb2FkOiBVcGxvYWRFdmVudCxcclxuICAgIC8vICBldmVudDogSHR0cEV2ZW50PHVua25vd24+XHJcbiAgICAvLyk6IFVwbG9hZEV2ZW50ID0+IHtcclxuICAgIC8vICAvLyBpbXBsZW1lbnRhdGlvblxyXG4gICAgLy99XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8YW55PihvYnNlcnZlID0+IHtcclxuICAgICAgdGhpcy5faHR0cC5yZXF1ZXN0KHJlcSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBQcm9ncmVzc0V2ZW50KSB7XHJcbiAgICAgICAgICAvLyAgb2JzZXJ2ZS5uZXh0KG5ldyBVcGxvYWRFdmVudChcclxuICAgICAgICAgIC8vICAgIGZpbGUubmFtZSxcclxuICAgICAgICAgIC8vICAgIChldmVudCBhcyBQcm9ncmVzc0V2ZW50KS5sb2FkZWQsXHJcbiAgICAgICAgICAvLyAgICAoZXZlbnQgYXMgUHJvZ3Jlc3NFdmVudCkudG90YWxcclxuICAgICAgICAgIC8vICApKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICBjb25zdCByZXMgPSBldmVudCBhcyBIdHRwUmVzcG9uc2U8YW55PjtcclxuICAgICAgICAgIGlmIChyZXMuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgY29uc3QgbW9kZWwgPSByZXMuYm9keSBhcyBBdHRhY2htZW50O1xyXG4gICAgICAgICAgICBvYnNlcnZlLm5leHQobW9kZWwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBvYnNlcnZlLmVycm9yKHsgc3RhdHVzOiByZXMuc3RhdHVzLCBlcnJvcjogcmVzLmJvZHkgfSk7XHJcbiAgICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlID0+IHtcclxuICAgICAgICBvYnNlcnZlLmVycm9yKGUpO1xyXG4gICAgICAgIG9ic2VydmUuY29tcGxldGUoKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgdW5zdWJzY3JpYmUoKSB7XHJcbiAgICAgICAgICAvL3JlcS5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICB1cGxvYWQocmVjaXBpZW50SWQ6IG51bWJlciwgZm9ybUlkOiBzdHJpbmcsIHZlcnNpb246IG51bWJlciwgZmlsZTogRmlsZSwgb3B0aW9ucz86IHsgaXNQcml2YXRlPzogYm9vbGVhbiB9KTogT2JzZXJ2YWJsZTxBdHRhY2htZW50PjtcclxuICB1cGxvYWQocmVjaXBpZW50SWQ6IG51bWJlciwgZm9ybUlkOiBzdHJpbmcsIHZlcnNpb246IG51bWJlciwgZmlsZXM6IEZpbGVbXSwgb3B0aW9ucz86IHsgaXNQcml2YXRlPzogYm9vbGVhbiB9KTogT2JzZXJ2YWJsZTxBdHRhY2htZW50W10+O1xyXG4gIHVwbG9hZChyZWNpcGllbnRJZDogbnVtYmVyLCBmb3JtSWQ6IHN0cmluZywgdmVyc2lvbjogbnVtYmVyLCBmaWxlczogRmlsZSB8IEZpbGVbXSwgb3B0aW9ucz86IHsgaXNQcml2YXRlPzogYm9vbGVhbiB9KTogT2JzZXJ2YWJsZTxBdHRhY2htZW50IHwgQXR0YWNobWVudFtdPiB7XHJcbiAgICBjb25zdCBmZCA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgaWYgKGlzQXJyYXkoZmlsZXMpKSBmaWxlcy5mb3JFYWNoKGYgPT5cclxuICAgICAgZmQuYXBwZW5kKGYubmFtZSwgZikpO1xyXG4gICAgZWxzZSBmZC5hcHBlbmQoZmlsZXMubmFtZSwgZmlsZXMpO1xyXG4gICAgLy9jb25zdCBieXRlc1BlckNodW5rID0gMjAgKiAxMDI0ICogMTAyNDtcclxuICAgIC8vIGFxdWlyZSB0aGUgbG9jYXRpb24gcHJpb3IgdG8gc2VuZGluZyB0aGUgcmVxdWVzdFxyXG4gICAgcmV0dXJuIHRoaXMuX3dpdGhHZW9Mb2NhdGlvbihmb3JtSWQpLnBpcGUoc3dpdGNoTWFwKHBhcmFtcyA9PlxyXG4gICAgICBuZXcgT2JzZXJ2YWJsZTxhbnk+KG9ic2VydmUgPT4ge1xyXG4gICAgICAgIGxldCB1cmwgPSBgL2FwaS9hdHRhY2htZW50cy8ke3JlY2lwaWVudElkfT92ZXJzaW9uPSR7dmVyc2lvbn1gO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaChwID0+IHVybCArPSBgJiR7cH09JHtwYXJhbXNbcF19YCk7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgICAgIGlmIChvcHRpb25zLmlzUHJpdmF0ZSkgdXJsICs9ICcmaXNwcml2YXRlPXRydWUnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJlcSA9IG5ldyBIdHRwUmVxdWVzdCgnUE9TVCcsIHVybCwgZmQsIHtcclxuICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX2h0dHAucmVxdWVzdChyZXEpLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBQcm9ncmVzc0V2ZW50KSB7XHJcbiAgICAgICAgICAgIC8vIFRoaXMgaXMgYW4gdXBsb2FkIHByb2dyZXNzIGV2ZW50LiBDb21wdXRlIGFuZCBzaG93IHRoZSAlIGRvbmU6XHJcbiAgICAgICAgICAgIC8vY29uc3QgcGVyY2VudERvbmUgPSBNYXRoLnJvdW5kKDEwMCAqIGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsKTtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhgRmlsZSBpcyAke3BlcmNlbnREb25lfSUgdXBsb2FkZWQuYCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGV2ZW50IGFzIEh0dHBSZXNwb25zZTxhbnk+O1xyXG4gICAgICAgICAgICBpZiAocmVzLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgbW9kZWwgPSByZXMuYm9keSBhcyBBdHRhY2htZW50W107XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZS5uZXh0KGlzQXJyYXkoZmlsZXMpID8gbW9kZWwgOiBtb2RlbFswXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIG9ic2VydmUuZXJyb3IoeyBzdGF0dXM6IHJlcy5zdGF0dXMsIGVycm9yOiByZXMuYm9keSB9KTtcclxuICAgICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIGUgPT4ge1xyXG4gICAgICAgICAgb2JzZXJ2ZS5lcnJvcihlKTtcclxuICAgICAgICAgIG9ic2VydmUuY29tcGxldGUoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgdW5zdWJzY3JpYmUoKSB7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiByZXRyaWV2ZSBzZW5kZXJzXHJcbiAgICogQHBhcmFtIG5hbWVcclxuICAgKi9cclxuICBzZW5kZXJzKG5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8VXNlckluZm9bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFVzZXJJbmZvW10+KCcvYXBpL21haWxib3gvc2VuZGVycy8nLCB7XHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgIG5hbWVcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGZsYWcoaWQ6IG51bWJlciwgZmxhZzogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQoYC9hcGkvbWFpbGJveC9mbGFnLyR7aWR9P2ZsYWc9JHtmbGFnfWAsIG51bGwpLnBpcGUodGFwKCgpID0+IHRoaXMuX2NoYW5nZSQubmV4dCh7IGlkLCBmbGFnIH0gYXMgYW55KSkpO1xyXG4gIH1cclxuICB2aWV3ZWRjb21tZW50cyhpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTx7IHRpbWU6IERhdGUgfT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0PHsgdGltZTogRGF0ZSB9PihgL2FwaS9jb21tZW50cy92aWV3ZWQvJHtpZH1gLCB7fSwgeyBoZWFkZXJzOiB7ICduby1wcm9ncmVzcyc6ICd0cnVlJyB9IH0pLnBpcGUodGFwKChlOiB7IHRpbWU6IERhdGUgfSkgPT4gdGhpcy5fY2hhbmdlJC5uZXh0KHsgaWQsIHZpZXdlZDogZS50aW1lIH0gYXMgYW55KSkpO1xyXG4gIH1cclxuICB0eXBpbmcoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQoYC9hcGkvY29tbWVudHMvdHlwaW5nLyR7aWR9YCwge30sIHsgaGVhZGVyczogeyAnbm8tcHJvZ3Jlc3MnOiAndHJ1ZScgfSB9KTtcclxuICB9XHJcbiAgY29weShpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxSZWNpcGllbnRNb2RlbDxhbnk+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlY2lwaWVudE1vZGVsPGFueT4+KGAvYXBpL21haWxib3gvY29weS8ke2lkfWAsIHt9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGlkIGRvY3VtZW50IGlkXHJcbiAgICogQHBhcmFtIG9wdGlvbnNcclxuICAgKi9cclxuICBjb21tZW50KGlkOiBudW1iZXIsIG9wdGlvbnM6IHtcclxuICAgIHRleHQ/OiBzdHJpbmcsXHJcbiAgICByZXNvdXJjZT86IHsgW2tleTogc3RyaW5nXTogYW55IH0sXHJcbiAgICBpbWFnZT86IHN0cmluZyxcclxuICAgIHBhcmVudElkPzogbnVtYmVyXHJcbiAgfSk6IE9ic2VydmFibGU8Q29tbWVudD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxDb21tZW50PihgL2FwaS9jb21tZW50cy8ke2lkfWAsIG9wdGlvbnMpO1xyXG4gIH1cclxuICBjb21tZW50dXBkYXRlKGlkOiBudW1iZXIsIGNvbW1lbnRJZDogbnVtYmVyLCBvcHRpb25zOiB7XHJcbiAgICB0ZXh0Pzogc3RyaW5nLFxyXG4gICAgaW1hZ2U/OiBzdHJpbmcsXHJcbiAgICByZXNvdXJjZT86IHsgW2tleTogc3RyaW5nXTogYW55IH1cclxuICB9KTogT2JzZXJ2YWJsZTxDb21tZW50PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQ8Q29tbWVudD4oYC9hcGkvY29tbWVudHMvZWRpdC8ke2lkfS8ke2NvbW1lbnRJZH1gLCBvcHRpb25zKTtcclxuICB9XHJcbiAgaW5mbzxUID0gYW55Pihkb2N1bWVudElkOiBudW1iZXIpOiBPYnNlcnZhYmxlPERvY3VtZW50TW9kZWw8VD4+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxEb2N1bWVudE1vZGVsPFQ+PihgL2FwaS9tYWlsYm94L2luZm8vJHtkb2N1bWVudElkfWApO1xyXG4gIH1cclxuICB0aW1lbGluZShkb2N1bWVudElkOiBudW1iZXIpOiBPYnNlcnZhYmxlPENoYWluPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8Q2hhaW4+KGAvYXBpL21haWxib3gvdGltZWxpbmUvJHtkb2N1bWVudElkfWApO1xyXG4gIH1cclxuICB2b3RlKGlkOiBudW1iZXIsIGNvbW1lbnRJZDogbnVtYmVyLCB2YWx1ZTogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3QoYC9hcGkvY29tbWVudHMvdm90ZS8ke2lkfS8ke2NvbW1lbnRJZH1gLCB7fSwgeyBwYXJhbXM6IHsgdmFsdWU6IHZhbHVlLnRvU3RyaW5nKCkgfSB9KTtcclxuICB9XHJcbiAgdm90ZXMoaWQ6IG51bWJlciwgY29tbWVudElkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFZvdGVbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFZvdGVbXT4oYC9hcGkvY29tbWVudHMvdm90ZXMvJHtpZH0vJHtjb21tZW50SWR9YCk7XHJcbiAgfVxyXG4gIGVkaXRzKGlkOiBudW1iZXIsIGNvbW1lbnRJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxDb21tZW50VmVyc2lvbltdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8Q29tbWVudFZlcnNpb25bXT4oYC9hcGkvY29tbWVudHMvZWRpdHMvJHtpZH0vJHtjb21tZW50SWR9YCk7XHJcbiAgfVxyXG4gIGZpbmRBbGwoZmlsdGVyOiB7IHR5cGU/OiBGaWx0ZXJUeXBlOyBjb250YWlucz86IHN0cmluZzsgc3RhdGU/OiBzdHJpbmc7IGZvcm0/OiBzdHJpbmc7IGZvbGRlcklkPzogc3RyaW5nOyBzZW5kZXJJZD86IHN0cmluZzsgfSxcclxuICAgIG9wdGlvbnM/OiB7IHNraXA/OiBudW1iZXI7IHRha2U/OiBudW1iZXI7IG9yZGVyQnk/OiAndmFsdWUnIHwgJ3JlY2VpdmVkJyB9KTogT2JzZXJ2YWJsZTxIZWFkZXJNb2RlbFtdPiB7XHJcbiAgICBjb25zdCBwYXJhbXM6IGFueSA9IHsgLi4uZmlsdGVyLCAuLi5vcHRpb25zIH07XHJcbiAgICBjbGVhbnVwKHBhcmFtcyk7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8SGVhZGVyTW9kZWxbXT4oJy9hcGkvbWFpbCcsIHsgcGFyYW1zIH0pO1xyXG4gIH1cclxuICBjcmVhdGU8VCA9IGFueT4oZm9ybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxSZWNpcGllbnRNb2RlbDxUPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dpdGhHZW9Mb2NhdGlvbihmb3JtKS5waXBlKHN3aXRjaE1hcChwID0+XHJcbiAgICAgIHRoaXMuX2h0dHAucG9zdDxSZWNpcGllbnRNb2RlbDxhbnk+PignL2FwaS9tYWlsJywgbnVsbCwge1xyXG4gICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgZm9ybSxcclxuICAgICAgICAgIC4uLnBcclxuICAgICAgICB9XHJcbiAgICAgIH0pKSwgdGhpcy5fbm90aWZ5PFQ+KCkpO1xyXG4gIH1cclxuICBnZXQ8VCA9IGFueT4oaWQ6IG51bWJlciwgcmVhZD86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPFJlY2lwaWVudE1vZGVsPFQ+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8UmVjaXBpZW50TW9kZWw8VD4+KGAvYXBpL21haWwvJHtpZH1gKS5waXBlKFxyXG4gICAgICB0YXAoKG06IFJlY2lwaWVudE1vZGVsKSA9PlxyXG4gICAgICAgIHJlYWQgPT09IGZhbHNlICYmIG0ucmVhZCA9PT0gdHJ1ZSAmJlxyXG4gICAgICAgIHRoaXMuX3VwZGF0ZXVucmVhZGNvdW50ZXIobS5yZWNlaXZlZCwgbS5mb2xkZXJJZCwgLTEpXHJcbiAgICAgICkpO1xyXG4gIH1cclxuICBwcml2YXRlIF91cGRhdGV1bnJlYWRjb3VudGVyKGRhdGU6IERhdGUsIGZvbGRlcklkOiBzdHJpbmcsIHZhbDogbnVtYmVyKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIC8vIGRhdGUgaXMgYWJvdmUgd2F0ZXJtYXJrXHJcbiAgICAgICF0aGlzLl9zZXNzaW9uLmlzSW1wZXJzb25hdGluZyAmJlxyXG4gICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUub3B0aW9ucy5pbmJveFZpZXcgJiZcclxuICAgICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm9wdGlvbnMuaW5ib3hWaWV3IDwgZGF0ZVxyXG4gICAgKVxyXG4gICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuaW5ib3hDb3VudCAtPSB2YWw7XHJcbiAgICAvLyBkZWNyZWFzZVxyXG4gICAgY29uc3QgZm9sZGVyID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmZvbGRlcnMuXHJcbiAgICAgIGZpbmQoZiA9PiBmLm5hbWUgPT09IGZvbGRlcklkKTtcclxuICAgIGZvbGRlci5jb3VudCAtPSB2YWw7XHJcbiAgfVxyXG5cclxuICBzYXZlPFQgPSBhbnk+KGlkOiBudW1iZXIsIGZvcm06IHN0cmluZywgdmVyc2lvbjogbnVtYmVyLCBtb2RlbDoge30sIGZpbGVzPzogRmlsZVtdIHwgRmlsZUxpc3QpOiBPYnNlcnZhYmxlPFJlY2lwaWVudE1vZGVsPFQ+PiB7XHJcbiAgICAvL2NvbnN0IGZkID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICAvL2NvbnN0IG1vZGVsQmxvYiA9IG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShtb2RlbCldLCB7XHJcbiAgICAvLyAgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgLy99KTtcclxuICAgIC8vZmQuYXBwZW5kKCdmb3JtLWRhdGEnLCBtb2RlbEJsb2IpO1xyXG4gICAgLy9pZiAoZmlsZXMpIHtcclxuICAgIC8vICBpZiAoaXNBcnJheShmaWxlcykpIGZpbGVzLmZvckVhY2goZiA9PlxyXG4gICAgLy8gICAgZmQuYXBwZW5kKGYubmFtZSwgZikpO1xyXG4gICAgLy8gIGVsc2UgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgLy8gICAgbGV0IGZpbGUgPSBmaWxlcy5pdGVtKGkpO1xyXG4gICAgLy8gICAgZmQuYXBwZW5kKGZpbGUubmFtZSwgZmlsZSk7XHJcbiAgICAvLyAgfVxyXG4gICAgLy99XHJcbiAgICAvLyAgcmV0dXJuIHRoaXMuX3dpdGhHZW9Mb2NhdGlvbihmb3JtKS5waXBlKHN3aXRjaE1hcChwYXJhbXMgPT4ge1xyXG4gICAgLy8gICAgbGV0IHVybCA9IGAvYXBpL21haWwvJHtpZH0/dmVyc2lvbj0ke3ZlcnNpb259YDtcclxuICAgIC8vICAgIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaChwID0+IHVybCArPSBgJiR7cH09JHtwYXJhbXNbcF19YCk7XHJcbiAgICAvLyAgICBjb25zdCByZXEgPSBuZXcgSHR0cFJlcXVlc3QoJ1BVVCcsIHVybCwgZmQsIHtcclxuICAgIC8vICAgIH0pO1xyXG4gICAgLy8gICAgcmV0dXJuIHRoaXMuX2h0dHAucmVxdWVzdChyZXEpLnBpcGUobWFwKGV2ZW50ID0+IHtcclxuICAgIC8vICAgICAgY29uc3QgcmVzID0gZXZlbnQgYXMgSHR0cFJlc3BvbnNlPGFueT47XHJcbiAgICAvLyAgICAgIGlmIChyZXMuc3RhdHVzID09PSAyMDApIHtcclxuICAgIC8vICAgICAgICBjb25zdCBtb2RlbCA9IHJlcy5ib2R5IGFzIFJlY2lwaWVudE1vZGVsPGFueT47XHJcbiAgICAvLyAgICAgICAgcmV0dXJuIG1vZGVsO1xyXG4gICAgLy8gICAgICB9XHJcbiAgICAvLyAgICAgIGVsc2VcclxuICAgIC8vICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih7IHN0YXR1czogcmVzLnN0YXR1cywgZXJyb3I6IHJlcy5ib2R5IH0pO1xyXG4gICAgLy8gICAgfSkpXHJcbiAgICAvLyAgfSksIHRoaXMuX25vdGlmeTxUPigpKTtcclxuICAgIHJldHVybiB0aGlzLl93aXRoR2VvTG9jYXRpb24oZm9ybSkucGlwZShzd2l0Y2hNYXAocGFyYW1zID0+XHJcbiAgICAgIHRoaXMuX2h0dHAucHV0PFJlY2lwaWVudE1vZGVsPFQ+PihgL2FwaS9tYWlsLyR7aWR9P3ZlcnNpb249JHt2ZXJzaW9ufWAsIG1vZGVsLCB7IHBhcmFtcyB9KSksIHRoaXMuX25vdGlmeTxUPigpKTtcclxuICB9XHJcbiAgZGVsZXRlKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZGVsZXRlKGAvYXBpL21haWwvJHtpZH1gKS5waXBlKHRhcCgoKSA9PlxyXG4gICAgICB0aGlzLl9kZWxldGUkLm5leHQoaWQpKSk7XHJcbiAgfVxyXG4gIHJlbW92ZWNvbW1lbnQoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5kZWxldGUoYC9hcGkvY29tbWVudHMvJHtpZH1gKS5waXBlKHRhcCgoKSA9PiB7IH0pKTtcclxuICB9XHJcbiAgc3VibWl0PFQgPSBhbnk+KGlkOiBudW1iZXIsIHZlcnNpb246IG51bWJlciwgZm9ybTogc3RyaW5nLCBtb2RlbD86IGFueSwgcmVhZD86IGJvb2xlYW4sIGZvbGRlcklkPzogc3RyaW5nLCByZWNlaXZlZD86IERhdGUpOiBPYnNlcnZhYmxlPFJlY2lwaWVudE1vZGVsPFQ+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fd2l0aEdlb0xvY2F0aW9uKGZvcm0pLnBpcGUoc3dpdGNoTWFwKHBhcmFtcyA9PlxyXG4gICAgICB0aGlzLl9odHRwLnB1dDxSZWNpcGllbnRNb2RlbDxhbnk+PihgL2FwaS9tYWlsLyR7aWR9P3ZlcnNpb249JHt2ZXJzaW9ufSZnbz10cnVlYCwgbW9kZWwsIHsgcGFyYW1zIH0pKSkucGlwZShcclxuICAgICAgICB0aGlzLl9ub3RpZnk8VD4oKSk7XHJcbiAgfVxyXG4gIHNlbmQ8VCA9IGFueT4oaWQ6IG51bWJlciwgdmVyc2lvbjogbnVtYmVyLCBmb3JtOiBzdHJpbmcsIG1vZGVsOiBhbnksIGFjdGlvbjogc3RyaW5nLCBhY3Rpb25BcmdzOiB7fSwgcmVhZD86IGJvb2xlYW4sIGZvbGRlcklkPzogc3RyaW5nLCByZWNlaXZlZD86IERhdGUpOiBPYnNlcnZhYmxlPFJlY2lwaWVudE1vZGVsPFQ+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fd2l0aEdlb0xvY2F0aW9uKGZvcm0pLnBpcGUoc3dpdGNoTWFwKHBhcmFtcyA9PlxyXG4gICAgICB0aGlzLl9odHRwLnB1dDxSZWNpcGllbnRNb2RlbDxUPj4oYC9hcGkvbWFpbC8ke2lkfT92ZXJzaW9uPSR7dmVyc2lvbn0mYWN0aW9uPSR7YWN0aW9ufWAsIG1vZGVsLCB7IHBhcmFtczogT2JqZWN0LmFzc2lnbihwYXJhbXMsIGFjdGlvbkFyZ3MpIH0pKSkucGlwZShcclxuICAgICAgICB0YXAoKCkgPT5cclxuICAgICAgICAgIHJlYWQgPT09IGZhbHNlICYmIHRoaXMuX3VwZGF0ZXVucmVhZGNvdW50ZXIocmVjZWl2ZWQsIGZvbGRlcklkLCAtMSlcclxuICAgICAgICApLFxyXG4gICAgICAgIHRoaXMuX25vdGlmeTxUPigpKTtcclxuICB9XHJcbiAgZXZlbnRzKHN0YXJ0aW5nOiBEYXRlLCBlbmRpbmc/OiBEYXRlLCBjb250YWlucz86IHN0cmluZyk6IE9ic2VydmFibGU8U2NoZWR1bGVkRXZlbnRbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFNjaGVkdWxlZEV2ZW50W10+KGAvYXBpL2V2ZW50c2AsIHtcclxuICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgc3RhcnRpbmc6IHN0YXJ0aW5nLnRvSlNPTigpLFxyXG4gICAgICAgIGVuZGluZzogZW5kaW5nLnRvSlNPTigpLFxyXG4gICAgICAgIGNvbnRhaW5zOiBjb250YWlucyB8fCAnJ1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgY2hhbmdlRXZlbnQoaWQ6IG51bWJlciwgb3B0aW9uczogeyBzdGFydGluZzogRGF0ZTsgZW5kaW5nPzogRGF0ZTsgY29tcGxldGU/OiBib29sZWFuIH0pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0KGAvYXBpL2V2ZW50cy8ke2lkfWAsIG9wdGlvbnMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBnZXQgZ2VvIGxvY2F0aW9uIGlmIGZvcm0gc2V0dGluZ3MgcmVxdWllc1xyXG4gICAqIEBwYXJhbSBmb3JtXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfd2l0aEdlb0xvY2F0aW9uKGZvcm06IHN0cmluZyk6IE9ic2VydmFibGU8eyBsbmc/OiBzdHJpbmc7IGxhdD86IHN0cmluZyB9PiB7XHJcbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmZvcm1zLmZpbmQoZiA9PiBmLm5hbWUgPT09IGZvcm0pO1xyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPGFueT4ob2JzZXJ2ZSA9PiB7XHJcbiAgICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbi5wb3NpdGlvbikge1xyXG4gICAgICAgIGNhc2UgJ1JlcXVpcmUnOlxyXG4gICAgICAgIGNhc2UgJ0Fzayc6XHJcbiAgICAgICAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKHIgPT4ge1xyXG4gICAgICAgICAgICBvYnNlcnZlLm5leHQoe1xyXG4gICAgICAgICAgICAgIGxuZzogci5jb29yZHMubG9uZ2l0dWRlLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgbGF0OiByLmNvb3Jkcy5sYXRpdHVkZS50b1N0cmluZygpXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uLnBvc2l0aW9uID09PSAnQXNrJylcclxuICAgICAgICAgICAgICBvYnNlcnZlLm5leHQoe30pO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZS5lcnJvcignbm8gcG9zaXRpb24nKTtcclxuICAgICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgb2JzZXJ2ZS5uZXh0KHt9KTtcclxuICAgICAgICAgIG9ic2VydmUuY29tcGxldGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqL1xyXG4gIHByaXZhdGUgX25vdGlmeSA9IDxUPigpID0+IChvYnNlcnZlOiBPYnNlcnZhYmxlPFJlY2lwaWVudE1vZGVsPFQ+PikgPT4ge1xyXG4gICAgcmV0dXJuIG9ic2VydmUucGlwZSh0YXAobSA9PiB7XHJcbiAgICAgIChtIGFzIEl0ZW1FeHRyYSkubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5fY2hhbmdlJC5uZXh0KG0pO1xyXG4gICAgfSkpO1xyXG4gIH07XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBJdGVtRXh0cmEge1xyXG4gIGxvYWRpbmc/OiBib29sZWFuO1xyXG4gIGxvYWRlZD86IGJvb2xlYW47XHJcbiAgd29ya2luZz86IGJvb2xlYW47XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBBdHRhY2htZW50RXh0cmEgZXh0ZW5kcyBBdHRhY2htZW50IHtcclxuICB1cmw6IFNhZmVVcmw7XHJcbiAgaWNvbj86IHN0cmluZztcclxuICBmaWxlRXh0OiBzdHJpbmc7XHJcbiAgaXNJbWFnZTogYm9vbGVhbjtcclxuICBwcm9ncmVzcz86IG51bWJlcjtcclxuICBjaGVja2VkT3V0PzogRGF0ZTtcclxuICB2aWV3ZWQ/OiBEYXRlO1xyXG4gIGZhaWxlZD86IGJvb2xlYW47XHJcbn1cclxuZnVuY3Rpb24gaXNIdHRwUmVzcG9uc2U8VD4oZXZlbnQ6IEh0dHBFdmVudDxUPik6IGV2ZW50IGlzIEh0dHBSZXNwb25zZTxUPiB7XHJcbiAgcmV0dXJuIGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuUmVzcG9uc2VcclxufVxyXG5cclxuZnVuY3Rpb24gaXNIdHRwUHJvZ3Jlc3NFdmVudChcclxuICBldmVudDogSHR0cEV2ZW50PHVua25vd24+XHJcbik6IGV2ZW50IGlzIEh0dHBQcm9ncmVzc0V2ZW50IHtcclxuICByZXR1cm4gKFxyXG4gICAgZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5Eb3dubG9hZFByb2dyZXNzIHx8XHJcbiAgICBldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzXHJcbiAgKVxyXG59XHJcbmZ1bmN0aW9uIGNhbGN1bGF0ZVN0YXRlKHVwbG9hZDogVXBsb2FkRXZlbnQsIGV2ZW50OiBIdHRwRXZlbnQ8dW5rbm93bj4pOiBVcGxvYWRFdmVudCB7XHJcbiAgaWYgKGlzSHR0cFByb2dyZXNzRXZlbnQoZXZlbnQpKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBwcm9ncmVzczogZXZlbnQudG90YWxcclxuICAgICAgICA/IE1hdGgucm91bmQoKDEwMCAqIGV2ZW50LmxvYWRlZCkgLyBldmVudC50b3RhbClcclxuICAgICAgICA6IHVwbG9hZC5wcm9ncmVzcyxcclxuICAgICAgc3RhdGU6ICdwcm9ncmVzcycsXHJcbiAgICB9XHJcbiAgfVxyXG4gIGlmIChpc0h0dHBSZXNwb25zZShldmVudCkpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHByb2dyZXNzOiAxMDAsXHJcbiAgICAgIHN0YXRlOiAnZG9uZScsXHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiB1cGxvYWRcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZEV2ZW50IHtcclxuICAvLyByZWFkb25seSBmaWxlTmFtZTogc3RyaW5nLFxyXG4gIHByb2dyZXNzOiBudW1iZXIsXHJcbiAgLy8gdG90YWw6IG51bWJlcixcclxuICBzdGF0ZTogJ3BlbmRpbmcnIHwgJ3Byb2dyZXNzJyB8ICdkb25lJ1xyXG59XHJcbiJdfQ==