@c8y/ngx-components 1020.28.11 → 1020.33.1

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 (107) hide show
  1. package/bookmarks/bookmarks.service.d.ts +3 -2
  2. package/bookmarks/bookmarks.service.d.ts.map +1 -1
  3. package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
  4. package/context-dashboard/device-info-dashboard/device-info-dashboard.component.d.ts.map +1 -1
  5. package/core/common/common.module.d.ts +2 -2
  6. package/core/common/humanize-app-name.model.d.ts +2 -2
  7. package/core/common/humanize-app-name.pipe.d.ts.map +1 -1
  8. package/core/dashboard/dashboard.model.d.ts +1 -0
  9. package/core/dashboard/dashboard.model.d.ts.map +1 -1
  10. package/core/dashboard/widgets-dashboard.component.d.ts +1 -0
  11. package/core/dashboard/widgets-dashboard.component.d.ts.map +1 -1
  12. package/core/data-grid/data-grid.model.d.ts +1 -1
  13. package/core/data-grid/data-grid.model.d.ts.map +1 -1
  14. package/core/data-grid/visible-controls.pipe.d.ts +3 -2
  15. package/core/data-grid/visible-controls.pipe.d.ts.map +1 -1
  16. package/esm2022/bookmarks/bookmarks.service.mjs +9 -7
  17. package/esm2022/context-dashboard/context-dashboard.service.mjs +6 -3
  18. package/esm2022/context-dashboard/device-info-dashboard/device-info-dashboard.component.mjs +39 -3
  19. package/esm2022/core/common/common.module.mjs +3 -3
  20. package/esm2022/core/common/humanize-app-name.model.mjs +3 -3
  21. package/esm2022/core/common/humanize-app-name.pipe.mjs +6 -5
  22. package/esm2022/core/dashboard/dashboard.model.mjs +2 -2
  23. package/esm2022/core/dashboard/widgets-dashboard.component.mjs +12 -3
  24. package/esm2022/core/data-grid/data-grid.component.mjs +3 -3
  25. package/esm2022/core/data-grid/data-grid.model.mjs +1 -1
  26. package/esm2022/core/data-grid/visible-controls.pipe.mjs +5 -4
  27. package/esm2022/core/docs/defaults.items.mjs +2 -2
  28. package/esm2022/protocol-opcua/opcua-device-protocol-data-reporting.component.mjs +3 -3
  29. package/esm2022/repository/configuration/list/configuration-list.component.mjs +107 -60
  30. package/esm2022/repository/shared/columns/device-type.cell-renderer.component.mjs +7 -3
  31. package/esm2022/repository/shared/columns/device-type.grid-column.mjs +2 -2
  32. package/esm2022/repository/shared/columns/file.cell-renderer.component.mjs +39 -0
  33. package/esm2022/repository/shared/columns/file.grid-column.mjs +13 -0
  34. package/esm2022/repository/shared/columns/name.cell-renderer.component.mjs +26 -5
  35. package/esm2022/repository/shared/columns/name.grid-column.mjs +1 -1
  36. package/esm2022/repository/shared/columns/type.cell-renderer.component.mjs +18 -0
  37. package/esm2022/repository/shared/columns/type.filtering-form-renderer.component.mjs +115 -0
  38. package/esm2022/repository/shared/columns/type.grid-column.mjs +29 -0
  39. package/esm2022/repository/shared/index.mjs +10 -1
  40. package/esm2022/repository/software/list/software-list.component.mjs +9 -4
  41. package/esm2022/repository/software/list/software-repository-list.module.mjs +3 -15
  42. package/esm2022/widgets/definitions/device-management-welcome/index.mjs +2 -2
  43. package/esm2022/widgets/implementations/info-gauge/info-gauge-widget-view/info-gauge-widget-view.component.mjs +22 -5
  44. package/fesm2022/c8y-ngx-components-bookmarks.mjs +7 -5
  45. package/fesm2022/c8y-ngx-components-bookmarks.mjs.map +1 -1
  46. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +43 -4
  47. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  48. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +2 -2
  49. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
  50. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +118 -68
  51. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  52. package/fesm2022/c8y-ngx-components-repository-shared.mjs +283 -81
  53. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  54. package/fesm2022/c8y-ngx-components-repository-software.mjs +31 -154
  55. package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
  56. package/fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs +1 -1
  57. package/fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs.map +1 -1
  58. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +24 -9
  59. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
  60. package/fesm2022/c8y-ngx-components.mjs +27 -17
  61. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  62. package/locales/de.po +6 -0
  63. package/locales/es.po +6 -0
  64. package/locales/fr.po +6 -0
  65. package/locales/ja_JP.po +6 -0
  66. package/locales/locales.pot +38 -23
  67. package/locales/nl.po +6 -0
  68. package/locales/pl.po +6 -0
  69. package/locales/pt_BR.po +6 -0
  70. package/package.json +1 -1
  71. package/repository/configuration/list/configuration-list.component.d.ts +21 -17
  72. package/repository/configuration/list/configuration-list.component.d.ts.map +1 -1
  73. package/repository/shared/columns/device-type.cell-renderer.component.d.ts +4 -1
  74. package/repository/shared/columns/device-type.cell-renderer.component.d.ts.map +1 -1
  75. package/repository/shared/columns/device-type.grid-column.d.ts +1 -0
  76. package/repository/shared/columns/device-type.grid-column.d.ts.map +1 -1
  77. package/repository/shared/columns/file.cell-renderer.component.d.ts +15 -0
  78. package/repository/shared/columns/file.cell-renderer.component.d.ts.map +1 -0
  79. package/repository/shared/columns/file.grid-column.d.ts +8 -0
  80. package/repository/shared/columns/file.grid-column.d.ts.map +1 -0
  81. package/repository/shared/columns/name.cell-renderer.component.d.ts.map +1 -1
  82. package/repository/shared/columns/name.grid-column.d.ts +3 -1
  83. package/repository/shared/columns/name.grid-column.d.ts.map +1 -1
  84. package/repository/shared/columns/type.cell-renderer.component.d.ts +9 -0
  85. package/repository/shared/columns/type.cell-renderer.component.d.ts.map +1 -0
  86. package/repository/{software/list/columns/software-type.filtering-form-renderer.component.d.ts → shared/columns/type.filtering-form-renderer.component.d.ts} +9 -8
  87. package/repository/shared/columns/type.filtering-form-renderer.component.d.ts.map +1 -0
  88. package/repository/shared/columns/type.grid-column.d.ts +20 -0
  89. package/repository/shared/columns/type.grid-column.d.ts.map +1 -0
  90. package/repository/shared/index.d.ts +9 -0
  91. package/repository/shared/index.d.ts.map +1 -1
  92. package/repository/software/list/software-list.component.d.ts.map +1 -1
  93. package/repository/software/list/software-repository-list.module.d.ts +8 -10
  94. package/repository/software/list/software-repository-list.module.d.ts.map +1 -1
  95. package/widgets/definitions/device-management-welcome/index.d.ts +1 -1
  96. package/widgets/definitions/device-management-welcome/index.d.ts.map +1 -1
  97. package/widgets/device-management/index.d.ts +1 -1
  98. package/widgets/implementations/info-gauge/info-gauge-widget-view/info-gauge-widget-view.component.d.ts +5 -1
  99. package/widgets/implementations/info-gauge/info-gauge-widget-view/info-gauge-widget-view.component.d.ts.map +1 -1
  100. package/esm2022/repository/software/list/columns/software-type.cell-renderer.component.mjs +0 -17
  101. package/esm2022/repository/software/list/columns/software-type.filtering-form-renderer.component.mjs +0 -93
  102. package/esm2022/repository/software/list/columns/software-type.grid-column.mjs +0 -28
  103. package/repository/software/list/columns/software-type.cell-renderer.component.d.ts +0 -9
  104. package/repository/software/list/columns/software-type.cell-renderer.component.d.ts.map +0 -1
  105. package/repository/software/list/columns/software-type.filtering-form-renderer.component.d.ts.map +0 -1
  106. package/repository/software/list/columns/software-type.grid-column.d.ts +0 -5
  107. package/repository/software/list/columns/software-type.grid-column.d.ts.map +0 -1
@@ -18,4 +18,4 @@ export var FilteringActionType;
18
18
  /** Action invoked when filter settings are to be cleared. */
19
19
  FilteringActionType["ResetFilter"] = "RESET_FILTER";
