@gravitee/ui-components 3.24.5-renovate-github-markdown-css-5-x-6cd8067 → 3.25.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 (115) hide show
  1. package/assets/css/github-markdown-css/github-markdown.css +545 -500
  2. package/assets/i18n/en.json +3 -0
  3. package/assets/i18n/fr.json +3 -0
  4. package/assets/icons/design.svg +1 -1
  5. package/package.json +2 -9
  6. package/src/atoms/gv-autocomplete.js +132 -156
  7. package/src/atoms/gv-button.js +73 -248
  8. package/src/atoms/gv-checkbox.js +45 -103
  9. package/src/atoms/gv-date-picker-calendar.js +312 -393
  10. package/src/atoms/gv-date-picker-cell.js +57 -81
  11. package/src/atoms/gv-date-picker.js +180 -319
  12. package/src/atoms/gv-file-upload.js +85 -195
  13. package/src/atoms/gv-icon.js +13 -34
  14. package/src/atoms/gv-image.js +31 -66
  15. package/src/atoms/gv-input-message.js +12 -37
  16. package/src/atoms/gv-input.js +117 -148
  17. package/src/atoms/gv-link.js +47 -125
  18. package/src/atoms/gv-message.js +18 -69
  19. package/src/atoms/gv-metric.js +19 -68
  20. package/src/atoms/gv-relative-time.js +67 -38
  21. package/src/atoms/gv-select-native.js +96 -215
  22. package/src/atoms/gv-select.js +110 -230
  23. package/src/atoms/gv-spinner.js +5 -26
  24. package/src/atoms/gv-state.js +25 -66
  25. package/src/atoms/gv-switch.js +40 -160
  26. package/src/atoms/gv-tag.js +26 -78
  27. package/src/atoms/gv-text.js +22 -83
  28. package/src/charts/gv-chart-bar.js +22 -18
  29. package/src/charts/gv-chart-gauge.js +28 -31
  30. package/src/charts/gv-chart-histogram.js +18 -10
  31. package/src/charts/gv-chart-line.js +70 -59
  32. package/src/charts/gv-chart-map.js +44 -42
  33. package/src/charts/gv-chart-pie.js +18 -14
  34. package/src/index.js +1 -0
  35. package/src/lib/cron-expression.js +40 -35
  36. package/src/lib/date.js +10 -1
  37. package/src/lib/events.js +3 -1
  38. package/src/lib/http-client-schema-form.js +13 -12
  39. package/src/lib/http.js +57 -56
  40. package/src/lib/i18n.js +30 -22
  41. package/src/lib/item.js +13 -12
  42. package/src/lib/properties.js +77 -42
  43. package/src/lib/schema-form.js +4 -5
  44. package/src/lib/studio.js +13 -60
  45. package/src/lib/style.js +8 -8
  46. package/src/lib/text-format.js +14 -7
  47. package/src/lib/theme.js +8 -5
  48. package/src/lib/utils.js +17 -18
  49. package/src/mixins/chart-element.js +31 -54
  50. package/src/mixins/input-element.js +60 -47
  51. package/src/mixins/item-resource.js +34 -32
  52. package/src/mixins/keyboard-element.js +6 -5
  53. package/src/mixins/update-after-browser.js +4 -1
  54. package/src/mixins/with-resize-observer.js +23 -13
  55. package/src/mixins/with-skeleton-attribute.js +54 -48
  56. package/src/molecules/gv-card-full.js +26 -147
  57. package/src/molecules/gv-card-list.js +13 -42
  58. package/src/molecules/gv-card.js +17 -91
  59. package/src/molecules/gv-category-list.js +6 -17
  60. package/src/molecules/gv-category.js +23 -103
  61. package/src/molecules/gv-code.js +81 -143
  62. package/src/molecules/gv-confirm.js +41 -71
  63. package/src/molecules/gv-cron-editor.js +143 -389
  64. package/src/molecules/gv-dropdown-menu.js +14 -46
  65. package/src/molecules/gv-expandable.js +31 -59
  66. package/src/molecules/gv-expression-language.js +176 -138
  67. package/src/molecules/gv-identity-picture.js +42 -65
  68. package/src/molecules/gv-list.js +42 -134
  69. package/src/molecules/gv-metrics.js +37 -49
  70. package/src/molecules/gv-modal.js +28 -95
  71. package/src/molecules/gv-nav.js +49 -75
  72. package/src/molecules/gv-option.js +57 -130
  73. package/src/molecules/gv-plans.js +86 -209
  74. package/src/molecules/gv-popover.js +57 -177
  75. package/src/molecules/gv-promote.js +28 -146
  76. package/src/molecules/gv-rating-list.js +69 -195
  77. package/src/molecules/gv-rating.js +52 -105
  78. package/src/molecules/gv-row-expandable.js +5 -11
  79. package/src/molecules/gv-row.js +21 -147
  80. package/src/molecules/gv-stats.js +23 -48
  81. package/src/molecules/gv-stepper.js +43 -187
  82. package/src/molecules/gv-table.js +199 -309
  83. package/src/molecules/gv-tree.js +33 -156
  84. package/src/organisms/gv-documentation.js +45 -128
  85. package/src/organisms/gv-header.js +37 -195
  86. package/src/organisms/gv-http-client.js +32 -168
  87. package/src/organisms/gv-menu.js +37 -158
  88. package/src/organisms/gv-newsletter-subscription.js +48 -189
  89. package/src/organisms/gv-pagination.js +49 -77
  90. package/src/organisms/gv-properties.js +271 -492
  91. package/src/organisms/gv-resizable-views.js +41 -259
  92. package/src/organisms/gv-resources.js +168 -275
  93. package/src/organisms/gv-schema-form-array.js +49 -159
  94. package/src/organisms/gv-schema-form-control-object.js +59 -73
  95. package/src/organisms/gv-schema-form-control.js +107 -134
  96. package/src/organisms/gv-schema-form.js +219 -280
  97. package/src/organisms/gv-tabs.js +66 -98
  98. package/src/organisms/gv-user-menu.js +36 -201
  99. package/src/organisms/gv-vertical-menu.js +20 -61
  100. package/src/policy-studio/gv-flow-step.js +106 -245
  101. package/src/policy-studio/gv-flow.js +125 -304
  102. package/src/policy-studio/gv-policy-studio-menu.js +157 -471
  103. package/src/policy-studio/gv-policy-studio.js +714 -760
  104. package/src/styles/empty.js +3 -20
  105. package/src/styles/input.js +3 -247
  106. package/src/styles/link.js +3 -16
  107. package/src/styles/shapes.js +1 -0
  108. package/src/styles/skeleton.js +3 -37
  109. package/src/styles/zoom.js +3 -24
  110. package/src/theme/gv-theme.js +21 -60
  111. package/CHANGELOG.md +0 -1260
  112. package/LICENSE.txt +0 -202
  113. package/README.md +0 -195
  114. package/src/.eslintrc.js +0 -19
  115. package/src/theme/definition.json +0 -1762
@@ -20,7 +20,6 @@ import { until } from 'lit/directives/until';
20
20
  import { isSameRoutes } from '../lib/utils';
21
21
  import { dispatchCustomEvent } from '../lib/events';
22
22
  import { classMap } from 'lit/directives/class-map';
23
-
24
23
  /**
25
24
  * A main nav
26
25
  *
@@ -31,65 +30,52 @@ import { classMap } from 'lit/directives/class-map';
31
30
  *
32
31
  * @attr {Array<{active: Boolean, icon: String, path: String, title: Promise<String>, target: String}>} routes - definition of routes
33
32
  */
