@bizdoc/core 1.11.0-next.9 → 1.11.3

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 (52) hide show
  1. package/assets/themes/brown.min.css +18 -16
  2. package/assets/themes/dark.min.css +17 -15
  3. package/assets/themes/deep-purple-teal.min.css +92 -0
  4. package/assets/themes/default.min.css +18 -16
  5. package/assets/themes/green.min.css +18 -16
  6. package/assets/themes/indigo.min.css +18 -16
  7. package/esm2020/lib/admin/document-trace/document-trace.component.mjs +3 -3
  8. package/esm2020/lib/admin/document-trace/trace-element.component.mjs +2 -2
  9. package/esm2020/lib/admin/form/workflow/role-node.component.mjs +5 -4
  10. package/esm2020/lib/admin/positions/positions.component.mjs +16 -3
  11. package/esm2020/lib/compose/action/action-picker.component.mjs +7 -36
  12. package/esm2020/lib/compose/action/action.base.mjs +43 -0
  13. package/esm2020/lib/compose/action/action.pane.dialog.exp.mjs +70 -0
  14. package/esm2020/lib/compose/compose.pane.component.mjs +3 -3
  15. package/esm2020/lib/compose/form.component.mjs +2 -2
  16. package/esm2020/lib/compose/trace/flow.component.mjs +6 -5
  17. package/esm2020/lib/compose/trace/trace.component.mjs +2 -2
  18. package/esm2020/lib/core/configuration.mjs +8 -10
  19. package/esm2020/lib/core/controls/address.input.mjs +4 -3
  20. package/esm2020/lib/core/mailbox.service.mjs +1 -1
  21. package/esm2020/lib/core/translations.mjs +3 -1
  22. package/esm2020/lib/cube/accum/accum.component.mjs +2 -2
  23. package/esm2020/lib/cube/chart/chart.component.mjs +2 -2
  24. package/esm2020/lib/cube/cube.service.mjs +8 -9
  25. package/esm2020/lib/cube/explore/explore.pane.component.mjs +2 -2
  26. package/esm2020/lib/cube/grid/grid.component.mjs +2 -2
  27. package/esm2020/lib/cube/grid/spreadsheet.component.mjs +2 -2
  28. package/esm2020/lib/cube/matrix/matrix.pane.component.mjs +2 -4
  29. package/esm2020/lib/cube/matrix/popup.component.mjs +3 -3
  30. package/esm2020/lib/cube/matrix/table.component.mjs +14 -13
  31. package/esm2020/lib/cube/pivot/pivot.component.mjs +2 -2
  32. package/esm2020/lib/cube/view.mobile.component.mjs +2 -2
  33. package/esm2020/lib/desktop.module.mjs +6 -6
  34. package/esm2020/lib/routes.desktop.mjs +13 -7
  35. package/esm2020/lib/views/cube/cube-base.mjs +7 -9
  36. package/esm2020/lib/views/cube/explore.component.mjs +2 -2
  37. package/fesm2015/bizdoc-core.mjs +298 -261
  38. package/fesm2015/bizdoc-core.mjs.map +1 -1
  39. package/fesm2020/bizdoc-core.mjs +298 -261
  40. package/fesm2020/bizdoc-core.mjs.map +1 -1
  41. package/lib/admin/positions/positions.component.d.ts +5 -0
  42. package/lib/compose/action/action-picker.component.d.ts +4 -6
  43. package/lib/compose/action/action.base.d.ts +11 -0
  44. package/lib/compose/action/action.pane.dialog.exp.d.ts +29 -0
  45. package/lib/core/configuration.d.ts +8 -10
  46. package/lib/core/mailbox.service.d.ts +1 -1
  47. package/lib/core/translations.d.ts +2 -0
  48. package/lib/cube/cube.service.d.ts +0 -1
  49. package/lib/desktop.module.d.ts +2 -2
  50. package/package.json +1 -1
  51. package/esm2020/lib/compose/action/action.pane.dialog.mjs +0 -59
  52. package/lib/compose/action/action.pane.dialog.d.ts +0 -26
@@ -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=
@@ -4,6 +4,7 @@ import { Subject } from 'rxjs';
4
4
  import { MatFormFieldControl } from '@angular/material/form-field';