20
20
  })(FilteringActionType || (FilteringActionType = {}));
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9kYXRhLWdyaWQvZGF0YS1ncmlkLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTBLQSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxFQUFFLENBQUM7QUFFekMsNENBQTRDO0FBQzVDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQ2pDLDZDQUE2QztJQUM3QyxJQUFJLEVBQUUsQ0FBQztJQUVQLGdEQUFnRDtJQUNoRCxPQUFPLEVBQUUsQ0FBQztJQUVWLG1EQUFtRDtJQUNuRCxZQUFZLEVBQUUsSUFBSTtJQUVsQixrREFBa0Q7SUFDbEQsV0FBVyxFQUFFLElBQUk7Q0FDbEIsQ0FBQztBQWFGLHlCQUF5QjtBQUN6QixNQUFNLENBQU4sSUFBWSxtQkFNWDtBQU5ELFdBQVksbUJBQW1CO0lBQzdCLDZEQUE2RDtJQUM3RCxtREFBNEIsQ0FBQTtJQUU1Qiw2REFBNkQ7SUFDN0QsbURBQTRCLENBQUE7QUFDOUIsQ0FBQyxFQU5XLG1CQUFtQixLQUFuQixtQkFBbUIsUUFNOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW1wbGF0ZVJlZiwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSVJlc3VsdExpc3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRXh0ZW5zaW9uRmFjdG9yeSB9IGZyb20gJy4uL2NvbW1vbi9leHRlbnNpb24taG9va3MnO1xuaW1wb3J0IHsgR3JpZENvbmZpZ0NvbnRleHQgfSBmcm9tICcuL2RhdGEtZ3JpZC1jb25maWd1cmF0aW9uLm1vZGVsJztcblxuLyoqIERlc2NyaWJlcyB0aGUgaW50ZXJmYWNlIG9mIHRoZSBkYXRhIGdyaWQuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHcmlkIHtcbiAgLyoqIFRoZSBsaXN0IG9mIGNvbHVtbnMuICovXG4gIGNvbHVtbnM6IENvbHVtbltdO1xuXG4gIC8qKiBUaGUgbGlzdCBvZiBpdGVtcy4gKi9cbiAgcm93czogUm93W107XG5cbiAgLyoqIFBhZ2luYXRpb24gb2JqZWN0LiAqL1xuICBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uO1xuXG4gIC8qKiBBIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGZldGNoIHNlcnZlciBkYXRhLiAqL1xuICBzZXJ2ZXJTaWRlRGF0YUNhbGxiYWNrOiBTZXJ2ZXJTaWRlRGF0YUNhbGxiYWNrO1xuXG4gIC8qKiBXaGV0aGVyIGl0ZW1zIGFyZSBzZWxlY3RhYmxlLiAqL1xuICBzZWxlY3RhYmxlOiBib29sZWFuO1xuXG4gIC8qKiBUaGUgbmFtZSBvZiB0aGUgcHJpbWFyeSBrZXkgcHJvcGVydHkuICovXG4gIHNlbGVjdGlvblByaW1hcnlLZXk6IHN0cmluZztcblxuICAvKiogRGF0YSBncmlkIGRpc3BsYXkgb3B0aW9ucy4gKi9cbiAgZGlzcGxheU9wdGlvbnM6IERpc3BsYXlPcHRpb25zO1xuXG4gIC8qKiBJbmRpdmlkdWFsIGFjdGlvbiBjb250cm9scy4gKi9cbiAgYWN0aW9uQ29udHJvbHM6IEFjdGlvbkNvbnRyb2xbXTtcblxuICAvKiogQnVsayBhY3Rpb24gY29udHJvbHMuICovXG4gIGJ1bGtBY3Rpb25Db250cm9sczogQnVsa0FjdGlvbkNvbnRyb2xbXTtcblxuICAvKiogSGVhZGVyIGFjdGlvbiBjb250cm9scy4gKi9cbiAgaGVhZGVyQWN0aW9uQ29udHJvbHM/OiBIZWFkZXJBY3Rpb25Db250cm9sW107XG59XG5cbi8qKiBEZXNjcmliZXMgYSBkYXRhIGdyaWQgY29sdW1uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2x1bW4ge1xuICAvKiogVGhlIG5hbWUgZm9yIHRoZSBjb2x1bW4uICovXG4gIG5hbWU6IHN0cmluZyB8IFNwZWNpYWxDb2x1bW5OYW1lO1xuICAvKiogVGhlIGNvbHVtbidzIGhlYWRlciAoaWYgbm90IGdpdmVuLCBgbmFtZWAgaXMgdXNlZCBieSBkZWZhdWx0KS4gKi9cbiAgaGVhZGVyPzogc3RyaW5nO1xuICAvKiogVGhlIHBhdGggaW4gYSByb3cgaXRlbSB0byByZWFkIHRoZSBjZWxsIHZhbHVlIGZyb20uICovXG4gIHBhdGg/OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoZSBjb2x1bW4gaXMgZGlzcGxheWVkLiAqL1xuICB2aXNpYmxlPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdGhlIGNvbHVtbiBjYW4gYmUgbW92ZWQgdG8gYW5vdGhlciBwb3NpdGlvbi4gKi9cbiAgcG9zaXRpb25GaXhlZD86IGJvb2xlYW47XG4gIC8qKiBNYXJrcyBhIHVzZXIgY29uZmlndXJlZCBjdXN0b20gY29sdW1uICovXG4gIGN1c3RvbT86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRoZSBjb2x1bW4gY2FuIGJlIHJlc2l6ZWQuICovXG4gIHJlc2l6YWJsZT86IGJvb2xlYW47XG4gIC8qKiBPcHRpb25hbCB0eXBlIG9mIGRhdGEgaW4gdGhlIGNvbHVtbiAodXNlZCB0byBzZXQgZGF0YS10eXBlIGF0dHJpYnV0ZSwgZS5nLiBmb3IgYWRkaXRpb25hbCBzdHlsaW5nKS4gKi9cbiAgZGF0YVR5cGU/OiBDb2x1bW5EYXRhVHlwZTtcbiAgLyoqIFRoZSBjb2x1bW4ncyBzaXplLCBlLmcuIFwiNDAgcHhcIi4gKi9cbiAgZ3JpZFRyYWNrU2l6ZT86IHN0cmluZztcbiAgLyoqIEFkZGl0aW9uYWwgQ1NTIGNsYXNzZXMgZm9yIHRoZSBoZWFkZXIgY2VsbC4gKi9cbiAgaGVhZGVyQ1NTQ2xhc3NOYW1lPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIC8qKiBBZGRpdGlvbmFsIENTUyBjbGFzc2VzIGZvciBkYXRhIGNlbGxzLiAqL1xuICBjZWxsQ1NTQ2xhc3NOYW1lPzogc3RyaW5nIHwgc3RyaW5nW107XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGNvbHVtbiBpcyBzb3J0YWJsZS4gKi9cbiAgc29ydGFibGU/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgc29ydCBvcmRlciBpcyBhc2NlbmRpbmcsIGRlc2NlbmRpbmcgb3Igbm90IHNwZWNpZmllZC4gKi9cbiAgc29ydE9yZGVyPzogU29ydE9yZGVyO1xuICBzb3J0aW5nQ29uZmlnPzogQ29sdW1uU29ydGluZ0NvbmZpZztcblxuICAvKiogV2hldGhlciB0aGUgY29sdW1uIGlzIGZpbHRlcmFibGUuICovXG4gIGZpbHRlcmFibGU/OiBib29sZWFuO1xuICAvKiogVGhlIHN0cmluZyB0byBzZWFyY2ggZm9yIG9yIGEgZnVuY3Rpb24gZm9yIGNsaWVudC1zaWRlIGZpbHRlcmluZy4gKi9cbiAgZmlsdGVyUHJlZGljYXRlPzogc3RyaW5nIHwgRmlsdGVyUHJlZGljYXRlRnVuY3Rpb247XG4gIC8qKiBDdXN0b20gZmlsdGVyaW5nIGZvcm0gcmVuZGVyZXIgY2FuIHNldCBhbnkgdmFsdWUgaGVyZSBhbmQgaXQgY2FuIGJlIHVzZWQgdG8gYnVpbGQgYSBxdWVyeSB0byB0aGUgc2VydmVyLiAqL1xuICBleHRlcm5hbEZpbHRlclF1ZXJ5PzogYW55O1xuICBmaWx0ZXJpbmdDb25maWc/OiBGb3JtbHlDb2x1bW5GaWx0ZXJpbmdDb25maWc7XG5cbiAgLyoqIEN1c3RvbSBkYXRhIGNlbGwgcmVuZGVyZXIgY29tcG9uZW50LiBJbmplY3QgYENlbGxSZW5kZXJlckNvbnRleHRgIHRvIGdldCBhY2Nlc3MgdG8gZGF0YSB2YWx1ZSwgaXRlbSBhbmQgY29sdW1uIG9iamVjdC4gKi9cbiAgY2VsbFJlbmRlcmVyQ29tcG9uZW50PzogVHlwZTxhbnk+O1xuICAvKiogQ3VzdG9tIGhlYWRlciBjZWxsIHJlbmRlcmVyIGNvbXBvbmVudC4gSW5qZWN0IGBDZWxsUmVuZGVyZXJDb250ZXh0YCB0byBnZXQgYWNjZXNzIHRvIGhlYWRlciB2YWx1ZSBhbmQgY29sdW1uIG9iamVjdC4gKi9cbiAgaGVhZGVyQ2VsbFJlbmRlcmVyQ29tcG9uZW50PzogVHlwZTxhbnk+O1xuICAvKiogQ3VzdG9tIGZpbHRlcmluZyBmb3JtIHJlbmRlcmVyIGNvbXBvbmVudC4gSW5qZWN0IGBGaWx0ZXJpbmdGb3JtUmVuZGVyZXJDb250ZXh0YCB0byBnZXQgYWNjZXNzIHRvIGNvbHVtbiBvYmplY3QgYW5kIG1ldGhvZHM6IGFwcGx5RmlsdGVyLCByZXNldEZpbHRlci4gKi9cbiAgZmlsdGVyaW5nRm9ybVJlbmRlcmVyQ29tcG9uZW50PzogVHlwZTxhbnk+O1xufVxuXG4vKiogRGVzY3JpYmVzIGEgY29sdW1uIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbkNvbmZpZyB7XG4gIC8qKiBUaGUgbmFtZSBmb3IgdGhlIGNvbHVtbi4gKi9cbiAgbmFtZT86IHN0cmluZztcblxuICAvKiogV2hldGhlciB0aGUgY29sdW1uIGlzIGRpc3BsYXllZC4gKi9cbiAgdmlzaWJsZT86IGJvb2xlYW47XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHNvcnQgb3JkZXIgaXMgYXNjZW5kaW5nLCBkZXNjZW5kaW5nIG9yIG5vdCBzcGVjaWZpZWQuICovXG4gIHNvcnRPcmRlcj86IFNvcnRPcmRlcjtcblxuICAvKiogVGhlIHNldHRpbmdzIG9mIGZpbHRlciBpbiBhIGNvbHVtbi4gKi9cbiAgZmlsdGVyPzogRmlsdGVyO1xufVxuXG4vKiogRGVzY3JpYmVzIGEgY3VzdG9tIGNvbHVtbiBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDdXN0b21Db2x1bW5Db25maWcgZXh0ZW5kcyBDb2x1bW5Db25maWcge1xuICAvKiogSlNPTiBwYXRoIHRvIHRoZSBtYW5hZ2VkIG9iamVjdCBwcm9wZXJ0eSB0byBiZSBkaXNwbGF5ZWQgKi9cbiAgcGF0aDogc3RyaW5nO1xuXG4gIC8qKiBDb2x1bW4gaGVhZGVyIHRpdGxlICovXG4gIGhlYWRlcjogc3RyaW5nO1xuXG4gIC8qKiBGbGFnIHRvIGlkZW50aWZ5IGN1c3RvbSBjb2x1bW5zICovXG4gIGN1c3RvbTogYm9vbGVhbjtcbn1cblxuLyoqIERlc2NyaWJlcyB0aGUgc2V0dGluZ3Mgb2YgZmlsdGVyIGluIGEgY29sdW1uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXIge1xuICAvKiogQ3VzdG9tIGZpbHRlcmluZyBmb3JtIHJlbmRlcmVyIGNhbiBzZXQgYW55IHZhbHVlIGhlcmUgYW5kIGl0IGNhbiBiZSB1c2VkIHRvIGJ1aWxkIGEgcXVlcnkgdG8gdGhlIHNlcnZlci4gKi9cbiAgZXh0ZXJuYWxGaWx0ZXJRdWVyeT86IGFueTtcbn1cblxuLyoqIERlc2NyaWJlcyBhbiBvYmplY3Qgd2l0aCBkYXRhIGdyaWQgY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JpZENvbmZpZyB7XG4gIC8qKiBUaGUgY29uZmlndXJhdGlvbiBvYmplY3RzIGZvciBhbGwgdGhlIGNvbHVtbnMuICovXG4gIGNvbHVtbnM6IENvbHVtbkNvbmZpZ1tdO1xuXG4gIC8qKiBQYWdpbmF0aW9uIG9iamVjdC4gKi9cbiAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbjtcbn1cblxuLyoqICAqL1xuZXhwb3J0IGNvbnN0IGVudW0gU3BlY2lhbENvbHVtbk5hbWUge1xuICAvKiogQ29sdW1uIHdpdGggY2hlY2tib3guICovXG4gIENoZWNrYm94ID0gJ2NoZWNrYm94JyxcblxuICAvKiogQ29sdW1uIHdpdGggcmFkaW8gYnV0dG9uLiAqL1xuICBSYWRpb0J1dHRvbiA9ICdyYWRpby1idXR0b24nLFxuXG4gIC8qKiBDb2x1bW4gd2l0aCByb3cgYWN0aW9ucy4gKi9cbiAgQWN0aW9ucyA9ICdhY3Rpb25zJ1xufVxuXG4vKiogICovXG5leHBvcnQgY29uc3QgZW51bSBDb2x1bW5EYXRhVHlwZSB7XG4gIC8qKiBDb2x1bW4gd2l0aCBpY29uLiAqL1xuICBJY29uID0gJ2ljb24nLFxuXG4gIC8qKiBOdW1lcmljIGNvbHVtbi4gKi9cbiAgTnVtZXJpYyA9ICdudW1lcmljJyxcblxuICAvKiogQ29sdW1uIHdpdGggc2hvcnQgdGV4dC4gKi9cbiAgVGV4dFNob3J0ID0gJ3RleHQtc2hvcnQnLFxuXG4gIC8qKiBDb2x1bW4gd2l0aCBsb25nIHRleHQuICovXG4gIFRleHRMb25nID0gJ3RleHQtbG9uZydcbn1cblxuLyoqIENsYXNzZXMgZm9yIGNvbHVtbiBkYXRhIHJlY29yZC4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIENvbHVtbkRhdGFSZWNvcmRDbGFzc05hbWUge1xuICAvKiogQW4gaWNvbi4gKi9cbiAgSWNvbiA9ICdkYXRhLXJlY29yZC1pY29uJyxcblxuICAvKiogQSBoZWFkZXIuICovXG4gIEhlYWRlciA9ICdkYXRhLXJlY29yZC1oZWFkZXInLFxuXG4gIC8qKiBEZWZhdWx0IC0gZW1wdHkuICovXG4gIERlZmF1bHQgPSAnJ1xufVxuXG5leHBvcnQgY29uc3QgbWluQ29sdW1uR3JpZFRyYWNrU2l6ZSA9IDgwO1xuXG4vKiogTWFwcyBjb2x1bW4gdHlwZXMgdG8gcmVsYXRpdmUgd2lkdGhzLiAqL1xuZXhwb3J0IGNvbnN0IHJhdGlvc0J5Q29sdW1uVHlwZXMgPSB7XG4gIC8qKiBUaGUgd2lkdGggcmF0aW9uIGZvciBpY29uIGNvbHVtbiB0eXBlLiAqL1xuICBpY29uOiAxLFxuXG4gIC8qKiBUaGUgd2lkdGggcmF0aW9uIGZvciBudW1lcmljIGNvbHVtbiB0eXBlLiAqL1xuICBudW1lcmljOiAxLFxuXG4gIC8qKiBUaGUgd2lkdGggcmF0aW9uIGZvciBzaG9ydCB0ZXh0IGNvbHVtbiB0eXBlLiAqL1xuICAndGV4dC1zaG9ydCc6IDEuNjcsXG5cbiAgLyoqIFRoZSB3aWR0aCByYXRpb24gZm9yIGxvbmcgdGV4dCBjb2x1bW4gdHlwZS4gKi9cbiAgJ3RleHQtbG9uZyc6IDMuMzNcbn07XG5cbi8qKiBTb3J0aW5nIG9yZGVyOiBhc2NlbmRpbmcsIGRlc2NlbmRpbmcsIG9yIG5vdCBzcGVjaWZpZWQuICovXG5leHBvcnQgdHlwZSBTb3J0T3JkZXIgPSAnYXNjJyB8ICdkZXNjJyB8ICcnO1xuXG4vKipcbiAqIEEgZmlsdGVyIHByZWRpY2F0ZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBpdGVtIFRoZSBjdXJyZW50IGl0ZW0gdG8gYmUgY2hlY2tlZC5cbiAqIEBwYXJhbSBwYXRoIFRoZSBwcm9wZXJ0eSBwYXRoIGNvbmZpZ3VyZWQgaW4gdGhlIGN1cnJlbnQgY29sdW1uLlxuICogQHJldHVybnMgVGhlIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBpdGVtIG1hdGNoZXMgYSBjb25kaXRpb24gb3Igbm90LlxuICovXG5leHBvcnQgdHlwZSBGaWx0ZXJQcmVkaWNhdGVGdW5jdGlvbiA9IChpdGVtOiBvYmplY3QsIHBhdGg6IHN0cmluZykgPT4gYm9vbGVhbjtcblxuLyoqIEZpbHRlcmluZyBhY3Rpb25zLiAqL1xuZXhwb3J0IGVudW0gRmlsdGVyaW5nQWN0aW9uVHlwZSB7XG4gIC8qKiBBY3Rpb24gaW52b2tlZCB3aGVuIGZpbHRlciBzZXR0aW5ncyBhcmUgdG8gYmUgYXBwbGllZC4gKi9cbiAgQXBwbHlGaWx0ZXIgPSAnQVBQTFlfRklMVEVSJyxcblxuICAvKiogQWN0aW9uIGludm9rZWQgd2hlbiBmaWx0ZXIgc2V0dGluZ3MgYXJlIHRvIGJlIGNsZWFyZWQuICovXG4gIFJlc2V0RmlsdGVyID0gJ1JFU0VUX0ZJTFRFUidcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtbHlDb2x1bW5GaWx0ZXJpbmdDb25maWcge1xuICAvKiogRGVmaW5lcyBhIEZpZWxkQ29uZmlnIGNvbmZpZ3VyYXRpb24gZm9yIEZvcm1seS4gICovXG4gIGZpZWxkcz86IEZvcm1seUZpZWxkQ29uZmlnW107XG4gIC8qKiBEZWZpbmVzIGEgSlNPTiBzY2hlbWEgZm9yIGZpbHRlcmluZyBjb25maWcgbW9kZWwuIENhbiBiZSB1c2VkIGluc3RlYWQgb2YgYGZpZWxkc2AgKi9cbiAgc2NoZW1hPzogb2JqZWN0O1xuICAvKiogRGVmaW5lcyBhIG1vZGVsIHRoYXQgd2lsbCBiZSBhcHBsaWVkIHRvIHJlbmRlcmVkIGZvcm0uICovXG4gIG1vZGVsPzogb2JqZWN0O1xuICAvKiogRGVmaW5lcyBGb3JtR3JvdXAgaW5zdGFuY2UgKi9cbiAgZm9ybUdyb3VwPzogRm9ybUdyb3VwO1xuICAvKipcbiAgICogVHJhbnNmb3JtcyBhIGZpbHRlcmluZyBjb25maWcgbW9kZWwgdG8gYW4gYXJyYXkgb2YgcGFydGlhbCBmaWx0ZXIgY2hpcCBvYmplY3RzLlxuICAgKiBAcGFyYW0gbW9kZWwgQW4gb2JqZWN0IHdpdGggZGVmaW5lZCBzdHJ1Y3R1cmUgKGUuZy4gYnkgc2NoZW1hKS5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgcGFydGlhbCBmaWx0ZXIgY2hpcCBvYmplY3RzLCBlYWNoIGNvbnRhaW5pbmcgYXQgbGVhc3QgYGRpc3BsYXlWYWx1ZWAgYW5kIHRoZSBhY3R1YWwgYHZhbHVlYCB0byBiZSB1cGRhdGVkLlxuICAgKiBPcHRpb25hbGx5LCBvdGhlciBwcm9wZXJ0aWVzIGZyb20gYEZpbHRlckNoaXBgIGFyZSBhbGxvd2VkLCBmb3IgZXhhbXBsZSwgYSBjdXN0b20gYHJlbW92ZWAgY2FsbGJhY2sgdG8gYmUgZXhlY3V0ZWQgd2hlbiBhIGNoaXAgaXMgYmVpbmcgcmVtb3ZlZC5cbiAgICovXG4gIGdlbmVyYXRlQ2hpcHM/OiAobW9kZWw6IGFueSkgPT4gUGFydGlhbEZpbHRlckNoaXBHZW5lcmF0aW9uVHlwZVtdO1xuICAvKipcbiAgICogVHJhbnNmb3JtcyBhIGZpbHRlcmluZyBjb25maWcgbW9kZWwgKGUuZy4gY29taW5nIGZyb20gc2NoZW1hIGZvcm0gY29tcG9uZW50KSB0byBhIHF1ZXJ5IG9iamVjdC5cbiAgICogSG93ZXZlciwgdXNpbmcgc2NoZW1hIGZvcm0gY29tcG9uZW50IGlzIG5vdCBuZWNlc3NhcnkuXG4gICAqIE1vZGVsIGNhbiBiZSBkZWZpbmVkIGFyYml0cmFyaWx5IGJ1dCBtdXN0IGNvbnZlcnRlZCB0byBhIHZhbGlkIHF1ZXJ5IG9iamVjdC5cbiAgICogQHBhcmFtIG1vZGVsIEFuIG9iamVjdCB3aXRoIGRlZmluZWQgc3RydWN0dXJlIChlLmcuIGJ5IHNjaGVtYSkuXG4gICAqIEByZXR1cm5zIEEgcXVlcnkgb2JqZWN0IHRvIGJlIHVzZWQgdG8gZ2VuZXJhdGUgYSBxdWVyeSBzdHJpbmcgKFF1ZXJ5VXRpbHMpLlxuICAgKi9cbiAgZ2V0RmlsdGVyOiAobW9kZWw6IGFueSkgPT4gYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtblNvcnRpbmdDb25maWcge1xuICBwYXRoU29ydGluZ0NvbmZpZ3M6IFBhdGhTb3J0aW5nQ29uZmlnW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF0aFNvcnRpbmdDb25maWcge1xuICBwYXRoOiBzdHJpbmc7XG4gIHNvcnRPcmRlck1vZGlmaWVyPzogU29ydE9yZGVyTW9kaWZpZXI7XG59XG5cbmV4cG9ydCBjb25zdCBlbnVtIFNvcnRPcmRlck1vZGlmaWVyIHtcbiAgS2VlcCxcbiAgSW52ZXJ0XG59XG5cbi8qKiBEZXNjcmliZXMgYW4gaXRlbSBpbiB0aGUgcm93LiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3cge1xuICAvKiogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtLiAqL1xuICBpZDogc3RyaW5nO1xuXG4gIC8qKiBBbnkgaXRlbSBwcm9wZXJ0eS4gKi9cbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG4vKiogRGVzY3JpYmVzIGEgcGFnaW5hdGlvbiBvYmplY3QuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRpb24ge1xuICAvKiogVGhlIG51bWJlciBvZiB0aGUgY3VycmVudCBwYWdlLiAqL1xuICBjdXJyZW50UGFnZT86IG51bWJlcjtcblxuICAvKiogVGhlIG51bWJlciBvZiB0aGUgbmV4dCBwYWdlLiAqL1xuICBuZXh0UGFnZT86IG51bWJlcjtcblxuICAvKiogVGhlIG51bWJlciBvZiBpdGVtcyBvbiBhIHNpbmdsZSBwYWdlLiAqL1xuICBwYWdlU2l6ZTogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gZmV0Y2ggc2VydmVyIGRhdGEuXG4gKiBAcGFyYW0gZGF0YVNvdXJjZU1vZGlmaWVyIFRoZSBjdXJyZW50IGRhdGEgc291cmNlIG1vZGlmaWVyLlxuICogQHJldHVybnMgUmV0dXJucyB0aGUgcmVzdWx0IGZyb20gc2VydmVyLlxuICovXG5leHBvcnQgdHlwZSBTZXJ2ZXJTaWRlRGF0YUNhbGxiYWNrID0gKFxuICBkYXRhU291cmNlTW9kaWZpZXI6IERhdGFTb3VyY2VNb2RpZmllclxuKSA9PiBTZXJ2ZXJTaWRlRGF0YVJlc3VsdCB8IFByb21pc2U8U2VydmVyU2lkZURhdGFSZXN1bHQ+IHwgT2JzZXJ2YWJsZTxTZXJ2ZXJTaWRlRGF0YVJlc3VsdD47XG5cbi8qKiBEZXNjcmliZXMgYSBkYXRhIHNvdXJjZSBtb2RpZmllciBmb3IgcmVxdWVzdGluZyBzZXJ2ZXIgZGF0YS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVNvdXJjZU1vZGlmaWVyIHtcbiAgLyoqIFRoZSBsaXN0IG9mIGNvbHVtbnMuICovXG4gIGNvbHVtbnM6IENvbHVtbltdO1xuXG4gIC8qKiBUZXh0IHRvIHNlYXJjaC4gKi9cbiAgc2VhcmNoVGV4dDogc3RyaW5nO1xuXG4gIC8qKiBQYWdpbmF0aW9uIG9iamVjdC4gKi9cbiAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbjtcblxuICAvKiogU2VsZWN0aW9uIGluZm8gb2JqZWN0LiAqL1xuICBzZWxlY3Rpb246IHtcbiAgICAvKiogV2hldGhlciB0aGUgc2VsZWN0aW9uIGlzIGVuYWJsZWQuICovXG4gICAgZW5hYmxlZDogYm9vbGVhbjtcblxuICAgIC8qKiBUaGUgbmFtZSBvZiB0aGUgcHJpbWFyeSBrZXkuICovXG4gICAgcHJpbWFyeUtleTogc3RyaW5nO1xuICB9O1xufVxuXG4vKiogRGVzY3JpYmVzIGEgcmVzdWx0IGZyb20gc2VydmVyIHdpdGggZGF0YSBhbmQgYWRkaXRpb25hbCBzdGF0aXN0aWNzLiAqL1xuZXhwb3J0IHR5cGUgU2VydmVyU2lkZURhdGFSZXN1bHQgPSBJUmVzdWx0TGlzdDxvYmplY3Q+ICYge1xuICAvKiogVGhlIHJlYWwgZ3JhbmQgdG90YWwgbnVtYmVyIG9mIGl0ZW1zICh0aGUgd2hvbGUgZGF0YXNldCkuICovXG4gIHNpemU6IG51bWJlcjtcblxuICAvKiogVGhlIG51bWJlciBvZiBpdGVtcyBhZnRlciBmaWx0ZXJpbmcgYXBwbGllZCB0byB0aGUgd2hvbGUgZGF0YXNldCAoc3Vic2V0KS4gKi9cbiAgZmlsdGVyZWRTaXplOiBudW1iZXI7XG5cbiAgLyoqIFRoZSBsaXN0IG9mIGlkcyBvZiBhbGwgZmlsdGVyZWQgaXRlbXMgKHN1YnNldCkuICovXG4gIGZpbHRlcmVkRGF0YUlkcz86IHN0cmluZ1tdO1xufTtcblxuLyoqIERlc2NyaWJlcyBhbiBvYmplY3Qgd2l0aCBkYXRhIHNvdXJjZSBzdGF0aXN0aWNzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhU291cmNlU3RhdHMge1xuICAvKiogVGhlIHJlYWwgZ3JhbmQgdG90YWwgbnVtYmVyIG9mIGl0ZW1zICh0aGUgd2hvbGUgZGF0YXNldCkuICovXG4gIHNpemU6IG51bWJlcjtcblxuICAvKiogVGhlIG51bWJlciBvZiBpdGVtcyBhZnRlciBmaWx0ZXJpbmcgYXBwbGllZCB0byB0aGUgd2hvbGUgZGF0YXNldCAoc3Vic2V0KS4gKi9cbiAgZmlsdGVyZWRTaXplOiBudW1iZXI7XG5cbiAgLyoqIFRoZSBudW1iZXIgb2YgdGhlIGN1cnJlbnQgcGFnZS4gKi9cbiAgY3VycmVudFBhZ2U6IG51bWJlcjtcblxuICAvKiogVGhlIG51bWJlciBvZiB0aGUgbmV4dCBwYWdlLiAqL1xuICBuZXh0UGFnZT86IG51bWJlcjtcblxuICAvKiogVGhlIG51bWJlciBvZiBpdGVtcyBjdXJyZW50bHkgc2hvd24gaW4gdGhlIGxpc3QgdmlldywgYS5rLmEuIGN1cnJlbnQgcGFnZSAod2hhdCB0aGUgdXNlciBzZWVzIG9uIHNjcmVlbikuICovXG4gIGN1cnJlbnRQYWdlU2l6ZTogbnVtYmVyO1xuXG4gIC8qKiBUaGUgbnVtYmVyIG9mIGl0ZW1zIG9uIHRoZSBmaXJzdCBwYWdlLiAgKi9cbiAgZmlyc3RQYWdlU2l6ZTogbnVtYmVyO1xufVxuXG4vKiogRGVzY3JpYmVzIGRhdGEgZ3JpZCBkaXNwbGF5IG9wdGlvbnMuICovXG5leHBvcnQgaW50ZXJmYWNlIERpc3BsYXlPcHRpb25zIHtcbiAgLyoqIFNob3cgb3IgaGlkZSB6ZWJyYS1zdHJpcGluZyBpbiB0aGUgdGFibGUgKi9cbiAgc3RyaXBlZDogYm9vbGVhbjtcblxuICAvKiogU2hvdyBvciBoaWRlIGVhY2ggY2VsbCBib3JkZXIgKi9cbiAgYm9yZGVyZWQ6IGJvb2xlYW47XG5cbiAgLyoqIFNob3cgb3IgaGlkZSB0aGUgZ3JpZCBoZWFkZXIgKi9cbiAgZ3JpZEhlYWRlcjogYm9vbGVhbjtcblxuICAvKiogU2hvdyBvciBoaWRlIGZpbHRlciBsYWJlbCBpbiB0aGUgZ3JpZCBoZWFkZXIgKi9cbiAgZmlsdGVyOiBib29sZWFuO1xuXG4gIC8qKiBFbmFibGUgdG8gZGlzcGxheSBhIGJhY2tncm91bmQgY29sb3Igb24gaG92ZXIgKi9cbiAgaG92ZXI6IGJvb2xlYW47XG59XG5cbi8qKiBEZXNjcmliZXMgYSBkYXRhIGdyaWQgYWN0aW9uIGNvbnRyb2wgZm9yIGluZGl2aWR1YWwgaXRlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uQ29udHJvbCB7XG4gIC8qKiBUaGUgdHlwZSBvZiB0aGUgYWN0aW9uLCBwcmVkZWZpbmVkIG9yIGN1c3RvbS4gKi9cbiAgdHlwZTogQnVpbHRJbkFjdGlvblR5cGUgfCBzdHJpbmc7XG5cbiAgLyoqIFRoZSBsYWJlbCBmb3IgdGhlIGFjdGlvbiBidXR0b24uICovXG4gIHRleHQ/OiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBpY29uIGZvciB0aGUgYWN0aW9uIGJ1dHRvbi4gKi9cbiAgaWNvbj86IHN0cmluZztcblxuICAvKiogVGhlIGljb24gY2xhc3NlcyBmb3IgdGhlIGFjdGlvbiBidXR0b24gaWNvbi4gKi9cbiAgaWNvbkNsYXNzZXM/OiBzdHJpbmc7XG5cbiAgLyoqIEFjdGlvbiBpY29uIHdpbGwgYmUgdmlzaWJsZSBvbiBob3ZlciBvbmx5ICovXG4gIHNob3dPbkhvdmVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbi5cbiAgICogQHBhcmFtIGl0ZW0gVGhlIGl0ZW0gdG8gcGVyZm9ybSB0aGUgYWN0aW9uIG9uLlxuICAgKiBAcGFyYW0gcmVsb2FkIFRoZSBmdW5jdGlvbiB0byBjYWxsLCBpZiB5b3Ugd2FudCB0byByZWxvYWQgdGhlIGdyaWQuXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICBjYWxsYmFjazogKChpdGVtOiBSb3csIHJlbG9hZDogKCkgPT4gdm9pZCkgPT4gdm9pZCkgfCBGdW5jdGlvbjtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgYWN0aW9uIHNob3VsZCBiZSBzaG93biBmb3IgZ2l2ZW4gaXRlbSAoaWYgbm90IGRlZmluZWQsIHRoZSBhY3Rpb24gd2lsbCBiZSBzaG93biBhbHdheXMpLlxuICAgKiBAcGFyYW0gaXRlbSBUaGUgaXRlbSBmb3Igd2hpY2ggdGhlIGFjdGlvbiBpcyBzdXBwb3NlZCB0byBiZSBwZXJmb3JtZWQuXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICBzaG93SWY/OiAoKGl0ZW06IFJvdykgPT4gYm9vbGVhbikgfCBGdW5jdGlvbjtcblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgb3JkZXIgaW4gd2hpY2ggYWN0aW9uIGNvbnRyb2xzIGFwcGVhci4gSGlnaGVyIHZhbHVlIG1lYW5zIGVhcmxpZXIgcG9zaXRpb24uXG4gICAqIENvbnRyb2xzIHdpdGhvdXQgcHJpb3JpdHkgYXJlIGhhbmRsZWQgd2l0aCBwcmlvcml0eSA9IDAuIElmIHlvdSB3YW50IHRvIHBsYWNlIGFuIGFjdGlvbiBhZnRlclxuICAgKiBhbiBhY3Rpb24gd2l0aG91dCBwcmlvcml0eSwgbmVnYXRpdmUgbnVtYmVycyBjYW4gYmUgdXNlZC5cbiAgICovXG4gIHByaW9yaXR5PzogbnVtYmVyO1xuXG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuLyoqIERlc2NyaWJlcyBhIGRhdGEgZ3JpZCBhY3Rpb24gY29udHJvbCBmb3IgbXVsdGlwbGUgaXRlbXMuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1bGtBY3Rpb25Db250cm9sIGV4dGVuZHMgQWN0aW9uQ29udHJvbCB7XG4gIC8qKlxuICAgKiBBIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0gc2VsZWN0ZWRJdGVtSWRzIFRoZSBsaXN0IG9mIGlkcyBvZiB0aGUgc2VsZWN0ZWQgaXRlbXMuXG4gICAqIEBwYXJhbSByZWxvYWQgVGhlIGZ1bmN0aW9uIHRvIGNhbGwsIGlmIHlvdSB3YW50IHRvIHJlbG9hZCB0aGUgZ3JpZC5cbiAgICovXG4gIGNhbGxiYWNrKHNlbGVjdGVkSXRlbUlkczogc3RyaW5nW10sIHJlbG9hZDogKCkgPT4gdm9pZCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIGFjdGlvbiBzaG91bGQgYmUgc2hvd24gZm9yIGdpdmVuIHNlbGVjdGVkIGl0ZW1zIChpZiBub3QgZGVmaW5lZCwgdGhlIGFjdGlvbiB3aWxsIGJlIHNob3duIGFsd2F5cykuXG4gICAqIEBwYXJhbSBzZWxlY3RlZEl0ZW1JZHMgVGhlIGxpc3Qgb2YgaWRzIG9mIHRoZSBzZWxlY3RlZCBpdGVtcyBmb3Igd2hpY2ggdGhlIGFjdGlvbiBpcyBzdXBwb3NlZCB0byBiZSBwZXJmb3JtZWQuXG4gICAqL1xuICBzaG93SWY/KHNlbGVjdGVkSXRlbUlkczogc3RyaW5nW10pOiBib29sZWFuO1xufVxuXG4vKiogRGVzY3JpYmVzIGEgZGF0YSBncmlkIGFjdGlvbiBjb250cm9sIGZvciB0aGUgaGVhZGVyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBIZWFkZXJBY3Rpb25Db250cm9sIGV4dGVuZHMgQWN0aW9uQ29udHJvbCB7XG4gIC8qKlxuICAgKiBDdXN0b20gdGVtcGxhdGUgY2FuIGJlIHByb3ZpZGVkLiBJZiBubyB0ZW1wbGF0ZSBpcyBwcm92aWRlZCxcbiAgICogdGhlIGRlZmF1bHQgaGVhZGVyQWN0aW9uQ29udHJvbCB0ZW1wbGF0ZSBpcyB1c2VkLlxuICAgKi9cbiAgdGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKlxuICAgKiBBIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICAgKi9cbiAgY2FsbGJhY2soKTogdm9pZDtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgYWN0aW9uIHNob3VsZCBiZSBzaG93bi5cbiAgICovXG4gIHNob3dJZj8oKTogYm9vbGVhbjtcbn1cblxuLyoqIFByZWRlZmluZWQgdHlwZXMgb2YgYWN0aW9ucy4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIEJ1aWx0SW5BY3Rpb25UeXBlIHtcbiAgLyoqIEVkaXQgYnVpbHQtaW4gYWN0aW9uLiAqL1xuICBFZGl0ID0gJ0VESVQnLFxuXG4gIC8qKiBEZWxldGUgYnVpbHQtaW4gYWN0aW9uLiAqL1xuICBEZWxldGUgPSAnREVMRVRFJyxcblxuICAvKiogRXhwb3J0IGJ1aWx0LWluIGFjdGlvbi4gKi9cbiAgRXhwb3J0ID0gJ0VYUE9SVCdcbn1cblxuLyoqXG4gKiBBbGxvd3MgdG8gYXR0YWNoIGFjdGlvbiBjb250cm9scyB0byBzcGVjaWZpZWQgZ3JpZHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uQ29udHJvbEhvb2sge1xuICAvKipcbiAgICogVGhlIGFjdGlvbiBjb250cm9sKHMpIHRoYXQgd2lsbCBiZSBhdHRhY2hlZCB0byB0aGUgZ3JpZC5cbiAgICovXG4gIGFjdGlvbkNvbnRyb2xzOiBBY3Rpb25Db250cm9sIHwgQWN0aW9uQ29udHJvbFtdO1xuICAvKipcbiAgICogQSBmdW5jdGlvbnMgdGhhdCBkZXRlcm1pbmVzIHRvIHdoaWNoIGdyaWQocykgdGhlIGFjdGlvbiBjb250cm9sKHMpIHdpbGwgYmUgYXR0YWNoZWQuXG4gICAqIE5vdCBwcm92aWRpbmcgYSBmdW5jdGlvbiByZXN1bHRzIGluIHRoZSBhY3Rpb25zIGNvbnRyb2wocykgbm90IGJlaW5nIGF0dGFjaGVkIHRvIGFueSBncmlkLlxuICAgKi9cbiAgbWF0Y2hlc0dyaWQ6IChcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgY29udGV4dD86IEdyaWRDb25maWdDb250ZXh0XG4gICkgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4gfCBPYnNlcnZhYmxlPGJvb2xlYW4+O1xufVxuXG4vKipcbiAqIEZhY3RvcnkgdG8gaW1wbGVtZW50IGluIG9yZGVyIHRvIGFkZCBhY3Rpb24gY29udHJvbHMgZnJvbSBhbiBleHRlbnNpb24uXG4gKi9cbmV4cG9ydCB0eXBlIEFjdGlvbkNvbnRyb2xGYWN0b3J5ID0gRXh0ZW5zaW9uRmFjdG9yeTxBY3Rpb25Db250cm9sSG9vaz47XG5cbi8qKlxuICogRGVmaW5lcyBhbiBpbnRlcmZhY2UgZm9yIGEgZmlsdGVyIGNoaXAgb2JqZWN0LCB3aGljaCByZXByZXNlbnRzIGEgZmlsdGVyIGFwcGxpZWQgdG8gYSBjb2x1bW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyQ2hpcCB7XG4gIC8qKlxuICAgKiBUaGUgYWN0dWFsIHZhbHVlIHRoYXQgdGhlIGNoaXAgd2lsbCBob2xkLlxuICAgKiBJdCBjYW4gYmUganVzdCBhIHN0cmluZyBvciBhIG1vcmUgY29tcGxleCBvYmplY3QgbGlrZVxuICAgKiB7aWQ6IDEyMywgbmFtZTogVGVzdCwgdmFsdWU6IHRlc3R9LlxuICAgKi9cbiAgdmFsdWU6IGFueTtcblxuICAvKipcbiAgICogVGhlIHZhbHVlIHRoYXQgdGhlIGNoaXAgd2lsbCBkaXNwbGF5IGluIHRoZSBkcm9wZG93bi5cbiAgICovXG4gIGRpc3BsYXlWYWx1ZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBsYWJlbCB0aGF0IHdpbGwgYmUgZGlzcGxheWVkIGlmIGZpbHRlciBjaGlwcyBhcmUgc2VwYXJhdGVkIGludG8gbXVsdGlwbGUgZ3JvdXBzLlxuICAgKi9cbiAgbGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqIEFuIG9wdGlvbmFsIHByb3BlcnR5IHRoYXQgaG9sZHMgdGhlIHBhdGggdG8gdGhlIGNoaXAgdmFsdWUgaW4gdGhlIGV4dGVybmFsRmlsdGVyUXVlcnkuICovXG4gIHBhdGg/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQW4gb3B0aW9uYWwgcHJvcGVydHkgdGhhdCBob2xkcyB0aGUgZm9ybSB2YWx1ZSB0YWtlbiBmcm9tIHRoZSBjb2x1bW4gY29uZmlndXJhdGlvbi5cbiAgICovXG4gIGV4dGVybmFsRmlsdGVyUXVlcnk/OiBhbnk7XG5cbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIHByb3BlcnR5IHRoYXQgaG9sZHMgdGhlIGZvcm1seSBmaWx0ZXJpbmcgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNvbHVtbiB0aGF0IHRoaXMgZmlsdGVyIGlzIGFwcGxpZWQgdG8uXG4gICAqL1xuICBmaWx0ZXJpbmdDb25maWc/OiBGb3JtbHlDb2x1bW5GaWx0ZXJpbmdDb25maWc7XG5cbiAgLyoqIEFuIG9wdGlvbmFsIHByb3BlcnR5IHRoYXQgaG9sZHMgYSBzdHJpbmcgdG8gc2VhcmNoIGZvci4gKi9cbiAgZmlsdGVyUHJlZGljYXRlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY29sdW1uIHRoYXQgdGhpcyBmaWx0ZXIgaXMgYXBwbGllZCB0by5cbiAgICovXG4gIGNvbHVtbk5hbWU6IHN0cmluZyB8IFNwZWNpYWxDb2x1bW5OYW1lO1xuXG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBmdW5jdGlvbiB0byByZW1vdmUgdGhpcyBmaWx0ZXIgZnJvbSB0aGUgY29sdW1uLlxuICAgKiBJZiBub3QgcHJvdmlkZWQgd2lsbCBzZXQgZGVmYXVsdCByZW1vdmFsIGZ1bmN0aW9uIHRoYXQgd2lsbCByZWR1Y2UgdGhlIGV4dGVybmFsIHF1ZXJ5IGJ5IHJlbW92aW5nIHRoZSBvYmplY3QgdGhhdCBpcyByZXNvbHZlZCBieSB0aGUgcGF0aCBzZXQgaW4gdGhlIEZpbHRlckNoaXAuXG4gICAqIEByZXR1cm5zIEFuIG9iamVjdCBkZWZpbmVkIGJ5IHRoZSBgRmlsdGVyQ2hpcGAgdHlwZSwgaW5jbHVkaW5nIHRoZSBgY29sdW1uTmFtZWAgYW5kICB1cGRhdGVkIGBleHRlcm5hbEZpbHRlclF1ZXJ5YCBvciAnZmlsdGVyUHJlZGljYXRlJyBwcm9wZXJ0aWVzLlxuICAgKiBUaGUgcmV0dXJuZWQgb2JqZWN0IG1heSBhbHNvIGluY2x1ZGUgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGRlZmluZWQgYnkgdGhlIGBGaWx0ZXJDaGlwYCB0eXBlIGFzIHBhcnRpYWxzLlxuICAgKi9cbiAgcmVtb3ZlPzogKCkgPT4gUGFydGlhbEZpbHRlckNoaXBSZW1vdmFsVHlwZTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcGFydGlhbCBmaWx0ZXIgY2hpcCB3aXRoIGVpdGhlciAnY29sdW1uTmFtZScgYW5kICdleHRlcm5hbEZpbHRlclF1ZXJ5JyBvciAnY29sdW1uTmFtZScgYW5kICdmaWx0ZXJQcmVkaWNhdGUnLlxuICogQHR5cGVkZWYge09iamVjdH0gUGFydGlhbEZpbHRlckNoaXBSZW1vdmFsVHlwZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IGNvbHVtbk5hbWUgLSBUaGUgY29sdW1uIG5hbWUgZm9yIHRoZSBmaWx0ZXIgY2hpcC5cbiAqIEBwcm9wZXJ0eSB7YW55fSBbZXh0ZXJuYWxGaWx0ZXJRdWVyeV0gLSBUaGUgZXh0ZXJuYWwgZmlsdGVyIHF1ZXJ5IGZvciB0aGUgY2hpcCB1c2VkIGZvciBjb21wbGV4IGZpbHRlcnMuXG4gKiBAcHJvcGVydHkge2FueX0gW2ZpbHRlclByZWRpY2F0ZV0gLSBUaGUgZmlsdGVyaW5nIHByZWRpY2F0ZSBmb3IgdGhlIGNoaXAgdXNlZCBmb3Igc2ltcGxlIGZpbHRlcnMgd2l0aCBjbGllbnQtc2lkZSBmaWx0ZXJpbmcuXG4gKiBAcHJvcGVydHkgey4uLkZpbHRlckNoaXB9IFtvcHRpb25hbFByb3BlcnRpZXNdIC0gT3B0aW9uYWwgcHJvcGVydGllcyBmcm9tIHRoZSBGaWx0ZXJDaGlwIHR5cGUuXG4gKi9cbmV4cG9ydCB0eXBlIFBhcnRpYWxGaWx0ZXJDaGlwUmVtb3ZhbFR5cGUgPSAoXG4gIHwgUmVxdWlyZWQ8UGljazxGaWx0ZXJDaGlwLCAnY29sdW1uTmFtZScgfCAnZXh0ZXJuYWxGaWx0ZXJRdWVyeSc+PlxuICB8IFJlcXVpcmVkPFBpY2s8RmlsdGVyQ2hpcCwgJ2NvbHVtbk5hbWUnIHwgJ2ZpbHRlclByZWRpY2F0ZSc+PlxuKSAmXG4gIFBhcnRpYWw8RmlsdGVyQ2hpcD47XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHBhcnRpYWwgZmlsdGVyIGNoaXAgd2l0aCByZXF1aXJlZCBwcm9wZXJ0aWVzICdkaXNwbGF5VmFsdWUnIGFuZCAndmFsdWUnLlxuICogQHR5cGVkZWYge09iamVjdH0gUGFydGlhbEZpbHRlckNoaXBHZW5lcmF0aW9uVHlwZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IGRpc3BsYXlWYWx1ZSAtIFRoZSBkaXNwbGF5IHZhbHVlIGZvciB0aGUgZmlsdGVyIGNoaXAuXG4gKiBAcHJvcGVydHkge2FueX0gdmFsdWUgLSBUaGUgdmFsdWUgZm9yIHRoZSBmaWx0ZXIgY2hpcC5cbiAqIEBwcm9wZXJ0eSB7Li4uRmlsdGVyQ2hpcH0gW29wdGlvbmFsUHJvcGVydGllc10gLSBPcHRpb25hbCBwcm9wZXJ0aWVzIGZyb20gdGhlIEZpbHRlckNoaXAgdHlwZS5cbiAqL1xuZXhwb3J0IHR5cGUgUGFydGlhbEZpbHRlckNoaXBHZW5lcmF0aW9uVHlwZSA9IFJlcXVpcmVkPFBpY2s8RmlsdGVyQ2hpcCwgJ2Rpc3BsYXlWYWx1ZScgfCAndmFsdWUnPj4gJlxuICBQYXJ0aWFsPEZpbHRlckNoaXA+O1xuXG4vKipcbiAqIERlZmluZXMgYW4gaW50ZXJmYWNlIGZvciBhIG1hcHBlciBmdW5jdGlvbiB0aGF0IG1hcHMgYSBgRm9ybWx5RmllbGRDb25maWdgIHRvIGEgYEZpbHRlckNoaXBgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlck1hcHBlciB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvciB0eXBlcyBvZiB0aGUgYEZvcm1seUZpZWxkQ29uZmlnYCB0aGF0IHRoaXMgbWFwcGVyIGFwcGxpZXMgdG8uXG4gICAqL1xuICBmaWVsZFR5cGU6IHN0cmluZ1tdIHwgc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYXBzIGEgYEZvcm1seUZpZWxkQ29uZmlnYCBhbmQgYSBgRmlsdGVyQ2hpcGAgdG8gYW4gYE9ic2VydmFibGVgIG9mIGEgYEZpbHRlckNoaXBgLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGV4dGVuZHMgdGhlIHByb3ZpZGVkIGBGaWx0ZXJDaGlwYCBvYmplY3Qgd2l0aCBhZGRpdGlvbmFsIHByb3BlcnRpZXMgYmFzZWQgb24gdGhlIGluZm9ybWF0aW9uIGluIHRoZSBgRm9ybWx5RmllbGRDb25maWdgLlxuICAgKiBUaGUgbWFwcGluZyBwcm9jZXNzIGRlcGVuZHMgb24gdGhlIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgRmlsdGVyTWFwcGVyYC5cbiAgICpcbiAgICogQHBhcmFtIGZpZWxkIC0gVGhlIGBGb3JtbHlGaWVsZENvbmZpZ2AgdG8gbWFwLlxuICAgKiBAcGFyYW0gZmlsdGVyIC0gVGhlIGBGaWx0ZXJDaGlwYCB0byBtYXAuXG4gICAqIEByZXR1cm5zIEFuIGBPYnNlcnZhYmxlYCB0aGF0IGVtaXRzIHRoZSBtYXBwZWQgYEZpbHRlckNoaXBgLlxuICAgKiBJZiB1bmRlZmluZWQgaXMgcmV0dXJuZWQgYW4gZXJyb3IgaXMgdGhyb3duIGFuZCB0aGUgY2hpcCBpcyBub3QgdmlzdWFsaXplZC5cbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyBFeGFtcGxlIGltcGxlbWVudGF0aW9uIG9mIGBtYXBgIGZ1bmN0aW9uIGluIGEgYEZpbHRlck1hcHBlcmBcbiAgICogbWFwKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZywgZmlsdGVyOiBGaWx0ZXJDaGlwKTogT2JzZXJ2YWJsZTxGaWx0ZXJDaGlwPiB7XG4gICAqICAgaWYgKHRoaXMuZmllbGRUeXBlLmluY2x1ZGVzKGZpZWxkLnR5cGUudG9TdHJpbmcoKSkpIHtcbiAgICogICAgIHJldHVybiB0b09ic2VydmFibGUoZmllbGQudGVtcGxhdGVPcHRpb25zLm9wdGlvbnMpLnBpcGUoXG4gICAqICAgICAgIG1hcChvcHRpb25zID0+IHtcbiAgICogICAgICAgICBjb25zdCBvYmplY3QgPSBvcHRpb25zLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gZ2V0KGZpbHRlci5leHRlcm5hbEZpbHRlclF1ZXJ5LCBmaWx0ZXIucGF0aCkpO1xuICAgKiAgICAgICAgIHJldHVybiB7XG4gICAqICAgICAgICAgICAuLi5maWx0ZXIsXG4gICAqICAgICAgICAgICB2YWx1ZTogb2JqZWN0LFxuICAgKiAgICAgICAgICAgZGlzcGxheVZhbHVlOiBvYmplY3Q/LmxhYmVsXG4gICAqICAgICAgICAgfTtcbiAgICogICAgICAgfSlcbiAgICogICAgICk7XG4gICAqICAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgbWFwOiAoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnLCBmaWx0ZXI6IEZpbHRlckNoaXApID0+IE9ic2VydmFibGU8RmlsdGVyQ2hpcD47XG59XG4iXX0=
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9kYXRhLWdyaWQvZGF0YS1ncmlkLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTBLQSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxFQUFFLENBQUM7QUFFekMsNENBQTRDO0FBQzVDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQ2pDLDZDQUE2QztJQUM3QyxJQUFJLEVBQUUsQ0FBQztJQUVQLGdEQUFnRDtJQUNoRCxPQUFPLEVBQUUsQ0FBQztJQUVWLG1EQUFtRDtJQUNuRCxZQUFZLEVBQUUsSUFBSTtJQUVsQixrREFBa0Q7SUFDbEQsV0FBVyxFQUFFLElBQUk7Q0FDbEIsQ0FBQztBQWFGLHlCQUF5QjtBQUN6QixNQUFNLENBQU4sSUFBWSxtQkFNWDtBQU5ELFdBQVksbUJBQW1CO0lBQzdCLDZEQUE2RDtJQUM3RCxtREFBNEIsQ0FBQTtJQUU1Qiw2REFBNkQ7SUFDN0QsbURBQTRCLENBQUE7QUFDOUIsQ0FBQyxFQU5XLG1CQUFtQixLQUFuQixtQkFBbUIsUUFNOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW1wbGF0ZVJlZiwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSVJlc3VsdExpc3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRXh0ZW5zaW9uRmFjdG9yeSB9IGZyb20gJy4uL2NvbW1vbi9leHRlbnNpb24taG9va3MnO1xuaW1wb3J0IHsgR3JpZENvbmZpZ0NvbnRleHQgfSBmcm9tICcuL2RhdGEtZ3JpZC1jb25maWd1cmF0aW9uLm1vZGVsJztcblxuLyoqIERlc2NyaWJlcyB0aGUgaW50ZXJmYWNlIG9mIHRoZSBkYXRhIGdyaWQuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHcmlkIHtcbiAgLyoqIFRoZSBsaXN0IG9mIGNvbHVtbnMuICovXG4gIGNvbHVtbnM6IENvbHVtbltdO1xuXG4gIC8qKiBUaGUgbGlzdCBvZiBpdGVtcy4gKi9cbiAgcm93czogUm93W107XG5cbiAgLyoqIFBhZ2luYXRpb24gb2JqZWN0LiAqL1xuICBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uO1xuXG4gIC8qKiBBIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGZldGNoIHNlcnZlciBkYXRhLiAqL1xuICBzZXJ2ZXJTaWRlRGF0YUNhbGxiYWNrOiBTZXJ2ZXJTaWRlRGF0YUNhbGxiYWNrO1xuXG4gIC8qKiBXaGV0aGVyIGl0ZW1zIGFyZSBzZWxlY3RhYmxlLiAqL1xuICBzZWxlY3RhYmxlOiBib29sZWFuO1xuXG4gIC8qKiBUaGUgbmFtZSBvZiB0aGUgcHJpbWFyeSBrZXkgcHJvcGVydHkuICovXG4gIHNlbGVjdGlvblByaW1hcnlLZXk6IHN0cmluZztcblxuICAvKiogRGF0YSBncmlkIGRpc3BsYXkgb3B0aW9ucy4gKi9cbiAgZGlzcGxheU9wdGlvbnM6IERpc3BsYXlPcHRpb25zO1xuXG4gIC8qKiBJbmRpdmlkdWFsIGFjdGlvbiBjb250cm9scy4gKi9cbiAgYWN0aW9uQ29udHJvbHM6IEFjdGlvbkNvbnRyb2xbXTtcblxuICAvKiogQnVsayBhY3Rpb24gY29udHJvbHMuICovXG4gIGJ1bGtBY3Rpb25Db250cm9sczogQnVsa0FjdGlvbkNvbnRyb2xbXTtcblxuICAvKiogSGVhZGVyIGFjdGlvbiBjb250cm9scy4gKi9cbiAgaGVhZGVyQWN0aW9uQ29udHJvbHM/OiBIZWFkZXJBY3Rpb25Db250cm9sW107XG59XG5cbi8qKiBEZXNjcmliZXMgYSBkYXRhIGdyaWQgY29sdW1uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2x1bW4ge1xuICAvKiogVGhlIG5hbWUgZm9yIHRoZSBjb2x1bW4uICovXG4gIG5hbWU6IHN0cmluZyB8IFNwZWNpYWxDb2x1bW5OYW1lO1xuICAvKiogVGhlIGNvbHVtbidzIGhlYWRlciAoaWYgbm90IGdpdmVuLCBgbmFtZWAgaXMgdXNlZCBieSBkZWZhdWx0KS4gKi9cbiAgaGVhZGVyPzogc3RyaW5nO1xuICAvKiogVGhlIHBhdGggaW4gYSByb3cgaXRlbSB0byByZWFkIHRoZSBjZWxsIHZhbHVlIGZyb20uICovXG4gIHBhdGg/OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoZSBjb2x1bW4gaXMgZGlzcGxheWVkLiAqL1xuICB2aXNpYmxlPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdGhlIGNvbHVtbiBjYW4gYmUgbW92ZWQgdG8gYW5vdGhlciBwb3NpdGlvbi4gKi9cbiAgcG9zaXRpb25GaXhlZD86IGJvb2xlYW47XG4gIC8qKiBNYXJrcyBhIHVzZXIgY29uZmlndXJlZCBjdXN0b20gY29sdW1uICovXG4gIGN1c3RvbT86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRoZSBjb2x1bW4gY2FuIGJlIHJlc2l6ZWQuICovXG4gIHJlc2l6YWJsZT86IGJvb2xlYW47XG4gIC8qKiBPcHRpb25hbCB0eXBlIG9mIGRhdGEgaW4gdGhlIGNvbHVtbiAodXNlZCB0byBzZXQgZGF0YS10eXBlIGF0dHJpYnV0ZSwgZS5nLiBmb3IgYWRkaXRpb25hbCBzdHlsaW5nKS4gKi9cbiAgZGF0YVR5cGU/OiBDb2x1bW5EYXRhVHlwZTtcbiAgLyoqIFRoZSBjb2x1bW4ncyBzaXplLCBlLmcuIFwiNDAgcHhcIi4gKi9cbiAgZ3JpZFRyYWNrU2l6ZT86IHN0cmluZztcbiAgLyoqIEFkZGl0aW9uYWwgQ1NTIGNsYXNzZXMgZm9yIHRoZSBoZWFkZXIgY2VsbC4gKi9cbiAgaGVhZGVyQ1NTQ2xhc3NOYW1lPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIC8qKiBBZGRpdGlvbmFsIENTUyBjbGFzc2VzIGZvciBkYXRhIGNlbGxzLiAqL1xuICBjZWxsQ1NTQ2xhc3NOYW1lPzogc3RyaW5nIHwgc3RyaW5nW107XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGNvbHVtbiBpcyBzb3J0YWJsZS4gKi9cbiAgc29ydGFibGU/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgc29ydCBvcmRlciBpcyBhc2NlbmRpbmcsIGRlc2NlbmRpbmcgb3Igbm90IHNwZWNpZmllZC4gKi9cbiAgc29ydE9yZGVyPzogU29ydE9yZGVyO1xuICBzb3J0aW5nQ29uZmlnPzogQ29sdW1uU29ydGluZ0NvbmZpZztcblxuICAvKiogV2hldGhlciB0aGUgY29sdW1uIGlzIGZpbHRlcmFibGUuICovXG4gIGZpbHRlcmFibGU/OiBib29sZWFuO1xuICAvKiogVGhlIHN0cmluZyB0byBzZWFyY2ggZm9yIG9yIGEgZnVuY3Rpb24gZm9yIGNsaWVudC1zaWRlIGZpbHRlcmluZy4gKi9cbiAgZmlsdGVyUHJlZGljYXRlPzogc3RyaW5nIHwgRmlsdGVyUHJlZGljYXRlRnVuY3Rpb247XG4gIC8qKiBDdXN0b20gZmlsdGVyaW5nIGZvcm0gcmVuZGVyZXIgY2FuIHNldCBhbnkgdmFsdWUgaGVyZSBhbmQgaXQgY2FuIGJlIHVzZWQgdG8gYnVpbGQgYSBxdWVyeSB0byB0aGUgc2VydmVyLiAqL1xuICBleHRlcm5hbEZpbHRlclF1ZXJ5PzogYW55O1xuICBmaWx0ZXJpbmdDb25maWc/OiBGb3JtbHlDb2x1bW5GaWx0ZXJpbmdDb25maWc7XG5cbiAgLyoqIEN1c3RvbSBkYXRhIGNlbGwgcmVuZGVyZXIgY29tcG9uZW50LiBJbmplY3QgYENlbGxSZW5kZXJlckNvbnRleHRgIHRvIGdldCBhY2Nlc3MgdG8gZGF0YSB2YWx1ZSwgaXRlbSBhbmQgY29sdW1uIG9iamVjdC4gKi9cbiAgY2VsbFJlbmRlcmVyQ29tcG9uZW50PzogVHlwZTxhbnk+O1xuICAvKiogQ3VzdG9tIGhlYWRlciBjZWxsIHJlbmRlcmVyIGNvbXBvbmVudC4gSW5qZWN0IGBDZWxsUmVuZGVyZXJDb250ZXh0YCB0byBnZXQgYWNjZXNzIHRvIGhlYWRlciB2YWx1ZSBhbmQgY29sdW1uIG9iamVjdC4gKi9cbiAgaGVhZGVyQ2VsbFJlbmRlcmVyQ29tcG9uZW50PzogVHlwZTxhbnk+O1xuICAvKiogQ3VzdG9tIGZpbHRlcmluZyBmb3JtIHJlbmRlcmVyIGNvbXBvbmVudC4gSW5qZWN0IGBGaWx0ZXJpbmdGb3JtUmVuZGVyZXJDb250ZXh0YCB0byBnZXQgYWNjZXNzIHRvIGNvbHVtbiBvYmplY3QgYW5kIG1ldGhvZHM6IGFwcGx5RmlsdGVyLCByZXNldEZpbHRlci4gKi9cbiAgZmlsdGVyaW5nRm9ybVJlbmRlcmVyQ29tcG9uZW50PzogVHlwZTxhbnk+O1xufVxuXG4vKiogRGVzY3JpYmVzIGEgY29sdW1uIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbkNvbmZpZyB7XG4gIC8qKiBUaGUgbmFtZSBmb3IgdGhlIGNvbHVtbi4gKi9cbiAgbmFtZT86IHN0cmluZztcblxuICAvKiogV2hldGhlciB0aGUgY29sdW1uIGlzIGRpc3BsYXllZC4gKi9cbiAgdmlzaWJsZT86IGJvb2xlYW47XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHNvcnQgb3JkZXIgaXMgYXNjZW5kaW5nLCBkZXNjZW5kaW5nIG9yIG5vdCBzcGVjaWZpZWQuICovXG4gIHNvcnRPcmRlcj86IFNvcnRPcmRlcjtcblxuICAvKiogVGhlIHNldHRpbmdzIG9mIGZpbHRlciBpbiBhIGNvbHVtbi4gKi9cbiAgZmlsdGVyPzogRmlsdGVyO1xufVxuXG4vKiogRGVzY3JpYmVzIGEgY3VzdG9tIGNvbHVtbiBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDdXN0b21Db2x1bW5Db25maWcgZXh0ZW5kcyBDb2x1bW5Db25maWcge1xuICAvKiogSlNPTiBwYXRoIHRvIHRoZSBtYW5hZ2VkIG9iamVjdCBwcm9wZXJ0eSB0byBiZSBkaXNwbGF5ZWQgKi9cbiAgcGF0aDogc3RyaW5nO1xuXG4gIC8qKiBDb2x1bW4gaGVhZGVyIHRpdGxlICovXG4gIGhlYWRlcjogc3RyaW5nO1xuXG4gIC8qKiBGbGFnIHRvIGlkZW50aWZ5IGN1c3RvbSBjb2x1bW5zICovXG4gIGN1c3RvbTogYm9vbGVhbjtcbn1cblxuLyoqIERlc2NyaWJlcyB0aGUgc2V0dGluZ3Mgb2YgZmlsdGVyIGluIGEgY29sdW1uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXIge1xuICAvKiogQ3VzdG9tIGZpbHRlcmluZyBmb3JtIHJlbmRlcmVyIGNhbiBzZXQgYW55IHZhbHVlIGhlcmUgYW5kIGl0IGNhbiBiZSB1c2VkIHRvIGJ1aWxkIGEgcXVlcnkgdG8gdGhlIHNlcnZlci4gKi9cbiAgZXh0ZXJuYWxGaWx0ZXJRdWVyeT86IGFueTtcbn1cblxuLyoqIERlc2NyaWJlcyBhbiBvYmplY3Qgd2l0aCBkYXRhIGdyaWQgY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JpZENvbmZpZyB7XG4gIC8qKiBUaGUgY29uZmlndXJhdGlvbiBvYmplY3RzIGZvciBhbGwgdGhlIGNvbHVtbnMuICovXG4gIGNvbHVtbnM6IENvbHVtbkNvbmZpZ1tdO1xuXG4gIC8qKiBQYWdpbmF0aW9uIG9iamVjdC4gKi9cbiAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbjtcbn1cblxuLyoqICAqL1xuZXhwb3J0IGNvbnN0IGVudW0gU3BlY2lhbENvbHVtbk5hbWUge1xuICAvKiogQ29sdW1uIHdpdGggY2hlY2tib3guICovXG4gIENoZWNrYm94ID0gJ2NoZWNrYm94JyxcblxuICAvKiogQ29sdW1uIHdpdGggcmFkaW8gYnV0dG9uLiAqL1xuICBSYWRpb0J1dHRvbiA9ICdyYWRpby1idXR0b24nLFxuXG4gIC8qKiBDb2x1bW4gd2l0aCByb3cgYWN0aW9ucy4gKi9cbiAgQWN0aW9ucyA9ICdhY3Rpb25zJ1xufVxuXG4vKiogICovXG5leHBvcnQgY29uc3QgZW51bSBDb2x1bW5EYXRhVHlwZSB7XG4gIC8qKiBDb2x1bW4gd2l0aCBpY29uLiAqL1xuICBJY29uID0gJ2ljb24nLFxuXG4gIC8qKiBOdW1lcmljIGNvbHVtbi4gKi9cbiAgTnVtZXJpYyA9ICdudW1lcmljJyxcblxuICAvKiogQ29sdW1uIHdpdGggc2hvcnQgdGV4dC4gKi9cbiAgVGV4dFNob3J0ID0gJ3RleHQtc2hvcnQnLFxuXG4gIC8qKiBDb2x1bW4gd2l0aCBsb25nIHRleHQuICovXG4gIFRleHRMb25nID0gJ3RleHQtbG9uZydcbn1cblxuLyoqIENsYXNzZXMgZm9yIGNvbHVtbiBkYXRhIHJlY29yZC4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIENvbHVtbkRhdGFSZWNvcmRDbGFzc05hbWUge1xuICAvKiogQW4gaWNvbi4gKi9cbiAgSWNvbiA9ICdkYXRhLXJlY29yZC1pY29uJyxcblxuICAvKiogQSBoZWFkZXIuICovXG4gIEhlYWRlciA9ICdkYXRhLXJlY29yZC1oZWFkZXInLFxuXG4gIC8qKiBEZWZhdWx0IC0gZW1wdHkuICovXG4gIERlZmF1bHQgPSAnJ1xufVxuXG5leHBvcnQgY29uc3QgbWluQ29sdW1uR3JpZFRyYWNrU2l6ZSA9IDgwO1xuXG4vKiogTWFwcyBjb2x1bW4gdHlwZXMgdG8gcmVsYXRpdmUgd2lkdGhzLiAqL1xuZXhwb3J0IGNvbnN0IHJhdGlvc0J5Q29sdW1uVHlwZXMgPSB7XG4gIC8qKiBUaGUgd2lkdGggcmF0aW9uIGZvciBpY29uIGNvbHVtbiB0eXBlLiAqL1xuICBpY29uOiAxLFxuXG4gIC8qKiBUaGUgd2lkdGggcmF0aW9uIGZvciBudW1lcmljIGNvbHVtbiB0eXBlLiAqL1xuICBudW1lcmljOiAxLFxuXG4gIC8qKiBUaGUgd2lkdGggcmF0aW9uIGZvciBzaG9ydCB0ZXh0IGNvbHVtbiB0eXBlLiAqL1xuICAndGV4dC1zaG9ydCc6IDEuNjcsXG5cbiAgLyoqIFRoZSB3aWR0aCByYXRpb24gZm9yIGxvbmcgdGV4dCBjb2x1bW4gdHlwZS4gKi9cbiAgJ3RleHQtbG9uZyc6IDMuMzNcbn07XG5cbi8qKiBTb3J0aW5nIG9yZGVyOiBhc2NlbmRpbmcsIGRlc2NlbmRpbmcsIG9yIG5vdCBzcGVjaWZpZWQuICovXG5leHBvcnQgdHlwZSBTb3J0T3JkZXIgPSAnYXNjJyB8ICdkZXNjJyB8ICcnO1xuXG4vKipcbiAqIEEgZmlsdGVyIHByZWRpY2F0ZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBpdGVtIFRoZSBjdXJyZW50IGl0ZW0gdG8gYmUgY2hlY2tlZC5cbiAqIEBwYXJhbSBwYXRoIFRoZSBwcm9wZXJ0eSBwYXRoIGNvbmZpZ3VyZWQgaW4gdGhlIGN1cnJlbnQgY29sdW1uLlxuICogQHJldHVybnMgVGhlIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBpdGVtIG1hdGNoZXMgYSBjb25kaXRpb24gb3Igbm90LlxuICovXG5leHBvcnQgdHlwZSBGaWx0ZXJQcmVkaWNhdGVGdW5jdGlvbiA9IChpdGVtOiBvYmplY3QsIHBhdGg6IHN0cmluZykgPT4gYm9vbGVhbjtcblxuLyoqIEZpbHRlcmluZyBhY3Rpb25zLiAqL1xuZXhwb3J0IGVudW0gRmlsdGVyaW5nQWN0aW9uVHlwZSB7XG4gIC8qKiBBY3Rpb24gaW52b2tlZCB3aGVuIGZpbHRlciBzZXR0aW5ncyBhcmUgdG8gYmUgYXBwbGllZC4gKi9cbiAgQXBwbHlGaWx0ZXIgPSAnQVBQTFlfRklMVEVSJyxcblxuICAvKiogQWN0aW9uIGludm9rZWQgd2hlbiBmaWx0ZXIgc2V0dGluZ3MgYXJlIHRvIGJlIGNsZWFyZWQuICovXG4gIFJlc2V0RmlsdGVyID0gJ1JFU0VUX0ZJTFRFUidcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtbHlDb2x1bW5GaWx0ZXJpbmdDb25maWcge1xuICAvKiogRGVmaW5lcyBhIEZpZWxkQ29uZmlnIGNvbmZpZ3VyYXRpb24gZm9yIEZvcm1seS4gICovXG4gIGZpZWxkcz86IEZvcm1seUZpZWxkQ29uZmlnW107XG4gIC8qKiBEZWZpbmVzIGEgSlNPTiBzY2hlbWEgZm9yIGZpbHRlcmluZyBjb25maWcgbW9kZWwuIENhbiBiZSB1c2VkIGluc3RlYWQgb2YgYGZpZWxkc2AgKi9cbiAgc2NoZW1hPzogb2JqZWN0O1xuICAvKiogRGVmaW5lcyBhIG1vZGVsIHRoYXQgd2lsbCBiZSBhcHBsaWVkIHRvIHJlbmRlcmVkIGZvcm0uICovXG4gIG1vZGVsPzogb2JqZWN0O1xuICAvKiogRGVmaW5lcyBGb3JtR3JvdXAgaW5zdGFuY2UgKi9cbiAgZm9ybUdyb3VwPzogRm9ybUdyb3VwO1xuICAvKipcbiAgICogVHJhbnNmb3JtcyBhIGZpbHRlcmluZyBjb25maWcgbW9kZWwgdG8gYW4gYXJyYXkgb2YgcGFydGlhbCBmaWx0ZXIgY2hpcCBvYmplY3RzLlxuICAgKiBAcGFyYW0gbW9kZWwgQW4gb2JqZWN0IHdpdGggZGVmaW5lZCBzdHJ1Y3R1cmUgKGUuZy4gYnkgc2NoZW1hKS5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgcGFydGlhbCBmaWx0ZXIgY2hpcCBvYmplY3RzLCBlYWNoIGNvbnRhaW5pbmcgYXQgbGVhc3QgYGRpc3BsYXlWYWx1ZWAgYW5kIHRoZSBhY3R1YWwgYHZhbHVlYCB0byBiZSB1cGRhdGVkLlxuICAgKiBPcHRpb25hbGx5LCBvdGhlciBwcm9wZXJ0aWVzIGZyb20gYEZpbHRlckNoaXBgIGFyZSBhbGxvd2VkLCBmb3IgZXhhbXBsZSwgYSBjdXN0b20gYHJlbW92ZWAgY2FsbGJhY2sgdG8gYmUgZXhlY3V0ZWQgd2hlbiBhIGNoaXAgaXMgYmVpbmcgcmVtb3ZlZC5cbiAgICovXG4gIGdlbmVyYXRlQ2hpcHM/OiAobW9kZWw6IGFueSkgPT4gUGFydGlhbEZpbHRlckNoaXBHZW5lcmF0aW9uVHlwZVtdO1xuICAvKipcbiAgICogVHJhbnNmb3JtcyBhIGZpbHRlcmluZyBjb25maWcgbW9kZWwgKGUuZy4gY29taW5nIGZyb20gc2NoZW1hIGZvcm0gY29tcG9uZW50KSB0byBhIHF1ZXJ5IG9iamVjdC5cbiAgICogSG93ZXZlciwgdXNpbmcgc2NoZW1hIGZvcm0gY29tcG9uZW50IGlzIG5vdCBuZWNlc3NhcnkuXG4gICAqIE1vZGVsIGNhbiBiZSBkZWZpbmVkIGFyYml0cmFyaWx5IGJ1dCBtdXN0IGNvbnZlcnRlZCB0byBhIHZhbGlkIHF1ZXJ5IG9iamVjdC5cbiAgICogQHBhcmFtIG1vZGVsIEFuIG9iamVjdCB3aXRoIGRlZmluZWQgc3RydWN0dXJlIChlLmcuIGJ5IHNjaGVtYSkuXG4gICAqIEByZXR1cm5zIEEgcXVlcnkgb2JqZWN0IHRvIGJlIHVzZWQgdG8gZ2VuZXJhdGUgYSBxdWVyeSBzdHJpbmcgKFF1ZXJ5VXRpbHMpLlxuICAgKi9cbiAgZ2V0RmlsdGVyOiAobW9kZWw6IGFueSkgPT4gYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtblNvcnRpbmdDb25maWcge1xuICBwYXRoU29ydGluZ0NvbmZpZ3M6IFBhdGhTb3J0aW5nQ29uZmlnW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF0aFNvcnRpbmdDb25maWcge1xuICBwYXRoOiBzdHJpbmc7XG4gIHNvcnRPcmRlck1vZGlmaWVyPzogU29ydE9yZGVyTW9kaWZpZXI7XG59XG5cbmV4cG9ydCBjb25zdCBlbnVtIFNvcnRPcmRlck1vZGlmaWVyIHtcbiAgS2VlcCxcbiAgSW52ZXJ0XG59XG5cbi8qKiBEZXNjcmliZXMgYW4gaXRlbSBpbiB0aGUgcm93LiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3cge1xuICAvKiogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtLiAqL1xuICBpZDogc3RyaW5nO1xuXG4gIC8qKiBBbnkgaXRlbSBwcm9wZXJ0eS4gKi9cbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG4vKiogRGVzY3JpYmVzIGEgcGFnaW5hdGlvbiBvYmplY3QuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRpb24ge1xuICAvKiogVGhlIG51bWJlciBvZiB0aGUgY3VycmVudCBwYWdlLiAqL1xuICBjdXJyZW50UGFnZT86IG51bWJlcjtcblxuICAvKiogVGhlIG51bWJlciBvZiB0aGUgbmV4dCBwYWdlLiAqL1xuICBuZXh0UGFnZT86IG51bWJlcjtcblxuICAvKiogVGhlIG51bWJlciBvZiBpdGVtcyBvbiBhIHNpbmdsZSBwYWdlLiAqL1xuICBwYWdlU2l6ZTogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gZmV0Y2ggc2VydmVyIGRhdGEuXG4gKiBAcGFyYW0gZGF0YVNvdXJjZU1vZGlmaWVyIFRoZSBjdXJyZW50IGRhdGEgc291cmNlIG1vZGlmaWVyLlxuICogQHJldHVybnMgUmV0dXJucyB0aGUgcmVzdWx0IGZyb20gc2VydmVyLlxuICovXG5leHBvcnQgdHlwZSBTZXJ2ZXJTaWRlRGF0YUNhbGxiYWNrID0gKFxuICBkYXRhU291cmNlTW9kaWZpZXI6IERhdGFTb3VyY2VNb2RpZmllclxuKSA9PiBTZXJ2ZXJTaWRlRGF0YVJlc3VsdCB8IFByb21pc2U8U2VydmVyU2lkZURhdGFSZXN1bHQ+IHwgT2JzZXJ2YWJsZTxTZXJ2ZXJTaWRlRGF0YVJlc3VsdD47XG5cbi8qKiBEZXNjcmliZXMgYSBkYXRhIHNvdXJjZSBtb2RpZmllciBmb3IgcmVxdWVzdGluZyBzZXJ2ZXIgZGF0YS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVNvdXJjZU1vZGlmaWVyIHtcbiAgLyoqIFRoZSBsaXN0IG9mIGNvbHVtbnMuICovXG4gIGNvbHVtbnM6IENvbHVtbltdO1xuXG4gIC8qKiBUZXh0IHRvIHNlYXJjaC4gKi9cbiAgc2VhcmNoVGV4dDogc3RyaW5nO1xuXG4gIC8qKiBQYWdpbmF0aW9uIG9iamVjdC4gKi9cbiAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbjtcblxuICAvKiogU2VsZWN0aW9uIGluZm8gb2JqZWN0LiAqL1xuICBzZWxlY3Rpb246IHtcbiAgICAvKiogV2hldGhlciB0aGUgc2VsZWN0aW9uIGlzIGVuYWJsZWQuICovXG4gICAgZW5hYmxlZDogYm9vbGVhbjtcblxuICAgIC8qKiBUaGUgbmFtZSBvZiB0aGUgcHJpbWFyeSBrZXkuICovXG4gICAgcHJpbWFyeUtleTogc3RyaW5nO1xuICB9O1xufVxuXG4vKiogRGVzY3JpYmVzIGEgcmVzdWx0IGZyb20gc2VydmVyIHdpdGggZGF0YSBhbmQgYWRkaXRpb25hbCBzdGF0aXN0aWNzLiAqL1xuZXhwb3J0IHR5cGUgU2VydmVyU2lkZURhdGFSZXN1bHQgPSBJUmVzdWx0TGlzdDxvYmplY3Q+ICYge1xuICAvKiogVGhlIHJlYWwgZ3JhbmQgdG90YWwgbnVtYmVyIG9mIGl0ZW1zICh0aGUgd2hvbGUgZGF0YXNldCkuICovXG4gIHNpemU6IG51bWJlcjtcblxuICAvKiogVGhlIG51bWJlciBvZiBpdGVtcyBhZnRlciBmaWx0ZXJpbmcgYXBwbGllZCB0byB0aGUgd2hvbGUgZGF0YXNldCAoc3Vic2V0KS4gKi9cbiAgZmlsdGVyZWRTaXplOiBudW1iZXI7XG5cbiAgLyoqIFRoZSBsaXN0IG9mIGlkcyBvZiBhbGwgZmlsdGVyZWQgaXRlbXMgKHN1YnNldCkuICovXG4gIGZpbHRlcmVkRGF0YUlkcz86IHN0cmluZ1tdO1xufTtcblxuLyoqIERlc2NyaWJlcyBhbiBvYmplY3Qgd2l0aCBkYXRhIHNvdXJjZSBzdGF0aXN0aWNzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhU291cmNlU3RhdHMge1xuICAvKiogVGhlIHJlYWwgZ3JhbmQgdG90YWwgbnVtYmVyIG9mIGl0ZW1zICh0aGUgd2hvbGUgZGF0YXNldCkuICovXG4gIHNpemU6IG51bWJlcjtcblxuICAvKiogVGhlIG51bWJlciBvZiBpdGVtcyBhZnRlciBmaWx0ZXJpbmcgYXBwbGllZCB0byB0aGUgd2hvbGUgZGF0YXNldCAoc3Vic2V0KS4gKi9cbiAgZmlsdGVyZWRTaXplOiBudW1iZXI7XG5cbiAgLyoqIFRoZSBudW1iZXIgb2YgdGhlIGN1cnJlbnQgcGFnZS4gKi9cbiAgY3VycmVudFBhZ2U6IG51bWJlcjtcblxuICAvKiogVGhlIG51bWJlciBvZiB0aGUgbmV4dCBwYWdlLiAqL1xuICBuZXh0UGFnZT86IG51bWJlcjtcblxuICAvKiogVGhlIG51bWJlciBvZiBpdGVtcyBjdXJyZW50bHkgc2hvd24gaW4gdGhlIGxpc3QgdmlldywgYS5rLmEuIGN1cnJlbnQgcGFnZSAod2hhdCB0aGUgdXNlciBzZWVzIG9uIHNjcmVlbikuICovXG4gIGN1cnJlbnRQYWdlU2l6ZTogbnVtYmVyO1xuXG4gIC8qKiBUaGUgbnVtYmVyIG9mIGl0ZW1zIG9uIHRoZSBmaXJzdCBwYWdlLiAgKi9cbiAgZmlyc3RQYWdlU2l6ZTogbnVtYmVyO1xufVxuXG4vKiogRGVzY3JpYmVzIGRhdGEgZ3JpZCBkaXNwbGF5IG9wdGlvbnMuICovXG5leHBvcnQgaW50ZXJmYWNlIERpc3BsYXlPcHRpb25zIHtcbiAgLyoqIFNob3cgb3IgaGlkZSB6ZWJyYS1zdHJpcGluZyBpbiB0aGUgdGFibGUgKi9cbiAgc3RyaXBlZDogYm9vbGVhbjtcblxuICAvKiogU2hvdyBvciBoaWRlIGVhY2ggY2VsbCBib3JkZXIgKi9cbiAgYm9yZGVyZWQ6IGJvb2xlYW47XG5cbiAgLyoqIFNob3cgb3IgaGlkZSB0aGUgZ3JpZCBoZWFkZXIgKi9cbiAgZ3JpZEhlYWRlcjogYm9vbGVhbjtcblxuICAvKiogU2hvdyBvciBoaWRlIGZpbHRlciBsYWJlbCBpbiB0aGUgZ3JpZCBoZWFkZXIgKi9cbiAgZmlsdGVyOiBib29sZWFuO1xuXG4gIC8qKiBFbmFibGUgdG8gZGlzcGxheSBhIGJhY2tncm91bmQgY29sb3Igb24gaG92ZXIgKi9cbiAgaG92ZXI6IGJvb2xlYW47XG59XG5cbi8qKiBEZXNjcmliZXMgYSBkYXRhIGdyaWQgYWN0aW9uIGNvbnRyb2wgZm9yIGluZGl2aWR1YWwgaXRlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uQ29udHJvbCB7XG4gIC8qKiBUaGUgdHlwZSBvZiB0aGUgYWN0aW9uLCBwcmVkZWZpbmVkIG9yIGN1c3RvbS4gKi9cbiAgdHlwZTogQnVpbHRJbkFjdGlvblR5cGUgfCBzdHJpbmc7XG5cbiAgLyoqIFRoZSBsYWJlbCBmb3IgdGhlIGFjdGlvbiBidXR0b24uICovXG4gIHRleHQ/OiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBpY29uIGZvciB0aGUgYWN0aW9uIGJ1dHRvbi4gKi9cbiAgaWNvbj86IHN0cmluZztcblxuICAvKiogVGhlIGljb24gY2xhc3NlcyBmb3IgdGhlIGFjdGlvbiBidXR0b24gaWNvbi4gKi9cbiAgaWNvbkNsYXNzZXM/OiBzdHJpbmc7XG5cbiAgLyoqIEFjdGlvbiBpY29uIHdpbGwgYmUgdmlzaWJsZSBvbiBob3ZlciBvbmx5ICovXG4gIHNob3dPbkhvdmVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbi5cbiAgICogQHBhcmFtIGl0ZW0gVGhlIGl0ZW0gdG8gcGVyZm9ybSB0aGUgYWN0aW9uIG9uLlxuICAgKiBAcGFyYW0gcmVsb2FkIFRoZSBmdW5jdGlvbiB0byBjYWxsLCBpZiB5b3Ugd2FudCB0byByZWxvYWQgdGhlIGdyaWQuXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICBjYWxsYmFjazogKChpdGVtOiBSb3csIHJlbG9hZDogKCkgPT4gdm9pZCkgPT4gdm9pZCkgfCBGdW5jdGlvbjtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgYWN0aW9uIHNob3VsZCBiZSBzaG93biBmb3IgZ2l2ZW4gaXRlbSAoaWYgbm90IGRlZmluZWQsIHRoZSBhY3Rpb24gd2lsbCBiZSBzaG93biBhbHdheXMpLlxuICAgKiBAcGFyYW0gaXRlbSBUaGUgaXRlbSBmb3Igd2hpY2ggdGhlIGFjdGlvbiBpcyBzdXBwb3NlZCB0byBiZSBwZXJmb3JtZWQuXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICBzaG93SWY/OiAoKGl0ZW06IFJvdyAmIHN0cmluZ1tdKSA9PiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPiB8IE9ic2VydmFibGU8Ym9vbGVhbj4pIHwgRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIG9yZGVyIGluIHdoaWNoIGFjdGlvbiBjb250cm9scyBhcHBlYXIuIEhpZ2hlciB2YWx1ZSBtZWFucyBlYXJsaWVyIHBvc2l0aW9uLlxuICAgKiBDb250cm9scyB3aXRob3V0IHByaW9yaXR5IGFyZSBoYW5kbGVkIHdpdGggcHJpb3JpdHkgPSAwLiBJZiB5b3Ugd2FudCB0byBwbGFjZSBhbiBhY3Rpb24gYWZ0ZXJcbiAgICogYW4gYWN0aW9uIHdpdGhvdXQgcHJpb3JpdHksIG5lZ2F0aXZlIG51bWJlcnMgY2FuIGJlIHVzZWQuXG4gICAqL1xuICBwcmlvcml0eT86IG51bWJlcjtcblxuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbi8qKiBEZXNjcmliZXMgYSBkYXRhIGdyaWQgYWN0aW9uIGNvbnRyb2wgZm9yIG11bHRpcGxlIGl0ZW1zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWxrQWN0aW9uQ29udHJvbCBleHRlbmRzIEFjdGlvbkNvbnRyb2wge1xuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbi5cbiAgICogQHBhcmFtIHNlbGVjdGVkSXRlbUlkcyBUaGUgbGlzdCBvZiBpZHMgb2YgdGhlIHNlbGVjdGVkIGl0ZW1zLlxuICAgKiBAcGFyYW0gcmVsb2FkIFRoZSBmdW5jdGlvbiB0byBjYWxsLCBpZiB5b3Ugd2FudCB0byByZWxvYWQgdGhlIGdyaWQuXG4gICAqL1xuICBjYWxsYmFjayhzZWxlY3RlZEl0ZW1JZHM6IHN0cmluZ1tdLCByZWxvYWQ6ICgpID0+IHZvaWQpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBhY3Rpb24gc2hvdWxkIGJlIHNob3duIGZvciBnaXZlbiBzZWxlY3RlZCBpdGVtcyAoaWYgbm90IGRlZmluZWQsIHRoZSBhY3Rpb24gd2lsbCBiZSBzaG93biBhbHdheXMpLlxuICAgKiBAcGFyYW0gc2VsZWN0ZWRJdGVtSWRzIFRoZSBsaXN0IG9mIGlkcyBvZiB0aGUgc2VsZWN0ZWQgaXRlbXMgZm9yIHdoaWNoIHRoZSBhY3Rpb24gaXMgc3VwcG9zZWQgdG8gYmUgcGVyZm9ybWVkLlxuICAgKi9cbiAgc2hvd0lmPyhzZWxlY3RlZEl0ZW1JZHM6IHN0cmluZ1tdKTogYm9vbGVhbjtcbn1cblxuLyoqIERlc2NyaWJlcyBhIGRhdGEgZ3JpZCBhY3Rpb24gY29udHJvbCBmb3IgdGhlIGhlYWRlci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyQWN0aW9uQ29udHJvbCBleHRlbmRzIEFjdGlvbkNvbnRyb2wge1xuICAvKipcbiAgICogQ3VzdG9tIHRlbXBsYXRlIGNhbiBiZSBwcm92aWRlZC4gSWYgbm8gdGVtcGxhdGUgaXMgcHJvdmlkZWQsXG4gICAqIHRoZSBkZWZhdWx0IGhlYWRlckFjdGlvbkNvbnRyb2wgdGVtcGxhdGUgaXMgdXNlZC5cbiAgICovXG4gIHRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbi5cbiAgICovXG4gIGNhbGxiYWNrKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIGFjdGlvbiBzaG91bGQgYmUgc2hvd24uXG4gICAqL1xuICBzaG93SWY/KCk6IGJvb2xlYW47XG59XG5cbi8qKiBQcmVkZWZpbmVkIHR5cGVzIG9mIGFjdGlvbnMuICovXG5leHBvcnQgY29uc3QgZW51bSBCdWlsdEluQWN0aW9uVHlwZSB7XG4gIC8qKiBFZGl0IGJ1aWx0LWluIGFjdGlvbi4gKi9cbiAgRWRpdCA9ICdFRElUJyxcblxuICAvKiogRGVsZXRlIGJ1aWx0LWluIGFjdGlvbi4gKi9cbiAgRGVsZXRlID0gJ0RFTEVURScsXG5cbiAgLyoqIEV4cG9ydCBidWlsdC1pbiBhY3Rpb24uICovXG4gIEV4cG9ydCA9ICdFWFBPUlQnXG59XG5cbi8qKlxuICogQWxsb3dzIHRvIGF0dGFjaCBhY3Rpb24gY29udHJvbHMgdG8gc3BlY2lmaWVkIGdyaWRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkNvbnRyb2xIb29rIHtcbiAgLyoqXG4gICAqIFRoZSBhY3Rpb24gY29udHJvbChzKSB0aGF0IHdpbGwgYmUgYXR0YWNoZWQgdG8gdGhlIGdyaWQuXG4gICAqL1xuICBhY3Rpb25Db250cm9sczogQWN0aW9uQ29udHJvbCB8IEFjdGlvbkNvbnRyb2xbXTtcbiAgLyoqXG4gICAqIEEgZnVuY3Rpb25zIHRoYXQgZGV0ZXJtaW5lcyB0byB3aGljaCBncmlkKHMpIHRoZSBhY3Rpb24gY29udHJvbChzKSB3aWxsIGJlIGF0dGFjaGVkLlxuICAgKiBOb3QgcHJvdmlkaW5nIGEgZnVuY3Rpb24gcmVzdWx0cyBpbiB0aGUgYWN0aW9ucyBjb250cm9sKHMpIG5vdCBiZWluZyBhdHRhY2hlZCB0byBhbnkgZ3JpZC5cbiAgICovXG4gIG1hdGNoZXNHcmlkOiAoXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIGNvbnRleHQ/OiBHcmlkQ29uZmlnQ29udGV4dFxuICApID0+IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+IHwgT2JzZXJ2YWJsZTxib29sZWFuPjtcbn1cblxuLyoqXG4gKiBGYWN0b3J5IHRvIGltcGxlbWVudCBpbiBvcmRlciB0byBhZGQgYWN0aW9uIGNvbnRyb2xzIGZyb20gYW4gZXh0ZW5zaW9uLlxuICovXG5leHBvcnQgdHlwZSBBY3Rpb25Db250cm9sRmFjdG9yeSA9IEV4dGVuc2lvbkZhY3Rvcnk8QWN0aW9uQ29udHJvbEhvb2s+O1xuXG4vKipcbiAqIERlZmluZXMgYW4gaW50ZXJmYWNlIGZvciBhIGZpbHRlciBjaGlwIG9iamVjdCwgd2hpY2ggcmVwcmVzZW50cyBhIGZpbHRlciBhcHBsaWVkIHRvIGEgY29sdW1uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckNoaXAge1xuICAvKipcbiAgICogVGhlIGFjdHVhbCB2YWx1ZSB0aGF0IHRoZSBjaGlwIHdpbGwgaG9sZC5cbiAgICogSXQgY2FuIGJlIGp1c3QgYSBzdHJpbmcgb3IgYSBtb3JlIGNvbXBsZXggb2JqZWN0IGxpa2VcbiAgICoge2lkOiAxMjMsIG5hbWU6IFRlc3QsIHZhbHVlOiB0ZXN0fS5cbiAgICovXG4gIHZhbHVlOiBhbnk7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSB0aGF0IHRoZSBjaGlwIHdpbGwgZGlzcGxheSBpbiB0aGUgZHJvcGRvd24uXG4gICAqL1xuICBkaXNwbGF5VmFsdWU6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgbGFiZWwgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBpZiBmaWx0ZXIgY2hpcHMgYXJlIHNlcGFyYXRlZCBpbnRvIG11bHRpcGxlIGdyb3Vwcy5cbiAgICovXG4gIGxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKiBBbiBvcHRpb25hbCBwcm9wZXJ0eSB0aGF0IGhvbGRzIHRoZSBwYXRoIHRvIHRoZSBjaGlwIHZhbHVlIGluIHRoZSBleHRlcm5hbEZpbHRlclF1ZXJ5LiAqL1xuICBwYXRoPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIHByb3BlcnR5IHRoYXQgaG9sZHMgdGhlIGZvcm0gdmFsdWUgdGFrZW4gZnJvbSB0aGUgY29sdW1uIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBleHRlcm5hbEZpbHRlclF1ZXJ5PzogYW55O1xuXG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBwcm9wZXJ0eSB0aGF0IGhvbGRzIHRoZSBmb3JtbHkgZmlsdGVyaW5nIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjb2x1bW4gdGhhdCB0aGlzIGZpbHRlciBpcyBhcHBsaWVkIHRvLlxuICAgKi9cbiAgZmlsdGVyaW5nQ29uZmlnPzogRm9ybWx5Q29sdW1uRmlsdGVyaW5nQ29uZmlnO1xuXG4gIC8qKiBBbiBvcHRpb25hbCBwcm9wZXJ0eSB0aGF0IGhvbGRzIGEgc3RyaW5nIHRvIHNlYXJjaCBmb3IuICovXG4gIGZpbHRlclByZWRpY2F0ZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNvbHVtbiB0aGF0IHRoaXMgZmlsdGVyIGlzIGFwcGxpZWQgdG8uXG4gICAqL1xuICBjb2x1bW5OYW1lOiBzdHJpbmcgfCBTcGVjaWFsQ29sdW1uTmFtZTtcblxuICAvKipcbiAgICogQW4gb3B0aW9uYWwgZnVuY3Rpb24gdG8gcmVtb3ZlIHRoaXMgZmlsdGVyIGZyb20gdGhlIGNvbHVtbi5cbiAgICogSWYgbm90IHByb3ZpZGVkIHdpbGwgc2V0IGRlZmF1bHQgcmVtb3ZhbCBmdW5jdGlvbiB0aGF0IHdpbGwgcmVkdWNlIHRoZSBleHRlcm5hbCBxdWVyeSBieSByZW1vdmluZyB0aGUgb2JqZWN0IHRoYXQgaXMgcmVzb2x2ZWQgYnkgdGhlIHBhdGggc2V0IGluIHRoZSBGaWx0ZXJDaGlwLlxuICAgKiBAcmV0dXJucyBBbiBvYmplY3QgZGVmaW5lZCBieSB0aGUgYEZpbHRlckNoaXBgIHR5cGUsIGluY2x1ZGluZyB0aGUgYGNvbHVtbk5hbWVgIGFuZCAgdXBkYXRlZCBgZXh0ZXJuYWxGaWx0ZXJRdWVyeWAgb3IgJ2ZpbHRlclByZWRpY2F0ZScgcHJvcGVydGllcy5cbiAgICogVGhlIHJldHVybmVkIG9iamVjdCBtYXkgYWxzbyBpbmNsdWRlIGFkZGl0aW9uYWwgcHJvcGVydGllcyBkZWZpbmVkIGJ5IHRoZSBgRmlsdGVyQ2hpcGAgdHlwZSBhcyBwYXJ0aWFscy5cbiAgICovXG4gIHJlbW92ZT86ICgpID0+IFBhcnRpYWxGaWx0ZXJDaGlwUmVtb3ZhbFR5cGU7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHBhcnRpYWwgZmlsdGVyIGNoaXAgd2l0aCBlaXRoZXIgJ2NvbHVtbk5hbWUnIGFuZCAnZXh0ZXJuYWxGaWx0ZXJRdWVyeScgb3IgJ2NvbHVtbk5hbWUnIGFuZCAnZmlsdGVyUHJlZGljYXRlJy5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IFBhcnRpYWxGaWx0ZXJDaGlwUmVtb3ZhbFR5cGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBjb2x1bW5OYW1lIC0gVGhlIGNvbHVtbiBuYW1lIGZvciB0aGUgZmlsdGVyIGNoaXAuXG4gKiBAcHJvcGVydHkge2FueX0gW2V4dGVybmFsRmlsdGVyUXVlcnldIC0gVGhlIGV4dGVybmFsIGZpbHRlciBxdWVyeSBmb3IgdGhlIGNoaXAgdXNlZCBmb3IgY29tcGxleCBmaWx0ZXJzLlxuICogQHByb3BlcnR5IHthbnl9IFtmaWx0ZXJQcmVkaWNhdGVdIC0gVGhlIGZpbHRlcmluZyBwcmVkaWNhdGUgZm9yIHRoZSBjaGlwIHVzZWQgZm9yIHNpbXBsZSBmaWx0ZXJzIHdpdGggY2xpZW50LXNpZGUgZmlsdGVyaW5nLlxuICogQHByb3BlcnR5IHsuLi5GaWx0ZXJDaGlwfSBbb3B0aW9uYWxQcm9wZXJ0aWVzXSAtIE9wdGlvbmFsIHByb3BlcnRpZXMgZnJvbSB0aGUgRmlsdGVyQ2hpcCB0eXBlLlxuICovXG5leHBvcnQgdHlwZSBQYXJ0aWFsRmlsdGVyQ2hpcFJlbW92YWxUeXBlID0gKFxuICB8IFJlcXVpcmVkPFBpY2s8RmlsdGVyQ2hpcCwgJ2NvbHVtbk5hbWUnIHwgJ2V4dGVybmFsRmlsdGVyUXVlcnknPj5cbiAgfCBSZXF1aXJlZDxQaWNrPEZpbHRlckNoaXAsICdjb2x1bW5OYW1lJyB8ICdmaWx0ZXJQcmVkaWNhdGUnPj5cbikgJlxuICBQYXJ0aWFsPEZpbHRlckNoaXA+O1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBwYXJ0aWFsIGZpbHRlciBjaGlwIHdpdGggcmVxdWlyZWQgcHJvcGVydGllcyAnZGlzcGxheVZhbHVlJyBhbmQgJ3ZhbHVlJy5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IFBhcnRpYWxGaWx0ZXJDaGlwR2VuZXJhdGlvblR5cGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBkaXNwbGF5VmFsdWUgLSBUaGUgZGlzcGxheSB2YWx1ZSBmb3IgdGhlIGZpbHRlciBjaGlwLlxuICogQHByb3BlcnR5IHthbnl9IHZhbHVlIC0gVGhlIHZhbHVlIGZvciB0aGUgZmlsdGVyIGNoaXAuXG4gKiBAcHJvcGVydHkgey4uLkZpbHRlckNoaXB9IFtvcHRpb25hbFByb3BlcnRpZXNdIC0gT3B0aW9uYWwgcHJvcGVydGllcyBmcm9tIHRoZSBGaWx0ZXJDaGlwIHR5cGUuXG4gKi9cbmV4cG9ydCB0eXBlIFBhcnRpYWxGaWx0ZXJDaGlwR2VuZXJhdGlvblR5cGUgPSBSZXF1aXJlZDxQaWNrPEZpbHRlckNoaXAsICdkaXNwbGF5VmFsdWUnIHwgJ3ZhbHVlJz4+ICZcbiAgUGFydGlhbDxGaWx0ZXJDaGlwPjtcblxuLyoqXG4gKiBEZWZpbmVzIGFuIGludGVyZmFjZSBmb3IgYSBtYXBwZXIgZnVuY3Rpb24gdGhhdCBtYXBzIGEgYEZvcm1seUZpZWxkQ29uZmlnYCB0byBhIGBGaWx0ZXJDaGlwYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJNYXBwZXIge1xuICAvKipcbiAgICogVGhlIHR5cGUgb3IgdHlwZXMgb2YgdGhlIGBGb3JtbHlGaWVsZENvbmZpZ2AgdGhhdCB0aGlzIG1hcHBlciBhcHBsaWVzIHRvLlxuICAgKi9cbiAgZmllbGRUeXBlOiBzdHJpbmdbXSB8IHN0cmluZztcblxuICAvKipcbiAgICogTWFwcyBhIGBGb3JtbHlGaWVsZENvbmZpZ2AgYW5kIGEgYEZpbHRlckNoaXBgIHRvIGFuIGBPYnNlcnZhYmxlYCBvZiBhIGBGaWx0ZXJDaGlwYC5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBleHRlbmRzIHRoZSBwcm92aWRlZCBgRmlsdGVyQ2hpcGAgb2JqZWN0IHdpdGggYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGJhc2VkIG9uIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgYEZvcm1seUZpZWxkQ29uZmlnYC5cbiAgICogVGhlIG1hcHBpbmcgcHJvY2VzcyBkZXBlbmRzIG9uIHRoZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYEZpbHRlck1hcHBlcmAuXG4gICAqXG4gICAqIEBwYXJhbSBmaWVsZCAtIFRoZSBgRm9ybWx5RmllbGRDb25maWdgIHRvIG1hcC5cbiAgICogQHBhcmFtIGZpbHRlciAtIFRoZSBgRmlsdGVyQ2hpcGAgdG8gbWFwLlxuICAgKiBAcmV0dXJucyBBbiBgT2JzZXJ2YWJsZWAgdGhhdCBlbWl0cyB0aGUgbWFwcGVkIGBGaWx0ZXJDaGlwYC5cbiAgICogSWYgdW5kZWZpbmVkIGlzIHJldHVybmVkIGFuIGVycm9yIGlzIHRocm93biBhbmQgdGhlIGNoaXAgaXMgbm90IHZpc3VhbGl6ZWQuXG4gICAqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gRXhhbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBgbWFwYCBmdW5jdGlvbiBpbiBhIGBGaWx0ZXJNYXBwZXJgXG4gICAqIG1hcChmaWVsZDogRm9ybWx5RmllbGRDb25maWcsIGZpbHRlcjogRmlsdGVyQ2hpcCk6IE9ic2VydmFibGU8RmlsdGVyQ2hpcD4ge1xuICAgKiAgIGlmICh0aGlzLmZpZWxkVHlwZS5pbmNsdWRlcyhmaWVsZC50eXBlLnRvU3RyaW5nKCkpKSB7XG4gICAqICAgICByZXR1cm4gdG9PYnNlcnZhYmxlKGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5vcHRpb25zKS5waXBlKFxuICAgKiAgICAgICBtYXAob3B0aW9ucyA9PiB7XG4gICAqICAgICAgICAgY29uc3Qgb2JqZWN0ID0gb3B0aW9ucy5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IGdldChmaWx0ZXIuZXh0ZXJuYWxGaWx0ZXJRdWVyeSwgZmlsdGVyLnBhdGgpKTtcbiAgICogICAgICAgICByZXR1cm4ge1xuICAgKiAgICAgICAgICAgLi4uZmlsdGVyLFxuICAgKiAgICAgICAgICAgdmFsdWU6IG9iamVjdCxcbiAgICogICAgICAgICAgIGRpc3BsYXlWYWx1ZTogb2JqZWN0Py5sYWJlbFxuICAgKiAgICAgICAgIH07XG4gICAqICAgICAgIH0pXG4gICAqICAgICApO1xuICAgKiAgIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIG1hcDogKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZywgZmlsdGVyOiBGaWx0ZXJDaGlwKSA9PiBPYnNlcnZhYmxlPEZpbHRlckNoaXA+O1xufVxuIl19
@@ -1,10 +1,11 @@
1
1
  import { Pipe } from '@angular/core';