33
+
34
34
  export class GvNav extends LitElement {
35
35
  static get properties() {
36
36
  return {
37
- routes: { type: Array },
38
- _routes: { type: Array },
39
- small: { type: Boolean },
40
- _compact: { type: Boolean, attribute: false },
41
- vertical: { type: Boolean, reflect: true },
37
+ routes: {
38
+ type: Array
39
+ },
40
+ _routes: {
41
+ type: Array
42
+ },
43
+ small: {
44
+ type: Boolean
45
+ },
46
+ _compact: {
47
+ type: Boolean,
48
+ attribute: false
49
+ },
50
+ vertical: {
51
+ type: Boolean,
52
+ reflect: true
53
+ }
42
54
  };
43
55
  }
44
56
 
45
57
  static get styles() {
46
- return [
47
- // language=CSS
48
- css`
49
- nav {
50
- position: relative;
51
- transition: all 150ms ease-in-out;
52
- }
53
-
54
- gv-link {
55
- --gv-link--ta: end;
56
- }
57
-
58
- .vertical {
59
- display: flex;
60
- flex-direction: column;
61
- }
62
-
63
- .vertical gv-link {
64
- width: 100%;
65
- }
66
-
67
- .compact {
68
- --gv-link-a--ph: 10px;
69
- }
70
-
71
- #shadowLink {
72
- position: absolute;
73
- display: inline-flex;
74
- opacity: 0.5;
75
- top: 0;
76
- left: 0;
77
- transition: transform 250ms ease-in-out, width 250ms;
78
- }
79
- `,
80
- ];
58
+ return [// language=CSS
59
+ css`nav{position:relative;transition:all 150ms ease-in-out}gv-link{--gv-link--ta:end}.vertical{display:flex;flex-direction:column}.vertical gv-link{width:100%}.compact{--gv-link-a--ph:10px}#shadowLink{position:absolute;display:inline-flex;opacity:.5;top:0;left:0;transition:transform 250ms ease-in-out,width 250ms}`];
81
60
  }
82
61
 
83
62
  _onClick(event) {
84
63
  event.stopPropagation();
85
- const { detail } = event;
86
- const { title, target } = detail;
64
+ const {
65
+ detail
66
+ } = event;
67
+ const {
68
+ title,
69
+ target
70
+ } = detail;
71
+
87
72
  if (target === '_blank') {
88
73
  dispatchCustomEvent(this, 'click', detail);
89
74
  } else {
90
75
  if (!this._isLocked) {
91
76
  this._isLocked = true;
92
77
  let nextIndex = 0;
78
+
93
79
  this._routes.forEach((route, index) => {
94
80
  if (route.title === title) {
95
81
  route.active = true;
@@ -97,30 +83,30 @@ export class GvNav extends LitElement {
97
83
  } else {
98
84
  delete route.active;
99
85
  }
86
+
100
87
  return route;
101
88
  });
102
89
 
103
90
  const activeLink = this.shadowRoot.querySelector('gv-link[active]');
104
91
  const nextLink = this.shadowRoot.querySelectorAll('gv-link')[nextIndex];
92
+
105
93
  if (activeLink) {
106
94
  const shadowLink = activeLink.cloneNode(true);
107
- const { height, width } = activeLink.getBoundingClientRect();
108
-
95
+ const {
96
+ height,
97
+ width
98
+ } = activeLink.getBoundingClientRect();
109
99
  shadowLink.id = 'shadowLink';
110
100
  shadowLink.style.top = `${activeLink.offsetTop}px`;
111
101
  shadowLink.style.left = `${activeLink.offsetLeft}px`;
112
102
  shadowLink.style.width = `${width}px`;
113
103
  shadowLink.style.height = `${height}px`;
114
-
115
104
  activeLink.removeAttribute('active');
116
105
  activeLink.style.height = `${height}px`;
117
-
118
106
  this.shadowRoot.querySelector('nav').prepend(shadowLink);
119
107
  const left = nextLink.offsetLeft - activeLink.offsetLeft;
120
108
  const top = nextLink.offsetTop - activeLink.offsetTop;
121
-
122
109
  shadowLink.style.transform = `translate(${left}px,${top}px)`;
123
-
124
110
  setTimeout(() => {
125
111
  nextLink.setAttribute('active', true);
126
112
  this.shadowRoot.querySelector('nav').removeChild(shadowLink);
@@ -139,13 +125,14 @@ export class GvNav extends LitElement {
139
125
  constructor() {
140
126
  super();
141
127
  /** @protected */
128
+
142
129
  this._routes = [];
143
130
  this.vertical = false;
144
131
  }
145
132
 
146
133
  set routes(routes) {
147
134
  if (routes) {
148
- Promise.resolve(routes).then((_routes) => {
135
+ Promise.resolve(routes).then(_routes => {
149
136
  if (!isSameRoutes(this._routes, _routes)) {
150
137
  this._routes = _routes;
151
138
  }
@@ -154,23 +141,11 @@ export class GvNav extends LitElement {
154
141
  }
155
142
 
156
143
  _getLink(route, index) {
157
- return Promise.resolve(route)
158
- .then((_route) => {
159
- return html` <gv-link
160
- @gv-link:click=${this._onClick}
161
- .active="${_route.active}"
162
- .icon="${_route.icon}"
163
- .path="${_route.path}"
164
- .target="${_route.target}"
165
- ?small="${this.small}"
166
- .title="${_route.title}"
167
- .help="${until(_route.help, null)}"
168
- ?vertical="${this.vertical}"
169
- ></gv-link>`;
170
- })
171
- .catch(() => {
172
- delete this._routes[index];
173
- });
144
+ return Promise.resolve(route).then(_route => {
145
+ return html` <gv-link @gv-link:click="${this._onClick}" .active="${_route.active}" .icon="${_route.icon}" .path="${_route.path}" .target="${_route.target}" ?small="${this.small}" .title="${_route.title}" .help="${until(_route.help, null)}" ?vertical="${this.vertical}"></gv-link>`;
146
+ }).catch(() => {
147
+ delete this._routes[index];
148
+ });
174
149
  }
175
150
 
176
151
  updated(_changedProperties) {
@@ -181,16 +156,15 @@ export class GvNav extends LitElement {
181
156
 
182
157
  render() {
183
158
  if (this._routes) {
184
- return html`<nav class="${classMap({ compact: this._compact, vertical: this.vertical })}">
185
- ${repeat(
186
- this._routes,
187
- (route) => route,
188
- (route, index) => until(this._getLink(route, index), html`<gv-link skeleton .vertical="${this.vertical}"></gv-link>`),
189
- )}
190
- </nav>`;
159
+ return html`<nav class="${classMap({
160
+ compact: this._compact,
161
+ vertical: this.vertical
162
+ })}"> ${repeat(this._routes, route => route, (route, index) => until(this._getLink(route, index), html`<gv-link skeleton .vertical="${this.vertical}"></gv-link>`))} </nav>`;
191
163
  }
164
+
192
165
  return html``;
193
166
  }
194
- }
195
167
 
168
+ }
196
169
  window.customElements.define('gv-nav', GvNav);
170
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL21vbGVjdWxlcy9ndi1uYXYuanMiXSwibmFtZXMiOlsiTGl0RWxlbWVudCIsImh0bWwiLCJjc3MiLCJyZXBlYXQiLCJ1bnRpbCIsImlzU2FtZVJvdXRlcyIsImRpc3BhdGNoQ3VzdG9tRXZlbnQiLCJjbGFzc01hcCIsIkd2TmF2IiwicHJvcGVydGllcyIsInJvdXRlcyIsInR5cGUiLCJBcnJheSIsIl9yb3V0ZXMiLCJzbWFsbCIsIkJvb2xlYW4iLCJfY29tcGFjdCIsImF0dHJpYnV0ZSIsInZlcnRpY2FsIiwicmVmbGVjdCIsInN0eWxlcyIsIl9vbkNsaWNrIiwiZXZlbnQiLCJzdG9wUHJvcGFnYXRpb24iLCJkZXRhaWwiLCJ0aXRsZSIsInRhcmdldCIsIl9pc0xvY2tlZCIsIm5leHRJbmRleCIsImZvckVhY2giLCJyb3V0ZSIsImluZGV4IiwiYWN0aXZlIiwiYWN0aXZlTGluayIsInNoYWRvd1Jvb3QiLCJxdWVyeVNlbGVjdG9yIiwibmV4dExpbmsiLCJxdWVyeVNlbGVjdG9yQWxsIiwic2hhZG93TGluayIsImNsb25lTm9kZSIsImhlaWdodCIsIndpZHRoIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaWQiLCJzdHlsZSIsInRvcCIsIm9mZnNldFRvcCIsImxlZnQiLCJvZmZzZXRMZWZ0IiwicmVtb3ZlQXR0cmlidXRlIiwicHJlcGVuZCIsInRyYW5zZm9ybSIsInNldFRpbWVvdXQiLCJzZXRBdHRyaWJ1dGUiLCJyZW1vdmVDaGlsZCIsImNvbnN0cnVjdG9yIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwiX2dldExpbmsiLCJfcm91dGUiLCJpY29uIiwicGF0aCIsImhlbHAiLCJjYXRjaCIsInVwZGF0ZWQiLCJfY2hhbmdlZFByb3BlcnRpZXMiLCJoYXMiLCJsZW5ndGgiLCJyZW5kZXIiLCJjb21wYWN0Iiwid2luZG93IiwiY3VzdG9tRWxlbWVudHMiLCJkZWZpbmUiXSwibWFw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Q0FjRSxNQUFNO0FBQ1gsYUFBTyxLQUFLbkQsT0FBTCxDQUFha0IsS0FBYixDQUFQO0FBQ0QsS0FoQkksQ0FBUDtBQWlCRDs7QUFFRGtDLEVBQUFBLE9BQU8sQ0FBQ0Msa0JBQUQsRUFBcUI7QUFDMUIsUUFBSUEsa0JBQWtCLENBQUNDLEdBQW5CLENBQXVCLFNBQXZCLENBQUosRUFBdUM7QUFDckMsV0FBS25ELFFBQUwsR0FBZ0IsS0FBS0gsT0FBTCxJQUFnQixLQUFLQSxPQUFMLENBQWF1RCxNQUFiLEdBQXNCLENBQXREO0FBQ0Q7QUFDRjs7QUFFREMsRUFBQUEsTUFBTSxHQUFHO0FBQ1AsUUFBSSxLQUFLeEQsT0FBVCxFQUFrQjtBQUNoQixhQUFPWixJQUFJLGVBQWVNLFFBQVEsQ0FBQztBQUFFK0QsUUFBQUEsT0FBTyxFQUFFLEtBQUt0RCxRQUFoQjtBQUEwQkUsUUFBQUEsUUFBUSxFQUFFLEtBQUtBO0FBQXpDLE9BQUQsQ0FBdkIsTUFDUGYsTUFBTSxDQUNOLEtBQUtVLE9BREMsRUFFTGlCLEtBQUQsSUFBV0EsS0FGTCxFQUdOLENBQUNBLEtBQUQsRUFBUUMsS0FBUixLQUFrQjNCLEtBQUssQ0FBQyxLQUFLdUQsUUFBTCxDQUFjN0IsS0FBZCxFQUFxQkMsS0FBckIsQ0FBRCxFQUE4QjlCLElBQUksZ0NBQWdDLEtBQUtpQixRQUFyQyxjQUFsQyxDQUhqQixDQURDLFNBQVg7QUFPRDs7QUFDRCxXQUFPakIsSUFBSSxFQUFYO0FBQ0Q7O0FBL0ptQztBQWtLdENzRSxNQUFNLENBQUNDLGNBQVAsQ0FBc0JDLE1BQXRCLENBQTZCLFFBQTdCLEVBQXVDakUsS0FBdkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgTGl0RWxlbWVudCwgaHRtbCwgY3NzIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHJlcGVhdCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlcGVhdCc7XG5pbXBvcnQgJy4uL2F0b21zL2d2LWxpbmsnO1xuaW1wb3J0IHsgdW50aWwgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy91bnRpbCc7XG5pbXBvcnQgeyBpc1NhbWVSb3V0ZXMgfSBmcm9tICcuLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgZGlzcGF0Y2hDdXN0b21FdmVudCB9IGZyb20gJy4uL2xpYi9ldmVudHMnO1xuaW1wb3J0IHsgY2xhc3NNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9jbGFzcy1tYXAnO1xuXG4vKipcbiAqIEEgbWFpbiBuYXZcbiAqXG4gKiAjIyBEZXRhaWxzXG4gKiAqIGhhcyBAdGhlbWUgZmFjZXRcbiAqXG4gKiBAZmlyZXMgZ3YtbmF2OmNsaWNrIC0gQ3VzdG9tIGV2ZW50IHdoZW4gbmF2IGl0ZW0gaXMgY2xpY2tlZFxuICpcbiAqIEBhdHRyIHtBcnJheTx7YWN0aXZlOiBCb29sZWFuLCBpY29uOiBTdHJpbmcsIHBhdGg6IFN0cmluZywgdGl0bGU6IFByb21pc2U8U3RyaW5nPiwgdGFyZ2V0OiBTdHJpbmd9Pn0gcm91dGVzIC0gZGVmaW5pdGlvbiBvZiByb3V0ZXNcbiAqL1xuZXhwb3J0IGNsYXNzIEd2TmF2IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcm91dGVzOiB7IHR5cGU6IEFycmF5IH0sXG4gICAgICBfcm91dGVzOiB7IHR5cGU6IEFycmF5IH0sXG4gICAgICBzbWFsbDogeyB0eXBlOiBCb29sZWFuIH0sXG4gICAgICBfY29tcGFjdDogeyB0eXBlOiBCb29sZWFuLCBhdHRyaWJ1dGU6IGZhbHNlIH0sXG4gICAgICB2ZXJ0aWNhbDogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc3R5bGVzKCkge1xuICAgIHJldHVybiBbXG4gICAgICAvLyBsYW5ndWFnZT1DU1NcbiAgICAgIGNzc2BcbiAgICAgICAgbmF2IHtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDE1MG1zIGVhc2UtaW4tb3V0O1xuICAgICAgICB9XG5cbiAgICAgICAgZ3YtbGluayB7XG4gICAgICAgICAgLS1ndi1saW5rLS10YTogZW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgLnZlcnRpY2FsIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIH1cblxuICAgICAgICAudmVydGljYWwgZ3YtbGluayB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAuY29tcGFjdCB7XG4gICAgICAgICAgLS1ndi1saW5rLWEtLXBoOiAxMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgI3NoYWRvd0xpbmsge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDI1MG1zIGVhc2UtaW4tb3V0LCB3aWR0aCAyNTBtcztcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICBdO1xuICB9XG5cbiAgX29uQ2xpY2soZXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCB7IGRldGFpbCB9ID0gZXZlbnQ7XG4gICAgY29uc3QgeyB0aXRsZSwgdGFyZ2V0IH0gPSBkZXRhaWw7XG4gICAgaWYgKHRhcmdldCA9PT0gJ19ibGFuaycpIHtcbiAgICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2NsaWNrJywgZGV0YWlsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLl9pc0xvY2tlZCkge1xuICAgICAgICB0aGlzLl9pc0xvY2tlZCA9IHRydWU7XG4gICAgICAgIGxldCBuZXh0SW5kZXggPSAwO1xuICAgICAgICB0aGlzLl9yb3V0ZXMuZm9yRWFjaCgocm91dGUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKHJvdXRlLnRpdGxlID09PSB0aXRsZSkge1xuICAgICAgICAgICAgcm91dGUuYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgIG5leHRJbmRleCA9IGluZGV4O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZWxldGUgcm91dGUuYWN0aXZlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcm91dGU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGFjdGl2ZUxpbmsgPSB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignZ3YtbGlua1thY3RpdmVdJyk7XG4gICAgICAgIGNvbnN0IG5leHRMaW5rID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2d2LWxpbmsnKVtuZXh0SW5kZXhdO1xuICAgICAgICBpZiAoYWN0aXZlTGluaykge1xuICAgICAgICAgIGNvbnN0IHNoYWRvd0xpbmsgPSBhY3RpdmVMaW5rLmNsb25lTm9kZSh0cnVlKTtcbiAgICAgICAgICBjb25zdCB7IGhlaWdodCwgd2lkdGggfSA9IGFjdGl2ZUxpbmsuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgICBzaGFkb3dMaW5rLmlkID0gJ3NoYWRvd0xpbmsnO1xuICAgICAgICAgIHNoYWRvd0xpbmsuc3R5bGUudG9wID0gYCR7YWN0aXZlTGluay5vZmZzZXRUb3B9cHhgO1xuICAgICAgICAgIHNoYWRvd0xpbmsuc3R5bGUubGVmdCA9IGAke2FjdGl2ZUxpbmsub2Zmc2V0TGVmdH1weGA7XG4gICAgICAgICAgc2hhZG93TGluay5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICAgICAgICBzaGFkb3dMaW5rLnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGA7XG5cbiAgICAgICAgICBhY3RpdmVMaW5rLnJlbW92ZUF0dHJpYnV0ZSgnYWN0aXZlJyk7XG4gICAgICAgICAgYWN0aXZlTGluay5zdHlsZS5oZWlnaHQgPSBgJHtoZWlnaHR9cHhgO1xuXG4gICAgICAgICAgdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ25hdicpLnByZXBlbmQoc2hhZG93TGluayk7XG4gICAgICAgICAgY29uc3QgbGVmdCA9IG5leHRMaW5rLm9mZnNldExlZnQgLSBhY3RpdmVMaW5rLm9mZnNldExlZnQ7XG4gICAgICAgICAgY29uc3QgdG9wID0gbmV4dExpbmsub2Zmc2V0VG9wIC0gYWN0aXZlTGluay5vZmZzZXRUb3A7XG5cbiAgICAgICAgICBzaGFkb3dMaW5rLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoJHtsZWZ0fXB4LCR7dG9wfXB4KWA7XG5cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIG5leHRMaW5rLnNldEF0dHJpYnV0ZSgnYWN0aXZlJywgdHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignbmF2JykucmVtb3ZlQ2hpbGQoc2hhZG93TGluayk7XG4gICAgICAgICAgICB0aGlzLl9pc0xvY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnY2xpY2snLCBkZXRhaWwpO1xuICAgICAgICAgIH0sIDI1MCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV4dExpbmsuc2V0QXR0cmlidXRlKCdhY3RpdmUnLCB0cnVlKTtcbiAgICAgICAgICB0aGlzLl9pc0xvY2tlZCA9IGZhbHNlO1xuICAgICAgICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2NsaWNrJywgZGV0YWlsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgLyoqIEBwcm90ZWN0ZWQgKi9cbiAgICB0aGlzLl9yb3V0ZXMgPSBbXTtcbiAgICB0aGlzLnZlcnRpY2FsID0gZmFsc2U7XG4gIH1cblxuICBzZXQgcm91dGVzKHJvdXRlcykge1xuICAgIGlmIChyb3V0ZXMpIHtcbiAgICAgIFByb21pc2UucmVzb2x2ZShyb3V0ZXMpLnRoZW4oKF9yb3V0ZXMpID0+IHtcbiAgICAgICAgaWYgKCFpc1NhbWVSb3V0ZXModGhpcy5fcm91dGVzLCBfcm91dGVzKSkge1xuICAgICAgICAgIHRoaXMuX3JvdXRlcyA9IF9yb3V0ZXM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIF9nZXRMaW5rKHJvdXRlLCBpbmRleCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocm91dGUpXG4gICAgICAudGhlbigoX3JvdXRlKSA9PiB7XG4gICAgICAgIHJldHVybiBodG1sYCA8Z3YtbGlua1xuICAgICAgICAgIEBndi1saW5rOmNsaWNrPSR7dGhpcy5fb25DbGlja31cbiAgICAgICAgICAuYWN0aXZlPVwiJHtfcm91dGUuYWN0aXZlfVwiXG4gICAgICAgICAgLmljb249XCIke19yb3V0ZS5pY29ufVwiXG4gICAgICAgICAgLnBhdGg9XCIke19yb3V0ZS5wYXRofVwiXG4gICAgICAgICAgLnRhcmdldD1cIiR7X3JvdXRlLnRhcmdldH1cIlxuICAgICAgICAgID9zbWFsbD1cIiR7dGhpcy5zbWFsbH1cIlxuICAgICAgICAgIC50aXRsZT1cIiR7X3JvdXRlLnRpdGxlfVwiXG4gICAgICAgICAgLmhlbHA9XCIke3VudGlsKF9yb3V0ZS5oZWxwLCBudWxsKX1cIlxuICAgICAgICAgID92ZXJ0aWNhbD1cIiR7dGhpcy52ZXJ0aWNhbH1cIlxuICAgICAgICA+PC9ndi1saW5rPmA7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgZGVsZXRlIHRoaXMuX3JvdXRlc1tpbmRleF07XG4gICAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZWQoX2NoYW5nZWRQcm9wZXJ0aWVzKSB7XG4gICAgaWYgKF9jaGFuZ2VkUHJvcGVydGllcy5oYXMoJ19yb3V0ZXMnKSkge1xuICAgICAgdGhpcy5fY29tcGFjdCA9IHRoaXMuX3JvdXRlcyAmJiB0aGlzLl9yb3V0ZXMubGVuZ3RoID4gNTtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMuX3JvdXRlcykge1xuICAgICAgcmV0dXJuIGh0bWxgPG5hdiBjbGFzcz1cIiR7Y2xhc3NNYXAoeyBjb21wYWN0OiB0aGlzLl9jb21wYWN0LCB2ZXJ0aWNhbDogdGhpcy52ZXJ0aWNhbCB9KX1cIj5cbiAgICAgICAgJHtyZXBlYXQoXG4gICAgICAgICAgdGhpcy5fcm91dGVzLFxuICAgICAgICAgIChyb3V0ZSkgPT4gcm91dGUsXG4gICAgICAgICAgKHJvdXRlLCBpbmRleCkgPT4gdW50aWwodGhpcy5fZ2V0TGluayhyb3V0ZSwgaW5kZXgpLCBodG1sYDxndi1saW5rIHNrZWxldG9uIC52ZXJ0aWNhbD1cIiR7dGhpcy52ZXJ0aWNhbH1cIj48L2d2LWxpbms+YCksXG4gICAgICAgICl9XG4gICAgICA8L25hdj5gO1xuICAgIH1cbiAgICByZXR1cm4gaHRtbGBgO1xuICB9XG59XG5cbndpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2d2LW5hdicsIEd2TmF2KTtcbiJdfQ==
@@ -20,7 +20,6 @@ import { classMap } from 'lit/directives/class-map';
20
20
  import { dispatchCustomEvent } from '../lib/events';
21
21
  import { ifDefined } from 'lit/directives/if-defined';
22
22
  import { styleMap } from 'lit/directives/style-map';
23
-
24
23
  /**
25
24
  * Option component
26
25
  *
@@ -39,94 +38,47 @@ import { styleMap } from 'lit/directives/style-map';
39
38
  * @cssprop {Length} [--gv-option-button--maw=200px] - Button max width
40
39
  * @cssprop {Length} [--gv-option-icon--s=64px] - Icon size
41
40
  */
41
+
42
42
  export class GvOption extends LitElement {
43
43
  static get properties() {
44
44
  return {
45
- options: { type: Array },
46
- _options: { type: Array, attribute: false },
47
- _hasDescription: { type: Array, attribute: false },
48
- value: { type: String, reflect: true },
49
- multiple: { type: Boolean },
50
- reverse: { type: Boolean },
51
- small: { type: Boolean },
52
- outlined: { type: Boolean },
53
- disabled: { type: Boolean, reflect: true },
45
+ options: {
46
+ type: Array
47
+ },
48
+ _options: {
49
+ type: Array,
50
+ attribute: false
51
+ },
52
+ _hasDescription: {
53
+ type: Array,
54
+ attribute: false
55
+ },
56
+ value: {
57
+ type: String,
58
+ reflect: true
59
+ },
60
+ multiple: {
61
+ type: Boolean
62
+ },
63
+ reverse: {
64
+ type: Boolean
65
+ },
66
+ small: {
67
+ type: Boolean
68
+ },
69
+ outlined: {
70
+ type: Boolean
71
+ },
72
+ disabled: {
73
+ type: Boolean,
74
+ reflect: true
75
+ }
54
76
  };
55
77
  }
56
78
 
57
79
  static get styles() {
58
- return [
59
- // language=CSS
60
- css`
61
- :host {
62
- box-sizing: border-box;
63
- display: inline-block;
64
- --gv-button--p: 5px;
65
- margin: 0.2rem;
66
- --bdrs: var(--gv-option--bdrs, 0.15rem);
67
- --maw: var(--gv-option-button--maw, 200px);
68
- }
69
-
70
- .box.description {
71
- display: grid;
72
- grid-gap: 0.5rem;
73
- }
74
-
75
- gv-button {
76
- margin: 0;
77
- }
78
-
79
- gv-button.description {
80
- flex: 1 1 var(--maw);
81
- max-width: var(--maw);
82
- }
83
-
84
- gv-button:not(.description) {
85
- margin: 0;
86
- --gv-button--bdrs: 0;
87
- --gv-button--bgc: var(--gv-option--bgc, var(--gv-theme-neutral-color-dark, #bfbfbf));
88
- }
89
-
90
- gv-button:not(.description).entry {
91
- --gv-button--bdrs: var(--bdrs) 0 0 var(--bdrs);
92
- }
93
-
94
- gv-button:not(.description).exit {
95
- --gv-button--bdrs: 0 var(--bdrs) var(--bdrs) 0;
96
- }
97
-
98
- .content {
99
- white-space: pre-line;
100
- --gv-icon--s: var(--gv-option-icon--s, 64px);
101
- display: flex;
102
- flex-direction: column;
103
- align-items: center;
104
- height: 100%;
105
- text-transform: none;
106
- }
107
-
108
- gv-image {
109
- height: 64px;
110
- width: 64px;
111
- --gv-image--of: fill;
112
- display: inline-flex;
113
- }
114
-
115
- .reverse .content {
116
- flex-direction: column-reverse;
117
- }
118
-
119
- .title {
120
- font-size: var(--gv-theme-font-size-l, 18px);
121
- font-weight: bold;
122
- margin: 0.5rem 0;
123
- }
124
-
125
- gv-button.description {
126
- margin: 0.5rem;
127
- }
128
- `,
129
- ];
80
+ return [// language=CSS
81
+ css`:host{box-sizing:border-box;display:inline-block;--gv-button--p:5px;margin:.2rem;--bdrs:var(--gv-option--bdrs, 0.15rem);--maw:var(--gv-option-button--maw, 200px)}.box.description{display:grid;grid-gap:.5rem}gv-button{margin:0}gv-button.description{flex:1 1 var(--maw);max-width:var(--maw)}gv-button:not(.description){margin:0;--gv-button--bdrs:0;--gv-button--bgc:var(--gv-option--bgc, var(--gv-theme-neutral-color-dark, #bfbfbf))}gv-button:not(.description).entry{--gv-button--bdrs:var(--bdrs) 0 0 var(--bdrs)}gv-button:not(.description).exit{--gv-button--bdrs:0 var(--bdrs) var(--bdrs) 0}.content{white-space:pre-line;--gv-icon--s:var(--gv-option-icon--s, 64px);display:flex;flex-direction:column;align-items:center;height:100%;text-transform:none}gv-image{height:64px;width:64px;--gv-image--of:fill;display:inline-flex}.reverse .content{flex-direction:column-reverse}.title{font-size:var(--gv-theme-font-size-l,18px);font-weight:700;margin:.5rem 0}gv-button.description{margin:.5rem}`];
130
82
  }
131
83
 
132
84
  constructor() {
@@ -138,11 +90,14 @@ export class GvOption extends LitElement {
138
90
  _onClick(option) {
139
91
  this.setValue(option);
140
92
  dispatchCustomEvent(this, 'select', option);
141
- this.dispatchEvent(new Event('input'), { bubbles: true, cancelable: true });
93
+ this.dispatchEvent(new Event('input'), {
94
+ bubbles: true,
95
+ cancelable: true
96
+ });
142
97
  }
143
98
 
144
99
  async performUpdate() {
145
- this.shadowRoot.querySelectorAll('gv-button').forEach((btn) => btn.performUpdate());
100
+ this.shadowRoot.querySelectorAll('gv-button').forEach(btn => btn.performUpdate());
146
101
  return super.performUpdate();
147
102
  }
148
103
 
@@ -150,7 +105,7 @@ export class GvOption extends LitElement {
150
105
  if (option) {
151
106
  if (this.multiple) {
152
107
  if (this.value.includes(option.id)) {
153
- this.value = this.value.filter((optId) => {
108
+ this.value = this.value.filter(optId => {
154
109
  return optId !== option.id;
155
110
  });
156
111
  } else {
@@ -164,9 +119,9 @@ export class GvOption extends LitElement {
164
119
 
165
120
  set options(options) {
166
121
  if (options) {
167
- Promise.all(options).then((_options) => {
122
+ Promise.all(options).then(_options => {
168
123
  this._options = _options;
169
- this._hasDescription = this._options.find((opt) => opt.description != null) != null;
124
+ this._hasDescription = this._options.find(opt => opt.description != null) != null;
170
125
  });
171
126
  }
172
127
  }
@@ -179,42 +134,19 @@ export class GvOption extends LitElement {
179
134
  return this.value === option.id;
180
135
  }
181
136
  }
137
+
182
138
  return false;
183
139
  }
184
140
 
185
141
  _renderOption(option, index) {
186
142
  const isActive = this.isActive(option);
187
- const outlined = this.outlined || (!isActive && this._hasDescription);
188
- return html`<gv-button
189
- .icon=${ifDefined(!this._hasDescription ? option.icon : null)}
190
- .iconRight=${ifDefined(!option.icon && option.iconRight ? option.iconRight : null)}
191
- .title="${ifDefined(option.title)}"
192
- .primary="${isActive}"
193
- .small="${this.small}"
194
- .disabled="${option.disabled || this.disabled}"
195
- @click="${this._onClick.bind(this, option)}"
196
- .outlined="${outlined}"
197
- class="${classMap({
198
- active: isActive,
199
- entry: index === 0,
200
- exit: index === this._options.length - 1,
201
- description: option.description != null,
202
- })}"
203
- >
204
- ${!this._hasDescription
205
- ? option.title != null
206
- ? option.label || option.title
207
- : ''
208
- : html`<div class="content">
209
- ${option.icon
210
- ? html`<gv-icon shape="${option.icon}"></gv-icon>`
211
- : option.image
212
- ? html`<gv-image src="${option.image}"></gv-image>`
213
- : ''}
214
- <div class="title">${option.title}</div>
215
- <div class="description-content" .innerHTML="${option.description}"></div>
216
- </div>`}
217
- </gv-button>`;
143
+ const outlined = this.outlined || !isActive && this._hasDescription;
144
+ return html`<gv-button .icon="${ifDefined(!this._hasDescription ? option.icon : null)}" .iconRight="${ifDefined(!option.icon && option.iconRight ? option.iconRight : null)}" .title="${ifDefined(option.title)}" .primary="${isActive}" .small="${this.small}" .disabled="${option.disabled || this.disabled}" @click="${this._onClick.bind(this, option)}" .outlined="${outlined}" class="${classMap({
145
+ active: isActive,
146
+ entry: index === 0,
147
+ exit: index === this._options.length - 1,
148
+ description: option.description != null
149
+ })}"> ${!this._hasDescription ? option.title != null ? option.label || option.title : '' : html`<div class="content"> ${option.icon ? html`<gv-icon shape="${option.icon}"></gv-icon>` : option.image ? html`<gv-image src="${option.image}"></gv-image>` : ''} <div class="title">${option.title}</div> <div class="description-content" .innerHTML="${option.description}"></div> </div>`} </gv-button>`;
218
150
  }
219
151
 
220
152
  render() {
@@ -222,21 +154,16 @@ export class GvOption extends LitElement {
222
154
  const classes = {
223
155
  box: true,
224
156
  description: this._hasDescription,
225
- reverse: this.reverse,
157
+ reverse: this.reverse
226
158
  };
227
- return html`<div
228
- class="${classMap(classes)}"
229
- style="${styleMap({ 'grid-template-columns': `repeat(${this._options.length}, auto)` })}"
230
- >
231
- ${repeat(
232
- this._options,
233
- (option) => option,
234
- (option, index) => html`${this._renderOption(option, index)}`,
235
- )}
236
- </div>`;
159
+ return html`<div class="${classMap(classes)}" style="${styleMap({
160
+ 'grid-template-columns': `repeat(${this._options.length}, auto)`
161
+ })}"> ${repeat(this._options, option => option, (option, index) => html`${this._renderOption(option, index)}`)} </div>`;
237
162
  }
163
+
238
164
  return html``;
239
165
  }
240
- }
241
166
 
167
+ }
242
168
  window.customElements.define('gv-option', GvOption);
169
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL21vbGVjdWxlcy9ndi1vcHRpb24uanMiXSwibmFtZXMiOlsiY3NzIiwiTGl0RWxlbWVudCIsImh0bWwiLCJyZXBlYXQiLCJjbGFzc01hcCIsImRpc3BhdGNoQ3VzdG9tRXZlbnQiLCJpZkRlZmluZWQiLCJzdHlsZU1hcCIsIkd2T3B0aW9uIiwicHJvcGVydGllcyIsIm9wdGlvbnMiLCJ0eXBlIiwiQXJyYXkiLCJfb3B0aW9ucyIsImF0dHJpYnV0ZSIsIl9oYXNEZXNjcmlwdGlvbiIsInZhbHVlIiwiU3RyaW5nIiwicmVmbGVjdCIsIm11bHRpcGxlIiwiQm9vbGVhbiIsInJldmVyc2UiLCJzbWFsbCIsIm91dGxpbmVkIiwiZGlzYWJsZWQiLCJzdHlsZXMiLCJjb25zdHJ1Y3RvciIsIl9vbkNsaWNrIiwib3B0aW9uIiwic2V0VmFsdWUiLCJkaXNwYXRjaEV2ZW50IiwiRXZlbnQiLCJidWJibGVzIiwiY2FuY2VsYWJsZSIsInBlcmZvcm1VcGRhdGUiLCJzaGFkb3dSb290IiwicXVlcnlTZWxlY3RvckFsbCIsImZvckVhY2giLCJidG4iLCJpbmNsdWRlcyIsImlkIiwiZmlsdGVyIiwib3B0SWQiLCJQcm9taXNlIiwiYWxsIiwidGhlbiIsImZpbmQiLCJvcHQiLCJkZXNjcmlwdGlvbiIsImlzQWN0aXZlIiwiX3JlbmRlck9wdGlvbiIsImluZGV4IiwiaWNvbiIsImljb25SaWdodCIsInRpdGxlIiwiYmluZCIsImFjdGl2ZSIsImVudHJ5IiwiZXhpdCIsImxlbmd0aCIsImxhYmVsIiwiaW1hZ2UiLCJyZW5kZXIiLCJjbGFzc2VzIiwiYm94Iiwid2luZG93IiwiY3VzdG9tRWxlbWVudHMiLCJkZWZpbmUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLEdBQVQsRUFB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QVg7QUE4QkQ7O0FBRURjLEVBQUFBLE1BQU0sR0FBRztBQUNQLFFBQUksS0FBS2pELFFBQVQsRUFBbUI7QUFDakIsWUFBTWtELE9BQU8sR0FBRztBQUNkQyxRQUFBQSxHQUFHLEVBQUUsSUFEUztBQUVkaEIsUUFBQUEsV0FBVyxFQUFFLEtBQUtqQyxlQUZKO0FBR2RNLFFBQUFBLE9BQU8sRUFBRSxLQUFLQTtBQUhBLE9BQWhCO0FBS0EsYUFBT25CLElBQUksZUFDQUUsUUFBUSxDQUFDMkQsT0FBRCxDQURSLFlBRUF4RCxRQUFRLENBQUM7QUFBRSxpQ0FBMEIsVUFBUyxLQUFLTSxRQUFMLENBQWM4QyxNQUFPO0FBQTFELE9BQUQsQ0FGUixNQUlQeEQsTUFBTSxDQUNOLEtBQUtVLFFBREMsRUFFTGUsTUFBRCxJQUFZQSxNQUZOLEVBR04sQ0FBQ0EsTUFBRCxFQUFTdUIsS0FBVCxLQUFtQmpELElBQUksR0FBRyxLQUFLZ0QsYUFBTCxDQUFtQnRCLE1BQW5CLEVBQTJCdUIsS0FBM0IsQ0FBSCxFQUhqQixDQUpDLFNBQVg7QUFVRDs7QUFDRCxXQUFPakQsSUFBSSxFQUFYO0FBQ0Q7O0FBck1zQztBQXdNekMrRCxNQUFNLENBQUNDLGNBQVAsQ0FBc0JDLE1BQXRCLENBQTZCLFdBQTdCLEVBQTBDM0QsUUFBMUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgY3NzLCBMaXRFbGVtZW50LCBodG1sIH0gZnJvbSAnbGl0JztcbmltcG9ydCAnLi4vYXRvbXMvZ3YtYnV0dG9uJztcbmltcG9ydCB7IHJlcGVhdCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlcGVhdCc7XG5pbXBvcnQgeyBjbGFzc01hcCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL2NsYXNzLW1hcCc7XG5pbXBvcnQgeyBkaXNwYXRjaEN1c3RvbUV2ZW50IH0gZnJvbSAnLi4vbGliL2V2ZW50cyc7XG5pbXBvcnQgeyBpZkRlZmluZWQgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9pZi1kZWZpbmVkJztcbmltcG9ydCB7IHN0eWxlTWFwIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvc3R5bGUtbWFwJztcblxuLyoqXG4gKiBPcHRpb24gY29tcG9uZW50XG4gKlxuICogIyMgRGV0YWlsc1xuICogKiBoYXMgQHRoZW1lIGZhY2V0XG4gKlxuICogQGF0dHIge0FycmF5PHtpZCwgdGl0bGUsIGljb24/LCBhY3RpdmU/LCBkZXNjcmlwdGlvbj8sIGxhYmVsP30+fSBvcHRpb25zIC0gQW4gYXJyYXkgb2Ygb3B0aW9ucy5cbiAqIEBhdHRyIHtTdHJpbmd8QXJyYXl9IHZhbHVlIC0gU2VsZWN0ZWQgdmFsdWUgaWQsIGFycmF5IHdpdGggbXVsdGlwbGUgb3B0aW9uIGlkcy5cbiAqIEBhdHRyIHtCb29sZWFufSBtdWx0aXBsZSAtIElmIHRydWUsIGNhbiBjaG9vc2Ugc2V2ZXJhbCBvcHRpb25cbiAqIEBhdHRyIHtCb29sZWFufSByZXZlcnNlIC0gSWYgdHJ1ZSwgdGl0bGUgYW5kIGRlc2NyaXB0aW9uIGFyZSByZXZlcnNlZC5cbiAqIEBhdHRyIHtCb29sZWFufSBzbWFsbCAtIElmIHRydWUsIHVzZSBzbWFsbCBidXR0b24gZm9yIG9wdGlvbnNcbiAqIEBhdHRyIHtCb29sZWFufSBvdXRsaW5lZCAtIElmIHRydWUsIHVzZSBvdXRsaW5lZCBidXR0b24gZm9yIG9wdGlvbnNcbiAqXG4gKiBAY3NzcHJvcCB7Q29sb3J9IFstLWd2LW9wdGlvbi0tYmdjPXZhcigtLWd2LXRoZW1lLW5ldXRyYWwtY29sb3ItZGFyaywgI2JmYmZiZildIC0gQmFja2dyb3VuZCBjb2xvclxuICogQGNzc3Byb3Age0xlbmd0aH0gWy0tZ3Ytb3B0aW9uLS1iZHJzPTAuMTVyZW1dIC0gQm9yZGVyIHJhZGl1c1xuICogQGNzc3Byb3Age0xlbmd0aH0gWy0tZ3Ytb3B0aW9uLWJ1dHRvbi0tbWF3PTIwMHB4XSAtIEJ1dHRvbiBtYXggd2lkdGhcbiAqIEBjc3Nwcm9wIHtMZW5ndGh9IFstLWd2LW9wdGlvbi1pY29uLS1zPTY0cHhdIC0gSWNvbiBzaXplXG4gKi9cbmV4cG9ydCBjbGFzcyBHdk9wdGlvbiBleHRlbmRzIExpdEVsZW1lbnQge1xuICBzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9wdGlvbnM6IHsgdHlwZTogQXJyYXkgfSxcbiAgICAgIF9vcHRpb25zOiB7IHR5cGU6IEFycmF5LCBhdHRyaWJ1dGU6IGZhbHNlIH0sXG4gICAgICBfaGFzRGVzY3JpcHRpb246IHsgdHlwZTogQXJyYXksIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICAgIHZhbHVlOiB7IHR5cGU6IFN0cmluZywgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgbXVsdGlwbGU6IHsgdHlwZTogQm9vbGVhbiB9LFxuICAgICAgcmV2ZXJzZTogeyB0eXBlOiBCb29sZWFuIH0sXG4gICAgICBzbWFsbDogeyB0eXBlOiBCb29sZWFuIH0sXG4gICAgICBvdXRsaW5lZDogeyB0eXBlOiBCb29sZWFuIH0sXG4gICAgICBkaXNhYmxlZDogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc3R5bGVzKCkge1xuICAgIHJldHVybiBbXG4gICAgICAvLyBsYW5ndWFnZT1DU1NcbiAgICAgIGNzc2BcbiAgICAgICAgOmhvc3Qge1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgIC0tZ3YtYnV0dG9uLS1wOiA1cHg7XG4gICAgICAgICAgbWFyZ2luOiAwLjJyZW07XG4gICAgICAgICAgLS1iZHJzOiB2YXIoLS1ndi1vcHRpb24tLWJkcnMsIDAuMTVyZW0pO1xuICAgICAgICAgIC0tbWF3OiB2YXIoLS1ndi1vcHRpb24tYnV0dG9uLS1tYXcsIDIwMHB4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5ib3guZGVzY3JpcHRpb24ge1xuICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgZ3JpZC1nYXA6IDAuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIGd2LWJ1dHRvbiB7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgZ3YtYnV0dG9uLmRlc2NyaXB0aW9uIHtcbiAgICAgICAgICBmbGV4OiAxIDEgdmFyKC0tbWF3KTtcbiAgICAgICAgICBtYXgtd2lkdGg6IHZhcigtLW1hdyk7XG4gICAgICAgIH1cblxuICAgICAgICBndi1idXR0b246bm90KC5kZXNjcmlwdGlvbikge1xuICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAtLWd2LWJ1dHRvbi0tYmRyczogMDtcbiAgICAgICAgICAtLWd2LWJ1dHRvbi0tYmdjOiB2YXIoLS1ndi1vcHRpb24tLWJnYywgdmFyKC0tZ3YtdGhlbWUtbmV1dHJhbC1jb2xvci1kYXJrLCAjYmZiZmJmKSk7XG4gICAgICAgIH1cblxuICAgICAgICBndi1idXR0b246bm90KC5kZXNjcmlwdGlvbikuZW50cnkge1xuICAgICAgICAgIC0tZ3YtYnV0dG9uLS1iZHJzOiB2YXIoLS1iZHJzKSAwIDAgdmFyKC0tYmRycyk7XG4gICAgICAgIH1cblxuICAgICAgICBndi1idXR0b246bm90KC5kZXNjcmlwdGlvbikuZXhpdCB7XG4gICAgICAgICAgLS1ndi1idXR0b24tLWJkcnM6IDAgdmFyKC0tYmRycykgdmFyKC0tYmRycykgMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb250ZW50IHtcbiAgICAgICAgICB3aGl0ZS1zcGFjZTogcHJlLWxpbmU7XG4gICAgICAgICAgLS1ndi1pY29uLS1zOiB2YXIoLS1ndi1vcHRpb24taWNvbi0tcywgNjRweCk7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgZ3YtaW1hZ2Uge1xuICAgICAgICAgIGhlaWdodDogNjRweDtcbiAgICAgICAgICB3aWR0aDogNjRweDtcbiAgICAgICAgICAtLWd2LWltYWdlLS1vZjogZmlsbDtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5yZXZlcnNlIC5jb250ZW50IHtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7XG4gICAgICAgIH1cblxuICAgICAgICAudGl0bGUge1xuICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tZ3YtdGhlbWUtZm9udC1zaXplLWwsIDE4cHgpO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgIG1hcmdpbjogMC41cmVtIDA7XG4gICAgICAgIH1cblxuICAgICAgICBndi1idXR0b24uZGVzY3JpcHRpb24ge1xuICAgICAgICAgIG1hcmdpbjogMC41cmVtO1xuICAgICAgICB9XG4gICAgICBgLFxuICAgIF07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubXVsdGlwbGUgPSBmYWxzZTtcbiAgICB0aGlzLnJldmVyc2UgPSBmYWxzZTtcbiAgfVxuXG4gIF9vbkNsaWNrKG9wdGlvbikge1xuICAgIHRoaXMuc2V0VmFsdWUob3B0aW9uKTtcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdzZWxlY3QnLCBvcHRpb24pO1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2lucHV0JyksIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIGFzeW5jIHBlcmZvcm1VcGRhdGUoKSB7XG4gICAgdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2d2LWJ1dHRvbicpLmZvckVhY2goKGJ0bikgPT4gYnRuLnBlcmZvcm1VcGRhdGUoKSk7XG4gICAgcmV0dXJuIHN1cGVyLnBlcmZvcm1VcGRhdGUoKTtcbiAgfVxuXG4gIHNldFZhbHVlKG9wdGlvbikge1xuICAgIGlmIChvcHRpb24pIHtcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlLmluY2x1ZGVzKG9wdGlvbi5pZCkpIHtcbiAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5maWx0ZXIoKG9wdElkKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gb3B0SWQgIT09IG9wdGlvbi5pZDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZhbHVlID0gWy4uLnRoaXMudmFsdWUsIG9wdGlvbi5pZF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBvcHRpb24uaWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0IG9wdGlvbnMob3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zKSB7XG4gICAgICBQcm9taXNlLmFsbChvcHRpb25zKS50aGVuKChfb3B0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gX29wdGlvbnM7XG4gICAgICAgIHRoaXMuX2hhc0Rlc2NyaXB0aW9uID0gdGhpcy5fb3B0aW9ucy5maW5kKChvcHQpID0+IG9wdC5kZXNjcmlwdGlvbiAhPSBudWxsKSAhPSBudWxsO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaXNBY3RpdmUob3B0aW9uKSB7XG4gICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlLmluY2x1ZGVzKG9wdGlvbi5pZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA9PT0gb3B0aW9uLmlkO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBfcmVuZGVyT3B0aW9uKG9wdGlvbiwgaW5kZXgpIHtcbiAgICBjb25zdCBpc0FjdGl2ZSA9IHRoaXMuaXNBY3RpdmUob3B0aW9uKTtcbiAgICBjb25zdCBvdXRsaW5lZCA9IHRoaXMub3V0bGluZWQgfHwgKCFpc0FjdGl2ZSAmJiB0aGlzLl9oYXNEZXNjcmlwdGlvbik7XG4gICAgcmV0dXJuIGh0bWxgPGd2LWJ1dHRvblxuICAgICAgLmljb249JHtpZkRlZmluZWQoIXRoaXMuX2hhc0Rlc2NyaXB0aW9uID8gb3B0aW9uLmljb24gOiBudWxsKX1cbiAgICAgIC5pY29uUmlnaHQ9JHtpZkRlZmluZWQoIW9wdGlvbi5pY29uICYmIG9wdGlvbi5pY29uUmlnaHQgPyBvcHRpb24uaWNvblJpZ2h0IDogbnVsbCl9XG4gICAgICAudGl0bGU9XCIke2lmRGVmaW5lZChvcHRpb24udGl0bGUpfVwiXG4gICAgICAucHJpbWFyeT1cIiR7aXNBY3RpdmV9XCJcbiAgICAgIC5zbWFsbD1cIiR7dGhpcy5zbWFsbH1cIlxuICAgICAgLmRpc2FibGVkPVwiJHtvcHRpb24uZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZH1cIlxuICAgICAgQGNsaWNrPVwiJHt0aGlzLl9vbkNsaWNrLmJpbmQodGhpcywgb3B0aW9uKX1cIlxuICAgICAgLm91dGxpbmVkPVwiJHtvdXRsaW5lZH1cIlxuICAgICAgY2xhc3M9XCIke2NsYXNzTWFwKHtcbiAgICAgICAgYWN0aXZlOiBpc0FjdGl2ZSxcbiAgICAgICAgZW50cnk6IGluZGV4ID09PSAwLFxuICAgICAgICBleGl0OiBpbmRleCA9PT0gdGhpcy5fb3B0aW9ucy5sZW5ndGggLSAxLFxuICAgICAgICBkZXNjcmlwdGlvbjogb3B0aW9uLmRlc2NyaXB0aW9uICE9IG51bGwsXG4gICAgICB9KX1cIlxuICAgID5cbiAgICAgICR7IXRoaXMuX2hhc0Rlc2NyaXB0aW9uXG4gICAgICAgID8gb3B0aW9uLnRpdGxlICE9IG51bGxcbiAgICAgICAgICA/IG9wdGlvbi5sYWJlbCB8fCBvcHRpb24udGl0bGVcbiAgICAgICAgICA6ICcnXG4gICAgICAgIDogaHRtbGA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgICAgICAgJHtvcHRpb24uaWNvblxuICAgICAgICAgICAgICA/IGh0bWxgPGd2LWljb24gc2hhcGU9XCIke29wdGlvbi5pY29ufVwiPjwvZ3YtaWNvbj5gXG4gICAgICAgICAgICAgIDogb3B0aW9uLmltYWdlXG4gICAgICAgICAgICAgID8gaHRtbGA8Z3YtaW1hZ2Ugc3JjPVwiJHtvcHRpb24uaW1hZ2V9XCI+PC9ndi1pbWFnZT5gXG4gICAgICAgICAgICAgIDogJyd9XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj4ke29wdGlvbi50aXRsZX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvbi1jb250ZW50XCIgLmlubmVySFRNTD1cIiR7b3B0aW9uLmRlc2NyaXB0aW9ufVwiPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PmB9XG4gICAgPC9ndi1idXR0b24+YDtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5fb3B0aW9ucykge1xuICAgICAgY29uc3QgY2xhc3NlcyA9IHtcbiAgICAgICAgYm94OiB0cnVlLFxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5faGFzRGVzY3JpcHRpb24sXG4gICAgICAgIHJldmVyc2U6IHRoaXMucmV2ZXJzZSxcbiAgICAgIH07XG4gICAgICByZXR1cm4gaHRtbGA8ZGl2XG4gICAgICAgIGNsYXNzPVwiJHtjbGFzc01hcChjbGFzc2VzKX1cIlxuICAgICAgICBzdHlsZT1cIiR7c3R5bGVNYXAoeyAnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJzogYHJlcGVhdCgke3RoaXMuX29wdGlvbnMubGVuZ3RofSwgYXV0bylgIH0pfVwiXG4gICAgICA+XG4gICAgICAgICR7cmVwZWF0KFxuICAgICAgICAgIHRoaXMuX29wdGlvbnMsXG4gICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLFxuICAgICAgICAgIChvcHRpb24sIGluZGV4KSA9PiBodG1sYCR7dGhpcy5fcmVuZGVyT3B0aW9uKG9wdGlvbiwgaW5kZXgpfWAsXG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5gO1xuICAgIH1cbiAgICByZXR1cm4gaHRtbGBgO1xuICB9XG59XG5cbndpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2d2LW9wdGlvbicsIEd2T3B0aW9uKTtcbiJdfQ==