@c8y/ngx-components 1021.75.8 → 1021.77.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/branding/shared/supports-branding.service.d.ts.map +1 -1
  2. package/core/common/ApplicationOptions.d.ts +2 -2
  3. package/core/dashboard/widgets-dashboard.component.d.ts +4 -2
  4. package/core/dashboard/widgets-dashboard.component.d.ts.map +1 -1
  5. package/core/login/login.component.d.ts.map +1 -1
  6. package/core/login/login.service.d.ts +1 -0
  7. package/core/login/login.service.d.ts.map +1 -1
  8. package/core/navigator/navigator-bottom/navigator-bottom.service.d.ts +3 -1
  9. package/core/navigator/navigator-bottom/navigator-bottom.service.d.ts.map +1 -1
  10. package/datapoint-explorer/view/datapoint-explorer.component.d.ts.map +1 -1
  11. package/echart/charts.component.d.ts.map +1 -1
  12. package/echart/models/datapoints-graph-widget.model.d.ts +10 -0
  13. package/echart/models/datapoints-graph-widget.model.d.ts.map +1 -1
  14. package/echart/services/chart-realtime.service.d.ts +2 -5
  15. package/echart/services/chart-realtime.service.d.ts.map +1 -1
  16. package/echart/services/echarts-options.service.d.ts +4 -13
  17. package/echart/services/echarts-options.service.d.ts.map +1 -1
  18. package/echart/services/y-axis.service.d.ts +1 -1
  19. package/echart/services/y-axis.service.d.ts.map +1 -1
  20. package/esm2022/branding/shared/supports-branding.service.mjs +6 -3
  21. package/esm2022/core/beta-feature/beta-preview-button.component.mjs +3 -3
  22. package/esm2022/core/beta-feature/beta-preview.component.mjs +3 -3
  23. package/esm2022/core/common/ApplicationOptions.mjs +1 -1
  24. package/esm2022/core/dashboard/widgets-dashboard.component.mjs +9 -5
  25. package/esm2022/core/login/login.component.mjs +2 -1
  26. package/esm2022/core/login/login.service.mjs +5 -1
  27. package/esm2022/core/navigator/navigator-bottom/navigator-bottom.service.mjs +13 -6
  28. package/esm2022/datapoint-explorer/view/datapoint-explorer.component.mjs +4 -3
  29. package/esm2022/device-map/device-map.component.mjs +2 -2
  30. package/esm2022/echart/charts.component.mjs +8 -2
  31. package/esm2022/echart/models/datapoints-graph-widget.model.mjs +1 -1
  32. package/esm2022/echart/services/chart-realtime.service.mjs +1 -1
  33. package/esm2022/echart/services/echarts-options.service.mjs +23 -15
  34. package/esm2022/echart/services/y-axis.service.mjs +32 -1
  35. package/esm2022/map/cluster-map.component.mjs +6 -3
  36. package/esm2022/map/map-status.component.mjs +23 -5
  37. package/esm2022/map/map.model.mjs +5 -2
  38. package/esm2022/map/map.service.mjs +17 -1
  39. package/esm2022/widgets/implementations/datapoints-graph/datapoints-graph-config/datapoints-graph-widget-config.component.mjs +4 -3
  40. package/esm2022/widgets/implementations/map/map-widget-config.component.mjs +25 -6
  41. package/esm2022/widgets/implementations/map/map-widget.component.mjs +40 -11
  42. package/fesm2022/c8y-ngx-components-branding-shared.mjs +5 -2
  43. package/fesm2022/c8y-ngx-components-branding-shared.mjs.map +1 -1
  44. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +3 -2
  45. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  46. package/fesm2022/c8y-ngx-components-device-map.mjs +1 -1
  47. package/fesm2022/c8y-ngx-components-device-map.mjs.map +1 -1
  48. package/fesm2022/c8y-ngx-components-echart-models.mjs.map +1 -1
  49. package/fesm2022/c8y-ngx-components-echart.mjs +60 -15
  50. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  51. package/fesm2022/c8y-ngx-components-map.mjs +47 -7
  52. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  53. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +3 -2
  54. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  55. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +67 -19
  56. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  57. package/fesm2022/c8y-ngx-components.mjs +26 -12
  58. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  59. package/locales/locales.pot +19 -7
  60. package/map/cluster-map.component.d.ts +2 -1
  61. package/map/cluster-map.component.d.ts.map +1 -1
  62. package/map/map-status.component.d.ts +7 -2
  63. package/map/map-status.component.d.ts.map +1 -1
  64. package/map/map.model.d.ts +1 -0
  65. package/map/map.model.d.ts.map +1 -1
  66. package/map/map.service.d.ts +1 -0
  67. package/map/map.service.d.ts.map +1 -1
  68. package/package.json +1 -1
  69. package/widgets/implementations/datapoints-graph/datapoints-graph-config/datapoints-graph-widget-config.component.d.ts.map +1 -1
  70. package/widgets/implementations/map/map-widget-config.component.d.ts +1 -0
  71. package/widgets/implementations/map/map-widget-config.component.d.ts.map +1 -1
  72. package/widgets/implementations/map/map-widget.component.d.ts +10 -4
  73. package/widgets/implementations/map/map-widget.component.d.ts.map +1 -1
@@ -33,4 +33,4 @@ export var PluginsExportScopes;
33
33
  */
34
34
  PluginsExportScopes["DEFAULT"] = "";