2
2
  import { groupBy, values } from 'lodash-es';
3
+ import { defer, forkJoin, map, mergeMap, of } from 'rxjs';
4
+ import { toObservable } from '../common/extension-hooks';
3
5
  import * as i0 from "@angular/core";
4
6
  export class VisibleControlsPipe {
5
7
  transform(actionControls, arg) {
6
- const visible = (actionControls ?? []).filter(actionControl => !actionControl.showIf || actionControl.showIf(arg));
7
- return values(groupBy(visible, 'type'))
8
+ return defer(() => of(actionControls ?? [])).pipe(mergeMap(controls => forkJoin(controls.map(control => toObservable(!control.showIf || control.showIf(arg)).pipe(map(visible => ({ control, visible }))))).pipe(map(evaluatedControls => evaluatedControls.filter(ec => ec.visible).map(ec => ec.control)))), map(visible => values(groupBy(visible, 'type'))
8
9
  .map((actionControls) => {
9
10
  if (actionControls?.length === 1) {
10
11
  return actionControls[0];
@@ -15,7 +16,7 @@ export class VisibleControlsPipe {
15
16
  .find(actionControl => !!actionControl.showIf);
16
17
  }
17
18
  })
18
- .sort(this.sortByPriority);
19
+ .sort(this.sortByPriority)));
19
20
  }
20
21
  sortByPriority(a, b) {
21
22
  return (b?.priority ?? 0) - (a?.priority ?? 0);
@@ -27,4 +28,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
27
28
  type: Pipe,
28
29
  args: [{ name: 'visibleControls' }]
29
30
  }] });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaWJsZS1jb250cm9scy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9kYXRhLWdyaWQvdmlzaWJsZS1jb250cm9scy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUk1QyxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFNBQVMsQ0FBQyxjQUErQixFQUFFLEdBQVM7UUFDbEQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUMzQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUNwRSxDQUFDO1FBQ0YsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQzthQUNwQyxHQUFHLENBQUMsQ0FBQyxjQUErQixFQUFFLEVBQUU7WUFDdkMsSUFBSSxjQUFjLEVBQUUsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNqQyxPQUFPLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUM7cUJBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO3FCQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ25ELENBQUM7UUFDSCxDQUFDLENBQUM7YUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTyxjQUFjLENBQUMsQ0FBZ0IsRUFBRSxDQUFnQjtRQUN2RCxPQUFPLENBQUMsQ0FBQyxFQUFFLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQzs4R0FwQlUsbUJBQW1COzRHQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBRC9CLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBncm91cEJ5LCB2YWx1ZXMgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQWN0aW9uQ29udHJvbCB9IGZyb20gJy4vZGF0YS1ncmlkLm1vZGVsJztcblxuQFBpcGUoeyBuYW1lOiAndmlzaWJsZUNvbnRyb2xzJyB9KVxuZXhwb3J0IGNsYXNzIFZpc2libGVDb250cm9sc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKGFjdGlvbkNvbnRyb2xzOiBBY3Rpb25Db250cm9sW10sIGFyZz86IGFueSk6IEFjdGlvbkNvbnRyb2xbXSB7XG4gICAgY29uc3QgdmlzaWJsZSA9IChhY3Rpb25Db250cm9scyA/PyBbXSkuZmlsdGVyKFxuICAgICAgYWN0aW9uQ29udHJvbCA9PiAhYWN0aW9uQ29udHJvbC5zaG93SWYgfHwgYWN0aW9uQ29udHJvbC5zaG93SWYoYXJnKVxuICAgICk7XG4gICAgcmV0dXJuIHZhbHVlcyhncm91cEJ5KHZpc2libGUsICd0eXBlJykpXG4gICAgICAubWFwKChhY3Rpb25Db250cm9sczogQWN0aW9uQ29udHJvbFtdKSA9PiB7XG4gICAgICAgIGlmIChhY3Rpb25Db250cm9scz8ubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgcmV0dXJuIGFjdGlvbkNvbnRyb2xzWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiAoYWN0aW9uQ29udHJvbHMgfHwgW10pXG4gICAgICAgICAgICAuc29ydCh0aGlzLnNvcnRCeVByaW9yaXR5KVxuICAgICAgICAgICAgLmZpbmQoYWN0aW9uQ29udHJvbCA9PiAhIWFjdGlvbkNvbnRyb2wuc2hvd0lmKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5zb3J0KHRoaXMuc29ydEJ5UHJpb3JpdHkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0QnlQcmlvcml0eShhOiBBY3Rpb25Db250cm9sLCBiOiBBY3Rpb25Db250cm9sKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKGI/LnByaW9yaXR5ID8/IDApIC0gKGE/LnByaW9yaXR5ID8/IDApO1xuICB9XG59XG4iXX0=
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaWJsZS1jb250cm9scy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9kYXRhLWdyaWQvdmlzaWJsZS1jb250cm9scy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFJekQsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixTQUFTLENBQUMsY0FBK0IsRUFBRSxHQUFvQjtRQUM3RCxPQUFPLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMvQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FDbEIsUUFBUSxDQUNOLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FDckIsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN2RCxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FDdkMsQ0FDRixDQUNGLENBQUMsSUFBSSxDQUNKLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUMzRixDQUNGLEVBQ0QsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQ1osTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDN0IsR0FBRyxDQUFDLENBQUMsY0FBK0IsRUFBRSxFQUFFO1lBQ3ZDLElBQUksY0FBYyxFQUFFLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDakMsT0FBTyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDO3FCQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztxQkFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FDN0IsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLGNBQWMsQ0FBQyxDQUFnQixFQUFFLENBQWdCO1FBQ3ZELE9BQU8sQ0FBQyxDQUFDLEVBQUUsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDOzhHQWhDVSxtQkFBbUI7NEdBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEL0IsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdyb3VwQnksIHZhbHVlcyB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBkZWZlciwgZm9ya0pvaW4sIG1hcCwgbWVyZ2VNYXAsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tICcuLi9jb21tb24vZXh0ZW5zaW9uLWhvb2tzJztcbmltcG9ydCB7IEFjdGlvbkNvbnRyb2wsIFJvdyB9IGZyb20gJy4vZGF0YS1ncmlkLm1vZGVsJztcblxuQFBpcGUoeyBuYW1lOiAndmlzaWJsZUNvbnRyb2xzJyB9KVxuZXhwb3J0IGNsYXNzIFZpc2libGVDb250cm9sc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKGFjdGlvbkNvbnRyb2xzOiBBY3Rpb25Db250cm9sW10sIGFyZz86IFJvdyAmIHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxBY3Rpb25Db250cm9sW10+IHtcbiAgICByZXR1cm4gZGVmZXIoKCkgPT4gb2YoYWN0aW9uQ29udHJvbHMgPz8gW10pKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoY29udHJvbHMgPT5cbiAgICAgICAgZm9ya0pvaW4oXG4gICAgICAgICAgY29udHJvbHMubWFwKGNvbnRyb2wgPT5cbiAgICAgICAgICAgIHRvT2JzZXJ2YWJsZSghY29udHJvbC5zaG93SWYgfHwgY29udHJvbC5zaG93SWYoYXJnKSkucGlwZShcbiAgICAgICAgICAgICAgbWFwKHZpc2libGUgPT4gKHsgY29udHJvbCwgdmlzaWJsZSB9KSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICkucGlwZShcbiAgICAgICAgICBtYXAoZXZhbHVhdGVkQ29udHJvbHMgPT4gZXZhbHVhdGVkQ29udHJvbHMuZmlsdGVyKGVjID0+IGVjLnZpc2libGUpLm1hcChlYyA9PiBlYy5jb250cm9sKSlcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIG1hcCh2aXNpYmxlID0+XG4gICAgICAgIHZhbHVlcyhncm91cEJ5KHZpc2libGUsICd0eXBlJykpXG4gICAgICAgICAgLm1hcCgoYWN0aW9uQ29udHJvbHM6IEFjdGlvbkNvbnRyb2xbXSkgPT4ge1xuICAgICAgICAgICAgaWYgKGFjdGlvbkNvbnRyb2xzPy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGFjdGlvbkNvbnRyb2xzWzBdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIChhY3Rpb25Db250cm9scyB8fCBbXSlcbiAgICAgICAgICAgICAgICAuc29ydCh0aGlzLnNvcnRCeVByaW9yaXR5KVxuICAgICAgICAgICAgICAgIC5maW5kKGFjdGlvbkNvbnRyb2wgPT4gISFhY3Rpb25Db250cm9sLnNob3dJZik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuc29ydCh0aGlzLnNvcnRCeVByaW9yaXR5KVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNvcnRCeVByaW9yaXR5KGE6IEFjdGlvbkNvbnRyb2wsIGI6IEFjdGlvbkNvbnRyb2wpOiBudW1iZXIge1xuICAgIHJldHVybiAoYj8ucHJpb3JpdHkgPz8gMCkgLSAoYT8ucHJpb3JpdHkgPz8gMCk7XG4gIH1cbn1cbiJdfQ==
@@ -26,7 +26,7 @@ export const documentationItems = [
26
26
  },
