@eqproject/eqp-dynamic-module 2.11.2 → 2.11.5

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 (32) hide show
  1. package/USERGUIDE.md +437 -437
  2. package/esm2020/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.mjs +143 -13
  3. package/esm2020/lib/components/private/add-form-field/add-form-field.component.mjs +76 -3
  4. package/esm2020/lib/components/private/add-formula-field/add-formula-field.component.mjs +74 -13
  5. package/esm2020/lib/components/private/dynamic-module-field-extra-fix/dynamic-module-field-extra-fix.component.mjs +14 -2
  6. package/esm2020/lib/components/private/field-graphics-editor/field-graphics-editor.component.mjs +735 -0
  7. package/esm2020/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.mjs +16 -15
  8. package/esm2020/lib/components/private/form-records/list-form-record/list-form-record.component.mjs +1 -1
  9. package/esm2020/lib/components/private/form-records/list-view-form-record/list-view-form-record.component.mjs +1 -1
  10. package/esm2020/lib/components/private/form-statistics/filter-form-statistic/filter-form-statistic.component.mjs +1 -1
  11. package/esm2020/lib/components/private/graphs/graph/graph.component.mjs +3 -3
  12. package/esm2020/lib/eqp-dynamic-module.module.mjs +4 -1
  13. package/esm2020/lib/utils/css-color.mjs +101 -0
  14. package/esm2020/lib/utils/css-declarations.mjs +119 -0
  15. package/esm2020/lib/utils/css-property-catalog.mjs +134 -0
  16. package/esm2020/lib/utils/field-style-catalog.mjs +491 -0
  17. package/esm2020/public-api.mjs +6 -1
  18. package/fesm2015/eqproject-eqp-dynamic-module.mjs +1941 -73
  19. package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
  20. package/fesm2020/eqproject-eqp-dynamic-module.mjs +1906 -80
  21. package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
  22. package/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.d.ts +39 -0
  23. package/lib/components/private/add-form-field/add-form-field.component.d.ts +19 -0
  24. package/lib/components/private/add-formula-field/add-formula-field.component.d.ts +5 -1
  25. package/lib/components/private/field-graphics-editor/field-graphics-editor.component.d.ts +192 -0
  26. package/lib/eqp-dynamic-module.module.d.ts +66 -65
  27. package/lib/utils/css-color.d.ts +15 -0
  28. package/lib/utils/css-declarations.d.ts +23 -0
  29. package/lib/utils/css-property-catalog.d.ts +36 -0
  30. package/lib/utils/field-style-catalog.d.ts +130 -0
  31. package/package.json +1 -1
  32. package/public-api.d.ts +5 -0
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Catalogo delle proprietà CSS modificabili dall'editor grafico dei campi.
3
+ *
4
+ * Ogni proprietà dichiara che tipo di controllo mostrare (colore, misura con slider,
5
+ * elenco di valori, testo libero). Le proprietà non presenti in questo catalogo restano
6
+ * comunque modificabili a mano dalle caselle CSS del dialog di modifica campo e non
7
+ * vengono mai perse dall'editor.
8
+ */
9
+ /** Proprietà mostrate sempre: coprono il 90% delle personalizzazioni */
10
+ export const CSS_CORE_PROPERTIES = [
11
+ { prop: 'background-color', label: 'Sfondo', type: 'color', group: 'Aspetto' },
12
+ { prop: 'color', label: 'Colore testo', type: 'color', group: 'Testo' },
13
+ { prop: 'font-size', label: 'Dimensione testo', type: 'size', group: 'Testo', min: 8, max: 48, step: 1, unit: 'px' },
14
+ {
15
+ prop: 'font-weight', label: 'Spessore testo', type: 'select', group: 'Testo',
16
+ options: [
17
+ { value: 'normal', label: 'Normale' },
18
+ { value: 'bold', label: 'Grassetto' },
19
+ { value: '300', label: 'Leggero (300)' },
20
+ { value: '500', label: 'Medio (500)' },
21
+ { value: '600', label: 'Semi-grassetto (600)' },
22
+ { value: '800', label: 'Extra (800)' },
23
+ ],
24
+ },
25
+ { prop: 'border-radius', label: 'Angoli arrotondati', type: 'size', group: 'Bordo', min: 0, max: 40, step: 1, unit: 'px' },
26
+ { prop: 'border-width', label: 'Spessore bordo', type: 'size', group: 'Bordo', min: 0, max: 12, step: 1, unit: 'px' },
27
+ { prop: 'border-color', label: 'Colore bordo', type: 'color', group: 'Bordo' },
28
+ {
29
+ prop: 'border-style', label: 'Tipo bordo', type: 'select', group: 'Bordo',
30
+ options: [
31
+ { value: 'none', label: 'Nessuno' },
32
+ { value: 'solid', label: 'Continuo' },
33
+ { value: 'dashed', label: 'Tratteggiato' },
34
+ { value: 'dotted', label: 'Puntinato' },
35
+ { value: 'double', label: 'Doppio' },
36
+ ],
37
+ },
38
+ { prop: 'padding', label: 'Spaziatura interna', type: 'text', group: 'Spaziatura', placeholder: 'es. 8px 12px' },
39
+ ];
40
+ /** Proprietà aggiuntive, mostrate solo aprendo "Altre proprietà" */
41
+ export const CSS_EXTRA_PROPERTIES = [
42
+ { prop: 'opacity', label: 'Opacità', type: 'size', group: 'Aspetto', min: 0, max: 1, step: 0.05, unit: '' },
43
+ { prop: 'background', label: 'Sfondo avanzato', type: 'text', group: 'Aspetto', placeholder: 'es. linear-gradient(...)' },
44
+ { prop: 'box-shadow', label: 'Ombra', type: 'text', group: 'Aspetto', placeholder: 'es. 0 2px 6px rgba(0,0,0,.2)' },
45
+ {
46
+ prop: 'text-align', label: 'Allineamento testo', type: 'select', group: 'Testo',
47
+ options: [
48
+ { value: 'left', label: 'Sinistra' },
49
+ { value: 'center', label: 'Centro' },
50
+ { value: 'right', label: 'Destra' },
51
+ { value: 'justify', label: 'Giustificato' },
52
+ ],
53
+ },
54
+ {
55
+ prop: 'text-transform', label: 'Maiuscole/minuscole', type: 'select', group: 'Testo',
56
+ options: [
57
+ { value: 'none', label: 'Come scritto' },
58
+ { value: 'uppercase', label: 'TUTTO MAIUSCOLO' },
59
+ { value: 'lowercase', label: 'tutto minuscolo' },
60
+ { value: 'capitalize', label: 'Iniziali Maiuscole' },
61
+ ],
62
+ },
63
+ {
64
+ prop: 'font-style', label: 'Corsivo', type: 'select', group: 'Testo',
65
+ options: [
66
+ { value: 'normal', label: 'Normale' },
67
+ { value: 'italic', label: 'Corsivo' },
68
+ ],
69
+ },
70
+ {
71
+ prop: 'text-decoration', label: 'Decorazione testo', type: 'select', group: 'Testo',
72
+ options: [
73
+ { value: 'none', label: 'Nessuna' },
74
+ { value: 'underline', label: 'Sottolineato' },
75
+ { value: 'line-through', label: 'Barrato' },
76
+ ],
77
+ },
78
+ { prop: 'font-family', label: 'Font', type: 'text', group: 'Testo', placeholder: 'es. Roboto, sans-serif' },
79
+ { prop: 'letter-spacing', label: 'Spaziatura lettere', type: 'size', group: 'Testo', min: -2, max: 10, step: 0.5, unit: 'px' },
80
+ { prop: 'line-height', label: 'Interlinea', type: 'size', group: 'Testo', min: 0.8, max: 3, step: 0.1, unit: '' },
81
+ { prop: 'margin', label: 'Spaziatura esterna', type: 'text', group: 'Spaziatura', placeholder: 'es. 0 0 8px 0' },
82
+ { prop: 'width', label: 'Larghezza', type: 'text', group: 'Spaziatura', placeholder: 'es. 100%' },
83
+ { prop: 'height', label: 'Altezza', type: 'text', group: 'Spaziatura', placeholder: 'es. 40px' },
84
+ { prop: 'min-height', label: 'Altezza minima', type: 'text', group: 'Spaziatura', placeholder: 'es. 40px' },
85
+ { prop: 'gap', label: 'Distanza tra elementi', type: 'size', group: 'Layout', min: 0, max: 40, step: 1, unit: 'px' },
86
+ {
87
+ prop: 'display', label: 'Visualizzazione', type: 'select', group: 'Layout',
88
+ options: [
89
+ { value: 'block', label: 'Blocco' },
90
+ { value: 'inline-block', label: 'Blocco in linea' },
91
+ { value: 'flex', label: 'Flex' },
92
+ { value: 'none', label: 'Nascosto' },
93
+ ],
94
+ },
95
+ {
96
+ prop: 'justify-content', label: 'Allineamento orizzontale', type: 'select', group: 'Layout',
97
+ options: [
98
+ { value: 'flex-start', label: 'Inizio' },
99
+ { value: 'center', label: 'Centro' },
100
+ { value: 'flex-end', label: 'Fine' },
101
+ { value: 'space-between', label: 'Distribuito' },
102
+ ],
103
+ },
104
+ {
105
+ prop: 'align-items', label: 'Allineamento verticale', type: 'select', group: 'Layout',
106
+ options: [
107
+ { value: 'flex-start', label: 'Alto' },
108
+ { value: 'center', label: 'Centro' },
109
+ { value: 'flex-end', label: 'Basso' },
110
+ { value: 'stretch', label: 'Estendi' },
111
+ ],
112
+ },
113
+ {
114
+ prop: 'cursor', label: 'Puntatore', type: 'select', group: 'Layout',
115
+ options: [
116
+ { value: 'default', label: 'Normale' },
117
+ { value: 'pointer', label: 'Mano' },
118
+ { value: 'not-allowed', label: 'Vietato' },
119
+ { value: 'text', label: 'Testo' },
120
+ ],
121
+ },
122
+ { prop: 'transition', label: 'Transizione', type: 'text', group: 'Effetti', placeholder: 'es. all .2s ease' },
123
+ { prop: 'transform', label: 'Trasformazione', type: 'text', group: 'Effetti', placeholder: 'es. scale(1.05)' },
124
+ ];
125
+ export const CSS_ALL_PROPERTIES = CSS_CORE_PROPERTIES.concat(CSS_EXTRA_PROPERTIES);
126
+ export function getCssPropertyDef(prop) {
127
+ const target = (prop || '').toLowerCase();
128
+ return CSS_ALL_PROPERTIES.find((p) => p.prop === target) ?? null;
129
+ }
130
+ /** Definizione di ripiego per una proprietà scritta a mano e non catalogata */
131
+ export function buildCustomCssPropertyDef(prop) {
132
+ return { prop: (prop || '').toLowerCase(), label: prop, type: 'text', group: 'Personalizzate' };
133
+ }
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLXByb3BlcnR5LWNhdGFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi91dGlscy9jc3MtcHJvcGVydHktY2F0YWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBcUJILHdFQUF3RTtBQUN4RSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBMEI7SUFDdEQsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7SUFDOUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0lBQ3ZFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7SUFDcEg7UUFDSSxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPO1FBQzVFLE9BQU8sRUFBRTtZQUNMLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ3JDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO1lBQ3JDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFO1lBQ3hDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFB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QUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUM7QUFDckUsQ0FBQztBQUVELCtFQUErRTtBQUMvRSxNQUFNLFVBQVUseUJBQXlCLENBQUMsSUFBWTtJQUNsRCxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztBQUNwRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENhdGFsb2dvIGRlbGxlIHByb3ByaWV0w6AgQ1NTIG1vZGlmaWNhYmlsaSBkYWxsJ2VkaXRvciBncmFmaWNvIGRlaSBjYW1waS5cclxuICpcclxuICogT2duaSBwcm9wcmlldMOgIGRpY2hpYXJhIGNoZSB0aXBvIGRpIGNvbnRyb2xsbyBtb3N0cmFyZSAoY29sb3JlLCBtaXN1cmEgY29uIHNsaWRlcixcclxuICogZWxlbmNvIGRpIHZhbG9yaSwgdGVzdG8gbGliZXJvKS4gTGUgcHJvcHJpZXTDoCBub24gcHJlc2VudGkgaW4gcXVlc3RvIGNhdGFsb2dvIHJlc3Rhbm9cclxuICogY29tdW5xdWUgbW9kaWZpY2FiaWxpIGEgbWFubyBkYWxsZSBjYXNlbGxlIENTUyBkZWwgZGlhbG9nIGRpIG1vZGlmaWNhIGNhbXBvIGUgbm9uXHJcbiAqIHZlbmdvbm8gbWFpIHBlcnNlIGRhbGwnZWRpdG9yLlxyXG4gKi9cclxuXHJcbmV4cG9ydCB0eXBlIENzc0NvbnRyb2xUeXBlID0gJ2NvbG9yJyB8ICdzaXplJyB8ICdzZWxlY3QnIHwgJ3RleHQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDc3NQcm9wZXJ0eURlZiB7XHJcbiAgICAvKiogTm9tZSBkZWxsYSBwcm9wcmlldMOgIENTUywgbWludXNjb2xvIChlcy4gXCJiYWNrZ3JvdW5kLWNvbG9yXCIpICovXHJcbiAgICBwcm9wOiBzdHJpbmc7XHJcbiAgICBsYWJlbDogc3RyaW5nO1xyXG4gICAgdHlwZTogQ3NzQ29udHJvbFR5cGU7XHJcbiAgICAvKiogR3J1cHBvIGRpIGFwcGFydGVuZW56YSwgdXNhdG8gcGVyIHJhZ2dydXBwYXJlIGxlIHJpZ2hlIGEgdmlkZW8gKi9cclxuICAgIGdyb3VwOiBzdHJpbmc7XHJcbiAgICAvKiogU29sbyBwZXIgdHlwZSAnc2l6ZScgKi9cclxuICAgIG1pbj86IG51bWJlcjtcclxuICAgIG1heD86IG51bWJlcjtcclxuICAgIHN0ZXA/OiBudW1iZXI7XHJcbiAgICB1bml0Pzogc3RyaW5nO1xyXG4gICAgLyoqIFNvbG8gcGVyIHR5cGUgJ3NlbGVjdCcgKi9cclxuICAgIG9wdGlvbnM/OiBBcnJheTx7IHZhbHVlOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfT47XHJcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcclxufVxyXG5cclxuLyoqIFByb3ByaWV0w6AgbW9zdHJhdGUgc2VtcHJlOiBjb3Byb25vIGlsIDkwJSBkZWxsZSBwZXJzb25hbGl6emF6aW9uaSAqL1xyXG5leHBvcnQgY29uc3QgQ1NTX0NPUkVfUFJPUEVSVElFUzogQXJyYXk8Q3NzUHJvcGVydHlEZWY+ID0gW1xyXG4gICAgeyBwcm9wOiAnYmFja2dyb3VuZC1jb2xvcicsIGxhYmVsOiAnU2ZvbmRvJywgdHlwZTogJ2NvbG9yJywgZ3JvdXA6ICdBc3BldHRvJyB9LFxyXG4gICAgeyBwcm9wOiAnY29sb3InLCBsYWJlbDogJ0NvbG9yZSB0ZXN0bycsIHR5cGU6ICdjb2xvcicsIGdyb3VwOiAnVGVzdG8nIH0sXHJcbiAgICB7IHByb3A6ICdmb250LXNpemUnLCBsYWJlbDogJ0RpbWVuc2lvbmUgdGVzdG8nLCB0eXBlOiAnc2l6ZScsIGdyb3VwOiAnVGVzdG8nLCBtaW46IDgsIG1heDogNDgsIHN0ZXA6IDEsIHVuaXQ6ICdweCcgfSxcclxuICAgIHtcclxuICAgICAgICBwcm9wOiAnZm9udC13ZWlnaHQnLCBsYWJlbDogJ1NwZXNzb3JlIHRlc3RvJywgdHlwZTogJ3NlbGVjdCcsIGdyb3VwOiAnVGVzdG8nLFxyXG4gICAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ25vcm1hbCcsIGxhYmVsOiAnTm9ybWFsZScgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2JvbGQnLCBsYWJlbDogJ0dyYXNzZXR0bycgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJzMwMCcsIGxhYmVsOiAnTGVnZ2VybyAoMzAwKScgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJzUwMCcsIGxhYmVsOiAnTWVkaW8gKDUwMCknIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICc2MDAnLCBsYWJlbDogJ1NlbWktZ3Jhc3NldHRvICg2MDApJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnODAwJywgbGFiZWw6ICdFeHRyYSAoODAwKScgfSxcclxuICAgICAgICBdLFxyXG4gICAgfSxcclxuICAgIHsgcHJvcDogJ2JvcmRlci1yYWRpdXMnLCBsYWJlbDogJ0FuZ29saSBhcnJvdG9uZGF0aScsIHR5cGU6ICdzaXplJywgZ3JvdXA6ICdCb3JkbycsIG1pbjogMCwgbWF4OiA0MCwgc3RlcDogMSwgdW5pdDogJ3B4JyB9LFxyXG4gICAgeyBwcm9wOiAnYm9yZGVyLXdpZHRoJywgbGFiZWw6ICdTcGVzc29yZSBib3JkbycsIHR5cGU6ICdzaXplJywgZ3JvdXA6ICdCb3JkbycsIG1pbjogMCwgbWF4OiAxMiwgc3RlcDogMSwgdW5pdDogJ3B4JyB9LFxyXG4gICAgeyBwcm9wOiAnYm9yZGVyLWNvbG9yJywgbGFiZWw6ICdDb2xvcmUgYm9yZG8nLCB0eXBlOiAnY29sb3InLCBncm91cDogJ0JvcmRvJyB9LFxyXG4gICAge1xyXG4gICAgICAgIHByb3A6ICdib3JkZXItc3R5bGUnLCBsYWJlbDogJ1RpcG8gYm9yZG8nLCB0eXBlOiAnc2VsZWN0JywgZ3JvdXA6ICdCb3JkbycsXHJcbiAgICAgICAgb3B0aW9uczogW1xyXG4gICAgICAgICAgICB7IHZhbHVlOiAnbm9uZScsIGxhYmVsOiAnTmVzc3VubycgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ3NvbGlkJywgbGFiZWw6ICdDb250aW51bycgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2Rhc2hlZCcsIGxhYmVsOiAnVHJhdHRlZ2dpYXRvJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnZG90dGVkJywgbGFiZWw6ICdQdW50aW5hdG8nIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdkb3VibGUnLCBsYWJlbDogJ0RvcHBpbycgfSxcclxuICAgICAgICBdLFxyXG4gICAgfSxcclxuICAgIHsgcHJvcDogJ3BhZGRpbmcnLCBsYWJlbDogJ1NwYXppYXR1cmEgaW50ZXJuYScsIHR5cGU6ICd0ZXh0JywgZ3JvdXA6ICdTcGF6aWF0dXJhJywgcGxhY2Vob2xkZXI6ICdlcy4gOHB4IDEycHgnIH0sXHJcbl07XHJcblxyXG4vKiogUHJvcHJpZXTDoCBhZ2dpdW50aXZlLCBtb3N0cmF0ZSBzb2xvIGFwcmVuZG8gXCJBbHRyZSBwcm9wcmlldMOgXCIgKi9cclxuZXhwb3J0IGNvbnN0IENTU19FWFRSQV9QUk9QRVJUSUVTOiBBcnJheTxDc3NQcm9wZXJ0eURlZj4gPSBbXHJcbiAgICB7IHByb3A6ICdvcGFjaXR5JywgbGFiZWw6ICdPcGFjaXTDoCcsIHR5cGU6ICdzaXplJywgZ3JvdXA6ICdBc3BldHRvJywgbWluOiAwLCBtYXg6IDEsIHN0ZXA6IDAuMDUsIHVuaXQ6ICcnIH0sXHJcbiAgICB7IHByb3A6ICdiYWNrZ3JvdW5kJywgbGFiZWw6ICdTZm9uZG8gYXZhbnphdG8nLCB0eXBlOiAndGV4dCcsIGdyb3VwOiAnQXNwZXR0bycsIHBsYWNlaG9sZGVyOiAnZXMuIGxpbmVhci1ncmFkaWVudCguLi4pJyB9LFxyXG4gICAgeyBwcm9wOiAnYm94LXNoYWRvdycsIGxhYmVsOiAnT21icmEnLCB0eXBlOiAndGV4dCcsIGdyb3VwOiAnQXNwZXR0bycsIHBsYWNlaG9sZGVyOiAnZXMuIDAgMnB4IDZweCByZ2JhKDAsMCwwLC4yKScgfSxcclxuICAgIHtcclxuICAgICAgICBwcm9wOiAndGV4dC1hbGlnbicsIGxhYmVsOiAnQWxsaW5lYW1lbnRvIHRlc3RvJywgdHlwZTogJ3NlbGVjdCcsIGdyb3VwOiAnVGVzdG8nLFxyXG4gICAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2xlZnQnLCBsYWJlbDogJ1NpbmlzdHJhJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnY2VudGVyJywgbGFiZWw6ICdDZW50cm8nIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdyaWdodCcsIGxhYmVsOiAnRGVzdHJhJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnanVzdGlmeScsIGxhYmVsOiAnR2l1c3RpZmljYXRvJyB9LFxyXG4gICAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHByb3A6ICd0ZXh0LXRyYW5zZm9ybScsIGxhYmVsOiAnTWFpdXNjb2xlL21pbnVzY29sZScsIHR5cGU6ICdzZWxlY3QnLCBncm91cDogJ1Rlc3RvJyxcclxuICAgICAgICBvcHRpb25zOiBbXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdub25lJywgbGFiZWw6ICdDb21lIHNjcml0dG8nIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICd1cHBlcmNhc2UnLCBsYWJlbDogJ1RVVFRPIE1BSVVTQ09MTycgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2xvd2VyY2FzZScsIGxhYmVsOiAndHV0dG8gbWludXNjb2xvJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnY2FwaXRhbGl6ZScsIGxhYmVsOiAnSW5pemlhbGkgTWFpdXNjb2xlJyB9LFxyXG4gICAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHByb3A6ICdmb250LXN0eWxlJywgbGFiZWw6ICdDb3JzaXZvJywgdHlwZTogJ3NlbGVjdCcsIGdyb3VwOiAnVGVzdG8nLFxyXG4gICAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ25vcm1hbCcsIGxhYmVsOiAnTm9ybWFsZScgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2l0YWxpYycsIGxhYmVsOiAnQ29yc2l2bycgfSxcclxuICAgICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwcm9wOiAndGV4dC1kZWNvcmF0aW9uJywgbGFiZWw6ICdEZWNvcmF6aW9uZSB0ZXN0bycsIHR5cGU6ICdzZWxlY3QnLCBncm91cDogJ1Rlc3RvJyxcclxuICAgICAgICBvcHRpb25zOiBbXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdub25lJywgbGFiZWw6ICdOZXNzdW5hJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAndW5kZXJsaW5lJywgbGFiZWw6ICdTb3R0b2xpbmVhdG8nIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdsaW5lLXRocm91Z2gnLCBsYWJlbDogJ0JhcnJhdG8nIH0sXHJcbiAgICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7IHByb3A6ICdmb250LWZhbWlseScsIGxhYmVsOiAnRm9udCcsIHR5cGU6ICd0ZXh0JywgZ3JvdXA6ICdUZXN0bycsIHBsYWNlaG9sZGVyOiAnZXMuIFJvYm90bywgc2Fucy1zZXJpZicgfSxcclxuICAgIHsgcHJvcDogJ2xldHRlci1zcGFjaW5nJywgbGFiZWw6ICdTcGF6aWF0dXJhIGxldHRlcmUnLCB0eXBlOiAnc2l6ZScsIGdyb3VwOiAnVGVzdG8nLCBtaW46IC0yLCBtYXg6IDEwLCBzdGVwOiAwLjUsIHVuaXQ6ICdweCcgfSxcclxuICAgIHsgcHJvcDogJ2xpbmUtaGVpZ2h0JywgbGFiZWw6ICdJbnRlcmxpbmVhJywgdHlwZTogJ3NpemUnLCBncm91cDogJ1Rlc3RvJywgbWluOiAwLjgsIG1heDogMywgc3RlcDogMC4xLCB1bml0OiAnJyB9LFxyXG4gICAgeyBwcm9wOiAnbWFyZ2luJywgbGFiZWw6ICdTcGF6aWF0dXJhIGVzdGVybmEnLCB0eXBlOiAndGV4dCcsIGdyb3VwOiAnU3BhemlhdHVyYScsIHBsYWNlaG9sZGVyOiAnZXMuIDAgMCA4cHggMCcgfSxcclxuICAgIHsgcHJvcDogJ3dpZHRoJywgbGFiZWw6ICdMYXJnaGV6emEnLCB0eXBlOiAndGV4dCcsIGdyb3VwOiAnU3BhemlhdHVyYScsIHBsYWNlaG9sZGVyOiAnZXMuIDEwMCUnIH0sXHJcbiAgICB7IHByb3A6ICdoZWlnaHQnLCBsYWJlbDogJ0FsdGV6emEnLCB0eXBlOiAndGV4dCcsIGdyb3VwOiAnU3BhemlhdHVyYScsIHBsYWNlaG9sZGVyOiAnZXMuIDQwcHgnIH0sXHJcbiAgICB7IHByb3A6ICdtaW4taGVpZ2h0JywgbGFiZWw6ICdBbHRlenphIG1pbmltYScsIHR5cGU6ICd0ZXh0JywgZ3JvdXA6ICdTcGF6aWF0dXJhJywgcGxhY2Vob2xkZXI6ICdlcy4gNDBweCcgfSxcclxuICAgIHsgcHJvcDogJ2dhcCcsIGxhYmVsOiAnRGlzdGFuemEgdHJhIGVsZW1lbnRpJywgdHlwZTogJ3NpemUnLCBncm91cDogJ0xheW91dCcsIG1pbjogMCwgbWF4OiA0MCwgc3RlcDogMSwgdW5pdDogJ3B4JyB9LFxyXG4gICAge1xyXG4gICAgICAgIHByb3A6ICdkaXNwbGF5JywgbGFiZWw6ICdWaXN1YWxpenphemlvbmUnLCB0eXBlOiAnc2VsZWN0JywgZ3JvdXA6ICdMYXlvdXQnLFxyXG4gICAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2Jsb2NrJywgbGFiZWw6ICdCbG9jY28nIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdpbmxpbmUtYmxvY2snLCBsYWJlbDogJ0Jsb2NjbyBpbiBsaW5lYScgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2ZsZXgnLCBsYWJlbDogJ0ZsZXgnIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdub25lJywgbGFiZWw6ICdOYXNjb3N0bycgfSxcclxuICAgICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwcm9wOiAnanVzdGlmeS1jb250ZW50JywgbGFiZWw6ICdBbGxpbmVhbWVudG8gb3JpenpvbnRhbGUnLCB0eXBlOiAnc2VsZWN0JywgZ3JvdXA6ICdMYXlvdXQnLFxyXG4gICAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2ZsZXgtc3RhcnQnLCBsYWJlbDogJ0luaXppbycgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2NlbnRlcicsIGxhYmVsOiAnQ2VudHJvJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnZmxleC1lbmQnLCBsYWJlbDogJ0ZpbmUnIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdzcGFjZS1iZXR3ZWVuJywgbGFiZWw6ICdEaXN0cmlidWl0bycgfSxcclxuICAgICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwcm9wOiAnYWxpZ24taXRlbXMnLCBsYWJlbDogJ0FsbGluZWFtZW50byB2ZXJ0aWNhbGUnLCB0eXBlOiAnc2VsZWN0JywgZ3JvdXA6ICdMYXlvdXQnLFxyXG4gICAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2ZsZXgtc3RhcnQnLCBsYWJlbDogJ0FsdG8nIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdjZW50ZXInLCBsYWJlbDogJ0NlbnRybycgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2ZsZXgtZW5kJywgbGFiZWw6ICdCYXNzbycgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ3N0cmV0Y2gnLCBsYWJlbDogJ0VzdGVuZGknIH0sXHJcbiAgICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgcHJvcDogJ2N1cnNvcicsIGxhYmVsOiAnUHVudGF0b3JlJywgdHlwZTogJ3NlbGVjdCcsIGdyb3VwOiAnTGF5b3V0JyxcclxuICAgICAgICBvcHRpb25zOiBbXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdkZWZhdWx0JywgbGFiZWw6ICdOb3JtYWxlJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAncG9pbnRlcicsIGxhYmVsOiAnTWFubycgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ25vdC1hbGxvd2VkJywgbGFiZWw6ICdWaWV0YXRvJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAndGV4dCcsIGxhYmVsOiAnVGVzdG8nIH0sXHJcbiAgICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7IHByb3A6ICd0cmFuc2l0aW9uJywgbGFiZWw6ICdUcmFuc2l6aW9uZScsIHR5cGU6ICd0ZXh0JywgZ3JvdXA6ICdFZmZldHRpJywgcGxhY2Vob2xkZXI6ICdlcy4gYWxsIC4ycyBlYXNlJyB9LFxyXG4gICAgeyBwcm9wOiAndHJhbnNmb3JtJywgbGFiZWw6ICdUcmFzZm9ybWF6aW9uZScsIHR5cGU6ICd0ZXh0JywgZ3JvdXA6ICdFZmZldHRpJywgcGxhY2Vob2xkZXI6ICdlcy4gc2NhbGUoMS4wNSknIH0sXHJcbl07XHJcblxyXG5leHBvcnQgY29uc3QgQ1NTX0FMTF9QUk9QRVJUSUVTOiBBcnJheTxDc3NQcm9wZXJ0eURlZj4gPSBDU1NfQ09SRV9QUk9QRVJUSUVTLmNvbmNhdChDU1NfRVhUUkFfUFJPUEVSVElFUyk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3NzUHJvcGVydHlEZWYocHJvcDogc3RyaW5nKTogQ3NzUHJvcGVydHlEZWYgfCBudWxsIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IChwcm9wIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgcmV0dXJuIENTU19BTExfUFJPUEVSVElFUy5maW5kKChwKSA9PiBwLnByb3AgPT09IHRhcmdldCkgPz8gbnVsbDtcclxufVxyXG5cclxuLyoqIERlZmluaXppb25lIGRpIHJpcGllZ28gcGVyIHVuYSBwcm9wcmlldMOgIHNjcml0dGEgYSBtYW5vIGUgbm9uIGNhdGFsb2dhdGEgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQ3VzdG9tQ3NzUHJvcGVydHlEZWYocHJvcDogc3RyaW5nKTogQ3NzUHJvcGVydHlEZWYge1xyXG4gICAgcmV0dXJuIHsgcHJvcDogKHByb3AgfHwgJycpLnRvTG93ZXJDYXNlKCksIGxhYmVsOiBwcm9wLCB0eXBlOiAndGV4dCcsIGdyb3VwOiAnUGVyc29uYWxpenphdGUnIH07XHJcbn1cclxuIl19