@igo2/context 1.15.4 → 16.0.0-rc.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 (168) hide show
  1. package/context-theme.scss +5 -0
  2. package/{esm2020 → esm2022}/igo2-context.mjs +4 -4
  3. package/esm2022/lib/context-import-export/context-import-export/context-import-export.component.mjs +258 -0
  4. package/esm2022/lib/context-import-export/context-import-export.module.mjs +81 -0
  5. package/{esm2020 → esm2022}/lib/context-import-export/index.mjs +3 -3
  6. package/{esm2020 → esm2022}/lib/context-import-export/shared/context-export.errors.mjs +15 -15
  7. package/{esm2020 → esm2022}/lib/context-import-export/shared/context-export.interface.mjs +2 -2
  8. package/esm2022/lib/context-import-export/shared/context-export.service.mjs +38 -0
  9. package/esm2022/lib/context-import-export/shared/context-export.utils.mjs +15 -0
  10. package/esm2022/lib/context-import-export/shared/context-import.errors.mjs +33 -0
  11. package/esm2022/lib/context-import-export/shared/context-import.service.mjs +82 -0
  12. package/esm2022/lib/context-import-export/shared/context-import.utils.mjs +148 -0
  13. package/{esm2020 → esm2022}/lib/context-import-export/shared/index.mjs +8 -8
  14. package/esm2022/lib/context-manager/context-edit/context-edit-binding.directive.mjs +57 -0
  15. package/esm2022/lib/context-manager/context-edit/context-edit.component.mjs +48 -0
  16. package/{esm2020 → esm2022}/lib/context-manager/context-edit/index.mjs +3 -3
  17. package/esm2022/lib/context-manager/context-form/context-form.component.mjs +151 -0
  18. package/{esm2020 → esm2022}/lib/context-manager/context-form/index.mjs +2 -2
  19. package/esm2022/lib/context-manager/context-item/context-item.component.mjs +251 -0
  20. package/{esm2020 → esm2022}/lib/context-manager/context-item/index.mjs +2 -2
  21. package/esm2022/lib/context-manager/context-list/context-list-binding.directive.mjs +259 -0
  22. package/esm2022/lib/context-manager/context-list/context-list.component.mjs +616 -0
  23. package/{esm2020 → esm2022}/lib/context-manager/context-list/context-list.enum.mjs +7 -7
  24. package/{esm2020 → esm2022}/lib/context-manager/context-list/index.mjs +3 -3
  25. package/esm2022/lib/context-manager/context-manager.module.mjs +157 -0
  26. package/esm2022/lib/context-manager/context-permissions/context-permissions-binding.directive.mjs +108 -0
  27. package/esm2022/lib/context-manager/context-permissions/context-permissions.component.mjs +331 -0
  28. package/{esm2020 → esm2022}/lib/context-manager/context-permissions/index.mjs +3 -3
  29. package/{esm2020 → esm2022}/lib/context-manager/index.mjs +7 -7
  30. package/{esm2020 → esm2022}/lib/context-manager/shared/context.enum.mjs +13 -13
  31. package/esm2022/lib/context-manager/shared/context.interface.mjs +2 -0
  32. package/esm2022/lib/context-manager/shared/context.service.mjs +662 -0
  33. package/{esm2020 → esm2022}/lib/context-manager/shared/index.mjs +6 -6
  34. package/esm2022/lib/context-manager/shared/layer-context.directive.mjs +172 -0
  35. package/esm2022/lib/context-manager/shared/map-context.directive.mjs +79 -0
  36. package/esm2022/lib/context-map-button/bookmark-button/bookmark-button.component.mjs +74 -0
  37. package/esm2022/lib/context-map-button/bookmark-button/bookmark-dialog.component.mjs +53 -0
  38. package/{esm2020 → esm2022}/lib/context-map-button/bookmark-button/index.mjs +3 -3
  39. package/esm2022/lib/context-map-button/context-map-button.module.mjs +104 -0
  40. package/{esm2020 → esm2022}/lib/context-map-button/index.mjs +4 -4
  41. package/{esm2020 → esm2022}/lib/context-map-button/poi-button/index.mjs +4 -4
  42. package/esm2022/lib/context-map-button/poi-button/poi-button.component.mjs +179 -0
  43. package/esm2022/lib/context-map-button/poi-button/poi-dialog.component.mjs +53 -0
  44. package/{esm2020 → esm2022}/lib/context-map-button/poi-button/shared/index.mjs +3 -3
  45. package/{esm2020 → esm2022}/lib/context-map-button/poi-button/shared/poi.interface.mjs +2 -2
  46. package/esm2022/lib/context-map-button/poi-button/shared/poi.service.mjs +38 -0
  47. package/{esm2020 → esm2022}/lib/context-map-button/user-button/index.mjs +3 -3
  48. package/{esm2020 → esm2022}/lib/context-map-button/user-button/user-button.animation.mjs +17 -17
  49. package/esm2022/lib/context-map-button/user-button/user-button.component.mjs +112 -0
  50. package/esm2022/lib/context-map-button/user-button/user-dialog.component.mjs +74 -0
  51. package/{esm2020 → esm2022}/lib/context.module.mjs +45 -45
  52. package/{esm2020 → esm2022}/lib/share-map/index.mjs +5 -5
  53. package/esm2022/lib/share-map/share-map/share-map-api.component.mjs +186 -0
  54. package/esm2022/lib/share-map/share-map/share-map-url.component.mjs +251 -0
  55. package/esm2022/lib/share-map/share-map/share-map.component.mjs +60 -0
  56. package/{esm2020 → esm2022}/lib/share-map/share-map.module.mjs +67 -67
  57. package/{esm2020 → esm2022}/lib/share-map/shared/index.mjs +2 -2
  58. package/esm2022/lib/share-map/shared/share-map.service.mjs +221 -0
  59. package/{esm2020 → esm2022}/lib/sidenav/index.mjs +2 -2
  60. package/esm2022/lib/sidenav/sidenav.component.mjs +178 -0
  61. package/{esm2020 → esm2022}/lib/sidenav/sidenav.module.mjs +61 -61
  62. package/{esm2020 → esm2022}/public_api.mjs +15 -15
  63. package/{fesm2020 → fesm2022}/igo2-context.mjs +4844 -4614
  64. package/fesm2022/igo2-context.mjs.map +1 -0
  65. package/index.d.ts +5 -5
  66. package/lib/context-import-export/context-import-export/context-import-export.component.d.ts +46 -44
  67. package/lib/context-import-export/context-import-export.module.d.ts +23 -23
  68. package/lib/context-import-export/index.d.ts +2 -2
  69. package/lib/context-import-export/shared/context-export.errors.d.ts +8 -8
  70. package/lib/context-import-export/shared/context-export.interface.d.ts +5 -5
  71. package/lib/context-import-export/shared/context-export.service.d.ts +10 -10
  72. package/lib/context-import-export/shared/context-export.utils.d.ts +4 -4
  73. package/lib/context-import-export/shared/context-import.errors.d.ts +17 -17
  74. package/lib/context-import-export/shared/context-import.service.d.ts +18 -18
  75. package/lib/context-import-export/shared/context-import.utils.d.ts +15 -17
  76. package/lib/context-import-export/shared/index.d.ts +7 -7
  77. package/lib/context-manager/context-edit/context-edit-binding.directive.d.ts +20 -20
  78. package/lib/context-manager/context-edit/context-edit.component.d.ts +14 -14
  79. package/lib/context-manager/context-edit/index.d.ts +2 -2
  80. package/lib/context-manager/context-form/context-form.component.d.ts +30 -30
  81. package/lib/context-manager/context-form/index.d.ts +1 -1
  82. package/lib/context-manager/context-item/context-item.component.d.ts +32 -32
  83. package/lib/context-manager/context-item/context-item.theming.scss +21 -0
  84. package/lib/context-manager/context-item/index.d.ts +1 -1
  85. package/lib/context-manager/context-list/context-list-binding.directive.d.ts +46 -46
  86. package/lib/context-manager/context-list/context-list.component.d.ts +93 -93
  87. package/lib/context-manager/context-list/context-list.enum.d.ts +5 -5
  88. package/lib/context-manager/context-list/context-list.theming.scss +23 -0
  89. package/lib/context-manager/context-list/index.d.ts +2 -2
  90. package/lib/context-manager/context-manager.module.d.ts +37 -37
  91. package/lib/context-manager/context-manager.theming.scss +7 -0
  92. package/lib/context-manager/context-permissions/context-permissions-binding.directive.d.ts +23 -23
  93. package/lib/context-manager/context-permissions/context-permissions.component.d.ts +40 -40
  94. package/lib/context-manager/context-permissions/index.d.ts +2 -2
  95. package/lib/context-manager/index.d.ts +6 -6
  96. package/lib/context-manager/shared/context.enum.d.ts +10 -10
  97. package/lib/context-manager/shared/context.interface.d.ts +81 -75
  98. package/lib/context-manager/shared/context.service.d.ts +76 -75
  99. package/lib/context-manager/shared/index.d.ts +5 -5
  100. package/lib/context-manager/shared/layer-context.directive.d.ts +28 -28
  101. package/lib/context-manager/shared/map-context.directive.d.ts +19 -19
  102. package/lib/context-map-button/bookmark-button/bookmark-button.component.d.ts +20 -20
  103. package/lib/context-map-button/bookmark-button/bookmark-dialog.component.d.ts +9 -9
  104. package/lib/context-map-button/bookmark-button/index.d.ts +2 -2
  105. package/lib/context-map-button/context-map-button.module.d.ts +27 -27
  106. package/lib/context-map-button/index.d.ts +3 -3
  107. package/lib/context-map-button/poi-button/index.d.ts +3 -3
  108. package/lib/context-map-button/poi-button/poi-button.component.d.ts +34 -34
  109. package/lib/context-map-button/poi-button/poi-dialog.component.d.ts +9 -9
  110. package/lib/context-map-button/poi-button/shared/index.d.ts +2 -2
  111. package/lib/context-map-button/poi-button/shared/poi.interface.d.ts +7 -7
  112. package/lib/context-map-button/poi-button/shared/poi.service.d.ts +16 -16
  113. package/lib/context-map-button/user-button/index.d.ts +2 -2
  114. package/lib/context-map-button/user-button/user-button.animation.d.ts +2 -2
  115. package/lib/context-map-button/user-button/user-button.component.d.ts +25 -25
  116. package/lib/context-map-button/user-button/user-dialog.component.d.ts +15 -15
  117. package/lib/context.module.d.ts +16 -16
  118. package/lib/share-map/index.d.ts +4 -4
  119. package/lib/share-map/share-map/share-map-api.component.d.ts +27 -27
  120. package/lib/share-map/share-map/share-map-url.component.d.ts +26 -26
  121. package/lib/share-map/share-map/share-map.component.d.ts +11 -11
  122. package/lib/share-map/share-map.module.d.ts +21 -21
  123. package/lib/share-map/shared/index.d.ts +1 -1
  124. package/lib/share-map/shared/share-map.service.d.ts +17 -17
  125. package/lib/sidenav/index.d.ts +1 -1
  126. package/lib/sidenav/sidenav.component.d.ts +35 -35
  127. package/lib/sidenav/sidenav.module.d.ts +18 -18
  128. package/locale/en.context.json +199 -0
  129. package/locale/fr.context.json +199 -0
  130. package/package.json +20 -26
  131. package/public_api.d.ts +11 -11
  132. package/esm2020/lib/context-import-export/context-import-export/context-import-export.component.mjs +0 -228
  133. package/esm2020/lib/context-import-export/context-import-export.module.mjs +0 -85
  134. package/esm2020/lib/context-import-export/shared/context-export.service.mjs +0 -38
  135. package/esm2020/lib/context-import-export/shared/context-export.utils.mjs +0 -15
  136. package/esm2020/lib/context-import-export/shared/context-import.errors.mjs +0 -33
  137. package/esm2020/lib/context-import-export/shared/context-import.service.mjs +0 -79
  138. package/esm2020/lib/context-import-export/shared/context-import.utils.mjs +0 -133
  139. package/esm2020/lib/context-manager/context-edit/context-edit-binding.directive.mjs +0 -50
  140. package/esm2020/lib/context-manager/context-edit/context-edit.component.mjs +0 -46
  141. package/esm2020/lib/context-manager/context-form/context-form.component.mjs +0 -143
  142. package/esm2020/lib/context-manager/context-item/context-item.component.mjs +0 -245
  143. package/esm2020/lib/context-manager/context-list/context-list-binding.directive.mjs +0 -240
  144. package/esm2020/lib/context-manager/context-list/context-list.component.mjs +0 -592
  145. package/esm2020/lib/context-manager/context-manager.module.mjs +0 -162
  146. package/esm2020/lib/context-manager/context-permissions/context-permissions-binding.directive.mjs +0 -99
  147. package/esm2020/lib/context-manager/context-permissions/context-permissions.component.mjs +0 -306
  148. package/esm2020/lib/context-manager/shared/context.interface.mjs +0 -2
  149. package/esm2020/lib/context-manager/shared/context.service.mjs +0 -632
  150. package/esm2020/lib/context-manager/shared/layer-context.directive.mjs +0 -162
  151. package/esm2020/lib/context-manager/shared/map-context.directive.mjs +0 -70
  152. package/esm2020/lib/context-map-button/bookmark-button/bookmark-button.component.mjs +0 -66
  153. package/esm2020/lib/context-map-button/bookmark-button/bookmark-dialog.component.mjs +0 -50
  154. package/esm2020/lib/context-map-button/context-map-button.module.mjs +0 -96
  155. package/esm2020/lib/context-map-button/poi-button/poi-button.component.mjs +0 -161
  156. package/esm2020/lib/context-map-button/poi-button/poi-dialog.component.mjs +0 -50
  157. package/esm2020/lib/context-map-button/poi-button/shared/poi.service.mjs +0 -33
  158. package/esm2020/lib/context-map-button/user-button/user-button.component.mjs +0 -104
  159. package/esm2020/lib/context-map-button/user-button/user-dialog.component.mjs +0 -66
  160. package/esm2020/lib/share-map/share-map/share-map-api.component.mjs +0 -170
  161. package/esm2020/lib/share-map/share-map/share-map-url.component.mjs +0 -243
  162. package/esm2020/lib/share-map/share-map/share-map.component.mjs +0 -57
  163. package/esm2020/lib/share-map/shared/share-map.service.mjs +0 -210
  164. package/esm2020/lib/sidenav/sidenav.component.mjs +0 -170
  165. package/fesm2015/igo2-context.mjs +0 -5094
  166. package/fesm2015/igo2-context.mjs.map +0 -1
  167. package/fesm2020/igo2-context.mjs.map +0 -1
  168. package/ngcc.config.js +0 -3