27
27
  {
28
28
  icon: 'c8y-device-management',
29
- label: gettext('Device management`KEEP_ORIGINAL`'),
29
+ label: gettext('Device Management'),
30
30
  url: '/docs/section/device_management',
31
31
  type: 'doc'
32
32
  },
@@ -56,4 +56,4 @@ export const documentationItems = [
56
56
  },
57
57
  legalNoticesItem
58
58
  ];
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdHMuaXRlbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2RvY3MvZGVmYXVsdHMuaXRlbXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzFDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFxQjtJQUNoRCxJQUFJLEVBQUUsT0FBTztJQUNiLEtBQUssRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDO0lBQy9CLEdBQUcsRUFBRSw2Q0FBNkM7SUFDbEQsSUFBSSxFQUFFLEtBQUs7Q0FDWixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQXVCO0lBQ3BEO1FBQ0UsSUFBSSxFQUFFLGNBQWMsRUFBRSwwQkFBMEI7UUFDaEQsS0FBSyxFQUFFLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQztRQUN6QyxHQUFHLEVBQUUsNkJBQTZCO1FBQ2xDLElBQUksRUFBRSxLQUFLO0tBQ1o7SUFDRDtRQUNFLElBQUksRUFBRSxVQUFVO1FBQ2hCLEtBQUssRUFBRSxPQUFPLENBQUMsZ0NBQWdDLENBQUM7UUFDaEQsR0FBRyxFQUFFLCtCQUErQjtRQUNwQyxJQUFJLEVBQUUsS0FBSztLQUNaO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsb0JBQW9CO1FBQzFCLEtBQUssRUFBRSxPQUFPLENBQUMsd0NBQXdDLENBQUM7UUFDeEQsR0FBRyxFQUFFLHVDQUF1QztRQUM1QyxJQUFJLEVBQUUsS0FBSztLQUNaO0lBRUQ7UUFDRSxJQUFJLEVBQUUsdUJBQXVCO1FBQzdCLEtBQUssRUFBRSxPQUFPLENBQUMsa0NBQWtDLENBQUM7UUFDbEQsR0FBRyxFQUFFLGlDQUFpQztRQUN0QyxJQUFJLEVBQUUsS0FBSztLQUNaO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsYUFBYTtRQUNuQixLQUFLLEVBQUUsT0FBTyxDQUFDLHVDQUF1QyxDQUFDO1FBQ3ZELEdBQUcsRUFBRSw4QkFBOEI7UUFDbkMsSUFBSSxFQUFFLEtBQUs7S0FDWjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFVBQVU7UUFDaEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxvQ0FBb0MsQ0FBQztRQUNwRCxHQUFHLEVBQUUsOEJBQThCO1FBQ25DLElBQUksRUFBRSxLQUFLO0tBQ1o7SUFDRDtRQUNFLElBQUksRUFBRSxtQkFBbUI7UUFDekIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxvQ0FBb0MsQ0FBQztRQUNwRCxHQUFHLEVBQUUsOENBQThDO1FBQ25ELElBQUksRUFBRSxLQUFLO0tBQ1o7SUFDRDtRQUNFLElBQUksRUFBRSxVQUFVO1FBQ2hCLEtBQUssRUFBRSxPQUFPLENBQUMsc0NBQXNDLENBQUM7UUFDdEQsR0FBRyxFQUFFLE1BQU07UUFDWCxJQUFJLEVBQUUsS0FBSztLQUNaO0lBQ0QsZ0JBQWdCO0NBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcbmltcG9ydCB7IERvY0xpbmtXaXRoTGFiZWwgfSBmcm9tICcuL2RvY3MubW9kZWxzJztcblxuZXhwb3J0IGNvbnN0IGxlZ2FsTm90aWNlc0l0ZW06IERvY0xpbmtXaXRoTGFiZWwgPSB7XG4gIGljb246ICdnYXZlbCcsXG4gIGxhYmVsOiBnZXR0ZXh0KCdMZWdhbCBub3RpY2VzJyksXG4gIHVybDogJ2h0dHBzOi8vZG9jdW1lbnRhdGlvbi5zb2Z0d2FyZWFnLmNvbS9sZWdhbC8nLFxuICB0eXBlOiAnZG9jJ1xufTtcblxuZXhwb3J0IGNvbnN0IGRvY3VtZW50YXRpb25JdGVtczogRG9jTGlua1dpdGhMYWJlbFtdID0gW1xuICB7XG4gICAgaWNvbjogJ2M4eS1jOHktZGF0YScsIC8vIGRvdWJsZSBjOHktIGlzIGNvcnJlY3QhXG4gICAgbGFiZWw6IGdldHRleHQoJ0NvbmNlcHRzYEtFRVBfT1JJR0lOQUxgJyksXG4gICAgdXJsOiAnL2RvY3MvY29uY2VwdHMvaW50cm9kdWN0aW9uJyxcbiAgICB0eXBlOiAnZG9jJ1xuICB9LFxuICB7XG4gICAgaWNvbjogJ2M4eS11c2VyJyxcbiAgICBsYWJlbDogZ2V0dGV4dCgnR2V0dGluZyBzdGFydGVkYEtFRVBfT1JJR0lOQUxgJyksXG4gICAgdXJsOiAnL2RvY3Mvc2VjdGlvbi9nZXR0aW5nX3N0YXJ0ZWQnLFxuICAgIHR5cGU6ICdkb2MnXG4gIH0sXG4gIHtcbiAgICBpY29uOiAnYzh5LWFkbWluaXN0cmF0aW9uJyxcbiAgICBsYWJlbDogZ2V0dGV4dCgnUGxhdGZvcm0gYWRtaW5pc3RyYXRpb25gS0VFUF9PUklHSU5BTGAnKSxcbiAgICB1cmw6ICcvZG9jcy9zZWN0aW9uL3BsYXRmb3JtX2FkbWluaXN0cmF0aW9uJyxcbiAgICB0eXBlOiAnZG9jJ1xuICB9LFxuXG4gIHtcbiAgICBpY29uOiAnYzh5LWRldmljZS1tYW5hZ2VtZW50JyxcbiAgICBsYWJlbDogZ2V0dGV4dCgnRGV2aWNlIG1hbmFnZW1lbnRgS0VFUF9PUklHSU5BTGAnKSxcbiAgICB1cmw6ICcvZG9jcy9zZWN0aW9uL2RldmljZV9tYW5hZ2VtZW50JyxcbiAgICB0eXBlOiAnZG9jJ1xuICB9LFxuICB7XG4gICAgaWNvbjogJ2M4eS1jb2NrcGl0JyxcbiAgICBsYWJlbDogZ2V0dGV4dCgnQXBwbGljYXRpb24gZW5hYmxlbWVudGBLRUVQX09SSUdJTkFMYCcpLFxuICAgIHVybDogJy9kb2NzL3NlY3Rpb24vYXBwX2VuYWJsZW1lbnQnLFxuICAgIHR5cGU6ICdkb2MnXG4gIH0sXG4gIHtcbiAgICBpY29uOiAnYzh5LWJvb2snLFxuICAgIGxhYmVsOiBnZXR0ZXh0KCdDdW11bG9jaXR5IElvVCBFZGdlYEtFRVBfT1JJR0lOQUxgJyksXG4gICAgdXJsOiAnL2RvY3MvZWRnZS9lZGdlLWludHJvZHVjdGlvbicsXG4gICAgdHlwZTogJ2RvYydcbiAgfSxcbiAge1xuICAgIGljb246ICdjOHktZGF0YS1leHBsb3JlcicsXG4gICAgbGFiZWw6IGdldHRleHQoJ1N0cmVhbWluZyBhbmFseXRpY3NgS0VFUF9PUklHSU5BTGAnKSxcbiAgICB1cmw6ICcvZG9jcy9zdHJlYW1pbmctYW5hbHl0aWNzL292ZXJ2aWV3LWFuYWx5dGljcycsXG4gICAgdHlwZTogJ2RvYydcbiAgfSxcbiAge1xuICAgIGljb246ICdyZXN0LWFwaScsXG4gICAgbGFiZWw6IGdldHRleHQoJ09wZW5BUEkgc3BlY2lmaWNhdGlvbmBLRUVQX09SSUdJTkFMYCcpLFxuICAgIHVybDogJy9hcGknLFxuICAgIHR5cGU6ICdkb2MnXG4gIH0sXG4gIGxlZ2FsTm90aWNlc0l0ZW1cbl07XG4iXX0=
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdHMuaXRlbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2RvY3MvZGVmYXVsdHMuaXRlbXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzFDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFxQjtJQUNoRCxJQUFJLEVBQUUsT0FBTztJQUNiLEtBQUssRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDO0lBQy9CLEdBQUcsRUFBRSw2Q0FBNkM7SUFDbEQsSUFBSSxFQUFFLEtBQUs7Q0FDWixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQXVCO0lBQ3BEO1FBQ0UsSUFBSSxFQUFFLGNBQWMsRUFBRSwwQkFBMEI7UUFDaEQsS0FBSyxFQUFFLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQztRQUN6QyxHQUFHLEVBQUUsNkJBQTZCO1FBQ2xDLElBQUksRUFBRSxLQUFLO0tBQ1o7SUFDRDtRQUNFLElBQUksRUFBRSxVQUFVO1FBQ2hCLEtBQUssRUFBRSxPQUFPLENBQUMsZ0NBQWdDLENBQUM7UUFDaEQsR0FBRyxFQUFFLCtCQUErQjtRQUNwQyxJQUFJLEVBQUUsS0FBSztLQUNaO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsb0JBQW9CO1FBQzFCLEtBQUssRUFBRSxPQUFPLENBQUMsd0NBQXdDLENBQUM7UUFDeEQsR0FBRyxFQUFFLHVDQUF1QztRQUM1QyxJQUFJLEVBQUUsS0FBSztLQUNaO0lBRUQ7UUFDRSxJQUFJLEVBQUUsdUJBQXVCO1FBQzdCLEtBQUssRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUM7UUFDbkMsR0FBRyxFQUFFLGlDQUFpQztRQUN0QyxJQUFJLEVBQUUsS0FBSztLQUNaO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsYUFBYTtRQUNuQixLQUFLLEVBQUUsT0FBTyxDQUFDLHVDQUF1QyxDQUFDO1FBQ3ZELEdBQUcsRUFBRSw4QkFBOEI7UUFDbkMsSUFBSSxFQUFFLEtBQUs7S0FDWjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFVBQVU7UUFDaEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxvQ0FBb0MsQ0FBQztRQUNwRCxHQUFHLEVBQUUsOEJBQThCO1FBQ25DLElBQUksRUFBRSxLQUFLO0tBQ1o7SUFDRDtRQUNFLElBQUksRUFBRSxtQkFBbUI7UUFDekIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxvQ0FBb0MsQ0FBQztRQUNwRCxHQUFHLEVBQUUsOENBQThDO1FBQ25ELElBQUksRUFBRSxLQUFLO0tBQ1o7SUFDRDtRQUNFLElBQUksRUFBRSxVQUFVO1FBQ2hCLEtBQUssRUFBRSxPQUFPLENBQUMsc0NBQXNDLENBQUM7UUFDdEQsR0FBRyxFQUFFLE1BQU07UUFDWCxJQUFJLEVBQUUsS0FBSztLQUNaO0lBQ0QsZ0JBQWdCO0NBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcbmltcG9ydCB7IERvY0xpbmtXaXRoTGFiZWwgfSBmcm9tICcuL2RvY3MubW9kZWxzJztcblxuZXhwb3J0IGNvbnN0IGxlZ2FsTm90aWNlc0l0ZW06IERvY0xpbmtXaXRoTGFiZWwgPSB7XG4gIGljb246ICdnYXZlbCcsXG4gIGxhYmVsOiBnZXR0ZXh0KCdMZWdhbCBub3RpY2VzJyksXG4gIHVybDogJ2h0dHBzOi8vZG9jdW1lbnRhdGlvbi5zb2Z0d2FyZWFnLmNvbS9sZWdhbC8nLFxuICB0eXBlOiAnZG9jJ1xufTtcblxuZXhwb3J0IGNvbnN0IGRvY3VtZW50YXRpb25JdGVtczogRG9jTGlua1dpdGhMYWJlbFtdID0gW1xuICB7XG4gICAgaWNvbjogJ2M4eS1jOHktZGF0YScsIC8vIGRvdWJsZSBjOHktIGlzIGNvcnJlY3QhXG4gICAgbGFiZWw6IGdldHRleHQoJ0NvbmNlcHRzYEtFRVBfT1JJR0lOQUxgJyksXG4gICAgdXJsOiAnL2RvY3MvY29uY2VwdHMvaW50cm9kdWN0aW9uJyxcbiAgICB0eXBlOiAnZG9jJ1xuICB9LFxuICB7XG4gICAgaWNvbjogJ2M4eS11c2VyJyxcbiAgICBsYWJlbDogZ2V0dGV4dCgnR2V0dGluZyBzdGFydGVkYEtFRVBfT1JJR0lOQUxgJyksXG4gICAgdXJsOiAnL2RvY3Mvc2VjdGlvbi9nZXR0aW5nX3N0YXJ0ZWQnLFxuICAgIHR5cGU6ICdkb2MnXG4gIH0sXG4gIHtcbiAgICBpY29uOiAnYzh5LWFkbWluaXN0cmF0aW9uJyxcbiAgICBsYWJlbDogZ2V0dGV4dCgnUGxhdGZvcm0gYWRtaW5pc3RyYXRpb25gS0VFUF9PUklHSU5BTGAnKSxcbiAgICB1cmw6ICcvZG9jcy9zZWN0aW9uL3BsYXRmb3JtX2FkbWluaXN0cmF0aW9uJyxcbiAgICB0eXBlOiAnZG9jJ1xuICB9LFxuXG4gIHtcbiAgICBpY29uOiAnYzh5LWRldmljZS1tYW5hZ2VtZW50JyxcbiAgICBsYWJlbDogZ2V0dGV4dCgnRGV2aWNlIE1hbmFnZW1lbnQnKSxcbiAgICB1cmw6ICcvZG9jcy9zZWN0aW9uL2RldmljZV9tYW5hZ2VtZW50JyxcbiAgICB0eXBlOiAnZG9jJ1xuICB9LFxuICB7XG4gICAgaWNvbjogJ2M4eS1jb2NrcGl0JyxcbiAgICBsYWJlbDogZ2V0dGV4dCgnQXBwbGljYXRpb24gZW5hYmxlbWVudGBLRUVQX09SSUdJTkFMYCcpLFxuICAgIHVybDogJy9kb2NzL3NlY3Rpb24vYXBwX2VuYWJsZW1lbnQnLFxuICAgIHR5cGU6ICdkb2MnXG4gIH0sXG4gIHtcbiAgICBpY29uOiAnYzh5LWJvb2snLFxuICAgIGxhYmVsOiBnZXR0ZXh0KCdDdW11bG9jaXR5IElvVCBFZGdlYEtFRVBfT1JJR0lOQUxgJyksXG4gICAgdXJsOiAnL2RvY3MvZWRnZS9lZGdlLWludHJvZHVjdGlvbicsXG4gICAgdHlwZTogJ2RvYydcbiAgfSxcbiAge1xuICAgIGljb246ICdjOHktZGF0YS1leHBsb3JlcicsXG4gICAgbGFiZWw6IGdldHRleHQoJ1N0cmVhbWluZyBhbmFseXRpY3NgS0VFUF9PUklHSU5BTGAnKSxcbiAgICB1cmw6ICcvZG9jcy9zdHJlYW1pbmctYW5hbHl0aWNzL292ZXJ2aWV3LWFuYWx5dGljcycsXG4gICAgdHlwZTogJ2RvYydcbiAgfSxcbiAge1xuICAgIGljb246ICdyZXN0LWFwaScsXG4gICAgbGFiZWw6IGdldHRleHQoJ09wZW5BUEkgc3BlY2lmaWNhdGlvbmBLRUVQX09SSUdJTkFMYCcpLFxuICAgIHVybDogJy9hcGknLFxuICAgIHR5cGU6ICdkb2MnXG4gIH0sXG4gIGxlZ2FsTm90aWNlc0l0ZW1cbl07XG4iXX0=
@@ -92,11 +92,11 @@ export class OpcuaDeviceProtocolDataReportingComponent {
92
92
  });