35
35
  })(PluginsExportScopes || (PluginsExportScopes = {}));
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25PcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vQXBwbGljYXRpb25PcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtCQTs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0NBZ1I5QjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksbUJBa0JYO0FBbEJELFdBQVksbUJBQW1CO0lBQzdCOztPQUVHO0lBQ0gsb0NBQWEsQ0FBQTtJQUNiOzs7T0FHRztJQUNILHdDQUFpQixDQUFBO0lBQ2pCOztPQUVHO0lBQ0gsc0RBQStCLENBQUE7SUFDL0I7O09BRUc7SUFDSCxtQ0FBWSxDQUFBO0FBQ2QsQ0FBQyxFQWxCVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBa0I5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElBcHBsaWNhdGlvbiwgVmVyc2lvbmluZ01hdHJpeCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB0eXBlIHtcbiAgQXBwbGljYXRpb25PcHRpb25zIGFzIEFwcE9wdGlvbnMsXG4gIEJyYW5kaW5nQ3NzVmFycyxcbiAgTGFuZ3VhZ2VzLFxuICBJMThuRXh0cmEsXG4gIERvY3MsXG4gIEljb24sXG4gIExvZ2luRXh0cmFMaW5rLFxuICBDb29raWVCYW5uZXJDb25maWd1cmF0aW9uLFxuICBDb29raWVQcmVmZXJlbmNlc0NvbmZpZ3VyYXRpb24sXG4gIFJlbW90ZVBsdWdpbnMsXG4gIE1hcFRpbGVMYXllcixcbiAgTWFwRGVmYXVsdENvbmZpZyxcbiAgUGx1Z2luc0V4cG9ydHMsXG4gIE1lc3NhZ2VCYW5uZXJDb25maWd1cmF0aW9uXG59IGZyb20gJ0BjOHkvb3B0aW9ucyc7XG5cbi8qXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVdBUk5JTkctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGFsbCBwcm9wZXJ0aWVzIG9mIHRoZSBvcmlnaW4gQXBwT3B0aW9uc1xuICogKipORVZFUioqIGNoYW5nZSB0aGlzIGZpbGUgZGlyZWN0bHkuIEluc3RlYWQgZG86XG4gKiAxLiBvcGVuIHBhY2thZ2VzL29wdGlvbnMvc3JjL0FwcGxpY2F0aW9uT3B0aW9ucy50cyBhbmQgYWRkIHlvdXIgcHJvcGVydHkgdGhlcmVcbiAqIDIuIGNoZWNrIGluIHRoaXMgZmlsZSBpZiBhbGwgb3B0aW9ucyBhcmUgaW1wbGVtZW50ZWQuXG4gKlxuICogVE9ETzogVGhpcyBmaWxlIHNob3VsZCB0aHJvdyB3aGVuIGEgcHJvcGVydHkgaXMgaW4gdGhlIEFwcE9wdGlvbnMgYnV0IG5vdCBpbXBsZW1lbnRlZCBoZXJlLlxuICogICAgICAgVGhpcyBzZWVtcyBub3QgdG8gd29yayBhdG0uIFdlIG5lZWQgdG8gY2hlY2sgd2h5LlxuICovXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25PcHRpb25zIGltcGxlbWVudHMgQXBwT3B0aW9ucyB7XG4gIG5hbWU6IHN0cmluZztcbiAgY29udGV4dFBhdGg6IHN0cmluZztcbiAga2V5OiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgd2ViU2RrVmVyc2lvbj86IHN0cmluZztcbiAgLyoqIFNldCB0byBgdHJ1ZWAgaWYgdGhlIGFwcGxpY2F0aW9uIGlzIGh5YnJpZCBhbmQgdXNlcyBBbmd1bGFyIGFuZCBBbmd1bGFySlMgc2ltdWx0YW5lb3VzbHkuICovXG4gIHVwZ3JhZGU/OiBib29sZWFuO1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgYnJhbmRpbmcgZW50cnkgZmlsZS4gKFNldCBpdCB0byBmYWxzZSB0byBkaXNhYmxlIGFueSBzdHlsaW5nLiBZb3UgY2FuIGhhbmRsZSB0aGUgc3R5bGluZyB0aGVuIG9uIHlvdXIgb3duIGUuZy4gaW4gYW4gYW5ndWxhci5qc29uIGZpbGUgdXNpbmcgbmctY2xpKVxuICAgKiBAZGVwcmVjYXRlZCBBZGQgeW91ciBnbG9iYWwgc3R5bGVzIHZpYSB0aGUgYW5ndWxhci5qc29uIGZpbGUuXG4gICAqL1xuICBicmFuZGluZ0VudHJ5PzogZmFsc2U7XG4gIC8qKlxuICAgKiBFbmFibGVzIGFsbCBiZXRhIGZlYXR1cmVzIGluIHRoZSBhcHBsaWNhdGlvbiBVSS5cbiAgICpcbiAgICogTm90ZTogVGhpcyBvbmx5IGFmZmVjdHMgZmVhdHVyZXMgb24gdGhlIGZyb250ZW5kLlxuICAgKiBJZiBhIGJldGEgZmVhdHVyZSBhbHNvIHJlcXVpcmVzIGJhY2tlbmQgc3VwcG9ydCBpdCBtdXN0IGJlIGVuYWJsZWQgc2VwYXJhdGVseSBvbiB0aGUgYmFja2VuZC5cbiAgICovXG4gIGVuYWJsZUFsbEJldGFGZWF0dXJlcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBIaWRlcyB0aGUgYmV0YSBwcmV2aWV3IHNlY3Rpb24gaW4gdGhlIHJpZ2h0IGRyYXdlci5cbiAgICovXG4gIGhpZGVCZXRhUHJldmlldz86IGJvb2xlYW47XG4gIC8qKiBQYXRoIHRvIHRzY2NuZmlnLmpzb24gZmlsZSBpZiBUeXBlU2NyaXB0IGlzIHVzZWQgKGRlZmF1bHQ6IC4vdHNjb25maWcuanNvbikuICovXG4gIHRzQ29uZmlnUGF0aD86IHN0cmluZztcbiAgLyoqIEVudHJ5IG1vZHVsZSBmb3IgQW5ndWxhciBjb21waWxlciAob25seSB1c2VkIHdpdGggbGF6eSBsb2FkZWQgcm91dGVzKSwgZS5nLiBgJ2FwcC5tb2R1bGUudHMjQXBwTW9kdWxlJ2AuICovXG4gIGVudHJ5TW9kdWxlPzogc3RyaW5nO1xuICAvKiogUGF0aCB0byBjdXN0b20gaW5kZXguaHRtbCAob3RoZXJ3aXNlIGRlZmF1bHQgb25lIHdpbGwgYmUgdXNlZCkuICovXG4gIGluZGV4VGVtcGxhdGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBVUkwgdG8gZHluYW1pY2FsbHkgZmV0Y2hlZCBvcHRpb25zLlxuICAgKiBJZiBzZXQgdG8gYHRydWVgIG9yIGxlZnQgdW5kZWZpbmVkLCBhbiBVUkwgd2lsbCBiZSB1c2VkIGJhc2VkIG9uIHRoZSBhcHBsaWNhdGlvbnMgY29udGV4dFBhdGguXG4gICAqIElmIHNldCB0byBgZmFsc2VgLCBubyBkeW5hbWljIG9wdGlvbnMgd2lsbCBiZSBmZXRjaGVkLlxuICAgKiAqL1xuICBkeW5hbWljT3B0aW9uc1VybD86IHN0cmluZyB8IGJvb2xlYW47XG4gIC8qKiBVUkwgdG8gZmF2aWNvbi4gKi9cbiAgZmF2aWNvblVybD86IHN0cmluZztcbiAgLyoqIFVSTCB0byAqLmNzcyBmaWxlIHdoaWNoIHdpbGwgcmVwbGFjZSBkZWZhdWx0IGJyYW5kaW5nLiAqL1xuICBicmFuZGluZ1VybD86IHN0cmluZztcbiAgLyoqIEVuYWJsZXMgdGhlIGJyYW5kaW5nIHByZXZpZXcgbW9kZS4gSWYgc2V0IHRvIHRydWUsIHRoZSBgZHluYW1pY09wdGlvbnNVcmxgIHdpbGwgYmUgcG9sbGVkIHJlZ3VsYXJseSBmb3IgY2hhbmdlcy4gSW4gY2FzZSB0aGUgYGxhc3RVcGRhdGVkYCBmaWVsZCBvZiB0aGUgZHluYW1pYyBvcHRpb25zIGNoYW5nZXMsIHRoZSBwYWdlIGlzIHJlbG9hZGVkIGluIG9yZGVyIHRvIGFwcGx5IHRoZSBuZXcgYnJhbmRpbmcuICovXG4gIGJyYW5kaW5nUHJldmlldz86IGJvb2xlYW47XG4gIC8qKiBPYmplY3Qgd2l0aCBwcm9wZXJ0aWVzIHRoYXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gQ1NTIGN1c3RvbSB2YXJpYWJsZXMuICovXG4gIGJyYW5kaW5nQ3NzVmFycz86IEJyYW5kaW5nQ3NzVmFycztcbiAgLyoqXG4gICAqIEFsbG93cyBmb3IgYWRkaW5nIG9yIG92ZXJyaWRpbmcgbGFuZ3VhZ2VzIGF2YWlsYWJsZSBpbiB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEl0cyBrZXlzIGFyZSBsYW5ndWFnZSBjb2RlcyBhbmQgaXRzIHZhbHVlcyBhcmUgb2JqZWN0cyB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICpcbiAgICogLSBgbmFtZWA6IEVuZ2xpc2ggbmFtZSBvZiB0aGUgbGFuZ3VhZ2UsXG4gICAqIC0gYG5hdGl2ZU5hbWVgOiBuYXRpdmUgbmFtZSBvZiB0aGUgbGFuZ3VhZ2UsXG4gICAqIC0gYHVybGA6IGZ1bGwgVVJMIHRvIEpTT04gZmlsZSB3aXRoIGNvbXBpbGVkIHRyYW5zbGF0aW9ucztcbiAgICogICAgaWYgbm90IGRlZmluZWQsIHRyYW5zbGF0aW9ucyB3aWxsIGJlIGxvYWRlZCBmcm9tIGAke2xvY2FsZVBhdGh9LyR7bGFuZ0NvZGV9Lmpzb25gLlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBgYGBqc29uXG4gICAqIFwibGFuZ3VhZ2VzXCI6IHtcbiAgICogICBcImRlXCI6IHtcbiAgICogICAgIFwibmFtZVwiOiBcIkdlcm1hblwiLFxuICAgKiAgICAgXCJuYXRpdmVOYW1lXCI6IFwiRGV1dHNjaFwiLFxuICAgKiAgICAgXCJ1cmxcIjogXCIvYXBwcy9wdWJsaWMvdWktYXNzZXRzL2RlLmpzb25cIlxuICAgKiAgIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGxhbmd1YWdlcz86IExhbmd1YWdlcztcbiAgLyoqXG4gICAqIEFsbG93cyB0byBhZGQgY3VzdG9tIHRyYW5zbGF0aW9ucy4gSXQgaXMgYW4gb3B0aW9uYWwgcHJvcGVydHkuXG4gICAqXG4gICAqIEl0cyBrZXlzIGFyZSBsYW5ndWFnZSBjb2RlcyAoaHR0cHM6Ly9jdW11bG9jaXR5LmNvbS9ndWlkZXMvdXNlcnMtZ3VpZGUvZ2V0dGluZy1zdGFydGVkLyNhLW5hbWUtbGFuZ3VhZ2VzLWEtYXZhaWxhYmxlLWxhbmd1YWdlcylcbiAgICogYW5kIGl0cyB2YWx1ZXMgYXJlIG9iamVjdHMgd2l0aCBrZXktdmFsdWUgcGFpcnMsIHdoZXJlIHRoZSBrZXkgaXMgdGhlIG9yaWdpbmFsIHN0cmluZyBpbiBFbmdsaXNoIGFuZCB0aGUgdmFsdWUgLSBpdHMgdHJhbnNsYXRpb24uXG4gICAqXG4gICAqIC0gYEhvbWVgOiBcIlN0YXJ0c2VpdGVcIlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSB5b3UgY2FuIGFkZCB0aGUgdHJhbnNsYXRpb24gb2YgeW91ciBjdXN0b20gY29va2llIGJhbm5lciBjb25maWd1cmVkIGluIHRoZSBicmFuZGluZyBzZXR0aW5nczpcbiAgICogYGBganNvblxuICAgKiBcImkxOG5FeHRyYVwiOiB7XG4gICAqICAgXCJkZVwiOiB7XG4gICAqICAgICBcIkFib3V0IGNvb2tpZXMgb24gQ3VtdWxvY2l0eSBJb1RcIjogXCJJbmZvcm1hdGlvbmVuIHp1IENvb2tpZXMgaW4gQ3VtdWxvY2l0eSBJb1RcIixcbiAgICogICAgIFwiQ2xpY2sgQWdyZWUgYW5kIFByb2NlZWQgdG8gYWNjZXB0IGNvb2tpZXMgYW5kIGdvIGRpcmVjdGx5IHRvIHRoZSBwbGF0Zm9ybSBvciBjbGljayBvbiBQcml2YWN5IFBvbGljeSB0byBzZWUgZGV0YWlsZWQgZGVzY3JpcHRpb25zIG9mIHRoZSB1c2VkIGNvb2tpZXMuXCI6IFwiS2xpY2tlbiBTaWUgYXVmIFp1c3RpbW1lbiB1bmQgZm9ydGZhaHJlbiwgdW0gQ29va2llcyB6dSBha3plcHRpZXJlbiB1bmQgZGlyZWt0IHp1ciBQbGF0dGZvcm0genUgZ2VsYW5nZW4sIG9kZXIga2xpY2tlbiBTaWUgYXVmIERhdGVuc2NodXR6cmljaHRsaW5pZSwgdW0gZGV0YWlsbGllcnRlIEJlc2NocmVpYnVuZ2VuIGRlciB2ZXJ3ZW5kZXRlbiBDb29raWVzIGFuenV6ZWlnZW4uXCJcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBpMThuRXh0cmE/OiBJMThuRXh0cmE7XG4gIC8qKiBQYXRoIHRvIHRoZSBmb2xkZXIgZnJvbSB3aGljaCAqLnBvIGZpbGVzIHdpbGwgYmUgbG9hZGVkLiAqL1xuICBsb2NhbGVQYXRoPzogc3RyaW5nO1xuICAvKiogQXJyYXkgb2YgVVJMcyB0byBhZGRpdGlvbmFsICouY3NzIGZpbGVzIHRvIGJlIGxvYWRlZCBhdCBydW50aW1lLiAqL1xuICBleHRyYUNzc1VybHM/OiBzdHJpbmdbXTtcbiAgLyoqIFN0eWxlc2hlZXQgKENTUykgdGhhdCB3aWxsIGJlIGFkZGVkIGF0IHJ1bnRpbWUuIFRoZSBzdHJpbmcgc2hvdWxkIGFjdHVhbGx5IGNvbnRhaW4gdGhlIENTUyBub3QgYSBwYXRoIG9yIFVSTCB0byBpdC4gKi9cbiAgZXh0cmFDc3M/OiBzdHJpbmc7XG4gIC8qKiBEb2N1bWVudGF0aW9uIGxpbmtzIHNldHRpbmdzLiAqL1xuICBkb2NzPzogRG9jcztcbiAgLyoqIEFwcGxpY2F0aW9uIGljb24gdG8gYmUgZGlzcGxheWVkIGluIGFwcCBzd2l0Y2hlciBhbmQgaGVhZGVyIGJhci4gKi9cbiAgaWNvbj86IEljb247XG5cbiAgLy8gVGhlc2UgYXJlIHRoZSBvbGQgb3B0aW9uc1xuICAvKiogSGlkZSBhcHBsaWNhdGlvbiBpbiBhcHAgc3dpdGNoZXIgKHNhdmVkIHRvIHRoZSBzZXJ2ZXIpLiAqL1xuICBub0FwcFN3aXRjaGVyPzogYm9vbGVhbjtcbiAgLyoqIEhUTUwgcGFnZSB0aXRsZS4gKi9cbiAgZ2xvYmFsVGl0bGU/OiBzdHJpbmc7XG4gIC8qKiBIaWRlIFwicG93ZXJlZCBieVwiIGFuZCB2ZXJzaW9uIGluZm8gYXQgdGhlIGJvdHRvbSBvZiB0aGUgbmF2aWdhdG9yIGFuZCBpbiB0aGUgcmlnaHQgZHJhd2VyLiAqL1xuICBoaWRlUG93ZXJlZD86IGJvb2xlYW47XG4gIC8qKiBIaWRlcyB0aGUgaGVhZGVyIGJhciAqL1xuICBoaWRlSGVhZGVyPzogYm9vbGVhbjtcbiAgLyoqIEhpZGVzIHRoZSBcIlBsYXRmb3JtIGluZm9ybWF0aW9uXCIgaW4gdGhlIHJpZ2h0IGRyYXdlciwgd2lsbCBvdmVycnVsZSB0aGUgXCJoaWRlUG93ZXJlZFwiIG9wdGlvbiAqL1xuICBoaWRlUGxhdGZvcm1JbmZvcm1hdGlvbj86IGJvb2xlYW47XG4gIC8qKiBVUkwgdG8gc3VwcG9ydCBwYWdlIChzZXQgdG8gYGZhbHNlYCB0byBoaWRlIHRoZSBsaW5rKS4gKi9cbiAgc3VwcG9ydFVybD86IGJvb2xlYW4gfCBzdHJpbmc7XG4gIC8qKlxuICAgKiBSZXBsYWNlbWVudCBzdHJpbmcgZm9yIGB1c2VyYCBmaWVsZCBpbiBhdWRpdCBsb2dzIGZvciBhY3Rpb25zIHBlcmZvcm1lZCBieSBhIHN1cHBvcnQgdXNlclxuICAgKiAoYXZhaWxhYmxlIHBsYWNlaG9sZGVyczogYHt7c3VwcG9ydF91c2VyfX1gLCBge3tzdXBwb3J0ZWRfdXNlcn19YCkuXG4gICAqL1xuICBzdXBwb3J0VXNlclN0cmluZz86IHN0cmluZztcbiAgLyoqXG4gICAqIERpc2FibGVzIHJlYWx0aW1lIHVwZGF0ZXMgb24gdGhlIG1hcCB3aWRnZXQgYW5kIG1hcHMgaW4gZ2VuZXJhbC5cbiAgICovXG4gIG1hcFdpZGdldFJlYWx0aW1lRGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3dzIHRvIGFkanVzdCB0aGUgZGVmYXVsdCBwYWdlc2l6ZSBvZiAxMDAgaXRlbXMgb2YgdGhlIG1hcCB3aWRnZXQgYW5kIG1hcHMgaW4gZ2VuZXJhbC5cbiAgICovXG4gIG1hcFdpZGdldFBhZ2VTaXplPzogbnVtYmVyO1xuICAvKipcbiAgICogQWxsb3dzIHRvIGhpZGUgdGhlIGhpbnQgdGhhdCB0aGVyZSBhcmUgbW9yZSBkZXZpY2VzIHdpdGggZ2VvIGNvb3JkaW5hdGVzIHRoZW4gZGlzcGxheWVkIG9uIHRoZSBtYXAgd2lkZ2V0IGFuZCBtYXBzIGluIGdlbmVyYWwuXG4gICAqL1xuICBtYXBXaWRnZXRIaWRlTWF4RGV2aWNlT25NYXBIaW50PzogYm9vbGVhbjtcbiAgLyoqIEVuYWJsZSBvciBkaXNhYmxlIHRoZSByaWdodCBkcmF3ZXIuICovXG4gIHJpZ2h0RHJhd2VyPzogYm9vbGVhbjtcbiAgLyoqIEVuYWJsZSBvciBkaXNhYmxlIGJyZWFkY3J1bWJzIGluIHRoZSBoZWFkZXIgZm9yIGdyb3VwcyBhbmQgZGV2aWNlcyAoZGVmYXVsdDogZmFsc2UpLiAqL1xuICBicmVhZGNydW1icz86IGJvb2xlYW47XG4gIC8qKiBDb2xsYXBzZSBuYXZpZ2F0b3Igb24gaW5pdGlhbCBsb2FkLiAqL1xuICBoaWRlTmF2aWdhdG9yPzogYm9vbGVhbjtcbiAgLyoqIFNob3cgdGFicyBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseS4gKi9cbiAgdGFic0hvcml6b250YWw/OiBib29sZWFuO1xuICAvKiogQWRkaXRpb25hbCBsaW5rKHMpIHRvIGRpc3BsYXkgb24gbG9naW4gc2NyZWVuLiAqL1xuICBsb2dpbkV4dHJhTGluaz86IExvZ2luRXh0cmFMaW5rIHwgTG9naW5FeHRyYUxpbmtbXTtcbiAgLyoqIEVuYWJsZSBvciBkaXNhYmxlIHN0b3JhZ2UgbGltaXRhdGlvbiBmZWF0dXJlLiAqL1xuICBzdG9yYWdlTGltaXRhdGlvbkZlYXR1cmVFbmFibGVkPzogYm9vbGVhbjtcbiAgLyoqIE5hbWUgb2YgY29tcGFueSBoYW5kbGluZyBzdXBwb3J0IHJlcXVlc3RzIGZyb20gYXBwIHVzZXJzIChkaXNwbGF5ZWQgaW4gbm90aWZpY2F0aW9uIG1lc3NhZ2UpLiAqL1xuICBjb21wYW55TmFtZT86IHN0cmluZztcbiAgLyoqIFVSTCB0ZW1wbGF0ZSBmb3IgZG9jdW1lbnRhdGlvbiBsaW5rcyAoZGVmYXVsdDogYCcke2RvY3NCYXNlVXJsfSR7cGFydGlhbFVybH0nYCkuICovXG4gIGd1aWRlSHJlZlRlbXBsYXRlPzogc3RyaW5nO1xuICAvKiogQmFzZSBVUkwgZm9yIGRvY3VtZW50YXRpb24gbGlua3MgKGluY2x1ZGUgYHt7IHZlcnNpb24gfX1gIHBsYWNlaG9sZGVyLCBpZiB5b3Ugd2FudCB2ZXJzaW9uZWQgbGlua3MpLiAqL1xuICBkb2NzQmFzZVVybD86IHN0cmluZztcbiAgLyoqIENTUCBzdHJpbmcgdG8gYmUgYXBwbGllZCB0byBgaW5kZXguaHRtbGAgYnkgcmVwbGFjaW5nIGRlZmF1bHQgdmFsdWVzLiAqL1xuICBjb250ZW50U2VjdXJpdHlQb2xpY3k/OiBzdHJpbmc7XG4gIC8qKiBFbmFibGVzIGNsb3VkIHNlbnNvciB3aXphcmQgKi9cbiAgc2Vuc29yUGhvbmU/OiBib29sZWFuO1xuICAvKiogU2hvdyBvciBoaWRlIGEgbmV3c2xldHRlciBzdWJzY3JpcHRpb24gY2hlY2tib3ggaW4gZWRpdCB1c2VyIG1vZGFsLiAqL1xuICBuZXdzbGV0dGVyPzogYm9vbGVhbjtcbiAgLyoqIFBhdGggdG8gdGhlIHJvb3Qgbm9kZV9tb2R1bGVzIGRpciAodXNlZnVsIHdoZW4gd29ya2luZyBpbiBtb25vcmVwbyBzZXR1cCwgZS5nLiB5YXJuIHdvcmtzcGFjZXMpLiAqL1xuICByb290Tm9kZU1vZHVsZXNQYXRoPzogc3RyaW5nO1xuICAvKiogQ29va2llIEJhbm5lciBjb25maWd1cmF0aW9uICovXG4gIGNvb2tpZUJhbm5lcj86IENvb2tpZUJhbm5lckNvbmZpZ3VyYXRpb247XG4gIC8qKiBDb29raWUgcHJlZmVyZW5jZXMgY29uZmlndXJhdGlvbi4gSGVyZSB5b3UgY2FuIGVuYWJsZSBvciBkaXNhYmxlIGNvb2tpZSBjYXRlZ29yaWVzICovXG4gIGNvb2tpZVByZWZlcmVuY2VzPzogQ29va2llUHJlZmVyZW5jZXNDb25maWd1cmF0aW9uO1xuICAvKiogTWVzc2FnZSBCYW5uZXIgY29uZmlndXJhdGlvbiAqL1xuICBtZXNzYWdlQmFubmVyPzogTWVzc2FnZUJhbm5lckNvbmZpZ3VyYXRpb247XG4gIC8qKiBBIGtleSBmb3IgdGhlIHByb2R1Y3QgZXhwZXJpZW5jZSBzb2Z0d2FyZSBHYWluc2lnaHQuICovXG4gIGdhaW5zaWdodEtleT86IHN0cmluZztcbiAgLyoqIERpc2FibGUgdXNlciB0cmFja2luZyAqL1xuICBkaXNhYmxlVHJhY2tpbmc/OiBib29sZWFuO1xuICAvKiogTmdNb2R1bGUgZXhwb3J0IGZvciBwbHVnaW5zLiAqL1xuICBleHBvcnRzPzogUGx1Z2luc0V4cG9ydHNbXTtcbiAgLyoqIExpc3Qgb2YgaW1wb3J0ZWQgcmVtb3RlIHBsdWdpbnMuICovXG4gIHJlbW90ZXM/OiBSZW1vdGVQbHVnaW5zO1xuICAvKiogSWYgc2V0IHRvIHRydWUsIG9ubHkgcmVtb3RlcyBkZWZpbmVkIGluIHRoZSBgcmVtb3Rlc2AgcXVlcnkgcGFyYW1ldGVyIHdpbGwgYmUgbG9hZGVkLiAqL1xuICBmb3JjZVVybFJlbW90ZXM/OiBib29sZWFuO1xuICAvKiogVGhlIHBhY2thZ2Ugc291cmNlIGEgYXBwbGljYXRpb24gb3JpZ2lucyBmcm9tIGFzIElBcHBsaWNhdGlvbiBvciBzaW1wbHkgdGhlIGlkIG9mIHRoZSBzb3VyY2UgKi9cbiAgc291cmNlPzogc3RyaW5nIHwgbnVtYmVyIHwgSUFwcGxpY2F0aW9uO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBhc3NldHMgdG8gY29weSB0byB0aGUgYnVpbGQgb3V0cHV0LlxuICAgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2stY29udHJpYi9jb3B5LXdlYnBhY2stcGx1Z2luIGZvciBtb3JlIGluZm9ybWF0aW9uXG4gICAqIGFib3V0IHRoZSBwYXR0ZXJucyB0byBhZGQgaGVyZS5cbiAgICovXG4gIGNvcHk/OiBbXTtcbiAgLyoqXG4gICAqIEFsbG93cyB0byBlbmFibGUgb3IgZGlzYWJsZSBjb250ZXh0IGhlbHAsIG9yIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJhc2UgVVJMIHVzZWQgdG8gbG9hZCBpdHMgY29udGVudHMuXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBjb250ZXh0IGhlbHAgdXNlcyB0aGUgc2FtZSBiYXNlIFVSTCBhcyBkZWZpbmVkIGluIHRoZSBgZG9jc0Jhc2VVcmxgIG9wdGlvblxuICAgKiAoaWYgdGhpcyBvcHRpb24gaXMgdW5kZWZpbmVkLCB0aGVuIHRoZSBmb2xsb3dpbmcgdmFsdWUgd2lsbCBiZSB1c2VkOiBgaHR0cHM6Ly9jdW11bG9jaXR5LmNvbS9ndWlkZXMve3t2ZXJzaW9ufX1gKS5cbiAgICogQWx0ZXJuYXRpdmVseSwgaWYgYSBzdHJpbmcgaXMgcHJvdmlkZWQgaGVyZSwgaXQnbGwgYmUgdXNlZCBhcyB0aGUgYmFzZSBVUkxcbiAgICogYW5kIGFueSBge3sgdmVyc2lvbiB9fWAgcGxhY2Vob2xkZXIgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSByZWxldmFudCBkb2NzIHZlcnNpb24uXG4gICAqL1xuICBjb250ZXh0SGVscD86IGJvb2xlYW4gfCBzdHJpbmc7XG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCBjb2NrcGl0IGFuZCBkZXZpY2VtYW5hZ2VtZW50IHVzZSB0aGUgb25seVJvb3RzIHF1ZXJ5IHRvIHJlc29sdmUgcm9vdCBub2Rlcy4gVGhpc1xuICAgKiBjb3VsZCBsZWFkIHRvIHBlcmZvcm1hbmNlIGlzc3VlcywgaWYgYSBjdXN0b21lciBoYXMgYSBsb3Qgb2Ygcm9vdCBub2Rlcy4gVGhlcmVmb3JlIHlvdSBjYW4gZGlzYWJsZVxuICAgKiB0aGUgdXNlIG9mIHRoaXMgcXVlcnkgd2l0aCB0aGlzIGZsYWcuXG4gICAqL1xuICBkaXNhYmxlT25seVJvb3RzUXVlcnk/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3dzIHRvIGZvcmNlIHNob3dpbmcgdGhlIHNldHVwIHdpemFyZC5cbiAgICovXG4gIGZvcmNlU2V0dXA/OiBib29sZWFuO1xuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBhcHBsaWNhdGlvbiBuZWVkcyB0byBzaG93IHRoZSBzZXR1cCB3aXphcmQuXG4gICAqL1xuICBpc1NldHVwPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQgYSBXZWJTREsgYXBwIHJlcXVpcmVzIHRoZSB1c2VyIHRvIGJlIGxvZ2dlZCBpbi5cbiAgICogSW4gY2FzZSB5b3Ugd291bGQgbGlrZSB0byBkZXZlbG9wIGp1c3QgYSBzdGF0aWMgYXBwbGljYXRpb24sIHRoYXQgZG9lcyBub3QgcmVxdWlyZSBhbnkga2luZCBvZiBhY2Nlc3MgdG8gdGhlIGJhY2tlbmQsXG4gICAqIHlvdSBjYW4gdXNlIHRoaXMgZmxhZyB0byBkaXNhYmxlIHRoZSBsb2dpbiBzY3JlZW4uXG4gICAqIE5PVEU6IG5vdCBhbGwgV2ViU0RLIGNvbXBvbmVudHMgc3VwcG9ydCB0aGlzLCBzb21lIG1pZ2h0IHJlcXVpcmUgdGhlIHVzZXIgdG8gYmUgbG9nZ2VkIGluIGFuZCB3b24ndCB3b3JrLlxuICAgKi9cbiAgbm9Mb2dpbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gb3B0IG91dCBvZiBzdXBwb3J0aW5nL2xvYWRpbmcgcGx1Z2lucyBmb3IgdGhpcyBhcHBsaWNhdGlvbi5cbiAgICovXG4gIG5vUGx1Z2lucz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gb3B0IG91dCBvZiB0aGUgdmVyc2lvbiB3YXJuaW5nIHdoaWNoIGlzIHNob3duIGluIHRoZSBkZXYgdG9vbHMuXG4gICAqL1xuICBub1ZlcnNpb25XYXJuaW5nPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFsbG93cyB0byBzZXQgdGhlIG1hcCBsYXllcnMuIElmIG5vdCBzZXQsIGRlZmF1bHRzIHRvIG9wZW4gc3RyZWV0IG1hcCBsYXllci5cbiAgICovXG4gIG1hcExheWVycz86IE1hcFRpbGVMYXllcltdO1xuICAvKipcbiAgICogQWxsb3dzIHRvIHNldCBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIG9uIHRoZSBtYXBzLlxuICAgKi9cbiAgbWFwQ29uZmlnPzogTWFwRGVmYXVsdENvbmZpZztcbiAgLyoqXG4gICAqIFRoZSBVUkwgdXNlZCB0byBsb29rdXAgZ2VvIGNvb3JkaW5hdGVzIGZvciBhIHVzZXIgcHJvdmlkZWQgYWRkcmVzcyB2aWEgW25vbWluYXRpbSBBUEldKGh0dHBzOi8vbm9taW5hdGltLm9yZy9yZWxlYXNlLWRvY3MvZGV2ZWxvcC9hcGkvU2VhcmNoLykuXG4gICAqIENhbiBiZSBzZXQgdG8gZW1wdHkgdG8gZGlzYWJsZSB0aGUgZmluZCBhZGRyZXNzIGZlYXR1cmUgb24gdGhlIGxvY2F0aW9uIHRhYi5cbiAgICogVXNlczogYGh0dHBzOi8vbm9taW5hdGltLm9wZW5zdHJlZXRtYXAub3JnL3NlYXJjaD9mb3JtYXQ9anNvbiZxPXtzZWFyY2hUZXJtfWAgaWYgbm90IHNldC5cbiAgICovXG4gIG1hcE5vbWluYXRpbVVybD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSByb290IGVsZW1lbnQuIEJ5IGRlZmF1bHQgYzh5LWJvb3RzdHJhcC5cbiAgICovXG4gIHJvb3RUYWdOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogSGlkZXMgcG9zc2liaWxpdHkgdG8gY3JlYXRlIHR5cGVkIGRhc2hib2FyZHMgZm9yIGFzc2V0cyAoYW5kIGdyb3VwcykuIElmIHRydWUsIHR5cGVkIGRhc2hib2FyZHMgY2FuIGJlIGNyZWF0ZWQgb25seSBmb3IgZGV2aWNlcy5cbiAgICogSXQgaXMgdHJ1ZSBieSBkZWZhdWx0LlxuICAgKi9cbiAgaGlkZVR5cGVEYXNoYm9hcmRGb3JBc3NldHM/OiBib29sZWFuO1xuICAvKipcbiAgICogQSBtYXRyaXggb2YgdmVyc2lvbnMgaW5kaWNhdGluZyB3aGljaCB2ZXJzaW9ucyBvZiB0aGUgYXBwbGljYXRpb24gKGtleSkgYXJlIGRlcGVuZGVudCBvbiB3aGljaCB2ZXJzaW9uIG9mIGEgY3VtdWxvY2l0eSBjb21wb25lbnQgKEFQSSB2ZXJzaW9uIGFuZCBXZWIgU0RLIHZlcnNpb24gb2YgdGhlIHNoZWxsIGFwcGxpY2F0aW9uIGN1cnJlbnRseSBzdXBwb3J0ZWQsIGluZGljYXRlZCBieSB0aGUgdmFsdWUpLlxuICAgKiBUaGUgdmVyc2lvbnMgb2YgdGhlIGRlcGVuZGVudCBjb21wb25lbnRzIGNhbiBiZSBpbmRpY2F0ZWQgYnkgYSBzZW12ZXIgcmFuZ2UuXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYGpzb25cbiAgICoge1xuICAgKiAgXCIxLjAuMFwiOiB7XG4gICAqICAgIFwic2RrXCI6IFwiPj0xMDE2LjAuMCA8MTAxNy4wLjBcIixcbiAgICogICAgXCJhcGlcIjogXCI+PTEwMTYuMC4wIDwxMDE3LjAuMFwiXG4gICAqICB9LFxuICAgKiAgXCIyLjAuMFwiOiB7XG4gICAqICAgIFwic2RrXCI6IFwifjEwMTcuMC4wXCIsXG4gICAqICAgIFwiYXBpXCI6IFwifjEwMTcuMC4wXCJcbiAgICogIH0sXG4gICAqICBcIjMuMC4wXCI6IHtcbiAgICogICAgXCJzZGtcIjogXCI+PTEwMTguMC4wXCIsXG4gICAqICAgIFwiYXBpXCI6IFwiPj0xMDE4LjAuMFwiXG4gICAqICB9LFxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgdmVyc2lvbmluZ01hdHJpeD86IFZlcnNpb25pbmdNYXRyaXg7XG4gIC8qKlxuICAgKiBJcyB1c2VkIGZvciBwbHVnaW5zIHRvIGluZGljYXRlIHRoZWlyIG93bmVyLiBDdW11bG9jaXR5IHBsdWdpbnMgYXJlIG1hcmtlZCB3aXRoIE9GRklDSUFMIGxhYmVsLlxuICAgKiBZb3UgY2FuIHVzZSB0aGUgc3BlY2lhbCBcIkFSQ0hJVkVEXCIgbGFiZWwgdG8gbWFyayB0aGVtIGFzIGFyY2hpdmVkLlxuICAgKi9cbiAgbGFiZWw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEZWZpbmVzIHRoZSB0eXBlIG9mIHJlZnJlc2ggbWVjaGFuaXNtIHVzZWQgZm9yIGFsYXJtcyBpbiB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIC0gJ3JlYWx0aW1lJzogVXRpbGl6ZXMgYSByZWFsdGltZSBtZWNoYW5pc20gZm9yIHVwZGF0aW5nIGFsYXJtcy5cbiAgICogLSAnaW50ZXJ2YWwnOiBVdGlsaXplcyBIVFRQIHBvbGxpbmcgYXQgcmVndWxhciBpbnRlcnZhbHMgdG8gcmVmcmVzaCB0aGUgYWxhcm1zLlxuICAgKlxuICAgKiBUaGlzIHNldHRpbmcgYWxsb3dzIHRvIHN3aXRjaCBiZXR3ZWVuIHJlYWx0aW1lIGFuZCBpbnRlcnZhbC1iYXNlZCByZWZyZXNoIG1ldGhvZHMuXG4gICAqL1xuICBhbGFybXNSZWZyZXNoVHlwZT86ICdpbnRlcnZhbCcgfCAncmVhbHRpbWUnO1xufVxuXG4vKipcbiAqIFRlbGxzIGhvdyBhIHBsdWdpbiBpcyBzY29wZWQuXG4gKi9cbmV4cG9ydCBlbnVtIFBsdWdpbnNFeHBvcnRTY29wZXMge1xuICAvKipcbiAgICogTGltaXQgdGhlIHBsdWdpbiB0byB0aGUgY3VycmVudCBhcHBsaWNhdGlvbi4gSXQgaXMgaW1wb3J0ZWQgYnkgZGVmYXVsdC5cbiAgICovXG4gIFNFTEYgPSAnc2VsZicsXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gYWRkIHRoZSBwbHVnaW4gdG8gYSBnbG9iYWwgc2NvcGUsIG1lYW5pbmcgaXQgaXMgaW1wb3J0ZWQgdG8gYWxsIGFwcGxpY2F0aW9ucyBhdCB0aGUgc2FtZSB0aW1lLlxuICAgKiBUaGlzIGlzIG5vdCB1c2VkIGF0IHRoZSBtb21lbnQgYnV0IHBsYW5uZWQgdG8gYmUgaW1wbGVtZW50ZWQgaW4gdGhlIG5ldyBicmFuZGluZyBlZGl0b3IuXG4gICAqL1xuICBHTE9CQUwgPSAnZ2xvYmFsJyxcbiAgLyoqXG4gICAqIExpbWl0IHRoZSBwbHVnaW4gdG8gdGhlIGN1cnJlbnQgYXBwbGljYXRpb24uIFRoZSBwbHVnaW4gaXMgbm90IGltcG9ydGVkIGJ5IGRlZmF1bHQuXG4gICAqL1xuICBTRUxGX09QVElPTkFMID0gJ3NlbGYtb3B0aW9uYWwnLFxuICAvKipcbiAgICogTGlrZSB1bmRlZmluZWQgdGhlIHBsdWdpbiBpcyBhdmFpbGFibGUgZm9yIGFueSBwcml2YXRlIGFwcGxpY2F0aW9uLlxuICAgKi9cbiAgREVGQVVMVCA9ICcnXG59XG4iXX0=
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25PcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vQXBwbGljYXRpb25PcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtCQTs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0NBZ1I5QjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksbUJBa0JYO0FBbEJELFdBQVksbUJBQW1CO0lBQzdCOztPQUVHO0lBQ0gsb0NBQWEsQ0FBQTtJQUNiOzs7T0FHRztJQUNILHdDQUFpQixDQUFBO0lBQ2pCOztPQUVHO0lBQ0gsc0RBQStCLENBQUE7SUFDL0I7O09BRUc7SUFDSCxtQ0FBWSxDQUFBO0FBQ2QsQ0FBQyxFQWxCVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBa0I5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElBcHBsaWNhdGlvbiwgVmVyc2lvbmluZ01hdHJpeCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB0eXBlIHtcbiAgQXBwbGljYXRpb25PcHRpb25zIGFzIEFwcE9wdGlvbnMsXG4gIEJyYW5kaW5nQ3NzVmFycyxcbiAgTGFuZ3VhZ2VzLFxuICBJMThuRXh0cmEsXG4gIERvY3MsXG4gIEljb24sXG4gIExvZ2luRXh0cmFMaW5rLFxuICBDb29raWVCYW5uZXJDb25maWd1cmF0aW9uLFxuICBDb29raWVQcmVmZXJlbmNlc0NvbmZpZ3VyYXRpb24sXG4gIFJlbW90ZVBsdWdpbnMsXG4gIE1hcFRpbGVMYXllcixcbiAgTWFwRGVmYXVsdENvbmZpZyxcbiAgUGx1Z2luc0V4cG9ydHMsXG4gIE1lc3NhZ2VCYW5uZXJDb25maWd1cmF0aW9uXG59IGZyb20gJ0BjOHkvb3B0aW9ucyc7XG5cbi8qXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVdBUk5JTkctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGFsbCBwcm9wZXJ0aWVzIG9mIHRoZSBvcmlnaW4gQXBwT3B0aW9uc1xuICogKipORVZFUioqIGNoYW5nZSB0aGlzIGZpbGUgZGlyZWN0bHkuIEluc3RlYWQgZG86XG4gKiAxLiBvcGVuIHBhY2thZ2VzL29wdGlvbnMvc3JjL0FwcGxpY2F0aW9uT3B0aW9ucy50cyBhbmQgYWRkIHlvdXIgcHJvcGVydHkgdGhlcmVcbiAqIDIuIGNoZWNrIGluIHRoaXMgZmlsZSBpZiBhbGwgb3B0aW9ucyBhcmUgaW1wbGVtZW50ZWQuXG4gKlxuICogVE9ETzogVGhpcyBmaWxlIHNob3VsZCB0aHJvdyB3aGVuIGEgcHJvcGVydHkgaXMgaW4gdGhlIEFwcE9wdGlvbnMgYnV0IG5vdCBpbXBsZW1lbnRlZCBoZXJlLlxuICogICAgICAgVGhpcyBzZWVtcyBub3QgdG8gd29yayBhdG0uIFdlIG5lZWQgdG8gY2hlY2sgd2h5LlxuICovXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25PcHRpb25zIGltcGxlbWVudHMgQXBwT3B0aW9ucyB7XG4gIG5hbWU6IHN0cmluZztcbiAgY29udGV4dFBhdGg6IHN0cmluZztcbiAga2V5OiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgd2ViU2RrVmVyc2lvbj86IHN0cmluZztcbiAgLyoqIFNldCB0byBgdHJ1ZWAgaWYgdGhlIGFwcGxpY2F0aW9uIGlzIGh5YnJpZCBhbmQgdXNlcyBBbmd1bGFyIGFuZCBBbmd1bGFySlMgc2ltdWx0YW5lb3VzbHkuICovXG4gIHVwZ3JhZGU/OiBib29sZWFuO1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgYnJhbmRpbmcgZW50cnkgZmlsZS4gKFNldCBpdCB0byBmYWxzZSB0byBkaXNhYmxlIGFueSBzdHlsaW5nLiBZb3UgY2FuIGhhbmRsZSB0aGUgc3R5bGluZyB0aGVuIG9uIHlvdXIgb3duIGUuZy4gaW4gYW4gYW5ndWxhci5qc29uIGZpbGUgdXNpbmcgbmctY2xpKVxuICAgKiBAZGVwcmVjYXRlZCBBZGQgeW91ciBnbG9iYWwgc3R5bGVzIHZpYSB0aGUgYW5ndWxhci5qc29uIGZpbGUuXG4gICAqL1xuICBicmFuZGluZ0VudHJ5PzogZmFsc2U7XG4gIC8qKlxuICAgKiBFbmFibGVzIGFsbCBwcmV2aWV3IGZlYXR1cmVzIGluIHRoZSBhcHBsaWNhdGlvbiBVSS5cbiAgICpcbiAgICogTm90ZTogVGhpcyBvbmx5IGFmZmVjdHMgZmVhdHVyZXMgb24gdGhlIGZyb250ZW5kLlxuICAgKiBJZiBhIHByZXZpZXcgZmVhdHVyZSBhbHNvIHJlcXVpcmVzIGJhY2tlbmQgc3VwcG9ydCBpdCBtdXN0IGJlIGVuYWJsZWQgc2VwYXJhdGVseSBvbiB0aGUgYmFja2VuZC5cbiAgICovXG4gIGVuYWJsZUFsbEJldGFGZWF0dXJlcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBIaWRlcyB0aGUgYmV0YSBwcmV2aWV3IHNlY3Rpb24gaW4gdGhlIHJpZ2h0IGRyYXdlci5cbiAgICovXG4gIGhpZGVCZXRhUHJldmlldz86IGJvb2xlYW47XG4gIC8qKiBQYXRoIHRvIHRzY2NuZmlnLmpzb24gZmlsZSBpZiBUeXBlU2NyaXB0IGlzIHVzZWQgKGRlZmF1bHQ6IC4vdHNjb25maWcuanNvbikuICovXG4gIHRzQ29uZmlnUGF0aD86IHN0cmluZztcbiAgLyoqIEVudHJ5IG1vZHVsZSBmb3IgQW5ndWxhciBjb21waWxlciAob25seSB1c2VkIHdpdGggbGF6eSBsb2FkZWQgcm91dGVzKSwgZS5nLiBgJ2FwcC5tb2R1bGUudHMjQXBwTW9kdWxlJ2AuICovXG4gIGVudHJ5TW9kdWxlPzogc3RyaW5nO1xuICAvKiogUGF0aCB0byBjdXN0b20gaW5kZXguaHRtbCAob3RoZXJ3aXNlIGRlZmF1bHQgb25lIHdpbGwgYmUgdXNlZCkuICovXG4gIGluZGV4VGVtcGxhdGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBVUkwgdG8gZHluYW1pY2FsbHkgZmV0Y2hlZCBvcHRpb25zLlxuICAgKiBJZiBzZXQgdG8gYHRydWVgIG9yIGxlZnQgdW5kZWZpbmVkLCBhbiBVUkwgd2lsbCBiZSB1c2VkIGJhc2VkIG9uIHRoZSBhcHBsaWNhdGlvbnMgY29udGV4dFBhdGguXG4gICAqIElmIHNldCB0byBgZmFsc2VgLCBubyBkeW5hbWljIG9wdGlvbnMgd2lsbCBiZSBmZXRjaGVkLlxuICAgKiAqL1xuICBkeW5hbWljT3B0aW9uc1VybD86IHN0cmluZyB8IGJvb2xlYW47XG4gIC8qKiBVUkwgdG8gZmF2aWNvbi4gKi9cbiAgZmF2aWNvblVybD86IHN0cmluZztcbiAgLyoqIFVSTCB0byAqLmNzcyBmaWxlIHdoaWNoIHdpbGwgcmVwbGFjZSBkZWZhdWx0IGJyYW5kaW5nLiAqL1xuICBicmFuZGluZ1VybD86IHN0cmluZztcbiAgLyoqIEVuYWJsZXMgdGhlIGJyYW5kaW5nIHByZXZpZXcgbW9kZS4gSWYgc2V0IHRvIHRydWUsIHRoZSBgZHluYW1pY09wdGlvbnNVcmxgIHdpbGwgYmUgcG9sbGVkIHJlZ3VsYXJseSBmb3IgY2hhbmdlcy4gSW4gY2FzZSB0aGUgYGxhc3RVcGRhdGVkYCBmaWVsZCBvZiB0aGUgZHluYW1pYyBvcHRpb25zIGNoYW5nZXMsIHRoZSBwYWdlIGlzIHJlbG9hZGVkIGluIG9yZGVyIHRvIGFwcGx5IHRoZSBuZXcgYnJhbmRpbmcuICovXG4gIGJyYW5kaW5nUHJldmlldz86IGJvb2xlYW47XG4gIC8qKiBPYmplY3Qgd2l0aCBwcm9wZXJ0aWVzIHRoYXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gQ1NTIGN1c3RvbSB2YXJpYWJsZXMuICovXG4gIGJyYW5kaW5nQ3NzVmFycz86IEJyYW5kaW5nQ3NzVmFycztcbiAgLyoqXG4gICAqIEFsbG93cyBmb3IgYWRkaW5nIG9yIG92ZXJyaWRpbmcgbGFuZ3VhZ2VzIGF2YWlsYWJsZSBpbiB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEl0cyBrZXlzIGFyZSBsYW5ndWFnZSBjb2RlcyBhbmQgaXRzIHZhbHVlcyBhcmUgb2JqZWN0cyB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICpcbiAgICogLSBgbmFtZWA6IEVuZ2xpc2ggbmFtZSBvZiB0aGUgbGFuZ3VhZ2UsXG4gICAqIC0gYG5hdGl2ZU5hbWVgOiBuYXRpdmUgbmFtZSBvZiB0aGUgbGFuZ3VhZ2UsXG4gICAqIC0gYHVybGA6IGZ1bGwgVVJMIHRvIEpTT04gZmlsZSB3aXRoIGNvbXBpbGVkIHRyYW5zbGF0aW9ucztcbiAgICogICAgaWYgbm90IGRlZmluZWQsIHRyYW5zbGF0aW9ucyB3aWxsIGJlIGxvYWRlZCBmcm9tIGAke2xvY2FsZVBhdGh9LyR7bGFuZ0NvZGV9Lmpzb25gLlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBgYGBqc29uXG4gICAqIFwibGFuZ3VhZ2VzXCI6IHtcbiAgICogICBcImRlXCI6IHtcbiAgICogICAgIFwibmFtZVwiOiBcIkdlcm1hblwiLFxuICAgKiAgICAgXCJuYXRpdmVOYW1lXCI6IFwiRGV1dHNjaFwiLFxuICAgKiAgICAgXCJ1cmxcIjogXCIvYXBwcy9wdWJsaWMvdWktYXNzZXRzL2RlLmpzb25cIlxuICAgKiAgIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGxhbmd1YWdlcz86IExhbmd1YWdlcztcbiAgLyoqXG4gICAqIEFsbG93cyB0byBhZGQgY3VzdG9tIHRyYW5zbGF0aW9ucy4gSXQgaXMgYW4gb3B0aW9uYWwgcHJvcGVydHkuXG4gICAqXG4gICAqIEl0cyBrZXlzIGFyZSBsYW5ndWFnZSBjb2RlcyAoaHR0cHM6Ly9jdW11bG9jaXR5LmNvbS9ndWlkZXMvdXNlcnMtZ3VpZGUvZ2V0dGluZy1zdGFydGVkLyNhLW5hbWUtbGFuZ3VhZ2VzLWEtYXZhaWxhYmxlLWxhbmd1YWdlcylcbiAgICogYW5kIGl0cyB2YWx1ZXMgYXJlIG9iamVjdHMgd2l0aCBrZXktdmFsdWUgcGFpcnMsIHdoZXJlIHRoZSBrZXkgaXMgdGhlIG9yaWdpbmFsIHN0cmluZyBpbiBFbmdsaXNoIGFuZCB0aGUgdmFsdWUgLSBpdHMgdHJhbnNsYXRpb24uXG4gICAqXG4gICAqIC0gYEhvbWVgOiBcIlN0YXJ0c2VpdGVcIlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSB5b3UgY2FuIGFkZCB0aGUgdHJhbnNsYXRpb24gb2YgeW91ciBjdXN0b20gY29va2llIGJhbm5lciBjb25maWd1cmVkIGluIHRoZSBicmFuZGluZyBzZXR0aW5nczpcbiAgICogYGBganNvblxuICAgKiBcImkxOG5FeHRyYVwiOiB7XG4gICAqICAgXCJkZVwiOiB7XG4gICAqICAgICBcIkFib3V0IGNvb2tpZXMgb24gQ3VtdWxvY2l0eSBJb1RcIjogXCJJbmZvcm1hdGlvbmVuIHp1IENvb2tpZXMgaW4gQ3VtdWxvY2l0eSBJb1RcIixcbiAgICogICAgIFwiQ2xpY2sgQWdyZWUgYW5kIFByb2NlZWQgdG8gYWNjZXB0IGNvb2tpZXMgYW5kIGdvIGRpcmVjdGx5IHRvIHRoZSBwbGF0Zm9ybSBvciBjbGljayBvbiBQcml2YWN5IFBvbGljeSB0byBzZWUgZGV0YWlsZWQgZGVzY3JpcHRpb25zIG9mIHRoZSB1c2VkIGNvb2tpZXMuXCI6IFwiS2xpY2tlbiBTaWUgYXVmIFp1c3RpbW1lbiB1bmQgZm9ydGZhaHJlbiwgdW0gQ29va2llcyB6dSBha3plcHRpZXJlbiB1bmQgZGlyZWt0IHp1ciBQbGF0dGZvcm0genUgZ2VsYW5nZW4sIG9kZXIga2xpY2tlbiBTaWUgYXVmIERhdGVuc2NodXR6cmljaHRsaW5pZSwgdW0gZGV0YWlsbGllcnRlIEJlc2NocmVpYnVuZ2VuIGRlciB2ZXJ3ZW5kZXRlbiBDb29raWVzIGFuenV6ZWlnZW4uXCJcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBpMThuRXh0cmE/OiBJMThuRXh0cmE7XG4gIC8qKiBQYXRoIHRvIHRoZSBmb2xkZXIgZnJvbSB3aGljaCAqLnBvIGZpbGVzIHdpbGwgYmUgbG9hZGVkLiAqL1xuICBsb2NhbGVQYXRoPzogc3RyaW5nO1xuICAvKiogQXJyYXkgb2YgVVJMcyB0byBhZGRpdGlvbmFsICouY3NzIGZpbGVzIHRvIGJlIGxvYWRlZCBhdCBydW50aW1lLiAqL1xuICBleHRyYUNzc1VybHM/OiBzdHJpbmdbXTtcbiAgLyoqIFN0eWxlc2hlZXQgKENTUykgdGhhdCB3aWxsIGJlIGFkZGVkIGF0IHJ1bnRpbWUuIFRoZSBzdHJpbmcgc2hvdWxkIGFjdHVhbGx5IGNvbnRhaW4gdGhlIENTUyBub3QgYSBwYXRoIG9yIFVSTCB0byBpdC4gKi9cbiAgZXh0cmFDc3M/OiBzdHJpbmc7XG4gIC8qKiBEb2N1bWVudGF0aW9uIGxpbmtzIHNldHRpbmdzLiAqL1xuICBkb2NzPzogRG9jcztcbiAgLyoqIEFwcGxpY2F0aW9uIGljb24gdG8gYmUgZGlzcGxheWVkIGluIGFwcCBzd2l0Y2hlciBhbmQgaGVhZGVyIGJhci4gKi9cbiAgaWNvbj86IEljb247XG5cbiAgLy8gVGhlc2UgYXJlIHRoZSBvbGQgb3B0aW9uc1xuICAvKiogSGlkZSBhcHBsaWNhdGlvbiBpbiBhcHAgc3dpdGNoZXIgKHNhdmVkIHRvIHRoZSBzZXJ2ZXIpLiAqL1xuICBub0FwcFN3aXRjaGVyPzogYm9vbGVhbjtcbiAgLyoqIEhUTUwgcGFnZSB0aXRsZS4gKi9cbiAgZ2xvYmFsVGl0bGU/OiBzdHJpbmc7XG4gIC8qKiBIaWRlIFwicG93ZXJlZCBieVwiIGFuZCB2ZXJzaW9uIGluZm8gYXQgdGhlIGJvdHRvbSBvZiB0aGUgbmF2aWdhdG9yIGFuZCBpbiB0aGUgcmlnaHQgZHJhd2VyLiAqL1xuICBoaWRlUG93ZXJlZD86IGJvb2xlYW47XG4gIC8qKiBIaWRlcyB0aGUgaGVhZGVyIGJhciAqL1xuICBoaWRlSGVhZGVyPzogYm9vbGVhbjtcbiAgLyoqIEhpZGVzIHRoZSBcIlBsYXRmb3JtIGluZm9ybWF0aW9uXCIgaW4gdGhlIHJpZ2h0IGRyYXdlciwgd2lsbCBvdmVycnVsZSB0aGUgXCJoaWRlUG93ZXJlZFwiIG9wdGlvbiAqL1xuICBoaWRlUGxhdGZvcm1JbmZvcm1hdGlvbj86IGJvb2xlYW47XG4gIC8qKiBVUkwgdG8gc3VwcG9ydCBwYWdlIChzZXQgdG8gYGZhbHNlYCB0byBoaWRlIHRoZSBsaW5rKS4gKi9cbiAgc3VwcG9ydFVybD86IGJvb2xlYW4gfCBzdHJpbmc7XG4gIC8qKlxuICAgKiBSZXBsYWNlbWVudCBzdHJpbmcgZm9yIGB1c2VyYCBmaWVsZCBpbiBhdWRpdCBsb2dzIGZvciBhY3Rpb25zIHBlcmZvcm1lZCBieSBhIHN1cHBvcnQgdXNlclxuICAgKiAoYXZhaWxhYmxlIHBsYWNlaG9sZGVyczogYHt7c3VwcG9ydF91c2VyfX1gLCBge3tzdXBwb3J0ZWRfdXNlcn19YCkuXG4gICAqL1xuICBzdXBwb3J0VXNlclN0cmluZz86IHN0cmluZztcbiAgLyoqXG4gICAqIERpc2FibGVzIHJlYWx0aW1lIHVwZGF0ZXMgb24gdGhlIG1hcCB3aWRnZXQgYW5kIG1hcHMgaW4gZ2VuZXJhbC5cbiAgICovXG4gIG1hcFdpZGdldFJlYWx0aW1lRGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3dzIHRvIGFkanVzdCB0aGUgZGVmYXVsdCBwYWdlc2l6ZSBvZiAxMDAgaXRlbXMgb2YgdGhlIG1hcCB3aWRnZXQgYW5kIG1hcHMgaW4gZ2VuZXJhbC5cbiAgICovXG4gIG1hcFdpZGdldFBhZ2VTaXplPzogbnVtYmVyO1xuICAvKipcbiAgICogQWxsb3dzIHRvIGhpZGUgdGhlIGhpbnQgdGhhdCB0aGVyZSBhcmUgbW9yZSBkZXZpY2VzIHdpdGggZ2VvIGNvb3JkaW5hdGVzIHRoZW4gZGlzcGxheWVkIG9uIHRoZSBtYXAgd2lkZ2V0IGFuZCBtYXBzIGluIGdlbmVyYWwuXG4gICAqL1xuICBtYXBXaWRnZXRIaWRlTWF4RGV2aWNlT25NYXBIaW50PzogYm9vbGVhbjtcbiAgLyoqIEVuYWJsZSBvciBkaXNhYmxlIHRoZSByaWdodCBkcmF3ZXIuICovXG4gIHJpZ2h0RHJhd2VyPzogYm9vbGVhbjtcbiAgLyoqIEVuYWJsZSBvciBkaXNhYmxlIGJyZWFkY3J1bWJzIGluIHRoZSBoZWFkZXIgZm9yIGdyb3VwcyBhbmQgZGV2aWNlcyAoZGVmYXVsdDogZmFsc2UpLiAqL1xuICBicmVhZGNydW1icz86IGJvb2xlYW47XG4gIC8qKiBDb2xsYXBzZSBuYXZpZ2F0b3Igb24gaW5pdGlhbCBsb2FkLiAqL1xuICBoaWRlTmF2aWdhdG9yPzogYm9vbGVhbjtcbiAgLyoqIFNob3cgdGFicyBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseS4gKi9cbiAgdGFic0hvcml6b250YWw/OiBib29sZWFuO1xuICAvKiogQWRkaXRpb25hbCBsaW5rKHMpIHRvIGRpc3BsYXkgb24gbG9naW4gc2NyZWVuLiAqL1xuICBsb2dpbkV4dHJhTGluaz86IExvZ2luRXh0cmFMaW5rIHwgTG9naW5FeHRyYUxpbmtbXTtcbiAgLyoqIEVuYWJsZSBvciBkaXNhYmxlIHN0b3JhZ2UgbGltaXRhdGlvbiBmZWF0dXJlLiAqL1xuICBzdG9yYWdlTGltaXRhdGlvbkZlYXR1cmVFbmFibGVkPzogYm9vbGVhbjtcbiAgLyoqIE5hbWUgb2YgY29tcGFueSBoYW5kbGluZyBzdXBwb3J0IHJlcXVlc3RzIGZyb20gYXBwIHVzZXJzIChkaXNwbGF5ZWQgaW4gbm90aWZpY2F0aW9uIG1lc3NhZ2UpLiAqL1xuICBjb21wYW55TmFtZT86IHN0cmluZztcbiAgLyoqIFVSTCB0ZW1wbGF0ZSBmb3IgZG9jdW1lbnRhdGlvbiBsaW5rcyAoZGVmYXVsdDogYCcke2RvY3NCYXNlVXJsfSR7cGFydGlhbFVybH0nYCkuICovXG4gIGd1aWRlSHJlZlRlbXBsYXRlPzogc3RyaW5nO1xuICAvKiogQmFzZSBVUkwgZm9yIGRvY3VtZW50YXRpb24gbGlua3MgKGluY2x1ZGUgYHt7IHZlcnNpb24gfX1gIHBsYWNlaG9sZGVyLCBpZiB5b3Ugd2FudCB2ZXJzaW9uZWQgbGlua3MpLiAqL1xuICBkb2NzQmFzZVVybD86IHN0cmluZztcbiAgLyoqIENTUCBzdHJpbmcgdG8gYmUgYXBwbGllZCB0byBgaW5kZXguaHRtbGAgYnkgcmVwbGFjaW5nIGRlZmF1bHQgdmFsdWVzLiAqL1xuICBjb250ZW50U2VjdXJpdHlQb2xpY3k/OiBzdHJpbmc7XG4gIC8qKiBFbmFibGVzIGNsb3VkIHNlbnNvciB3aXphcmQgKi9cbiAgc2Vuc29yUGhvbmU/OiBib29sZWFuO1xuICAvKiogU2hvdyBvciBoaWRlIGEgbmV3c2xldHRlciBzdWJzY3JpcHRpb24gY2hlY2tib3ggaW4gZWRpdCB1c2VyIG1vZGFsLiAqL1xuICBuZXdzbGV0dGVyPzogYm9vbGVhbjtcbiAgLyoqIFBhdGggdG8gdGhlIHJvb3Qgbm9kZV9tb2R1bGVzIGRpciAodXNlZnVsIHdoZW4gd29ya2luZyBpbiBtb25vcmVwbyBzZXR1cCwgZS5nLiB5YXJuIHdvcmtzcGFjZXMpLiAqL1xuICByb290Tm9kZU1vZHVsZXNQYXRoPzogc3RyaW5nO1xuICAvKiogQ29va2llIEJhbm5lciBjb25maWd1cmF0aW9uICovXG4gIGNvb2tpZUJhbm5lcj86IENvb2tpZUJhbm5lckNvbmZpZ3VyYXRpb247XG4gIC8qKiBDb29raWUgcHJlZmVyZW5jZXMgY29uZmlndXJhdGlvbi4gSGVyZSB5b3UgY2FuIGVuYWJsZSBvciBkaXNhYmxlIGNvb2tpZSBjYXRlZ29yaWVzICovXG4gIGNvb2tpZVByZWZlcmVuY2VzPzogQ29va2llUHJlZmVyZW5jZXNDb25maWd1cmF0aW9uO1xuICAvKiogTWVzc2FnZSBCYW5uZXIgY29uZmlndXJhdGlvbiAqL1xuICBtZXNzYWdlQmFubmVyPzogTWVzc2FnZUJhbm5lckNvbmZpZ3VyYXRpb247XG4gIC8qKiBBIGtleSBmb3IgdGhlIHByb2R1Y3QgZXhwZXJpZW5jZSBzb2Z0d2FyZSBHYWluc2lnaHQuICovXG4gIGdhaW5zaWdodEtleT86IHN0cmluZztcbiAgLyoqIERpc2FibGUgdXNlciB0cmFja2luZyAqL1xuICBkaXNhYmxlVHJhY2tpbmc/OiBib29sZWFuO1xuICAvKiogTmdNb2R1bGUgZXhwb3J0IGZvciBwbHVnaW5zLiAqL1xuICBleHBvcnRzPzogUGx1Z2luc0V4cG9ydHNbXTtcbiAgLyoqIExpc3Qgb2YgaW1wb3J0ZWQgcmVtb3RlIHBsdWdpbnMuICovXG4gIHJlbW90ZXM/OiBSZW1vdGVQbHVnaW5zO1xuICAvKiogSWYgc2V0IHRvIHRydWUsIG9ubHkgcmVtb3RlcyBkZWZpbmVkIGluIHRoZSBgcmVtb3Rlc2AgcXVlcnkgcGFyYW1ldGVyIHdpbGwgYmUgbG9hZGVkLiAqL1xuICBmb3JjZVVybFJlbW90ZXM/OiBib29sZWFuO1xuICAvKiogVGhlIHBhY2thZ2Ugc291cmNlIGEgYXBwbGljYXRpb24gb3JpZ2lucyBmcm9tIGFzIElBcHBsaWNhdGlvbiBvciBzaW1wbHkgdGhlIGlkIG9mIHRoZSBzb3VyY2UgKi9cbiAgc291cmNlPzogc3RyaW5nIHwgbnVtYmVyIHwgSUFwcGxpY2F0aW9uO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBhc3NldHMgdG8gY29weSB0byB0aGUgYnVpbGQgb3V0cHV0LlxuICAgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2stY29udHJpYi9jb3B5LXdlYnBhY2stcGx1Z2luIGZvciBtb3JlIGluZm9ybWF0aW9uXG4gICAqIGFib3V0IHRoZSBwYXR0ZXJucyB0byBhZGQgaGVyZS5cbiAgICovXG4gIGNvcHk/OiBbXTtcbiAgLyoqXG4gICAqIEFsbG93cyB0byBlbmFibGUgb3IgZGlzYWJsZSBjb250ZXh0IGhlbHAsIG9yIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJhc2UgVVJMIHVzZWQgdG8gbG9hZCBpdHMgY29udGVudHMuXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBjb250ZXh0IGhlbHAgdXNlcyB0aGUgc2FtZSBiYXNlIFVSTCBhcyBkZWZpbmVkIGluIHRoZSBgZG9jc0Jhc2VVcmxgIG9wdGlvblxuICAgKiAoaWYgdGhpcyBvcHRpb24gaXMgdW5kZWZpbmVkLCB0aGVuIHRoZSBmb2xsb3dpbmcgdmFsdWUgd2lsbCBiZSB1c2VkOiBgaHR0cHM6Ly9jdW11bG9jaXR5LmNvbS9ndWlkZXMve3t2ZXJzaW9ufX1gKS5cbiAgICogQWx0ZXJuYXRpdmVseSwgaWYgYSBzdHJpbmcgaXMgcHJvdmlkZWQgaGVyZSwgaXQnbGwgYmUgdXNlZCBhcyB0aGUgYmFzZSBVUkxcbiAgICogYW5kIGFueSBge3sgdmVyc2lvbiB9fWAgcGxhY2Vob2xkZXIgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSByZWxldmFudCBkb2NzIHZlcnNpb24uXG4gICAqL1xuICBjb250ZXh0SGVscD86IGJvb2xlYW4gfCBzdHJpbmc7XG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCBjb2NrcGl0IGFuZCBkZXZpY2VtYW5hZ2VtZW50IHVzZSB0aGUgb25seVJvb3RzIHF1ZXJ5IHRvIHJlc29sdmUgcm9vdCBub2Rlcy4gVGhpc1xuICAgKiBjb3VsZCBsZWFkIHRvIHBlcmZvcm1hbmNlIGlzc3VlcywgaWYgYSBjdXN0b21lciBoYXMgYSBsb3Qgb2Ygcm9vdCBub2Rlcy4gVGhlcmVmb3JlIHlvdSBjYW4gZGlzYWJsZVxuICAgKiB0aGUgdXNlIG9mIHRoaXMgcXVlcnkgd2l0aCB0aGlzIGZsYWcuXG4gICAqL1xuICBkaXNhYmxlT25seVJvb3RzUXVlcnk/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3dzIHRvIGZvcmNlIHNob3dpbmcgdGhlIHNldHVwIHdpemFyZC5cbiAgICovXG4gIGZvcmNlU2V0dXA/OiBib29sZWFuO1xuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBhcHBsaWNhdGlvbiBuZWVkcyB0byBzaG93IHRoZSBzZXR1cCB3aXphcmQuXG4gICAqL1xuICBpc1NldHVwPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQgYSBXZWJTREsgYXBwIHJlcXVpcmVzIHRoZSB1c2VyIHRvIGJlIGxvZ2dlZCBpbi5cbiAgICogSW4gY2FzZSB5b3Ugd291bGQgbGlrZSB0byBkZXZlbG9wIGp1c3QgYSBzdGF0aWMgYXBwbGljYXRpb24sIHRoYXQgZG9lcyBub3QgcmVxdWlyZSBhbnkga2luZCBvZiBhY2Nlc3MgdG8gdGhlIGJhY2tlbmQsXG4gICAqIHlvdSBjYW4gdXNlIHRoaXMgZmxhZyB0byBkaXNhYmxlIHRoZSBsb2dpbiBzY3JlZW4uXG4gICAqIE5PVEU6IG5vdCBhbGwgV2ViU0RLIGNvbXBvbmVudHMgc3VwcG9ydCB0aGlzLCBzb21lIG1pZ2h0IHJlcXVpcmUgdGhlIHVzZXIgdG8gYmUgbG9nZ2VkIGluIGFuZCB3b24ndCB3b3JrLlxuICAgKi9cbiAgbm9Mb2dpbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gb3B0IG91dCBvZiBzdXBwb3J0aW5nL2xvYWRpbmcgcGx1Z2lucyBmb3IgdGhpcyBhcHBsaWNhdGlvbi5cbiAgICovXG4gIG5vUGx1Z2lucz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gb3B0IG91dCBvZiB0aGUgdmVyc2lvbiB3YXJuaW5nIHdoaWNoIGlzIHNob3duIGluIHRoZSBkZXYgdG9vbHMuXG4gICAqL1xuICBub1ZlcnNpb25XYXJuaW5nPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFsbG93cyB0byBzZXQgdGhlIG1hcCBsYXllcnMuIElmIG5vdCBzZXQsIGRlZmF1bHRzIHRvIG9wZW4gc3RyZWV0IG1hcCBsYXllci5cbiAgICovXG4gIG1hcExheWVycz86IE1hcFRpbGVMYXllcltdO1xuICAvKipcbiAgICogQWxsb3dzIHRvIHNldCBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIG9uIHRoZSBtYXBzLlxuICAgKi9cbiAgbWFwQ29uZmlnPzogTWFwRGVmYXVsdENvbmZpZztcbiAgLyoqXG4gICAqIFRoZSBVUkwgdXNlZCB0byBsb29rdXAgZ2VvIGNvb3JkaW5hdGVzIGZvciBhIHVzZXIgcHJvdmlkZWQgYWRkcmVzcyB2aWEgW25vbWluYXRpbSBBUEldKGh0dHBzOi8vbm9taW5hdGltLm9yZy9yZWxlYXNlLWRvY3MvZGV2ZWxvcC9hcGkvU2VhcmNoLykuXG4gICAqIENhbiBiZSBzZXQgdG8gZW1wdHkgdG8gZGlzYWJsZSB0aGUgZmluZCBhZGRyZXNzIGZlYXR1cmUgb24gdGhlIGxvY2F0aW9uIHRhYi5cbiAgICogVXNlczogYGh0dHBzOi8vbm9taW5hdGltLm9wZW5zdHJlZXRtYXAub3JnL3NlYXJjaD9mb3JtYXQ9anNvbiZxPXtzZWFyY2hUZXJtfWAgaWYgbm90IHNldC5cbiAgICovXG4gIG1hcE5vbWluYXRpbVVybD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSByb290IGVsZW1lbnQuIEJ5IGRlZmF1bHQgYzh5LWJvb3RzdHJhcC5cbiAgICovXG4gIHJvb3RUYWdOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogSGlkZXMgcG9zc2liaWxpdHkgdG8gY3JlYXRlIHR5cGVkIGRhc2hib2FyZHMgZm9yIGFzc2V0cyAoYW5kIGdyb3VwcykuIElmIHRydWUsIHR5cGVkIGRhc2hib2FyZHMgY2FuIGJlIGNyZWF0ZWQgb25seSBmb3IgZGV2aWNlcy5cbiAgICogSXQgaXMgdHJ1ZSBieSBkZWZhdWx0LlxuICAgKi9cbiAgaGlkZVR5cGVEYXNoYm9hcmRGb3JBc3NldHM/OiBib29sZWFuO1xuICAvKipcbiAgICogQSBtYXRyaXggb2YgdmVyc2lvbnMgaW5kaWNhdGluZyB3aGljaCB2ZXJzaW9ucyBvZiB0aGUgYXBwbGljYXRpb24gKGtleSkgYXJlIGRlcGVuZGVudCBvbiB3aGljaCB2ZXJzaW9uIG9mIGEgY3VtdWxvY2l0eSBjb21wb25lbnQgKEFQSSB2ZXJzaW9uIGFuZCBXZWIgU0RLIHZlcnNpb24gb2YgdGhlIHNoZWxsIGFwcGxpY2F0aW9uIGN1cnJlbnRseSBzdXBwb3J0ZWQsIGluZGljYXRlZCBieSB0aGUgdmFsdWUpLlxuICAgKiBUaGUgdmVyc2lvbnMgb2YgdGhlIGRlcGVuZGVudCBjb21wb25lbnRzIGNhbiBiZSBpbmRpY2F0ZWQgYnkgYSBzZW12ZXIgcmFuZ2UuXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYGpzb25cbiAgICoge1xuICAgKiAgXCIxLjAuMFwiOiB7XG4gICAqICAgIFwic2RrXCI6IFwiPj0xMDE2LjAuMCA8MTAxNy4wLjBcIixcbiAgICogICAgXCJhcGlcIjogXCI+PTEwMTYuMC4wIDwxMDE3LjAuMFwiXG4gICAqICB9LFxuICAgKiAgXCIyLjAuMFwiOiB7XG4gICAqICAgIFwic2RrXCI6IFwifjEwMTcuMC4wXCIsXG4gICAqICAgIFwiYXBpXCI6IFwifjEwMTcuMC4wXCJcbiAgICogIH0sXG4gICAqICBcIjMuMC4wXCI6IHtcbiAgICogICAgXCJzZGtcIjogXCI+PTEwMTguMC4wXCIsXG4gICAqICAgIFwiYXBpXCI6IFwiPj0xMDE4LjAuMFwiXG4gICAqICB9LFxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgdmVyc2lvbmluZ01hdHJpeD86IFZlcnNpb25pbmdNYXRyaXg7XG4gIC8qKlxuICAgKiBJcyB1c2VkIGZvciBwbHVnaW5zIHRvIGluZGljYXRlIHRoZWlyIG93bmVyLiBDdW11bG9jaXR5IHBsdWdpbnMgYXJlIG1hcmtlZCB3aXRoIE9GRklDSUFMIGxhYmVsLlxuICAgKiBZb3UgY2FuIHVzZSB0aGUgc3BlY2lhbCBcIkFSQ0hJVkVEXCIgbGFiZWwgdG8gbWFyayB0aGVtIGFzIGFyY2hpdmVkLlxuICAgKi9cbiAgbGFiZWw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEZWZpbmVzIHRoZSB0eXBlIG9mIHJlZnJlc2ggbWVjaGFuaXNtIHVzZWQgZm9yIGFsYXJtcyBpbiB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIC0gJ3JlYWx0aW1lJzogVXRpbGl6ZXMgYSByZWFsdGltZSBtZWNoYW5pc20gZm9yIHVwZGF0aW5nIGFsYXJtcy5cbiAgICogLSAnaW50ZXJ2YWwnOiBVdGlsaXplcyBIVFRQIHBvbGxpbmcgYXQgcmVndWxhciBpbnRlcnZhbHMgdG8gcmVmcmVzaCB0aGUgYWxhcm1zLlxuICAgKlxuICAgKiBUaGlzIHNldHRpbmcgYWxsb3dzIHRvIHN3aXRjaCBiZXR3ZWVuIHJlYWx0aW1lIGFuZCBpbnRlcnZhbC1iYXNlZCByZWZyZXNoIG1ldGhvZHMuXG4gICAqL1xuICBhbGFybXNSZWZyZXNoVHlwZT86ICdpbnRlcnZhbCcgfCAncmVhbHRpbWUnO1xufVxuXG4vKipcbiAqIFRlbGxzIGhvdyBhIHBsdWdpbiBpcyBzY29wZWQuXG4gKi9cbmV4cG9ydCBlbnVtIFBsdWdpbnNFeHBvcnRTY29wZXMge1xuICAvKipcbiAgICogTGltaXQgdGhlIHBsdWdpbiB0byB0aGUgY3VycmVudCBhcHBsaWNhdGlvbi4gSXQgaXMgaW1wb3J0ZWQgYnkgZGVmYXVsdC5cbiAgICovXG4gIFNFTEYgPSAnc2VsZicsXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gYWRkIHRoZSBwbHVnaW4gdG8gYSBnbG9iYWwgc2NvcGUsIG1lYW5pbmcgaXQgaXMgaW1wb3J0ZWQgdG8gYWxsIGFwcGxpY2F0aW9ucyBhdCB0aGUgc2FtZSB0aW1lLlxuICAgKiBUaGlzIGlzIG5vdCB1c2VkIGF0IHRoZSBtb21lbnQgYnV0IHBsYW5uZWQgdG8gYmUgaW1wbGVtZW50ZWQgaW4gdGhlIG5ldyBicmFuZGluZyBlZGl0b3IuXG4gICAqL1xuICBHTE9CQUwgPSAnZ2xvYmFsJyxcbiAgLyoqXG4gICAqIExpbWl0IHRoZSBwbHVnaW4gdG8gdGhlIGN1cnJlbnQgYXBwbGljYXRpb24uIFRoZSBwbHVnaW4gaXMgbm90IGltcG9ydGVkIGJ5IGRlZmF1bHQuXG4gICAqL1xuICBTRUxGX09QVElPTkFMID0gJ3NlbGYtb3B0aW9uYWwnLFxuICAvKipcbiAgICogTGlrZSB1bmRlZmluZWQgdGhlIHBsdWdpbiBpcyBhdmFpbGFibGUgZm9yIGFueSBwcml2YXRlIGFwcGxpY2F0aW9uLlxuICAgKi9cbiAgREVGQVVMVCA9ICcnXG59XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
1
+ import { Component, ElementRef, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { ActivatedRoute, Router } from '@angular/router';
3
3
  import { CopyDashboardDisabledReason, NEW_DASHBOARD_ROUTER_STATE_PROP } from './dashboard.model';
4
4
  import { DynamicComponentService } from '../dynamic-component/dynamic-component.service';
@@ -48,13 +48,17 @@ export class WidgetsDashboardComponent {
48
48
  this.settings = { ...this.settings, ...settings };
49
49
  this.isLoading$.next(!!this.settings.isLoading);
50
50
  }
51
- constructor(dynamic, translateService, route, modal, widgetGlobalAutoRefresh, router) {
51
+ get nativeElement() {
52
+ return this.elementRef.nativeElement;
53
+ }
54
+ constructor(dynamic, translateService, route, modal, widgetGlobalAutoRefresh, router, elementRef) {
52
55
  this.dynamic = dynamic;
53
56
  this.translateService = translateService;
54
57
  this.route = route;
55
58
  this.modal = modal;
56
59
  this.widgetGlobalAutoRefresh = widgetGlobalAutoRefresh;
57
60
  this.router = router;
61
+ this.elementRef = elementRef;
58
62
  /**
59
63
  * Indicates if device info in config should be overridden with values from context property.
60
64
  */
@@ -254,7 +258,7 @@ export class WidgetsDashboardComponent {
254
258
  });
255
259
  return widgets;
256
260
  }
257
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetsDashboardComponent, deps: [{ token: i1.DynamicComponentService }, { token: i2.TranslateService }, { token: i3.ActivatedRoute }, { token: i4.ModalService }, { token: i5.WidgetGlobalAutoRefreshService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component }); }
261
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetsDashboardComponent, deps: [{ token: i1.DynamicComponentService }, { token: i2.TranslateService }, { token: i3.ActivatedRoute }, { token: i4.ModalService }, { token: i5.WidgetGlobalAutoRefreshService }, { token: i3.Router }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
258
262
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: WidgetsDashboardComponent, selector: "c8y-widgets-dashboard", inputs: { widgets: "widgets", context: "context", contextDashboard: "contextDashboard", _settings: ["settings", "_settings"], isCopyDisabled: "isCopyDisabled", breadcrumb: "breadcrumb", editModeButtons: "editModeButtons" }, outputs: { onAddWidget: "onAddWidget", onEditWidget: "onEditWidget", onDeleteWidget: "onDeleteWidget", onChangeDashboard: "onChangeDashboard", onResize: "onResize", onEditDashboard: "onEditDashboard", onCopyDashboard: "onCopyDashboard", onDeleteDashboard: "onDeleteDashboard", onChangeStart: "onChangeStart", onChangeEnd: "onChangeEnd", onSaveDashboard: "onSaveDashboard", onCancelDashboard: "onCancelDashboard", revertChange: "revertChange" }, host: { styleAttribute: "\n display: block;\n ", classAttribute: "dashboard c8y-grid-dashboard" }, providers: [WidgetsDashboardEventService], usesOnChanges: true, ngImport: i0, template: "<c8y-title *ngIf=\"!!settings.title\">\n {{ settings.title | translate }}\n</c8y-title>\n\n<c8y-breadcrumb *ngIf=\"!!breadcrumb\">\n <c8y-breadcrumb-item\n [icon]=\"breadcrumb.icon\"\n [label]=\"breadcrumb.label\"\n [path]=\"breadcrumb.path\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n [priority]=\"ACTION_BAR_EDIT_WIDGETS_PRIORITY\"\n *ngIf=\"!(editMode$ | async)\"\n>\n <button\n class=\"btn btn-link animated fadeIn hidden-xs\"\n title=\"{{ 'Edit widgets' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isDisabled\"\n (click)=\"enableEditMode()\"\n data-cy=\"c8y-widget-dashboard--edit-widgets\"\n >\n <i c8yIcon=\"send-backward\"></i>\n <span class=\"m-l-4\">{{ 'Edit widgets' | translate }}</span>\n </button>\n <button\n class=\"btn btn-link visible-xs m-l-0\"\n tooltip=\"{{ 'Not available on mobile phone' | translate }}\"\n type=\"button\"\n [disabled]=\"true\"\n >\n <i c8yIcon=\"send-backward\"></i>\n <span class=\"m-l-4\">{{ 'Edit widgets' | translate }}</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n *ngIf=\"editMode$ | async\"\n>\n <button\n class=\"btn btn-link animated fadeIn\"\n title=\"{{ 'Add widget' | translate }}\"\n type=\"button\"\n (click)=\"onAddWidget.emit()\"\n data-cy=\"widget-dashboard--Add-widget\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add widget' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"d-flex a-i-center gap-8\"\n *ngIf=\"editMode$ | async\"\n>\n <div class=\"input-group input-group-sm animated fadeIn\">\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default btn-sm btn-icon\"\n [attr.aria-label]=\"'Undo' | translate\"\n [tooltip]=\"\n editModeButtons.undoButtonDisabled\n ? ''\n : (undoMessage\n | translate: { changeToUndo: editModeButtons.changeToUndoName | translate })\n \"\n container=\"body\"\n (click)=\"revertChange.emit('undo')\"\n [disabled]=\"editModeButtons.undoButtonDisabled\"\n >\n <i [c8yIcon]=\"'undo'\"></i>\n </button>\n </div>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default btn-sm btn-icon\"\n [attr.aria-label]=\"'Redo' | translate\"\n [tooltip]=\"\n editModeButtons.redoButtonDisabled\n ? ''\n : (redoMessage\n | translate: { changeToRedo: editModeButtons.changeToRedoName | translate })\n \"\n container=\"body\"\n (click)=\"revertChange.emit('redo')\"\n [disabled]=\"editModeButtons.redoButtonDisabled\"\n >\n <i [c8yIcon]=\"'redo'\"></i>\n </button>\n </div>\n <span></span>\n </div>\n <div class=\"btn-group animated fadeIn\">\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"cancelDashboardSave()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary btn-sm m-l-8\"\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n [disabled]=\"editModeButtons.undoButtonDisabled\"\n (click)=\"saveDashboard()\"\n data-cy=\"c8y-widgets-dashboard--save\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"onEditDashboard.observers.length\"\n>\n <button\n class=\"btn btn-link hidden-xs m-l-0\"\n title=\"{{ 'Dashboard settings' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isDisabled || (editMode$ | async)\"\n (click)=\"onEditDashboard.emit()\"\n data-cy=\"c8y-widgets-dashboard--edit-dashboard\"\n >\n <i c8yIcon=\"sorting-slider\"></i>\n <span class=\"visible-xs-inline hidden-sm visible-md-inline visible-lg-inline\">\n {{ 'Dashboard settings' | translate }}\n </span>\n </button>\n <button\n class=\"btn btn-link visible-xs m-l-0\"\n tooltip=\"{{ 'Not available on mobile phone' | translate }}\"\n type=\"button\"\n [disabled]=\"true\"\n >\n <i c8yIcon=\"sorting-slider\"></i>\n <span class=\"visible-xs-inline hidden-sm visible-md-inline visible-lg-inline\">\n {{ 'Dashboard settings' | translate }}\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"settings.allowFullscreen\"\n [priority]=\"-5000\"\n itemClass=\"pull-right\"\n>\n <button\n class=\"btn btn-link\"\n [attr.aria-label]=\"'Full screen' | translate\"\n tooltip=\"{{ 'Full screen' | translate }}\"\n placement=\"left\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"toggleFullscreen()\"\n data-cy=\"widgets-dashboard--Full-screen\"\n >\n <i [c8yIcon]=\"(inFullScreen$ | async) ? 'compress' : 'expand'\"></i>\n <span class=\"visible-xs-inline hidden-sm visible-md-inline visibile-lg-inline\">\n {{ 'Full screen' | translate }}\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'more'\"\n [priority]=\"-2000\"\n *ngIf=\"settings.canCopy\"\n>\n <div\n [ngStyle]=\"{\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center'\n }\"\n >\n <button\n class=\"hidden-xs\"\n title=\"{{\n (isCopyDisabled === true || !isCopyDisabled?.state ? 'Disabled' : copyDashboardLabel)\n | translate\n }}\"\n type=\"button\"\n [ngClass]=\"{ 'btn btn-link': !settings.canDelete }\"\n data-cy=\"widgets-dashboard--copy-dashboard\"\n (click)=\"onCopyDashboard.emit()\"\n [disabled]=\"isCopyDisabled === true || !isCopyDisabled?.state || (editMode$ | async)\"\n >\n <i c8yIcon=\"clone\"></i>\n <span>{{ copyDashboardLabel | translate }}</span>\n </button>\n <button\n class=\"btn-help btn-help--sm m-r-16 hidden-xs\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"copyDisabledPopoverMsg | translate\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"!isCopyDisabled?.state && copyDisabledPopoverMsg\"\n data-cy=\"widgets-dashboard--info-copy-dashboard\"\n (click)=\"$event.stopPropagation()\"\n ></button>\n </div>\n <button\n class=\"visible-xs m-l-0\"\n tooltip=\"{{ 'Not available on mobile phone' | translate }}\"\n type=\"button\"\n [ngClass]=\"{ 'btn btn-link': !settings.canDelete }\"\n [disabled]=\"true\"\n >\n <i c8yIcon=\"clone\"></i>\n <span>{{ copyDashboardLabel | translate }}</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'more'\"\n [priority]=\"-3000\"\n *ngIf=\"settings.canDelete && onDeleteDashboard.observers.length\"\n>\n <button\n class=\"hidden-xs\"\n title=\"{{ 'Delete dashboard' | translate }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--delete-dashboard\"\n [ngClass]=\"{ 'btn btn-link': !settings.canCopy }\"\n (click)=\"onDeleteDashboard.emit()\"\n [disabled]=\"settings.isDisabled || (editMode$ | async)\"\n >\n <i c8yIcon=\"delete\"></i>\n <span translate>Delete dashboard</span>\n </button>\n <button\n class=\"visible-xs m-l-0\"\n tooltip=\"{{ 'Not available on mobile phone' | translate }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--delete-dashboard-mobile\"\n [ngClass]=\"{ 'btn btn-link': !settings.canCopy }\"\n [disabled]=\"true\"\n >\n <i c8yIcon=\"delete\"></i>\n <span translate>Delete dashboard</span>\n </button>\n</c8y-action-bar-item>\n\n<ng-template #loadingIndicator>\n <c8y-loading\n class=\"col-xs-12 text-center\"\n *ngIf=\"isLoadingWidgets$ | async\"\n ></c8y-loading>\n</ng-template>\n\n<ng-container *ngIf=\"!(isLoadingWidgets$ | async); else loadingIndicator\">\n <ng-container *ngIf=\"resolvedWidgets$ | async as widgetsToDisplay\">\n <!-- empty state -->\n <c8y-ui-empty-state\n [icon]=\"'c8y-device'\"\n [title]=\"'No widgets to display.' | translate\"\n *ngIf=\"widgetsToDisplay?.length === 0\"\n >\n <div *ngIf=\"onAddWidget.observers.length\">\n <p\n translate\n *ngIf=\"editMode$ | async\"\n >\n Add widgets to this dashboard.\n </p>\n <p\n translate\n *ngIf=\"!(editMode$ | async)\"\n >\n Click \"Edit widgets\" to unlock\n </p>\n <div>\n <button\n class=\"btn btn-primary m-t-16\"\n title=\"{{ 'Add widget' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isDisabled || !(editMode$ | async)\"\n (click)=\"onAddWidget.emit()\"\n data-cy=\"c8y-widgets-dashboard--add-widget\"\n translate\n >\n Add widget\n </button>\n </div>\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/working-with-dashboards\">user documentation</a>\n .\n </small>\n </p>\n </div>\n </c8y-ui-empty-state>\n\n <c8y-dashboard\n [columns]=\"settings.columns\"\n (dashboardChange)=\"onChangeDashboard.emit($event)\"\n #dashboard\n >\n <c8y-dashboard-child\n [class]=\"widget.classes\"\n *ngFor=\"let widget of widgetsToDisplay\"\n [x]=\"widget._x\"\n [y]=\"widget._y\"\n [width]=\"widget._width || settings.defaultWidth\"\n [height]=\"widget._height || settings.defaultHeight\"\n [margin]=\"settings.widgetMargin\"\n [data]=\"widget\"\n [useIntersection]=\"true\"\n [editMode]=\"editMode$ | async\"\n (changeStart)=\"onChangeStart.emit({ widget: widget, source: child, dashboard: dashboard })\"\n (changeEnd)=\"onChangeEnd.emit({ widget: widget, source: child, dashboard: dashboard })\"\n (toggleFullscreen)=\"toggleFullscreenOnWidget(child)\"\n [canToggleFullscreen]=\"!(inFullScreen$ | async) || widgetInFullscreenMode\"\n #child\n >\n <c8y-dashboard-child-title>\n <span\n data-cy=\"c8y-dashboard-list--device-widget\"\n *ngIf=\"settings.translateWidgetTitle\"\n >\n {{ widget.title | translate }}\n </span>\n <span *ngIf=\"!settings.translateWidgetTitle\">\n {{ widget.title }}\n </span>\n </c8y-dashboard-child-title>\n <c8y-dashboard-child-action *ngIf=\"onEditWidget.observers.length\">\n <button\n title=\"{{ 'Edit widget' | translate }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--Edit-widget\"\n (click)=\"onEditWidget.emit({ widget: widget, source: child, dashboard: dashboard })\"\n >\n <i c8yIcon=\"pencil\"></i>\n <span translate>Edit</span>\n </button>\n </c8y-dashboard-child-action>\n <c8y-dashboard-child-action *ngIf=\"onDeleteWidget.observers.length\">\n <button\n title=\"{{ 'Remove widget' | translate }}\"\n type=\"button\"\n data-cy=\"c8y-widgets-dashboard--remove-widget\"\n (click)=\"onDeleteWidget.emit({ widget: widget, source: child, dashboard: dashboard })\"\n >\n <i c8yIcon=\"delete\"></i>\n <span translate>Remove</span>\n </button>\n </c8y-dashboard-child-action>\n\n <c8y-widget-time-context\n *ngIf=\"\n (widget.config?.displaySettings?.globalTimeContext ||\n widget.config?.displaySettings?.globalRealtimeContext) &&\n (widget.config.widgetInstanceGlobalTimeContext ||\n widget.config.widgetInstanceGlobalAutoRefreshContext)\n \"\n (dateContextChange)=\"updateWidgetConfig($event, widget)\"\n [canDecouple]=\"widget.config.canDecoupleGlobalTimeContext\"\n [displaySettings]=\"widget.config.displaySettings\"\n [hidden]=\"editMode$ | async\"\n ></c8y-widget-time-context>\n\n <c8y-widget-auto-refresh-context\n *ngIf=\"\n widget?.config?.widgetInstanceGlobalAutoRefreshContext &&\n widget.config?.displaySettings.globalAutoRefreshContext\n \"\n [editMode$]=\"editMode$\"\n ></c8y-widget-auto-refresh-context>\n\n <c8y-dynamic-component\n [componentId]=\"widget.componentId || widget.name\"\n [config]=\"\n widget.templateUrl || widget.widgetComponent\n ? { child: widget, dashboard: contextDashboard, context: context }\n : widget.config\n \"\n *ngIf=\"child.intersected\"\n (updateWidgetClasses)=\"updateWidgetClasses(widget, $event)\"\n ></c8y-dynamic-component>\n </c8y-dashboard-child>\n </c8y-dashboard>\n </ng-container>\n</ng-container>\n", dependencies: [{ kind: "component", type: i6.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i7.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i8.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i10.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "component", type: i11.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i12.DynamicComponentComponent, selector: "c8y-dynamic-component", inputs: ["componentId", "config", "mode", "notFoundError", "executeResolvers"], outputs: ["updateWidgetClasses"] }, { kind: "directive", type: i13.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "component", type: i14.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i15.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i16.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "component", type: i17.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i18.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i19.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: i20.WidgetTimeContextComponent, selector: "c8y-widget-time-context", inputs: ["canDecouple", "displaySettings", "hidden"], outputs: ["dateContextChange"] }, { kind: "component", type: i21.DashboardChildActionComponent, selector: "c8y-dashboard-child-action" }, { kind: "component", type: i22.DashboardChildComponent, selector: "c8y-dashboard-child", inputs: ["x", "y", "width", "height", "data", "margin", "useIntersection", "isFrozen", "canToggleFullscreen", "editMode", "class"], outputs: ["changeStart", "changeEnd", "toggleFullscreen"] }, { kind: "component", type: i23.DashboardComponent, selector: "c8y-dashboard", inputs: ["columns", "gap", "rows"], outputs: ["dashboardChange"] }, { kind: "component", type: i24.DashboardChildTitleComponent, selector: "c8y-dashboard-child-title" }, { kind: "component", type: i25.WidgetAutoRefreshContextComponent, selector: "c8y-widget-auto-refresh-context", inputs: ["editMode$"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
259
263
  }
260
264
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetsDashboardComponent, decorators: [{
@@ -265,7 +269,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
265
269
  `,
266
270
  class: 'dashboard c8y-grid-dashboard'
267
271
  }, providers: [WidgetsDashboardEventService], template: "<c8y-title *ngIf=\"!!settings.title\">\n {{ settings.title | translate }}\n</c8y-title>\n\n<c8y-breadcrumb *ngIf=\"!!breadcrumb\">\n <c8y-breadcrumb-item\n [icon]=\"breadcrumb.icon\"\n [label]=\"breadcrumb.label\"\n [path]=\"breadcrumb.path\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n [priority]=\"ACTION_BAR_EDIT_WIDGETS_PRIORITY\"\n *ngIf=\"!(editMode$ | async)\"\n>\n <button\n class=\"btn btn-link animated fadeIn hidden-xs\"\n title=\"{{ 'Edit widgets' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isDisabled\"\n (click)=\"enableEditMode()\"\n data-cy=\"c8y-widget-dashboard--edit-widgets\"\n >\n <i c8yIcon=\"send-backward\"></i>\n <span class=\"m-l-4\">{{ 'Edit widgets' | translate }}</span>\n </button>\n <button\n class=\"btn btn-link visible-xs m-l-0\"\n tooltip=\"{{ 'Not available on mobile phone' | translate }}\"\n type=\"button\"\n [disabled]=\"true\"\n >\n <i c8yIcon=\"send-backward\"></i>\n <span class=\"m-l-4\">{{ 'Edit widgets' | translate }}</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n *ngIf=\"editMode$ | async\"\n>\n <button\n class=\"btn btn-link animated fadeIn\"\n title=\"{{ 'Add widget' | translate }}\"\n type=\"button\"\n (click)=\"onAddWidget.emit()\"\n data-cy=\"widget-dashboard--Add-widget\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add widget' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"d-flex a-i-center gap-8\"\n *ngIf=\"editMode$ | async\"\n>\n <div class=\"input-group input-group-sm animated fadeIn\">\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default btn-sm btn-icon\"\n [attr.aria-label]=\"'Undo' | translate\"\n [tooltip]=\"\n editModeButtons.undoButtonDisabled\n ? ''\n : (undoMessage\n | translate: { changeToUndo: editModeButtons.changeToUndoName | translate })\n \"\n container=\"body\"\n (click)=\"revertChange.emit('undo')\"\n [disabled]=\"editModeButtons.undoButtonDisabled\"\n >\n <i [c8yIcon]=\"'undo'\"></i>\n </button>\n </div>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default btn-sm btn-icon\"\n [attr.aria-label]=\"'Redo' | translate\"\n [tooltip]=\"\n editModeButtons.redoButtonDisabled\n ? ''\n : (redoMessage\n | translate: { changeToRedo: editModeButtons.changeToRedoName | translate })\n \"\n container=\"body\"\n (click)=\"revertChange.emit('redo')\"\n [disabled]=\"editModeButtons.redoButtonDisabled\"\n >\n <i [c8yIcon]=\"'redo'\"></i>\n </button>\n </div>\n <span></span>\n </div>\n <div class=\"btn-group animated fadeIn\">\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"cancelDashboardSave()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary btn-sm m-l-8\"\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n [disabled]=\"editModeButtons.undoButtonDisabled\"\n (click)=\"saveDashboard()\"\n data-cy=\"c8y-widgets-dashboard--save\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"onEditDashboard.observers.length\"\n>\n <button\n class=\"btn btn-link hidden-xs m-l-0\"\n title=\"{{ 'Dashboard settings' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isDisabled || (editMode$ | async)\"\n (click)=\"onEditDashboard.emit()\"\n data-cy=\"c8y-widgets-dashboard--edit-dashboard\"\n >\n <i c8yIcon=\"sorting-slider\"></i>\n <span class=\"visible-xs-inline hidden-sm visible-md-inline visible-lg-inline\">\n {{ 'Dashboard settings' | translate }}\n </span>\n </button>\n <button\n class=\"btn btn-link visible-xs m-l-0\"\n tooltip=\"{{ 'Not available on mobile phone' | translate }}\"\n type=\"button\"\n [disabled]=\"true\"\n >\n <i c8yIcon=\"sorting-slider\"></i>\n <span class=\"visible-xs-inline hidden-sm visible-md-inline visible-lg-inline\">\n {{ 'Dashboard settings' | translate }}\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"settings.allowFullscreen\"\n [priority]=\"-5000\"\n itemClass=\"pull-right\"\n>\n <button\n class=\"btn btn-link\"\n [attr.aria-label]=\"'Full screen' | translate\"\n tooltip=\"{{ 'Full screen' | translate }}\"\n placement=\"left\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"toggleFullscreen()\"\n data-cy=\"widgets-dashboard--Full-screen\"\n >\n <i [c8yIcon]=\"(inFullScreen$ | async) ? 'compress' : 'expand'\"></i>\n <span class=\"visible-xs-inline hidden-sm visible-md-inline visibile-lg-inline\">\n {{ 'Full screen' | translate }}\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'more'\"\n [priority]=\"-2000\"\n *ngIf=\"settings.canCopy\"\n>\n <div\n [ngStyle]=\"{\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center'\n }\"\n >\n <button\n class=\"hidden-xs\"\n title=\"{{\n (isCopyDisabled === true || !isCopyDisabled?.state ? 'Disabled' : copyDashboardLabel)\n | translate\n }}\"\n type=\"button\"\n [ngClass]=\"{ 'btn btn-link': !settings.canDelete }\"\n data-cy=\"widgets-dashboard--copy-dashboard\"\n (click)=\"onCopyDashboard.emit()\"\n [disabled]=\"isCopyDisabled === true || !isCopyDisabled?.state || (editMode$ | async)\"\n >\n <i c8yIcon=\"clone\"></i>\n <span>{{ copyDashboardLabel | translate }}</span>\n </button>\n <button\n class=\"btn-help btn-help--sm m-r-16 hidden-xs\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"copyDisabledPopoverMsg | translate\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"!isCopyDisabled?.state && copyDisabledPopoverMsg\"\n data-cy=\"widgets-dashboard--info-copy-dashboard\"\n (click)=\"$event.stopPropagation()\"\n ></button>\n </div>\n <button\n class=\"visible-xs m-l-0\"\n tooltip=\"{{ 'Not available on mobile phone' | translate }}\"\n type=\"button\"\n [ngClass]=\"{ 'btn btn-link': !settings.canDelete }\"\n [disabled]=\"true\"\n >\n <i c8yIcon=\"clone\"></i>\n <span>{{ copyDashboardLabel | translate }}</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'more'\"\n [priority]=\"-3000\"\n *ngIf=\"settings.canDelete && onDeleteDashboard.observers.length\"\n>\n <button\n class=\"hidden-xs\"\n title=\"{{ 'Delete dashboard' | translate }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--delete-dashboard\"\n [ngClass]=\"{ 'btn btn-link': !settings.canCopy }\"\n (click)=\"onDeleteDashboard.emit()\"\n [disabled]=\"settings.isDisabled || (editMode$ | async)\"\n >\n <i c8yIcon=\"delete\"></i>\n <span translate>Delete dashboard</span>\n </button>\n <button\n class=\"visible-xs m-l-0\"\n tooltip=\"{{ 'Not available on mobile phone' | translate }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--delete-dashboard-mobile\"\n [ngClass]=\"{ 'btn btn-link': !settings.canCopy }\"\n [disabled]=\"true\"\n >\n <i c8yIcon=\"delete\"></i>\n <span translate>Delete dashboard</span>\n </button>\n</c8y-action-bar-item>\n\n<ng-template #loadingIndicator>\n <c8y-loading\n class=\"col-xs-12 text-center\"\n *ngIf=\"isLoadingWidgets$ | async\"\n ></c8y-loading>\n</ng-template>\n\n<ng-container *ngIf=\"!(isLoadingWidgets$ | async); else loadingIndicator\">\n <ng-container *ngIf=\"resolvedWidgets$ | async as widgetsToDisplay\">\n <!-- empty state -->\n <c8y-ui-empty-state\n [icon]=\"'c8y-device'\"\n [title]=\"'No widgets to display.' | translate\"\n *ngIf=\"widgetsToDisplay?.length === 0\"\n >\n <div *ngIf=\"onAddWidget.observers.length\">\n <p\n translate\n *ngIf=\"editMode$ | async\"\n >\n Add widgets to this dashboard.\n </p>\n <p\n translate\n *ngIf=\"!(editMode$ | async)\"\n >\n Click \"Edit widgets\" to unlock\n </p>\n <div>\n <button\n class=\"btn btn-primary m-t-16\"\n title=\"{{ 'Add widget' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isDisabled || !(editMode$ | async)\"\n (click)=\"onAddWidget.emit()\"\n data-cy=\"c8y-widgets-dashboard--add-widget\"\n translate\n >\n Add widget\n </button>\n </div>\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/working-with-dashboards\">user documentation</a>\n .\n </small>\n </p>\n </div>\n </c8y-ui-empty-state>\n\n <c8y-dashboard\n [columns]=\"settings.columns\"\n (dashboardChange)=\"onChangeDashboard.emit($event)\"\n #dashboard\n >\n <c8y-dashboard-child\n [class]=\"widget.classes\"\n *ngFor=\"let widget of widgetsToDisplay\"\n [x]=\"widget._x\"\n [y]=\"widget._y\"\n [width]=\"widget._width || settings.defaultWidth\"\n [height]=\"widget._height || settings.defaultHeight\"\n [margin]=\"settings.widgetMargin\"\n [data]=\"widget\"\n [useIntersection]=\"true\"\n [editMode]=\"editMode$ | async\"\n (changeStart)=\"onChangeStart.emit({ widget: widget, source: child, dashboard: dashboard })\"\n (changeEnd)=\"onChangeEnd.emit({ widget: widget, source: child, dashboard: dashboard })\"\n (toggleFullscreen)=\"toggleFullscreenOnWidget(child)\"\n [canToggleFullscreen]=\"!(inFullScreen$ | async) || widgetInFullscreenMode\"\n #child\n >\n <c8y-dashboard-child-title>\n <span\n data-cy=\"c8y-dashboard-list--device-widget\"\n *ngIf=\"settings.translateWidgetTitle\"\n >\n {{ widget.title | translate }}\n </span>\n <span *ngIf=\"!settings.translateWidgetTitle\">\n {{ widget.title }}\n </span>\n </c8y-dashboard-child-title>\n <c8y-dashboard-child-action *ngIf=\"onEditWidget.observers.length\">\n <button\n title=\"{{ 'Edit widget' | translate }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--Edit-widget\"\n (click)=\"onEditWidget.emit({ widget: widget, source: child, dashboard: dashboard })\"\n >\n <i c8yIcon=\"pencil\"></i>\n <span translate>Edit</span>\n </button>\n </c8y-dashboard-child-action>\n <c8y-dashboard-child-action *ngIf=\"onDeleteWidget.observers.length\">\n <button\n title=\"{{ 'Remove widget' | translate }}\"\n type=\"button\"\n data-cy=\"c8y-widgets-dashboard--remove-widget\"\n (click)=\"onDeleteWidget.emit({ widget: widget, source: child, dashboard: dashboard })\"\n >\n <i c8yIcon=\"delete\"></i>\n <span translate>Remove</span>\n </button>\n </c8y-dashboard-child-action>\n\n <c8y-widget-time-context\n *ngIf=\"\n (widget.config?.displaySettings?.globalTimeContext ||\n widget.config?.displaySettings?.globalRealtimeContext) &&\n (widget.config.widgetInstanceGlobalTimeContext ||\n widget.config.widgetInstanceGlobalAutoRefreshContext)\n \"\n (dateContextChange)=\"updateWidgetConfig($event, widget)\"\n [canDecouple]=\"widget.config.canDecoupleGlobalTimeContext\"\n [displaySettings]=\"widget.config.displaySettings\"\n [hidden]=\"editMode$ | async\"\n ></c8y-widget-time-context>\n\n <c8y-widget-auto-refresh-context\n *ngIf=\"\n widget?.config?.widgetInstanceGlobalAutoRefreshContext &&\n widget.config?.displaySettings.globalAutoRefreshContext\n \"\n [editMode$]=\"editMode$\"\n ></c8y-widget-auto-refresh-context>\n\n <c8y-dynamic-component\n [componentId]=\"widget.componentId || widget.name\"\n [config]=\"\n widget.templateUrl || widget.widgetComponent\n ? { child: widget, dashboard: contextDashboard, context: context }\n : widget.config\n \"\n *ngIf=\"child.intersected\"\n (updateWidgetClasses)=\"updateWidgetClasses(widget, $event)\"\n ></c8y-dynamic-component>\n </c8y-dashboard-child>\n </c8y-dashboard>\n </ng-container>\n</ng-container>\n" }]
268
- }], ctorParameters: () => [{ type: i1.DynamicComponentService }, { type: i2.TranslateService }, { type: i3.ActivatedRoute }, { type: i4.ModalService }, { type: i5.WidgetGlobalAutoRefreshService }, { type: i3.Router }], propDecorators: { widgets: [{
272
+ }], ctorParameters: () => [{ type: i1.DynamicComponentService }, { type: i2.TranslateService }, { type: i3.ActivatedRoute }, { type: i4.ModalService }, { type: i5.WidgetGlobalAutoRefreshService }, { type: i3.Router }, { type: i0.ElementRef }], propDecorators: { widgets: [{
269
273
  type: Input
270
274
  }], context: [{
271
275
  type: Input
@@ -307,4 +311,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
307
311
  }], revertChange: [{
308
312
  type: Output
309
313
  }] } });
310
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0cy1kYXNoYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9kYXNoYm9hcmQvd2lkZ2V0cy1kYXNoYm9hcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vY29yZS9kYXNoYm9hcmQvd2lkZ2V0cy1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUd6RCxPQUFPLEVBTUwsMkJBQTJCLEVBQzNCLCtCQUErQixFQUNoQyxNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDcEYsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7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LE1BQU07Z0JBSVAsYUFBYTtzQkFEWixNQUFNO2dCQUlQLFdBQVc7c0JBRFYsTUFBTTtnQkFJUCxlQUFlO3NCQURkLE1BQU07Z0JBSVAsaUJBQWlCO3NCQURoQixNQUFNO2dCQUlQLFlBQVk7c0JBRFgsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJyZWFkY3J1bWJJdGVtIH0gZnJvbSAnLi4vYnJlYWRjcnVtYi9icmVhZGNydW1iLm1vZGVsJztcbmltcG9ydCB7IERhc2hib2FyZENvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBEYXNoYm9hcmRDaGFuZ2UsXG4gIERhc2hib2FyZFNldHRpbmdzLFxuICBXaWRnZXQsXG4gIFdpZGdldENoYW5nZSxcbiAgRGFzaGJvYXJkQ29weVBlcm1pc3Npb24sXG4gIENvcHlEYXNoYm9hcmREaXNhYmxlZFJlYXNvbixcbiAgTkVXX0RBU0hCT0FSRF9ST1VURVJfU1RBVEVfUFJPUFxufSBmcm9tICcuL2Rhc2hib2FyZC5tb2RlbCc7XG5pbXBvcnQgeyBEeW5hbWljQ29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uL2R5bmFtaWMtY29tcG9uZW50L2R5bmFtaWMtY29tcG9uZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmcm9tRXZlbnQsIG1lcmdlLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHNldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBXaWRnZXRzRGFzaGJvYXJkRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi93aWRnZXRzLWRhc2hib2FyZC1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IERhc2hib2FyZENoaWxkQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmQtY2hpbGQuY29tcG9uZW50JztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICcuLi9pMThuJztcbmltcG9ydCB7IFJldmVydENoYW5nZVR5cGUgfSBmcm9tICcuL3dpZGdldC1jaGFuZ2UtZXZlbnQubW9kZWwnO1xuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vbW9kYWwnO1xuaW1wb3J0IHsgU3RhdHVzIH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IFdpZGdldEdsb2JhbEF1dG9SZWZyZXNoU2VydmljZSB9IGZyb20gJy4vd2lkZ2V0LWF1dG8tcmVmcmVzaC1jb250ZXh0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXdpZGdldHMtZGFzaGJvYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldHMtZGFzaGJvYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDoge1xuICAgIHN0eWxlOiBgXG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICBgLFxuICAgIGNsYXNzOiAnZGFzaGJvYXJkIGM4eS1ncmlkLWRhc2hib2FyZCdcbiAgfSxcbiAgcHJvdmlkZXJzOiBbV2lkZ2V0c0Rhc2hib2FyZEV2ZW50U2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0c0Rhc2hib2FyZENvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHNldCB3aWRnZXRzKHZhbHVlOiBXaWRnZXRbXSkge1xuICAgIHRoaXMuX3dpZGdldHMubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBnZXQgd2lkZ2V0cygpOiBXaWRnZXRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpZGdldHMudmFsdWU7XG4gIH1cblxuICBASW5wdXQoKVxuICBjb250ZXh0OiBhbnk7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiBkZXZpY2UgaW5mbyBpbiBjb25maWcgc2hvdWxkIGJlIG92ZXJyaWRkZW4gd2l0aCB2YWx1ZXMgZnJvbSBjb250ZXh0IHByb3BlcnR5LlxuICAgKi9cbiAgQElucHV0KClcbiAgY29udGV4dERhc2hib2FyZDogYW55ID0geyB1cGRhdGVUYXJnZXQ6IHRydWUgfTtcblxuICBASW5wdXQoJ3NldHRpbmdzJylcbiAgc2V0IF9zZXR0aW5ncyhzZXR0aW5nczogUGFydGlhbDxEYXNoYm9hcmRTZXR0aW5ncz4pIHtcbiAgICB0aGlzLnNldHRpbmdzID0geyAuLi50aGlzLnNldHRpbmdzLCAuLi5zZXR0aW5ncyB9O1xuICAgIHRoaXMuaXNMb2FkaW5nJC5uZXh0KCEhdGhpcy5zZXR0aW5ncy5pc0xvYWRpbmcpO1xuICB9XG5cbiAgQElucHV0KCkgaXNDb3B5RGlzYWJsZWQ6IERhc2hib2FyZENvcHlQZXJtaXNzaW9uIHwgYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICBicmVhZGNydW1iOiBCcmVhZGNydW1iSXRlbTtcblxuICBASW5wdXQoKVxuICBlZGl0TW9kZUJ1dHRvbnM6IHtcbiAgICB1bmRvQnV0dG9uRGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgY2hhbmdlVG9VbmRvTmFtZTogc3RyaW5nO1xuICAgIHJlZG9CdXR0b25EaXNhYmxlZDogYm9vbGVhbjtcbiAgICBjaGFuZ2VUb1JlZG9OYW1lOiBzdHJpbmc7XG4gIH07XG5cbiAgc2V0dGluZ3M6IERhc2hib2FyZFNldHRpbmdzID0ge1xuICAgIGlzRnJvemVuOiBmYWxzZSxcbiAgICBpc0Rpc2FibGVkOiBmYWxzZSxcbiAgICB3aWRnZXRNYXJnaW46IDEyLFxuICAgIHRyYW5zbGF0ZVdpZGdldFRpdGxlOiBmYWxzZSxcbiAgICBkZWZhdWx0SGVpZ2h0OiA0LFxuICAgIGRlZmF1bHRXaWR0aDogNCxcbiAgICBhbGxvd0Z1bGxzY3JlZW46IGZhbHNlLFxuICAgIGNhbkNvcHk6IHRydWUsXG4gICAgY2FuRGVsZXRlOiB0cnVlLFxuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgY29sdW1uczogMTJcbiAgfTtcblxuICBAT3V0cHV0KClcbiAgb25BZGRXaWRnZXQ6IEV2ZW50RW1pdHRlcjxEYXNoYm9hcmRDb21wb25lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkVkaXRXaWRnZXQ6IEV2ZW50RW1pdHRlcjxXaWRnZXRDaGFuZ2U+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkRlbGV0ZVdpZGdldDogRXZlbnRFbWl0dGVyPFdpZGdldENoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2hhbmdlRGFzaGJvYXJkOiBFdmVudEVtaXR0ZXI8RGFzaGJvYXJkQ2hhbmdlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgb25SZXNpemU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgb25FZGl0RGFzaGJvYXJkOiBFdmVudEVtaXR0ZXI8RGFzaGJvYXJkQ29tcG9uZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgb25Db3B5RGFzaGJvYXJkOiBFdmVudEVtaXR0ZXI8RGFzaGJvYXJkQ29tcG9uZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgb25EZWxldGVEYXNoYm9hcmQ6IEV2ZW50RW1pdHRlcjxEYXNoYm9hcmRDb21wb25lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkNoYW5nZVN0YXJ0OiBFdmVudEVtaXR0ZXI8V2lkZ2V0Q2hhbmdlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgb25DaGFuZ2VFbmQ6IEV2ZW50RW1pdHRlcjxXaWRnZXRDaGFuZ2U+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBvblNhdmVEYXNoYm9hcmQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkNhbmNlbERhc2hib2FyZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIHJldmVydENoYW5nZTogRXZlbnRFbWl0dGVyPFJldmVydENoYW5nZVR5cGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHJlc29sdmVkV2lkZ2V0cyQ6IE9ic2VydmFibGU8V2lkZ2V0W10+O1xuXG4gIGlzTG9hZGluZ1dpZGdldHMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIGNvcHlEaXNhYmxlZFBvcG92ZXJNc2c6IHN0cmluZztcblxuICB3aWRnZXRJbkZ1bGxzY3JlZW5Nb2RlID0gZmFsc2U7XG5cbiAgaW5GdWxsU2NyZWVuJCA9IGZyb21FdmVudChkb2N1bWVudCwgJ2Z1bGxzY3JlZW5jaGFuZ2UnKS5waXBlKFxuICAgIG1hcCgoKSA9PiB0aGlzLmZ1bGxTY3JlZW4oKSksXG4gICAgc3RhcnRXaXRoKHRoaXMuZnVsbFNjcmVlbigpKVxuICApO1xuICBlZGl0TW9kZSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHJlYWRvbmx5IGNvcHlEYXNoYm9hcmRMYWJlbCA9IGdldHRleHQoJ0NvcHkgZGFzaGJvYXJkJyk7XG4gIHJlYWRvbmx5IHVuZG9NZXNzYWdlID0gZ2V0dGV4dCgnVW5kbzogXCJ7eyBjaGFuZ2VUb1VuZG8gfX1cIicpO1xuICByZWFkb25seSByZWRvTWVzc2FnZSA9IGdldHRleHQoJ1JlZG86IFwie3sgY2hhbmdlVG9SZWRvIH19XCInKTtcbiAgcmVhZG9ubHkgQUNUSU9OX0JBUl9FRElUX1dJREdFVFNfUFJJT1JJVFkgPSAxMDtcblxuICBwcml2YXRlIF93aWRnZXRzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxXaWRnZXRbXT4oW10pO1xuICBwcml2YXRlIGlzTG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCEhdGhpcy5fc2V0dGluZ3M/LmlzTG9hZGluZyk7XG4gIHByaXZhdGUgaXNFeGVjdXRpbmdSZXNvbHZlcnMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZHluYW1pYzogRHluYW1pY0NvbXBvbmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgbW9kYWw6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHdpZGdldEdsb2JhbEF1dG9SZWZyZXNoOiBXaWRnZXRHbG9iYWxBdXRvUmVmcmVzaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHtcbiAgICBjb25zdCBuYXZpZ2F0aW9uID0gdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKTtcbiAgICBpZiAobmF2aWdhdGlvbj8uZXh0cmFzLnN0YXRlPy5bTkVXX0RBU0hCT0FSRF9ST1VURVJfU1RBVEVfUFJPUF0pIHtcbiAgICAgIHRoaXMuZW5hYmxlRWRpdE1vZGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc29sdmVkV2lkZ2V0cyQgPSB0aGlzLl93aWRnZXRzLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAod2lkZ2V0cyA9PiB0aGlzLmV4ZWN1dGVSZXNvbHZlcnNPZldpZGdldHMod2lkZ2V0cykpLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuICAgIHRoaXMuaXNFeGVjdXRpbmdSZXNvbHZlcnMkID0gbWVyZ2UoXG4gICAgICB0aGlzLl93aWRnZXRzLnBpcGUobWFwKCgpID0+IHRydWUpKSxcbiAgICAgIHRoaXMucmVzb2x2ZWRXaWRnZXRzJC5waXBlKG1hcCgoKSA9PiBmYWxzZSkpXG4gICAgKTtcbiAgICB0aGlzLmlzTG9hZGluZ1dpZGdldHMkID0gY29tYmluZUxhdGVzdChbdGhpcy5pc0xvYWRpbmckLCB0aGlzLmlzRXhlY3V0aW5nUmVzb2x2ZXJzJF0pLnBpcGUoXG4gICAgICBtYXAobG9hZGluZ3MgPT4gbG9hZGluZ3Muc29tZShsb2FkaW5nID0+IGxvYWRpbmcpKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5pc0NvcHlEaXNhYmxlZCkge1xuICAgICAgdGhpcy5zZXRDb3B5RGlzYWJsZWRQb3BvdmVyTXNnKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY2FuRGVhY3RpdmF0ZShvbWl0Q29uZmlybSA9IGZhbHNlKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKCF0aGlzLmVkaXRNb2RlJC52YWx1ZSB8fCB0aGlzLmVkaXRNb2RlQnV0dG9ucy51bmRvQnV0dG9uRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob21pdENvbmZpcm0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY29uZmlybUNsb3NpbmcoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0b2dnbGVGdWxsc2NyZWVuKGhhc1dpZGdldCA9IGZhbHNlKSB7XG4gICAgY29uc3QgZWxlbSA9IGRvY3VtZW50LmJvZHkgYXMgYW55O1xuICAgIGNvbnN0IGRvYyA9IGRvY3VtZW50IGFzIGFueTtcbiAgICBpZiAoaGFzV2lkZ2V0KSB7XG4gICAgICBlbGVtLmNsYXNzTGlzdC5hZGQoJ3NpbmdsZVdpZGdldCcpO1xuICAgICAgdGhpcy53aWRnZXRJbkZ1bGxzY3JlZW5Nb2RlID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbS5jbGFzc0xpc3QucmVtb3ZlKCdzaW5nbGVXaWRnZXQnKTtcbiAgICAgIHRoaXMud2lkZ2V0SW5GdWxsc2NyZWVuTW9kZSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZnVsbFNjcmVlbigpKSB7XG4gICAgICBpZiAoZWxlbS5yZXF1ZXN0RnVsbHNjcmVlbikge1xuICAgICAgICBlbGVtLnJlcXVlc3RGdWxsc2NyZWVuKCk7XG4gICAgICB9IGVsc2UgaWYgKGVsZW0ubXNSZXF1ZXN0RnVsbHNjcmVlbikge1xuICAgICAgICBlbGVtLm1zUmVxdWVzdEZ1bGxzY3JlZW4oKTtcbiAgICAgIH0gZWxzZSBpZiAoZWxlbS5tb3pSZXF1ZXN0RnVsbFNjcmVlbikge1xuICAgICAgICBlbGVtLm1velJlcXVlc3RGdWxsU2NyZWVuKCk7XG4gICAgICB9IGVsc2UgaWYgKGVsZW0ud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4pIHtcbiAgICAgICAgZWxlbS53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigoRWxlbWVudCBhcyBhbnkpLkFMTE9XX0tFWUJPQVJEX0lOUFVUKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRvYy5leGl0RnVsbHNjcmVlbikge1xuICAgICAgZG9jLmV4aXRGdWxsc2NyZWVuKCk7XG4gICAgfSBlbHNlIGlmIChkb2MubXNFeGl0RnVsbHNjcmVlbikge1xuICAgICAgZG9jLm1zRXhpdEZ1bGxzY3JlZW4oKTtcbiAgICB9IGVsc2UgaWYgKGRvYy5tb3pDYW5jZWxGdWxsU2NyZWVuKSB7XG4gICAgICBkb2MubW96Q2FuY2VsRnVsbFNjcmVlbigpO1xuICAgIH0gZWxzZSBpZiAoZG9jLndlYmtpdEV4aXRGdWxsc2NyZWVuKSB7XG4gICAgICBkb2Mud2Via2l0RXhpdEZ1bGxzY3JlZW4oKTtcbiAgICB9XG4gIH1cblxuICBmdWxsU2NyZWVuKCkge1xuICAgIGNvbnN0IGRvYzogYW55ID0gZG9jdW1lbnQ7XG4gICAgcmV0dXJuICEhKFxuICAgICAgZG9jLmZ1bGxzY3JlZW5FbGVtZW50IHx8XG4gICAgICBkb2MubW96RnVsbFNjcmVlbkVsZW1lbnQgfHxcbiAgICAgIGRvYy53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCB8fFxuICAgICAgZG9jLm1zRnVsbHNjcmVlbkVsZW1lbnRcbiAgICApO1xuICB9XG5cbiAgdG9nZ2xlRnVsbHNjcmVlbk9uV2lkZ2V0KGNoaWxkOiBEYXNoYm9hcmRDaGlsZENvbXBvbmVudCkge1xuICAgIGNoaWxkLmZ1bGxzY3JlZW4gPSAhY2hpbGQuZnVsbHNjcmVlbjtcbiAgICBpZiAoY2hpbGQuZnVsbHNjcmVlbikge1xuICAgICAgY29uc3Qgb25GdWxsU2NyZWVuID0gKCkgPT4ge1xuICAgICAgICBjaGlsZC5mdWxsc2NyZWVuID0gISFkb2N1bWVudC5mdWxsc2NyZWVuRWxlbWVudDtcbiAgICAgICAgaWYgKCFjaGlsZC5mdWxsc2NyZWVuKSB7XG4gICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZnVsbHNjcmVlbmNoYW5nZScsIG9uRnVsbFNjcmVlbik7XG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdzaW5nbGVXaWRnZXQnKTtcbiAgICAgICAgICAvLyByZXF1aXJlZCBpbiBjYXNlIGZ1bGxzY3JlZW4gaXMgZXhpdGVkIGJ5IGUuZy4gcHJlc3NpbmcgRVNDXG4gICAgICAgICAgdGhpcy5vblJlc2l6ZS5uZXh0KCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdmdWxsc2NyZWVuY2hhbmdlJywgb25GdWxsU2NyZWVuKTtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVGdWxsc2NyZWVuKGNoaWxkLmZ1bGxzY3JlZW4pO1xuICAgIHRoaXMub25SZXNpemUubmV4dCgpO1xuICB9XG5cbiAgdXBkYXRlV2lkZ2V0Q2xhc3Nlcyh3aWRnZXQ6IFdpZGdldCwgY2xhc3NlczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4pIHtcbiAgICB3aWRnZXQuY2xhc3NlcyA9IHsgLi4ud2lkZ2V0LmNsYXNzZXMsIC4uLmNsYXNzZXMgfTtcbiAgfVxuXG4gIHVwZGF0ZVdpZGdldENvbmZpZyhkYXRhOiBhbnksIHdpZGdldDogV2lkZ2V0KSB7XG4gICAgd2lkZ2V0LmNvbmZpZyA9IHsgLi4ud2lkZ2V0LmNvbmZpZywgLi4uZGF0YSB9O1xuICB9XG5cbiAgYXN5bmMgY2FuY2VsRGFzaGJvYXJkU2F2ZSgpIHtcbiAgICBpZiAoYXdhaXQgdGhpcy5jYW5EZWFjdGl2YXRlKCkpIHtcbiAgICAgIHRoaXMub25DYW5jZWxEYXNoYm9hcmQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHNhdmVEYXNoYm9hcmQoKSB7XG4gICAgLy8gRHJvcGRvd24gdG9nZ2xlIChTZXR0aW5ncykgYnV0dG9uIHdhcyBkZWxldGVkIGltbWVkaWF0ZWx5IGFmdGVyIGVkaXRNb2RlIHNldCB0byBmYWxzZS5cbiAgICAvLyBJdCBsZWFkcyB0byBhbiBpc3N1ZSB3aXRoIHRoZSBhY3R1YWwgaGlkaW5nIGRyb3Bkb3duLCBzbyB3ZSBoYXZlIHRvIGFkZCBzb21lIGRlbGF5IGluIG9yZGVyIHRvOlxuICAgIC8vIDEuIG1ha2UgZHJvcGRvd24gY2xvc2UgZmlyc3RcbiAgICAvLyAyLiB0aGVuIHNldCBlZGl0TW9kZSB0byBmYWxzZSBhbmQgb25seSB0aGVuIHJlbW92ZSBidXR0b24gZnJvbSBET01cbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZWRpdE1vZGUkLm5leHQoZmFsc2UpKTtcbiAgICB0aGlzLm9uU2F2ZURhc2hib2FyZC5lbWl0KCk7XG4gICAgdGhpcy53aWRnZXRHbG9iYWxBdXRvUmVmcmVzaC5vbkRhc2hib2FyZFNhdmUkLm5leHQoKTtcbiAgfVxuXG4gIGVuYWJsZUVkaXRNb2RlKCkge1xuICAgIHRoaXMuZWRpdE1vZGUkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5jb250ZXh0RGFzaGJvYXJkLmhpc3RvcnlEZXNjcmlwdGlvbiA9IHt9O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb3B5RGlzYWJsZWRQb3BvdmVyTXNnKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5pc0NvcHlEaXNhYmxlZCA9PT0gJ2Jvb2xlYW4nIHx8IHRoaXMuaXNDb3B5RGlzYWJsZWQ/LnN0YXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNDb3B5RGlzYWJsZWQ/LnJlYXNvbiA9PT0gQ29weURhc2hib2FyZERpc2FibGVkUmVhc29uLlBFUk1JU1NJT05TKSB7XG4gICAgICB0aGlzLmNvcHlEaXNhYmxlZFBvcG92ZXJNc2cgPSBnZXR0ZXh0KFxuICAgICAgICAnVG8gY29weSB0aGlzIGRhc2hib2FyZCwgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IgdG8gcmVxdWVzdCB0aGUgbmVjZXNzYXJ5IHBlcm1pc3Npb25zLidcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzQ29weURpc2FibGVkPy5yZWFzb24gPT09IENvcHlEYXNoYm9hcmREaXNhYmxlZFJlYXNvbi5XUk9OR19SRUZFUkVOQ0UpIHtcbiAgICAgIGNvbnN0IHZpZXdDb250ZXh0ID0gdGhpcy5yb3V0ZS5wYXJlbnQuc25hcHNob3QuZGF0YT8uY29udGV4dDtcblxuICAgICAgaWYgKHZpZXdDb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IGN0eCA9IHZpZXdDb250ZXh0LnNwbGl0KCcvJykuc2hpZnQoKTtcbiAgICAgICAgY29uc3QgZGV2aWNlU3RyID0gZ2V0dGV4dChcbiAgICAgICAgICAnQ29weSBub3QgcG9zc2libGU6IFNvbWUgd2lkZ2V0cyByZWZlcmVuY2UgZGF0YSBmcm9tIGFub3RoZXIgZ3JvdXAgb3IgZGV2aWNlLiBUbyBjb3B5IHRoaXMgZGFzaGJvYXJkLCBtYWtlIHN1cmUgYWxsIHdpZGdldHMgdXNlIGRhdGEgZnJvbSB0aGUgY3VycmVudCBkZXZpY2Ugb25seS4nXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGdyb3VwU3RyID0gZ2V0dGV4dChcbiAgICAgICAgICAnQ29weSBub3QgcG9zc2libGU6IFNvbWUgd2lkZ2V0cyByZWZlcmVuY2UgZGF0YSBmcm9tIGFub3RoZXIgZ3JvdXAgb3IgZGV2aWNlLiBUbyBjb3B5IHRoaXMgZGFzaGJvYXJkLCBtYWtlIHN1cmUgYWxsIHdpZGdldHMgdXNlIGRhdGEgZnJvbSB0aGUgY3VycmVudCBncm91cCBvbmx5LidcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb3B5RGlzYWJsZWRQb3BvdmVyTXNnID0gY3R4ID09PSAnZ3JvdXAnID8gZ3JvdXBTdHIgOiBkZXZpY2VTdHI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb25maXJtQ2xvc2luZygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5tb2RhbC5jb25maXJtKFxuICAgICAgICBnZXR0ZXh0KCdFeGl0IGVkaXQgbW9kZScpLFxuICAgICAgICBnZXR0ZXh0KCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZXhpdCB0aGUgZWRpdCBtb2RlPyBBbGwgdW5zYXZlZCBjaGFuZ2VzIHdpbGwgYmUgbG9zdC4nKSxcbiAgICAgICAgU3RhdHVzLldBUk5JTkcsXG4gICAgICAgIHtcbiAgICAgICAgICBvazogZ2V0dGV4dCgnRXhpdCcpLFxuICAgICAgICAgIGNhbmNlbDogZ2V0dGV4dCgnQ2FuY2VsJylcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGV4ZWN1dGVSZXNvbHZlcnNPZldpZGdldHMod2lkZ2V0czogV2lkZ2V0W10pOiBQcm9taXNlPFdpZGdldFtdPiB7XG4gICAgaWYgKCF3aWRnZXRzKSB7XG4gICAgICByZXR1cm4gd2lkZ2V0cztcbiAgICB9XG5cbiAgICBjb25zdCB0dXBsZSA9IHdpZGdldHMubWFwKHdpZGdldCA9PiAoe1xuICAgICAgY29tcG9uZW50SWQ6IHdpZGdldC5jb21wb25lbnRJZCB8fCB3aWRnZXQubmFtZSxcbiAgICAgIGNvbmZpZzogd2lkZ2V0LmNvbmZpZ1xuICAgIH0pKTtcblxuICAgIGNvbnN0IHJlc29sdmVkUmVzdWx0cyA9IGF3YWl0IHRoaXMuZHluYW1pYy5leGVjdXRlUmVzb2x2ZXJzKHR1cGxlKTtcbiAgICB3aWRnZXRzLmZvckVhY2goKHdpZGdldCwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChyZXNvbHZlZFJlc3VsdHNbaW5kZXhdKSB7XG4gICAgICAgIGlmICghd2lkZ2V0LmNvbmZpZykge1xuICAgICAgICAgIHdpZGdldC5jb25maWcgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuZW50cmllcyhyZXNvbHZlZFJlc3VsdHNbaW5kZXhdKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+XG4gICAgICAgICAgc2V0KHdpZGdldC5jb25maWcsIGtleSwgdmFsdWUpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHdpZGdldHM7XG4gIH1cbn1cbiIsIjxjOHktdGl0bGUgKm5nSWY9XCIhIXNldHRpbmdzLnRpdGxlXCI+XG4gIHt7IHNldHRpbmdzLnRpdGxlIHwgdHJhbnNsYXRlIH19XG48L2M4eS10aXRsZT5cblxuPGM4eS1icmVhZGNydW1iICpuZ0lmPVwiISFicmVhZGNydW1iXCI+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiYnJlYWRjcnVtYi5pY29uXCJcbiAgICBbbGFiZWxdPVwiYnJlYWRjcnVtYi5sYWJlbFwiXG4gICAgW3BhdGhdPVwiYnJlYWRjcnVtYi5wYXRoXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbjwvYzh5LWJyZWFkY3J1bWI+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ2xlZnQnXCJcbiAgW3ByaW9yaXR5XT1cIkFDVElPTl9CQVJfRURJVF9XSURHRVRTX1BSSU9SSVRZXCJcbiAgKm5nSWY9XCIhKGVkaXRNb2RlJCB8IGFzeW5jKVwiXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGluayBhbmltYXRlZCBmYWRlSW4gaGlkZGVuLXhzXCJcbiAgICB0aXRsZT1cInt7ICdFZGl0IHdpZGdldHMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbZGlzYWJsZWRdPVwic2V0dGluZ3MuaXNEaXNhYmxlZFwiXG4gICAgKGNsaWNrKT1cImVuYWJsZUVkaXRNb2RlKClcIlxuICAgIGRhdGEtY3k9XCJjOHktd2lkZ2V0LWRhc2hib2FyZC0tZWRpdC13aWRnZXRzXCJcbiAgPlxuICAgIDxpIGM4eUljb249XCJzZW5kLWJhY2t3YXJkXCI+PC9pPlxuICAgIDxzcGFuIGNsYXNzPVwibS1sLTRcIj57eyAnRWRpdCB3aWRnZXRzJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgPC9idXR0b24+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGluayB2aXNpYmxlLXhzIG0tbC0wXCJcbiAgICB0b29sdGlwPVwie3sgJ05vdCBhdmFpbGFibGUgb24gbW9iaWxlIHBob25lJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW2Rpc2FibGVkXT1cInRydWVcIlxuICA+XG4gICAgPGkgYzh5SWNvbj1cInNlbmQtYmFja3dhcmRcIj48L2k+XG4gICAgPHNwYW4gY2xhc3M9XCJtLWwtNFwiPnt7ICdFZGl0IHdpZGdldHMnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgW3BsYWNlbWVudF09XCInbGVmdCdcIlxuICAqbmdJZj1cImVkaXRNb2RlJCB8IGFzeW5jXCJcbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGFuaW1hdGVkIGZhZGVJblwiXG4gICAgdGl0bGU9XCJ7eyAnQWRkIHdpZGdldCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIChjbGljayk9XCJvbkFkZFdpZGdldC5lbWl0KClcIlxuICAgIGRhdGEtY3k9XCJ3aWRnZXQtZGFzaGJvYXJkLS1BZGQtd2lkZ2V0XCJcbiAgPlxuICAgIDxpIGM4eUljb249XCJwbHVzLWNpcmNsZVwiPjwvaT5cbiAgICB7eyAnQWRkIHdpZGdldCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ2xlZnQnXCJcbiAgaXRlbUNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXIgZ2FwLThcIlxuICAqbmdJZj1cImVkaXRNb2RlJCB8IGFzeW5jXCJcbj5cbiAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLXNtIGFuaW1hdGVkIGZhZGVJblwiPlxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtIGJ0bi1pY29uXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInVW5kbycgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbdG9vbHRpcF09XCJcbiAgICAgICAgICBlZGl0TW9kZUJ1dHRvbnMudW5kb0J1dHRvbkRpc2FibGVkXG4gICAgICAgICAgICA/ICcnXG4gICAgICAgICAgICA6ICh1bmRvTWVzc2FnZVxuICAgICAgICAgICAgICB8IHRyYW5zbGF0ZTogeyBjaGFuZ2VUb1VuZG86IGVkaXRNb2RlQnV0dG9ucy5jaGFuZ2VUb1VuZG9OYW1lIHwgdHJhbnNsYXRlIH0pXG4gICAgICAgIFwiXG4gICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAoY2xpY2spPVwicmV2ZXJ0Q2hhbmdlLmVtaXQoJ3VuZG8nKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJlZGl0TW9kZUJ1dHRvbnMudW5kb0J1dHRvbkRpc2FibGVkXCJcbiAgICAgID5cbiAgICAgICAgPGkgW2M4eUljb25dPVwiJ3VuZG8nXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0blwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc20gYnRuLWljb25cIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZWRvJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFt0b29sdGlwXT1cIlxuICAgICAgICAgIGVkaXRNb2RlQnV0dG9ucy5yZWRvQnV0dG9uRGlzYWJsZWRcbiAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgIDogKHJlZG9NZXNzYWdlXG4gICAgICAgICAgICAgIHwgdHJhbnNsYXRlOiB7IGNoYW5nZVRvUmVkbzogZWRpdE1vZGVCdXR0b25zLmNoYW5nZVRvUmVkb05hbWUgfCB0cmFuc2xhdGUgfSlcbiAgICAgICAgXCJcbiAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgIChjbGljayk9XCJyZXZlcnRDaGFuZ2UuZW1pdCgncmVkbycpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImVkaXRNb2RlQnV0dG9ucy5yZWRvQnV0dG9uRGlzYWJsZWRcIlxuICAgICAgPlxuICAgICAgICA8aSBbYzh5SWNvbl09XCIncmVkbydcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8c3Bhbj48L3NwYW4+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGFuaW1hdGVkIGZhZGVJblwiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbVwiXG4gICAgICB0aXRsZT1cInt7ICdDYW5jZWwnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKGNsaWNrKT1cImNhbmNlbERhc2hib2FyZFNhdmUoKVwiXG4gICAgPlxuICAgICAge3sgJ0NhbmNlbCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gbS1sLThcIlxuICAgICAgdGl0bGU9XCJ7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbZGlzYWJsZWRdPVwiZWRpdE1vZGVCdXR0b25zLnVuZG9CdXR0b25EaXNhYmxlZFwiXG4gICAgICAoY2xpY2spPVwic2F2ZURhc2hib2FyZCgpXCJcbiAgICAgIGRhdGEtY3k9XCJjOHktd2lkZ2V0cy1kYXNoYm9hcmQtLXNhdmVcIlxuICAgID5cbiAgICAgIHt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgW3BsYWNlbWVudF09XCIncmlnaHQnXCJcbiAgKm5nSWY9XCJvbkVkaXREYXNoYm9hcmQub2JzZXJ2ZXJzLmxlbmd0aFwiXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGluayBoaWRkZW4teHMgbS1sLTBcIlxuICAgIHRpdGxlPVwie3sgJ0Rhc2hib2FyZCBzZXR0aW5ncycgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFtkaXNhYmxlZF09XCJzZXR0aW5ncy5pc0Rpc2FibGVkIHx8IChlZGl0TW9kZSQgfCBhc3luYylcIlxuICAgIChjbGljayk9XCJvbkVkaXREYXNoYm9hcmQuZW1pdCgpXCJcbiAgICBkYXRhLWN5PVwiYzh5LXdpZGdldHMtZGFzaGJvYXJkLS1lZGl0LWRhc2hib2FyZFwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwic29ydGluZy1zbGlkZXJcIj48L2k+XG4gICAgPHNwYW4gY2xhc3M9XCJ2aXNpYmxlLXhzLWlubGluZSBoaWRkZW4tc20gdmlzaWJsZS1tZC1pbmxpbmUgdmlzaWJsZS1sZy1pbmxpbmVcIj5cbiAgICAgIHt7ICdEYXNoYm9hcmQgc2V0dGluZ3MnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHZpc2libGUteHMgbS1sLTBcIlxuICAgIHRvb2x0aXA9XCJ7eyAnTm90IGF2YWlsYWJsZSBvbiBtb2JpbGUgcGhvbmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwic29ydGluZy1zbGlkZXJcIj48L2k+XG4gICAgPHNwYW4gY2xhc3M9XCJ2aXNpYmxlLXhzLWlubGluZSBoaWRkZW4tc20gdmlzaWJsZS1tZC1pbmxpbmUgdmlzaWJsZS1sZy1pbmxpbmVcIj5cbiAgICAgIHt7ICdEYXNoYm9hcmQgc2V0dGluZ3MnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgW3BsYWNlbWVudF09XCIncmlnaHQnXCJcbiAgKm5nSWY9XCJzZXR0aW5ncy5hbGxvd0Z1bGxzY3JlZW5cIlxuICBbcHJpb3JpdHldPVwiLTUwMDBcIlxuICBpdGVtQ2xhc3M9XCJwdWxsLXJpZ2h0XCJcbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidGdWxsIHNjcmVlbicgfCB0cmFuc2xhdGVcIlxuICAgIHRvb2x0aXA9XCJ7eyAnRnVsbCBzY3JlZW4nIHwgdHJhbnNsYXRlIH19XCJcbiAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlRnVsbHNjcmVlbigpXCJcbiAgICBkYXRhLWN5PVwid2lkZ2V0cy1kYXNoYm9hcmQtLUZ1bGwtc2NyZWVuXCJcbiAgPlxuICAgIDxpIFtjOHlJY29uXT1cIihpbkZ1bGxTY3JlZW4kIHwgYXN5bmMpID8gJ2NvbXByZXNzJyA6ICdleHBhbmQnXCI+PC9pPlxuICAgIDxzcGFuIGNsYXNzPVwidmlzaWJsZS14cy1pbmxpbmUgaGlkZGVuLXNtIHZpc2libGUtbWQtaW5saW5lIHZpc2liaWxlLWxnLWlubGluZVwiPlxuICAgICAge3sgJ0Z1bGwgc2NyZWVuJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ21vcmUnXCJcbiAgW3ByaW9yaXR5XT1cIi0yMDAwXCJcbiAgKm5nSWY9XCJzZXR0aW5ncy5jYW5Db3B5XCJcbj5cbiAgPGRpdlxuICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnLFxuICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcidcbiAgICB9XCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiaGlkZGVuLXhzXCJcbiAgICAgIHRpdGxlPVwie3tcbiAgICAgICAgKGlzQ29weURpc2FibGVkID09PSB0cnVlIHx8ICFpc0NvcHlEaXNhYmxlZD8uc3RhdGUgPyAnRGlzYWJsZWQnIDogY29weURhc2hib2FyZExhYmVsKVxuICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICB9fVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2J0biBidG4tbGluayc6ICFzZXR0aW5ncy5jYW5EZWxldGUgfVwiXG4gICAgICBkYXRhLWN5PVwid2lkZ2V0cy1kYXNoYm9hcmQtLWNvcHktZGFzaGJvYXJkXCJcbiAgICAgIChjbGljayk9XCJvbkNvcHlEYXNoYm9hcmQuZW1pdCgpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJpc0NvcHlEaXNhYmxlZCA9PT0gdHJ1ZSB8fCAhaXNDb3B5RGlzYWJsZWQ/LnN0YXRlIHx8IChlZGl0TW9kZSQgfCBhc3luYylcIlxuICAgID5cbiAgICAgIDxpIGM4eUljb249XCJjbG9uZVwiPjwvaT5cbiAgICAgIDxzcGFuPnt7IGNvcHlEYXNoYm9hcmRMYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0bi1oZWxwIGJ0bi1oZWxwLS1zbSBtLXItMTYgaGlkZGVuLXhzXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtwb3BvdmVyXT1cImNvcHlEaXNhYmxlZFBvcG92ZXJNc2cgfCB0cmFuc2xhdGVcIlxuICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKm5nSWY9XCIhaXNDb3B5RGlzYWJsZWQ/LnN0YXRlICYmIGNvcHlEaXNhYmxlZFBvcG92ZXJNc2dcIlxuICAgICAgZGF0YS1jeT1cIndpZGdldHMtZGFzaGJvYXJkLS1pbmZvLWNvcHktZGFzaGJvYXJkXCJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgID48L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cInZpc2libGUteHMgbS1sLTBcIlxuICAgIHRvb2x0aXA9XCJ7eyAnTm90IGF2YWlsYWJsZSBvbiBtb2JpbGUgcGhvbmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbbmdDbGFzc109XCJ7ICdidG4gYnRuLWxpbmsnOiAhc2V0dGluZ3MuY2FuRGVsZXRlIH1cIlxuICAgIFtkaXNhYmxlZF09XCJ0cnVlXCJcbiAgPlxuICAgIDxpIGM4eUljb249XCJjbG9uZVwiPjwvaT5cbiAgICA8c3Bhbj57eyBjb3B5RGFzaGJvYXJkTGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbVxuICBbcGxhY2VtZW50XT1cIidtb3JlJ1wiXG4gIFtwcmlvcml0eV09XCItMzAwMFwiXG4gICpuZ0lmPVwic2V0dGluZ3MuY2FuRGVsZXRlICYmIG9uRGVsZXRlRGFzaGJvYXJkLm9ic2VydmVycy5sZW5ndGhcIlxuPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJoaWRkZW4teHNcIlxuICAgIHRpdGxlPVwie3sgJ0RlbGV0ZSBkYXNoYm9hcmQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBkYXRhLWN5PVwid2lkZ2V0cy1kYXNoYm9hcmQtLWRlbGV0ZS1kYXNoYm9hcmRcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ2J0biBidG4tbGluayc6ICFzZXR0aW5ncy5jYW5Db3B5IH1cIlxuICAgIChjbGljayk9XCJvbkRlbGV0ZURhc2hib2FyZC5lbWl0KClcIlxuICAgIFtkaXNhYmxlZF09XCJzZXR0aW5ncy5pc0Rpc2FibGVkIHx8IChlZGl0TW9kZSQgfCBhc3luYylcIlxuICA+XG4gICAgPGkgYzh5SWNvbj1cImRlbGV0ZVwiPjwvaT5cbiAgICA8c3BhbiB0cmFuc2xhdGU+RGVsZXRlIGRhc2hib2FyZDwvc3Bhbj5cbiAgPC9idXR0b24+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cInZpc2libGUteHMgbS1sLTBcIlxuICAgIHRvb2x0aXA9XCJ7eyAnTm90IGF2YWlsYWJsZSBvbiBtb2JpbGUgcGhvbmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBkYXRhLWN5PVwid2lkZ2V0cy1kYXNoYm9hcmQtLWRlbGV0ZS1kYXNoYm9hcmQtbW9iaWxlXCJcbiAgICBbbmdDbGFzc109XCJ7ICdidG4gYnRuLWxpbmsnOiAhc2V0dGluZ3MuY2FuQ29weSB9XCJcbiAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwiZGVsZXRlXCI+PC9pPlxuICAgIDxzcGFuIHRyYW5zbGF0ZT5EZWxldGUgZGFzaGJvYXJkPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nSW5kaWNhdG9yPlxuICA8Yzh5LWxvYWRpbmdcbiAgICBjbGFzcz1cImNvbC14cy0xMiB0ZXh0LWNlbnRlclwiXG4gICAgKm5nSWY9XCJpc0xvYWRpbmdXaWRnZXRzJCB8IGFzeW5jXCJcbiAgPjwvYzh5LWxvYWRpbmc+XG48L25nLXRlbXBsYXRlPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiIShpc0xvYWRpbmdXaWRnZXRzJCB8IGFzeW5jKTsgZWxzZSBsb2FkaW5nSW5kaWNhdG9yXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXNvbHZlZFdpZGdldHMkIHwgYXN5bmMgYXMgd2lkZ2V0c1RvRGlzcGxheVwiPlxuICAgIDwhLS0gZW1wdHkgc3RhdGUgLS0+XG4gICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgW2ljb25dPVwiJ2M4eS1kZXZpY2UnXCJcbiAgICAgIFt0aXRsZV09XCInTm8gd2lkZ2V0cyB0byBkaXNwbGF5LicgfCB0cmFuc2xhdGVcIlxuICAgICAgKm5nSWY9XCJ3aWRnZXRzVG9EaXNwbGF5Py5sZW5ndGggPT09IDBcIlxuICAgID5cbiAgICAgIDxkaXYgKm5nSWY9XCJvbkFkZFdpZGdldC5vYnNlcnZlcnMubGVuZ3RoXCI+XG4gICAgICAgIDxwXG4gICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgKm5nSWY9XCJlZGl0TW9kZSQgfCBhc3luY1wiXG4gICAgICAgID5cbiAgICAgICAgICBBZGQgd2lkZ2V0cyB0byB0aGlzIGRhc2hib2FyZC5cbiAgICAgICAgPC9wPlxuICAgICAgICA8cFxuICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICpuZ0lmPVwiIShlZGl0TW9kZSQgfCBhc3luYylcIlxuICAgICAgICA+XG4gICAgICAgICAgQ2xpY2sgXCJFZGl0IHdpZGdldHNcIiB0byB1bmxvY2tcbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG0tdC0xNlwiXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdBZGQgd2lkZ2V0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZXR0aW5ncy5pc0Rpc2FibGVkIHx8ICEoZWRpdE1vZGUkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkFkZFdpZGdldC5lbWl0KClcIlxuICAgICAgICAgICAgZGF0YS1jeT1cImM4eS13aWRnZXRzLWRhc2hib2FyZC0tYWRkLXdpZGdldFwiXG4gICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICBBZGQgd2lkZ2V0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cCBjOHktZ3VpZGUtZG9jcz5cbiAgICAgICAgICA8c21hbGxcbiAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgbmdOb25CaW5kYWJsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIEZpbmQgb3V0IG1vcmUgaW4gdGhlXG4gICAgICAgICAgICA8YSBjOHktZ3VpZGUtaHJlZj1cIi9kb2NzL2NvY2twaXQvd29ya2luZy13aXRoLWRhc2hib2FyZHNcIj51c2VyIGRvY3VtZW50YXRpb248L2E+XG4gICAgICAgICAgICAuXG4gICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9jOHktdWktZW1wdHktc3RhdGU+XG5cbiAgICA8Yzh5LWRhc2hib2FyZFxuICAgICAgW2NvbHVtbnNdPVwic2V0dGluZ3MuY29sdW1uc1wiXG4gICAgICAoZGFzaGJvYXJkQ2hhbmdlKT1cIm9uQ2hhbmdlRGFzaGJvYXJkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAjZGFzaGJvYXJkXG4gICAgPlxuICAgICAgPGM4eS1kYXNoYm9hcmQtY2hpbGRcbiAgICAgICAgW2NsYXNzXT1cIndpZGdldC5jbGFzc2VzXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IHdpZGdldCBvZiB3aWRnZXRzVG9EaXNwbGF5XCJcbiAgICAgICAgW3hdPVwid2lkZ2V0Ll94XCJcbiAgICAgICAgW3ldPVwid2lkZ2V0Ll95XCJcbiAgICAgICAgW3dpZHRoXT1cIndpZGdldC5fd2lkdGggfHwgc2V0dGluZ3MuZGVmYXVsdFdpZHRoXCJcbiAgICAgICAgW2hlaWdodF09XCJ3aWRnZXQuX2hlaWdodCB8fCBzZXR0aW5ncy5kZWZhdWx0SGVpZ2h0XCJcbiAgICAgICAgW21hcmdpbl09XCJzZXR0aW5ncy53aWRnZXRNYXJnaW5cIlxuICAgICAgICBbZGF0YV09XCJ3aWRnZXRcIlxuICAgICAgICBbdXNlSW50ZXJzZWN0aW9uXT1cInRydWVcIlxuICAgICAgICBbZWRpdE1vZGVdPVwiZWRpdE1vZGUkIHwgYXN5bmNcIlxuICAgICAgICAoY2hhbmdlU3RhcnQpPVwib25DaGFuZ2VTdGFydC5lbWl0KHsgd2lkZ2V0OiB3aWRnZXQsIHNvdXJjZTogY2hpbGQsIGRhc2hib2FyZDogZGFzaGJvYXJkIH0pXCJcbiAgICAgICAgKGNoYW5nZUVuZCk9XCJvbkNoYW5nZUVuZC5lbWl0KHsgd2lkZ2V0OiB3aWRnZXQsIHNvdXJjZTogY2hpbGQsIGRhc2hib2FyZDogZGFzaGJvYXJkIH0pXCJcbiAgICAgICAgKHRvZ2dsZUZ1bGxzY3JlZW4pPVwidG9nZ2xlRnVsbHNjcmVlbk9uV2lkZ2V0KGNoaWxkKVwiXG4gICAgICAgIFtjYW5Ub2dnbGVGdWxsc2NyZWVuXT1cIiEoaW5GdWxsU2NyZWVuJCB8IGFzeW5jKSB8fCB3aWRnZXRJbkZ1bGxzY3JlZW5Nb2RlXCJcbiAgICAgICAgI2NoaWxkXG4gICAgICA+XG4gICAgICAgIDxjOHktZGFzaGJvYXJkLWNoaWxkLXRpdGxlPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBkYXRhLWN5PVwiYzh5LWRhc2hib2FyZC1saXN0LS1kZXZpY2Utd2lkZ2V0XCJcbiAgICAgICAgICAgICpuZ0lmPVwic2V0dGluZ3MudHJhbnNsYXRlV2lkZ2V0VGl0bGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHdpZGdldC50aXRsZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFzZXR0aW5ncy50cmFuc2xhdGVXaWRnZXRUaXRsZVwiPlxuICAgICAgICAgICAge3sgd2lkZ2V0LnRpdGxlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2M4eS1kYXNoYm9hcmQtY2hpbGQtdGl0bGU+XG4gICAgICAgIDxjOHktZGFzaGJvYXJkLWNoaWxkLWFjdGlvbiAqbmdJZj1cIm9uRWRpdFdpZGdldC5vYnNlcnZlcnMubGVuZ3RoXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnRWRpdCB3aWRnZXQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgZGF0YS1jeT1cIndpZGdldHMtZGFzaGJvYXJkLS1FZGl0LXdpZGdldFwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25FZGl0V2lkZ2V0LmVtaXQoeyB3aWRnZXQ6IHdpZGdldCwgc291cmNlOiBjaGlsZCwgZGFzaGJvYXJkOiBkYXNoYm9hcmQgfSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGM4eUljb249XCJwZW5jaWxcIj48L2k+XG4gICAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+RWRpdDwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9jOHktZGFzaGJvYXJkLWNoaWxkLWFjdGlvbj5cbiAgICAgICAgPGM4eS1kYXNoYm9hcmQtY2hpbGQtYWN0aW9uICpuZ0lmPVwib25EZWxldGVXaWRnZXQub2JzZXJ2ZXJzLmxlbmd0aFwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ1JlbW92ZSB3aWRnZXQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgZGF0YS1jeT1cImM4eS13aWRnZXRzLWRhc2hib2FyZC0tcmVtb3ZlLXdpZGdldFwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGVXaWRnZXQuZW1pdCh7IHdpZGdldDogd2lkZ2V0LCBzb3VyY2U6IGNoaWxkLCBkYXNoYm9hcmQ6IGRhc2hib2FyZCB9KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgYzh5SWNvbj1cImRlbGV0ZVwiPjwvaT5cbiAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5SZW1vdmU8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvYzh5LWRhc2hib2FyZC1jaGlsZC1hY3Rpb24+XG5cbiAgICAgICAgPGM4eS13aWRnZXQtdGltZS1jb250ZXh0XG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICh3aWRnZXQuY29uZmlnPy5kaXNwbGF5U2V0dGluZ3M/Lmdsb2JhbFRpbWVDb250ZXh0IHx8XG4gICAgICAgICAgICAgIHdpZGdldC5jb25maWc/LmRpc3BsYXlTZXR0aW5ncz8uZ2xvYmFsUmVhbHRpbWVDb250ZXh0KSAmJlxuICAgICAgICAgICAgKHdpZGdldC5jb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxUaW1lQ29udGV4dCB8fFxuICAgICAgICAgICAgICB3aWRnZXQuY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsQXV0b1JlZnJlc2hDb250ZXh0KVxuICAgICAgICAgIFwiXG4gICAgICAgICAgKGRhdGVDb250ZXh0Q2hhbmdlKT1cInVwZGF0ZVdpZGdldENvbmZpZygkZXZlbnQsIHdpZGdldClcIlxuICAgICAgICAgIFtjYW5EZWNvdXBsZV09XCJ3aWRnZXQuY29uZmlnLmNhbkRlY291cGxlR2xvYmFsVGltZUNvbnRleHRcIlxuICAgICAgICAgIFtkaXNwbGF5U2V0dGluZ3NdPVwid2lkZ2V0LmNvbmZpZy5kaXNwbGF5U2V0dGluZ3NcIlxuICAgICAgICAgIFtoaWRkZW5dPVwiZWRpdE1vZGUkIHwgYXN5bmNcIlxuICAgICAgICA+PC9jOHktd2lkZ2V0LXRpbWUtY29udGV4dD5cblxuICAgICAgICA8Yzh5LXdpZGdldC1hdXRvLXJlZnJlc2gtY29udGV4dFxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICB3aWRnZXQ/LmNvbmZpZz8ud2lkZ2V0SW5zdGFuY2VHbG9iYWxBdXRvUmVmcmVzaENvbnRleHQgJiZcbiAgICAgICAgICAgIHdpZGdldC5jb25maWc/LmRpc3BsYXlTZXR0aW5ncy5nbG9iYWxBdXRvUmVmcmVzaENvbnRleHRcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtlZGl0TW9kZSRdPVwiZWRpdE1vZGUkXCJcbiAgICAgICAgPjwvYzh5LXdpZGdldC1hdXRvLXJlZnJlc2gtY29udGV4dD5cblxuICAgICAgICA8Yzh5LWR5bmFtaWMtY29tcG9uZW50XG4gICAgICAgICAgW2NvbXBvbmVudElkXT1cIndpZGdldC5jb21wb25lbnRJZCB8fCB3aWRnZXQubmFtZVwiXG4gICAgICAgICAgW2NvbmZpZ109XCJcbiAgICAgICAgICAgIHdpZGdldC50ZW1wbGF0ZVVybCB8fCB3aWRnZXQud2lkZ2V0Q29tcG9uZW50XG4gICAgICAgICAgICAgID8geyBjaGlsZDogd2lkZ2V0LCBkYXNoYm9hcmQ6IGNvbnRleHREYXNoYm9hcmQsIGNvbnRleHQ6IGNvbnRleHQgfVxuICAgICAgICAgICAgICA6IHdpZGdldC5jb25maWdcbiAgICAgICAgICBcIlxuICAgICAgICAgICpuZ0lmPVwiY2hpbGQuaW50ZXJzZWN0ZWRcIlxuICAgICAgICAgICh1cGRhdGVXaWRnZXRDbGFzc2VzKT1cInVwZGF0ZVdpZGdldENsYXNzZXMod2lkZ2V0LCAkZXZlbnQpXCJcbiAgICAgICAgPjwvYzh5LWR5bmFtaWMtY29tcG9uZW50PlxuICAgICAgPC9jOHktZGFzaGJvYXJkLWNoaWxkPlxuICAgIDwvYzh5LWRhc2hib2FyZD5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
314
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0cy1kYXNoYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9kYXNoYm9hcmQvd2lkZ2V0cy1kYXNoYm9hcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vY29yZS9kYXNoYm9hcmQvd2lkZ2V0cy1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHekQsT0FBTyxFQU1MLDJCQUEyQixFQUMzQiwrQkFBK0IsRUFDaEMsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFbEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25DLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLCtCQUEr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QU07Z0JBSVAsaUJBQWlCO3NCQURoQixNQUFNO2dCQUlQLFFBQVE7c0JBRFAsTUFBTTtnQkFJUCxlQUFlO3NCQURkLE1BQU07Z0JBSVAsZUFBZTtzQkFEZCxNQUFNO2dCQUlQLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFJUCxhQUFhO3NCQURaLE1BQU07Z0JBSVAsV0FBVztzQkFEVixNQUFNO2dCQUlQLGVBQWU7c0JBRGQsTUFBTTtnQkFJUCxpQkFBaUI7c0JBRGhCLE1BQU07Z0JBSVAsWUFBWTtzQkFEWCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQnJlYWRjcnVtYkl0ZW0gfSBmcm9tICcuLi9icmVhZGNydW1iL2JyZWFkY3J1bWIubW9kZWwnO1xuaW1wb3J0IHsgRGFzaGJvYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmQuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIERhc2hib2FyZENoYW5nZSxcbiAgRGFzaGJvYXJkU2V0dGluZ3MsXG4gIFdpZGdldCxcbiAgV2lkZ2V0Q2hhbmdlLFxuICBEYXNoYm9hcmRDb3B5UGVybWlzc2lvbixcbiAgQ29weURhc2hib2FyZERpc2FibGVkUmVhc29uLFxuICBORVdfREFTSEJPQVJEX1JPVVRFUl9TVEFURV9QUk9QXG59IGZyb20gJy4vZGFzaGJvYXJkLm1vZGVsJztcbmltcG9ydCB7IER5bmFtaWNDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vZHluYW1pYy1jb21wb25lbnQvZHluYW1pYy1jb21wb25lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgc2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFdpZGdldHNEYXNoYm9hcmRFdmVudFNlcnZpY2UgfSBmcm9tICcuL3dpZGdldHMtZGFzaGJvYXJkLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGFzaGJvYXJkQ2hpbGRDb21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZC1jaGlsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uL2kxOG4nO1xuaW1wb3J0IHsgUmV2ZXJ0Q2hhbmdlVHlwZSB9IGZyb20gJy4vd2lkZ2V0LWNoYW5nZS1ldmVudC5tb2RlbCc7XG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi9tb2RhbCc7XG5pbXBvcnQgeyBTdGF0dXMgfSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgV2lkZ2V0R2xvYmFsQXV0b1JlZnJlc2hTZXJ2aWNlIH0gZnJvbSAnLi93aWRnZXQtYXV0by1yZWZyZXNoLWNvbnRleHQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktd2lkZ2V0cy1kYXNoYm9hcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vd2lkZ2V0cy1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7XG4gICAgc3R5bGU6IGBcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGAsXG4gICAgY2xhc3M6ICdkYXNoYm9hcmQgYzh5LWdyaWQtZGFzaGJvYXJkJ1xuICB9LFxuICBwcm92aWRlcnM6IFtXaWRnZXRzRGFzaGJvYXJkRXZlbnRTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBXaWRnZXRzRGFzaGJvYXJkQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgc2V0IHdpZGdldHModmFsdWU6IFdpZGdldFtdKSB7XG4gICAgdGhpcy5fd2lkZ2V0cy5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIGdldCB3aWRnZXRzKCk6IFdpZGdldFtdIHtcbiAgICByZXR1cm4gdGhpcy5fd2lkZ2V0cy52YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGNvbnRleHQ6IGFueTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIGRldmljZSBpbmZvIGluIGNvbmZpZyBzaG91bGQgYmUgb3ZlcnJpZGRlbiB3aXRoIHZhbHVlcyBmcm9tIGNvbnRleHQgcHJvcGVydHkuXG4gICAqL1xuICBASW5wdXQoKVxuICBjb250ZXh0RGFzaGJvYXJkOiBhbnkgPSB7IHVwZGF0ZVRhcmdldDogdHJ1ZSB9O1xuXG4gIEBJbnB1dCgnc2V0dGluZ3MnKVxuICBzZXQgX3NldHRpbmdzKHNldHRpbmdzOiBQYXJ0aWFsPERhc2hib2FyZFNldHRpbmdzPikge1xuICAgIHRoaXMuc2V0dGluZ3MgPSB7IC4uLnRoaXMuc2V0dGluZ3MsIC4uLnNldHRpbmdzIH07XG4gICAgdGhpcy5pc0xvYWRpbmckLm5leHQoISF0aGlzLnNldHRpbmdzLmlzTG9hZGluZyk7XG4gIH1cblxuICBASW5wdXQoKSBpc0NvcHlEaXNhYmxlZDogRGFzaGJvYXJkQ29weVBlcm1pc3Npb24gfCBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIGJyZWFkY3J1bWI6IEJyZWFkY3J1bWJJdGVtO1xuXG4gIEBJbnB1dCgpXG4gIGVkaXRNb2RlQnV0dG9uczoge1xuICAgIHVuZG9CdXR0b25EaXNhYmxlZDogYm9vbGVhbjtcbiAgICBjaGFuZ2VUb1VuZG9OYW1lOiBzdHJpbmc7XG4gICAgcmVkb0J1dHRvbkRpc2FibGVkOiBib29sZWFuO1xuICAgIGNoYW5nZVRvUmVkb05hbWU6IHN0cmluZztcbiAgfTtcblxuICBzZXR0aW5nczogRGFzaGJvYXJkU2V0dGluZ3MgPSB7XG4gICAgaXNGcm96ZW46IGZhbHNlLFxuICAgIGlzRGlzYWJsZWQ6IGZhbHNlLFxuICAgIHdpZGdldE1hcmdpbjogMTIsXG4gICAgdHJhbnNsYXRlV2lkZ2V0VGl0bGU6IGZhbHNlLFxuICAgIGRlZmF1bHRIZWlnaHQ6IDQsXG4gICAgZGVmYXVsdFdpZHRoOiA0LFxuICAgIGFsbG93RnVsbHNjcmVlbjogZmFsc2UsXG4gICAgY2FuQ29weTogdHJ1ZSxcbiAgICBjYW5EZWxldGU6IHRydWUsXG4gICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICBjb2x1bW5zOiAxMlxuICB9O1xuXG4gIEBPdXRwdXQoKVxuICBvbkFkZFdpZGdldDogRXZlbnRFbWl0dGVyPERhc2hib2FyZENvbXBvbmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uRWRpdFdpZGdldDogRXZlbnRFbWl0dGVyPFdpZGdldENoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uRGVsZXRlV2lkZ2V0OiBFdmVudEVtaXR0ZXI8V2lkZ2V0Q2hhbmdlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgb25DaGFuZ2VEYXNoYm9hcmQ6IEV2ZW50RW1pdHRlcjxEYXNoYm9hcmRDaGFuZ2U+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBvblJlc2l6ZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkVkaXREYXNoYm9hcmQ6IEV2ZW50RW1pdHRlcjxEYXNoYm9hcmRDb21wb25lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkNvcHlEYXNoYm9hcmQ6IEV2ZW50RW1pdHRlcjxEYXNoYm9hcmRDb21wb25lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkRlbGV0ZURhc2hib2FyZDogRXZlbnRFbWl0dGVyPERhc2hib2FyZENvbXBvbmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2hhbmdlU3RhcnQ6IEV2ZW50RW1pdHRlcjxXaWRnZXRDaGFuZ2U+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkNoYW5nZUVuZDogRXZlbnRFbWl0dGVyPFdpZGdldENoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uU2F2ZURhc2hib2FyZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2FuY2VsRGFzaGJvYXJkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgcmV2ZXJ0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8UmV2ZXJ0Q2hhbmdlVHlwZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcmVzb2x2ZWRXaWRnZXRzJDogT2JzZXJ2YWJsZTxXaWRnZXRbXT47XG5cbiAgaXNMb2FkaW5nV2lkZ2V0cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgY29weURpc2FibGVkUG9wb3Zlck1zZzogc3RyaW5nO1xuXG4gIHdpZGdldEluRnVsbHNjcmVlbk1vZGUgPSBmYWxzZTtcblxuICBpbkZ1bGxTY3JlZW4kID0gZnJvbUV2ZW50KGRvY3VtZW50LCAnZnVsbHNjcmVlbmNoYW5nZScpLnBpcGUoXG4gICAgbWFwKCgpID0+IHRoaXMuZnVsbFNjcmVlbigpKSxcbiAgICBzdGFydFdpdGgodGhpcy5mdWxsU2NyZWVuKCkpXG4gICk7XG4gIGVkaXRNb2RlJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgZ2V0IG5hdGl2ZUVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcmVhZG9ubHkgY29weURhc2hib2FyZExhYmVsID0gZ2V0dGV4dCgnQ29weSBkYXNoYm9hcmQnKTtcbiAgcmVhZG9ubHkgdW5kb01lc3NhZ2UgPSBnZXR0ZXh0KCdVbmRvOiBcInt7IGNoYW5nZVRvVW5kbyB9fVwiJyk7XG4gIHJlYWRvbmx5IHJlZG9NZXNzYWdlID0gZ2V0dGV4dCgnUmVkbzogXCJ7eyBjaGFuZ2VUb1JlZG8gfX1cIicpO1xuICByZWFkb25seSBBQ1RJT05fQkFSX0VESVRfV0lER0VUU19QUklPUklUWSA9IDEwO1xuXG4gIHByaXZhdGUgX3dpZGdldHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFdpZGdldFtdPihbXSk7XG4gIHByaXZhdGUgaXNMb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoISF0aGlzLl9zZXR0aW5ncz8uaXNMb2FkaW5nKTtcbiAgcHJpdmF0ZSBpc0V4ZWN1dGluZ1Jlc29sdmVycyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkeW5hbWljOiBEeW5hbWljQ29tcG9uZW50U2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBtb2RhbDogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgd2lkZ2V0R2xvYmFsQXV0b1JlZnJlc2g6IFdpZGdldEdsb2JhbEF1dG9SZWZyZXNoU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICApIHtcbiAgICBjb25zdCBuYXZpZ2F0aW9uID0gdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKTtcbiAgICBpZiAobmF2aWdhdGlvbj8uZXh0cmFzLnN0YXRlPy5bTkVXX0RBU0hCT0FSRF9ST1VURVJfU1RBVEVfUFJPUF0pIHtcbiAgICAgIHRoaXMuZW5hYmxlRWRpdE1vZGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc29sdmVkV2lkZ2V0cyQgPSB0aGlzLl93aWRnZXRzLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAod2lkZ2V0cyA9PiB0aGlzLmV4ZWN1dGVSZXNvbHZlcnNPZldpZGdldHMod2lkZ2V0cykpLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuICAgIHRoaXMuaXNFeGVjdXRpbmdSZXNvbHZlcnMkID0gbWVyZ2UoXG4gICAgICB0aGlzLl93aWRnZXRzLnBpcGUobWFwKCgpID0+IHRydWUpKSxcbiAgICAgIHRoaXMucmVzb2x2ZWRXaWRnZXRzJC5waXBlKG1hcCgoKSA9PiBmYWxzZSkpXG4gICAgKTtcbiAgICB0aGlzLmlzTG9hZGluZ1dpZGdldHMkID0gY29tYmluZUxhdGVzdChbdGhpcy5pc0xvYWRpbmckLCB0aGlzLmlzRXhlY3V0aW5nUmVzb2x2ZXJzJF0pLnBpcGUoXG4gICAgICBtYXAobG9hZGluZ3MgPT4gbG9hZGluZ3Muc29tZShsb2FkaW5nID0+IGxvYWRpbmcpKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5pc0NvcHlEaXNhYmxlZCkge1xuICAgICAgdGhpcy5zZXRDb3B5RGlzYWJsZWRQb3BvdmVyTXNnKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY2FuRGVhY3RpdmF0ZShvbWl0Q29uZmlybSA9IGZhbHNlKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKCF0aGlzLmVkaXRNb2RlJC52YWx1ZSB8fCB0aGlzLmVkaXRNb2RlQnV0dG9ucy51bmRvQnV0dG9uRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob21pdENvbmZpcm0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY29uZmlybUNsb3NpbmcoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0b2dnbGVGdWxsc2NyZWVuKGhhc1dpZGdldCA9IGZhbHNlKSB7XG4gICAgY29uc3QgZWxlbSA9IGRvY3VtZW50LmJvZHkgYXMgYW55O1xuICAgIGNvbnN0IGRvYyA9IGRvY3VtZW50IGFzIGFueTtcbiAgICBpZiAoaGFzV2lkZ2V0KSB7XG4gICAgICBlbGVtLmNsYXNzTGlzdC5hZGQoJ3NpbmdsZVdpZGdldCcpO1xuICAgICAgdGhpcy53aWRnZXRJbkZ1bGxzY3JlZW5Nb2RlID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbS5jbGFzc0xpc3QucmVtb3ZlKCdzaW5nbGVXaWRnZXQnKTtcbiAgICAgIHRoaXMud2lkZ2V0SW5GdWxsc2NyZWVuTW9kZSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZnVsbFNjcmVlbigpKSB7XG4gICAgICBpZiAoZWxlbS5yZXF1ZXN0RnVsbHNjcmVlbikge1xuICAgICAgICBlbGVtLnJlcXVlc3RGdWxsc2NyZWVuKCk7XG4gICAgICB9IGVsc2UgaWYgKGVsZW0ubXNSZXF1ZXN0RnVsbHNjcmVlbikge1xuICAgICAgICBlbGVtLm1zUmVxdWVzdEZ1bGxzY3JlZW4oKTtcbiAgICAgIH0gZWxzZSBpZiAoZWxlbS5tb3pSZXF1ZXN0RnVsbFNjcmVlbikge1xuICAgICAgICBlbGVtLm1velJlcXVlc3RGdWxsU2NyZWVuKCk7XG4gICAgICB9IGVsc2UgaWYgKGVsZW0ud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4pIHtcbiAgICAgICAgZWxlbS53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigoRWxlbWVudCBhcyBhbnkpLkFMTE9XX0tFWUJPQVJEX0lOUFVUKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRvYy5leGl0RnVsbHNjcmVlbikge1xuICAgICAgZG9jLmV4aXRGdWxsc2NyZWVuKCk7XG4gICAgfSBlbHNlIGlmIChkb2MubXNFeGl0RnVsbHNjcmVlbikge1xuICAgICAgZG9jLm1zRXhpdEZ1bGxzY3JlZW4oKTtcbiAgICB9IGVsc2UgaWYgKGRvYy5tb3pDYW5jZWxGdWxsU2NyZWVuKSB7XG4gICAgICBkb2MubW96Q2FuY2VsRnVsbFNjcmVlbigpO1xuICAgIH0gZWxzZSBpZiAoZG9jLndlYmtpdEV4aXRGdWxsc2NyZWVuKSB7XG4gICAgICBkb2Mud2Via2l0RXhpdEZ1bGxzY3JlZW4oKTtcbiAgICB9XG4gIH1cblxuICBmdWxsU2NyZWVuKCkge1xuICAgIGNvbnN0IGRvYzogYW55ID0gZG9jdW1lbnQ7XG4gICAgcmV0dXJuICEhKFxuICAgICAgZG9jLmZ1bGxzY3JlZW5FbGVtZW50IHx8XG4gICAgICBkb2MubW96RnVsbFNjcmVlbkVsZW1lbnQgfHxcbiAgICAgIGRvYy53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCB8fFxuICAgICAgZG9jLm1zRnVsbHNjcmVlbkVsZW1lbnRcbiAgICApO1xuICB9XG5cbiAgdG9nZ2xlRnVsbHNjcmVlbk9uV2lkZ2V0KGNoaWxkOiBEYXNoYm9hcmRDaGlsZENvbXBvbmVudCkge1xuICAgIGNoaWxkLmZ1bGxzY3JlZW4gPSAhY2hpbGQuZnVsbHNjcmVlbjtcbiAgICBpZiAoY2hpbGQuZnVsbHNjcmVlbikge1xuICAgICAgY29uc3Qgb25GdWxsU2NyZWVuID0gKCkgPT4ge1xuICAgICAgICBjaGlsZC5mdWxsc2NyZWVuID0gISFkb2N1bWVudC5mdWxsc2NyZWVuRWxlbWVudDtcbiAgICAgICAgaWYgKCFjaGlsZC5mdWxsc2NyZWVuKSB7XG4gICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZnVsbHNjcmVlbmNoYW5nZScsIG9uRnVsbFNjcmVlbik7XG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdzaW5nbGVXaWRnZXQnKTtcbiAgICAgICAgICAvLyByZXF1aXJlZCBpbiBjYXNlIGZ1bGxzY3JlZW4gaXMgZXhpdGVkIGJ5IGUuZy4gcHJlc3NpbmcgRVNDXG4gICAgICAgICAgdGhpcy5vblJlc2l6ZS5uZXh0KCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdmdWxsc2NyZWVuY2hhbmdlJywgb25GdWxsU2NyZWVuKTtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVGdWxsc2NyZWVuKGNoaWxkLmZ1bGxzY3JlZW4pO1xuICAgIHRoaXMub25SZXNpemUubmV4dCgpO1xuICB9XG5cbiAgdXBkYXRlV2lkZ2V0Q2xhc3Nlcyh3aWRnZXQ6IFdpZGdldCwgY2xhc3NlczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4pIHtcbiAgICB3aWRnZXQuY2xhc3NlcyA9IHsgLi4ud2lkZ2V0LmNsYXNzZXMsIC4uLmNsYXNzZXMgfTtcbiAgfVxuXG4gIHVwZGF0ZVdpZGdldENvbmZpZyhkYXRhOiBhbnksIHdpZGdldDogV2lkZ2V0KSB7XG4gICAgd2lkZ2V0LmNvbmZpZyA9IHsgLi4ud2lkZ2V0LmNvbmZpZywgLi4uZGF0YSB9O1xuICB9XG5cbiAgYXN5bmMgY2FuY2VsRGFzaGJvYXJkU2F2ZSgpIHtcbiAgICBpZiAoYXdhaXQgdGhpcy5jYW5EZWFjdGl2YXRlKCkpIHtcbiAgICAgIHRoaXMub25DYW5jZWxEYXNoYm9hcmQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHNhdmVEYXNoYm9hcmQoKSB7XG4gICAgLy8gRHJvcGRvd24gdG9nZ2xlIChTZXR0aW5ncykgYnV0dG9uIHdhcyBkZWxldGVkIGltbWVkaWF0ZWx5IGFmdGVyIGVkaXRNb2RlIHNldCB0byBmYWxzZS5cbiAgICAvLyBJdCBsZWFkcyB0byBhbiBpc3N1ZSB3aXRoIHRoZSBhY3R1YWwgaGlkaW5nIGRyb3Bkb3duLCBzbyB3ZSBoYXZlIHRvIGFkZCBzb21lIGRlbGF5IGluIG9yZGVyIHRvOlxuICAgIC8vIDEuIG1ha2UgZHJvcGRvd24gY2xvc2UgZmlyc3RcbiAgICAvLyAyLiB0aGVuIHNldCBlZGl0TW9kZSB0byBmYWxzZSBhbmQgb25seSB0aGVuIHJlbW92ZSBidXR0b24gZnJvbSBET01cbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZWRpdE1vZGUkLm5leHQoZmFsc2UpKTtcbiAgICB0aGlzLm9uU2F2ZURhc2hib2FyZC5lbWl0KCk7XG4gICAgdGhpcy53aWRnZXRHbG9iYWxBdXRvUmVmcmVzaC5vbkRhc2hib2FyZFNhdmUkLm5leHQoKTtcbiAgfVxuXG4gIGVuYWJsZUVkaXRNb2RlKCkge1xuICAgIHRoaXMuZWRpdE1vZGUkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5jb250ZXh0RGFzaGJvYXJkLmhpc3RvcnlEZXNjcmlwdGlvbiA9IHt9O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb3B5RGlzYWJsZWRQb3BvdmVyTXNnKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5pc0NvcHlEaXNhYmxlZCA9PT0gJ2Jvb2xlYW4nIHx8IHRoaXMuaXNDb3B5RGlzYWJsZWQ/LnN0YXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNDb3B5RGlzYWJsZWQ/LnJlYXNvbiA9PT0gQ29weURhc2hib2FyZERpc2FibGVkUmVhc29uLlBFUk1JU1NJT05TKSB7XG4gICAgICB0aGlzLmNvcHlEaXNhYmxlZFBvcG92ZXJNc2cgPSBnZXR0ZXh0KFxuICAgICAgICAnVG8gY29weSB0aGlzIGRhc2hib2FyZCwgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IgdG8gcmVxdWVzdCB0aGUgbmVjZXNzYXJ5IHBlcm1pc3Npb25zLidcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzQ29weURpc2FibGVkPy5yZWFzb24gPT09IENvcHlEYXNoYm9hcmREaXNhYmxlZFJlYXNvbi5XUk9OR19SRUZFUkVOQ0UpIHtcbiAgICAgIGNvbnN0IHZpZXdDb250ZXh0ID0gdGhpcy5yb3V0ZS5wYXJlbnQuc25hcHNob3QuZGF0YT8uY29udGV4dDtcblxuICAgICAgaWYgKHZpZXdDb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IGN0eCA9IHZpZXdDb250ZXh0LnNwbGl0KCcvJykuc2hpZnQoKTtcbiAgICAgICAgY29uc3QgZGV2aWNlU3RyID0gZ2V0dGV4dChcbiAgICAgICAgICAnQ29weSBub3QgcG9zc2libGU6IFNvbWUgd2lkZ2V0cyByZWZlcmVuY2UgZGF0YSBmcm9tIGFub3RoZXIgZ3JvdXAgb3IgZGV2aWNlLiBUbyBjb3B5IHRoaXMgZGFzaGJvYXJkLCBtYWtlIHN1cmUgYWxsIHdpZGdldHMgdXNlIGRhdGEgZnJvbSB0aGUgY3VycmVudCBkZXZpY2Ugb25seS4nXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGdyb3VwU3RyID0gZ2V0dGV4dChcbiAgICAgICAgICAnQ29weSBub3QgcG9zc2libGU6IFNvbWUgd2lkZ2V0cyByZWZlcmVuY2UgZGF0YSBmcm9tIGFub3RoZXIgZ3JvdXAgb3IgZGV2aWNlLiBUbyBjb3B5IHRoaXMgZGFzaGJvYXJkLCBtYWtlIHN1cmUgYWxsIHdpZGdldHMgdXNlIGRhdGEgZnJvbSB0aGUgY3VycmVudCBncm91cCBvbmx5LidcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb3B5RGlzYWJsZWRQb3BvdmVyTXNnID0gY3R4ID09PSAnZ3JvdXAnID8gZ3JvdXBTdHIgOiBkZXZpY2VTdHI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb25maXJtQ2xvc2luZygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5tb2RhbC5jb25maXJtKFxuICAgICAgICBnZXR0ZXh0KCdFeGl0IGVkaXQgbW9kZScpLFxuICAgICAgICBnZXR0ZXh0KCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZXhpdCB0aGUgZWRpdCBtb2RlPyBBbGwgdW5zYXZlZCBjaGFuZ2VzIHdpbGwgYmUgbG9zdC4nKSxcbiAgICAgICAgU3RhdHVzLldBUk5JTkcsXG4gICAgICAgIHtcbiAgICAgICAgICBvazogZ2V0dGV4dCgnRXhpdCcpLFxuICAgICAgICAgIGNhbmNlbDogZ2V0dGV4dCgnQ2FuY2VsJylcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGV4ZWN1dGVSZXNvbHZlcnNPZldpZGdldHMod2lkZ2V0czogV2lkZ2V0W10pOiBQcm9taXNlPFdpZGdldFtdPiB7XG4gICAgaWYgKCF3aWRnZXRzKSB7XG4gICAgICByZXR1cm4gd2lkZ2V0cztcbiAgICB9XG5cbiAgICBjb25zdCB0dXBsZSA9IHdpZGdldHMubWFwKHdpZGdldCA9PiAoe1xuICAgICAgY29tcG9uZW50SWQ6IHdpZGdldC5jb21wb25lbnRJZCB8fCB3aWRnZXQubmFtZSxcbiAgICAgIGNvbmZpZzogd2lkZ2V0LmNvbmZpZ1xuICAgIH0pKTtcblxuICAgIGNvbnN0IHJlc29sdmVkUmVzdWx0cyA9IGF3YWl0IHRoaXMuZHluYW1pYy5leGVjdXRlUmVzb2x2ZXJzKHR1cGxlKTtcbiAgICB3aWRnZXRzLmZvckVhY2goKHdpZGdldCwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChyZXNvbHZlZFJlc3VsdHNbaW5kZXhdKSB7XG4gICAgICAgIGlmICghd2lkZ2V0LmNvbmZpZykge1xuICAgICAgICAgIHdpZGdldC5jb25maWcgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuZW50cmllcyhyZXNvbHZlZFJlc3VsdHNbaW5kZXhdKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+XG4gICAgICAgICAgc2V0KHdpZGdldC5jb25maWcsIGtleSwgdmFsdWUpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHdpZGdldHM7XG4gIH1cbn1cbiIsIjxjOHktdGl0bGUgKm5nSWY9XCIhIXNldHRpbmdzLnRpdGxlXCI+XG4gIHt7IHNldHRpbmdzLnRpdGxlIHwgdHJhbnNsYXRlIH19XG48L2M4eS10aXRsZT5cblxuPGM4eS1icmVhZGNydW1iICpuZ0lmPVwiISFicmVhZGNydW1iXCI+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiYnJlYWRjcnVtYi5pY29uXCJcbiAgICBbbGFiZWxdPVwiYnJlYWRjcnVtYi5sYWJlbFwiXG4gICAgW3BhdGhdPVwiYnJlYWRjcnVtYi5wYXRoXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbjwvYzh5LWJyZWFkY3J1bWI+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ2xlZnQnXCJcbiAgW3ByaW9yaXR5XT1cIkFDVElPTl9CQVJfRURJVF9XSURHRVRTX1BSSU9SSVRZXCJcbiAgKm5nSWY9XCIhKGVkaXRNb2RlJCB8IGFzeW5jKVwiXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGluayBhbmltYXRlZCBmYWRlSW4gaGlkZGVuLXhzXCJcbiAgICB0aXRsZT1cInt7ICdFZGl0IHdpZGdldHMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbZGlzYWJsZWRdPVwic2V0dGluZ3MuaXNEaXNhYmxlZFwiXG4gICAgKGNsaWNrKT1cImVuYWJsZUVkaXRNb2RlKClcIlxuICAgIGRhdGEtY3k9XCJjOHktd2lkZ2V0LWRhc2hib2FyZC0tZWRpdC13aWRnZXRzXCJcbiAgPlxuICAgIDxpIGM4eUljb249XCJzZW5kLWJhY2t3YXJkXCI+PC9pPlxuICAgIDxzcGFuIGNsYXNzPVwibS1sLTRcIj57eyAnRWRpdCB3aWRnZXRzJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgPC9idXR0b24+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGluayB2aXNpYmxlLXhzIG0tbC0wXCJcbiAgICB0b29sdGlwPVwie3sgJ05vdCBhdmFpbGFibGUgb24gbW9iaWxlIHBob25lJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW2Rpc2FibGVkXT1cInRydWVcIlxuICA+XG4gICAgPGkgYzh5SWNvbj1cInNlbmQtYmFja3dhcmRcIj48L2k+XG4gICAgPHNwYW4gY2xhc3M9XCJtLWwtNFwiPnt7ICdFZGl0IHdpZGdldHMnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgW3BsYWNlbWVudF09XCInbGVmdCdcIlxuICAqbmdJZj1cImVkaXRNb2RlJCB8IGFzeW5jXCJcbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGFuaW1hdGVkIGZhZGVJblwiXG4gICAgdGl0bGU9XCJ7eyAnQWRkIHdpZGdldCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIChjbGljayk9XCJvbkFkZFdpZGdldC5lbWl0KClcIlxuICAgIGRhdGEtY3k9XCJ3aWRnZXQtZGFzaGJvYXJkLS1BZGQtd2lkZ2V0XCJcbiAgPlxuICAgIDxpIGM4eUljb249XCJwbHVzLWNpcmNsZVwiPjwvaT5cbiAgICB7eyAnQWRkIHdpZGdldCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ2xlZnQnXCJcbiAgaXRlbUNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXIgZ2FwLThcIlxuICAqbmdJZj1cImVkaXRNb2RlJCB8IGFzeW5jXCJcbj5cbiAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLXNtIGFuaW1hdGVkIGZhZGVJblwiPlxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtIGJ0bi1pY29uXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInVW5kbycgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbdG9vbHRpcF09XCJcbiAgICAgICAgICBlZGl0TW9kZUJ1dHRvbnMudW5kb0J1dHRvbkRpc2FibGVkXG4gICAgICAgICAgICA/ICcnXG4gICAgICAgICAgICA6ICh1bmRvTWVzc2FnZVxuICAgICAgICAgICAgICB8IHRyYW5zbGF0ZTogeyBjaGFuZ2VUb1VuZG86IGVkaXRNb2RlQnV0dG9ucy5jaGFuZ2VUb1VuZG9OYW1lIHwgdHJhbnNsYXRlIH0pXG4gICAgICAgIFwiXG4gICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAoY2xpY2spPVwicmV2ZXJ0Q2hhbmdlLmVtaXQoJ3VuZG8nKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJlZGl0TW9kZUJ1dHRvbnMudW5kb0J1dHRvbkRpc2FibGVkXCJcbiAgICAgID5cbiAgICAgICAgPGkgW2M4eUljb25dPVwiJ3VuZG8nXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0blwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc20gYnRuLWljb25cIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZWRvJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFt0b29sdGlwXT1cIlxuICAgICAgICAgIGVkaXRNb2RlQnV0dG9ucy5yZWRvQnV0dG9uRGlzYWJsZWRcbiAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgIDogKHJlZG9NZXNzYWdlXG4gICAgICAgICAgICAgIHwgdHJhbnNsYXRlOiB7IGNoYW5nZVRvUmVkbzogZWRpdE1vZGVCdXR0b25zLmNoYW5nZVRvUmVkb05hbWUgfCB0cmFuc2xhdGUgfSlcbiAgICAgICAgXCJcbiAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgIChjbGljayk9XCJyZXZlcnRDaGFuZ2UuZW1pdCgncmVkbycpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImVkaXRNb2RlQnV0dG9ucy5yZWRvQnV0dG9uRGlzYWJsZWRcIlxuICAgICAgPlxuICAgICAgICA8aSBbYzh5SWNvbl09XCIncmVkbydcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8c3Bhbj48L3NwYW4+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGFuaW1hdGVkIGZhZGVJblwiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbVwiXG4gICAgICB0aXRsZT1cInt7ICdDYW5jZWwnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKGNsaWNrKT1cImNhbmNlbERhc2hib2FyZFNhdmUoKVwiXG4gICAgPlxuICAgICAge3sgJ0NhbmNlbCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gbS1sLThcIlxuICAgICAgdGl0bGU9XCJ7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbZGlzYWJsZWRdPVwiZWRpdE1vZGVCdXR0b25zLnVuZG9CdXR0b25EaXNhYmxlZFwiXG4gICAgICAoY2xpY2spPVwic2F2ZURhc2hib2FyZCgpXCJcbiAgICAgIGRhdGEtY3k9XCJjOHktd2lkZ2V0cy1kYXNoYm9hcmQtLXNhdmVcIlxuICAgID5cbiAgICAgIHt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgW3BsYWNlbWVudF09XCIncmlnaHQnXCJcbiAgKm5nSWY9XCJvbkVkaXREYXNoYm9hcmQub2JzZXJ2ZXJzLmxlbmd0aFwiXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGluayBoaWRkZW4teHMgbS1sLTBcIlxuICAgIHRpdGxlPVwie3sgJ0Rhc2hib2FyZCBzZXR0aW5ncycgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFtkaXNhYmxlZF09XCJzZXR0aW5ncy5pc0Rpc2FibGVkIHx8IChlZGl0TW9kZSQgfCBhc3luYylcIlxuICAgIChjbGljayk9XCJvbkVkaXREYXNoYm9hcmQuZW1pdCgpXCJcbiAgICBkYXRhLWN5PVwiYzh5LXdpZGdldHMtZGFzaGJvYXJkLS1lZGl0LWRhc2hib2FyZFwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwic29ydGluZy1zbGlkZXJcIj48L2k+XG4gICAgPHNwYW4gY2xhc3M9XCJ2aXNpYmxlLXhzLWlubGluZSBoaWRkZW4tc20gdmlzaWJsZS1tZC1pbmxpbmUgdmlzaWJsZS1sZy1pbmxpbmVcIj5cbiAgICAgIHt7ICdEYXNoYm9hcmQgc2V0dGluZ3MnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHZpc2libGUteHMgbS1sLTBcIlxuICAgIHRvb2x0aXA9XCJ7eyAnTm90IGF2YWlsYWJsZSBvbiBtb2JpbGUgcGhvbmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwic29ydGluZy1zbGlkZXJcIj48L2k+XG4gICAgPHNwYW4gY2xhc3M9XCJ2aXNpYmxlLXhzLWlubGluZSBoaWRkZW4tc20gdmlzaWJsZS1tZC1pbmxpbmUgdmlzaWJsZS1sZy1pbmxpbmVcIj5cbiAgICAgIHt7ICdEYXNoYm9hcmQgc2V0dGluZ3MnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgW3BsYWNlbWVudF09XCIncmlnaHQnXCJcbiAgKm5nSWY9XCJzZXR0aW5ncy5hbGxvd0Z1bGxzY3JlZW5cIlxuICBbcHJpb3JpdHldPVwiLTUwMDBcIlxuICBpdGVtQ2xhc3M9XCJwdWxsLXJpZ2h0XCJcbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidGdWxsIHNjcmVlbicgfCB0cmFuc2xhdGVcIlxuICAgIHRvb2x0aXA9XCJ7eyAnRnVsbCBzY3JlZW4nIHwgdHJhbnNsYXRlIH19XCJcbiAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlRnVsbHNjcmVlbigpXCJcbiAgICBkYXRhLWN5PVwid2lkZ2V0cy1kYXNoYm9hcmQtLUZ1bGwtc2NyZWVuXCJcbiAgPlxuICAgIDxpIFtjOHlJY29uXT1cIihpbkZ1bGxTY3JlZW4kIHwgYXN5bmMpID8gJ2NvbXByZXNzJyA6ICdleHBhbmQnXCI+PC9pPlxuICAgIDxzcGFuIGNsYXNzPVwidmlzaWJsZS14cy1pbmxpbmUgaGlkZGVuLXNtIHZpc2libGUtbWQtaW5saW5lIHZpc2liaWxlLWxnLWlubGluZVwiPlxuICAgICAge3sgJ0Z1bGwgc2NyZWVuJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ21vcmUnXCJcbiAgW3ByaW9yaXR5XT1cIi0yMDAwXCJcbiAgKm5nSWY9XCJzZXR0aW5ncy5jYW5Db3B5XCJcbj5cbiAgPGRpdlxuICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnLFxuICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcidcbiAgICB9XCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiaGlkZGVuLXhzXCJcbiAgICAgIHRpdGxlPVwie3tcbiAgICAgICAgKGlzQ29weURpc2FibGVkID09PSB0cnVlIHx8ICFpc0NvcHlEaXNhYmxlZD8uc3RhdGUgPyAnRGlzYWJsZWQnIDogY29weURhc2hib2FyZExhYmVsKVxuICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICB9fVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2J0biBidG4tbGluayc6ICFzZXR0aW5ncy5jYW5EZWxldGUgfVwiXG4gICAgICBkYXRhLWN5PVwid2lkZ2V0cy1kYXNoYm9hcmQtLWNvcHktZGFzaGJvYXJkXCJcbiAgICAgIChjbGljayk9XCJvbkNvcHlEYXNoYm9hcmQuZW1pdCgpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJpc0NvcHlEaXNhYmxlZCA9PT0gdHJ1ZSB8fCAhaXNDb3B5RGlzYWJsZWQ/LnN0YXRlIHx8IChlZGl0TW9kZSQgfCBhc3luYylcIlxuICAgID5cbiAgICAgIDxpIGM4eUljb249XCJjbG9uZVwiPjwvaT5cbiAgICAgIDxzcGFuPnt7IGNvcHlEYXNoYm9hcmRMYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0bi1oZWxwIGJ0bi1oZWxwLS1zbSBtLXItMTYgaGlkZGVuLXhzXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtwb3BvdmVyXT1cImNvcHlEaXNhYmxlZFBvcG92ZXJNc2cgfCB0cmFuc2xhdGVcIlxuICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKm5nSWY9XCIhaXNDb3B5RGlzYWJsZWQ/LnN0YXRlICYmIGNvcHlEaXNhYmxlZFBvcG92ZXJNc2dcIlxuICAgICAgZGF0YS1jeT1cIndpZGdldHMtZGFzaGJvYXJkLS1pbmZvLWNvcHktZGFzaGJvYXJkXCJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgID48L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cInZpc2libGUteHMgbS1sLTBcIlxuICAgIHRvb2x0aXA9XCJ7eyAnTm90IGF2YWlsYWJsZSBvbiBtb2JpbGUgcGhvbmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbbmdDbGFzc109XCJ7ICdidG4gYnRuLWxpbmsnOiAhc2V0dGluZ3MuY2FuRGVsZXRlIH1cIlxuICAgIFtkaXNhYmxlZF09XCJ0cnVlXCJcbiAgPlxuICAgIDxpIGM4eUljb249XCJjbG9uZVwiPjwvaT5cbiAgICA8c3Bhbj57eyBjb3B5RGFzaGJvYXJkTGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbVxuICBbcGxhY2VtZW50XT1cIidtb3JlJ1wiXG4gIFtwcmlvcml0eV09XCItMzAwMFwiXG4gICpuZ0lmPVwic2V0dGluZ3MuY2FuRGVsZXRlICYmIG9uRGVsZXRlRGFzaGJvYXJkLm9ic2VydmVycy5sZW5ndGhcIlxuPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJoaWRkZW4teHNcIlxuICAgIHRpdGxlPVwie3sgJ0RlbGV0ZSBkYXNoYm9hcmQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBkYXRhLWN5PVwid2lkZ2V0cy1kYXNoYm9hcmQtLWRlbGV0ZS1kYXNoYm9hcmRcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ2J0biBidG4tbGluayc6ICFzZXR0aW5ncy5jYW5Db3B5IH1cIlxuICAgIChjbGljayk9XCJvbkRlbGV0ZURhc2hib2FyZC5lbWl0KClcIlxuICAgIFtkaXNhYmxlZF09XCJzZXR0aW5ncy5pc0Rpc2FibGVkIHx8IChlZGl0TW9kZSQgfCBhc3luYylcIlxuICA+XG4gICAgPGkgYzh5SWNvbj1cImRlbGV0ZVwiPjwvaT5cbiAgICA8c3BhbiB0cmFuc2xhdGU+RGVsZXRlIGRhc2hib2FyZDwvc3Bhbj5cbiAgPC9idXR0b24+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cInZpc2libGUteHMgbS1sLTBcIlxuICAgIHRvb2x0aXA9XCJ7eyAnTm90IGF2YWlsYWJsZSBvbiBtb2JpbGUgcGhvbmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBkYXRhLWN5PVwid2lkZ2V0cy1kYXNoYm9hcmQtLWRlbGV0ZS1kYXNoYm9hcmQtbW9iaWxlXCJcbiAgICBbbmdDbGFzc109XCJ7ICdidG4gYnRuLWxpbmsnOiAhc2V0dGluZ3MuY2FuQ29weSB9XCJcbiAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwiZGVsZXRlXCI+PC9pPlxuICAgIDxzcGFuIHRyYW5zbGF0ZT5EZWxldGUgZGFzaGJvYXJkPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nSW5kaWNhdG9yPlxuICA8Yzh5LWxvYWRpbmdcbiAgICBjbGFzcz1cImNvbC14cy0xMiB0ZXh0LWNlbnRlclwiXG4gICAgKm5nSWY9XCJpc0xvYWRpbmdXaWRnZXRzJCB8IGFzeW5jXCJcbiAgPjwvYzh5LWxvYWRpbmc+XG48L25nLXRlbXBsYXRlPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiIShpc0xvYWRpbmdXaWRnZXRzJCB8IGFzeW5jKTsgZWxzZSBsb2FkaW5nSW5kaWNhdG9yXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXNvbHZlZFdpZGdldHMkIHwgYXN5bmMgYXMgd2lkZ2V0c1RvRGlzcGxheVwiPlxuICAgIDwhLS0gZW1wdHkgc3RhdGUgLS0+XG4gICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgW2ljb25dPVwiJ2M4eS1kZXZpY2UnXCJcbiAgICAgIFt0aXRsZV09XCInTm8gd2lkZ2V0cyB0byBkaXNwbGF5LicgfCB0cmFuc2xhdGVcIlxuICAgICAgKm5nSWY9XCJ3aWRnZXRzVG9EaXNwbGF5Py5sZW5ndGggPT09IDBcIlxuICAgID5cbiAgICAgIDxkaXYgKm5nSWY9XCJvbkFkZFdpZGdldC5vYnNlcnZlcnMubGVuZ3RoXCI+XG4gICAgICAgIDxwXG4gICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgKm5nSWY9XCJlZGl0TW9kZSQgfCBhc3luY1wiXG4gICAgICAgID5cbiAgICAgICAgICBBZGQgd2lkZ2V0cyB0byB0aGlzIGRhc2hib2FyZC5cbiAgICAgICAgPC9wPlxuICAgICAgICA8cFxuICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICpuZ0lmPVwiIShlZGl0TW9kZSQgfCBhc3luYylcIlxuICAgICAgICA+XG4gICAgICAgICAgQ2xpY2sgXCJFZGl0IHdpZGdldHNcIiB0byB1bmxvY2tcbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG0tdC0xNlwiXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdBZGQgd2lkZ2V0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZXR0aW5ncy5pc0Rpc2FibGVkIHx8ICEoZWRpdE1vZGUkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkFkZFdpZGdldC5lbWl0KClcIlxuICAgICAgICAgICAgZGF0YS1jeT1cImM4eS13aWRnZXRzLWRhc2hib2FyZC0tYWRkLXdpZGdldFwiXG4gICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICBBZGQgd2lkZ2V0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cCBjOHktZ3VpZGUtZG9jcz5cbiAgICAgICAgICA8c21hbGxcbiAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgbmdOb25CaW5kYWJsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIEZpbmQgb3V0IG1vcmUgaW4gdGhlXG4gICAgICAgICAgICA8YSBjOHktZ3VpZGUtaHJlZj1cIi9kb2NzL2NvY2twaXQvd29ya2luZy13aXRoLWRhc2hib2FyZHNcIj51c2VyIGRvY3VtZW50YXRpb248L2E+XG4gICAgICAgICAgICAuXG4gICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9jOHktdWktZW1wdHktc3RhdGU+XG5cbiAgICA8Yzh5LWRhc2hib2FyZFxuICAgICAgW2NvbHVtbnNdPVwic2V0dGluZ3MuY29sdW1uc1wiXG4gICAgICAoZGFzaGJvYXJkQ2hhbmdlKT1cIm9uQ2hhbmdlRGFzaGJvYXJkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAjZGFzaGJvYXJkXG4gICAgPlxuICAgICAgPGM4eS1kYXNoYm9hcmQtY2hpbGRcbiAgICAgICAgW2NsYXNzXT1cIndpZGdldC5jbGFzc2VzXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IHdpZGdldCBvZiB3aWRnZXRzVG9EaXNwbGF5XCJcbiAgICAgICAgW3hdPVwid2lkZ2V0Ll94XCJcbiAgICAgICAgW3ldPVwid2lkZ2V0Ll95XCJcbiAgICAgICAgW3dpZHRoXT1cIndpZGdldC5fd2lkdGggfHwgc2V0dGluZ3MuZGVmYXVsdFdpZHRoXCJcbiAgICAgICAgW2hlaWdodF09XCJ3aWRnZXQuX2hlaWdodCB8fCBzZXR0aW5ncy5kZWZhdWx0SGVpZ2h0XCJcbiAgICAgICAgW21hcmdpbl09XCJzZXR0aW5ncy53aWRnZXRNYXJnaW5cIlxuICAgICAgICBbZGF0YV09XCJ3aWRnZXRcIlxuICAgICAgICBbdXNlSW50ZXJzZWN0aW9uXT1cInRydWVcIlxuICAgICAgICBbZWRpdE1vZGVdPVwiZWRpdE1vZGUkIHwgYXN5bmNcIlxuICAgICAgICAoY2hhbmdlU3RhcnQpPVwib25DaGFuZ2VTdGFydC5lbWl0KHsgd2lkZ2V0OiB3aWRnZXQsIHNvdXJjZTogY2hpbGQsIGRhc2hib2FyZDogZGFzaGJvYXJkIH0pXCJcbiAgICAgICAgKGNoYW5nZUVuZCk9XCJvbkNoYW5nZUVuZC5lbWl0KHsgd2lkZ2V0OiB3aWRnZXQsIHNvdXJjZTogY2hpbGQsIGRhc2hib2FyZDogZGFzaGJvYXJkIH0pXCJcbiAgICAgICAgKHRvZ2dsZUZ1bGxzY3JlZW4pPVwidG9nZ2xlRnVsbHNjcmVlbk9uV2lkZ2V0KGNoaWxkKVwiXG4gICAgICAgIFtjYW5Ub2dnbGVGdWxsc2NyZWVuXT1cIiEoaW5GdWxsU2NyZWVuJCB8IGFzeW5jKSB8fCB3aWRnZXRJbkZ1bGxzY3JlZW5Nb2RlXCJcbiAgICAgICAgI2NoaWxkXG4gICAgICA+XG4gICAgICAgIDxjOHktZGFzaGJvYXJkLWNoaWxkLXRpdGxlPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBkYXRhLWN5PVwiYzh5LWRhc2hib2FyZC1saXN0LS1kZXZpY2Utd2lkZ2V0XCJcbiAgICAgICAgICAgICpuZ0lmPVwic2V0dGluZ3MudHJhbnNsYXRlV2lkZ2V0VGl0bGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHdpZGdldC50aXRsZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFzZXR0aW5ncy50cmFuc2xhdGVXaWRnZXRUaXRsZVwiPlxuICAgICAgICAgICAge3sgd2lkZ2V0LnRpdGxlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2M4eS1kYXNoYm9hcmQtY2hpbGQtdGl0bGU+XG4gICAgICAgIDxjOHktZGFzaGJvYXJkLWNoaWxkLWFjdGlvbiAqbmdJZj1cIm9uRWRpdFdpZGdldC5vYnNlcnZlcnMubGVuZ3RoXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnRWRpdCB3aWRnZXQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgZGF0YS1jeT1cIndpZGdldHMtZGFzaGJvYXJkLS1FZGl0LXdpZGdldFwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25FZGl0V2lkZ2V0LmVtaXQoeyB3aWRnZXQ6IHdpZGdldCwgc291cmNlOiBjaGlsZCwgZGFzaGJvYXJkOiBkYXNoYm9hcmQgfSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGM4eUljb249XCJwZW5jaWxcIj48L2k+XG4gICAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+RWRpdDwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9jOHktZGFzaGJvYXJkLWNoaWxkLWFjdGlvbj5cbiAgICAgICAgPGM4eS1kYXNoYm9hcmQtY2hpbGQtYWN0aW9uICpuZ0lmPVwib25EZWxldGVXaWRnZXQub2JzZXJ2ZXJzLmxlbmd0aFwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ1JlbW92ZSB3aWRnZXQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgZGF0YS1jeT1cImM4eS13aWRnZXRzLWRhc2hib2FyZC0tcmVtb3ZlLXdpZGdldFwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGVXaWRnZXQuZW1pdCh7IHdpZGdldDogd2lkZ2V0LCBzb3VyY2U6IGNoaWxkLCBkYXNoYm9hcmQ6IGRhc2hib2FyZCB9KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgYzh5SWNvbj1cImRlbGV0ZVwiPjwvaT5cbiAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5SZW1vdmU8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvYzh5LWRhc2hib2FyZC1jaGlsZC1hY3Rpb24+XG5cbiAgICAgICAgPGM4eS13aWRnZXQtdGltZS1jb250ZXh0XG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICh3aWRnZXQuY29uZmlnPy5kaXNwbGF5U2V0dGluZ3M/Lmdsb2JhbFRpbWVDb250ZXh0IHx8XG4gICAgICAgICAgICAgIHdpZGdldC5jb25maWc/LmRpc3BsYXlTZXR0aW5ncz8uZ2xvYmFsUmVhbHRpbWVDb250ZXh0KSAmJlxuICAgICAgICAgICAgKHdpZGdldC5jb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxUaW1lQ29udGV4dCB8fFxuICAgICAgICAgICAgICB3aWRnZXQuY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsQXV0b1JlZnJlc2hDb250ZXh0KVxuICAgICAgICAgIFwiXG4gICAgICAgICAgKGRhdGVDb250ZXh0Q2hhbmdlKT1cInVwZGF0ZVdpZGdldENvbmZpZygkZXZlbnQsIHdpZGdldClcIlxuICAgICAgICAgIFtjYW5EZWNvdXBsZV09XCJ3aWRnZXQuY29uZmlnLmNhbkRlY291cGxlR2xvYmFsVGltZUNvbnRleHRcIlxuICAgICAgICAgIFtkaXNwbGF5U2V0dGluZ3NdPVwid2lkZ2V0LmNvbmZpZy5kaXNwbGF5U2V0dGluZ3NcIlxuICAgICAgICAgIFtoaWRkZW5dPVwiZWRpdE1vZGUkIHwgYXN5bmNcIlxuICAgICAgICA+PC9jOHktd2lkZ2V0LXRpbWUtY29udGV4dD5cblxuICAgICAgICA8Yzh5LXdpZGdldC1hdXRvLXJlZnJlc2gtY29udGV4dFxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICB3aWRnZXQ/LmNvbmZpZz8ud2lkZ2V0SW5zdGFuY2VHbG9iYWxBdXRvUmVmcmVzaENvbnRleHQgJiZcbiAgICAgICAgICAgIHdpZGdldC5jb25maWc/LmRpc3BsYXlTZXR0aW5ncy5nbG9iYWxBdXRvUmVmcmVzaENvbnRleHRcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtlZGl0TW9kZSRdPVwiZWRpdE1vZGUkXCJcbiAgICAgICAgPjwvYzh5LXdpZGdldC1hdXRvLXJlZnJlc2gtY29udGV4dD5cblxuICAgICAgICA8Yzh5LWR5bmFtaWMtY29tcG9uZW50XG4gICAgICAgICAgW2NvbXBvbmVudElkXT1cIndpZGdldC5jb21wb25lbnRJZCB8fCB3aWRnZXQubmFtZVwiXG4gICAgICAgICAgW2NvbmZpZ109XCJcbiAgICAgICAgICAgIHdpZGdldC50ZW1wbGF0ZVVybCB8fCB3aWRnZXQud2lkZ2V0Q29tcG9uZW50XG4gICAgICAgICAgICAgID8geyBjaGlsZDogd2lkZ2V0LCBkYXNoYm9hcmQ6IGNvbnRleHREYXNoYm9hcmQsIGNvbnRleHQ6IGNvbnRleHQgfVxuICAgICAgICAgICAgICA6IHdpZGdldC5jb25maWdcbiAgICAgICAgICBcIlxuICAgICAgICAgICpuZ0lmPVwiY2hpbGQuaW50ZXJzZWN0ZWRcIlxuICAgICAgICAgICh1cGRhdGVXaWRnZXRDbGFzc2VzKT1cInVwZGF0ZVdpZGdldENsYXNzZXMod2lkZ2V0LCAkZXZlbnQpXCJcbiAgICAgICAgPjwvYzh5LWR5bmFtaWMtY29tcG9uZW50PlxuICAgICAgPC9jOHktZGFzaGJvYXJkLWNoaWxkPlxuICAgIDwvYzh5LWRhc2hib2FyZD5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -82,6 +82,7 @@ export class LoginComponent {
82
82
  await this.loginService.login();
83
83
  }
84
84
  catch (e) {
85
+ await this.loginService.clearCookies();
85
86
  const preferredLoginOptionType = this.loginService.loginMode.type;
86
87
  if (preferredLoginOptionType === TenantLoginOptionType.OAUTH2) {
87
88
  this.loginService.redirectToOauth();
@@ -158,4 +159,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
158
159
  type: HostListener,
159
160
  args: ['keyup', ['$event']]
160
161
  }] } });
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9sb2dpbi9sb2dpbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFlBQVksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUU1RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPN0QsTUFBTSxPQUFPLGNBQWM7SUFhekI7O09BRUc7SUFDSCxZQUNTLFlBQTBCLEVBQ3pCLE9BQXVCLEVBQ3ZCLEtBQW1CLEVBQ25CLGlDQUFvRSxFQUNyRSxFQUFtQjtRQUpuQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUN6QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLHNDQUFpQyxHQUFqQyxpQ0FBaUMsQ0FBbUM7UUFDckUsT0FBRSxHQUFGLEVBQUUsQ0FBaUI7UUFwQjVCLGdCQUFXLEdBQWUsVUFBVSxDQUFDLElBQUksQ0FBQztRQUMxQyxnQkFBVyxHQUFHLFVBQVUs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VSxjQUFjO21HQUFkLGNBQWMsZ0lDaEIzQixvbEZBaUZBOzs0RkRqRWEsY0FBYztrQkFMMUIsU0FBUzsrQkFDRSxXQUFXO3VOQVVaLElBQUk7c0JBQVosS0FBSztnQkFpRDZCLE9BQU87c0JBQXpDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBIb3N0TGlzdGVuZXIsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUNyZWRlbnRpYWxzLCBUZW5hbnRMb2dpbk9wdGlvblR5cGUgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuL2xvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3B0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ2luVmlld3MsIFNzb0RhdGEsIFNzb0Vycm9yIH0gZnJvbSAnLi9sb2dpbi5tb2RlbCc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICcuLi9pMThuL2dldHRleHQnO1xuaW1wb3J0IHsgQ3JlZGVudGlhbHNGcm9tUXVlcnlQYXJhbXNTZXJ2aWNlIH0gZnJvbSAnLi9jcmVkZW50aWFscy1mcm9tLXF1ZXJ5LXBhcmFtcy5zZXJ2aWNlJztcbmltcG9ydCB7IENyZWRlbnRpYWxzQ29tcG9uZW50UGFyYW1zIH0gZnJvbSAnLi9jcmVkZW50aWFscy1jb21wb25lbnQtcGFyYW1zJztcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi91aS1zdGF0ZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWxvZ2luJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvZ2luLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBMb2dpbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgY3VycmVudFZpZXc6IExvZ2luVmlld3MgPSBMb2dpblZpZXdzLk5vbmU7XG4gIExPR0lOX1ZJRVdTID0gTG9naW5WaWV3cztcblxuICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZztcblxuICBjcmVkZW50aWFsczogSUNyZWRlbnRpYWxzID0ge307XG4gIGxvZ2luVmlld1BhcmFtczogQ3JlZGVudGlhbHNDb21wb25lbnRQYXJhbXMgfCB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gIGRpc3BsYXlBbGVydHMgPSBmYWxzZTtcbiAgcHJpdmF0ZSBUT0tFTl9QQVJBTSA9ICd0b2tlbic7XG5cbiAgLyoqXG4gICAqIEp1c3QgREkuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbG9naW5TZXJ2aWNlOiBMb2dpblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcHRpb25zOiBPcHRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtc1NlcnZpY2U6IENyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZSxcbiAgICBwdWJsaWMgdWk6IEFwcFN0YXRlU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldFBhcmFtQW5kQ2xlYXIodGhpcy5UT0tFTl9QQVJBTSk7XG4gICAgY29uc3Qgc3NvRGF0YSA9IHRoaXMuZ2V0U3NvRGF0YSgpO1xuICAgIGlmIChzc29EYXRhKSB7XG4gICAgICB0aGlzLmhhbmRsZVNzbyhzc29EYXRhKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubG9naW5TZXJ2aWNlLmlzRmlyc3RMb2dpbikge1xuICAgICAgaWYgKCF0b2tlbikge1xuICAgICAgICB0aGlzLmxvZ2luQXV0b21hdGljYWxseSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jcmVkZW50aWFscy50b2tlbiA9IHRva2VuO1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubG9naW5TZXJ2aWNlLmlzRmlyc3RMb2dpbiA9IGZhbHNlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gbWFrZSBzdXJlIHRoYXQgd2UgZG8gbm90IGhhdmUgYW55IHF1ZXJ5UGFyYW1ldGVycyByZWxhdGVkIHRvIGNyZWRlbnRpYWxzIGFmdGVyIGxvZ2dpbmcgaW4gb3IgZXZlbiBpZiB3ZSB3ZXJlIGFscmVhZHkgbG9nZ2VkIGluLlxuICAgIHRoaXMuY3JlZGVudGlhbHNGcm9tUXVlcnlQYXJhbXNTZXJ2aWNlLnJlbW92ZUNyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zKCk7XG4gIH1cblxuICBoYW5kbGVMb2dpblRlbXBsYXRlKGV2ZW50OiB7XG4gICAgdmlldzogTG9naW5WaWV3cztcbiAgICBjcmVkZW50aWFscz86IElDcmVkZW50aWFscztcbiAgICBsb2dpblZpZXdQYXJhbXM/OiBDcmVkZW50aWFsc0NvbXBvbmVudFBhcmFtcyB8IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIH0pIHtcbiAgICB0aGlzLmN1cnJlbnRWaWV3ID0gZXZlbnQudmlldztcbiAgICB0aGlzLmNyZWRlbnRpYWxzID0gZXZlbnQuY3JlZGVudGlhbHMgfHwge307XG4gICAgdGhpcy5sb2dpblZpZXdQYXJhbXMgPSBldmVudC5sb2dpblZpZXdQYXJhbXMgfHwge307XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pIG9ua2V5dXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5ICE9PSAnRW50ZXInKSB7XG4gICAgICB0aGlzLmxvZ2luU2VydmljZS5jbGVhbk1lc3NhZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5sb2dpblNlcnZpY2UucmVzZXQoKTtcbiAgICB0aGlzLnNldFZpZXcoKTtcbiAgICB0aGlzLmxvZ2luU2VydmljZS5jbGVhbk1lc3NhZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvZ2luQXV0b21hdGljYWxseSgpIHtcbiAgICB0aGlzLmxvZ2luU2VydmljZS5hdXRvbWF0aWNMb2dpbkluUHJvZ3Jlc3MkLm5leHQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMubG9naW5TZXJ2aWNlLmxvZ2luKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc3QgcHJlZmVycmVkTG9naW5PcHRpb25UeXBlID0gdGhpcy5sb2dpblNlcnZpY2UubG9naW5Nb2RlLnR5cGU7XG4gICAgICBpZiAocHJlZmVycmVkTG9naW5PcHRpb25UeXBlID09PSBUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyKSB7XG4gICAgICAgIHRoaXMubG9naW5TZXJ2aWNlLnJlZGlyZWN0VG9PYXV0aCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcHJlZmVycmVkTG9naW5PcHRpb25UeXBlID09PSBUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyX0lOVEVSTkFMICYmXG4gICAgICAgICAgd2luZG93LmxvY2F0aW9uLnByb3RvY29sICE9PSAnaHR0cHM6J1xuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmFsZXJ0LmRhbmdlcihnZXR0ZXh0KCdDdXJyZW50IGxvZ2luIG1vZGUgb25seSBzdXBwb3J0cyBIVFRQUy4nKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZS5yZXMgJiYgZS5yZXMuc3RhdHVzID09PSA0MDMpIHtcbiAgICAgICAgICB0aGlzLmFsZXJ0LmFkZFNlcnZlckZhaWx1cmUoZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5sb2dpblNlcnZpY2UuYXV0b21hdGljTG9naW5JblByb2dyZXNzJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmlldygpIHtcbiAgICBpZiAodGhpcy5jcmVkZW50aWFscyAmJiB0aGlzLmNyZWRlbnRpYWxzLnRva2VuKSB7XG4gICAgICB0aGlzLmhhbmRsZUxvZ2luVGVtcGxhdGUoeyB2aWV3OiBMb2dpblZpZXdzLkNoYW5nZVBhc3N3b3JkLCBjcmVkZW50aWFsczogdGhpcy5jcmVkZW50aWFscyB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubG9naW5TZXJ2aWNlLnNob3dUZW5hbnRTZXR1cCgpKSB7XG4gICAgICB0aGlzLmhhbmRsZUxvZ2luVGVtcGxhdGUoeyB2aWV3OiBMb2dpblZpZXdzLlRlbmFudElkU2V0dXAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFuZGxlTG9naW5UZW1wbGF0ZSh7IHZpZXc6IExvZ2luVmlld3MuQ3JlZGVudGlhbHMgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJhbUFuZENsZWFyKHBhcmFtTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBwYXJhbVZhbHVlID0gdGhpcy5vcHRpb25zLmdldDxzdHJpbmc+KHBhcmFtTmFtZSk7XG4gICAgaWYgKHBhcmFtVmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5zZXQocGFyYW1OYW1lLCB1bmRlZmluZWQpOyAvLyBvbmx5IHVzZSBvbmNlXG4gICAgfVxuICAgIHJldHVybiBwYXJhbVZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTc29EYXRhKCk6IFNzb0RhdGEgfCBTc29FcnJvciB7XG4gICAgY29uc3QgY29kZSA9IHRoaXMuZ2V0UGFyYW1BbmRDbGVhcignY29kZScpO1xuICAgIGNvbnN0IHNlc3Npb25TdGF0ZSA9IHRoaXMuZ2V0UGFyYW1BbmRDbGVhcignc2Vzc2lvbl9zdGF0ZScpO1xuICAgIGlmIChjb2RlKSB7XG4gICAgICByZXR1cm4geyBzZXNzaW9uU3RhdGUsIGNvZGUgfTtcbiAgICB9XG5cbiAgICBjb25zdCBzc29FcnJvciA9IHRoaXMuZ2V0UGFyYW1BbmRDbGVhcignZXJyb3InKTtcbiAgICBjb25zdCBzc29FcnJvckRlc2NyaXB0aW9uID0gdGhpcy5nZXRQYXJhbUFuZENsZWFyKCdlcnJvcl9kZXNjcmlwdGlvbicpO1xuICAgIGlmIChzc29FcnJvciAmJiBzc29FcnJvckRlc2NyaXB0aW9uKSB7XG4gICAgICByZXR1cm4geyBzc29FcnJvciwgc3NvRXJyb3JEZXNjcmlwdGlvbiB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU3NvKHNzb0RhdGE6IFNzb0RhdGEgfCBTc29FcnJvcikge1xuICAgIGlmICgnc3NvRXJyb3InIGluIHNzb0RhdGEpIHtcbiAgICAgIHRoaXMubG9naW5TZXJ2aWNlLnNob3dTc29FcnJvcihcbiAgICAgICAgZGVjb2RlVVJJQ29tcG9uZW50KHNzb0RhdGEuc3NvRXJyb3JEZXNjcmlwdGlvbikucmVwbGFjZSgvXFwrL2csICclMjAnKVxuICAgICAgKTtcbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dpblNlcnZpY2VcbiAgICAgICAgLmxvZ2luQnlTc28oc3NvRGF0YSlcbiAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5sb2dpblNlcnZpY2UubG9naW4oKSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICBpZiAoZS5yZXM/LnN0YXR1cykge1xuICAgICAgICAgICAgdGhpcy5hbGVydC5hZGRTZXJ2ZXJGYWlsdXJlKGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwibG9hZGluZyBjYXJkIGZhZGVJblVwIGFuaW1hdGVkIGVsZXZhdGlvbi1sZ1wiXG4gICpuZ0lmPVwiY3VycmVudFZpZXcgIT09IExPR0lOX1ZJRVdTLk5vbmVcIlxuICBbbmdTd2l0Y2hdPVwiY3VycmVudFZpZXdcIlxuPlxuICA8bWFpbiBjbGFzcz1cImNhcmQtYmxvY2sgcC1iLTBcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm1haW5sb2dvXCI+PC9zcGFuPlxuXG4gICAgPGM4eS1jcmVkZW50aWFsc1xuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkxPR0lOX1ZJRVdTLkNyZWRlbnRpYWxzXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICAgIFtsb2dpblZpZXdQYXJhbXNdPVwibG9naW5WaWV3UGFyYW1zXCJcbiAgICA+PC9jOHktY3JlZGVudGlhbHM+XG4gICAgPGM4eS1yZWNvdmVyLXBhc3N3b3JkXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiTE9HSU5fVklFV1MuUmVjb3ZlclBhc3N3b3JkXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICA+PC9jOHktcmVjb3Zlci1wYXNzd29yZD5cbiAgICA8Yzh5LWNoYW5nZS1wYXNzd29yZFxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkxPR0lOX1ZJRVdTLkNoYW5nZVBhc3N3b3JkXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICAgIFtjcmVkZW50aWFsc109XCJjcmVkZW50aWFsc1wiXG4gICAgPjwvYzh5LWNoYW5nZS1wYXNzd29yZD5cbiAgICA8Yzh5LXRvdHAtYXV0aFxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkxPR0lOX1ZJRVdTLlRvdHBDaGFsbGVuZ2VcIlxuICAgICAgKG9uQ2FuY2VsKT1cInJlc2V0KClcIlxuICAgICAgW3ZpZXddPVwiY3VycmVudFZpZXdcIlxuICAgICAgW2NyZWRlbnRpYWxzXT1cImNyZWRlbnRpYWxzXCJcbiAgICA+PC9jOHktdG90cC1hdXRoPlxuICAgIDxjOHktdG90cC1hdXRoXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiTE9HSU5fVklFV1MuVG90cFNldHVwXCJcbiAgICAgIChvbkNhbmNlbCk9XCJyZXNldCgpXCJcbiAgICAgIFt2aWV3XT1cImN1cnJlbnRWaWV3XCJcbiAgICAgIFtjcmVkZW50aWFsc109XCJjcmVkZW50aWFsc1wiXG4gICAgPjwvYzh5LXRvdHAtYXV0aD5cbiAgICA8Yzh5LXNtcy1jaGFsbGVuZ2VcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJMT0dJTl9WSUVXUy5TbXNDaGFsbGVuZ2VcIlxuICAgICAgKG9uQ2FuY2VsKT1cInJlc2V0KClcIlxuICAgICAgW2NyZWRlbnRpYWxzXT1cImNyZWRlbnRpYWxzXCJcbiAgICA+PC9jOHktc21zLWNoYWxsZW5nZT5cblxuICAgIDxjOHktcHJvdmlkZS1waG9uZS1udW1iZXJcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJMT0dJTl9WSUVXUy5Qcm92aWRlUGhvbmVOdW1iZXJcIlxuICAgICAgKG9uQ2FuY2VsKT1cInJlc2V0KClcIlxuICAgICAgKG9uQ2hhbmdlVmlldyk9XCJoYW5kbGVMb2dpblRlbXBsYXRlKCRldmVudClcIlxuICAgICAgW2NyZWRlbnRpYWxzXT1cImNyZWRlbnRpYWxzXCJcbiAgICA+PC9jOHktcHJvdmlkZS1waG9uZS1udW1iZXI+XG4gICAgPGM4eS10ZW5hbnQtaWQtc2V0dXBcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJMT0dJTl9WSUVXUy5UZW5hbnRJZFNldHVwXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICA+PC9jOHktdGVuYW50LWlkLXNldHVwPlxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtLXQtOFwiXG4gICAgICAqbmdJZj1cIiEhKHVpLnN0YXRlJCB8IGFzeW5jKS5sb2dpbkV4dHJhTGlua1wiXG4gICAgPlxuICAgICAgPGRpdiAqbmdJZj1cIiEhKHVpLnN0YXRlJCB8IGFzeW5jKS5sb2dpbkV4dHJhTGluay5sZW5ndGg7IGVsc2Ugc2luZ2xlRXh0cmFMaW5rXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgY2xhc3M9XCJzbWFsbCBkLWJsb2NrIG0tdC04XCJcbiAgICAgICAgICB0aXRsZT1cInt7IGxpbmsubGFiZWwgfX1cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBsaW5rIG9mICh1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmtcIlxuICAgICAgICAgIFtocmVmXT1cImxpbmsudXJsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGxpbmsubGFiZWwgfX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZUV4dHJhTGluaz5cbiAgICAgICAgPGFcbiAgICAgICAgICBjbGFzcz1cInNtYWxsXCJcbiAgICAgICAgICB0aXRsZT1cInt7ICh1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmsubGFiZWwgfX1cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIFtocmVmXT1cIih1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmsudXJsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICh1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmsubGFiZWwgfX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cblxuICAgIDxjOHktYWxlcnQtb3V0bGV0IHBvc2l0aW9uPVwic3RhdGljXCI+PC9jOHktYWxlcnQtb3V0bGV0PlxuICA8L21haW4+XG48L2Rpdj5cbiJdfQ==
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9sb2dpbi9sb2dpbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFlBQVksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUU1RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPN0QsTUFBTSxPQUFPLGNBQWM7SUFhekI7O09BRUc7SUFDSCxZQUNTLFlBQTBCLEVBQ3pCLE9BQXVCLEVBQ3ZCLEtBQW1CLEVBQ25CLGlDQUFvRSxFQUNyRSxFQUFtQjtRQUpuQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUN6QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLHNDQUFpQyxHQUFqQyxpQ0FBaUMsQ0FBbUM7UUFDckUsT0FBRSxHQUFGLEVBQUUsQ0FBaUI7UUFwQjVCLGdCQUFXLEdBQWUsVUFBVSxDQUFDLElBQUksQ0FBQztRQUMxQyxnQkFBVyxHQUFHLFVBQVUs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O1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0gsQ0FBQzsrR0E1SVUsY0FBYzttR0FBZCxjQUFjLGdJQ2hCM0Isb2xGQWlGQTs7NEZEakVhLGNBQWM7a0JBTDFCLFNBQVM7K0JBQ0UsV0FBVzt1TkFVWixJQUFJO3NCQUFaLEtBQUs7Z0JBaUQ2QixPQUFPO3NCQUF6QyxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElDcmVkZW50aWFscywgVGVuYW50TG9naW5PcHRpb25UeXBlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi9sb2dpbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL29wdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBMb2dpblZpZXdzLCBTc29EYXRhLCBTc29FcnJvciB9IGZyb20gJy4vbG9naW4ubW9kZWwnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcbmltcG9ydCB7IENyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZSB9IGZyb20gJy4vY3JlZGVudGlhbHMtZnJvbS1xdWVyeS1wYXJhbXMuc2VydmljZSc7XG5pbXBvcnQgeyBDcmVkZW50aWFsc0NvbXBvbmVudFBhcmFtcyB9IGZyb20gJy4vY3JlZGVudGlhbHMtY29tcG9uZW50LXBhcmFtcyc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vdWktc3RhdGUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1sb2dpbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2dpbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW11cbn0pXG5leHBvcnQgY2xhc3MgTG9naW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGN1cnJlbnRWaWV3OiBMb2dpblZpZXdzID0gTG9naW5WaWV3cy5Ob25lO1xuICBMT0dJTl9WSUVXUyA9IExvZ2luVmlld3M7XG5cbiAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG5cbiAgY3JlZGVudGlhbHM6IElDcmVkZW50aWFscyA9IHt9O1xuICBsb2dpblZpZXdQYXJhbXM6IENyZWRlbnRpYWxzQ29tcG9uZW50UGFyYW1zIHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICBkaXNwbGF5QWxlcnRzID0gZmFsc2U7XG4gIHByaXZhdGUgVE9LRU5fUEFSQU0gPSAndG9rZW4nO1xuXG4gIC8qKlxuICAgKiBKdXN0IERJLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGxvZ2luU2VydmljZTogTG9naW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgb3B0aW9uczogT3B0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydDogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY3JlZGVudGlhbHNGcm9tUXVlcnlQYXJhbXNTZXJ2aWNlOiBDcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtc1NlcnZpY2UsXG4gICAgcHVibGljIHVpOiBBcHBTdGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5nZXRQYXJhbUFuZENsZWFyKHRoaXMuVE9LRU5fUEFSQU0pO1xuICAgIGNvbnN0IHNzb0RhdGEgPSB0aGlzLmdldFNzb0RhdGEoKTtcbiAgICBpZiAoc3NvRGF0YSkge1xuICAgICAgdGhpcy5oYW5kbGVTc28oc3NvRGF0YSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxvZ2luU2VydmljZS5pc0ZpcnN0TG9naW4pIHtcbiAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgdGhpcy5sb2dpbkF1dG9tYXRpY2FsbHkoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY3JlZGVudGlhbHMudG9rZW4gPSB0b2tlbjtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmxvZ2luU2VydmljZS5pc0ZpcnN0TG9naW4gPSBmYWxzZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8vIG1ha2Ugc3VyZSB0aGF0IHdlIGRvIG5vdCBoYXZlIGFueSBxdWVyeVBhcmFtZXRlcnMgcmVsYXRlZCB0byBjcmVkZW50aWFscyBhZnRlciBsb2dnaW5nIGluIG9yIGV2ZW4gaWYgd2Ugd2VyZSBhbHJlYWR5IGxvZ2dlZCBpbi5cbiAgICB0aGlzLmNyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZS5yZW1vdmVDcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtcygpO1xuICB9XG5cbiAgaGFuZGxlTG9naW5UZW1wbGF0ZShldmVudDoge1xuICAgIHZpZXc6IExvZ2luVmlld3M7XG4gICAgY3JlZGVudGlhbHM/OiBJQ3JlZGVudGlhbHM7XG4gICAgbG9naW5WaWV3UGFyYW1zPzogQ3JlZGVudGlhbHNDb21wb25lbnRQYXJhbXMgfCB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuICB9KSB7XG4gICAgdGhpcy5jdXJyZW50VmlldyA9IGV2ZW50LnZpZXc7XG4gICAgdGhpcy5jcmVkZW50aWFscyA9IGV2ZW50LmNyZWRlbnRpYWxzIHx8IHt9O1xuICAgIHRoaXMubG9naW5WaWV3UGFyYW1zID0gZXZlbnQubG9naW5WaWV3UGFyYW1zIHx8IHt9O1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5dXAnLCBbJyRldmVudCddKSBvbmtleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSAhPT0gJ0VudGVyJykge1xuICAgICAgdGhpcy5sb2dpblNlcnZpY2UuY2xlYW5NZXNzYWdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMubG9naW5TZXJ2aWNlLnJlc2V0KCk7XG4gICAgdGhpcy5zZXRWaWV3KCk7XG4gICAgdGhpcy5sb2dpblNlcnZpY2UuY2xlYW5NZXNzYWdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2dpbkF1dG9tYXRpY2FsbHkoKSB7XG4gICAgdGhpcy5sb2dpblNlcnZpY2UuYXV0b21hdGljTG9naW5JblByb2dyZXNzJC5uZXh0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmxvZ2luU2VydmljZS5sb2dpbigpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMubG9naW5TZXJ2aWNlLmNsZWFyQ29va2llcygpO1xuICAgICAgY29uc3QgcHJlZmVycmVkTG9naW5PcHRpb25UeXBlID0gdGhpcy5sb2dpblNlcnZpY2UubG9naW5Nb2RlLnR5cGU7XG4gICAgICBpZiAocHJlZmVycmVkTG9naW5PcHRpb25UeXBlID09PSBUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyKSB7XG4gICAgICAgIHRoaXMubG9naW5TZXJ2aWNlLnJlZGlyZWN0VG9PYXV0aCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcHJlZmVycmVkTG9naW5PcHRpb25UeXBlID09PSBUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyX0lOVEVSTkFMICYmXG4gICAgICAgICAgd2luZG93LmxvY2F0aW9uLnByb3RvY29sICE9PSAnaHR0cHM6J1xuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmFsZXJ0LmRhbmdlcihnZXR0ZXh0KCdDdXJyZW50IGxvZ2luIG1vZGUgb25seSBzdXBwb3J0cyBIVFRQUy4nKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZS5yZXMgJiYgZS5yZXMuc3RhdHVzID09PSA0MDMpIHtcbiAgICAgICAgICB0aGlzLmFsZXJ0LmFkZFNlcnZlckZhaWx1cmUoZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5sb2dpblNlcnZpY2UuYXV0b21hdGljTG9naW5JblByb2dyZXNzJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmlldygpIHtcbiAgICBpZiAodGhpcy5jcmVkZW50aWFscyAmJiB0aGlzLmNyZWRlbnRpYWxzLnRva2VuKSB7XG4gICAgICB0aGlzLmhhbmRsZUxvZ2luVGVtcGxhdGUoeyB2aWV3OiBMb2dpblZpZXdzLkNoYW5nZVBhc3N3b3JkLCBjcmVkZW50aWFsczogdGhpcy5jcmVkZW50aWFscyB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubG9naW5TZXJ2aWNlLnNob3dUZW5hbnRTZXR1cCgpKSB7XG4gICAgICB0aGlzLmhhbmRsZUxvZ2luVGVtcGxhdGUoeyB2aWV3OiBMb2dpblZpZXdzLlRlbmFudElkU2V0dXAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFuZGxlTG9naW5UZW1wbGF0ZSh7IHZpZXc6IExvZ2luVmlld3MuQ3JlZGVudGlhbHMgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJhbUFuZENsZWFyKHBhcmFtTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBwYXJhbVZhbHVlID0gdGhpcy5vcHRpb25zLmdldDxzdHJpbmc+KHBhcmFtTmFtZSk7XG4gICAgaWYgKHBhcmFtVmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5zZXQocGFyYW1OYW1lLCB1bmRlZmluZWQpOyAvLyBvbmx5IHVzZSBvbmNlXG4gICAgfVxuICAgIHJldHVybiBwYXJhbVZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTc29EYXRhKCk6IFNzb0RhdGEgfCBTc29FcnJvciB7XG4gICAgY29uc3QgY29kZSA9IHRoaXMuZ2V0UGFyYW1BbmRDbGVhcignY29kZScpO1xuICAgIGNvbnN0IHNlc3Npb25TdGF0ZSA9IHRoaXMuZ2V0UGFyYW1BbmRDbGVhcignc2Vzc2lvbl9zdGF0ZScpO1xuICAgIGlmIChjb2RlKSB7XG4gICAgICByZXR1cm4geyBzZXNzaW9uU3RhdGUsIGNvZGUgfTtcbiAgICB9XG5cbiAgICBjb25zdCBzc29FcnJvciA9IHRoaXMuZ2V0UGFyYW1BbmRDbGVhcignZXJyb3InKTtcbiAgICBjb25zdCBzc29FcnJvckRlc2NyaXB0aW9uID0gdGhpcy5nZXRQYXJhbUFuZENsZWFyKCdlcnJvcl9kZXNjcmlwdGlvbicpO1xuICAgIGlmIChzc29FcnJvciAmJiBzc29FcnJvckRlc2NyaXB0aW9uKSB7XG4gICAgICByZXR1cm4geyBzc29FcnJvciwgc3NvRXJyb3JEZXNjcmlwdGlvbiB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU3NvKHNzb0RhdGE6IFNzb0RhdGEgfCBTc29FcnJvcikge1xuICAgIGlmICgnc3NvRXJyb3InIGluIHNzb0RhdGEpIHtcbiAgICAgIHRoaXMubG9naW5TZXJ2aWNlLnNob3dTc29FcnJvcihcbiAgICAgICAgZGVjb2RlVVJJQ29tcG9uZW50KHNzb0RhdGEuc3NvRXJyb3JEZXNjcmlwdGlvbikucmVwbGFjZSgvXFwrL2csICclMjAnKVxuICAgICAgKTtcbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dpblNlcnZpY2VcbiAgICAgICAgLmxvZ2luQnlTc28oc3NvRGF0YSlcbiAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5sb2dpblNlcnZpY2UubG9naW4oKSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICBpZiAoZS5yZXM/LnN0YXR1cykge1xuICAgICAgICAgICAgdGhpcy5hbGVydC5hZGRTZXJ2ZXJGYWlsdXJlKGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwibG9hZGluZyBjYXJkIGZhZGVJblVwIGFuaW1hdGVkIGVsZXZhdGlvbi1sZ1wiXG4gICpuZ0lmPVwiY3VycmVudFZpZXcgIT09IExPR0lOX1ZJRVdTLk5vbmVcIlxuICBbbmdTd2l0Y2hdPVwiY3VycmVudFZpZXdcIlxuPlxuICA8bWFpbiBjbGFzcz1cImNhcmQtYmxvY2sgcC1iLTBcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm1haW5sb2dvXCI+PC9zcGFuPlxuXG4gICAgPGM4eS1jcmVkZW50aWFsc1xuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkxPR0lOX1ZJRVdTLkNyZWRlbnRpYWxzXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICAgIFtsb2dpblZpZXdQYXJhbXNdPVwibG9naW5WaWV3UGFyYW1zXCJcbiAgICA+PC9jOHktY3JlZGVudGlhbHM+XG4gICAgPGM4eS1yZWNvdmVyLXBhc3N3b3JkXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiTE9HSU5fVklFV1MuUmVjb3ZlclBhc3N3b3JkXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICA+PC9jOHktcmVjb3Zlci1wYXNzd29yZD5cbiAgICA8Yzh5LWNoYW5nZS1wYXNzd29yZFxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkxPR0lOX1ZJRVdTLkNoYW5nZVBhc3N3b3JkXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICAgIFtjcmVkZW50aWFsc109XCJjcmVkZW50aWFsc1wiXG4gICAgPjwvYzh5LWNoYW5nZS1wYXNzd29yZD5cbiAgICA8Yzh5LXRvdHAtYXV0aFxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkxPR0lOX1ZJRVdTLlRvdHBDaGFsbGVuZ2VcIlxuICAgICAgKG9uQ2FuY2VsKT1cInJlc2V0KClcIlxuICAgICAgW3ZpZXddPVwiY3VycmVudFZpZXdcIlxuICAgICAgW2NyZWRlbnRpYWxzXT1cImNyZWRlbnRpYWxzXCJcbiAgICA+PC9jOHktdG90cC1hdXRoPlxuICAgIDxjOHktdG90cC1hdXRoXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiTE9HSU5fVklFV1MuVG90cFNldHVwXCJcbiAgICAgIChvbkNhbmNlbCk9XCJyZXNldCgpXCJcbiAgICAgIFt2aWV3XT1cImN1cnJlbnRWaWV3XCJcbiAgICAgIFtjcmVkZW50aWFsc109XCJjcmVkZW50aWFsc1wiXG4gICAgPjwvYzh5LXRvdHAtYXV0aD5cbiAgICA8Yzh5LXNtcy1jaGFsbGVuZ2VcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJMT0dJTl9WSUVXUy5TbXNDaGFsbGVuZ2VcIlxuICAgICAgKG9uQ2FuY2VsKT1cInJlc2V0KClcIlxuICAgICAgW2NyZWRlbnRpYWxzXT1cImNyZWRlbnRpYWxzXCJcbiAgICA+PC9jOHktc21zLWNoYWxsZW5nZT5cblxuICAgIDxjOHktcHJvdmlkZS1waG9uZS1udW1iZXJcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJMT0dJTl9WSUVXUy5Qcm92aWRlUGhvbmVOdW1iZXJcIlxuICAgICAgKG9uQ2FuY2VsKT1cInJlc2V0KClcIlxuICAgICAgKG9uQ2hhbmdlVmlldyk9XCJoYW5kbGVMb2dpblRlbXBsYXRlKCRldmVudClcIlxuICAgICAgW2NyZWRlbnRpYWxzXT1cImNyZWRlbnRpYWxzXCJcbiAgICA+PC9jOHktcHJvdmlkZS1waG9uZS1udW1iZXI+XG4gICAgPGM4eS10ZW5hbnQtaWQtc2V0dXBcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJMT0dJTl9WSUVXUy5UZW5hbnRJZFNldHVwXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICA+PC9jOHktdGVuYW50LWlkLXNldHVwPlxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtLXQtOFwiXG4gICAgICAqbmdJZj1cIiEhKHVpLnN0YXRlJCB8IGFzeW5jKS5sb2dpbkV4dHJhTGlua1wiXG4gICAgPlxuICAgICAgPGRpdiAqbmdJZj1cIiEhKHVpLnN0YXRlJCB8IGFzeW5jKS5sb2dpbkV4dHJhTGluay5sZW5ndGg7IGVsc2Ugc2luZ2xlRXh0cmFMaW5rXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgY2xhc3M9XCJzbWFsbCBkLWJsb2NrIG0tdC04XCJcbiAgICAgICAgICB0aXRsZT1cInt7IGxpbmsubGFiZWwgfX1cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBsaW5rIG9mICh1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmtcIlxuICAgICAgICAgIFtocmVmXT1cImxpbmsudXJsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGxpbmsubGFiZWwgfX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZUV4dHJhTGluaz5cbiAgICAgICAgPGFcbiAgICAgICAgICBjbGFzcz1cInNtYWxsXCJcbiAgICAgICAgICB0aXRsZT1cInt7ICh1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmsubGFiZWwgfX1cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIFtocmVmXT1cIih1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmsudXJsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICh1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmsubGFiZWwgfX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cblxuICAgIDxjOHktYWxlcnQtb3V0bGV0IHBvc2l0aW9uPVwic3RhdGljXCI+PC9jOHktYWxlcnQtb3V0bGV0PlxuICA8L21haW4+XG48L2Rpdj5cbiJdfQ==