5
5
  import { debounceTime, takeUntil } from 'rxjs/operators';
6
6
  import { isObject } from '../functions';
7
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "@angular/forms";
9
10
  import * as i2 from "@angular/cdk/a11y";
@@ -61,7 +62,7 @@ export class AddressInput {
61
62
  }
62
63
  get disabled() { return this._disabled; }
63
64
  set disabled(value) {
64
- this._disabled = value || value === '';
65
+ this._disabled = coerceBooleanProperty(value);
65
66
  if (this.control.disabled !== this._disabled) {
66
67
  if (value)
67
68
  this.control.disable();
@@ -101,7 +102,7 @@ export class AddressInput {
101
102
  }
102
103
  onFocus() {
103
104
  this.focused = true;
104
- this._onTouched();
105
+ this._onTouched && this._onTouched();
105
106
  }
106
107
  onBlur() {
107
108
  this.focused = false;
@@ -189,4 +190,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
189
190
  }], value: [{
190
191
  type: Input
191
192
  }] } });
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9jb250cm9scy9hZGRyZXNzLmlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFzQixZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SSxPQUFPLEVBQW1DLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRW5FLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7QUFDeEMsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDO0FBa0IxQixNQUFNLE9BQ0UsWUFBWTtJQXFHbEIsWUFBdUMsU0FBb0IsRUFBVSxHQUFpQixFQUFVLE1BQStCO1FBQXhGLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFjO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBeUI7UUFsR3ZILGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUtqQixZQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUM1QixpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDcEIsT0FBRSxHQUFHLGlCQUFpQixZQUFZLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUVuRCxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFzQixD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OztBQWhJYyxtQkFBTSxHQUFHLENBQUUsQ0FBQTt5R0FEcEIsWUFBWTs2RkFBWixZQUFZLGdWQWhCUCxDQUFDLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsQ0FBQywrSUFDOUQ7Ozs7Ozs7OEJBT2tCOzJGQVF0QixZQUFZO2tCQWxCbkIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLGNBQWMsRUFBRSxDQUFDO29CQUN4RSxRQUFRLEVBQUU7Ozs7Ozs7OEJBT2tCO29CQUM1QixNQUFNLEVBQUUsQ0FBQyxvQ0FBb0MsQ0FBQztvQkFDOUMsSUFBSSxFQUFFO3dCQUNKLGtCQUFrQixFQUFFLGtCQUFrQjt3QkFDdEMseUJBQXlCLEVBQUUsYUFBYTtxQkFDekM7aUJBQ0Y7OzBCQXVHYyxRQUFROzswQkFBSSxJQUFJO2dHQTFGTCxFQUFFO3NCQUF6QixXQUFXO2dCQUMwQixZQUFZO3NCQUFqRCxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ2pCLGNBQWM7c0JBQWhDLE1BQU07Z0JBQ0UsUUFBUTtzQkFBaEIsS0FBSztnQkFDTyxXQUFXO3NCQUF2QixLQUFLO2dCQWFGLFFBQVE7c0JBRFgsS0FBSztnQkFhRixRQUFRO3NCQURYLEtBQUs7Z0JBY2dDLFdBQVc7c0JBQWhELFdBQVc7dUJBQUMsdUJBQXVCO2dCQW9CdkIsS0FBSztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgSG9zdEJpbmRpbmcsIE9wdGlvbmFsLCBTZWxmLCBPbkluaXQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcclxuaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tICcuLi9mdW5jdGlvbnMnO1xyXG5jb25zdCBERUJPVU5DRV9USU1FID0gMjUwO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1hZGRyZXNzJyxcclxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBBZGRyZXNzSW5wdXQgfV0sXHJcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwiYWRkcmVzcy1jb250YWluZXJcIj5cclxuICAgIDxpbnB1dCBtYXRJbnB1dCBbbWF0QXV0b2NvbXBsZXRlXT1cImFkZHJlc3NcIiBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiICNpbnB1dFxyXG4gICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCIgKGJsdXIpPVwib25CbHVyKClcIi8+XHJcbiAgICA8bWF0LWF1dG9jb21wbGV0ZSAjYWRkcmVzcyAob3B0aW9uU2VsZWN0ZWQpPVwic2VsZWN0ZWQoJGV2ZW50KVwiIFtkaXNwbGF5V2l0aF09XCJkaXNwbGF5Rm5cIj5cclxuICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGEgb2YgX2FkZHJlc3Nlc1wiIFt2YWx1ZV09XCJhXCI+XHJcbiAgICAgICAgPHNwYW4gbWF0TGluZT57e2EuZGVzY3JpcHRpb259fTwvc3Bhbj5cclxuICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgPC9tYXQtYXV0b2NvbXBsZXRlPjwvZGl2PmAsXHJcbiAgc3R5bGVzOiBbJy5hZGRyZXNzLWNvbnRhaW5lciB7ZGlzcGxheTogZmxleH0nXSxcclxuICBob3N0OiB7XHJcbiAgICAnW2NsYXNzLmZsb2F0aW5nXSc6ICdzaG91bGRMYWJlbEZsb2F0JyxcclxuICAgICdbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XSc6ICdkZXNjcmliZWRCeSdcclxuICB9XHJcbn0pXHJcbmV4cG9ydFxyXG4gIGNsYXNzIEFkZHJlc3NJbnB1dCBpbXBsZW1lbnRzIE1hdEZvcm1GaWVsZENvbnRyb2w8c3RyaW5nPiwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSwgT25Jbml0IHtcclxuICBwcml2YXRlIHN0YXRpYyBuZXh0SWQgPSAwO1xyXG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfcmVxdWlyZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3ZhbHVlPzogc3RyaW5nO1xyXG4gIHByaXZhdGUgX29uQ2hhbmdlOiBhbnk7XHJcbiAgcHJpdmF0ZSBfb25Ub3VjaGVkOiBhbnk7XHJcbiAgX2FkZHJlc3NlczogZ29vZ2xlLm1hcHMucGxhY2VzLlF1ZXJ5QXV0b2NvbXBsZXRlUHJlZGljdGlvbltdO1xyXG4gIHJlYWRvbmx5IGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICByZWFkb25seSBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIEBIb3N0QmluZGluZygpIHJlYWRvbmx5IGlkID0gYGFkZHJlc3MtaW5wdXQtJHtBZGRyZXNzSW5wdXQubmV4dElkKyt9YDtcclxuICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pIGlucHV0RWxlbWVudDogRWxlbWVudFJlZjtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgb3B0aW9uU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEFkZHJlc3NDaGFuZ2VFdmVudD4oKTtcclxuICBASW5wdXQoKSBkZWJvdW5jZSA9IERFQk9VTkNFX1RJTUU7XHJcbiAgQElucHV0KCkgZ2V0IHBsYWNlaG9sZGVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xyXG4gIH1cclxuICBzZXQgcGxhY2Vob2xkZXIocGxoKSB7XHJcbiAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHBsaDtcclxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICB9XHJcbiAgZm9jdXNlZCA9IGZhbHNlO1xyXG4gIGdldCBlbXB0eSgpOiBib29sZWFuIHsgcmV0dXJuICF0aGlzLmNvbnRyb2wudmFsdWU7IH1cclxuICBnZXQgc2hvdWxkTGFiZWxGbG9hdCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvY3VzZWQgfHwgIXRoaXMuZW1wdHk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHJlcXVpcmVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xyXG4gIH1cclxuICBzZXQgcmVxdWlyZWQocmVxKSB7XHJcbiAgICB0aGlzLl9yZXF1aXJlZCA9IHJlcTtcclxuICAgIGlmIChyZXEpXHJcbiAgICAgIHRoaXMuY29udHJvbC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7IH1cclxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWUgfHwgKHZhbHVlIGFzIGFueSkgPT09ICcnO1xyXG4gICAgaWYgKHRoaXMuY29udHJvbC5kaXNhYmxlZCAhPT0gdGhpcy5fZGlzYWJsZWQpIHtcclxuICAgICAgaWYgKHZhbHVlKVxyXG4gICAgICAgIHRoaXMuY29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLmNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG4gIGVycm9yU3RhdGUgPSBmYWxzZTtcclxuICBjb250cm9sVHlwZT86IHN0cmluZyA9ICdiaXpkb2MtYWRkcmVzcy1pbnB1dCc7XHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGVzY3JpYmVkYnknKSBkZXNjcmliZWRCeSA9ICcnO1xyXG5cclxuICBzZXREZXNjcmliZWRCeUlkcyhpZHM6IHN0cmluZ1tdKSB7XHJcbiAgICB0aGlzLmRlc2NyaWJlZEJ5ID0gaWRzLmpvaW4oJyAnKTtcclxuICB9XHJcbiAgb25Db250YWluZXJDbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICB9XHJcbiAgd3JpdGVWYWx1ZSh2YWw6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2V0VmFsdWUodmFsLCBmYWxzZSk7XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcclxuICB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuICBASW5wdXQoKSBnZXQgdmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcbiAgc2V0IHZhbHVlKHZhbDogc3RyaW5nKSB7XHJcbiAgICAgIHRoaXMuX3NldFZhbHVlKHZhbCwgdHJ1ZSk7XHJcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfc2V0VmFsdWUodmFsOiBzdHJpbmcsIGVtaXRFdmVudDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fdmFsdWUgPSB2YWw7XHJcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsID8geyBkZXNjcmlwdGlvbjogdmFsIH0gOiBudWxsLCB7ZW1pdEV2ZW50fSk7XHJcbiAgICB9XHJcblxyXG4gIG9uRm9jdXMoKSB7XHJcbiAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkKCk7XHJcbiAgfVxyXG4gIG9uQmx1cigpIHtcclxuICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xyXG4gIH1cclxuICBkaXNwbGF5Rm4oYWRkcmVzczogZ29vZ2xlLm1hcHMucGxhY2VzLlF1ZXJ5QXV0b2NvbXBsZXRlUHJlZGljdGlvbiB8IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGlzT2JqZWN0KGFkZHJlc3MpID8gKGFkZHJlc3MgYXMgZ29vZ2xlLm1hcHMucGxhY2VzLlF1ZXJ5QXV0b2NvbXBsZXRlUHJlZGljdGlvbikuZGVzY3JpcHRpb24gOiBhZGRyZXNzIGFzIHN0cmluZztcclxuICB9XHJcbiAgc2VsZWN0ZWQoZTogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCkge1xyXG4gICAgY29uc3QgYWRkcmVzcyA9IGUub3B0aW9uLnZhbHVlIGFzIGdvb2dsZS5tYXBzLnBsYWNlcy5RdWVyeUF1dG9jb21wbGV0ZVByZWRpY3Rpb247XHJcbiAgICB0aGlzLl9vbkNoYW5nZShhZGRyZXNzLmRlc2NyaXB0aW9uKTtcclxuICAgIHRoaXMub3B0aW9uU2VsZWN0ZWQuZW1pdCh7IGFkZHJlc3M6IGFkZHJlc3MuZGVzY3JpcHRpb24sIHBsYWNlSWQ6IGFkZHJlc3MucGxhY2VfaWQgfSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLCBwcml2YXRlIF9mbTogRm9jdXNNb25pdG9yLCBwcml2YXRlIF9lbFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcclxuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xyXG4gICAgfVxyXG4gICAgX2ZtLm1vbml0b3IoX2VsUmVmLm5hdGl2ZUVsZW1lbnQsIHRydWUpLnN1YnNjcmliZShvcmlnaW4gPT4ge1xyXG4gICAgICB0aGlzLmZvY3VzZWQgPSAhIW9yaWdpbjtcclxuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHB1YmxpYyBmb2N1cygpIHtcclxuICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBzZXJ2aWNlID0gbmV3IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGVTZXJ2aWNlKCk7XHJcbiAgICB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2UpLCB0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShpbnB1dCA9PiB7XHJcbiAgICAgIHNlcnZpY2UuZ2V0UXVlcnlQcmVkaWN0aW9ucyh7IGlucHV0IH0sIChyLCBzKSA9PiB7XHJcbiAgICAgICAgaWYgKHMgPT09IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZXNTZXJ2aWNlU3RhdHVzLk9LKVxyXG4gICAgICAgICAgdGhpcy5fYWRkcmVzc2VzID0gcjtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhgYWRkcmVzcyBnb29nbGUgYXBpIGVycm9yIGNvZGU6ICR7c31gKVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy5fZm0uc3RvcE1vbml0b3JpbmcodGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEFkZHJlc3NDaGFuZ2VFdmVudCB7XHJcbiAgYWRkcmVzczogc3RyaW5nO1xyXG4gIHBsYWNlSWQ6IHN0cmluZztcclxufVxyXG4iXX0=
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9jb250cm9scy9hZGRyZXNzLmlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFzQixZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SSxPQUFPLEVBQW1DLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRW5FLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7QUFDOUQsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDO0FBa0IxQixNQUFNLE9BQ0UsWUFBWTtJQXFHbEIsWUFBdUMsU0FBb0IsRUFBVSxHQUFpQixFQUFVLE1BQStCO1FBQXhGLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFjO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBeUI7UUFsR3ZILGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUtqQixZQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUM1QixpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDcEIsT0FBRSxHQUFHLGlCQUFpQixZQUFZLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUVuRCxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFzQixDQUFDO1FBQ2xFLGFBQVEsR0FBRyxhQUFhLENBQUM7UUFRbEMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQTZCaEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixnQkFBVyxHQUFZLHNCQUFzQixDQUFDO1FBQ1IsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUErQ3RDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRTlDLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1NBQ3JDO1FBQ0QsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN6RCxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUE5RkQsSUFBYSxXQUFXO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBSSxXQUFXLENBQUMsR0FBRztRQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLEtBQUssS0FBYyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDckMsQ0FBQztJQUNELElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsR0FBRztRQUNkLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQ3JCLElBQUksR0FBRztZQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7WUFFaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUNJLFFBQVEsS0FBYyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2xELElBQUksUUFBUSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDNUMsSUFBSSxLQUFLO2dCQUNQLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7O2dCQUV2QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBS0QsaUJBQWlCLENBQUMsR0FBYTtRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUNELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFDRCxVQUFVLENBQUMsR0FBUTtRQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBQ0QsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBQ0QsZ0JBQWdCLENBQUUsVUFBbUI7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUNELElBQWEsS0FBSztRQUNoQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLEdBQVc7UUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBQ08sU0FBUyxDQUFDLEdBQVcsRUFBRSxTQUFrQjtRQUMvQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBQyxTQUFTLEVBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFSCxPQUFPO1FBQ0wsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUNELE1BQU07UUFDSixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBQ0QsU0FBUyxDQUFDLE9BQWdFO1FBQ3hFLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBRSxPQUEwRCxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBaUIsQ0FBQztJQUN6SCxDQUFDO0lBQ0QsUUFBUSxDQUFDLENBQStCO1FBQ3RDLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBdUQsQ0FBQztRQUNqRixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBV00sS0FBSztRQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFDRCxRQUFRO1FBQ04sTUFBTSxPQUFPLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdEcsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzlDLElBQUksQ0FBQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7b0JBQ2pELElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDOztvQkFFcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUN0RCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7O0FBaEljLG1CQUFNLEdBQUcsQ0FBRSxDQUFBO3lHQURwQixZQUFZOzZGQUFaLFlBQVksZ1ZBaEJQLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxDQUFDLCtJQUM5RDs7Ozs7Ozs4QkFPa0I7MkZBUXRCLFlBQVk7a0JBbEJuQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsY0FBYyxFQUFFLENBQUM7b0JBQ3hFLFFBQVEsRUFBRTs7Ozs7Ozs4QkFPa0I7b0JBQzVCLE1BQU0sRUFBRSxDQUFDLG9DQUFvQyxDQUFDO29CQUM5QyxJQUFJLEVBQUU7d0JBQ0osa0JBQWtCLEVBQUUsa0JBQWtCO3dCQUN0Qyx5QkFBeUIsRUFBRSxhQUFhO3FCQUN6QztpQkFDRjs7MEJBdUdjLFFBQVE7OzBCQUFJLElBQUk7Z0dBMUZMLEVBQUU7c0JBQXpCLFdBQVc7Z0JBQzBCLFlBQVk7c0JBQWpELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDakIsY0FBYztzQkFBaEMsTUFBTTtnQkFDRSxRQUFRO3NCQUFoQixLQUFLO2dCQUNPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBYUYsUUFBUTtzQkFEWCxLQUFLO2dCQWFGLFFBQVE7c0JBRFgsS0FBSztnQkFjZ0MsV0FBVztzQkFBaEQsV0FBVzt1QkFBQyx1QkFBdUI7Z0JBb0J2QixLQUFLO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBIb3N0QmluZGluZywgT3B0aW9uYWwsIFNlbGYsIE9uSW5pdCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ0NvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xyXG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJy4uL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmNvbnN0IERFQk9VTkNFX1RJTUUgPSAyNTA7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWFkZHJlc3MnLFxyXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IEFkZHJlc3NJbnB1dCB9XSxcclxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJhZGRyZXNzLWNvbnRhaW5lclwiPlxyXG4gICAgPGlucHV0IG1hdElucHV0IFttYXRBdXRvY29tcGxldGVdPVwiYWRkcmVzc1wiIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgI2lucHV0XHJcbiAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIiAoYmx1cik9XCJvbkJsdXIoKVwiLz5cclxuICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhZGRyZXNzIChvcHRpb25TZWxlY3RlZCk9XCJzZWxlY3RlZCgkZXZlbnQpXCIgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlGblwiPlxyXG4gICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgYSBvZiBfYWRkcmVzc2VzXCIgW3ZhbHVlXT1cImFcIj5cclxuICAgICAgICA8c3BhbiBtYXRMaW5lPnt7YS5kZXNjcmlwdGlvbn19PC9zcGFuPlxyXG4gICAgICA8L21hdC1vcHRpb24+XHJcbiAgICA8L21hdC1hdXRvY29tcGxldGU+PC9kaXY+YCxcclxuICBzdHlsZXM6IFsnLmFkZHJlc3MtY29udGFpbmVyIHtkaXNwbGF5OiBmbGV4fSddLFxyXG4gIGhvc3Q6IHtcclxuICAgICdbY2xhc3MuZmxvYXRpbmddJzogJ3Nob3VsZExhYmVsRmxvYXQnLFxyXG4gICAgJ1thdHRyLmFyaWEtZGVzY3JpYmVkYnldJzogJ2Rlc2NyaWJlZEJ5J1xyXG4gIH1cclxufSlcclxuZXhwb3J0XHJcbiAgY2xhc3MgQWRkcmVzc0lucHV0IGltcGxlbWVudHMgTWF0Rm9ybUZpZWxkQ29udHJvbDxzdHJpbmc+LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIHByaXZhdGUgc3RhdGljIG5leHRJZCA9IDA7XHJcbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXI6IHN0cmluZztcclxuICBwcml2YXRlIF9yZXF1aXJlZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfdmFsdWU/OiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfb25DaGFuZ2U6IGFueTtcclxuICBwcml2YXRlIF9vblRvdWNoZWQ6IGFueTtcclxuICBfYWRkcmVzc2VzOiBnb29nbGUubWFwcy5wbGFjZXMuUXVlcnlBdXRvY29tcGxldGVQcmVkaWN0aW9uW107XHJcbiAgcmVhZG9ubHkgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gIHJlYWRvbmx5IHN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgQEhvc3RCaW5kaW5nKCkgcmVhZG9ubHkgaWQgPSBgYWRkcmVzcy1pbnB1dC0ke0FkZHJlc3NJbnB1dC5uZXh0SWQrK31gO1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSBvcHRpb25TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QWRkcmVzc0NoYW5nZUV2ZW50PigpO1xyXG4gIEBJbnB1dCgpIGRlYm91bmNlID0gREVCT1VOQ0VfVElNRTtcclxuICBASW5wdXQoKSBnZXQgcGxhY2Vob2xkZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XHJcbiAgfVxyXG4gIHNldCBwbGFjZWhvbGRlcihwbGgpIHtcclxuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gcGxoO1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gIH1cclxuICBmb2N1c2VkID0gZmFsc2U7XHJcbiAgZ2V0IGVtcHR5KCk6IGJvb2xlYW4geyByZXR1cm4gIXRoaXMuY29udHJvbC52YWx1ZTsgfVxyXG4gIGdldCBzaG91bGRMYWJlbEZsb2F0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9jdXNlZCB8fCAhdGhpcy5lbXB0eTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBnZXQgcmVxdWlyZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XHJcbiAgfVxyXG4gIHNldCByZXF1aXJlZChyZXEpIHtcclxuICAgIHRoaXMuX3JlcXVpcmVkID0gcmVxO1xyXG4gICAgaWYgKHJlcSlcclxuICAgICAgdGhpcy5jb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuY29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9kaXNhYmxlZDsgfVxyXG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gICAgaWYgKHRoaXMuY29udHJvbC5kaXNhYmxlZCAhPT0gdGhpcy5fZGlzYWJsZWQpIHtcclxuICAgICAgaWYgKHZhbHVlKVxyXG4gICAgICAgIHRoaXMuY29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLmNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG4gIGVycm9yU3RhdGUgPSBmYWxzZTtcclxuICBjb250cm9sVHlwZT86IHN0cmluZyA9ICdiaXpkb2MtYWRkcmVzcy1pbnB1dCc7XHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGVzY3JpYmVkYnknKSBkZXNjcmliZWRCeSA9ICcnO1xyXG5cclxuICBzZXREZXNjcmliZWRCeUlkcyhpZHM6IHN0cmluZ1tdKSB7XHJcbiAgICB0aGlzLmRlc2NyaWJlZEJ5ID0gaWRzLmpvaW4oJyAnKTtcclxuICB9XHJcbiAgb25Db250YWluZXJDbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICB9XHJcbiAgd3JpdGVWYWx1ZSh2YWw6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2V0VmFsdWUodmFsLCBmYWxzZSk7XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcclxuICB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuICBASW5wdXQoKSBnZXQgdmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcbiAgc2V0IHZhbHVlKHZhbDogc3RyaW5nKSB7XHJcbiAgICAgIHRoaXMuX3NldFZhbHVlKHZhbCwgdHJ1ZSk7XHJcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfc2V0VmFsdWUodmFsOiBzdHJpbmcsIGVtaXRFdmVudDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fdmFsdWUgPSB2YWw7XHJcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsID8geyBkZXNjcmlwdGlvbjogdmFsIH0gOiBudWxsLCB7ZW1pdEV2ZW50fSk7XHJcbiAgICB9XHJcblxyXG4gIG9uRm9jdXMoKSB7XHJcbiAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkICYmIHRoaXMuX29uVG91Y2hlZCgpO1xyXG4gIH1cclxuICBvbkJsdXIoKSB7XHJcbiAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcclxuICB9XHJcbiAgZGlzcGxheUZuKGFkZHJlc3M6IGdvb2dsZS5tYXBzLnBsYWNlcy5RdWVyeUF1dG9jb21wbGV0ZVByZWRpY3Rpb24gfCBzdHJpbmcpIHtcclxuICAgIHJldHVybiBpc09iamVjdChhZGRyZXNzKSA/IChhZGRyZXNzIGFzIGdvb2dsZS5tYXBzLnBsYWNlcy5RdWVyeUF1dG9jb21wbGV0ZVByZWRpY3Rpb24pLmRlc2NyaXB0aW9uIDogYWRkcmVzcyBhcyBzdHJpbmc7XHJcbiAgfVxyXG4gIHNlbGVjdGVkKGU6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQpIHtcclxuICAgIGNvbnN0IGFkZHJlc3MgPSBlLm9wdGlvbi52YWx1ZSBhcyBnb29nbGUubWFwcy5wbGFjZXMuUXVlcnlBdXRvY29tcGxldGVQcmVkaWN0aW9uO1xyXG4gICAgdGhpcy5fb25DaGFuZ2UoYWRkcmVzcy5kZXNjcmlwdGlvbik7XHJcbiAgICB0aGlzLm9wdGlvblNlbGVjdGVkLmVtaXQoeyBhZGRyZXNzOiBhZGRyZXNzLmRlc2NyaXB0aW9uLCBwbGFjZUlkOiBhZGRyZXNzLnBsYWNlX2lkIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCwgcHJpdmF0ZSBfZm06IEZvY3VzTW9uaXRvciwgcHJpdmF0ZSBfZWxSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcclxuICAgIH1cclxuICAgIF9mbS5tb25pdG9yKF9lbFJlZi5uYXRpdmVFbGVtZW50LCB0cnVlKS5zdWJzY3JpYmUob3JpZ2luID0+IHtcclxuICAgICAgdGhpcy5mb2N1c2VkID0gISFvcmlnaW47XHJcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBwdWJsaWMgZm9jdXMoKSB7XHJcbiAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2VydmljZSA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuQXV0b2NvbXBsZXRlU2VydmljZSgpO1xyXG4gICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoaW5wdXQgPT4ge1xyXG4gICAgICBzZXJ2aWNlLmdldFF1ZXJ5UHJlZGljdGlvbnMoeyBpbnB1dCB9LCAociwgcykgPT4ge1xyXG4gICAgICAgIGlmIChzID09PSBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VzU2VydmljZVN0YXR1cy5PSylcclxuICAgICAgICAgIHRoaXMuX2FkZHJlc3NlcyA9IHI7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgY29uc29sZS5sb2coYGFkZHJlc3MgZ29vZ2xlIGFwaSBlcnJvciBjb2RlOiAke3N9YClcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcclxuICAgIHRoaXMuX2ZtLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBBZGRyZXNzQ2hhbmdlRXZlbnQge1xyXG4gIGFkZHJlc3M6IHN0cmluZztcclxuICBwbGFjZUlkOiBzdHJpbmc7XHJcbn1cclxuIl19
@@ -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/Zm9sZGVySWQ9JHtmb2xkZXJJZH1gLCB7fSkucGlwZSh0YXAoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9jaGFuZ2UkLm5leHQoe1xyXG4gICAgICAgIGlkLFxyXG4gICAgICAgIGZvbGRlcklkXHJcbiAgICAgIH0gYXMgYW55KTtcclxuICAgIH0pKTtcclxuICB9XHJcbiAgY2hlY2tPdXQocmVjaXBpZW50SWQ6IG51bWJlciwgdmVyc2lvbjogbnVtYmVyLCBhdHRhY2htZW50SWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0KGAvYXBpL2F0dGFjaG1lbnRzLyR7cmVjaXBpZW50SWR9LyR7YXR0YWNobWVudElkfS9jaGVja291dGAsIG51bGwsIHsgcGFyYW1zOiB7IHZlcnNpb24gfSB9KTtcclxuICB9XHJcbiAgY2hlY2tJbihyZWNpcGllbnRJZDogbnVtYmVyLCB2ZXJzaW9uOiBudW1iZXIsIGF0dGFjaG1lbnRJZDogbnVtYmVyLCBmaWxlOiBGaWxlKTogT2JzZXJ2YWJsZTxBdHRhY2htZW50PiB7XHJcbiAgICBjb25zdCBmZCA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgZmQuYXBwZW5kKGZpbGUubmFtZSwgZmlsZSk7XHJcbiAgICBjb25zdCByZXEgPSBuZXcgSHR0cFJlcXVlc3QoJ1BVVCcsXHJcbiAgICAgIGAvYXBpL2F0dGFjaG1lbnRzLyR7cmVjaXBpZW50SWR9LyR7YXR0YWNobWVudElkfS9jaGVja2luP3ZlcnNpb249JHt2ZXJzaW9ufWAsIGZkLCB7XHJcbiAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICAvL2NvbnN0IGluaXRpYWxTdGF0ZTogVXBsb2FkRXZlbnQgPSB7IHN0YXRlOiAnUEVORElORycsIHByb2dyZXNzOiAwIH1cclxuICAgIC8vY29uc3QgY2FsY3VsYXRlU3RhdGUgPSAoXHJcbiAgICAvLyAgdXBsb2FkOiBVcGxvYWRFdmVudCxcclxuICAgIC8vICBldmVudDogSHR0cEV2ZW50PHVua25vd24+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==