93
93
  }
94
94
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: OpcuaDeviceProtocolDataReportingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
95
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: OpcuaDeviceProtocolDataReportingComponent, selector: "opcua-device-protocol-data-reporting", inputs: { model: "model", groupName: "groupName" }, outputs: { onSubscriptionChange: "onSubscriptionChange" }, ngImport: i0, template: "<c8y-form-group>\n <label translate>Mechanism</label>\n <label\n title=\"{{ mechanism.label | translate }}\"\n class=\"c8y-radio radio-inline\"\n *ngFor=\"let mechanism of types\"\n >\n <input\n type=\"radio\"\n name=\"{{subscriptionTypeName}}\"\n [value]=\"mechanism.value\"\n [(ngModel)]=\"subscription.type\"\n (change)=\"updateModel()\"\n required\n [attr.data-cy]=\"mechanism.value\"\n />\n <span></span>\n <span>{{ mechanism.label | translate }}</span>\n </label>\n</c8y-form-group>\n\n<div class=\"row collapse\" [collapse]=\"subscription.type != 'CyclicRead'\" [isAnimated]=\"true\">\n <div class=\"col-sm-6 col-md-4 col-lg-3\">\n <c8y-form-group>\n <label translate>Reading interval</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n type=\"number\"\n name=\"rate\"\n [(ngModel)]=\"cyclicReadParameters.rate\"\n placeholder=\"{{ 'e.g.' | translate }} 50\"\n [required]=\"requireCyclic\"\n min=\"50\"\n [attr.data-cy]=\"'cyclicReadRate'\"\n />\n <span class=\"input-group-addon units\" title=\"{{ 'Milliseconds' | translate }}\">\n {{ 'msec' | translate }}\n </span>\n </div>\n </c8y-form-group>\n </div>\n</div>\n\n<div class=\"row collapse\" [collapse]=\"subscription.type != 'Subscription'\" [isAnimated]=\"true\">\n <div class=\"col-sm-6 col-lg-4\">\n <c8y-form-group>\n <label translate>Sampling interval</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n type=\"number\"\n name=\"samplingRate\"\n [(ngModel)]=\"subscriptionParameters.samplingRate\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n [required]=\"requireSubscription\"\n min=\"0\"\n [attr.data-cy]=\"'subscriptionSamplingRate'\"\n />\n <span class=\"input-group-addon units\" title=\"{{ 'Milliseconds' | translate }}\" translate>\n msec\n </span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6 col-lg-4\">\n <c8y-form-group>\n <label translate>Queue size</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n type=\"number\"\n name=\"queueSize\"\n [(ngModel)]=\"subscriptionParameters.queueSize\"\n placeholder=\"{{ 'e.g.' | translate }} 10\"\n min=\"1\"\n [attr.data-cy]=\"'subscriptionQueueSize'\"\n />\n <span class=\"input-group-addon\">\n <strong translate>Discard</strong>&nbsp;\n <label\n *ngFor=\"let discardOption of discard\"\n title=\"{{ discardOption.label | translate }}\"\n class=\"c8y-radio radio-inline\"\n >\n <input\n type=\"radio\"\n name=\"discard\"\n [value]=\"discardOption.value\"\n [(ngModel)]=\"subscriptionParameters.discardOldest\"\n [required]=\"requireSubscription\"\n [attr.data-cy]=\"discardOption.label\"\n />\n <span></span>\n <span>{{ discardOption.label | translate }}</span>\n </label>\n </span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"clearfix\"></div>\n <div class=\"col-sm-6 col-lg-4\">\n <c8y-form-group>\n <label translate>Data change trigger</label>\n <label\n *ngFor=\"let trigger of triggers\"\n title=\"{{ trigger.label | translate }}\"\n class=\"c8y-radio radio-inline\"\n >\n <input\n type=\"radio\"\n name=\"dataChangeTrigger\"\n [value]=\"trigger.value\"\n [(ngModel)]=\"subscriptionParameters.dataChangeTrigger\"\n [required]=\"requireSubscription\"\n [attr.data-cy]=\"trigger.label\"\n />\n <span></span>\n <span>{{ trigger.label | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6 col-lg-4\">\n <c8y-form-group>\n <label translate>Deadband filter</label>\n <label\n *ngFor=\"let deadbandFilter of filters\"\n title=\"{{ deadbandFilter.label | translate }}\"\n class=\"c8y-radio radio-inline\"\n >\n <input\n type=\"radio\"\n name=\"deadbandType\"\n [value]=\"deadbandFilter.value\"\n [(ngModel)]=\"subscriptionParameters.deadbandType\"\n [required]=\"requireSubscription\"\n [attr.data-cy]=\"deadbandFilter.label\"\n />\n <span></span>\n <span>{{ deadbandFilter.label | translate }}</span>\n </label>\n </c8y-form-group>\n <div [collapse]=\"subscriptionParameters.deadbandType == 'None'\" [isAnimated]=\"true\">\n <c8y-form-group>\n <label translate>Deadband value</label>\n <input\n class=\"form-control\"\n type=\"number\"\n name=\"deadbandValue\"\n [(ngModel)]=\"subscriptionParameters.deadbandValue\"\n placeholder=\"{{ 'e.g.' | translate }} 10\"\n [required]=\"subscriptionParameters.deadbandType != 'None'\"\n min=\"0\"\n [attr.data-cy]=\"'deadbandValue'\"\n />\n </c8y-form-group>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgModelGroup }] }); }
95
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: OpcuaDeviceProtocolDataReportingComponent, selector: "opcua-device-protocol-data-reporting", inputs: { model: "model", groupName: "groupName" }, outputs: { onSubscriptionChange: "onSubscriptionChange" }, ngImport: i0, template: "<c8y-form-group>\n <label translate>Mechanism</label>\n <label\n title=\"{{ mechanism.label | translate }}\"\n class=\"c8y-radio radio-inline\"\n *ngFor=\"let mechanism of types\"\n >\n <input\n type=\"radio\"\n name=\"{{subscriptionTypeName}}\"\n [value]=\"mechanism.value\"\n [(ngModel)]=\"subscription.type\"\n (change)=\"updateModel()\"\n required\n [attr.data-cy]=\"mechanism.value\"\n />\n <span></span>\n <span>{{ mechanism.label | translate }}</span>\n </label>\n</c8y-form-group>\n\n<div class=\"row collapse\" [collapse]=\"subscription.type != 'CyclicRead'\" [isAnimated]=\"true\">\n <div class=\"col-sm-6 col-md-4 col-lg-3\">\n <c8y-form-group>\n <label translate>Reading interval</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n type=\"number\"\n name=\"rate\"\n [(ngModel)]=\"cyclicReadParameters.rate\"\n placeholder=\"{{ 'e.g.' | translate }} 50\"\n [required]=\"requireCyclic\"\n min=\"50\"\n [attr.data-cy]=\"'cyclicReadRate'\"\n />\n <span class=\"input-group-addon units\" title=\"{{ 'Milliseconds' | translate }}\">\n {{ 'msec' | translate }}\n </span>\n </div>\n </c8y-form-group>\n </div>\n</div>\n\n<div class=\"row collapse\" [collapse]=\"subscription.type != 'Subscription'\" [isAnimated]=\"true\">\n <div class=\"col-sm-6 col-lg-4\">\n <c8y-form-group>\n <label translate>Sampling interval</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n type=\"number\"\n name=\"samplingRate\"\n [(ngModel)]=\"subscriptionParameters.samplingRate\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n [required]=\"requireSubscription\"\n min=\"0\"\n [attr.data-cy]=\"'subscriptionSamplingRate'\"\n />\n <span class=\"input-group-addon units\" title=\"{{ 'Milliseconds' | translate }}\" translate>\n msec\n </span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6 col-lg-4\">\n <c8y-form-group>\n <label translate>Queue size</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n type=\"number\"\n name=\"queueSize\"\n [(ngModel)]=\"subscriptionParameters.queueSize\"\n placeholder=\"{{ 'e.g.' | translate }} 10\"\n min=\"1\"\n [attr.data-cy]=\"'subscriptionQueueSize'\"\n />\n <span class=\"input-group-addon\">\n <strong translate>Discard</strong>&nbsp;\n <label\n *ngFor=\"let discardOption of discard\"\n title=\"{{ discardOption.label | translate }}\"\n class=\"c8y-radio radio-inline\"\n >\n <input\n type=\"radio\"\n name=\"discard{{ _model.id }}\"\n [value]=\"discardOption.value\"\n [(ngModel)]=\"subscriptionParameters.discardOldest\"\n [required]=\"requireSubscription\"\n [attr.data-cy]=\"discardOption.label\"\n [attr.data-name]=\"'discard' + _model.id\"\n />\n <span></span>\n <span>{{ discardOption.label | translate }}</span>\n </label>\n </span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"clearfix\"></div>\n <div class=\"col-sm-6 col-lg-4\">\n <c8y-form-group>\n <label translate>Data change trigger</label>\n <label\n *ngFor=\"let trigger of triggers\"\n title=\"{{ trigger.label | translate }}\"\n class=\"c8y-radio radio-inline\"\n >\n <input\n type=\"radio\"\n name=\"dataChangeTrigger{{ _model.id }}\"\n [value]=\"trigger.value\"\n [(ngModel)]=\"subscriptionParameters.dataChangeTrigger\"\n [required]=\"requireSubscription\"\n [attr.data-cy]=\"trigger.label\"\n [attr.data-name]=\"'dataChangeTrigger' + _model.id\"\n />\n <span></span>\n <span>{{ trigger.label | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6 col-lg-4\">\n <c8y-form-group>\n <label translate>Deadband filter</label>\n <label\n *ngFor=\"let deadbandFilter of filters\"\n title=\"{{ deadbandFilter.label | translate }}\"\n class=\"c8y-radio radio-inline\"\n >\n <input\n type=\"radio\"\n name=\"deadbandType{{ _model.id }}\"\n [value]=\"deadbandFilter.value\"\n [(ngModel)]=\"subscriptionParameters.deadbandType\"\n [required]=\"requireSubscription\"\n [attr.data-cy]=\"deadbandFilter.label\"\n [attr.data-name]=\"'deadbandType' + _model.id\"\n />\n <span></span>\n <span>{{ deadbandFilter.label | translate }}</span>\n </label>\n </c8y-form-group>\n <div [collapse]=\"subscriptionParameters.deadbandType == 'None'\" [isAnimated]=\"true\">\n <c8y-form-group>\n <label translate>Deadband value</label>\n <input\n class=\"form-control\"\n type=\"number\"\n name=\"deadbandValue\"\n [(ngModel)]=\"subscriptionParameters.deadbandValue\"\n placeholder=\"{{ 'e.g.' | translate }} 10\"\n [required]=\"subscriptionParameters.deadbandType != 'None'\"\n min=\"0\"\n [attr.data-cy]=\"'deadbandValue'\"\n />\n </c8y-form-group>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgModelGroup }] }); }
96
96
  }