@@ -1,133 +0,0 @@
1
- import { FeatureDataSource, VectorLayer, ClusterDataSource, featureRandomStyle, featureRandomStyleFunction } from '@igo2/geo';
2
- export function handleFileImportSuccess(file, context, messageService, contextService) {
3
- if (Object.keys(context).length <= 0) {
4
- handleNothingToImportError(file, messageService);
5
- return;
6
- }
7
- const contextTitle = computeLayerTitleFromFile(file);
8
- addContextToContextList(context, contextTitle, contextService);
9
- messageService.success('igo.context.contextImportExport.import.success.text', 'igo.context.contextImportExport.import.success.title', undefined, {
10
- value: contextTitle
11
- });
12
- }
13
- export function handleFileImportError(file, error, messageService, sizeMb) {
14
- sizeMb = sizeMb ? sizeMb : 30;
15
- const errMapping = {
16
- 'Invalid file': handleInvalidFileImportError,
17
- 'File is too large': handleSizeFileImportError,
18
- 'Failed to read file': handleUnreadbleFileImportError
19
- };
20
- errMapping[error.message](file, error, messageService, sizeMb);
21
- }
22
- export function handleInvalidFileImportError(file, error, messageService) {
23
- messageService.error('igo.context.contextImportExport.import.invalid.text', 'igo.context.contextImportExport.import.invalid.title', undefined, {
24
- value: file.name,
25
- mimeType: file.type
26
- });
27
- }
28
- export function handleSizeFileImportError(file, error, messageService, sizeMb) {
29
- messageService.error('igo.context.contextImportExport.import.tooLarge.text', 'igo.context.contextImportExport.import.tooLarge.title', undefined, {
30
- value: file.name,
31
- size: sizeMb
32
- });
33
- }
34
- export function handleUnreadbleFileImportError(file, error, messageService) {
35
- messageService.error('igo.context.contextImportExport.import.unreadable.text', 'igo.context.contextImportExport.import.unreadable.title', undefined, {
36
- value: file.name
37
- });
38
- }
39
- export function handleNothingToImportError(file, messageService) {
40
- messageService.error('igo.context.contextImportExport.import.empty.text', 'igo.context.contextImportExport.import.empty.title', undefined, { value: file.name });
41
- }
42
- export function addContextToContextList(context, contextTitle, contextService) {
43
- context.title = contextTitle;
44
- context.imported = true;
45
- contextService.contexts$.value.ours.unshift(context);
46
- contextService.contexts$.next(contextService.contexts$.value);
47
- contextService.importedContext.unshift(context);
48
- contextService.loadContext(context.uri);
49
- }
50
- export function getFileExtension(file) {
51
- return file.name.split('.').pop().toLowerCase();
52
- }
53
- export function computeLayerTitleFromFile(file) {
54
- return file.name.substr(0, file.name.lastIndexOf('.'));
55
- }
56
- export function addImportedFeaturesToMap(olFeatures, map, layerTitle) {
57
- const sourceOptions = {
58
- type: 'vector',
59
- queryable: true
60
- };
61
- const source = new FeatureDataSource(sourceOptions);
62
- source.ol.addFeatures(olFeatures);
63
- let randomStyle;
64
- let editable = false;
65
- if (olFeatures[0].getKeys().includes('_style') ||
66
- olFeatures[0].getKeys().includes('_mapTitle')) {
67
- randomStyle = featureRandomStyleFunction();
68
- }
69
- else {
70
- randomStyle = featureRandomStyle();
71
- editable = true;
72
- }
73
- const layer = new VectorLayer({
74
- title: layerTitle,
75
- isIgoInternalLayer: true,
76
- source,
77
- igoStyle: { editable },
78
- style: randomStyle
79
- });
80
- map.addLayer(layer);
81
- return layer;
82
- }
83
- export function addImportedFeaturesStyledToMap(olFeatures, map, layerTitle, styleListService, styleService) {
84
- let style;
85
- let distance;
86
- if (styleListService.getStyleList(layerTitle.toString() + '.styleByAttribute')) {
87
- const styleByAttribute = styleListService.getStyleList(layerTitle.toString() + '.styleByAttribute');
88
- style = (feature, resolution) => {
89
- return styleService.createStyleByAttribute(feature, styleByAttribute, resolution);
90
- };
91
- }
92
- else if (styleListService.getStyleList(layerTitle.toString() + '.clusterStyle')) {
93
- const clusterParam = styleListService.getStyleList(layerTitle.toString() + '.clusterParam');
94
- distance = styleListService.getStyleList(layerTitle.toString() + '.distance');
95
- style = (feature, resolution) => {
96
- const baseStyle = styleService.createStyle(styleListService.getStyleList(layerTitle.toString() + '.clusterStyle'), feature, resolution);
97
- return styleService.createClusterStyle(feature, resolution, clusterParam, baseStyle);
98
- };
99
- }
100
- else if (styleListService.getStyleList(layerTitle.toString() + '.style')) {
101
- style = (feature, resolution) => styleService.createStyle(styleListService.getStyleList(layerTitle.toString() + '.style'), feature, resolution);
102
- }
103
- else {
104
- style = (feature, resolution) => styleService.createStyle(styleListService.getStyleList('default.style'), feature, resolution);
105
- }
106
- let source;
107
- if (styleListService.getStyleList(layerTitle.toString() + '.clusterStyle')) {
108
- const sourceOptions = {
109
- distance,
110
- type: 'cluster',
111
- queryable: true
112
- };
113
- source = new ClusterDataSource(sourceOptions);
114
- source.ol.source.addFeatures(olFeatures);
115
- }
116
- else {
117
- const sourceOptions = {
118
- type: 'vector',
119
- queryable: true
120
- };
121
- source = new FeatureDataSource(sourceOptions);
122
- source.ol.addFeatures(olFeatures);
123
- }
124
- const layer = new VectorLayer({
125
- title: layerTitle,
126
- isIgoInternalLayer: true,
127
- source,
128
- style
129
- });
130
- map.addLayer(layer);
131
- return layer;
132
- }
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1pbXBvcnQudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZXh0L3NyYy9saWIvY29udGV4dC1pbXBvcnQtZXhwb3J0L3NoYXJlZC9jb250ZXh0LWltcG9ydC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQ0wsaUJBQWlCLEVBR2pCLFdBQVcsRUFPWCxpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLDBCQUEwQixFQUMzQixNQUFNLFdBQVcsQ0FBQztBQU1uQixNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLElBQVUsRUFDVixPQUF3QixFQUN4QixjQUE4QixFQUM5QixjQUE4QjtJQUU5QixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtRQUNwQywwQkFBMEIsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDakQsT0FBTztLQUNSO0lBRUQsTUFBTSxZQUFZLEdBQUcseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFckQsdUJBQXVCLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQztJQUUvRCxjQUFjLENBQUMsT0FBTyxDQUNwQixxREFBcUQsRUFDckQsc0RBQXNELEVBQUUsU0FBUyxFQUFFO1FBQ2pFLEtBQUssRUFBRSxZQUFZO0tBQ3BCLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLElBQVUsRUFDVixLQUFZLEVBQ1osY0FBOEIsRUFDOUIsTUFBZTtJQUVmLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzlCLE1BQU0sVUFBVSxHQUFHO1FBQ2pCLGNBQWMsRUFBRSw0QkFBNEI7UUFDNUMsbUJBQW1CLEVBQUUseUJBQXlCO1FBQzlDLHFCQUFxQixFQUFFLDhCQUE4QjtLQUN0RCxDQUFDO0lBQ0YsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FDdkIsSUFBSSxFQUNKLEtBQUssRUFDTCxjQUFjLEVBQ2QsTUFBTSxDQUNQLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDRCQUE0QixDQUMxQyxJQUFVLEVBQ1YsS0FBWSxFQUNaLGNBQThCO0lBRTlCLGNBQWMsQ0FBQyxLQUFLLENBQ2xCLHFEQUFxRCxFQUNyRCxzREFBc0QsRUFDdEQsU0FBUyxFQUNUO1FBQ0UsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJO1FBQ2hCLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSTtLQUNwQixDQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxJQUFVLEVBQ1YsS0FBWSxFQUNaLGNBQThCLEVBQzlCLE1BQWM7SUFFZCxjQUFjLENBQUMsS0FBSyxDQUNsQixzREFBc0QsRUFDdEQsdURBQXVELEVBQ3ZELFNBQVMsRUFDVDtRQUNFLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSTtRQUNoQixJQUFJLEVBQUUsTUFBTTtLQUNiLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxNQUFNLFVBQVUsOEJBQThCLENBQzVDLElBQVUsRUFDVixLQUFZLEVBQ1osY0FBOEI7SUFFOUIsY0FBYyxDQUFDLEtBQUssQ0FDbEIsd0RBQXdELEVBQ3hELHlEQUF5RCxFQUN6RCxTQUFTLEVBQ1Q7UUFDRSxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUk7S0FDakIsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELE1BQU0sVUFBVSwwQkFBMEIsQ0FDeEMsSUFBVSxFQUNWLGNBQThCO0lBRTlCLGNBQWMsQ0FBQyxLQUFLLENBQ2xCLG1EQUFtRCxFQUNuRCxvREFBb0QsRUFDcEQsU0FBUyxFQUNULEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzFCLENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLE9BQXdCLEVBQ3hCLFlBQW9CLEVBQ3BCLGNBQThCO0lBRTlCLE9BQU8sQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDO0lBQzdCLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5RCxjQUFjLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRCxjQUFjLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQVU7SUFDekMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUNsRCxDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUFDLElBQVU7SUFDbEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN6RCxDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxVQUFtQyxFQUNuQyxHQUFXLEVBQ1gsVUFBa0I7SUFFbEIsTUFBTSxhQUFhLEdBQTBEO1FBQzNFLElBQUksRUFBRSxRQUFRO1FBQ2QsU0FBUyxFQUFFLElBQUk7S0FDaEIsQ0FBQztJQUNGLE1BQU0sTUFBTSxHQUFHLElBQUksaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEMsSUFBSSxXQUFXLENBQUM7SUFDaEIsSUFBSSxRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzlCLElBQ0UsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDMUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRTtRQUMvQyxXQUFXLEdBQUcsMEJBQTBCLEVBQUUsQ0FBQztLQUM1QztTQUFNO1FBQ0wsV0FBVyxHQUFHLGtCQUFrQixFQUFFLENBQUM7UUFDbkMsUUFBUSxHQUFHLElBQUksQ0FBQztLQUNqQjtJQUNELE1BQU0sS0FBSyxHQUFHLElBQUksV0FBVyxDQUFDO1FBQzVCLEtBQUssRUFBRSxVQUFVO1FBQ2pCLGtCQUFrQixFQUFFLElBQUk7UUFDeEIsTUFBTTtRQUNOLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRTtRQUN0QixLQUFLLEVBQUUsV0FBVztLQUNuQixDQUFDLENBQUM7SUFDSCxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXBCLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELE1BQU0sVUFBVSw4QkFBOEIsQ0FDNUMsVUFBbUMsRUFDbkMsR0FBVyxFQUNYLFVBQWtCLEVBQ2xCLGdCQUFrQyxFQUNsQyxZQUEwQjtJQUUxQixJQUFJLEtBQUssQ0FBQztJQUNWLElBQUksUUFBZ0IsQ0FBQztJQUVyQixJQUNFLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsbUJBQW1CLENBQUMsRUFDMUU7UUFDQSxNQUFNLGdCQUFnQixHQUFxQixnQkFBZ0IsQ0FBQyxZQUFZLENBQ3RFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxtQkFBbUIsQ0FDNUMsQ0FBQztRQUVGLEtBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRTtZQUM5QixPQUFPLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDcEYsQ0FBQyxDQUFDO0tBQ0g7U0FBTSxJQUNMLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsZUFBZSxDQUFDLEVBQ3RFO1FBQ0EsTUFBTSxZQUFZLEdBQWlCLGdCQUFnQixDQUFDLFlBQVksQ0FDOUQsVUFBVSxDQUFDLFFBQVEsRUFBRSxHQUFHLGVBQWUsQ0FDeEMsQ0FBQztRQUNGLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxZQUFZLENBQ3RDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxXQUFXLENBQ3BDLENBQUM7UUFFRixLQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUU7WUFDOUIsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FDeEMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxlQUFlLENBQUMsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUM1RixDQUFDO1lBQ0YsT0FBTyxZQUFZLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDdkYsQ0FBQyxDQUFDO0tBQ0g7U0FBTSxJQUFJLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsUUFBUSxDQUFDLEVBQUU7UUFDMUUsS0FBSyxHQUFHLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FDdkQsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxRQUFRLENBQUMsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUNyRixDQUFDO0tBQ0g7U0FBTTtRQUNMLEtBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQ3ZELGdCQUFnQixDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUNwRSxDQUFDO0tBQ0g7SUFDRCxJQUFJLE1BQU0sQ0FBQztJQUVYLElBQUksZ0JBQWdCLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxlQUFlLENBQUMsRUFBRTtRQUMxRSxNQUFNLGFBQWEsR0FDWTtZQUM3QixRQUFRO1lBQ1IsSUFBSSxFQUFFLFNBQVM7WUFDZixTQUFTLEVBQUUsSUFBSTtTQUNoQixDQUFDO1FBQ0YsTUFBTSxHQUFHLElBQUksaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDOUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQzFDO1NBQU07UUFDTCxNQUFNLGFBQWEsR0FDWTtZQUM3QixJQUFJLEVBQUUsUUFBUTtZQUNkLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUM7UUFDRixNQUFNLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5QyxNQUFNLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUNuQztJQUVELE1BQU0sS0FBSyxHQUFHLElBQUksV0FBVyxDQUFDO1FBQzVCLEtBQUssRUFBRSxVQUFVO1FBQ2pCLGtCQUFrQixFQUFFLElBQUk7UUFDeEIsTUFBTTtRQUNOLEtBQUs7S0FDTixDQUFDLENBQUM7SUFDSCxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXBCLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBPbEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIEZlYXR1cmVEYXRhU291cmNlLFxyXG4gIEZlYXR1cmVEYXRhU291cmNlT3B0aW9ucyxcclxuICBJZ29NYXAsXHJcbiAgVmVjdG9yTGF5ZXIsXHJcbiAgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMsXHJcbiAgU3R5bGVTZXJ2aWNlLFxyXG4gIFN0eWxlTGlzdFNlcnZpY2UsXHJcbiAgU3R5bGVCeUF0dHJpYnV0ZSxcclxuICBDbHVzdGVyUGFyYW0sXHJcbiAgQ2x1c3RlckRhdGFTb3VyY2VPcHRpb25zLFxyXG4gIENsdXN0ZXJEYXRhU291cmNlLFxyXG4gIGZlYXR1cmVSYW5kb21TdHlsZSxcclxuICBmZWF0dXJlUmFuZG9tU3R5bGVGdW5jdGlvblxyXG59IGZyb20gJ0BpZ28yL2dlbyc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcbmltcG9ydCB7IERldGFpbGVkQ29udGV4dCB9IGZyb20gJy4uLy4uL2NvbnRleHQtbWFuYWdlci9zaGFyZWQvY29udGV4dC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvbnRleHQtbWFuYWdlci9zaGFyZWQvY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IE9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVGaWxlSW1wb3J0U3VjY2VzcyhcclxuICBmaWxlOiBGaWxlLFxyXG4gIGNvbnRleHQ6IERldGFpbGVkQ29udGV4dCxcclxuICBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlXHJcbikge1xyXG4gIGlmIChPYmplY3Qua2V5cyhjb250ZXh0KS5sZW5ndGggPD0gMCkge1xyXG4gICAgaGFuZGxlTm90aGluZ1RvSW1wb3J0RXJyb3IoZmlsZSwgbWVzc2FnZVNlcnZpY2UpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgY29udGV4dFRpdGxlID0gY29tcHV0ZUxheWVyVGl0bGVGcm9tRmlsZShmaWxlKTtcclxuXHJcbiAgYWRkQ29udGV4dFRvQ29udGV4dExpc3QoY29udGV4dCwgY29udGV4dFRpdGxlLCBjb250ZXh0U2VydmljZSk7XHJcblxyXG4gIG1lc3NhZ2VTZXJ2aWNlLnN1Y2Nlc3MoXHJcbiAgICAnaWdvLmNvbnRleHQuY29udGV4dEltcG9ydEV4cG9ydC5pbXBvcnQuc3VjY2Vzcy50ZXh0JyxcclxuICAgICdpZ28uY29udGV4dC5jb250ZXh0SW1wb3J0RXhwb3J0LmltcG9ydC5zdWNjZXNzLnRpdGxlJywgdW5kZWZpbmVkLCB7XHJcbiAgICAgIHZhbHVlOiBjb250ZXh0VGl0bGVcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlRmlsZUltcG9ydEVycm9yKFxyXG4gIGZpbGU6IEZpbGUsXHJcbiAgZXJyb3I6IEVycm9yLFxyXG4gIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuICBzaXplTWI/OiBudW1iZXJcclxuKSB7XHJcbiAgc2l6ZU1iID0gc2l6ZU1iID8gc2l6ZU1iIDogMzA7XHJcbiAgY29uc3QgZXJyTWFwcGluZyA9IHtcclxuICAgICdJbnZhbGlkIGZpbGUnOiBoYW5kbGVJbnZhbGlkRmlsZUltcG9ydEVycm9yLFxyXG4gICAgJ0ZpbGUgaXMgdG9vIGxhcmdlJzogaGFuZGxlU2l6ZUZpbGVJbXBvcnRFcnJvcixcclxuICAgICdGYWlsZWQgdG8gcmVhZCBmaWxlJzogaGFuZGxlVW5yZWFkYmxlRmlsZUltcG9ydEVycm9yXHJcbiAgfTtcclxuICBlcnJNYXBwaW5nW2Vycm9yLm1lc3NhZ2VdKFxyXG4gICAgZmlsZSxcclxuICAgIGVycm9yLFxyXG4gICAgbWVzc2FnZVNlcnZpY2UsXHJcbiAgICBzaXplTWJcclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlSW52YWxpZEZpbGVJbXBvcnRFcnJvcihcclxuICBmaWxlOiBGaWxlLFxyXG4gIGVycm9yOiBFcnJvcixcclxuICBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbikge1xyXG4gIG1lc3NhZ2VTZXJ2aWNlLmVycm9yKFxyXG4gICAgJ2lnby5jb250ZXh0LmNvbnRleHRJbXBvcnRFeHBvcnQuaW1wb3J0LmludmFsaWQudGV4dCcsXHJcbiAgICAnaWdvLmNvbnRleHQuY29udGV4dEltcG9ydEV4cG9ydC5pbXBvcnQuaW52YWxpZC50aXRsZScsXHJcbiAgICB1bmRlZmluZWQsXHJcbiAgICB7XHJcbiAgICAgIHZhbHVlOiBmaWxlLm5hbWUsXHJcbiAgICAgIG1pbWVUeXBlOiBmaWxlLnR5cGVcclxuICAgIH1cclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlU2l6ZUZpbGVJbXBvcnRFcnJvcihcclxuICBmaWxlOiBGaWxlLFxyXG4gIGVycm9yOiBFcnJvcixcclxuICBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgc2l6ZU1iOiBudW1iZXJcclxuKSB7XHJcbiAgbWVzc2FnZVNlcnZpY2UuZXJyb3IoXHJcbiAgICAnaWdvLmNvbnRleHQuY29udGV4dEltcG9ydEV4cG9ydC5pbXBvcnQudG9vTGFyZ2UudGV4dCcsXHJcbiAgICAnaWdvLmNvbnRleHQuY29udGV4dEltcG9ydEV4cG9ydC5pbXBvcnQudG9vTGFyZ2UudGl0bGUnLFxyXG4gICAgdW5kZWZpbmVkLFxyXG4gICAge1xyXG4gICAgICB2YWx1ZTogZmlsZS5uYW1lLFxyXG4gICAgICBzaXplOiBzaXplTWJcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlVW5yZWFkYmxlRmlsZUltcG9ydEVycm9yKFxyXG4gIGZpbGU6IEZpbGUsXHJcbiAgZXJyb3I6IEVycm9yLFxyXG4gIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZVxyXG4pIHtcclxuICBtZXNzYWdlU2VydmljZS5lcnJvcihcclxuICAgICdpZ28uY29udGV4dC5jb250ZXh0SW1wb3J0RXhwb3J0LmltcG9ydC51bnJlYWRhYmxlLnRleHQnLFxyXG4gICAgJ2lnby5jb250ZXh0LmNvbnRleHRJbXBvcnRFeHBvcnQuaW1wb3J0LnVucmVhZGFibGUudGl0bGUnLFxyXG4gICAgdW5kZWZpbmVkLFxyXG4gICAge1xyXG4gICAgICB2YWx1ZTogZmlsZS5uYW1lXHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZU5vdGhpbmdUb0ltcG9ydEVycm9yKFxyXG4gIGZpbGU6IEZpbGUsXHJcbiAgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXHJcbikge1xyXG4gIG1lc3NhZ2VTZXJ2aWNlLmVycm9yKFxyXG4gICAgJ2lnby5jb250ZXh0LmNvbnRleHRJbXBvcnRFeHBvcnQuaW1wb3J0LmVtcHR5LnRleHQnLFxyXG4gICAgJ2lnby5jb250ZXh0LmNvbnRleHRJbXBvcnRFeHBvcnQuaW1wb3J0LmVtcHR5LnRpdGxlJyxcclxuICAgIHVuZGVmaW5lZCxcclxuICAgIHsgdmFsdWU6IGZpbGUubmFtZSB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZENvbnRleHRUb0NvbnRleHRMaXN0KFxyXG4gIGNvbnRleHQ6IERldGFpbGVkQ29udGV4dCxcclxuICBjb250ZXh0VGl0bGU6IHN0cmluZyxcclxuICBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2VcclxuKSB7XHJcbiAgY29udGV4dC50aXRsZSA9IGNvbnRleHRUaXRsZTtcclxuICBjb250ZXh0LmltcG9ydGVkID0gdHJ1ZTtcclxuICBjb250ZXh0U2VydmljZS5jb250ZXh0cyQudmFsdWUub3Vycy51bnNoaWZ0KGNvbnRleHQpO1xyXG4gIGNvbnRleHRTZXJ2aWNlLmNvbnRleHRzJC5uZXh0KGNvbnRleHRTZXJ2aWNlLmNvbnRleHRzJC52YWx1ZSk7XHJcbiAgY29udGV4dFNlcnZpY2UuaW1wb3J0ZWRDb250ZXh0LnVuc2hpZnQoY29udGV4dCk7XHJcbiAgY29udGV4dFNlcnZpY2UubG9hZENvbnRleHQoY29udGV4dC51cmkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZUV4dGVuc2lvbihmaWxlOiBGaWxlKTogc3RyaW5nIHtcclxuICByZXR1cm4gZmlsZS5uYW1lLnNwbGl0KCcuJykucG9wKCkudG9Mb3dlckNhc2UoKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVMYXllclRpdGxlRnJvbUZpbGUoZmlsZTogRmlsZSk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIGZpbGUubmFtZS5zdWJzdHIoMCwgZmlsZS5uYW1lLmxhc3RJbmRleE9mKCcuJykpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRkSW1wb3J0ZWRGZWF0dXJlc1RvTWFwKFxyXG4gIG9sRmVhdHVyZXM6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PltdLFxyXG4gIG1hcDogSWdvTWFwLFxyXG4gIGxheWVyVGl0bGU6IHN0cmluZ1xyXG4pOiBWZWN0b3JMYXllciB7XHJcbiAgY29uc3Qgc291cmNlT3B0aW9uczogRmVhdHVyZURhdGFTb3VyY2VPcHRpb25zICYgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMgPSB7XHJcbiAgICB0eXBlOiAndmVjdG9yJyxcclxuICAgIHF1ZXJ5YWJsZTogdHJ1ZVxyXG4gIH07XHJcbiAgY29uc3Qgc291cmNlID0gbmV3IEZlYXR1cmVEYXRhU291cmNlKHNvdXJjZU9wdGlvbnMpO1xyXG4gIHNvdXJjZS5vbC5hZGRGZWF0dXJlcyhvbEZlYXR1cmVzKTtcclxuICBsZXQgcmFuZG9tU3R5bGU7XHJcbiAgbGV0IGVkaXRhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaWYgKFxyXG4gICAgb2xGZWF0dXJlc1swXS5nZXRLZXlzKCkuaW5jbHVkZXMoJ19zdHlsZScpIHx8XHJcbiAgICBvbEZlYXR1cmVzWzBdLmdldEtleXMoKS5pbmNsdWRlcygnX21hcFRpdGxlJykpIHtcclxuICAgIHJhbmRvbVN0eWxlID0gZmVhdHVyZVJhbmRvbVN0eWxlRnVuY3Rpb24oKTtcclxuICB9IGVsc2Uge1xyXG4gICAgcmFuZG9tU3R5bGUgPSBmZWF0dXJlUmFuZG9tU3R5bGUoKTtcclxuICAgIGVkaXRhYmxlID0gdHJ1ZTtcclxuICB9XHJcbiAgY29uc3QgbGF5ZXIgPSBuZXcgVmVjdG9yTGF5ZXIoe1xyXG4gICAgdGl0bGU6IGxheWVyVGl0bGUsXHJcbiAgICBpc0lnb0ludGVybmFsTGF5ZXI6IHRydWUsXHJcbiAgICBzb3VyY2UsXHJcbiAgICBpZ29TdHlsZTogeyBlZGl0YWJsZSB9LFxyXG4gICAgc3R5bGU6IHJhbmRvbVN0eWxlXHJcbiAgfSk7XHJcbiAgbWFwLmFkZExheWVyKGxheWVyKTtcclxuXHJcbiAgcmV0dXJuIGxheWVyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRkSW1wb3J0ZWRGZWF0dXJlc1N0eWxlZFRvTWFwKFxyXG4gIG9sRmVhdHVyZXM6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PltdLFxyXG4gIG1hcDogSWdvTWFwLFxyXG4gIGxheWVyVGl0bGU6IHN0cmluZyxcclxuICBzdHlsZUxpc3RTZXJ2aWNlOiBTdHlsZUxpc3RTZXJ2aWNlLFxyXG4gIHN0eWxlU2VydmljZTogU3R5bGVTZXJ2aWNlXHJcbik6IFZlY3RvckxheWVyIHtcclxuICBsZXQgc3R5bGU7XHJcbiAgbGV0IGRpc3RhbmNlOiBudW1iZXI7XHJcblxyXG4gIGlmIChcclxuICAgIHN0eWxlTGlzdFNlcnZpY2UuZ2V0U3R5bGVMaXN0KGxheWVyVGl0bGUudG9TdHJpbmcoKSArICcuc3R5bGVCeUF0dHJpYnV0ZScpXHJcbiAgKSB7XHJcbiAgICBjb25zdCBzdHlsZUJ5QXR0cmlidXRlOiBTdHlsZUJ5QXR0cmlidXRlID0gc3R5bGVMaXN0U2VydmljZS5nZXRTdHlsZUxpc3QoXHJcbiAgICAgIGxheWVyVGl0bGUudG9TdHJpbmcoKSArICcuc3R5bGVCeUF0dHJpYnV0ZSdcclxuICAgICk7XHJcblxyXG4gICAgc3R5bGUgPSAoZmVhdHVyZSwgcmVzb2x1dGlvbikgPT4ge1xyXG4gICAgICByZXR1cm4gc3R5bGVTZXJ2aWNlLmNyZWF0ZVN0eWxlQnlBdHRyaWJ1dGUoZmVhdHVyZSwgc3R5bGVCeUF0dHJpYnV0ZSwgcmVzb2x1dGlvbik7XHJcbiAgICB9O1xyXG4gIH0gZWxzZSBpZiAoXHJcbiAgICBzdHlsZUxpc3RTZXJ2aWNlLmdldFN0eWxlTGlzdChsYXllclRpdGxlLnRvU3RyaW5nKCkgKyAnLmNsdXN0ZXJTdHlsZScpXHJcbiAgKSB7XHJcbiAgICBjb25zdCBjbHVzdGVyUGFyYW06IENsdXN0ZXJQYXJhbSA9IHN0eWxlTGlzdFNlcnZpY2UuZ2V0U3R5bGVMaXN0KFxyXG4gICAgICBsYXllclRpdGxlLnRvU3RyaW5nKCkgKyAnLmNsdXN0ZXJQYXJhbSdcclxuICAgICk7XHJcbiAgICBkaXN0YW5jZSA9IHN0eWxlTGlzdFNlcnZpY2UuZ2V0U3R5bGVMaXN0KFxyXG4gICAgICBsYXllclRpdGxlLnRvU3RyaW5nKCkgKyAnLmRpc3RhbmNlJ1xyXG4gICAgKTtcclxuXHJcbiAgICBzdHlsZSA9IChmZWF0dXJlLCByZXNvbHV0aW9uKSA9PiB7XHJcbiAgICAgIGNvbnN0IGJhc2VTdHlsZSA9IHN0eWxlU2VydmljZS5jcmVhdGVTdHlsZShcclxuICAgICAgICBzdHlsZUxpc3RTZXJ2aWNlLmdldFN0eWxlTGlzdChsYXllclRpdGxlLnRvU3RyaW5nKCkgKyAnLmNsdXN0ZXJTdHlsZScpLCBmZWF0dXJlLCByZXNvbHV0aW9uXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiBzdHlsZVNlcnZpY2UuY3JlYXRlQ2x1c3RlclN0eWxlKGZlYXR1cmUsIHJlc29sdXRpb24sIGNsdXN0ZXJQYXJhbSwgYmFzZVN0eWxlKTtcclxuICAgIH07XHJcbiAgfSBlbHNlIGlmIChzdHlsZUxpc3RTZXJ2aWNlLmdldFN0eWxlTGlzdChsYXllclRpdGxlLnRvU3RyaW5nKCkgKyAnLnN0eWxlJykpIHtcclxuICAgIHN0eWxlID0gKGZlYXR1cmUsIHJlc29sdXRpb24pID0+IHN0eWxlU2VydmljZS5jcmVhdGVTdHlsZShcclxuICAgICAgc3R5bGVMaXN0U2VydmljZS5nZXRTdHlsZUxpc3QobGF5ZXJUaXRsZS50b1N0cmluZygpICsgJy5zdHlsZScpLCBmZWF0dXJlLCByZXNvbHV0aW9uXHJcbiAgICApO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBzdHlsZSA9IChmZWF0dXJlLCByZXNvbHV0aW9uKSA9PiBzdHlsZVNlcnZpY2UuY3JlYXRlU3R5bGUoXHJcbiAgICAgIHN0eWxlTGlzdFNlcnZpY2UuZ2V0U3R5bGVMaXN0KCdkZWZhdWx0LnN0eWxlJyksIGZlYXR1cmUsIHJlc29sdXRpb25cclxuICAgICk7XHJcbiAgfVxyXG4gIGxldCBzb3VyY2U7XHJcblxyXG4gIGlmIChzdHlsZUxpc3RTZXJ2aWNlLmdldFN0eWxlTGlzdChsYXllclRpdGxlLnRvU3RyaW5nKCkgKyAnLmNsdXN0ZXJTdHlsZScpKSB7XHJcbiAgICBjb25zdCBzb3VyY2VPcHRpb25zOiBDbHVzdGVyRGF0YVNvdXJjZU9wdGlvbnMgJlxyXG4gICAgICBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucyA9IHtcclxuICAgICAgZGlzdGFuY2UsXHJcbiAgICAgIHR5cGU6ICdjbHVzdGVyJyxcclxuICAgICAgcXVlcnlhYmxlOiB0cnVlXHJcbiAgICB9O1xyXG4gICAgc291cmNlID0gbmV3IENsdXN0ZXJEYXRhU291cmNlKHNvdXJjZU9wdGlvbnMpO1xyXG4gICAgc291cmNlLm9sLnNvdXJjZS5hZGRGZWF0dXJlcyhvbEZlYXR1cmVzKTtcclxuICB9IGVsc2Uge1xyXG4gICAgY29uc3Qgc291cmNlT3B0aW9uczogRmVhdHVyZURhdGFTb3VyY2VPcHRpb25zICZcclxuICAgICAgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMgPSB7XHJcbiAgICAgIHR5cGU6ICd2ZWN0b3InLFxyXG4gICAgICBxdWVyeWFibGU6IHRydWVcclxuICAgIH07XHJcbiAgICBzb3VyY2UgPSBuZXcgRmVhdHVyZURhdGFTb3VyY2Uoc291cmNlT3B0aW9ucyk7XHJcbiAgICBzb3VyY2Uub2wuYWRkRmVhdHVyZXMob2xGZWF0dXJlcyk7XHJcbiAgfVxyXG5cclxuICBjb25zdCBsYXllciA9IG5ldyBWZWN0b3JMYXllcih7XHJcbiAgICB0aXRsZTogbGF5ZXJUaXRsZSxcclxuICAgIGlzSWdvSW50ZXJuYWxMYXllcjogdHJ1ZSxcclxuICAgIHNvdXJjZSxcclxuICAgIHN0eWxlXHJcbiAgfSk7XHJcbiAgbWFwLmFkZExheWVyKGxheWVyKTtcclxuXHJcbiAgcmV0dXJuIGxheWVyO1xyXG59XHJcbiJdfQ==
@@ -1,50 +0,0 @@
1
- import { Output, EventEmitter, Directive, Self, HostListener } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "./context-edit.component";
4
- import * as i2 from "../shared/context.service";
5
- import * as i3 from "@igo2/core";
6
- export class ContextEditBindingDirective {
7
- constructor(component, contextService, messageService) {
8
- this.contextService = contextService;
9
- this.messageService = messageService;
10
- this.submitSuccessed = new EventEmitter();
11
- this.component = component;
12
- }
13
- onEdit(context) {
14
- const id = this.component.context.id;
15
- this.contextService.update(id, context).subscribe(() => {
16
- this.messageService.success('igo.context.contextManager.dialog.saveMsg', 'igo.context.contextManager.dialog.saveTitle', undefined, {
17
- value: context.title || this.component.context.title
18
- });
19
- this.contextService.setEditedContext(undefined);
20
- this.submitSuccessed.emit(context);
21
- });
22
- }
23
- ngOnInit() {
24
- this.editedContext$$ = this.contextService.editedContext$.subscribe(context => this.handleEditedContextChange(context));
25
- }
26
- ngOnDestroy() {
27
- this.editedContext$$.unsubscribe();
28
- }
29
- handleEditedContextChange(context) {
30
- this.component.context = context;
31
- }
32
- }
33
- ContextEditBindingDirective.ɵfac = function ContextEditBindingDirective_Factory(t) { return new (t || ContextEditBindingDirective)(i0.ɵɵdirectiveInject(i1.ContextEditComponent, 2), i0.ɵɵdirectiveInject(i2.ContextService), i0.ɵɵdirectiveInject(i3.MessageService)); };
34
- ContextEditBindingDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: ContextEditBindingDirective, selectors: [["", "igoContextEditBinding", ""]], hostBindings: function ContextEditBindingDirective_HostBindings(rf, ctx) { if (rf & 1) {
35
- i0.ɵɵlistener("submitForm", function ContextEditBindingDirective_submitForm_HostBindingHandler($event) { return ctx.onEdit($event); });
36
- } }, outputs: { submitSuccessed: "submitSuccessed" } });
37
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ContextEditBindingDirective, [{
38
- type: Directive,
39
- args: [{
40
- selector: '[igoContextEditBinding]'
41
- }]
42
- }], function () { return [{ type: i1.ContextEditComponent, decorators: [{
43
- type: Self
44
- }] }, { type: i2.ContextService }, { type: i3.MessageService }]; }, { submitSuccessed: [{
45
- type: Output
46
- }], onEdit: [{
47
- type: HostListener,
48
- args: ['submitForm', ['$event']]
49
- }] }); })();
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1lZGl0LWJpbmRpbmcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29udGV4dC9zcmMvbGliL2NvbnRleHQtbWFuYWdlci9jb250ZXh0LWVkaXQvY29udGV4dC1lZGl0LWJpbmRpbmcuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsRUFDVCxJQUFJLEVBR0osWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDOzs7OztBQVl2QixNQUFNLE9BQU8sMkJBQTJCO0lBc0J0QyxZQUNVLFNBQStCLEVBQy9CLGNBQThCLEVBQzlCLGNBQThCO1FBRDlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFyQjlCLG9CQUFlLEdBQTBCLElBQUksWUFBWSxFQUFFLENBQUM7UUF1QnBFLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFyQkQsTUFBTSxDQUFDLE9BQWdCO1FBQ3JCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNyRCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FDekIsMkNBQTJDLEVBQzNDLDZDQUE2QyxFQUM3QyxTQUFTLEVBQ1g7Z0JBQ0UsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSzthQUNyRCxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQVVELFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FDakUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQ25ELENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVPLHlCQUF5QixDQUFDLE9BQXdCO1FBQ3hELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUNuQyxDQUFDOztzR0ExQ1UsMkJBQTJCOzhFQUEzQiwyQkFBMkI7d0hBQTNCLGtCQUFjOzt1RkFBZCwyQkFBMkI7Y0FIdkMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSx5QkFBeUI7YUFDcEM7O3NCQXdCSSxJQUFJO2tGQW5CRyxlQUFlO2tCQUF4QixNQUFNO1lBR1AsTUFBTTtrQkFETCxZQUFZO21CQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBEaXJlY3RpdmUsXHJcbiAgU2VsZixcclxuICBPbkluaXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIEhvc3RMaXN0ZW5lclxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBDb250ZXh0LCBEZXRhaWxlZENvbnRleHQgfSBmcm9tICcuLi9zaGFyZWQvY29udGV4dC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb250ZXh0RWRpdENvbXBvbmVudCB9IGZyb20gJy4vY29udGV4dC1lZGl0LmNvbXBvbmVudCc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tpZ29Db250ZXh0RWRpdEJpbmRpbmddJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29udGV4dEVkaXRCaW5kaW5nRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgY29tcG9uZW50OiBDb250ZXh0RWRpdENvbXBvbmVudDtcclxuICBwcml2YXRlIGVkaXRlZENvbnRleHQkJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBAT3V0cHV0KCkgc3VibWl0U3VjY2Vzc2VkOiBFdmVudEVtaXR0ZXI8Q29udGV4dD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3N1Ym1pdEZvcm0nLCBbJyRldmVudCddKVxyXG4gIG9uRWRpdChjb250ZXh0OiBDb250ZXh0KSB7XHJcbiAgICBjb25zdCBpZCA9IHRoaXMuY29tcG9uZW50LmNvbnRleHQuaWQ7XHJcbiAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLnVwZGF0ZShpZCwgY29udGV4dCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKFxyXG4gICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5kaWFsb2cuc2F2ZU1zZycsXHJcbiAgICAgICAgJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLmRpYWxvZy5zYXZlVGl0bGUnLFxyXG4gICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAge1xyXG4gICAgICAgIHZhbHVlOiBjb250ZXh0LnRpdGxlIHx8IHRoaXMuY29tcG9uZW50LmNvbnRleHQudGl0bGVcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2Uuc2V0RWRpdGVkQ29udGV4dCh1bmRlZmluZWQpO1xyXG4gICAgICB0aGlzLnN1Ym1pdFN1Y2Nlc3NlZC5lbWl0KGNvbnRleHQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBTZWxmKCkgY29tcG9uZW50OiBDb250ZXh0RWRpdENvbXBvbmVudCxcclxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmVkaXRlZENvbnRleHQkJCA9IHRoaXMuY29udGV4dFNlcnZpY2UuZWRpdGVkQ29udGV4dCQuc3Vic2NyaWJlKFxyXG4gICAgICBjb250ZXh0ID0+IHRoaXMuaGFuZGxlRWRpdGVkQ29udGV4dENoYW5nZShjb250ZXh0KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5lZGl0ZWRDb250ZXh0JCQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlRWRpdGVkQ29udGV4dENoYW5nZShjb250ZXh0OiBEZXRhaWxlZENvbnRleHQpIHtcclxuICAgIHRoaXMuY29tcG9uZW50LmNvbnRleHQgPSBjb250ZXh0O1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,46 +0,0 @@
1
- import { Component, Input, Output, EventEmitter } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "../context-form/context-form.component";
5
- import * as i3 from "@ngx-translate/core";
6
- function ContextEditComponent_igo_context_form_0_Template(rf, ctx) { if (rf & 1) {
7
- const _r2 = i0.ɵɵgetCurrentView();
8
- i0.ɵɵelementStart(0, "igo-context-form", 1);
9
- i0.ɵɵlistener("submitForm", function ContextEditComponent_igo_context_form_0_Template_igo_context_form_submitForm_0_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.submitForm.emit($event)); });
10
- i0.ɵɵpipe(1, "translate");
11
- i0.ɵɵelementEnd();
12
- } if (rf & 2) {
13
- const ctx_r0 = i0.ɵɵnextContext();
14
- i0.ɵɵproperty("btnSubmitText", i0.ɵɵpipeBind1(1, 2, "igo.context.contextManager.save"))("context", ctx_r0.context);
15
- } }
16
- export class ContextEditComponent {
17
- constructor(cd) {
18
- this.cd = cd;
19
- this.submitForm = new EventEmitter();
20
- }
21
- get context() {
22
- return this._context;
23
- }
24
- set context(value) {
25
- this._context = value;
26
- this.refresh();
27
- }
28
- refresh() {
29
- this.cd.detectChanges();
30
- }
31
- }
32
- ContextEditComponent.ɵfac = function ContextEditComponent_Factory(t) { return new (t || ContextEditComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
33
- ContextEditComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ContextEditComponent, selectors: [["igo-context-edit"]], inputs: { context: "context" }, outputs: { submitForm: "submitForm" }, decls: 1, vars: 1, consts: [[3, "btnSubmitText", "context", "submitForm", 4, "ngIf"], [3, "btnSubmitText", "context", "submitForm"]], template: function ContextEditComponent_Template(rf, ctx) { if (rf & 1) {
34
- i0.ɵɵtemplate(0, ContextEditComponent_igo_context_form_0_Template, 2, 4, "igo-context-form", 0);
35
- } if (rf & 2) {
36
- i0.ɵɵproperty("ngIf", ctx.context);
37
- } }, dependencies: [i1.NgIf, i2.ContextFormComponent, i3.TranslatePipe], encapsulation: 2 });
38
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ContextEditComponent, [{
39
- type: Component,
40
- args: [{ selector: 'igo-context-edit', template: "<igo-context-form *ngIf=\"context\"\r\n [btnSubmitText]=\"'igo.context.contextManager.save' | translate\"\r\n [context]=\"context\"\r\n (submitForm)=\"submitForm.emit($event)\">\r\n</igo-context-form>\r\n" }]
41
- }], function () { return [{ type: i0.ChangeDetectorRef }]; }, { context: [{
42
- type: Input
43
- }], submitForm: [{
44
- type: Output
45
- }] }); })();
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1lZGl0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRleHQvc3JjL2xpYi9jb250ZXh0LW1hbmFnZXIvY29udGV4dC1lZGl0L2NvbnRleHQtZWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZXh0L3NyYy9saWIvY29udGV4dC1tYW5hZ2VyL2NvbnRleHQtZWRpdC9jb250ZXh0LWVkaXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBcUIsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7SUNBMUYsMkNBRzBDO0lBQXZDLHdNQUFjLGVBQUEsOEJBQXVCLENBQUEsSUFBQzs7SUFDekMsaUJBQW1COzs7SUFIaEIsdUZBQStELDJCQUFBOztBRE9sRSxNQUFNLE9BQU8sb0JBQW9CO0lBYS9CLFlBQW9CLEVBQXFCO1FBQXJCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBRi9CLGVBQVUsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUVyQixDQUFDO0lBWjdDLElBQ0ksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsS0FBYztRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQU9ELE9BQU87UUFDTCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzFCLENBQUM7O3dGQWpCVSxvQkFBb0I7dUVBQXBCLG9CQUFvQjtRQ1JqQywrRkFJbUI7O1FBSkEsa0NBQWE7O3VGRFFuQixvQkFBb0I7Y0FKaEMsU0FBUzsyQkFDRSxrQkFBa0I7b0VBS3hCLE9BQU87a0JBRFYsS0FBSztZQVVJLFVBQVU7a0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICcuLi9zaGFyZWQvY29udGV4dC5pbnRlcmZhY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZ28tY29udGV4dC1lZGl0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29udGV4dC1lZGl0LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29udGV4dEVkaXRDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGNvbnRleHQoKTogQ29udGV4dCB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udGV4dDtcclxuICB9XHJcbiAgc2V0IGNvbnRleHQodmFsdWU6IENvbnRleHQpIHtcclxuICAgIHRoaXMuX2NvbnRleHQgPSB2YWx1ZTtcclxuICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gIH1cclxuICBwcml2YXRlIF9jb250ZXh0OiBDb250ZXh0O1xyXG5cclxuICBAT3V0cHV0KCkgc3VibWl0Rm9ybTogRXZlbnRFbWl0dGVyPENvbnRleHQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cclxuXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxufVxyXG4iLCI8aWdvLWNvbnRleHQtZm9ybSAqbmdJZj1cImNvbnRleHRcIlxyXG4gICBbYnRuU3VibWl0VGV4dF09XCInaWdvLmNvbnRleHQuY29udGV4dE1hbmFnZXIuc2F2ZScgfCB0cmFuc2xhdGVcIlxyXG4gICBbY29udGV4dF09XCJjb250ZXh0XCJcclxuICAgKHN1Ym1pdEZvcm0pPVwic3VibWl0Rm9ybS5lbWl0KCRldmVudClcIj5cclxuPC9pZ28tY29udGV4dC1mb3JtPlxyXG4iXX0=
@@ -1,143 +0,0 @@
1
- import { Component, Input, Output, EventEmitter } from '@angular/core';
2
- import { ObjectUtils, Clipboard } from '@igo2/utils';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/forms";
5
- import * as i2 from "@igo2/core";
6
- import * as i3 from "@angular/common";
7
- import * as i4 from "@angular/material/form-field";
8
- import * as i5 from "@angular/material/input";
9
- import * as i6 from "@angular/material/icon";
10
- import * as i7 from "@angular/material/button";
11
- import * as i8 from "@angular/material/tooltip";
12
- import * as i9 from "@ngx-translate/core";
13
- function ContextFormComponent_span_8_Template(rf, ctx) { if (rf & 1) {
14
- i0.ɵɵelementStart(0, "span", 11);
15
- i0.ɵɵtext(1);
16
- i0.ɵɵelementEnd();
17
- } if (rf & 2) {
18
- const ctx_r0 = i0.ɵɵnextContext();
19
- i0.ɵɵadvance(1);
20
- i0.ɵɵtextInterpolate1("", ctx_r0.prefix, "-");
21
- } }
22
- export class ContextFormComponent {
23
- constructor(formBuilder, messageService) {
24
- this.formBuilder = formBuilder;
25
- this.messageService = messageService;
26
- this._disabled = false;
27
- // TODO: replace any by ContextOptions or Context
28
- this.submitForm = new EventEmitter();
29
- this.clone = new EventEmitter();
30
- this.delete = new EventEmitter();
31
- }
32
- get btnSubmitText() {
33
- return this._btnSubmitText;
34
- }
35
- set btnSubmitText(value) {
36
- this._btnSubmitText = value;
37
- }
38
- get context() {
39
- return this._context;
40
- }
41
- set context(value) {
42
- this._context = value;
43
- this.buildForm();
44
- }
45
- get disabled() {
46
- return this._disabled;
47
- }
48
- set disabled(value) {
49
- this._disabled = value;
50
- }
51
- ngOnInit() {
52
- this.buildForm();
53
- }
54
- handleFormSubmit(value) {
55
- let inputs = Object.assign({}, value);
56
- inputs = ObjectUtils.removeNull(inputs);
57
- inputs.uri = inputs.uri.replace(' ', '');
58
- if (inputs.uri) {
59
- inputs.uri = this.prefix + '-' + inputs.uri;
60
- }
61
- else {
62
- inputs.uri = this.prefix;
63
- }
64
- this.submitForm.emit(inputs);
65
- }
66
- copyTextToClipboard() {
67
- const text = this.prefix + '-' + this.form.value.uri.replace(' ', '');
68
- const successful = Clipboard.copy(text);
69
- if (successful) {
70
- this.messageService.success('igo.context.contextManager.dialog.copyMsg', 'igo.context.contextManager.dialog.copyTitle');
71
- }
72
- }
73
- buildForm() {
74
- const context = this.context || {};
75
- const uriSplit = context.uri.split('-');
76
- this.prefix = uriSplit.shift();
77
- const uri = uriSplit.join('-');
78
- this.form = this.formBuilder.group({
79
- title: [context.title],
80
- uri: [uri || ' ']
81
- });
82
- }
83
- }
84
- ContextFormComponent.ɵfac = function ContextFormComponent_Factory(t) { return new (t || ContextFormComponent)(i0.ɵɵdirectiveInject(i1.UntypedFormBuilder), i0.ɵɵdirectiveInject(i2.MessageService)); };
85
- ContextFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ContextFormComponent, selectors: [["igo-context-form"]], inputs: { btnSubmitText: "btnSubmitText", context: "context", disabled: "disabled" }, outputs: { submitForm: "submitForm", clone: "clone", delete: "delete" }, decls: 19, vars: 18, consts: [[1, "igo-form", 3, "formGroup", "ngSubmit"], [1, "full-width"], ["matInput", "", "required", "", "maxlength", "128", "formControlName", "title", 3, "placeholder"], ["id", "uriInput", 1, "full-width"], ["class", "prefix", 4, "ngIf"], [1, "fieldWrapper"], ["matInput", "", "maxlength", "64", "floatLabel", "always", "formControlName", "uri", 3, "placeholder"], ["id", "copyButton", "type", "button", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "primary", 3, "matTooltip", "click"], ["svgIcon", "content-copy"], [1, "igo-form-button-group"], ["mat-raised-button", "", "type", "submit", 3, "disabled"], [1, "prefix"]], template: function ContextFormComponent_Template(rf, ctx) { if (rf & 1) {
86
- i0.ɵɵelementStart(0, "form", 0);
87
- i0.ɵɵlistener("ngSubmit", function ContextFormComponent_Template_form_ngSubmit_0_listener() { return ctx.handleFormSubmit(ctx.form.value); });
88
- i0.ɵɵelementStart(1, "mat-form-field", 1);
89
- i0.ɵɵelement(2, "input", 2);
90
- i0.ɵɵpipe(3, "translate");
91
- i0.ɵɵelementStart(4, "mat-error");
92
- i0.ɵɵtext(5);
93
- i0.ɵɵpipe(6, "translate");
94
- i0.ɵɵelementEnd()();
95
- i0.ɵɵelementStart(7, "mat-form-field", 3);
96
- i0.ɵɵtemplate(8, ContextFormComponent_span_8_Template, 2, 1, "span", 4);
97
- i0.ɵɵelementStart(9, "span", 5);
98
- i0.ɵɵelement(10, "input", 6);
99
- i0.ɵɵpipe(11, "translate");
100
- i0.ɵɵelementEnd()();
101
- i0.ɵɵelementStart(12, "button", 7);
102
- i0.ɵɵlistener("click", function ContextFormComponent_Template_button_click_12_listener() { return ctx.copyTextToClipboard(); });
103
- i0.ɵɵpipe(13, "translate");
104
- i0.ɵɵelement(14, "mat-icon", 8);
105
- i0.ɵɵelementEnd();
106
- i0.ɵɵelementStart(15, "div", 9)(16, "button", 10);
107
- i0.ɵɵtext(17);
108
- i0.ɵɵpipe(18, "translate");
109
- i0.ɵɵelementEnd()()();
110
- } if (rf & 2) {
111
- i0.ɵɵproperty("formGroup", ctx.form);
112
- i0.ɵɵadvance(2);
113
- i0.ɵɵproperty("placeholder", i0.ɵɵpipeBind1(3, 8, "igo.context.contextManager.form.title"));
114
- i0.ɵɵadvance(3);
115
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 10, "igo.context.contextManager.form.titleRequired"), " ");
116
- i0.ɵɵadvance(3);
117
- i0.ɵɵproperty("ngIf", ctx.prefix);
118
- i0.ɵɵadvance(2);
119
- i0.ɵɵproperty("placeholder", i0.ɵɵpipeBind1(11, 12, "igo.context.contextManager.form.uri"));
120
- i0.ɵɵadvance(2);
121
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(13, 14, "igo.context.contextManager.form.copy"));
122
- i0.ɵɵadvance(4);
123
- i0.ɵɵproperty("disabled", !ctx.form.valid || ctx.disabled);
124
- i0.ɵɵadvance(1);
125
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(18, 16, "igo.context.contextManager.form.edit"), " ");
126
- } }, dependencies: [i3.NgIf, i1.ɵNgNoValidate, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.RequiredValidator, i1.MaxLengthValidator, i1.FormGroupDirective, i1.FormControlName, i4.MatError, i4.MatFormField, i5.MatInput, i6.MatIcon, i7.MatButton, i8.MatTooltip, i9.TranslatePipe], styles: ["form[_ngcontent-%COMP%]{margin:10px}.full-width[_ngcontent-%COMP%]{width:100%}#uriInput[_ngcontent-%COMP%] .fieldWrapper[_ngcontent-%COMP%]{display:block;overflow:hidden}#uriInput[_ngcontent-%COMP%] .prefix[_ngcontent-%COMP%]{float:left}#copyButton[_ngcontent-%COMP%]{width:24px;float:right;position:relative;top:-58px;left:5px}"] });
127
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ContextFormComponent, [{
128
- type: Component,
129
- args: [{ selector: 'igo-context-form', template: "<form class=\"igo-form\" [formGroup]=\"form\"\r\n (ngSubmit)=\"handleFormSubmit(form.value)\">\r\n\r\n <mat-form-field class=\"full-width\">\r\n <input matInput required\r\n maxlength=\"128\"\r\n [placeholder]=\"'igo.context.contextManager.form.title' | translate\"\r\n formControlName=\"title\">\r\n <mat-error>\r\n {{ 'igo.context.contextManager.form.titleRequired' | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <mat-form-field id=\"uriInput\" class=\"full-width\">\r\n <span *ngIf=\"prefix\" class=\"prefix\">{{prefix}}-</span>\r\n <span class=\"fieldWrapper\">\r\n <input matInput\r\n maxlength=\"64\"\r\n floatLabel = \"always\"\r\n [placeholder]=\"'igo.context.contextManager.form.uri' | translate\"\r\n formControlName=\"uri\">\r\n </span>\r\n </mat-form-field>\r\n\r\n <button\r\n id=\"copyButton\"\r\n type=\"button\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.context.contextManager.form.copy' | translate\"\r\n color=\"primary\"\r\n (click)=\"copyTextToClipboard()\">\r\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\r\n </button>\r\n\r\n <div class=\"igo-form-button-group\">\r\n <button\r\n mat-raised-button\r\n type=\"submit\"\r\n [disabled]=\"!form.valid || disabled\">\r\n {{ 'igo.context.contextManager.form.edit' | translate }}\r\n </button>\r\n </div>\r\n\r\n</form>\r\n", styles: ["form{margin:10px}.full-width{width:100%}#uriInput .fieldWrapper{display:block;overflow:hidden}#uriInput .prefix{float:left}#copyButton{width:24px;float:right;position:relative;top:-58px;left:5px}\n"] }]
130
- }], function () { return [{ type: i1.UntypedFormBuilder }, { type: i2.MessageService }]; }, { btnSubmitText: [{
131
- type: Input
132
- }], context: [{
133
- type: Input
134
- }], disabled: [{
135
- type: Input
136
- }], submitForm: [{
137
- type: Output
138
- }], clone: [{
139
- type: Output
140
- }], delete: [{
141
- type: Output
142
- }] }); })();
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRleHQvc3JjL2xpYi9jb250ZXh0LW1hbmFnZXIvY29udGV4dC1mb3JtL2NvbnRleHQtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZXh0L3NyYy9saWIvY29udGV4dC1tYW5hZ2VyL2NvbnRleHQtZm9ybS9jb250ZXh0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUcvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7Ozs7O0lDV2pELGdDQUFvQztJQUFBLFlBQVc7SUFBQSxpQkFBTzs7O0lBQWxCLGVBQVc7SUFBWCw2Q0FBVzs7QURGbkQsTUFBTSxPQUFPLG9CQUFvQjtJQXFDL0IsWUFDVSxXQUErQixFQUMvQixjQUE4QjtRQUQ5QixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBVGhDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFMUIsaURBQWlEO1FBQ3ZDLGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuRCxVQUFLLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDOUMsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBS3RELENBQUM7SUFwQ0osSUFDSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFDRCxJQUFJLGFBQWEsQ0FBQyxLQUFhO1FBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFHRCxJQUNJ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TTlCLGVBQW1FO1FBQW5FLDJGQUFtRTtRQUcxRSxlQUNEO1FBREMsdUdBQ0Q7UUFJUSxlQUFZO1FBQVosaUNBQVk7UUFLWixlQUFpRTtRQUFqRSwyRkFBaUU7UUFXeEUsZUFBaUU7UUFBakUsMkZBQWlFO1FBVS9ELGVBQW9DO1FBQXBDLDBEQUFvQztRQUNwQyxlQUNGO1FBREUsK0ZBQ0Y7O3VGRDlCUyxvQkFBb0I7Y0FMaEMsU0FBUzsyQkFDRSxrQkFBa0I7a0dBU3hCLGFBQWE7a0JBRGhCLEtBQUs7WUFVRixPQUFPO2tCQURWLEtBQUs7WUFXRixRQUFRO2tCQURYLEtBQUs7WUFVSSxVQUFVO2tCQUFuQixNQUFNO1lBQ0csS0FBSztrQkFBZCxNQUFNO1lBQ0csTUFBTTtrQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBPYmplY3RVdGlscywgQ2xpcGJvYXJkIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSAnLi4vc2hhcmVkL2NvbnRleHQuaW50ZXJmYWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWdvLWNvbnRleHQtZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnRleHQtZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29udGV4dC1mb3JtLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENvbnRleHRGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwdWJsaWMgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuICBwdWJsaWMgcHJlZml4OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGJ0blN1Ym1pdFRleHQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9idG5TdWJtaXRUZXh0O1xyXG4gIH1cclxuICBzZXQgYnRuU3VibWl0VGV4dCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9idG5TdWJtaXRUZXh0ID0gdmFsdWU7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2J0blN1Ym1pdFRleHQ6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgY29udGV4dCgpOiBDb250ZXh0IHtcclxuICAgIHJldHVybiB0aGlzLl9jb250ZXh0O1xyXG4gIH1cclxuICBzZXQgY29udGV4dCh2YWx1ZTogQ29udGV4dCkge1xyXG4gICAgdGhpcy5fY29udGV4dCA9IHZhbHVlO1xyXG4gICAgdGhpcy5idWlsZEZvcm0oKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfY29udGV4dDogQ29udGV4dDtcclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XHJcbiAgfVxyXG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgLy8gVE9ETzogcmVwbGFjZSBhbnkgYnkgQ29udGV4dE9wdGlvbnMgb3IgQ29udGV4dFxyXG4gIEBPdXRwdXQoKSBzdWJtaXRGb3JtOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2xvbmU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkZWxldGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYnVpbGRGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRm9ybVN1Ym1pdCh2YWx1ZSkge1xyXG4gICAgbGV0IGlucHV0cyA9IE9iamVjdC5hc3NpZ24oe30sIHZhbHVlKTtcclxuICAgIGlucHV0cyA9IE9iamVjdFV0aWxzLnJlbW92ZU51bGwoaW5wdXRzKTtcclxuICAgIGlucHV0cy51cmkgPSBpbnB1dHMudXJpLnJlcGxhY2UoJyAnLCAnJyk7XHJcbiAgICBpZiAoaW5wdXRzLnVyaSkge1xyXG4gICAgICBpbnB1dHMudXJpID0gdGhpcy5wcmVmaXggKyAnLScgKyBpbnB1dHMudXJpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaW5wdXRzLnVyaSA9IHRoaXMucHJlZml4O1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdWJtaXRGb3JtLmVtaXQoaW5wdXRzKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb3B5VGV4dFRvQ2xpcGJvYXJkKCkge1xyXG4gICAgY29uc3QgdGV4dCA9IHRoaXMucHJlZml4ICsgJy0nICsgdGhpcy5mb3JtLnZhbHVlLnVyaS5yZXBsYWNlKCcgJywgJycpO1xyXG4gICAgY29uc3Qgc3VjY2Vzc2Z1bCA9IENsaXBib2FyZC5jb3B5KHRleHQpO1xyXG4gICAgaWYgKHN1Y2Nlc3NmdWwpIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKCdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5kaWFsb2cuY29weU1zZycsICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5kaWFsb2cuY29weVRpdGxlJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkRm9ybSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbnRleHQ6IGFueSA9IHRoaXMuY29udGV4dCB8fCB7fTtcclxuXHJcbiAgICBjb25zdCB1cmlTcGxpdCA9IGNvbnRleHQudXJpLnNwbGl0KCctJyk7XHJcbiAgICB0aGlzLnByZWZpeCA9IHVyaVNwbGl0LnNoaWZ0KCk7XHJcbiAgICBjb25zdCB1cmkgPSB1cmlTcGxpdC5qb2luKCctJyk7XHJcblxyXG4gICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIHRpdGxlOiBbY29udGV4dC50aXRsZV0sXHJcbiAgICAgIHVyaTogW3VyaSB8fCAnICddXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGZvcm0gY2xhc3M9XCJpZ28tZm9ybVwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiXHJcbiAgKG5nU3VibWl0KT1cImhhbmRsZUZvcm1TdWJtaXQoZm9ybS52YWx1ZSlcIj5cclxuXHJcbiAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZnVsbC13aWR0aFwiPlxyXG4gICAgPGlucHV0IG1hdElucHV0IHJlcXVpcmVkXHJcbiAgICAgICAgICAgbWF4bGVuZ3RoPVwiMTI4XCJcclxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLmZvcm0udGl0bGUnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiPlxyXG4gICA8bWF0LWVycm9yPlxyXG4gICAge3sgJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLmZvcm0udGl0bGVSZXF1aXJlZCcgfCB0cmFuc2xhdGUgfX1cclxuICAgPC9tYXQtZXJyb3I+XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgPG1hdC1mb3JtLWZpZWxkIGlkPVwidXJpSW5wdXRcIiBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cclxuICAgIDxzcGFuICpuZ0lmPVwicHJlZml4XCIgY2xhc3M9XCJwcmVmaXhcIj57e3ByZWZpeH19LTwvc3Bhbj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZmllbGRXcmFwcGVyXCI+XHJcbiAgICAgIDxpbnB1dCBtYXRJbnB1dFxyXG4gICAgICAgICAgIG1heGxlbmd0aD1cIjY0XCJcclxuICAgICAgICAgICBmbG9hdExhYmVsID0gXCJhbHdheXNcIlxyXG4gICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInaWdvLmNvbnRleHQuY29udGV4dE1hbmFnZXIuZm9ybS51cmknIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ1cmlcIj5cclxuICAgIDwvc3Bhbj5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICA8YnV0dG9uXHJcbiAgICBpZD1cImNvcHlCdXR0b25cIlxyXG4gICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICBtYXQtaWNvbi1idXR0b25cclxuICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXHJcbiAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICAgIFttYXRUb29sdGlwXT1cIidpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5mb3JtLmNvcHknIHwgdHJhbnNsYXRlXCJcclxuICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAoY2xpY2spPVwiY29weVRleHRUb0NsaXBib2FyZCgpXCI+XHJcbiAgICA8bWF0LWljb24gc3ZnSWNvbj1cImNvbnRlbnQtY29weVwiPjwvbWF0LWljb24+XHJcbiAgPC9idXR0b24+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJpZ28tZm9ybS1idXR0b24tZ3JvdXBcIj5cclxuICAgIDxidXR0b25cclxuICAgICAgbWF0LXJhaXNlZC1idXR0b25cclxuICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCIhZm9ybS52YWxpZCB8fCBkaXNhYmxlZFwiPlxyXG4gICAgICB7eyAnaWdvLmNvbnRleHQuY29udGV4dE1hbmFnZXIuZm9ybS5lZGl0JyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Zvcm0+XHJcbiJdfQ==