97
97
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: OpcuaDeviceProtocolDataReportingComponent, decorators: [{
98
98
  type: Component,
99
- args: [{ selector: 'opcua-device-protocol-data-reporting', viewProviders: [{ provide: ControlContainer, useExisting: NgModelGroup }], template: "<c8y-form-group>\n <label translate>Mechanism</label>\n <label\n title=\"{{ mechanism.label | translate }}\"\n class=\"c8y-radio radio-inline\"\n *ngFor=\"let mechanism of types\"\n >\n <input\n type=\"radio\"\n name=\"{{subscriptionTypeName}}\"\n [value]=\"mechanism.value\"\n [(ngModel)]=\"subscription.type\"\n (change)=\"updateModel()\"\n required\n [attr.data-cy]=\"mechanism.value\"\n />\n <span></span>\n <span>{{ mechanism.label | translate }}</span>\n </label>\n</c8y-form-group>\n\n<div class=\"row collapse\" [collapse]=\"subscription.type != 'CyclicRead'\" [isAnimated]=\"true\">\n <div class=\"col-sm-6 col-md-4 col-lg-3\">\n <c8y-form-group>\n <label translate>Reading interval</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n type=\"number\"\n name=\"rate\"\n [(ngModel)]=\"cyclicReadParameters.rate\"\n placeholder=\"{{ 'e.g.' | translate }} 50\"\n [required]=\"requireCyclic\"\n min=\"50\"\n [attr.data-cy]=\"'cyclicReadRate'\"\n />\n <span class=\"input-group-addon units\" title=\"{{ 'Milliseconds' | translate }}\">\n {{ 'msec' | translate }}\n </span>\n </div>\n </c8y-form-group>\n </div>\n</div>\n\n<div class=\"row collapse\" [collapse]=\"subscription.type != 'Subscription'\" [isAnimated]=\"true\">\n <div class=\"col-sm-6 col-lg-4\">\n <c8y-form-group>\n <label translate>Sampling interval</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n type=\"number\"\n name=\"samplingRate\"\n [(ngModel)]=\"subscriptionParameters.samplingRate\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n [required]=\"requireSubscription\"\n min=\"0\"\n [attr.data-cy]=\"'subscriptionSamplingRate'\"\n />\n <span class=\"input-group-addon units\" title=\"{{ 'Milliseconds' | translate }}\" translate>\n msec\n </span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6 col-lg-4\">\n <c8y-form-group>\n <label translate>Queue size</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n type=\"number\"\n name=\"queueSize\"\n [(ngModel)]=\"subscriptionParameters.queueSize\"\n placeholder=\"{{ 'e.g.' | translate }} 10\"\n min=\"1\"\n [attr.data-cy]=\"'subscriptionQueueSize'\"\n />\n <span class=\"input-group-addon\">\n <strong translate>Discard</strong>&nbsp;\n <label\n *ngFor=\"let discardOption of discard\"\n title=\"{{ discardOption.label | translate }}\"\n class=\"c8y-radio radio-inline\"\n >\n <input\n type=\"radio\"\n name=\"discard\"\n [value]=\"discardOption.value\"\n [(ngModel)]=\"subscriptionParameters.discardOldest\"\n [required]=\"requireSubscription\"\n [attr.data-cy]=\"discardOption.label\"\n />\n <span></span>\n <span>{{ discardOption.label | translate }}</span>\n </label>\n </span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"clearfix\"></div>\n <div class=\"col-sm-6 col-lg-4\">\n <c8y-form-group>\n <label translate>Data change trigger</label>\n <label\n *ngFor=\"let trigger of triggers\"\n title=\"{{ trigger.label | translate }}\"\n class=\"c8y-radio radio-inline\"\n >\n <input\n type=\"radio\"\n name=\"dataChangeTrigger\"\n [value]=\"trigger.value\"\n [(ngModel)]=\"subscriptionParameters.dataChangeTrigger\"\n [required]=\"requireSubscription\"\n [attr.data-cy]=\"trigger.label\"\n />\n <span></span>\n <span>{{ trigger.label | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6 col-lg-4\">\n <c8y-form-group>\n <label translate>Deadband filter</label>\n <label\n *ngFor=\"let deadbandFilter of filters\"\n title=\"{{ deadbandFilter.label | translate }}\"\n class=\"c8y-radio radio-inline\"\n >\n <input\n type=\"radio\"\n name=\"deadbandType\"\n [value]=\"deadbandFilter.value\"\n [(ngModel)]=\"subscriptionParameters.deadbandType\"\n [required]=\"requireSubscription\"\n [attr.data-cy]=\"deadbandFilter.label\"\n />\n <span></span>\n <span>{{ deadbandFilter.label | translate }}</span>\n </label>\n </c8y-form-group>\n <div [collapse]=\"subscriptionParameters.deadbandType == 'None'\" [isAnimated]=\"true\">\n <c8y-form-group>\n <label translate>Deadband value</label>\n <input\n class=\"form-control\"\n type=\"number\"\n name=\"deadbandValue\"\n [(ngModel)]=\"subscriptionParameters.deadbandValue\"\n placeholder=\"{{ 'e.g.' | translate }} 10\"\n [required]=\"subscriptionParameters.deadbandType != 'None'\"\n min=\"0\"\n [attr.data-cy]=\"'deadbandValue'\"\n />\n </c8y-form-group>\n </div>\n </div>\n</div>\n" }]
99
+ args: [{ selector: 'opcua-device-protocol-data-reporting', viewProviders: [{ provide: ControlContainer, useExisting: NgModelGroup }], template: "<c8y-form-group>\n <label translate>Mechanism</label>\n <label\n title=\"{{ mechanism.label | translate }}\"\n class=\"c8y-radio radio-inline\"\n *ngFor=\"let mechanism of types\"\n >\n <input\n type=\"radio\"\n name=\"{{subscriptionTypeName}}\"\n [value]=\"mechanism.value\"\n [(ngModel)]=\"subscription.type\"\n (change)=\"updateModel()\"\n required\n [attr.data-cy]=\"mechanism.value\"\n />\n <span></span>\n <span>{{ mechanism.label | translate }}</span>\n </label>\n</c8y-form-group>\n\n<div class=\"row collapse\" [collapse]=\"subscription.type != 'CyclicRead'\" [isAnimated]=\"true\">\n <div class=\"col-sm-6 col-md-4 col-lg-3\">\n <c8y-form-group>\n <label translate>Reading interval</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n type=\"number\"\n name=\"rate\"\n [(ngModel)]=\"cyclicReadParameters.rate\"\n placeholder=\"{{ 'e.g.' | translate }} 50\"\n [required]=\"requireCyclic\"\n min=\"50\"\n [attr.data-cy]=\"'cyclicReadRate'\"\n />\n <span class=\"input-group-addon units\" title=\"{{ 'Milliseconds' | translate }}\">\n {{ 'msec' | translate }}\n </span>\n </div>\n </c8y-form-group>\n </div>\n</div>\n\n<div class=\"row collapse\" [collapse]=\"subscription.type != 'Subscription'\" [isAnimated]=\"true\">\n <div class=\"col-sm-6 col-lg-4\">\n <c8y-form-group>\n <label translate>Sampling interval</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n type=\"number\"\n name=\"samplingRate\"\n [(ngModel)]=\"subscriptionParameters.samplingRate\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n [required]=\"requireSubscription\"\n min=\"0\"\n [attr.data-cy]=\"'subscriptionSamplingRate'\"\n />\n <span class=\"input-group-addon units\" title=\"{{ 'Milliseconds' | translate }}\" translate>\n msec\n </span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6 col-lg-4\">\n <c8y-form-group>\n <label translate>Queue size</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n type=\"number\"\n name=\"queueSize\"\n [(ngModel)]=\"subscriptionParameters.queueSize\"\n placeholder=\"{{ 'e.g.' | translate }} 10\"\n min=\"1\"\n [attr.data-cy]=\"'subscriptionQueueSize'\"\n />\n <span class=\"input-group-addon\">\n <strong translate>Discard</strong>&nbsp;\n <label\n *ngFor=\"let discardOption of discard\"\n title=\"{{ discardOption.label | translate }}\"\n class=\"c8y-radio radio-inline\"\n >\n <input\n type=\"radio\"\n name=\"discard{{ _model.id }}\"\n [value]=\"discardOption.value\"\n [(ngModel)]=\"subscriptionParameters.discardOldest\"\n [required]=\"requireSubscription\"\n [attr.data-cy]=\"discardOption.label\"\n [attr.data-name]=\"'discard' + _model.id\"\n />\n <span></span>\n <span>{{ discardOption.label | translate }}</span>\n </label>\n </span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"clearfix\"></div>\n <div class=\"col-sm-6 col-lg-4\">\n <c8y-form-group>\n <label translate>Data change trigger</label>\n <label\n *ngFor=\"let trigger of triggers\"\n title=\"{{ trigger.label | translate }}\"\n class=\"c8y-radio radio-inline\"\n >\n <input\n type=\"radio\"\n name=\"dataChangeTrigger{{ _model.id }}\"\n [value]=\"trigger.value\"\n [(ngModel)]=\"subscriptionParameters.dataChangeTrigger\"\n [required]=\"requireSubscription\"\n [attr.data-cy]=\"trigger.label\"\n [attr.data-name]=\"'dataChangeTrigger' + _model.id\"\n />\n <span></span>\n <span>{{ trigger.label | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6 col-lg-4\">\n <c8y-form-group>\n <label translate>Deadband filter</label>\n <label\n *ngFor=\"let deadbandFilter of filters\"\n title=\"{{ deadbandFilter.label | translate }}\"\n class=\"c8y-radio radio-inline\"\n >\n <input\n type=\"radio\"\n name=\"deadbandType{{ _model.id }}\"\n [value]=\"deadbandFilter.value\"\n [(ngModel)]=\"subscriptionParameters.deadbandType\"\n [required]=\"requireSubscription\"\n [attr.data-cy]=\"deadbandFilter.label\"\n [attr.data-name]=\"'deadbandType' + _model.id\"\n />\n <span></span>\n <span>{{ deadbandFilter.label | translate }}</span>\n </label>\n </c8y-form-group>\n <div [collapse]=\"subscriptionParameters.deadbandType == 'None'\" [isAnimated]=\"true\">\n <c8y-form-group>\n <label translate>Deadband value</label>\n <input\n class=\"form-control\"\n type=\"number\"\n name=\"deadbandValue\"\n [(ngModel)]=\"subscriptionParameters.deadbandValue\"\n placeholder=\"{{ 'e.g.' | translate }} 10\"\n [required]=\"subscriptionParameters.deadbandType != 'None'\"\n min=\"0\"\n [attr.data-cy]=\"'deadbandValue'\"\n />\n </c8y-form-group>\n </div>\n </div>\n</div>\n" }]
100
100
  }], propDecorators: { model: [{
101
101
  type: Input
102
102
  }], groupName: [{
@@ -104,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
104
104
  }], onSubscriptionChange: [{
105
105
  type: Output
106
106
  }] } });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BjdWEtZGV2aWNlLXByb3RvY29sLWRhdGEtcmVwb3J0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb3RvY29sLW9wY3VhL29wY3VhLWRldmljZS1wcm90b2NvbC1kYXRhLXJlcG9ydGluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9wcm90b2NvbC1vcGN1YS9vcGN1YS1kZXZpY2UtcHJvdG9jb2wtZGF0YS1yZXBvcnRpbmcuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFPaEUsTUFBTSxPQUFPLHlDQUF5QztJQUx0RDtRQWdDWSx5QkFBb0IsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUU1RSxpQkFBWSxHQUFHO1lBQ2IsSUFBSSxFQUFFLE1BQU07U0FDYixDQUFDO1FBQ0YsMkJBQXNCLEdBQUc7WUFDdkIsWUFBWSxFQUFFLFNBQVM7WUFDdkIsWUFBWSxFQUFFLE1BQU07WUFDcEIsYUFBYSxFQUFFLFNBQVM7WUFDeEIsTUFBTSxFQUFFLEVBQUU7WUFDVixTQUFTLEVBQUUsU0FBUztZQUNwQixpQkFBaUIsRUFBRSxRQUFRO1lBQzNCLGFBQWEsRUFBRSxJQUFJO1NBQ3BCLENBQUM7UUFFRix5QkFBb0IsR0FBRztZQUNyQixJQUFJLEVBQUUsU0FBUztTQUNoQixDQUFDO1FBRUYsVUFBSyxHQUFVO1lBQ2IsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFP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QUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxDQUFDOzhCQUc1RCxLQUFLO3NCQUFqQixLQUFLO2dCQXVCRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdJLG9CQUFvQjtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzZXQsIHVuc2V0LCB0b0ludGVnZXIgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgTmdNb2RlbEdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvcGN1YS1kZXZpY2UtcHJvdG9jb2wtZGF0YS1yZXBvcnRpbmcnLFxuICB0ZW1wbGF0ZVVybDogJy4vb3BjdWEtZGV2aWNlLXByb3RvY29sLWRhdGEtcmVwb3J0aW5nLmh0bWwnLFxuICB2aWV3UHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLCB1c2VFeGlzdGluZzogTmdNb2RlbEdyb3VwIH1dXG59KVxuZXhwb3J0IGNsYXNzIE9wY3VhRGV2aWNlUHJvdG9jb2xEYXRhUmVwb3J0aW5nQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc2V0IG1vZGVsKF9tb2RlbCkge1xuICAgIGlmIChfbW9kZWwuc3Vic2NyaXB0aW9uVHlwZSkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSBfbW9kZWwuc3Vic2NyaXB0aW9uVHlwZTtcbiAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbi50eXBlID09PSAnQ3ljbGljUmVhZCcpIHtcbiAgICAgICAgdGhpcy5jeWNsaWNSZWFkUGFyYW1ldGVycyA9IF9tb2RlbC5zdWJzY3JpcHRpb25UeXBlLmN5Y2xpY1JlYWRQYXJhbWV0ZXJzO1xuICAgICAgICB0aGlzLnJlcXVpcmVDeWNsaWMgPSB0cnVlO1xuICAgICAgICB0aGlzLnJlcXVpcmVTdWJzY3JpcHRpb24gPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uLnR5cGUgPT09ICdTdWJzY3JpcHRpb24nKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uUGFyYW1ldGVycyA9IF9tb2RlbC5zdWJzY3JpcHRpb25UeXBlLnN1YnNjcmlwdGlvblBhcmFtZXRlcnM7XG4gICAgICAgIHRoaXMucmVxdWlyZUN5Y2xpYyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlcXVpcmVTdWJzY3JpcHRpb24gPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24udHlwZSA9PT0gJ05vbmUnKSB7XG4gICAgICAgIHRoaXMucmVxdWlyZUN5Y2xpYyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlcXVpcmVTdWJzY3JpcHRpb24gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fbW9kZWwgPSBfbW9kZWw7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25UeXBlTmFtZSA9ICdzdWJzY3JpcHRpb25UeXBlJyArIF9tb2RlbC5pZDtcbiAgfVxuICBASW5wdXQoKSBncm91cE5hbWU7XG5cbiAgX21vZGVsOiBvYmplY3Q7XG4gIEBPdXRwdXQoKSBvblN1YnNjcmlwdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBzdWJzY3JpcHRpb24gPSB7XG4gICAgdHlwZTogJ05vbmUnXG4gIH07XG4gIHN1YnNjcmlwdGlvblBhcmFtZXRlcnMgPSB7XG4gICAgc2FtcGxpbmdSYXRlOiB1bmRlZmluZWQsXG4gICAgZGVhZGJhbmRUeXBlOiAnTm9uZScsXG4gICAgZGVhZGJhbmRWYWx1ZTogdW5kZWZpbmVkLFxuICAgIHJhbmdlczogJycsXG4gICAgcXVldWVTaXplOiB1bmRlZmluZWQsXG4gICAgZGF0YUNoYW5nZVRyaWdnZXI6ICdTdGF0dXMnLFxuICAgIGRpc2NhcmRPbGRlc3Q6IHRydWVcbiAgfTtcblxuICBjeWNsaWNSZWFkUGFyYW1ldGVycyA9IHtcbiAgICByYXRlOiB1bmRlZmluZWRcbiAgfTtcblxuICB0eXBlczogYW55W10gPSBbXG4gICAgeyB2YWx1ZTogJ05vbmUnLCBsYWJlbDogZ2V0dGV4dCgnTm9uZScpIH0sXG4gICAgeyB2YWx1ZTogJ0N5Y2xpY1JlYWQnLCBsYWJlbDogZ2V0dGV4dCgnQ3ljbGljIHJlYWQnKSB9LFxuICAgIHsgdmFsdWU6ICdTdWJzY3JpcHRpb24nLCBsYWJlbDogZ2V0dGV4dCgnU3Vic2NyaXB0aW9uJykgfVxuICBdO1xuXG4gIGZpbHRlcnM6IGFueVtdID0gW1xuICAgIHsgdmFsdWU6ICdOb25lJywgbGFiZWw6IGdldHRleHQoJ05vbmUnKSB9LFxuICAgIHsgdmFsdWU6ICdBYnNvbHV0ZScsIGxhYmVsOiBnZXR0ZXh0KCdBYnNvbHV0ZScpIH0sXG4gICAgeyB2YWx1ZTogJ1BlcmNlbnQnLCBsYWJlbDogZ2V0dGV4dCgnUGVyY2VudCcpIH1cbiAgXTtcblxuICB0cmlnZ2VyczogYW55W10gPSBbXG4gICAgeyB2YWx1ZTogJ1N0YXR1cycsIGxhYmVsOiBnZXR0ZXh0KCdTdGF0dXMnKSB9LFxuICAgIHsgdmFsdWU6ICdTdGF0dXNWYWx1ZScsIGxhYmVsOiBnZXR0ZXh0KCdTdGF0dXMvVmFsdWUnKSB9LFxuICAgIHsgdmFsdWU6ICdTdGF0dXNWYWx1ZVRpbWVzdGFtcCcsIGxhYmVsOiBnZXR0ZXh0KCdTdGF0dXMvVmFsdWUvVGltZXN0YW1wJykgfVxuICBdO1xuXG4gIGRpc2NhcmQ6IGFueVtdID0gW1xuICAgIHsgdmFsdWU6IHRydWUsIGxhYmVsOiBnZXR0ZXh0KCdvbGRlc3RgZGF0YWAnKSB9LFxuICAgIHsgdmFsdWU6IGZhbHNlLCBsYWJlbDogZ2V0dGV4dCgnbmV3ZXN0YGRhdGFgJykgfVxuICBdO1xuXG4gIHJlcXVpcmVDeWNsaWMgPSBmYWxzZTtcbiAgcmVxdWlyZVN1YnNjcmlwdGlvbiA9IGZhbHNlO1xuICBzdWJzY3JpcHRpb25UeXBlTmFtZSA9ICdzdWJzY3JpcHRpb25UeXBlJztcblxuICBwYXJzZVJlYWRpbmdJbnRlcnZhbCA9ICRldmVudCA9PiB0b0ludGVnZXIoJGV2ZW50LnRhcmdldC52YWx1ZSk7XG5cbiAgdXBkYXRlTW9kZWwoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB1bnNldCh0aGlzLnN1YnNjcmlwdGlvbiwgJ3N1YnNjcmlwdGlvblBhcmFtZXRlcnMnKTtcbiAgICAgIHVuc2V0KHRoaXMuc3Vic2NyaXB0aW9uLCAnY3ljbGljUmVhZFBhcmFtZXRlcnMnKTtcbiAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbi50eXBlID09PSAnQ3ljbGljUmVhZCcpIHtcbiAgICAgICAgdGhpcy5yZXF1aXJlQ3ljbGljID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5yZXF1aXJlU3Vic2NyaXB0aW9uID0gZmFsc2U7XG4gICAgICAgIHNldCh0aGlzLnN1YnNjcmlwdGlvbiwgJ2N5Y2xpY1JlYWRQYXJhbWV0ZXJzJywgdGhpcy5jeWNsaWNSZWFkUGFyYW1ldGVycyk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc3Vic2NyaXB0aW9uLnR5cGUgPT09ICdTdWJzY3JpcHRpb24nKSB7XG4gICAgICAgIHRoaXMucmVxdWlyZUN5Y2xpYyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlcXVpcmVTdWJzY3JpcHRpb24gPSB0cnVlO1xuICAgICAgICBzZXQodGhpcy5zdWJzY3JpcHRpb24sICdzdWJzY3JpcHRpb25QYXJhbWV0ZXJzJywgdGhpcy5zdWJzY3JpcHRpb25QYXJhbWV0ZXJzKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zdWJzY3JpcHRpb24udHlwZSA9PT0gJ05vbmUnKSB7XG4gICAgICAgIHRoaXMucmVxdWlyZUN5Y2xpYyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlcXVpcmVTdWJzY3JpcHRpb24gPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMub25TdWJzY3JpcHRpb25DaGFuZ2UuZW1pdCh0aGlzLnN1YnNjcmlwdGlvbik7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxjOHktZm9ybS1ncm91cD5cbiAgPGxhYmVsIHRyYW5zbGF0ZT5NZWNoYW5pc208L2xhYmVsPlxuICA8bGFiZWxcbiAgICB0aXRsZT1cInt7IG1lY2hhbmlzbS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgY2xhc3M9XCJjOHktcmFkaW8gcmFkaW8taW5saW5lXCJcbiAgICAqbmdGb3I9XCJsZXQgbWVjaGFuaXNtIG9mIHR5cGVzXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgIG5hbWU9XCJ7e3N1YnNjcmlwdGlvblR5cGVOYW1lfX1cIlxuICAgICAgW3ZhbHVlXT1cIm1lY2hhbmlzbS52YWx1ZVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInN1YnNjcmlwdGlvbi50eXBlXCJcbiAgICAgIChjaGFuZ2UpPVwidXBkYXRlTW9kZWwoKVwiXG4gICAgICByZXF1aXJlZFxuICAgICAgW2F0dHIuZGF0YS1jeV09XCJtZWNoYW5pc20udmFsdWVcIlxuICAgIC8+XG4gICAgPHNwYW4+PC9zcGFuPlxuICAgIDxzcGFuPnt7IG1lY2hhbmlzbS5sYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgPC9sYWJlbD5cbjwvYzh5LWZvcm0tZ3JvdXA+XG5cbjxkaXYgY2xhc3M9XCJyb3cgY29sbGFwc2VcIiBbY29sbGFwc2VdPVwic3Vic2NyaXB0aW9uLnR5cGUgIT0gJ0N5Y2xpY1JlYWQnXCIgW2lzQW5pbWF0ZWRdPVwidHJ1ZVwiPlxuICA8ZGl2IGNsYXNzPVwiY29sLXNtLTYgY29sLW1kLTQgY29sLWxnLTNcIj5cbiAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICA8bGFiZWwgdHJhbnNsYXRlPlJlYWRpbmcgaW50ZXJ2YWw8L2xhYmVsPlxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICBuYW1lPVwicmF0ZVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjeWNsaWNSZWFkUGFyYW1ldGVycy5yYXRlXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuJyB8IHRyYW5zbGF0ZSB9fSA1MFwiXG4gICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVDeWNsaWNcIlxuICAgICAgICAgIG1pbj1cIjUwXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLWN5XT1cIidjeWNsaWNSZWFkUmF0ZSdcIlxuICAgICAgICAvPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uIHVuaXRzXCIgdGl0bGU9XCJ7eyAnTWlsbGlzZWNvbmRzJyB8IHRyYW5zbGF0ZSB9fVwiPlxuICAgICAgICAgIHt7ICdtc2VjJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwicm93IGNvbGxhcHNlXCIgW2NvbGxhcHNlXT1cInN1YnNjcmlwdGlvbi50eXBlICE9ICdTdWJzY3JpcHRpb24nXCIgW2lzQW5pbWF0ZWRdPVwidHJ1ZVwiPlxuICA8ZGl2IGNsYXNzPVwiY29sLXNtLTYgY29sLWxnLTRcIj5cbiAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICA8bGFiZWwgdHJhbnNsYXRlPlNhbXBsaW5nIGludGVydmFsPC9sYWJlbD5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgbmFtZT1cInNhbXBsaW5nUmF0ZVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzdWJzY3JpcHRpb25QYXJhbWV0ZXJzLnNhbXBsaW5nUmF0ZVwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLicgfCB0cmFuc2xhdGUgfX0gNTAwXCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZVN1YnNjcmlwdGlvblwiXG4gICAgICAgICAgbWluPVwiMFwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCInc3Vic2NyaXB0aW9uU2FtcGxpbmdSYXRlJ1wiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb24gdW5pdHNcIiB0aXRsZT1cInt7ICdNaWxsaXNlY29uZHMnIHwgdHJhbnNsYXRlIH19XCIgdHJhbnNsYXRlPlxuICAgICAgICAgIG1zZWNcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9jOHktZm9ybS1ncm91cD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb2wtc20tNiBjb2wtbGctNFwiPlxuICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgIDxsYWJlbCB0cmFuc2xhdGU+UXVldWUgc2l6ZTwvbGFiZWw+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgIG5hbWU9XCJxdWV1ZVNpemVcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwic3Vic2NyaXB0aW9uUGFyYW1ldGVycy5xdWV1ZVNpemVcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4nIHwgdHJhbnNsYXRlIH19IDEwXCJcbiAgICAgICAgICBtaW49XCIxXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLWN5XT1cIidzdWJzY3JpcHRpb25RdWV1ZVNpemUnXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1hZGRvblwiPlxuICAgICAgICAgIDxzdHJvbmcgdHJhbnNsYXRlPkRpc2NhcmQ8L3N0cm9uZz4mbmJzcDtcbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkaXNjYXJkT3B0aW9uIG9mIGRpc2NhcmRcIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyBkaXNjYXJkT3B0aW9uLmxhYmVsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYzh5LXJhZGlvIHJhZGlvLWlubGluZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgIG5hbWU9XCJkaXNjYXJkXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cImRpc2NhcmRPcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInN1YnNjcmlwdGlvblBhcmFtZXRlcnMuZGlzY2FyZE9sZGVzdFwiXG4gICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlU3Vic2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCJkaXNjYXJkT3B0aW9uLmxhYmVsXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj57eyBkaXNjYXJkT3B0aW9uLmxhYmVsIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY2xlYXJmaXhcIj48L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbC1zbS02IGNvbC1sZy00XCI+XG4gICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5EYXRhIGNoYW5nZSB0cmlnZ2VyPC9sYWJlbD5cbiAgICAgIDxsYWJlbFxuICAgICAgICAqbmdGb3I9XCJsZXQgdHJpZ2dlciBvZiB0cmlnZ2Vyc1wiXG4gICAgICAgIHRpdGxlPVwie3sgdHJpZ2dlci5sYWJlbCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIGNsYXNzPVwiYzh5LXJhZGlvIHJhZGlvLWlubGluZVwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgbmFtZT1cImRhdGFDaGFuZ2VUcmlnZ2VyXCJcbiAgICAgICAgICBbdmFsdWVdPVwidHJpZ2dlci52YWx1ZVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzdWJzY3JpcHRpb25QYXJhbWV0ZXJzLmRhdGFDaGFuZ2VUcmlnZ2VyXCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZVN1YnNjcmlwdGlvblwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCJ0cmlnZ2VyLmxhYmVsXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICA8c3Bhbj57eyB0cmlnZ2VyLmxhYmVsIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbC1zbS02IGNvbC1sZy00XCI+XG4gICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5EZWFkYmFuZCBmaWx0ZXI8L2xhYmVsPlxuICAgICAgPGxhYmVsXG4gICAgICAgICpuZ0Zvcj1cImxldCBkZWFkYmFuZEZpbHRlciBvZiBmaWx0ZXJzXCJcbiAgICAgICAgdGl0bGU9XCJ7eyBkZWFkYmFuZEZpbHRlci5sYWJlbCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIGNsYXNzPVwiYzh5LXJhZGlvIHJhZGlvLWlubGluZVwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgbmFtZT1cImRlYWRiYW5kVHlwZVwiXG4gICAgICAgICAgW3ZhbHVlXT1cImRlYWRiYW5kRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInN1YnNjcmlwdGlvblBhcmFtZXRlcnMuZGVhZGJhbmRUeXBlXCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZVN1YnNjcmlwdGlvblwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCJkZWFkYmFuZEZpbHRlci5sYWJlbFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4+e3sgZGVhZGJhbmRGaWx0ZXIubGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgPGRpdiBbY29sbGFwc2VdPVwic3Vic2NyaXB0aW9uUGFyYW1ldGVycy5kZWFkYmFuZFR5cGUgPT0gJ05vbmUnXCIgW2lzQW5pbWF0ZWRdPVwidHJ1ZVwiPlxuICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICA8bGFiZWwgdHJhbnNsYXRlPkRlYWRiYW5kIHZhbHVlPC9sYWJlbD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgIG5hbWU9XCJkZWFkYmFuZFZhbHVlXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInN1YnNjcmlwdGlvblBhcmFtZXRlcnMuZGVhZGJhbmRWYWx1ZVwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLicgfCB0cmFuc2xhdGUgfX0gMTBcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJzdWJzY3JpcHRpb25QYXJhbWV0ZXJzLmRlYWRiYW5kVHlwZSAhPSAnTm9uZSdcIlxuICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgIFthdHRyLmRhdGEtY3ldPVwiJ2RlYWRiYW5kVmFsdWUnXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BjdWEtZGV2aWNlLXByb3RvY29sLWRhdGEtcmVwb3J0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb3RvY29sLW9wY3VhL29wY3VhLWRldmljZS1wcm90b2NvbC1kYXRhLXJlcG9ydGluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9wcm90b2NvbC1vcGN1YS9vcGN1YS1kZXZpY2UtcHJvdG9jb2wtZGF0YS1yZXBvcnRpbmcuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFPaEUsTUFBTSxPQUFPLHlDQUF5QztJQUx0RDtRQWdDWSx5QkFBb0IsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUU1RSxpQkFBWSxHQUFHO1lBQ2IsSUFBSSxFQUFFLE1BQU07U0FDYixDQUFDO1FBQ0YsMkJBQXNCLEdBQUc7WUFDdkIsWUFBWSxFQUFFLFNBQVM7WUFDdkIsWUFBWSxFQUFFLE1BQU07WUFDcEIsYUFBYSxFQUFFLFNBQVM7WUFDeEIsTUFBTSxFQUFFLEVBQUU7WUFDVixTQUFTLEVBQUUsU0FBUztZQUNwQixpQkFBaUIsRUFBRSxRQUFRO1lBQzNCLGFBQWEsRUFBRSxJQUFJO1NBQ3BCLENBQUM7UUFFRix5QkFBb0IsR0FBRztZQUNyQixJQUFJLEVBQUUsU0FBUztTQUNoQixDQUFDO1FBRUYsVUFBSyxHQUFVO1lBQ2IsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFP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QUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxDQUFDOzhCQUc1RCxLQUFLO3NCQUFqQixLQUFLO2dCQXVCRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdJLG9CQUFvQjtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzZXQsIHVuc2V0LCB0b0ludGVnZXIgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgTmdNb2RlbEdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvcGN1YS1kZXZpY2UtcHJvdG9jb2wtZGF0YS1yZXBvcnRpbmcnLFxuICB0ZW1wbGF0ZVVybDogJy4vb3BjdWEtZGV2aWNlLXByb3RvY29sLWRhdGEtcmVwb3J0aW5nLmh0bWwnLFxuICB2aWV3UHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLCB1c2VFeGlzdGluZzogTmdNb2RlbEdyb3VwIH1dXG59KVxuZXhwb3J0IGNsYXNzIE9wY3VhRGV2aWNlUHJvdG9jb2xEYXRhUmVwb3J0aW5nQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc2V0IG1vZGVsKF9tb2RlbCkge1xuICAgIGlmIChfbW9kZWwuc3Vic2NyaXB0aW9uVHlwZSkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSBfbW9kZWwuc3Vic2NyaXB0aW9uVHlwZTtcbiAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbi50eXBlID09PSAnQ3ljbGljUmVhZCcpIHtcbiAgICAgICAgdGhpcy5jeWNsaWNSZWFkUGFyYW1ldGVycyA9IF9tb2RlbC5zdWJzY3JpcHRpb25UeXBlLmN5Y2xpY1JlYWRQYXJhbWV0ZXJzO1xuICAgICAgICB0aGlzLnJlcXVpcmVDeWNsaWMgPSB0cnVlO1xuICAgICAgICB0aGlzLnJlcXVpcmVTdWJzY3JpcHRpb24gPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uLnR5cGUgPT09ICdTdWJzY3JpcHRpb24nKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uUGFyYW1ldGVycyA9IF9tb2RlbC5zdWJzY3JpcHRpb25UeXBlLnN1YnNjcmlwdGlvblBhcmFtZXRlcnM7XG4gICAgICAgIHRoaXMucmVxdWlyZUN5Y2xpYyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlcXVpcmVTdWJzY3JpcHRpb24gPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24udHlwZSA9PT0gJ05vbmUnKSB7XG4gICAgICAgIHRoaXMucmVxdWlyZUN5Y2xpYyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlcXVpcmVTdWJzY3JpcHRpb24gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fbW9kZWwgPSBfbW9kZWw7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25UeXBlTmFtZSA9ICdzdWJzY3JpcHRpb25UeXBlJyArIF9tb2RlbC5pZDtcbiAgfVxuICBASW5wdXQoKSBncm91cE5hbWU7XG5cbiAgX21vZGVsOiBvYmplY3Q7XG4gIEBPdXRwdXQoKSBvblN1YnNjcmlwdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBzdWJzY3JpcHRpb24gPSB7XG4gICAgdHlwZTogJ05vbmUnXG4gIH07XG4gIHN1YnNjcmlwdGlvblBhcmFtZXRlcnMgPSB7XG4gICAgc2FtcGxpbmdSYXRlOiB1bmRlZmluZWQsXG4gICAgZGVhZGJhbmRUeXBlOiAnTm9uZScsXG4gICAgZGVhZGJhbmRWYWx1ZTogdW5kZWZpbmVkLFxuICAgIHJhbmdlczogJycsXG4gICAgcXVldWVTaXplOiB1bmRlZmluZWQsXG4gICAgZGF0YUNoYW5nZVRyaWdnZXI6ICdTdGF0dXMnLFxuICAgIGRpc2NhcmRPbGRlc3Q6IHRydWVcbiAgfTtcblxuICBjeWNsaWNSZWFkUGFyYW1ldGVycyA9IHtcbiAgICByYXRlOiB1bmRlZmluZWRcbiAgfTtcblxuICB0eXBlczogYW55W10gPSBbXG4gICAgeyB2YWx1ZTogJ05vbmUnLCBsYWJlbDogZ2V0dGV4dCgnTm9uZScpIH0sXG4gICAgeyB2YWx1ZTogJ0N5Y2xpY1JlYWQnLCBsYWJlbDogZ2V0dGV4dCgnQ3ljbGljIHJlYWQnKSB9LFxuICAgIHsgdmFsdWU6ICdTdWJzY3JpcHRpb24nLCBsYWJlbDogZ2V0dGV4dCgnU3Vic2NyaXB0aW9uJykgfVxuICBdO1xuXG4gIGZpbHRlcnM6IGFueVtdID0gW1xuICAgIHsgdmFsdWU6ICdOb25lJywgbGFiZWw6IGdldHRleHQoJ05vbmUnKSB9LFxuICAgIHsgdmFsdWU6ICdBYnNvbHV0ZScsIGxhYmVsOiBnZXR0ZXh0KCdBYnNvbHV0ZScpIH0sXG4gICAgeyB2YWx1ZTogJ1BlcmNlbnQnLCBsYWJlbDogZ2V0dGV4dCgnUGVyY2VudCcpIH1cbiAgXTtcblxuICB0cmlnZ2VyczogYW55W10gPSBbXG4gICAgeyB2YWx1ZTogJ1N0YXR1cycsIGxhYmVsOiBnZXR0ZXh0KCdTdGF0dXMnKSB9LFxuICAgIHsgdmFsdWU6ICdTdGF0dXNWYWx1ZScsIGxhYmVsOiBnZXR0ZXh0KCdTdGF0dXMvVmFsdWUnKSB9LFxuICAgIHsgdmFsdWU6ICdTdGF0dXNWYWx1ZVRpbWVzdGFtcCcsIGxhYmVsOiBnZXR0ZXh0KCdTdGF0dXMvVmFsdWUvVGltZXN0YW1wJykgfVxuICBdO1xuXG4gIGRpc2NhcmQ6IGFueVtdID0gW1xuICAgIHsgdmFsdWU6IHRydWUsIGxhYmVsOiBnZXR0ZXh0KCdvbGRlc3RgZGF0YWAnKSB9LFxuICAgIHsgdmFsdWU6IGZhbHNlLCBsYWJlbDogZ2V0dGV4dCgnbmV3ZXN0YGRhdGFgJykgfVxuICBdO1xuXG4gIHJlcXVpcmVDeWNsaWMgPSBmYWxzZTtcbiAgcmVxdWlyZVN1YnNjcmlwdGlvbiA9IGZhbHNlO1xuICBzdWJzY3JpcHRpb25UeXBlTmFtZSA9ICdzdWJzY3JpcHRpb25UeXBlJztcblxuICBwYXJzZVJlYWRpbmdJbnRlcnZhbCA9ICRldmVudCA9PiB0b0ludGVnZXIoJGV2ZW50LnRhcmdldC52YWx1ZSk7XG5cbiAgdXBkYXRlTW9kZWwoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB1bnNldCh0aGlzLnN1YnNjcmlwdGlvbiwgJ3N1YnNjcmlwdGlvblBhcmFtZXRlcnMnKTtcbiAgICAgIHVuc2V0KHRoaXMuc3Vic2NyaXB0aW9uLCAnY3ljbGljUmVhZFBhcmFtZXRlcnMnKTtcbiAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbi50eXBlID09PSAnQ3ljbGljUmVhZCcpIHtcbiAgICAgICAgdGhpcy5yZXF1aXJlQ3ljbGljID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5yZXF1aXJlU3Vic2NyaXB0aW9uID0gZmFsc2U7XG4gICAgICAgIHNldCh0aGlzLnN1YnNjcmlwdGlvbiwgJ2N5Y2xpY1JlYWRQYXJhbWV0ZXJzJywgdGhpcy5jeWNsaWNSZWFkUGFyYW1ldGVycyk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc3Vic2NyaXB0aW9uLnR5cGUgPT09ICdTdWJzY3JpcHRpb24nKSB7XG4gICAgICAgIHRoaXMucmVxdWlyZUN5Y2xpYyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlcXVpcmVTdWJzY3JpcHRpb24gPSB0cnVlO1xuICAgICAgICBzZXQodGhpcy5zdWJzY3JpcHRpb24sICdzdWJzY3JpcHRpb25QYXJhbWV0ZXJzJywgdGhpcy5zdWJzY3JpcHRpb25QYXJhbWV0ZXJzKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zdWJzY3JpcHRpb24udHlwZSA9PT0gJ05vbmUnKSB7XG4gICAgICAgIHRoaXMucmVxdWlyZUN5Y2xpYyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlcXVpcmVTdWJzY3JpcHRpb24gPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMub25TdWJzY3JpcHRpb25DaGFuZ2UuZW1pdCh0aGlzLnN1YnNjcmlwdGlvbik7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxjOHktZm9ybS1ncm91cD5cbiAgPGxhYmVsIHRyYW5zbGF0ZT5NZWNoYW5pc208L2xhYmVsPlxuICA8bGFiZWxcbiAgICB0aXRsZT1cInt7IG1lY2hhbmlzbS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgY2xhc3M9XCJjOHktcmFkaW8gcmFkaW8taW5saW5lXCJcbiAgICAqbmdGb3I9XCJsZXQgbWVjaGFuaXNtIG9mIHR5cGVzXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgIG5hbWU9XCJ7e3N1YnNjcmlwdGlvblR5cGVOYW1lfX1cIlxuICAgICAgW3ZhbHVlXT1cIm1lY2hhbmlzbS52YWx1ZVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInN1YnNjcmlwdGlvbi50eXBlXCJcbiAgICAgIChjaGFuZ2UpPVwidXBkYXRlTW9kZWwoKVwiXG4gICAgICByZXF1aXJlZFxuICAgICAgW2F0dHIuZGF0YS1jeV09XCJtZWNoYW5pc20udmFsdWVcIlxuICAgIC8+XG4gICAgPHNwYW4+PC9zcGFuPlxuICAgIDxzcGFuPnt7IG1lY2hhbmlzbS5sYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgPC9sYWJlbD5cbjwvYzh5LWZvcm0tZ3JvdXA+XG5cbjxkaXYgY2xhc3M9XCJyb3cgY29sbGFwc2VcIiBbY29sbGFwc2VdPVwic3Vic2NyaXB0aW9uLnR5cGUgIT0gJ0N5Y2xpY1JlYWQnXCIgW2lzQW5pbWF0ZWRdPVwidHJ1ZVwiPlxuICA8ZGl2IGNsYXNzPVwiY29sLXNtLTYgY29sLW1kLTQgY29sLWxnLTNcIj5cbiAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICA8bGFiZWwgdHJhbnNsYXRlPlJlYWRpbmcgaW50ZXJ2YWw8L2xhYmVsPlxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICBuYW1lPVwicmF0ZVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjeWNsaWNSZWFkUGFyYW1ldGVycy5yYXRlXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuJyB8IHRyYW5zbGF0ZSB9fSA1MFwiXG4gICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVDeWNsaWNcIlxuICAgICAgICAgIG1pbj1cIjUwXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLWN5XT1cIidjeWNsaWNSZWFkUmF0ZSdcIlxuICAgICAgICAvPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uIHVuaXRzXCIgdGl0bGU9XCJ7eyAnTWlsbGlzZWNvbmRzJyB8IHRyYW5zbGF0ZSB9fVwiPlxuICAgICAgICAgIHt7ICdtc2VjJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwicm93IGNvbGxhcHNlXCIgW2NvbGxhcHNlXT1cInN1YnNjcmlwdGlvbi50eXBlICE9ICdTdWJzY3JpcHRpb24nXCIgW2lzQW5pbWF0ZWRdPVwidHJ1ZVwiPlxuICA8ZGl2IGNsYXNzPVwiY29sLXNtLTYgY29sLWxnLTRcIj5cbiAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICA8bGFiZWwgdHJhbnNsYXRlPlNhbXBsaW5nIGludGVydmFsPC9sYWJlbD5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgbmFtZT1cInNhbXBsaW5nUmF0ZVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzdWJzY3JpcHRpb25QYXJhbWV0ZXJzLnNhbXBsaW5nUmF0ZVwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLicgfCB0cmFuc2xhdGUgfX0gNTAwXCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZVN1YnNjcmlwdGlvblwiXG4gICAgICAgICAgbWluPVwiMFwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCInc3Vic2NyaXB0aW9uU2FtcGxpbmdSYXRlJ1wiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb24gdW5pdHNcIiB0aXRsZT1cInt7ICdNaWxsaXNlY29uZHMnIHwgdHJhbnNsYXRlIH19XCIgdHJhbnNsYXRlPlxuICAgICAgICAgIG1zZWNcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9jOHktZm9ybS1ncm91cD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb2wtc20tNiBjb2wtbGctNFwiPlxuICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgIDxsYWJlbCB0cmFuc2xhdGU+UXVldWUgc2l6ZTwvbGFiZWw+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgIG5hbWU9XCJxdWV1ZVNpemVcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwic3Vic2NyaXB0aW9uUGFyYW1ldGVycy5xdWV1ZVNpemVcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4nIHwgdHJhbnNsYXRlIH19IDEwXCJcbiAgICAgICAgICBtaW49XCIxXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLWN5XT1cIidzdWJzY3JpcHRpb25RdWV1ZVNpemUnXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1hZGRvblwiPlxuICAgICAgICAgIDxzdHJvbmcgdHJhbnNsYXRlPkRpc2NhcmQ8L3N0cm9uZz4mbmJzcDtcbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkaXNjYXJkT3B0aW9uIG9mIGRpc2NhcmRcIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyBkaXNjYXJkT3B0aW9uLmxhYmVsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYzh5LXJhZGlvIHJhZGlvLWlubGluZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgIG5hbWU9XCJkaXNjYXJke3sgX21vZGVsLmlkIH19XCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cImRpc2NhcmRPcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInN1YnNjcmlwdGlvblBhcmFtZXRlcnMuZGlzY2FyZE9sZGVzdFwiXG4gICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlU3Vic2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCJkaXNjYXJkT3B0aW9uLmxhYmVsXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1uYW1lXT1cIidkaXNjYXJkJyArIF9tb2RlbC5pZFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+e3sgZGlzY2FyZE9wdGlvbi5sYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNsZWFyZml4XCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb2wtc20tNiBjb2wtbGctNFwiPlxuICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgIDxsYWJlbCB0cmFuc2xhdGU+RGF0YSBjaGFuZ2UgdHJpZ2dlcjwvbGFiZWw+XG4gICAgICA8bGFiZWxcbiAgICAgICAgKm5nRm9yPVwibGV0IHRyaWdnZXIgb2YgdHJpZ2dlcnNcIlxuICAgICAgICB0aXRsZT1cInt7IHRyaWdnZXIubGFiZWwgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICBjbGFzcz1cImM4eS1yYWRpbyByYWRpby1pbmxpbmVcIlxuICAgICAgPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgIG5hbWU9XCJkYXRhQ2hhbmdlVHJpZ2dlcnt7IF9tb2RlbC5pZCB9fVwiXG4gICAgICAgICAgW3ZhbHVlXT1cInRyaWdnZXIudmFsdWVcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwic3Vic2NyaXB0aW9uUGFyYW1ldGVycy5kYXRhQ2hhbmdlVHJpZ2dlclwiXG4gICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVTdWJzY3JpcHRpb25cIlxuICAgICAgICAgIFthdHRyLmRhdGEtY3ldPVwidHJpZ2dlci5sYWJlbFwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1uYW1lXT1cIidkYXRhQ2hhbmdlVHJpZ2dlcicgKyBfbW9kZWwuaWRcIlxuICAgICAgICAvPlxuICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgIDxzcGFuPnt7IHRyaWdnZXIubGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY29sLXNtLTYgY29sLWxnLTRcIj5cbiAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICA8bGFiZWwgdHJhbnNsYXRlPkRlYWRiYW5kIGZpbHRlcjwvbGFiZWw+XG4gICAgICA8bGFiZWxcbiAgICAgICAgKm5nRm9yPVwibGV0IGRlYWRiYW5kRmlsdGVyIG9mIGZpbHRlcnNcIlxuICAgICAgICB0aXRsZT1cInt7IGRlYWRiYW5kRmlsdGVyLmxhYmVsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgY2xhc3M9XCJjOHktcmFkaW8gcmFkaW8taW5saW5lXCJcbiAgICAgID5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICBuYW1lPVwiZGVhZGJhbmRUeXBle3sgX21vZGVsLmlkIH19XCJcbiAgICAgICAgICBbdmFsdWVdPVwiZGVhZGJhbmRGaWx0ZXIudmFsdWVcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwic3Vic2NyaXB0aW9uUGFyYW1ldGVycy5kZWFkYmFuZFR5cGVcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlU3Vic2NyaXB0aW9uXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLWN5XT1cImRlYWRiYW5kRmlsdGVyLmxhYmVsXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLW5hbWVdPVwiJ2RlYWRiYW5kVHlwZScgKyBfbW9kZWwuaWRcIlxuICAgICAgICAvPlxuICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgIDxzcGFuPnt7IGRlYWRiYW5kRmlsdGVyLmxhYmVsIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgIDxkaXYgW2NvbGxhcHNlXT1cInN1YnNjcmlwdGlvblBhcmFtZXRlcnMuZGVhZGJhbmRUeXBlID09ICdOb25lJ1wiIFtpc0FuaW1hdGVkXT1cInRydWVcIj5cbiAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5EZWFkYmFuZCB2YWx1ZTwvbGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICBuYW1lPVwiZGVhZGJhbmRWYWx1ZVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzdWJzY3JpcHRpb25QYXJhbWV0ZXJzLmRlYWRiYW5kVmFsdWVcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4nIHwgdHJhbnNsYXRlIH19IDEwXCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwic3Vic2NyaXB0aW9uUGFyYW1ldGVycy5kZWFkYmFuZFR5cGUgIT0gJ05vbmUnXCJcbiAgICAgICAgICBtaW49XCIwXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLWN5XT1cIidkZWFkYmFuZFZhbHVlJ1wiXG4gICAgICAgIC8+XG4gICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19