@sbb-esta/lyne-elements 4.2.0 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/accordion/accordion.component.d.ts.map +1 -1
  2. package/accordion/accordion.component.js +12 -16
  3. package/action-group/action-group.component.d.ts.map +1 -1
  4. package/action-group/action-group.component.js +18 -21
  5. package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  6. package/autocomplete/autocomplete-base-element.js +25 -26
  7. package/autocomplete/autocomplete.component.d.ts.map +1 -1
  8. package/autocomplete/autocomplete.component.js +1 -1
  9. package/breadcrumb/breadcrumb-group/breadcrumb-group.component.d.ts +3 -1
  10. package/breadcrumb/breadcrumb-group/breadcrumb-group.component.d.ts.map +1 -1
  11. package/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +45 -52
  12. package/button/common.d.ts.map +1 -1
  13. package/button/common.js +5 -4
  14. package/button/mini-button/mini-button.component.d.ts +2 -2
  15. package/button/mini-button/mini-button.component.d.ts.map +1 -1
  16. package/button/mini-button/mini-button.component.js +22 -20
  17. package/button/mini-button-group/mini-button-group.component.d.ts.map +1 -1
  18. package/button/mini-button-group/mini-button-group.component.js +14 -10
  19. package/button/mini-button-link/mini-button-link.component.d.ts +21 -0
  20. package/button/mini-button-link/mini-button-link.component.d.ts.map +1 -0
  21. package/button/mini-button-link/mini-button-link.component.js +35 -0
  22. package/button/mini-button-link.d.ts +5 -0
  23. package/button/mini-button-link.d.ts.map +1 -0
  24. package/button/mini-button-link.js +4 -0
  25. package/button.d.ts +1 -0
  26. package/button.d.ts.map +1 -1
  27. package/button.js +28 -25
  28. package/chip/chip-group/chip-group.component.d.ts +2 -5
  29. package/chip/chip-group/chip-group.component.d.ts.map +1 -1
  30. package/chip/chip-group/chip-group.component.js +70 -68
  31. package/core/controllers/media-matchers-controller.js +2 -2
  32. package/core/styles/core.scss +19 -0
  33. package/core.css +28 -0
  34. package/custom-elements.json +1003 -312
  35. package/development/accordion/accordion.component.d.ts.map +1 -1
  36. package/development/accordion/accordion.component.js +2 -6
  37. package/development/action-group/action-group.component.d.ts.map +1 -1
  38. package/development/action-group/action-group.component.js +13 -22
  39. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  40. package/development/autocomplete/autocomplete-base-element.js +4 -2
  41. package/development/autocomplete/autocomplete.component.d.ts.map +1 -1
  42. package/development/autocomplete/autocomplete.component.js +2 -2
  43. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.d.ts +3 -1
  44. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.d.ts.map +1 -1
  45. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +26 -29
  46. package/development/button/common.d.ts.map +1 -1
  47. package/development/button/common.js +3 -2
  48. package/development/button/mini-button/mini-button.component.d.ts +2 -2
  49. package/development/button/mini-button/mini-button.component.d.ts.map +1 -1
  50. package/development/button/mini-button/mini-button.component.js +7 -35
  51. package/development/button/mini-button-group/mini-button-group.component.d.ts.map +1 -1
  52. package/development/button/mini-button-group/mini-button-group.component.js +8 -4
  53. package/development/button/mini-button-link/mini-button-link.component.d.ts +21 -0
  54. package/development/button/mini-button-link/mini-button-link.component.d.ts.map +1 -0
  55. package/development/button/mini-button-link/mini-button-link.component.js +47 -0
  56. package/development/button/mini-button-link.d.ts +5 -0
  57. package/development/button/mini-button-link.d.ts.map +1 -0
  58. package/development/button/mini-button-link.js +5 -0
  59. package/development/button.d.ts +1 -0
  60. package/development/button.d.ts.map +1 -1
  61. package/development/button.js +6 -3
  62. package/development/chip/chip-group/chip-group.component.d.ts +2 -5
  63. package/development/chip/chip-group/chip-group.component.d.ts.map +1 -1
  64. package/development/chip/chip-group/chip-group.component.js +78 -14
  65. package/development/core/controllers/media-matchers-controller.js +1 -1
  66. package/development/dialog/dialog-actions/dialog-actions.component.js +2 -1
  67. package/development/divider/divider.component.d.ts +2 -2
  68. package/development/divider/divider.component.d.ts.map +1 -1
  69. package/development/divider/divider.component.js +4 -6
  70. package/development/expansion-panel/expansion-panel/expansion-panel.component.d.ts.map +1 -1
  71. package/development/expansion-panel/expansion-panel/expansion-panel.component.js +39 -34
  72. package/development/expansion-panel/expansion-panel-content/expansion-panel-content.component.d.ts.map +1 -1
  73. package/development/expansion-panel/expansion-panel-content/expansion-panel-content.component.js +15 -13
  74. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +23 -21
  75. package/development/form-field/form-field/form-field.component.d.ts +2 -0
  76. package/development/form-field/form-field/form-field.component.d.ts.map +1 -1
  77. package/development/form-field/form-field/form-field.component.js +6 -2
  78. package/development/image/image.component.js +1 -1
  79. package/development/lead-container/lead-container.component.d.ts +3 -1
  80. package/development/lead-container/lead-container.component.d.ts.map +1 -1
  81. package/development/lead-container/lead-container.component.js +7 -2
  82. package/development/{mini-button-common-CWTMR_Lu.js → mini-button-label-common-DzMdb-kV.js} +37 -3
  83. package/development/navigation/navigation-section/navigation-section.component.js +4 -4
  84. package/development/{sbb-tokens-CZCt5L4q.js → sbb-tokens-DQT_xEIZ.js} +7 -7
  85. package/dialog/dialog-actions/dialog-actions.component.js +1 -1
  86. package/divider/divider.component.d.ts +2 -2
  87. package/divider/divider.component.d.ts.map +1 -1
  88. package/divider/divider.component.js +12 -12
  89. package/expansion-panel/expansion-panel/expansion-panel.component.d.ts.map +1 -1
  90. package/expansion-panel/expansion-panel/expansion-panel.component.js +31 -31
  91. package/expansion-panel/expansion-panel-content/expansion-panel-content.component.d.ts.map +1 -1
  92. package/expansion-panel/expansion-panel-content/expansion-panel-content.component.js +10 -14
  93. package/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +19 -19
  94. package/form-field/form-field/form-field.component.d.ts +2 -0
  95. package/form-field/form-field/form-field.component.d.ts.map +1 -1
  96. package/form-field/form-field/form-field.component.js +5 -1
  97. package/image/image.component.js +1 -1
  98. package/index.d.ts +2 -0
  99. package/index.js +2 -0
  100. package/lead-container/lead-container.component.d.ts +3 -1
  101. package/lead-container/lead-container.component.d.ts.map +1 -1
  102. package/lead-container/lead-container.component.js +9 -8
  103. package/{mini-button-common-Bb4ri3Rn.js → mini-button-label-common-ps7PVXtB.js} +4 -3
  104. package/navigation/navigation-section/navigation-section.component.js +1 -1
  105. package/off-brand-theme.css +28 -0
  106. package/package.json +6 -1
  107. package/safety-theme.css +28 -0
  108. package/{sbb-tokens-DruExozg.js → sbb-tokens-HiNSQasB.js} +6 -6
  109. package/standard-theme.css +28 -0
@@ -9,14 +9,16 @@ import { __esDecorate, __runInitializers } from "tslib";
9
9
  import { css, LitElement, isServer, html } from "lit";
10
10
  import { customElement, property } from "lit/decorators.js";
11
11
  import { isArrowKeyPressed, getNextElementIndex } from "../../core/a11y.js";
12
- import { SbbLanguageController } from "../../core/controllers.js";
13
- import { isLean } from "../../core/dom.js";
12
+ import { SbbLanguageController, SbbPropertyWatcherController } from "../../core/controllers.js";
13
+ import { isLean } from "../../core/dom/lean-context.js";
14
14
  import { i18nSelectionRequired, i18nChipGroupInputDescription } from "../../core/i18n.js";
15
15
  import { SbbRequiredMixin, SbbDisabledMixin, SbbNegativeMixin, SbbFormAssociatedMixin, SbbElementInternalsMixin } from "../../core/mixins.js";
16
16
  import { boxSizingStyles } from "../../core/styles.js";
17
17
  import { SbbChipElement } from "../chip.js";
18
18
  const style = css`:host {
19
19
  --sbb-chip-group-input-min-width: 9.375rem;
20
+ --_sbb-chip-group-margin-block-start-default: 0.125rem;
21
+ --_sbb-chip-group-margin-block-start-default-large: 0.21875rem;
20
22
  max-width: 100%;
21
23
  }
22
24
 
@@ -29,8 +31,69 @@ const style = css`:host {
29
31
  }
30
32
  }
31
33
 
34
+ :host(:is(:state(without-label),[state--without-label]):is(:state(size-s),[state--size-s]):not(:is(:state(empty),[state--empty]))) {
35
+ --sbb-chip-group-margin-block: 0 0.4375rem;
36
+ }
37
+ @media (min-width: calc(64rem)) {
38
+ :host(:is(:state(without-label),[state--without-label]):is(:state(size-s),[state--size-s]):not(:is(:state(empty),[state--empty]))) {
39
+ --sbb-chip-group-margin-block: 0 0.3125rem;
40
+ }
41
+ }
42
+
43
+ :host(:is(:is(:state(size-l),[state--size-l]), :is(:state(size-m),[state--size-m]))) {
44
+ --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default) var(0);
45
+ }
46
+ @media (min-width: calc(64rem)) {
47
+ :host(:is(:is(:state(size-l),[state--size-l]), :is(:state(size-m),[state--size-m]))) {
48
+ --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default-large) var(0);
49
+ }
50
+ }
51
+
52
+ :host(:is(:state(without-label),[state--without-label]):is(:state(size-m),[state--size-m]):not(:is(:state(empty),[state--empty]))) {
53
+ --sbb-chip-group-margin-block: 0.1875rem 0.6875rem;
54
+ }
55
+ @media (min-width: calc(64rem)) {
56
+ :host(:is(:state(without-label),[state--without-label]):is(:state(size-m),[state--size-m]):not(:is(:state(empty),[state--empty]))) {
57
+ --sbb-chip-group-margin-block: 0.1875rem 0.875rem;
58
+ }
59
+ }
60
+
61
+ :host(:not(:is(:state(without-label),[state--without-label])):is(:state(size-m),[state--size-m]):not(:is(:state(empty),[state--empty]))) {
62
+ --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default)
63
+ var(--_sbb-chip-group-margin-block-start-default-large);
64
+ }
65
+ @media (min-width: calc(64rem)) {
66
+ :host(:not(:is(:state(without-label),[state--without-label])):is(:state(size-m),[state--size-m]):not(:is(:state(empty),[state--empty]))) {
67
+ --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default-large)
68
+ var(--_sbb-chip-group-margin-block-start-default-large);
69
+ }
70
+ }
71
+
72
+ :host(:is(:state(without-label),[state--without-label]):is(:state(size-l),[state--size-l]):not(:is(:state(empty),[state--empty]))) {
73
+ --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default)
74
+ 1rem;
75
+ }
76
+ @media (min-width: calc(64rem)) {
77
+ :host(:is(:state(without-label),[state--without-label]):is(:state(size-l),[state--size-l]):not(:is(:state(empty),[state--empty]))) {
78
+ --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default-large)
79
+ 1.25rem;
80
+ }
81
+ }
82
+
83
+ :host(:not(:is(:state(without-label),[state--without-label])):is(:state(size-l),[state--size-l]):not(:is(:state(empty),[state--empty]))) {
84
+ --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default)
85
+ 0.46875rem;
86
+ }
87
+ @media (min-width: calc(64rem)) {
88
+ :host(:not(:is(:state(without-label),[state--without-label])):is(:state(size-l),[state--size-l]):not(:is(:state(empty),[state--empty]))) {
89
+ --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default-large)
90
+ 0.46875rem;
91
+ }
92
+ }
93
+
32
94
  ::slotted(input) {
33
95
  flex: 1 1 var(--sbb-chip-group-input-min-width);
96
+ max-height: 1.5rem;
34
97
  }
35
98
 
36
99
  ::slotted(sbb-chip) {
@@ -69,10 +132,14 @@ let SbbChipGroupElement = (() => {
69
132
  __privateSet(this, _displayWith_accessor_storage, (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _displayWith_initializers, null)));
70
133
  __privateSet(this, _separatorKeys_accessor_storage, (__runInitializers(this, _displayWith_extraInitializers), __runInitializers(this, _separatorKeys_initializers, ["Enter"])));
71
134
  this._inputAttributeObserver = (__runInitializers(this, _separatorKeys_extraInitializers), !isServer ? new MutationObserver(() => this._reactToInputChanges()) : null);
72
- this._formFieldAttributeObserver = !isServer ? new MutationObserver(() => this._inheritSize()) : null;
73
135
  this._language = new SbbLanguageController(this);
74
136
  this.addEventListener?.(SbbChipElement.events.requestdelete, (ev) => this._deleteChip(ev.target));
75
137
  this.addEventListener?.("keydown", (ev) => this._onChipKeyDown(ev));
138
+ this.addController(new SbbPropertyWatcherController(this, () => this.closest("sbb-form-field"), {
139
+ size: (formField) => this._updateSize(formField.size),
140
+ label: (formField) => this._updateLabelState(formField),
141
+ hiddenLabel: (formField) => this._updateLabelState(formField)
142
+ }));
76
143
  }
77
144
  /** Value of the form element. */
78
145
  set value(value) {
@@ -110,6 +177,9 @@ let SbbChipGroupElement = (() => {
110
177
  set separatorKeys(value) {
111
178
  __privateSet(this, _separatorKeys_accessor_storage, value);
112
179
  }
180
+ _updateLabelState(formField) {
181
+ this.toggleState("without-label", !formField.label || formField.hiddenLabel);
182
+ }
113
183
  connectedCallback() {
114
184
  super.connectedCallback();
115
185
  this._setupComponent();
@@ -174,14 +244,8 @@ let SbbChipGroupElement = (() => {
174
244
  attributeFilter: ["readonly", "disabled"]
175
245
  });
176
246
  }
177
- this._inheritSize();
178
- this._formFieldAttributeObserver?.disconnect();
179
- const formField = this.closest("sbb-form-field");
180
- if (formField) {
181
- this._formFieldAttributeObserver?.observe(formField, {
182
- attributes: true,
183
- attributeFilter: ["size"]
184
- });
247
+ if (!this._previousSize || !this.closest("sbb-form-field")) {
248
+ this._updateSize(isLean() ? "s" : "m");
185
249
  }
186
250
  this.toggleState("empty", this.value.length === 0);
187
251
  this._reactToInputChanges();
@@ -314,11 +378,11 @@ let SbbChipGroupElement = (() => {
314
378
  c.negative = this.negative;
315
379
  });
316
380
  }
317
- _inheritSize() {
381
+ _updateSize(size) {
318
382
  if (this._previousSize) {
319
383
  this.internals.states.delete(`size-${this._previousSize}`);
320
384
  }
321
- this._previousSize = this.closest("sbb-form-field")?.size ?? (isLean() ? "s" : "m");
385
+ this._previousSize = size;
322
386
  if (this._previousSize) {
323
387
  this.internals.states.add(`size-${this._previousSize}`);
324
388
  }
@@ -363,4 +427,4 @@ let SbbChipGroupElement = (() => {
363
427
  export {
364
428
  SbbChipGroupElement
365
429
  };
366
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jaGlwL2NoaXAtZ3JvdXAvY2hpcC1ncm91cC5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgaXNTZXJ2ZXIsXG4gIExpdEVsZW1lbnQsXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZ2V0TmV4dEVsZW1lbnRJbmRleCwgaXNBcnJvd0tleVByZXNzZWQgfSBmcm9tICcuLi8uLi9jb3JlL2ExMXkudHMnO1xuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy50cyc7XG5pbXBvcnQgeyBpc0xlYW4gfSBmcm9tICcuLi8uLi9jb3JlL2RvbS50cyc7XG5pbXBvcnQgeyBpMThuQ2hpcEdyb3VwSW5wdXREZXNjcmlwdGlvbiwgaTE4blNlbGVjdGlvblJlcXVpcmVkIH0gZnJvbSAnLi4vLi4vY29yZS9pMThuLnRzJztcbmltcG9ydCB7XG4gIHR5cGUgRm9ybVJlc3RvcmVSZWFzb24sXG4gIHR5cGUgRm9ybVJlc3RvcmVTdGF0ZSxcbiAgU2JiRGlzYWJsZWRNaXhpbixcbiAgU2JiRWxlbWVudEludGVybmFsc01peGluLFxuICBTYmJGb3JtQXNzb2NpYXRlZE1peGluLFxuICBTYmJOZWdhdGl2ZU1peGluLFxuICBTYmJSZXF1aXJlZE1peGluLFxufSBmcm9tICcuLi8uLi9jb3JlL21peGlucy50cyc7XG5pbXBvcnQgeyBib3hTaXppbmdTdHlsZXMgfSBmcm9tICcuLi8uLi9jb3JlL3N0eWxlcy50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYkZvcm1GaWVsZEVsZW1lbnQgfSBmcm9tICcuLi8uLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPcHRpb25CYXNlRWxlbWVudCB9IGZyb20gJy4uLy4uL29wdGlvbi9vcHRpb24vb3B0aW9uLWJhc2UtZWxlbWVudC50cyc7XG5pbXBvcnQgeyBTYmJDaGlwRWxlbWVudCB9IGZyb20gJy4uL2NoaXAudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9jaGlwLWdyb3VwLnNjc3M/bGl0JmlubGluZSc7XG5cbmxldCBkaXNwbGF5V2l0aFdhcm5pbmdMb2dnZWQgPSBmYWxzZTtcblxuZXhwb3J0IGludGVyZmFjZSBTYmJDaGlwSW5wdXRUb2tlbkVuZEV2ZW50RGV0YWlsczxUID0gc3RyaW5nPiB7XG4gIC8qKiBUaGUgZWxlbWVudCB0aGF0IHRyaWdnZXJlZCB0aGUgY2hpcCBjcmVhdGlvbiAqL1xuICBvcmlnaW46ICdpbnB1dCcgfCAnYXV0b2NvbXBsZXRlJztcbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgbmV3IGNoaXAuIEVpdGhlciB0aGUgaW5wdXQgb3IgdGhlIG9wdGlvbiB2YWx1ZSBkZXBlbmRpbmcgb24gdGhlIG9yaWdpbi5cbiAgICogRWl0aGVyIHRoZSB2YWx1ZSBmcm9tIHRoZSBpbnB1dCB3aGljaCBpcyBhbHdheXMgYHN0cmluZ2Agb3IgdGhlIHZhbHVlIGZyb20gdGhlIHNlbGVjdGVkIG9wdGlvblxuICAgKiBmcm9tIGFuIGF1dG9jb21wbGV0ZSwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIHN0cmluZyBvciBhbnkgb3RoZXIgdHlwZS5cbiAgICovXG4gIHZhbHVlOiBUIHwgc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgLyoqIFNldCBhIG5ldyB2YWx1ZSBmb3IgdGhlIGNoaXAgdGhhdCB3aWxsIGJlIGNyZWF0ZWQgKi9cbiAgc2V0VmFsdWUodmFsdWU6IFQpOiB2b2lkO1xuICAvKiogU2V0IGEgbGFiZWwgZm9yIHRoZSBjaGlwIHRoYXQgd2lsbCBiZSBjcmVhdGVkICovXG4gIHNldExhYmVsKHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xufVxuXG4vKipcbiAqIFRoZSBgc2JiLWNoaXAtZ3JvdXBgIGNvbXBvbmVudCBpcyB1c2VkIGFzIGEgY29udGFpbmVyIGZvciBvbmUgb3IgbXVsdGlwbGUgYHNiYi1jaGlwYC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBgc2JiLWNoaXBgIGVsZW1lbnRzLlxuICogQG92ZXJyaWRlVHlwZSB2YWx1ZSAtIChUID0gc3RyaW5nW10pIHwgbnVsbFxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItY2hpcC1ncm91cCcpXG5jbGFzcyBTYmJDaGlwR3JvdXBFbGVtZW50PFQgPSBzdHJpbmc+IGV4dGVuZHMgU2JiUmVxdWlyZWRNaXhpbihcbiAgU2JiRGlzYWJsZWRNaXhpbihTYmJOZWdhdGl2ZU1peGluKFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW4oU2JiRWxlbWVudEludGVybmFsc01peGluKExpdEVsZW1lbnQpKSkpLFxuKSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgcm9sZSA9ICdsaXN0Ym94JztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgc3R5bGVdO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICBpbnB1dDogJ2lucHV0JyxcbiAgICBjaGFuZ2U6ICdjaGFuZ2UnLFxuICAgIGNoaXBpbnB1dHRva2VuZW5kOiAnY2hpcGlucHV0dG9rZW5lbmQnLFxuICB9IGFzIGNvbnN0O1xuXG4gIC8qKiBWYWx1ZSBvZiB0aGUgZm9ybSBlbGVtZW50LiAqL1xuICBAcHJvcGVydHkoeyB0eXBlOiBBcnJheSB9KVxuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiAoVCB8IG51bGwpW10gfCBudWxsKSB7XG4gICAgdmFsdWUgPSB2YWx1ZSA/PyBbXTtcbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMudmFsdWU7XG5cbiAgICAvLyBTdWJ0cmFjdCBmcm9tICdvbGRWYWx1ZScgdGhlIG5ldyAndmFsdWUnXG4gICAgLy8gVGhlIHJlc3VsdCBhcmUgdGhlIGNoaXBzIHRvIHJlbW92ZSAoaGFuZGxlIGR1cGxpY2F0ZXMpXG4gICAgY29uc3QgdG9SZW1vdmUgPSBbLi4ub2xkVmFsdWVdO1xuICAgIGZvciAoY29uc3QgYyBvZiB2YWx1ZSkge1xuICAgICAgaWYgKHRvUmVtb3ZlLmluY2x1ZGVzKGMpKSB7XG4gICAgICAgIHRvUmVtb3ZlLnNwbGljZSh0b1JlbW92ZS5pbmRleE9mKGMpLCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdG9SZW1vdmUuZm9yRWFjaCgodmFsdWUpID0+XG4gICAgICB0aGlzLl9jaGlwRWxlbWVudHMoKVxuICAgICAgICAuZmluZCgoYykgPT4gYy52YWx1ZSA9PT0gdmFsdWUpXG4gICAgICAgID8ucmVtb3ZlKCksXG4gICAgKTtcblxuICAgIC8vIFN1YnRyYWN0IGZyb20gdGhlIG5ldyAndmFsdWUnIHdoYXQgd2FzIGFscmVhZHkgcHJlc2VudFxuICAgIC8vIFRoZSByZXN1bHQgYXJlIHRoZSBuZXcgY2hpcHMgdG8gYWRkIChoYW5kbGUgZHVwbGljYXRlcylcbiAgICBjb25zdCB0b0FkZCA9IFsuLi52YWx1ZV07XG4gICAgZm9yIChjb25zdCBjIG9mIG9sZFZhbHVlKSB7XG4gICAgICBpZiAodG9BZGQuaW5jbHVkZXMoYykpIHtcbiAgICAgICAgdG9BZGQuc3BsaWNlKHRvQWRkLmluZGV4T2YoYyksIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICB0b0FkZC5mb3JFYWNoKChjKSA9PiB0aGlzLl9jcmVhdGVDaGlwRWxlbWVudChjKSk7XG4gIH1cbiAgcHVibGljIGdldCB2YWx1ZSgpOiAoVCB8IG51bGwpW10ge1xuICAgIHJldHVybiB0aGlzLl9jaGlwRWxlbWVudHMoKS5tYXAoKGMpID0+IGMudmFsdWUpO1xuICB9XG5cbiAgLyoqIEZ1bmN0aW9uIHRoYXQgbWFwcyBhIGNoaXAncyB2YWx1ZSB0byBpdHMgZGlzcGxheSB2YWx1ZS4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiBmYWxzZSB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZGlzcGxheVdpdGg6ICgodmFsdWU6IFQpID0+IHN0cmluZykgfCBudWxsID0gbnVsbDtcblxuICAvKiogVGhlIGFycmF5IG9mIGtleXMgdGhhdCB3aWxsIHRyaWdnZXIgYSBgY2hpcGlucHV0dG9rZW5lbmRgIGV2ZW50LiBEZWZhdWx0IGBbJ0VudGVyJ11gICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3NlcGFyYXRvci1rZXlzJywgdHlwZTogQXJyYXkgfSlcbiAgcHVibGljIGFjY2Vzc29yIHNlcGFyYXRvcktleXM6IHN0cmluZ1tdID0gWydFbnRlciddO1xuXG4gIC8qKlxuICAgKiBMaXN0ZW5zIHRvIHRoZSBjaGFuZ2VzIG9uIGByZWFkb25seWAgYW5kIGBkaXNhYmxlZGAgYXR0cmlidXRlcyBvZiBgPGlucHV0PmAuXG4gICAqL1xuICBwcml2YXRlIF9pbnB1dEF0dHJpYnV0ZU9ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB0aGlzLl9yZWFjdFRvSW5wdXRDaGFuZ2VzKCkpXG4gICAgOiBudWxsO1xuXG4gIC8qKlxuICAgKiBMaXN0ZW5zIHRvIHRoZSAnc2l6ZScgY2hhbmdlcyBvbiB0aGUgYHNiYi1mb3JtLWZpZWxkYC5cbiAgICovXG4gIHByaXZhdGUgX2Zvcm1GaWVsZEF0dHJpYnV0ZU9ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB0aGlzLl9pbmhlcml0U2l6ZSgpKVxuICAgIDogbnVsbDtcblxuICBwcml2YXRlIF9pbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX2lucHV0QWJvcnRDb250cm9sbGVyOiBBYm9ydENvbnRyb2xsZXIgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfcHJldmlvdXNTaXplPzogU2JiRm9ybUZpZWxkRWxlbWVudFsnc2l6ZSddO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oU2JiQ2hpcEVsZW1lbnQuZXZlbnRzLnJlcXVlc3RkZWxldGUsIChldikgPT5cbiAgICAgIHRoaXMuX2RlbGV0ZUNoaXAoZXYudGFyZ2V0IGFzIFNiYkNoaXBFbGVtZW50PFQ+KSxcbiAgICApO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2tleWRvd24nLCAoZXYpID0+IHRoaXMuX29uQ2hpcEtleURvd24oZXYpKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX3NldHVwQ29tcG9uZW50KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXMpOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChcbiAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZGlzYWJsZWQnKSB8fFxuICAgICAgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdmb3JtRGlzYWJsZWQnKSB8fFxuICAgICAgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCduZWdhdGl2ZScpXG4gICAgKSB7XG4gICAgICB0aGlzLl9wcm94eVN0YXRlVG9DaGlwcygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIGZvcm1SZXNldENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrKFxuICAgIHN0YXRlOiBGb3JtUmVzdG9yZVN0YXRlIHwgbnVsbCxcbiAgICBfcmVhc29uOiBGb3JtUmVzdG9yZVJlYXNvbixcbiAgKTogdm9pZCB7XG4gICAgaWYgKCFzdGF0ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fcmVhZEZvcm1EYXRhKHN0YXRlIGFzIEZvcm1EYXRhKS50aGVuKChhcnJheSkgPT4gKHRoaXMudmFsdWUgPSBhcnJheSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfcmVhZEZvcm1EYXRhKGZvcm1EYXRhOiBGb3JtRGF0YSk6IFByb21pc2U8VFtdPiB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgZm9ybURhdGFcbiAgICAgICAgLmdldEFsbCh0aGlzLm5hbWUpXG4gICAgICAgIC5tYXAoYXN5bmMgKGVudHJ5KSA9PlxuICAgICAgICAgIGVudHJ5IGluc3RhbmNlb2YgQmxvYiA/IEpTT04ucGFyc2UoYXdhaXQgZW50cnkudGV4dCgpKSA6IChlbnRyeSBhcyBUKSxcbiAgICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHNob3VsZFZhbGlkYXRlKG5hbWU6IFByb3BlcnR5S2V5IHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN1cGVyLnNob3VsZFZhbGlkYXRlKG5hbWUpIHx8IG5hbWUgPT09ICdyZXF1aXJlZCcgfHwgbmFtZSA9PT0gJ3ZhbHVlJztcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB2YWxpZGF0ZSgpOiB2b2lkIHtcbiAgICBzdXBlci52YWxpZGF0ZSgpO1xuICAgIGlmICh0aGlzLnJlcXVpcmVkICYmIHRoaXMudmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnNldFZhbGlkaXR5RmxhZygndmFsdWVNaXNzaW5nJywgaTE4blNlbGVjdGlvblJlcXVpcmVkW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW1vdmVWYWxpZGl0eUZsYWcoJ3ZhbHVlTWlzc2luZycpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBSZXR1cm4gdGhlIGxpc3Qgb2YgY2hpcCBlbGVtZW50cyAqKi9cbiAgcHJpdmF0ZSBfY2hpcEVsZW1lbnRzKCk6IFNiYkNoaXBFbGVtZW50PFQ+W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMucXVlcnlTZWxlY3RvckFsbD8uPFNiYkNoaXBFbGVtZW50PFQ+Pignc2JiLWNoaXAnKSA/PyBbXSk7XG4gIH1cblxuICAvKiogUmV0dXJuIHRoZSBsaXN0IG9mIGVuYWJsZWQgY2hpcCBlbGVtZW50cyAqKi9cbiAgcHJpdmF0ZSBfZW5hYmxlZENoaXBFbGVtZW50cygpOiBTYmJDaGlwRWxlbWVudDxUPltdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/Lignc2JiLWNoaXA6bm90KFtkaXNhYmxlZF0pJykgPz8gW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBDb21wb25lbnQoKTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG5cbiAgICAvLyBDb25uZWN0IHRvIHRoZSBpbnB1dFxuICAgIGlmIChpbnB1dCAmJiBpbnB1dCAhPT0gdGhpcy5faW5wdXRFbGVtZW50KSB7XG4gICAgICB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICAgIHRoaXMuX2lucHV0QXR0cmlidXRlT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudCA9IGlucHV0O1xuXG4gICAgICB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2KSA9PiB0aGlzLl9vbklucHV0S2V5RG93bihldiksIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnaW5wdXRBdXRvY29tcGxldGUnLFxuICAgICAgICAoZXZlbnQ6IEN1c3RvbUV2ZW50PHsgb3B0aW9uOiBTYmJPcHRpb25CYXNlRWxlbWVudDxUPiB9PikgPT4ge1xuICAgICAgICAgIHRoaXMuX2NyZWF0ZUNoaXBGcm9tSW5wdXQoJ2F1dG9jb21wbGV0ZScsIGV2ZW50LmRldGFpbD8ub3B0aW9uLnZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHNpZ25hbDogdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgdGhpcy5faW5wdXRBdHRyaWJ1dGVPYnNlcnZlcj8ub2JzZXJ2ZSh0aGlzLl9pbnB1dEVsZW1lbnQsIHtcbiAgICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ3JlYWRvbmx5JywgJ2Rpc2FibGVkJ10sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBJbmhlcml0IHNpemUgZnJvbSB0aGUgZm9ybS1maWVsZCBhbmQgb2JzZXJ2ZSBmb3IgY2hhbmdlc1xuICAgIHRoaXMuX2luaGVyaXRTaXplKCk7XG4gICAgdGhpcy5fZm9ybUZpZWxkQXR0cmlidXRlT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICBjb25zdCBmb3JtRmllbGQgPSB0aGlzLmNsb3Nlc3QoJ3NiYi1mb3JtLWZpZWxkJyk7XG4gICAgaWYgKGZvcm1GaWVsZCkge1xuICAgICAgdGhpcy5fZm9ybUZpZWxkQXR0cmlidXRlT2JzZXJ2ZXI/Lm9ic2VydmUoZm9ybUZpZWxkLCB7XG4gICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydzaXplJ10sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnRvZ2dsZVN0YXRlKCdlbXB0eScsIHRoaXMudmFsdWUubGVuZ3RoID09PSAwKTtcbiAgICB0aGlzLl9yZWFjdFRvSW5wdXRDaGFuZ2VzKCk7XG4gICAgdGhpcy5fdXBkYXRlSW5wdXREZXNjcmlwdGlvbigpO1xuICAgIHRoaXMudXBkYXRlRm9ybVZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIGZvciBrZXlib2FyZCBldmVudHMgb24gdGhlIGNoaXAgZWxlbWVudHNcbiAgICoqL1xuICBwcml2YXRlIF9vbkNoaXBLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnRUYXJnZXQgPSBldmVudC50YXJnZXQgYXMgU2JiQ2hpcEVsZW1lbnQ8VD47XG4gICAgaWYgKGV2ZW50VGFyZ2V0LmxvY2FsTmFtZSAhPT0gJ3NiYi1jaGlwJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEFycm93IGtleXMgYWxsb3cgbmF2aWdhdGlvbiBiZXR3ZWVuIGNoaXBzIGZvY3VzIHN0ZXBzXG4gICAgaWYgKGlzQXJyb3dLZXlQcmVzc2VkKGV2ZW50KSkge1xuICAgICAgY29uc3QgZm9jdXNTdGVwcyA9IHRoaXMuX2VuYWJsZWRDaGlwRWxlbWVudHMoKTtcbiAgICAgIGNvbnN0IG5leHQgPSBnZXROZXh0RWxlbWVudEluZGV4KGV2ZW50LCBmb2N1c1N0ZXBzLmluZGV4T2YoZXZlbnRUYXJnZXQpLCBmb2N1c1N0ZXBzLmxlbmd0aCk7XG4gICAgICBmb2N1c1N0ZXBzW25leHRdLmZvY3VzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICBpZiAoIWV2ZW50VGFyZ2V0LnJlYWRPbmx5ICYmICFldmVudFRhcmdldC5kaXNhYmxlZCkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5fZGVsZXRlQ2hpcChldmVudFRhcmdldCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbiBmb3Iga2V5Ym9hcmQgZXZlbnRzIG9uIHRoZSBpbnB1dFxuICAgKiovXG4gIHByaXZhdGUgX29uSW5wdXRLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICBpZiAoIXRoaXMuX2lucHV0RWxlbWVudCEudmFsdWUpIHtcbiAgICAgICAgICB0aGlzLl9mb2N1c0NoaXAoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gUHJldmVudHMgdGhlIGZvcm0gc3VibWl0XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIGlmIHRoZSB1c2VyIHR5cGVkIG9uZSBvZiB0aGUgc2VwYXJhdG9yIGtleXMsIHRyaWdnZXIgYSAnY2hpcGlucHV0dG9rZW5lbmQnIGV2ZW50XG4gICAgaWYgKHRoaXMuc2VwYXJhdG9yS2V5cy5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBwcmV2ZW50IHR5cGluZyB0aGUgc2VwYXJhdG9yIGtleSBpbnRvIHRoZSBpbnB1dFxuICAgICAgdGhpcy5fY3JlYXRlQ2hpcEZyb21JbnB1dCgnaW5wdXQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGlucHV0IGlzIG5vdCBlbXB0eSwgY3JlYXRlIGEgY2hpcCB3aXRoIGl0cyB2YWx1ZVxuICAgKi9cbiAgcHJpdmF0ZSBfY3JlYXRlQ2hpcEZyb21JbnB1dChvcmlnaW46ICdpbnB1dCcgfCAnYXV0b2NvbXBsZXRlJyA9ICdpbnB1dCcsIHZhbHVlPzogVCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0VmFsdWUgPSB2YWx1ZSA/PyB0aGlzLl9pbnB1dEVsZW1lbnQhLnZhbHVlLnRyaW0oKTtcbiAgICBpZiAoIWlucHV0VmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBldmVudERldGFpbDogU2JiQ2hpcElucHV0VG9rZW5FbmRFdmVudERldGFpbHM8VD4gPSB7XG4gICAgICBvcmlnaW46IG9yaWdpbixcbiAgICAgIHZhbHVlOiBpbnB1dFZhbHVlLFxuICAgICAgbGFiZWw6ICh2YWx1ZSA/IHRoaXMuZGlzcGxheVdpdGg/Lih2YWx1ZSkgOiBudWxsKSA/PyB1bmRlZmluZWQsXG4gICAgICBzZXRWYWx1ZTogKHZhbHVlOiBUKSA9PiAoZXZlbnREZXRhaWwudmFsdWUgPSB2YWx1ZSksXG4gICAgICBzZXRMYWJlbDogKGxhYmVsOiBzdHJpbmcpID0+IChldmVudERldGFpbC5sYWJlbCA9IGxhYmVsKSxcbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLl9kaXNwYXRjaENoaXBJbnB1dFRva2VuRW5kKGV2ZW50RGV0YWlsKSkge1xuICAgICAgcmV0dXJuOyAvLyBldmVudCBwcmV2ZW50ZWQ7IGRvIG5vdGhpbmcgKHRoZSBjb25zdW1lciBoYXMgdG8gY3JlYXRlIHRoZSBjaGlwKVxuICAgIH1cblxuICAgIHRoaXMuX2NyZWF0ZUNoaXBFbGVtZW50KGV2ZW50RGV0YWlsLnZhbHVlIGFzIFQsIGV2ZW50RGV0YWlsLmxhYmVsKTtcbiAgICB0aGlzLl9pbnB1dEVsZW1lbnQhLnZhbHVlID0gJyc7IC8vIEVtcHR5IHRoZSBpbnB1dFxuICAgIHRoaXMuX2VtaXRJbnB1dEV2ZW50cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGlzcGF0Y2hDaGlwSW5wdXRUb2tlbkVuZChldmVudERldGFpbDogU2JiQ2hpcElucHV0VG9rZW5FbmRFdmVudERldGFpbHM8VD4pOiBib29sZWFuIHtcbiAgICAvKipcbiAgICAgKiBAdHlwZSB7Q3VzdG9tRXZlbnQ8U2JiQ2hpcElucHV0VG9rZW5FbmRFdmVudERldGFpbHM+fVxuICAgICAqIE5vdGlmaWVzIHRoYXQgYSBjaGlwIGlzIGFib3V0IHRvIGJlIGNyZWF0ZWQuIENhbiBiZSBwcmV2ZW50ZWQuXG4gICAgICovXG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBDdXN0b21FdmVudDxTYmJDaGlwSW5wdXRUb2tlbkVuZEV2ZW50RGV0YWlsczxUPj4oJ2NoaXBpbnB1dHRva2VuZW5kJywge1xuICAgICAgICBkZXRhaWw6IGV2ZW50RGV0YWlsLFxuICAgICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICBjb21wb3NlZDogdHJ1ZSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9kZWxldGVDaGlwKGNoaXA6IFNiYkNoaXBFbGVtZW50PFQ+KTogdm9pZCB7XG4gICAgY29uc3QgY2hpcHMgPSB0aGlzLl9lbmFibGVkQ2hpcEVsZW1lbnRzKCk7XG4gICAgY2hpcC5yZW1vdmUoKTtcbiAgICB0aGlzLl9lbWl0SW5wdXRFdmVudHMoKTtcbiAgICB0aGlzLl9mb2N1c0NoaXAoY2hpcHMuaW5kZXhPZihjaGlwKSk7IC8vIEZvY3VzIHRoZSBuZXh0IGNoaXBcbiAgfVxuXG4gIC8qKlxuICAgKiBGb2N1cyBhbiBlbmFibGVkIGNoaXAuIElmIG5vbmUgYXJlIHByZXNlbnQsIGZvY3VzIHRoZSBpbnB1dFxuICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IG9mIHRoZSBlbmFibGVkIGNoaXAuIElmIG51bGwsIGZvY3VzIHRoZSBsYXN0IG9uZS5cbiAgICovXG4gIHByaXZhdGUgX2ZvY3VzQ2hpcChpbmRleD86IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGVuYWJsZWRDaGlwcyA9IHRoaXMuX2VuYWJsZWRDaGlwRWxlbWVudHMoKTtcblxuICAgIGlmIChpbmRleCAhPT0gdW5kZWZpbmVkICYmIGVuYWJsZWRDaGlwc1tpbmRleF0pIHtcbiAgICAgIGVuYWJsZWRDaGlwc1tpbmRleF0uZm9jdXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZW5hYmxlZENoaXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIGVuYWJsZWRDaGlwc1tlbmFibGVkQ2hpcHMubGVuZ3RoIC0gMV0uZm9jdXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pbnB1dEVsZW1lbnQ/LmZvY3VzKCk7XG4gIH1cblxuICBwcml2YXRlIF9lbWl0SW5wdXRFdmVudHMoKTogdm9pZCB7XG4gICAgLyoqIFRoZSBpbnB1dCBldmVudCBmaXJlcyB3aGVuIHRoZSB2YWx1ZSBoYXMgYmVlbiBjaGFuZ2VkIGFzIGEgZGlyZWN0IHJlc3VsdCBvZiBhIHVzZXIgYWN0aW9uLiAqL1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSW5wdXRFdmVudCgnaW5wdXQnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBtb2RpZmllcyB0aGUgZWxlbWVudCdzIHZhbHVlLlxuICAgICAqIFVubGlrZSB0aGUgaW5wdXQgZXZlbnQsIHRoZSBjaGFuZ2UgZXZlbnQgaXMgbm90IG5lY2Vzc2FyaWx5IGZpcmVkXG4gICAgICogZm9yIGVhY2ggYWx0ZXJhdGlvbiB0byBhbiBlbGVtZW50J3MgdmFsdWUuXG4gICAgICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZUNoaXBFbGVtZW50KHZhbHVlOiBUIHwgbnVsbCwgbGFiZWw/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbmV3Q2hpcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NiYi1jaGlwJykgYXMgU2JiQ2hpcEVsZW1lbnQ8VD47XG4gICAgbmV3Q2hpcC52YWx1ZSA9IHZhbHVlO1xuICAgIG5ld0NoaXAuaW5uZXJUZXh0ID0gbGFiZWwgPz8gKHZhbHVlID8gdGhpcy5kaXNwbGF5V2l0aD8uKHZhbHVlKSA6IG51bGwpID8/ICcnO1xuICAgIGlmIChcbiAgICAgIGltcG9ydC5tZXRhLmVudi5ERVYgJiZcbiAgICAgICFkaXNwbGF5V2l0aFdhcm5pbmdMb2dnZWQgJiZcbiAgICAgICFsYWJlbCAmJlxuICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgIXRoaXMuZGlzcGxheVdpdGhcbiAgICApIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYGRpc3BsYXlXaXRoIGhhcyBub3QgYmVlbiBzZXQgeWV0IGZvciBzYmItY2hpcC1ncm91cCBhbmQgdmFsdWUgaXMgYW4gb2JqZWN0LlxuICAgICAgICAgSWYgeW91IGFyZSB1c2luZyBvYmplY3QgdmFsdWVzLCB5b3UgbmVlZCB0byBwcm92aWRlIGRpc3BsYXlXaWR0aCBiZWZvcmVcbiAgICAgICAgIHNldHRpbmcgb3Igc2VsZWN0aW5nIGFueSB2YWx1ZS5gLFxuICAgICAgKTtcbiAgICAgIGRpc3BsYXlXaXRoV2FybmluZ0xvZ2dlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuaW5zZXJ0QmVmb3JlKG5ld0NoaXAsIHRoaXMuX2lucHV0RWxlbWVudCA/PyB0aGlzLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVhY3RUb0lucHV0Q2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gdGhpcy5faW5wdXRFbGVtZW50Py5kaXNhYmxlZCA/PyBmYWxzZTtcbiAgICB0aGlzLl9wcm94eVN0YXRlVG9DaGlwcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJveHlTdGF0ZVRvQ2hpcHMoKTogdm9pZCB7XG4gICAgdGhpcy5fY2hpcEVsZW1lbnRzKCkuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgYy5kaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5mb3JtRGlzYWJsZWQ7XG4gICAgICBjLnJlYWRPbmx5ID0gdGhpcy5faW5wdXRFbGVtZW50Py5oYXNBdHRyaWJ1dGUoJ3JlYWRvbmx5JykgPz8gZmFsc2U7XG4gICAgICBjLm5lZ2F0aXZlID0gdGhpcy5uZWdhdGl2ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaGVyaXRTaXplKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9wcmV2aW91c1NpemUpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5kZWxldGUoYHNpemUtJHt0aGlzLl9wcmV2aW91c1NpemV9YCk7XG4gICAgfVxuICAgIHRoaXMuX3ByZXZpb3VzU2l6ZSA9IHRoaXMuY2xvc2VzdCgnc2JiLWZvcm0tZmllbGQnKT8uc2l6ZSA/PyAoaXNMZWFuKCkgPyAncycgOiAnbScpO1xuICAgIGlmICh0aGlzLl9wcmV2aW91c1NpemUpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQoYHNpemUtJHt0aGlzLl9wcmV2aW91c1NpemV9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlSW5wdXREZXNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lucHV0RWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9pbnB1dEVsZW1lbnQuc2V0QXR0cmlidXRlKFxuICAgICAgJ2FyaWEtZGVzY3JpcHRpb24nLFxuICAgICAgYCR7aTE4bkNoaXBHcm91cElucHV0RGVzY3JpcHRpb25bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7dGhpcy52YWx1ZS5sZW5ndGh9YCxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWNoaXAtZ3JvdXBcIj5cbiAgICAgICAgPHNsb3QgQHNsb3RjaGFuZ2U9JHt0aGlzLl9zZXR1cENvbXBvbmVudH0+PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWNoaXAtZ3JvdXAnOiBTYmJDaGlwR3JvdXBFbGVtZW50O1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50RXZlbnRNYXAge1xuICAgIGNoaXBpbnB1dHRva2VuZW5kOiBDdXN0b21FdmVudDxTYmJDaGlwSW5wdXRUb2tlbkVuZEV2ZW50RGV0YWlsczxhbnk+PjtcbiAgfVxufVxuIl0sIm5hbWVzIjpbInZhbHVlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQThCQSxJQUFJLDJCQUEyQjtJQTBCekIsdUJBQW1CLE1BQUE7OzBCQUR4QixjQUFjLGdCQUFnQixDQUFDOzs7O0FBQ2MsTUFBQSxjQUFBLGlCQUM1QyxpQkFBaUIsaUJBQWlCLHVCQUF1Qix5QkFBeUIsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDOzs7Ozs7Ozs7QUFENUQsRUFBQSxtQkFBUSxZQUU3QztBQUFBLElBc0VDLGNBQUE7QUFDRSxZQUFBO0FBMUJGO0FBSUE7QUFKZ0IseUJBQUEsZ0NBL0NaLGtCQUFBLE1BQUEsMEJBQUEsR0FBbUIsa0JBQUEsTUFBQSwyQkErQ3NDLElBQUk7QUFJakQseUJBQUEsa0NBQUEsa0JBQUEsTUFBQSw4QkFBQSxHQUFBLGtCQUFBLE1BQUEsNkJBQTBCLENBQUMsT0FBTyxDQUFDO0FBSzNDLFdBQUEsMkJBQXVCLGtCQUFBLE1BQUEsZ0NBQUEsR0FBRyxDQUFDLFdBQy9CLElBQUksaUJBQWlCLE1BQU0sS0FBSyxxQkFBQSxDQUFzQixJQUN0RDtBQUtJLFdBQUEsOEJBQThCLENBQUMsV0FDbkMsSUFBSSxpQkFBaUIsTUFBTSxLQUFLLGFBQUEsQ0FBYyxJQUM5QztBQUlJLFdBQUEsWUFBWSxJQUFJLHNCQUFzQixJQUFJO0FBTWhELFdBQUssbUJBQW1CLGVBQWUsT0FBTyxlQUFlLENBQUMsT0FDNUQsS0FBSyxZQUFZLEdBQUcsTUFBMkIsQ0FBQztBQUdsRCxXQUFLLG1CQUFtQixXQUFXLENBQUMsT0FBTyxLQUFLLGVBQWUsRUFBRSxDQUFDO0FBQUEsSUFDcEU7QUFBQTtBQUFBLElBbkVBLElBQVcsTUFBTSxPQUEwQjtBQUN6QyxjQUFRLFNBQVMsQ0FBQTtBQUNqQixZQUFNLFdBQVcsS0FBSztBQUl0QixZQUFNLFdBQVcsQ0FBQyxHQUFHLFFBQVE7QUFDN0IsaUJBQVcsS0FBSyxPQUFPO0FBQ3JCLFlBQUksU0FBUyxTQUFTLENBQUMsR0FBRztBQUN4QixtQkFBUyxPQUFPLFNBQVMsUUFBUSxDQUFDLEdBQUcsQ0FBQztBQUFBLFFBQ3hDO0FBQUEsTUFDRjtBQUNBLGVBQVMsUUFBUSxDQUFDQSxXQUNoQixLQUFLLGdCQUNGLEtBQUssQ0FBQyxNQUFNLEVBQUUsVUFBVUEsTUFBSyxHQUM1QixRQUFRO0FBS2QsWUFBTSxRQUFRLENBQUMsR0FBRyxLQUFLO0FBQ3ZCLGlCQUFXLEtBQUssVUFBVTtBQUN4QixZQUFJLE1BQU0sU0FBUyxDQUFDLEdBQUc7QUFDckIsZ0JBQU0sT0FBTyxNQUFNLFFBQVEsQ0FBQyxHQUFHLENBQUM7QUFBQSxRQUNsQztBQUFBLE1BQ0Y7QUFDQSxZQUFNLFFBQVEsQ0FBQyxNQUFNLEtBQUssbUJBQW1CLENBQUMsQ0FBQztBQUFBLElBQ2pEO0FBQUEsSUFDQSxJQUFXLFFBQUs7QUFDZCxhQUFPLEtBQUssZ0JBQWdCLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSztBQUFBLElBQ2hEO0FBQUE7QUFBQSxJQUlBLElBQWdCLGNBQVc7QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBQTNCLElBQWdCLFlBQVcsT0FBQTtBQUFBLHlCQUFBLCtCQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUEsSUFJM0IsSUFBZ0IsZ0JBQWE7QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBQTdCLElBQWdCLGNBQWEsT0FBQTtBQUFBLHlCQUFBLGlDQUFBO0FBQUEsSUFBQTtBQUFBLElBK0JiLG9CQUFpQjtBQUMvQixZQUFNLGtCQUFBO0FBQ04sV0FBSyxnQkFBQTtBQUFBLElBQ1A7QUFBQSxJQUVtQixXQUFXLG1CQUFpQztBQUM3RCxZQUFNLFdBQVcsaUJBQWlCO0FBRWxDLFVBQ0Usa0JBQWtCLElBQUksVUFBVSxLQUNoQyxrQkFBa0IsSUFBSSxjQUFjLEtBQ3BDLGtCQUFrQixJQUFJLFVBQVUsR0FDaEM7QUFDQSxhQUFLLG1CQUFBO0FBQUEsTUFDUDtBQUFBLElBQ0Y7QUFBQTtBQUFBLElBR08sb0JBQWlCO0FBQ3RCLFdBQUssUUFBUTtBQUFBLElBQ2Y7QUFBQTtBQUFBLElBR08seUJBQ0wsT0FDQSxTQUEwQjtBQUUxQixVQUFJLENBQUMsT0FBTztBQUNWLGFBQUssUUFBUTtBQUNiO0FBQUEsTUFDRjtBQUVBLFdBQUssY0FBYyxLQUFpQixFQUFFLEtBQUssQ0FBQyxVQUFXLEtBQUssUUFBUSxLQUFNO0FBQUEsSUFDNUU7QUFBQSxJQUVRLE1BQU0sY0FBYyxVQUFrQjtBQUM1QyxhQUFPLFFBQVEsSUFDYixTQUNHLE9BQU8sS0FBSyxJQUFJLEVBQ2hCLElBQUksT0FBTyxVQUNWLGlCQUFpQixPQUFPLEtBQUssTUFBTSxNQUFNLE1BQU0sTUFBTSxJQUFLLEtBQVcsQ0FDdEU7QUFBQSxJQUVQO0FBQUEsSUFFbUIsZUFBZSxNQUE2QjtBQUM3RCxhQUFPLE1BQU0sZUFBZSxJQUFJLEtBQUssU0FBUyxjQUFjLFNBQVM7QUFBQSxJQUN2RTtBQUFBLElBRW1CLFdBQVE7QUFDekIsWUFBTSxTQUFBO0FBQ04sVUFBSSxLQUFLLFlBQVksS0FBSyxNQUFNLFdBQVcsR0FBRztBQUM1QyxhQUFLLGdCQUFnQixnQkFBZ0Isc0JBQXNCLEtBQUssVUFBVSxPQUFPLENBQUM7QUFBQSxNQUNwRixPQUFPO0FBQ0wsYUFBSyxtQkFBbUIsY0FBYztBQUFBLE1BQ3hDO0FBQUEsSUFDRjtBQUFBO0FBQUEsSUFHUSxnQkFBYTtBQUNuQixhQUFPLE1BQU0sS0FBSyxLQUFLLG1CQUFzQyxVQUFVLEtBQUssRUFBRTtBQUFBLElBQ2hGO0FBQUE7QUFBQSxJQUdRLHVCQUFvQjtBQUMxQixhQUFPLE1BQU0sS0FBSyxLQUFLLG1CQUFtQiwwQkFBMEIsS0FBSyxFQUFFO0FBQUEsSUFDN0U7QUFBQSxJQUVRLGtCQUFlO0FBQ3JCLFlBQU0sUUFBUSxLQUFLLGNBQWMsT0FBTztBQUd4QyxVQUFJLFNBQVMsVUFBVSxLQUFLLGVBQWU7QUFDekMsYUFBSyx1QkFBdUIsTUFBQTtBQUM1QixhQUFLLHlCQUF5QixXQUFBO0FBQzlCLGFBQUssZ0JBQWdCO0FBRXJCLGFBQUssd0JBQXdCLElBQUksZ0JBQUE7QUFDakMsYUFBSyxjQUFjLGlCQUFpQixXQUFXLENBQUMsT0FBTyxLQUFLLGdCQUFnQixFQUFFLEdBQUc7QUFBQSxVQUMvRSxRQUFRLEtBQUssc0JBQXNCO0FBQUEsUUFBQSxDQUNwQztBQUNELGFBQUssY0FBYyxpQkFDakIscUJBQ0EsQ0FBQyxVQUEyRDtBQUMxRCxlQUFLLHFCQUFxQixnQkFBZ0IsTUFBTSxRQUFRLE9BQU8sS0FBSztBQUFBLFFBQ3RFLEdBQ0E7QUFBQSxVQUNFLFFBQVEsS0FBSyxzQkFBc0I7QUFBQSxRQUFBLENBQ3BDO0FBR0gsYUFBSyx5QkFBeUIsUUFBUSxLQUFLLGVBQWU7QUFBQSxVQUN4RCxZQUFZO0FBQUEsVUFDWixpQkFBaUIsQ0FBQyxZQUFZLFVBQVU7QUFBQSxRQUFBLENBQ3pDO0FBQUEsTUFDSDtBQUdBLFdBQUssYUFBQTtBQUNMLFdBQUssNkJBQTZCLFdBQUE7QUFDbEMsWUFBTSxZQUFZLEtBQUssUUFBUSxnQkFBZ0I7QUFDL0MsVUFBSSxXQUFXO0FBQ2IsYUFBSyw2QkFBNkIsUUFBUSxXQUFXO0FBQUEsVUFDbkQsWUFBWTtBQUFBLFVBQ1osaUJBQWlCLENBQUMsTUFBTTtBQUFBLFFBQUEsQ0FDekI7QUFBQSxNQUNIO0FBRUEsV0FBSyxZQUFZLFNBQVMsS0FBSyxNQUFNLFdBQVcsQ0FBQztBQUNqRCxXQUFLLHFCQUFBO0FBQ0wsV0FBSyx3QkFBQTtBQUNMLFdBQUssZ0JBQUE7QUFBQSxJQUNQO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFLUSxlQUFlLE9BQW9CO0FBQ3pDLFlBQU0sY0FBYyxNQUFNO0FBQzFCLFVBQUksWUFBWSxjQUFjLFlBQVk7QUFDeEM7QUFBQSxNQUNGO0FBR0EsVUFBSSxrQkFBa0IsS0FBSyxHQUFHO0FBQzVCLGNBQU0sYUFBYSxLQUFLLHFCQUFBO0FBQ3hCLGNBQU0sT0FBTyxvQkFBb0IsT0FBTyxXQUFXLFFBQVEsV0FBVyxHQUFHLFdBQVcsTUFBTTtBQUMxRixtQkFBVyxJQUFJLEVBQUUsTUFBQTtBQUNqQjtBQUFBLE1BQ0Y7QUFFQSxjQUFRLE1BQU0sS0FBQTtBQUFBLFFBQ1osS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGNBQUksQ0FBQyxZQUFZLFlBQVksQ0FBQyxZQUFZLFVBQVU7QUFDbEQsa0JBQU0sZUFBQTtBQUNOLGlCQUFLLFlBQVksV0FBVztBQUFBLFVBQzlCO0FBQ0E7QUFBQSxNQUFBO0FBQUEsSUFFTjtBQUFBO0FBQUE7QUFBQTtBQUFBLElBS1EsZ0JBQWdCLE9BQW9CO0FBQzFDLGNBQVEsTUFBTSxLQUFBO0FBQUEsUUFDWixLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsY0FBSSxDQUFDLEtBQUssY0FBZSxPQUFPO0FBQzlCLGlCQUFLLFdBQUE7QUFBQSxVQUNQO0FBQ0E7QUFBQSxRQUNGLEtBQUs7QUFDSCxnQkFBTSxlQUFBO0FBQ047QUFBQSxNQUFBO0FBSUosVUFBSSxLQUFLLGNBQWMsU0FBUyxNQUFNLEdBQUcsR0FBRztBQUMxQyxjQUFNLGVBQUE7QUFDTixhQUFLLHFCQUFxQixPQUFPO0FBQUEsTUFDbkM7QUFBQSxJQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFLUSxxQkFBcUIsU0FBbUMsU0FBUyxPQUFTO0FBQ2hGLFlBQU0sYUFBYSxTQUFTLEtBQUssY0FBZSxNQUFNLEtBQUE7QUFDdEQsVUFBSSxDQUFDLFlBQVk7QUFDZjtBQUFBLE1BQ0Y7QUFFQSxZQUFNLGNBQW1EO0FBQUEsUUFDdkQ7QUFBQSxRQUNBLE9BQU87QUFBQSxRQUNQLFFBQVEsUUFBUSxLQUFLLGNBQWMsS0FBSyxJQUFJLFNBQVM7QUFBQSxRQUNyRCxVQUFVLENBQUNBLFdBQWMsWUFBWSxRQUFRQTtBQUFBQSxRQUM3QyxVQUFVLENBQUMsVUFBbUIsWUFBWSxRQUFRO0FBQUEsTUFBQTtBQUdwRCxVQUFJLENBQUMsS0FBSywyQkFBMkIsV0FBVyxHQUFHO0FBQ2pEO0FBQUEsTUFDRjtBQUVBLFdBQUssbUJBQW1CLFlBQVksT0FBWSxZQUFZLEtBQUs7QUFDakUsV0FBSyxjQUFlLFFBQVE7QUFDNUIsV0FBSyxpQkFBQTtBQUFBLElBQ1A7QUFBQSxJQUVRLDJCQUEyQixhQUFnRDtBQUtqRixhQUFPLEtBQUssY0FDVixJQUFJLFlBQWlELHFCQUFxQjtBQUFBLFFBQ3hFLFFBQVE7QUFBQSxRQUNSLFlBQVk7QUFBQSxRQUNaLFNBQVM7QUFBQSxRQUNULFVBQVU7QUFBQSxNQUFBLENBQ1gsQ0FBQztBQUFBLElBRU47QUFBQSxJQUVRLFlBQVksTUFBdUI7QUFDekMsWUFBTSxRQUFRLEtBQUsscUJBQUE7QUFDbkIsV0FBSyxPQUFBO0FBQ0wsV0FBSyxpQkFBQTtBQUNMLFdBQUssV0FBVyxNQUFNLFFBQVEsSUFBSSxDQUFDO0FBQUEsSUFDckM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBTVEsV0FBVyxPQUFjO0FBQy9CLFlBQU0sZUFBZSxLQUFLLHFCQUFBO0FBRTFCLFVBQUksVUFBVSxVQUFhLGFBQWEsS0FBSyxHQUFHO0FBQzlDLHFCQUFhLEtBQUssRUFBRSxNQUFBO0FBQ3BCO0FBQUEsTUFDRjtBQUVBLFVBQUksYUFBYSxTQUFTLEdBQUc7QUFDM0IscUJBQWEsYUFBYSxTQUFTLENBQUMsRUFBRSxNQUFBO0FBQ3RDO0FBQUEsTUFDRjtBQUVBLFdBQUssZUFBZSxNQUFBO0FBQUEsSUFDdEI7QUFBQSxJQUVRLG1CQUFnQjtBQUV0QixXQUFLLGNBQWMsSUFBSSxXQUFXLFNBQVMsRUFBRSxTQUFTLE1BQU0sVUFBVSxLQUFBLENBQU0sQ0FBQztBQU83RSxXQUFLLGNBQWMsSUFBSSxNQUFNLFVBQVUsRUFBRSxTQUFTLEtBQUEsQ0FBTSxDQUFDO0FBQUEsSUFDM0Q7QUFBQSxJQUVRLG1CQUFtQixPQUFpQixPQUFjO0FBQ3hELFVBQUksVUFBVTtBQUNaO0FBQUEsTUFDRjtBQUNBLFlBQU0sVUFBVSxTQUFTLGNBQWMsVUFBVTtBQUNqRCxjQUFRLFFBQVE7QUFDaEIsY0FBUSxZQUFZLFVBQVUsUUFBUSxLQUFLLGNBQWMsS0FBSyxJQUFJLFNBQVM7QUFDM0UsVUFFRSxDQUFDLDRCQUNELENBQUMsU0FDRCxPQUFPLFVBQVUsWUFDakIsQ0FBQyxLQUFLLGFBQ047QUFDQSxnQkFBUSxLQUNOO0FBQUE7QUFBQSx5Q0FFaUM7QUFFbkMsbUNBQTJCO0FBQUEsTUFDN0I7QUFDQSxXQUFLLGFBQWEsU0FBUyxLQUFLLGlCQUFpQixLQUFLLGNBQWMsT0FBTyxDQUFDO0FBQUEsSUFDOUU7QUFBQSxJQUVRLHVCQUFvQjtBQUMxQixXQUFLLFdBQVcsS0FBSyxlQUFlLFlBQVk7QUFDaEQsV0FBSyxtQkFBQTtBQUFBLElBQ1A7QUFBQSxJQUVRLHFCQUFrQjtBQUN4QixXQUFLLGNBQUEsRUFBZ0IsUUFBUSxDQUFDLE1BQUs7QUFDakMsVUFBRSxXQUFXLEtBQUssWUFBWSxLQUFLO0FBQ25DLFVBQUUsV0FBVyxLQUFLLGVBQWUsYUFBYSxVQUFVLEtBQUs7QUFDN0QsVUFBRSxXQUFXLEtBQUs7QUFBQSxNQUNwQixDQUFDO0FBQUEsSUFDSDtBQUFBLElBRVEsZUFBWTtBQUNsQixVQUFJLEtBQUssZUFBZTtBQUN0QixhQUFLLFVBQVUsT0FBTyxPQUFPLFFBQVEsS0FBSyxhQUFhLEVBQUU7QUFBQSxNQUMzRDtBQUNBLFdBQUssZ0JBQWdCLEtBQUssUUFBUSxnQkFBZ0IsR0FBRyxTQUFTLE9BQUEsSUFBVyxNQUFNO0FBQy9FLFVBQUksS0FBSyxlQUFlO0FBQ3RCLGFBQUssVUFBVSxPQUFPLElBQUksUUFBUSxLQUFLLGFBQWEsRUFBRTtBQUFBLE1BQ3hEO0FBQUEsSUFDRjtBQUFBLElBRVEsMEJBQXVCO0FBQzdCLFVBQUksQ0FBQyxLQUFLLGVBQWU7QUFDdkI7QUFBQSxNQUNGO0FBQ0EsV0FBSyxjQUFjLGFBQ2pCLG9CQUNBLEdBQUcsOEJBQThCLEtBQUssVUFBVSxPQUFPLENBQUMsSUFBSSxLQUFLLE1BQU0sTUFBTSxFQUFFO0FBQUEsSUFFbkY7QUFBQSxJQUVtQixTQUFNO0FBQ3ZCLGFBQU87QUFBQTtBQUFBLDRCQUVpQixLQUFLLGVBQWU7QUFBQTtBQUFBO0FBQUEsSUFHOUM7QUFBQSxLQXZWQSwrQ0FJQTs7QUF2Q0MsNEJBQUEsQ0FBQSxTQUFTLEVBQUUsTUFBTSxNQUFBLENBQU8sQ0FBQztBQWtDekIsOEJBQUEsQ0FBQSxTQUFTLEVBQUUsV0FBVyxNQUFBLENBQU8sQ0FBQztpQ0FJOUIsU0FBUyxFQUFFLFdBQVcsa0JBQWtCLE1BQU0sTUFBQSxDQUFPLENBQUM7QUFyQ3ZELGlCQUFBLElBQUEsTUFBQSx1QkFBQSxFQUFBLE1BQUEsVUFBQSxNQUFBLFNBQUEsUUFBQSxPQUFBLFNBQUEsT0FBQSxRQUFBLEVBQUEsS0FBQSxDQUFBLFFBQUEsV0FBQSxLQUFBLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFXLFFBQUs7QUFBQSxJQUFBLEtBQUEsVUFBQSxVQUFBLEdBQUEsTUFBQSwwQkFBQTtBQWtDaEIsaUJBQUEsSUFBQSxNQUFBLHlCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsZUFBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxpQkFBQSxLQUFBLEtBQUEsQ0FBQSxRQUFBLElBQWdCLGFBQVcsS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVgsY0FBVztBQUFBLElBQUEsS0FBQSxVQUFBLFVBQUEsR0FBQSwyQkFBQSw4QkFBQTtBQUkzQixpQkFBQSxJQUFBLE1BQUEsMkJBQUEsRUFBQSxNQUFBLFlBQUEsTUFBQSxpQkFBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxtQkFBQSxLQUFBLEtBQUEsQ0FBQSxRQUFBLElBQWdCLGVBQWEsS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFVBQWIsZ0JBQWE7QUFBQSxJQUFBLEtBQUEsVUFBQSxVQUFBLEdBQUEsNkJBQUEsZ0NBQUE7QUFuRC9CLGlCQUFBLE1BQUEsbUJBQUEsRUFBQSxPQUFBLFdBQUEsR0FBQSxrQkFBQSxFQUFBLE1BQUEsU0FBQSxNQUFBLFdBQUEsTUFBQSxVQUFBLFVBQUEsR0FBQSxNQUFBLHVCQUFBOzs7UUFHa0MsR0FBQSxPQUFPLFdBQ2hCLEdBQUEsU0FBeUIsQ0FBQyxpQkFBaUIsS0FBSyxHQUNoRCxHQUFBLFNBQVM7QUFBQSxJQUM5QixPQUFPO0FBQUEsSUFDUCxRQUFRO0FBQUEsSUFDUixtQkFBbUI7QUFBQSxFQUFBLEdBUmpCLGtCQUFBLFlBQUEsdUJBQUEsR0FBZ0M7OzsifQ==
430
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jaGlwL2NoaXAtZ3JvdXAvY2hpcC1ncm91cC5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgaXNTZXJ2ZXIsXG4gIExpdEVsZW1lbnQsXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZ2V0TmV4dEVsZW1lbnRJbmRleCwgaXNBcnJvd0tleVByZXNzZWQgfSBmcm9tICcuLi8uLi9jb3JlL2ExMXkudHMnO1xuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLCBTYmJQcm9wZXJ0eVdhdGNoZXJDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy50cyc7XG5pbXBvcnQgeyBpc0xlYW4gfSBmcm9tICcuLi8uLi9jb3JlL2RvbS9sZWFuLWNvbnRleHQudHMnO1xuaW1wb3J0IHsgaTE4bkNoaXBHcm91cElucHV0RGVzY3JpcHRpb24sIGkxOG5TZWxlY3Rpb25SZXF1aXJlZCB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi50cyc7XG5pbXBvcnQge1xuICB0eXBlIEZvcm1SZXN0b3JlUmVhc29uLFxuICB0eXBlIEZvcm1SZXN0b3JlU3RhdGUsXG4gIFNiYkRpc2FibGVkTWl4aW4sXG4gIFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpbixcbiAgU2JiRm9ybUFzc29jaWF0ZWRNaXhpbixcbiAgU2JiTmVnYXRpdmVNaXhpbixcbiAgU2JiUmVxdWlyZWRNaXhpbixcbn0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMudHMnO1xuaW1wb3J0IHsgYm94U2l6aW5nU3R5bGVzIH0gZnJvbSAnLi4vLi4vY29yZS9zdHlsZXMudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJGb3JtRmllbGRFbGVtZW50IH0gZnJvbSAnLi4vLi4vZm9ybS1maWVsZC9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50LnRzJztcbmltcG9ydCB0eXBlIHsgU2JiT3B0aW9uQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9vcHRpb24vb3B0aW9uL29wdGlvbi1iYXNlLWVsZW1lbnQudHMnO1xuaW1wb3J0IHsgU2JiQ2hpcEVsZW1lbnQgfSBmcm9tICcuLi9jaGlwLnRzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vY2hpcC1ncm91cC5zY3NzP2xpdCZpbmxpbmUnO1xuXG5sZXQgZGlzcGxheVdpdGhXYXJuaW5nTG9nZ2VkID0gZmFsc2U7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2JiQ2hpcElucHV0VG9rZW5FbmRFdmVudERldGFpbHM8VCA9IHN0cmluZz4ge1xuICAvKiogVGhlIGVsZW1lbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGNoaXAgY3JlYXRpb24gKi9cbiAgb3JpZ2luOiAnaW5wdXQnIHwgJ2F1dG9jb21wbGV0ZSc7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIG5ldyBjaGlwLiBFaXRoZXIgdGhlIGlucHV0IG9yIHRoZSBvcHRpb24gdmFsdWUgZGVwZW5kaW5nIG9uIHRoZSBvcmlnaW4uXG4gICAqIEVpdGhlciB0aGUgdmFsdWUgZnJvbSB0aGUgaW5wdXQgd2hpY2ggaXMgYWx3YXlzIGBzdHJpbmdgIG9yIHRoZSB2YWx1ZSBmcm9tIHRoZSBzZWxlY3RlZCBvcHRpb25cbiAgICogZnJvbSBhbiBhdXRvY29tcGxldGUsIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW55IG90aGVyIHR5cGUuXG4gICAqL1xuICB2YWx1ZTogVCB8IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIC8qKiBTZXQgYSBuZXcgdmFsdWUgZm9yIHRoZSBjaGlwIHRoYXQgd2lsbCBiZSBjcmVhdGVkICovXG4gIHNldFZhbHVlKHZhbHVlOiBUKTogdm9pZDtcbiAgLyoqIFNldCBhIGxhYmVsIGZvciB0aGUgY2hpcCB0aGF0IHdpbGwgYmUgY3JlYXRlZCAqL1xuICBzZXRMYWJlbCh2YWx1ZTogc3RyaW5nKTogdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgYHNiYi1jaGlwLWdyb3VwYCBjb21wb25lbnQgaXMgdXNlZCBhcyBhIGNvbnRhaW5lciBmb3Igb25lIG9yIG11bHRpcGxlIGBzYmItY2hpcGAuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYHNiYi1jaGlwYCBlbGVtZW50cy5cbiAqIEBvdmVycmlkZVR5cGUgdmFsdWUgLSAoVCA9IHN0cmluZ1tdKSB8IG51bGxcbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWNoaXAtZ3JvdXAnKVxuY2xhc3MgU2JiQ2hpcEdyb3VwRWxlbWVudDxUID0gc3RyaW5nPiBleHRlbmRzIFNiYlJlcXVpcmVkTWl4aW4oXG4gIFNiYkRpc2FibGVkTWl4aW4oU2JiTmVnYXRpdmVNaXhpbihTYmJGb3JtQXNzb2NpYXRlZE1peGluKFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpbihMaXRFbGVtZW50KSkpKSxcbikge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IHJvbGUgPSAnbGlzdGJveCc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtib3hTaXppbmdTdHlsZXMsIHN0eWxlXTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgaW5wdXQ6ICdpbnB1dCcsXG4gICAgY2hhbmdlOiAnY2hhbmdlJyxcbiAgICBjaGlwaW5wdXR0b2tlbmVuZDogJ2NoaXBpbnB1dHRva2VuZW5kJyxcbiAgfSBhcyBjb25zdDtcblxuICAvKiogVmFsdWUgb2YgdGhlIGZvcm0gZWxlbWVudC4gKi9cbiAgQHByb3BlcnR5KHsgdHlwZTogQXJyYXkgfSlcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogKFQgfCBudWxsKVtdIHwgbnVsbCkge1xuICAgIHZhbHVlID0gdmFsdWUgPz8gW107XG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLnZhbHVlO1xuXG4gICAgLy8gU3VidHJhY3QgZnJvbSAnb2xkVmFsdWUnIHRoZSBuZXcgJ3ZhbHVlJ1xuICAgIC8vIFRoZSByZXN1bHQgYXJlIHRoZSBjaGlwcyB0byByZW1vdmUgKGhhbmRsZSBkdXBsaWNhdGVzKVxuICAgIGNvbnN0IHRvUmVtb3ZlID0gWy4uLm9sZFZhbHVlXTtcbiAgICBmb3IgKGNvbnN0IGMgb2YgdmFsdWUpIHtcbiAgICAgIGlmICh0b1JlbW92ZS5pbmNsdWRlcyhjKSkge1xuICAgICAgICB0b1JlbW92ZS5zcGxpY2UodG9SZW1vdmUuaW5kZXhPZihjKSwgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRvUmVtb3ZlLmZvckVhY2goKHZhbHVlKSA9PlxuICAgICAgdGhpcy5fY2hpcEVsZW1lbnRzKClcbiAgICAgICAgLmZpbmQoKGMpID0+IGMudmFsdWUgPT09IHZhbHVlKVxuICAgICAgICA/LnJlbW92ZSgpLFxuICAgICk7XG5cbiAgICAvLyBTdWJ0cmFjdCBmcm9tIHRoZSBuZXcgJ3ZhbHVlJyB3aGF0IHdhcyBhbHJlYWR5IHByZXNlbnRcbiAgICAvLyBUaGUgcmVzdWx0IGFyZSB0aGUgbmV3IGNoaXBzIHRvIGFkZCAoaGFuZGxlIGR1cGxpY2F0ZXMpXG4gICAgY29uc3QgdG9BZGQgPSBbLi4udmFsdWVdO1xuICAgIGZvciAoY29uc3QgYyBvZiBvbGRWYWx1ZSkge1xuICAgICAgaWYgKHRvQWRkLmluY2x1ZGVzKGMpKSB7XG4gICAgICAgIHRvQWRkLnNwbGljZSh0b0FkZC5pbmRleE9mKGMpLCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdG9BZGQuZm9yRWFjaCgoYykgPT4gdGhpcy5fY3JlYXRlQ2hpcEVsZW1lbnQoYykpO1xuICB9XG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogKFQgfCBudWxsKVtdIHtcbiAgICByZXR1cm4gdGhpcy5fY2hpcEVsZW1lbnRzKCkubWFwKChjKSA9PiBjLnZhbHVlKTtcbiAgfVxuXG4gIC8qKiBGdW5jdGlvbiB0aGF0IG1hcHMgYSBjaGlwJ3MgdmFsdWUgdG8gaXRzIGRpc3BsYXkgdmFsdWUuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogZmFsc2UgfSlcbiAgcHVibGljIGFjY2Vzc29yIGRpc3BsYXlXaXRoOiAoKHZhbHVlOiBUKSA9PiBzdHJpbmcpIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFRoZSBhcnJheSBvZiBrZXlzIHRoYXQgd2lsbCB0cmlnZ2VyIGEgYGNoaXBpbnB1dHRva2VuZW5kYCBldmVudC4gRGVmYXVsdCBgWydFbnRlciddYCAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdzZXBhcmF0b3Ita2V5cycsIHR5cGU6IEFycmF5IH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBzZXBhcmF0b3JLZXlzOiBzdHJpbmdbXSA9IFsnRW50ZXInXTtcblxuICAvKipcbiAgICogTGlzdGVucyB0byB0aGUgY2hhbmdlcyBvbiBgcmVhZG9ubHlgIGFuZCBgZGlzYWJsZWRgIGF0dHJpYnV0ZXMgb2YgYDxpbnB1dD5gLlxuICAgKi9cbiAgcHJpdmF0ZSBfaW5wdXRBdHRyaWJ1dGVPYnNlcnZlciA9ICFpc1NlcnZlclxuICAgID8gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4gdGhpcy5fcmVhY3RUb0lucHV0Q2hhbmdlcygpKVxuICAgIDogbnVsbDtcblxuICBwcml2YXRlIF9pbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX2lucHV0QWJvcnRDb250cm9sbGVyOiBBYm9ydENvbnRyb2xsZXIgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfcHJldmlvdXNTaXplPzogU2JiRm9ybUZpZWxkRWxlbWVudFsnc2l6ZSddO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oU2JiQ2hpcEVsZW1lbnQuZXZlbnRzLnJlcXVlc3RkZWxldGUsIChldikgPT5cbiAgICAgIHRoaXMuX2RlbGV0ZUNoaXAoZXYudGFyZ2V0IGFzIFNiYkNoaXBFbGVtZW50PFQ+KSxcbiAgICApO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2tleWRvd24nLCAoZXYpID0+IHRoaXMuX29uQ2hpcEtleURvd24oZXYpKTtcblxuICAgIHRoaXMuYWRkQ29udHJvbGxlcihcbiAgICAgIG5ldyBTYmJQcm9wZXJ0eVdhdGNoZXJDb250cm9sbGVyKHRoaXMsICgpID0+IHRoaXMuY2xvc2VzdCgnc2JiLWZvcm0tZmllbGQnKSwge1xuICAgICAgICBzaXplOiAoZm9ybUZpZWxkKSA9PiB0aGlzLl91cGRhdGVTaXplKGZvcm1GaWVsZC5zaXplKSxcbiAgICAgICAgbGFiZWw6IChmb3JtRmllbGQpID0+IHRoaXMuX3VwZGF0ZUxhYmVsU3RhdGUoZm9ybUZpZWxkKSxcbiAgICAgICAgaGlkZGVuTGFiZWw6IChmb3JtRmllbGQpID0+IHRoaXMuX3VwZGF0ZUxhYmVsU3RhdGUoZm9ybUZpZWxkKSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVMYWJlbFN0YXRlKGZvcm1GaWVsZDogU2JiRm9ybUZpZWxkRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ3dpdGhvdXQtbGFiZWwnLCAhZm9ybUZpZWxkLmxhYmVsIHx8IGZvcm1GaWVsZC5oaWRkZW5MYWJlbCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9zZXR1cENvbXBvbmVudCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzKTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoXG4gICAgICBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2Rpc2FibGVkJykgfHxcbiAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZm9ybURpc2FibGVkJykgfHxcbiAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbmVnYXRpdmUnKVxuICAgICkge1xuICAgICAgdGhpcy5fcHJveHlTdGF0ZVRvQ2hpcHMoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyBmb3JtUmVzZXRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIGZvcm1TdGF0ZVJlc3RvcmVDYWxsYmFjayhcbiAgICBzdGF0ZTogRm9ybVJlc3RvcmVTdGF0ZSB8IG51bGwsXG4gICAgX3JlYXNvbjogRm9ybVJlc3RvcmVSZWFzb24sXG4gICk6IHZvaWQge1xuICAgIGlmICghc3RhdGUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3JlYWRGb3JtRGF0YShzdGF0ZSBhcyBGb3JtRGF0YSkudGhlbigoYXJyYXkpID0+ICh0aGlzLnZhbHVlID0gYXJyYXkpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3JlYWRGb3JtRGF0YShmb3JtRGF0YTogRm9ybURhdGEpOiBQcm9taXNlPFRbXT4ge1xuICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgIGZvcm1EYXRhXG4gICAgICAgIC5nZXRBbGwodGhpcy5uYW1lKVxuICAgICAgICAubWFwKGFzeW5jIChlbnRyeSkgPT5cbiAgICAgICAgICBlbnRyeSBpbnN0YW5jZW9mIEJsb2IgPyBKU09OLnBhcnNlKGF3YWl0IGVudHJ5LnRleHQoKSkgOiAoZW50cnkgYXMgVCksXG4gICAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBzaG91bGRWYWxpZGF0ZShuYW1lOiBQcm9wZXJ0eUtleSB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdXBlci5zaG91bGRWYWxpZGF0ZShuYW1lKSB8fCBuYW1lID09PSAncmVxdWlyZWQnIHx8IG5hbWUgPT09ICd2YWx1ZSc7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdmFsaWRhdGUoKTogdm9pZCB7XG4gICAgc3VwZXIudmFsaWRhdGUoKTtcbiAgICBpZiAodGhpcy5yZXF1aXJlZCAmJiB0aGlzLnZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5zZXRWYWxpZGl0eUZsYWcoJ3ZhbHVlTWlzc2luZycsIGkxOG5TZWxlY3Rpb25SZXF1aXJlZFt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVtb3ZlVmFsaWRpdHlGbGFnKCd2YWx1ZU1pc3NpbmcnKTtcbiAgICB9XG4gIH1cblxuICAvKiogUmV0dXJuIHRoZSBsaXN0IG9mIGNoaXAgZWxlbWVudHMgKiovXG4gIHByaXZhdGUgX2NoaXBFbGVtZW50cygpOiBTYmJDaGlwRWxlbWVudDxUPltdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJDaGlwRWxlbWVudDxUPj4oJ3NiYi1jaGlwJykgPz8gW10pO1xuICB9XG5cbiAgLyoqIFJldHVybiB0aGUgbGlzdCBvZiBlbmFibGVkIGNoaXAgZWxlbWVudHMgKiovXG4gIHByaXZhdGUgX2VuYWJsZWRDaGlwRWxlbWVudHMoKTogU2JiQ2hpcEVsZW1lbnQ8VD5bXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsPy4oJ3NiYi1jaGlwOm5vdChbZGlzYWJsZWRdKScpID8/IFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwQ29tcG9uZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuXG4gICAgLy8gQ29ubmVjdCB0byB0aGUgaW5wdXRcbiAgICBpZiAoaW5wdXQgJiYgaW5wdXQgIT09IHRoaXMuX2lucHV0RWxlbWVudCkge1xuICAgICAgdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgICB0aGlzLl9pbnB1dEF0dHJpYnV0ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQgPSBpbnB1dDtcblxuICAgICAgdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldikgPT4gdGhpcy5fb25JbnB1dEtleURvd24oZXYpLCB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSk7XG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ2lucHV0QXV0b2NvbXBsZXRlJyxcbiAgICAgICAgKGV2ZW50OiBDdXN0b21FdmVudDx7IG9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4gfT4pID0+IHtcbiAgICAgICAgICB0aGlzLl9jcmVhdGVDaGlwRnJvbUlucHV0KCdhdXRvY29tcGxldGUnLCBldmVudC5kZXRhaWw/Lm9wdGlvbi52YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBzaWduYWw6IHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuX2lucHV0QXR0cmlidXRlT2JzZXJ2ZXI/Lm9ic2VydmUodGhpcy5faW5wdXRFbGVtZW50LCB7XG4gICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydyZWFkb25seScsICdkaXNhYmxlZCddLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gSW5oZXJpdCBzaXplIGZyb20gdGhlIGZvcm0tZmllbGQgYW5kIG9ic2VydmUgZm9yIGNoYW5nZXNcbiAgICBpZiAoIXRoaXMuX3ByZXZpb3VzU2l6ZSB8fCAhdGhpcy5jbG9zZXN0KCdzYmItZm9ybS1maWVsZCcpKSB7XG4gICAgICB0aGlzLl91cGRhdGVTaXplKGlzTGVhbigpID8gJ3MnIDogJ20nKTtcbiAgICB9XG5cbiAgICB0aGlzLnRvZ2dsZVN0YXRlKCdlbXB0eScsIHRoaXMudmFsdWUubGVuZ3RoID09PSAwKTtcbiAgICB0aGlzLl9yZWFjdFRvSW5wdXRDaGFuZ2VzKCk7XG4gICAgdGhpcy5fdXBkYXRlSW5wdXREZXNjcmlwdGlvbigpO1xuICAgIHRoaXMudXBkYXRlRm9ybVZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIGZvciBrZXlib2FyZCBldmVudHMgb24gdGhlIGNoaXAgZWxlbWVudHNcbiAgICoqL1xuICBwcml2YXRlIF9vbkNoaXBLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnRUYXJnZXQgPSBldmVudC50YXJnZXQgYXMgU2JiQ2hpcEVsZW1lbnQ8VD47XG4gICAgaWYgKGV2ZW50VGFyZ2V0LmxvY2FsTmFtZSAhPT0gJ3NiYi1jaGlwJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEFycm93IGtleXMgYWxsb3cgbmF2aWdhdGlvbiBiZXR3ZWVuIGNoaXBzIGZvY3VzIHN0ZXBzXG4gICAgaWYgKGlzQXJyb3dLZXlQcmVzc2VkKGV2ZW50KSkge1xuICAgICAgY29uc3QgZm9jdXNTdGVwcyA9IHRoaXMuX2VuYWJsZWRDaGlwRWxlbWVudHMoKTtcbiAgICAgIGNvbnN0IG5leHQgPSBnZXROZXh0RWxlbWVudEluZGV4KGV2ZW50LCBmb2N1c1N0ZXBzLmluZGV4T2YoZXZlbnRUYXJnZXQpLCBmb2N1c1N0ZXBzLmxlbmd0aCk7XG4gICAgICBmb2N1c1N0ZXBzW25leHRdLmZvY3VzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICBpZiAoIWV2ZW50VGFyZ2V0LnJlYWRPbmx5ICYmICFldmVudFRhcmdldC5kaXNhYmxlZCkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5fZGVsZXRlQ2hpcChldmVudFRhcmdldCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbiBmb3Iga2V5Ym9hcmQgZXZlbnRzIG9uIHRoZSBpbnB1dFxuICAgKiovXG4gIHByaXZhdGUgX29uSW5wdXRLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICBpZiAoIXRoaXMuX2lucHV0RWxlbWVudCEudmFsdWUpIHtcbiAgICAgICAgICB0aGlzLl9mb2N1c0NoaXAoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gUHJldmVudHMgdGhlIGZvcm0gc3VibWl0XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIGlmIHRoZSB1c2VyIHR5cGVkIG9uZSBvZiB0aGUgc2VwYXJhdG9yIGtleXMsIHRyaWdnZXIgYSAnY2hpcGlucHV0dG9rZW5lbmQnIGV2ZW50XG4gICAgaWYgKHRoaXMuc2VwYXJhdG9yS2V5cy5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBwcmV2ZW50IHR5cGluZyB0aGUgc2VwYXJhdG9yIGtleSBpbnRvIHRoZSBpbnB1dFxuICAgICAgdGhpcy5fY3JlYXRlQ2hpcEZyb21JbnB1dCgnaW5wdXQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGlucHV0IGlzIG5vdCBlbXB0eSwgY3JlYXRlIGEgY2hpcCB3aXRoIGl0cyB2YWx1ZVxuICAgKi9cbiAgcHJpdmF0ZSBfY3JlYXRlQ2hpcEZyb21JbnB1dChvcmlnaW46ICdpbnB1dCcgfCAnYXV0b2NvbXBsZXRlJyA9ICdpbnB1dCcsIHZhbHVlPzogVCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0VmFsdWUgPSB2YWx1ZSA/PyB0aGlzLl9pbnB1dEVsZW1lbnQhLnZhbHVlLnRyaW0oKTtcbiAgICBpZiAoIWlucHV0VmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBldmVudERldGFpbDogU2JiQ2hpcElucHV0VG9rZW5FbmRFdmVudERldGFpbHM8VD4gPSB7XG4gICAgICBvcmlnaW46IG9yaWdpbixcbiAgICAgIHZhbHVlOiBpbnB1dFZhbHVlLFxuICAgICAgbGFiZWw6ICh2YWx1ZSA/IHRoaXMuZGlzcGxheVdpdGg/Lih2YWx1ZSkgOiBudWxsKSA/PyB1bmRlZmluZWQsXG4gICAgICBzZXRWYWx1ZTogKHZhbHVlOiBUKSA9PiAoZXZlbnREZXRhaWwudmFsdWUgPSB2YWx1ZSksXG4gICAgICBzZXRMYWJlbDogKGxhYmVsOiBzdHJpbmcpID0+IChldmVudERldGFpbC5sYWJlbCA9IGxhYmVsKSxcbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLl9kaXNwYXRjaENoaXBJbnB1dFRva2VuRW5kKGV2ZW50RGV0YWlsKSkge1xuICAgICAgcmV0dXJuOyAvLyBldmVudCBwcmV2ZW50ZWQ7IGRvIG5vdGhpbmcgKHRoZSBjb25zdW1lciBoYXMgdG8gY3JlYXRlIHRoZSBjaGlwKVxuICAgIH1cblxuICAgIHRoaXMuX2NyZWF0ZUNoaXBFbGVtZW50KGV2ZW50RGV0YWlsLnZhbHVlIGFzIFQsIGV2ZW50RGV0YWlsLmxhYmVsKTtcbiAgICB0aGlzLl9pbnB1dEVsZW1lbnQhLnZhbHVlID0gJyc7IC8vIEVtcHR5IHRoZSBpbnB1dFxuICAgIHRoaXMuX2VtaXRJbnB1dEV2ZW50cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGlzcGF0Y2hDaGlwSW5wdXRUb2tlbkVuZChldmVudERldGFpbDogU2JiQ2hpcElucHV0VG9rZW5FbmRFdmVudERldGFpbHM8VD4pOiBib29sZWFuIHtcbiAgICAvKipcbiAgICAgKiBAdHlwZSB7Q3VzdG9tRXZlbnQ8U2JiQ2hpcElucHV0VG9rZW5FbmRFdmVudERldGFpbHM+fVxuICAgICAqIE5vdGlmaWVzIHRoYXQgYSBjaGlwIGlzIGFib3V0IHRvIGJlIGNyZWF0ZWQuIENhbiBiZSBwcmV2ZW50ZWQuXG4gICAgICovXG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBDdXN0b21FdmVudDxTYmJDaGlwSW5wdXRUb2tlbkVuZEV2ZW50RGV0YWlsczxUPj4oJ2NoaXBpbnB1dHRva2VuZW5kJywge1xuICAgICAgICBkZXRhaWw6IGV2ZW50RGV0YWlsLFxuICAgICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICBjb21wb3NlZDogdHJ1ZSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9kZWxldGVDaGlwKGNoaXA6IFNiYkNoaXBFbGVtZW50PFQ+KTogdm9pZCB7XG4gICAgY29uc3QgY2hpcHMgPSB0aGlzLl9lbmFibGVkQ2hpcEVsZW1lbnRzKCk7XG4gICAgY2hpcC5yZW1vdmUoKTtcbiAgICB0aGlzLl9lbWl0SW5wdXRFdmVudHMoKTtcbiAgICB0aGlzLl9mb2N1c0NoaXAoY2hpcHMuaW5kZXhPZihjaGlwKSk7IC8vIEZvY3VzIHRoZSBuZXh0IGNoaXBcbiAgfVxuXG4gIC8qKlxuICAgKiBGb2N1cyBhbiBlbmFibGVkIGNoaXAuIElmIG5vbmUgYXJlIHByZXNlbnQsIGZvY3VzIHRoZSBpbnB1dFxuICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IG9mIHRoZSBlbmFibGVkIGNoaXAuIElmIG51bGwsIGZvY3VzIHRoZSBsYXN0IG9uZS5cbiAgICovXG4gIHByaXZhdGUgX2ZvY3VzQ2hpcChpbmRleD86IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGVuYWJsZWRDaGlwcyA9IHRoaXMuX2VuYWJsZWRDaGlwRWxlbWVudHMoKTtcblxuICAgIGlmIChpbmRleCAhPT0gdW5kZWZpbmVkICYmIGVuYWJsZWRDaGlwc1tpbmRleF0pIHtcbiAgICAgIGVuYWJsZWRDaGlwc1tpbmRleF0uZm9jdXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZW5hYmxlZENoaXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIGVuYWJsZWRDaGlwc1tlbmFibGVkQ2hpcHMubGVuZ3RoIC0gMV0uZm9jdXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pbnB1dEVsZW1lbnQ/LmZvY3VzKCk7XG4gIH1cblxuICBwcml2YXRlIF9lbWl0SW5wdXRFdmVudHMoKTogdm9pZCB7XG4gICAgLyoqIFRoZSBpbnB1dCBldmVudCBmaXJlcyB3aGVuIHRoZSB2YWx1ZSBoYXMgYmVlbiBjaGFuZ2VkIGFzIGEgZGlyZWN0IHJlc3VsdCBvZiBhIHVzZXIgYWN0aW9uLiAqL1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSW5wdXRFdmVudCgnaW5wdXQnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBtb2RpZmllcyB0aGUgZWxlbWVudCdzIHZhbHVlLlxuICAgICAqIFVubGlrZSB0aGUgaW5wdXQgZXZlbnQsIHRoZSBjaGFuZ2UgZXZlbnQgaXMgbm90IG5lY2Vzc2FyaWx5IGZpcmVkXG4gICAgICogZm9yIGVhY2ggYWx0ZXJhdGlvbiB0byBhbiBlbGVtZW50J3MgdmFsdWUuXG4gICAgICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZUNoaXBFbGVtZW50KHZhbHVlOiBUIHwgbnVsbCwgbGFiZWw/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbmV3Q2hpcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NiYi1jaGlwJykgYXMgU2JiQ2hpcEVsZW1lbnQ8VD47XG4gICAgbmV3Q2hpcC52YWx1ZSA9IHZhbHVlO1xuICAgIG5ld0NoaXAuaW5uZXJUZXh0ID0gbGFiZWwgPz8gKHZhbHVlID8gdGhpcy5kaXNwbGF5V2l0aD8uKHZhbHVlKSA6IG51bGwpID8/ICcnO1xuICAgIGlmIChcbiAgICAgIGltcG9ydC5tZXRhLmVudi5ERVYgJiZcbiAgICAgICFkaXNwbGF5V2l0aFdhcm5pbmdMb2dnZWQgJiZcbiAgICAgICFsYWJlbCAmJlxuICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgIXRoaXMuZGlzcGxheVdpdGhcbiAgICApIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYGRpc3BsYXlXaXRoIGhhcyBub3QgYmVlbiBzZXQgeWV0IGZvciBzYmItY2hpcC1ncm91cCBhbmQgdmFsdWUgaXMgYW4gb2JqZWN0LlxuICAgICAgICAgSWYgeW91IGFyZSB1c2luZyBvYmplY3QgdmFsdWVzLCB5b3UgbmVlZCB0byBwcm92aWRlIGRpc3BsYXlXaWR0aCBiZWZvcmVcbiAgICAgICAgIHNldHRpbmcgb3Igc2VsZWN0aW5nIGFueSB2YWx1ZS5gLFxuICAgICAgKTtcbiAgICAgIGRpc3BsYXlXaXRoV2FybmluZ0xvZ2dlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuaW5zZXJ0QmVmb3JlKG5ld0NoaXAsIHRoaXMuX2lucHV0RWxlbWVudCA/PyB0aGlzLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVhY3RUb0lucHV0Q2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gdGhpcy5faW5wdXRFbGVtZW50Py5kaXNhYmxlZCA/PyBmYWxzZTtcbiAgICB0aGlzLl9wcm94eVN0YXRlVG9DaGlwcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJveHlTdGF0ZVRvQ2hpcHMoKTogdm9pZCB7XG4gICAgdGhpcy5fY2hpcEVsZW1lbnRzKCkuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgYy5kaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5mb3JtRGlzYWJsZWQ7XG4gICAgICBjLnJlYWRPbmx5ID0gdGhpcy5faW5wdXRFbGVtZW50Py5oYXNBdHRyaWJ1dGUoJ3JlYWRvbmx5JykgPz8gZmFsc2U7XG4gICAgICBjLm5lZ2F0aXZlID0gdGhpcy5uZWdhdGl2ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVNpemUoc2l6ZTogU2JiRm9ybUZpZWxkRWxlbWVudFsnc2l6ZSddKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3ByZXZpb3VzU2l6ZSkge1xuICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZShgc2l6ZS0ke3RoaXMuX3ByZXZpb3VzU2l6ZX1gKTtcbiAgICB9XG4gICAgdGhpcy5fcHJldmlvdXNTaXplID0gc2l6ZTtcbiAgICBpZiAodGhpcy5fcHJldmlvdXNTaXplKSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKGBzaXplLSR7dGhpcy5fcHJldmlvdXNTaXplfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUlucHV0RGVzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5faW5wdXRFbGVtZW50LnNldEF0dHJpYnV0ZShcbiAgICAgICdhcmlhLWRlc2NyaXB0aW9uJyxcbiAgICAgIGAke2kxOG5DaGlwR3JvdXBJbnB1dERlc2NyaXB0aW9uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke3RoaXMudmFsdWUubGVuZ3RofWAsXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1jaGlwLWdyb3VwXCI+XG4gICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5fc2V0dXBDb21wb25lbnR9Pjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1jaGlwLWdyb3VwJzogU2JiQ2hpcEdyb3VwRWxlbWVudDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudEV2ZW50TWFwIHtcbiAgICBjaGlwaW5wdXR0b2tlbmVuZDogQ3VzdG9tRXZlbnQ8U2JiQ2hpcElucHV0VG9rZW5FbmRFdmVudERldGFpbHM8YW55Pj47XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJ2YWx1ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE4QkEsSUFBSSwyQkFBMkI7SUEwQnpCLHVCQUFtQixNQUFBOzswQkFEeEIsY0FB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
@@ -1,4 +1,4 @@
1
- import { S as SbbBreakpointZeroMin, a as SbbBreakpointSmallMin, b as SbbBreakpointLargeMin, c as SbbBreakpointUltraMin, d as SbbBreakpointSmallMax, e as SbbBreakpointLargeMax } from "../../sbb-tokens-CZCt5L4q.js";
1
+ import { S as SbbBreakpointLargeMin, a as SbbBreakpointLargeMax, b as SbbBreakpointSmallMin, c as SbbBreakpointSmallMax, d as SbbBreakpointUltraMin, e as SbbBreakpointZeroMin } from "../../sbb-tokens-DQT_xEIZ.js";
2
2
  import { isServer } from "lit";
3
3
  import { ɵstateController as _stateController } from "../mixins/element-internals-mixin.js";
4
4
  const SbbMediaQueryForcedColors = "(forced-colors: active)";
@@ -16,6 +16,7 @@ const style = css`:host {
16
16
  content: "";
17
17
  display: block;
18
18
  position: absolute;
19
+ align-self: start;
19
20
  border-block-start: var(--sbb-border-width-1x) solid var(--sbb-dialog-actions-border-color);
20
21
  transition: border-color var(--sbb-animation-easing) var(--sbb-dialog-shadow-animation-duration);
21
22
  width: 100%;
@@ -51,4 +52,4 @@ let SbbDialogActionsElement = (() => {
51
52
  export {
52
53
  SbbDialogActionsElement
53
54
  };
54
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvZGlhbG9nL2RpYWxvZy1hY3Rpb25zL2RpYWxvZy1hY3Rpb25zLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IFNiYkFjdGlvbkdyb3VwRWxlbWVudCB9IGZyb20gJy4uLy4uL2FjdGlvbi1ncm91cC50cyc7XG5pbXBvcnQgeyBpc0xlYW4gfSBmcm9tICcuLi8uLi9jb3JlL2RvbS9sZWFuLWNvbnRleHQudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9kaWFsb2ctYWN0aW9ucy5zY3NzP2xpdCZpbmxpbmUnO1xuXG4vKipcbiAqIFVzZSB0aGlzIGNvbXBvbmVudCB0byBkaXNwbGF5IGEgZm9vdGVyIGludG8gYW4gYHNiYi1kaWFsb2dgIHdpdGggYW4gYWN0aW9uIGdyb3VwLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGBzYmItYmxvY2stbGlua2Agb3IgYHNiYi1idXR0b25gIGVsZW1lbnRzIHRvIHRoZSBgc2JiLWRpYWxvZy1hY3Rpb25zYC5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWRpYWxvZy1hY3Rpb25zJylcbmNsYXNzIFNiYkRpYWxvZ0FjdGlvbnNFbGVtZW50IGV4dGVuZHMgU2JiQWN0aW9uR3JvdXBFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW1NiYkFjdGlvbkdyb3VwRWxlbWVudC5zdHlsZXMsIHN0eWxlXTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICAvKiogQGRlZmF1bHQgJ20nIC8gJ3MnIChsZWFuKSAqL1xuICAgIHRoaXMuYnV0dG9uU2l6ZSA9IGlzTGVhbigpID8gJ3MnIDogJ20nO1xuXG4gICAgLyoqIEBkZWZhdWx0ICdzJyAvICd4cycgKGxlYW4pICovXG4gICAgdGhpcy5saW5rU2l6ZSA9IGlzTGVhbigpID8gJ3hzJyA6ICdzJztcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRpYWxvZy1hY3Rpb25zJzogU2JiRGlhbG9nQWN0aW9uc0VsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQWVNLDJCQUF1QixNQUFBOzswQkFENUIsY0FBYyxvQkFBb0IsQ0FBQzs7OztvQkFDRTtBQUFSLEVBQUEsbUJBQVEsWUFBcUI7QUFBQSxJQUd6RCxjQUFBO0FBQ0UsWUFBQTtBQUVBLFdBQUssYUFBYSxPQUFBLElBQVcsTUFBTTtBQUduQyxXQUFLLFdBQVcsT0FBQSxJQUFXLE9BQU87QUFBQSxJQUNwQztBQUFBOztBQVZGLGlCQUFBLE1BQUEsbUJBQUEsRUFBQSxPQUFBLFdBQUEsR0FBQSxrQkFBQSxFQUFBLE1BQUEsU0FBQSxNQUFBLFdBQUEsTUFBQSxVQUFBLFVBQUEsR0FBQSxNQUFBLHVCQUFBOzs7UUFDeUIsR0FBQSxTQUF5QixDQUFDLHNCQUFzQixRQUFRLEtBQUssR0FEaEYsa0JBQUEsWUFBQSx1QkFBQSxHQUF3Qjs7OyJ9
55
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvZGlhbG9nL2RpYWxvZy1hY3Rpb25zL2RpYWxvZy1hY3Rpb25zLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IFNiYkFjdGlvbkdyb3VwRWxlbWVudCB9IGZyb20gJy4uLy4uL2FjdGlvbi1ncm91cC50cyc7XG5pbXBvcnQgeyBpc0xlYW4gfSBmcm9tICcuLi8uLi9jb3JlL2RvbS9sZWFuLWNvbnRleHQudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9kaWFsb2ctYWN0aW9ucy5zY3NzP2xpdCZpbmxpbmUnO1xuXG4vKipcbiAqIFVzZSB0aGlzIGNvbXBvbmVudCB0byBkaXNwbGF5IGEgZm9vdGVyIGludG8gYW4gYHNiYi1kaWFsb2dgIHdpdGggYW4gYWN0aW9uIGdyb3VwLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGBzYmItYmxvY2stbGlua2Agb3IgYHNiYi1idXR0b25gIGVsZW1lbnRzIHRvIHRoZSBgc2JiLWRpYWxvZy1hY3Rpb25zYC5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWRpYWxvZy1hY3Rpb25zJylcbmNsYXNzIFNiYkRpYWxvZ0FjdGlvbnNFbGVtZW50IGV4dGVuZHMgU2JiQWN0aW9uR3JvdXBFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW1NiYkFjdGlvbkdyb3VwRWxlbWVudC5zdHlsZXMsIHN0eWxlXTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICAvKiogQGRlZmF1bHQgJ20nIC8gJ3MnIChsZWFuKSAqL1xuICAgIHRoaXMuYnV0dG9uU2l6ZSA9IGlzTGVhbigpID8gJ3MnIDogJ20nO1xuXG4gICAgLyoqIEBkZWZhdWx0ICdzJyAvICd4cycgKGxlYW4pICovXG4gICAgdGhpcy5saW5rU2l6ZSA9IGlzTGVhbigpID8gJ3hzJyA6ICdzJztcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRpYWxvZy1hY3Rpb25zJzogU2JiRGlhbG9nQWN0aW9uc0VsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFlTSwyQkFBdUIsTUFBQTs7MEJBRDVCLGNBQWMsb0JBQW9CLENBQUM7Ozs7b0JBQ0U7QUFBUixFQUFBLG1CQUFRLFlBQXFCO0FBQUEsSUFHekQsY0FBQTtBQUNFLFlBQUE7QUFFQSxXQUFLLGFBQWEsT0FBQSxJQUFXLE1BQU07QUFHbkMsV0FBSyxXQUFXLE9BQUEsSUFBVyxPQUFPO0FBQUEsSUFDcEM7QUFBQTs7QUFWRixpQkFBQSxNQUFBLG1CQUFBLEVBQUEsT0FBQSxXQUFBLEdBQUEsa0JBQUEsRUFBQSxNQUFBLFNBQUEsTUFBQSxXQUFBLE1BQUEsVUFBQSxVQUFBLEdBQUEsTUFBQSx1QkFBQTs7O1FBQ3lCLEdBQUEsU0FBeUIsQ0FBQyxzQkFBc0IsUUFBUSxLQUFLLEdBRGhGLGtCQUFBLFlBQUEsdUJBQUEsR0FBd0I7OzsifQ==
@@ -1,8 +1,8 @@
1
- import { CSSResultGroup, PropertyValues, TemplateResult, LitElement } from 'lit';
1
+ import { CSSResultGroup, LitElement, PropertyValues, TemplateResult } from 'lit';
2
2
  import { SbbOrientation } from '../core/interfaces.ts';
3
3
  declare const SbbDividerElement_base: import('../core/mixins.ts').AbstractConstructor<import('../core/mixins.ts').SbbNegativeMixinType> & import('../core/mixins.ts').AbstractConstructor<import('../core/mixins.ts').SbbElementInternalsMixinType> & typeof LitElement & import('../core/mixins.ts').SbbElementInternalsConstructor;
4
4
  /**
5
- * It displays a divider between sections.
5
+ * Displays a divider between sections.
6
6
  */
7
7
  export declare class SbbDividerElement extends SbbDividerElement_base {
8
8
  static readonly role = "separator";
@@ -1 +1 @@
1
- {"version":3,"file":"divider.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/divider/divider.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAGvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;;AAM5D;;GAEG;AACH,qBAEM,iBAAkB,SAAQ,sBAAsD;IACpF,gBAAgC,IAAI,eAAe;IACnD,OAAuB,MAAM,EAAE,cAAc,CAA4B;IAEzE,mGAAmG;IACnG,SAA6C,WAAW,EAAE,cAAc,CAAgB;cAErE,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAQzD,MAAM,IAAI,cAAc;CAG5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,aAAa,EAAE,iBAAiB,CAAC;KAClC;CACF"}
1
+ {"version":3,"file":"divider.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/divider/divider.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAEnB,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAGb,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;;AAM5D;;GAEG;AACH,qBAEM,iBAAkB,SAAQ,sBAAsD;IACpF,gBAAgC,IAAI,eAAe;IACnD,OAAuB,MAAM,EAAE,cAAc,CAA4B;IAEzE,mGAAmG;IACnG,SAA6C,WAAW,EAAE,cAAc,CAAgB;cAErE,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAQzD,MAAM,IAAI,cAAc;CAG5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,aAAa,EAAE,iBAAiB,CAAC;KAClC;CACF"}
@@ -11,8 +11,6 @@ import { customElement, property } from "lit/decorators.js";
11
11
  import { SbbNegativeMixin, SbbElementInternalsMixin } from "../core/mixins.js";
12
12
  import { boxSizingStyles } from "../core/styles.js";
13
13
  const style = css`:host {
14
- --sbb-divider-color: var(--sbb-background-color-4);
15
- --sbb-divider-border-width: var(--sbb-border-width-1x);
16
14
  display: block;
17
15
  }
18
16
 
@@ -21,10 +19,10 @@ const style = css`:host {
21
19
  }
22
20
 
23
21
  :host([negative]) {
24
- --sbb-divider-color: var(--sbb-background-color-4-negative);
22
+ --sbb-divider-color: var(--sbb-divider-color-negative);
25
23
  }
26
24
 
27
- :host([orientation=horizontal]) .sbb-divider {
25
+ :host(:is([orientation=horizontal], :not([orientation]))) .sbb-divider {
28
26
  border-top: var(--sbb-divider-border-width) solid var(--sbb-divider-color);
29
27
  }
30
28
  :host([orientation=vertical]) .sbb-divider {
@@ -61,7 +59,7 @@ let SbbDividerElement = (() => {
61
59
  }
62
60
  }
63
61
  render() {
64
- return html` <div class="sbb-divider"></div> `;
62
+ return html`<div class="sbb-divider"></div> `;
65
63
  }
66
64
  }, _orientation_accessor_storage = new WeakMap(), _classThis = _a, (() => {
67
65
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
@@ -78,4 +76,4 @@ let SbbDividerElement = (() => {
78
76
  export {
79
77
  SbbDividerElement
80
78
  };
81
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGl2aWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kaXZpZGVyL2RpdmlkZXIuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYk9yaWVudGF0aW9uIH0gZnJvbSAnLi4vY29yZS9pbnRlcmZhY2VzLnRzJztcbmltcG9ydCB7IFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpbiwgU2JiTmVnYXRpdmVNaXhpbiB9IGZyb20gJy4uL2NvcmUvbWl4aW5zLnRzJztcbmltcG9ydCB7IGJveFNpemluZ1N0eWxlcyB9IGZyb20gJy4uL2NvcmUvc3R5bGVzLnRzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZGl2aWRlci5zY3NzP2xpdCZpbmxpbmUnO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGEgZGl2aWRlciBiZXR3ZWVuIHNlY3Rpb25zLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItZGl2aWRlcicpXG5jbGFzcyBTYmJEaXZpZGVyRWxlbWVudCBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oU2JiRWxlbWVudEludGVybmFsc01peGluKExpdEVsZW1lbnQpKSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgcm9sZSA9ICdzZXBhcmF0b3InO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbYm94U2l6aW5nU3R5bGVzLCBzdHlsZV07XG5cbiAgLyoqIE9yaWVudGF0aW9uIHByb3BlcnR5IHdpdGggcG9zc2libGUgdmFsdWVzICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcuIERlZmF1bHRzIHRvIGhvcml6b250YWwuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIG9yaWVudGF0aW9uOiBTYmJPcmllbnRhdGlvbiA9ICdob3Jpem9udGFsJztcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ29yaWVudGF0aW9uJykpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFPcmllbnRhdGlvbiA9IHRoaXMub3JpZW50YXRpb247XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgIDxkaXYgY2xhc3M9XCJzYmItZGl2aWRlclwiPjwvZGl2PiBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItZGl2aWRlcic6IFNiYkRpdmlkZXJFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBZU0scUJBQWlCLE1BQUE7OzBCQUR0QixjQUFjLGFBQWEsQ0FBQzs7OztBQUNHLE1BQUEsY0FBQSxpQkFBaUIseUJBQXlCLFVBQVUsQ0FBQzs7OztBQUE3RCxFQUFBLG1CQUFRLFlBQXNEO0FBQUE7O0FBS3ZELHdEQUFBLGtCQUFBLE1BQUEsMkJBQThDLFlBQVk7Ozs7SUFBMUQsSUFBZ0IsY0FBVztBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBM0IsSUFBZ0IsWUFBVyxPQUFBO0FBQUEseUJBQUEsK0JBQUE7QUFBQSxJQUFBO0FBQUEsSUFFckMsV0FBVyxtQkFBdUM7QUFDbkUsWUFBTSxXQUFXLGlCQUFpQjtBQUVsQyxVQUFJLGtCQUFrQixJQUFJLGFBQWEsR0FBRztBQUN4QyxhQUFLLFVBQVUsa0JBQWtCLEtBQUs7QUFBQSxNQUN4QztBQUFBLElBQ0Y7QUFBQSxJQUVtQixTQUFNO0FBQ3ZCLGFBQU87QUFBQSxJQUNUO0FBQUEsS0FaNkI7O0FBQTVCLDhCQUFBLENBQUEsU0FBUyxFQUFFLFNBQVMsS0FBQSxDQUFNLENBQUM7QUFBQyxpQkFBQSxJQUFBLE1BQUEseUJBQUEsRUFBQSxNQUFBLFlBQUEsTUFBQSxlQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLGlCQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBZ0IsYUFBVyxLQUFBLENBQUEsS0FBQSxVQUFBO0FBQUEsVUFBWCxjQUFXO0FBQUEsSUFBQSxLQUFBLFVBQUEsVUFBQSxHQUFBLDJCQUFBLDhCQUFBO0FBTDFELGlCQUFBLE1BQUEsbUJBQUEsRUFBQSxPQUFBLFdBQUEsR0FBQSxrQkFBQSxFQUFBLE1BQUEsU0FBQSxNQUFBLFdBQUEsTUFBQSxVQUFBLFVBQUEsR0FBQSxNQUFBLHVCQUFBOzs7UUFDa0MsR0FBQSxPQUFPLGFBQ2hCLEdBQUEsU0FBeUIsQ0FBQyxpQkFBaUIsS0FBSyxHQUZuRSxrQkFBQSxZQUFBLHVCQUFBLEdBQWtCOzs7In0=
79
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGl2aWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kaXZpZGVyL2RpdmlkZXIuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIExpdEVsZW1lbnQsXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBTYmJPcmllbnRhdGlvbiB9IGZyb20gJy4uL2NvcmUvaW50ZXJmYWNlcy50cyc7XG5pbXBvcnQgeyBTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4sIFNiYk5lZ2F0aXZlTWl4aW4gfSBmcm9tICcuLi9jb3JlL21peGlucy50cyc7XG5pbXBvcnQgeyBib3hTaXppbmdTdHlsZXMgfSBmcm9tICcuLi9jb3JlL3N0eWxlcy50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2RpdmlkZXIuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBEaXNwbGF5cyBhIGRpdmlkZXIgYmV0d2VlbiBzZWN0aW9ucy5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWRpdmlkZXInKVxuY2xhc3MgU2JiRGl2aWRlckVsZW1lbnQgZXh0ZW5kcyBTYmJOZWdhdGl2ZU1peGluKFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpbihMaXRFbGVtZW50KSkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IHJvbGUgPSAnc2VwYXJhdG9yJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgc3R5bGVdO1xuXG4gIC8qKiBPcmllbnRhdGlvbiBwcm9wZXJ0eSB3aXRoIHBvc3NpYmxlIHZhbHVlcyAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnLiBEZWZhdWx0cyB0byBob3Jpem9udGFsLiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciBvcmllbnRhdGlvbjogU2JiT3JpZW50YXRpb24gPSAnaG9yaXpvbnRhbCc7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdvcmllbnRhdGlvbicpKSB7XG4gICAgICB0aGlzLmludGVybmFscy5hcmlhT3JpZW50YXRpb24gPSB0aGlzLm9yaWVudGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYDxkaXYgY2xhc3M9XCJzYmItZGl2aWRlclwiPjwvZGl2PiBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItZGl2aWRlcic6IFNiYkRpdmlkZXJFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQW9CTSxxQkFBaUIsTUFBQTs7MEJBRHRCLGNBQWMsYUFBYSxDQUFDOzs7O0FBQ0csTUFBQSxjQUFBLGlCQUFpQix5QkFBeUIsVUFBVSxDQUFDOzs7O0FBQTdELEVBQUEsbUJBQVEsWUFBc0Q7QUFBQTs7QUFLdkQsd0RBQUEsa0JBQUEsTUFBQSwyQkFBOEMsWUFBWTs7OztJQUExRCxJQUFnQixjQUFXO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUEzQixJQUFnQixZQUFXLE9BQUE7QUFBQSx5QkFBQSwrQkFBQTtBQUFBLElBQUE7QUFBQSxJQUVyQyxXQUFXLG1CQUF1QztBQUNuRSxZQUFNLFdBQVcsaUJBQWlCO0FBRWxDLFVBQUksa0JBQWtCLElBQUksYUFBYSxHQUFHO0FBQ3hDLGFBQUssVUFBVSxrQkFBa0IsS0FBSztBQUFBLE1BQ3hDO0FBQUEsSUFDRjtBQUFBLElBRW1CLFNBQU07QUFDdkIsYUFBTztBQUFBLElBQ1Q7QUFBQSxLQVo2Qjs7QUFBNUIsOEJBQUEsQ0FBQSxTQUFTLEVBQUUsU0FBUyxLQUFBLENBQU0sQ0FBQztBQUFDLGlCQUFBLElBQUEsTUFBQSx5QkFBQSxFQUFBLE1BQUEsWUFBQSxNQUFBLGVBQUEsUUFBQSxPQUFBLFNBQUEsT0FBQSxRQUFBLEVBQUEsS0FBQSxDQUFBLFFBQUEsaUJBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFnQixhQUFXLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFYLGNBQVc7QUFBQSxJQUFBLEtBQUEsVUFBQSxVQUFBLEdBQUEsMkJBQUEsOEJBQUE7QUFMMUQsaUJBQUEsTUFBQSxtQkFBQSxFQUFBLE9BQUEsV0FBQSxHQUFBLGtCQUFBLEVBQUEsTUFBQSxTQUFBLE1BQUEsV0FBQSxNQUFBLFVBQUEsVUFBQSxHQUFBLE1BQUEsdUJBQUE7OztRQUNrQyxHQUFBLE9BQU8sYUFDaEIsR0FBQSxTQUF5QixDQUFDLGlCQUFpQixLQUFLLEdBRm5FLGtCQUFBLFlBQUEsdUJBQUEsR0FBa0I7OzsifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"expansion-panel.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/expansion-panel/expansion-panel/expansion-panel.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAajC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;;AAQpD;;;;GAIG;AACH,qBAEM,wBAAyB,SAAQ,6BAAuD;IAC5F,OAAuB,MAAM,EAAE,cAAc,CAA4B;IACzE,gBAAuB,MAAM;;;;;MAKlB;IAEX,yDAAyD;IACzD,SAAwD,UAAU,EAAE,aAAa,GAAG,IAAI,CAAQ;IAEhG,yCAAyC;IACzC,SAA6C,KAAK,EAAE,OAAO,GAAG,MAAM,CAAW;IAE/E,qCAAqC;IACrC,IACW,QAAQ,CAAC,KAAK,EAAE,OAAO,EAGjC;IACD,IAAW,QAAQ,IAAI,OAAO,CAE7B;IACD,OAAO,CAAC,SAAS,CAAkB;IAEnC,6EAA6E;IAC7E,IACW,QAAQ,CAAC,KAAK,EAAE,OAAO,EAGjC;IACD,IAAW,QAAQ,IAAI,OAAO,CAE7B;IACD,OAAO,CAAC,SAAS,CAAkB;IAEnC,uCAAuC;IACvC,SAEgB,UAAU,EAAE,OAAO,CAAS;IAE5C;;;OAGG;IACH,SAA6C,IAAI,EAAE,GAAG,GAAG,GAAG,CAAwB;IAEpF,kCAAkC;IAClC,OAAO,KAAK,MAAM,QAQjB;IACD,OAAO,KAAK,MAAM,GAEjB;IACD,OAAO,CAAC,cAAc,CAAwB;IAE9C,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,UAAU,CAAC,CAAiC;IACpD,OAAO,CAAC,WAAW,CAAC,CAAkC;;IAStC,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;IAK5C,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,KAAK;IAYb,OAAO,CAAC,MAAM;IAYd,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,iBAAiB;IAiCzB,OAAO,CAAC,eAAe;cAQJ,MAAM,IAAI,cAAc;CAkB5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,qBAAqB,EAAE,wBAAwB,CAAC;KACjD;CACF"}
1
+ {"version":3,"file":"expansion-panel.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/expansion-panel/expansion-panel/expansion-panel.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAajC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;;AAQpD;;;;GAIG;AACH,qBAEM,wBAAyB,SAAQ,6BAAuD;IAC5F,OAAuB,MAAM,EAAE,cAAc,CAA4B;IACzE,gBAAuB,MAAM;;;;;MAKlB;IAEX,yDAAyD;IACzD,SAAwD,UAAU,EAAE,aAAa,GAAG,IAAI,CAAQ;IAEhG,yCAAyC;IACzC,SAA6C,KAAK,EAAE,OAAO,GAAG,MAAM,CAAW;IAE/E,qCAAqC;IACrC,IACW,QAAQ,CAAC,KAAK,EAAE,OAAO,EAGjC;IACD,IAAW,QAAQ,IAAI,OAAO,CAE7B;IACD,OAAO,CAAC,SAAS,CAAkB;IAEnC,6EAA6E;IAC7E,IACW,QAAQ,CAAC,KAAK,EAAE,OAAO,EAGjC;IACD,IAAW,QAAQ,IAAI,OAAO,CAE7B;IACD,OAAO,CAAC,SAAS,CAAkB;IAEnC,uCAAuC;IACvC,SAEgB,UAAU,EAAE,OAAO,CAAS;IAE5C;;;OAGG;IACH,SAA6C,IAAI,EAAE,GAAG,GAAG,GAAG,CAAwB;IAEpF,kCAAkC;IAClC,OAAO,KAAK,MAAM,QAQjB;IACD,OAAO,KAAK,MAAM,GAEjB;IACD,OAAO,CAAC,cAAc,CAAwB;IAE9C,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,UAAU,CAAC,CAAiC;IACpD,OAAO,CAAC,WAAW,CAAC,CAAkC;;IAatC,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;IAK5C,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,KAAK;IAYb,OAAO,CAAC,MAAM;IAYd,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,iBAAiB;IAiCzB,OAAO,CAAC,eAAe;cAQJ,MAAM,IAAI,cAAc;CAgB5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,qBAAqB,EAAE,wBAAwB,CAAC;KACjD;CACF"}
@@ -18,24 +18,34 @@ const style = css`:host {
18
18
  --sbb-disable-animation-duration,
19
19
  var(--sbb-animation-duration-4x)
20
20
  );
21
- --sbb-expansion-panel-background-color: var(--sbb-background-color-1);
22
- --sbb-expansion-panel-content-visibility: hidden;
23
- --sbb-expansion-panel-border-width: var(--sbb-border-width-1x);
24
21
  --sbb-expansion-panel-border-color: var(--sbb-border-color-4-inverted);
25
- --sbb-expansion-panel-border-block-start-width: var(--sbb-expansion-panel-border-width);
22
+ --sbb-expansion-panel-border-width: var(--sbb-border-width-1x);
26
23
  --sbb-expansion-panel-border-block-start-color: var(--sbb-expansion-panel-border-color);
27
- --sbb-expansion-panel-border-radius: var(--sbb-border-radius-4x);
24
+ --sbb-expansion-panel-border-block-start-width: var(--sbb-expansion-panel-border-width);
25
+ --sbb-expansion-panel-content-visibility: hidden;
28
26
  --sbb-expansion-panel-start-end-radius: var(--sbb-expansion-panel-border-radius);
29
27
  --sbb-expansion-panel-start-start-radius: var(--sbb-expansion-panel-border-radius);
30
28
  --sbb-expansion-panel-end-end-radius: var(--sbb-expansion-panel-border-radius);
31
29
  --sbb-expansion-panel-end-start-radius: var(--sbb-expansion-panel-border-radius);
32
- --sbb-expansion-panel-title-gap: var(--sbb-spacing-fixed-4x);
33
- --sbb-expansion-panel-icon-size: var(--sbb-size-icon-ui-medium);
34
30
  display: block;
31
+ background-color: var(--sbb-expansion-panel-background-color);
32
+ border: var(--sbb-expansion-panel-border-width) solid var(--sbb-expansion-panel-border-color);
33
+ border-block-start-color: var(--sbb-expansion-panel-border-block-start-color);
34
+ border-block-start-width: var(--sbb-expansion-panel-border-block-start-width);
35
+ border-radius: var(--sbb-expansion-panel-start-start-radius) var(--sbb-expansion-panel-start-end-radius) var(--sbb-expansion-panel-end-end-radius) var(--sbb-expansion-panel-end-start-radius);
36
+ background-clip: padding-box;
35
37
  }
36
38
 
37
39
  :host([size=s]) {
38
- --sbb-expansion-panel-title-gap: var(--sbb-spacing-fixed-2x);
40
+ --sbb-expansion-panel-title-gap: var(--sbb-expansion-panel-title-gap-s);
41
+ }
42
+
43
+ :host([size=l]) {
44
+ --sbb-expansion-panel-title-gap: var(--sbb-expansion-panel-title-gap-l);
45
+ }
46
+
47
+ :host(:not([size])) {
48
+ --sbb-expansion-panel-title-gap: var(--sbb-expansion-panel-title-gap-default);
39
49
  }
40
50
 
41
51
  @media (forced-colors: active) {
@@ -71,8 +81,14 @@ const style = css`:host {
71
81
  --sbb-expansion-panel-end-start-radius: 0;
72
82
  }
73
83
 
84
+ :host([color=white]) {
85
+ --sbb-expansion-panel-background-color: var(--sbb-background-color-1);
86
+ --sbb-expansion-panel-background-color-hover: var(--sbb-background-color-3);
87
+ }
88
+
74
89
  :host([color=milk]) {
75
90
  --sbb-expansion-panel-background-color: var(--sbb-background-color-3);
91
+ --sbb-expansion-panel-background-color-hover: var(--sbb-background-color-1);
76
92
  }
77
93
 
78
94
  :host([borderless]) {
@@ -98,7 +114,7 @@ const style = css`:host {
98
114
  }
99
115
 
100
116
  :host(:not([disabled]):is(:state(toggle-hover),[state--toggle-hover])) {
101
- --sbb-expansion-panel-background-color: var(--sbb-background-color-3);
117
+ background-color: var(--sbb-expansion-panel-background-color-hover);
102
118
  }
103
119
  @media (forced-colors: active) {
104
120
  :host(:not([disabled]):is(:state(toggle-hover),[state--toggle-hover])) {
@@ -107,19 +123,6 @@ const style = css`:host {
107
123
  }
108
124
  }
109
125
 
110
- :host(:not([disabled])[color=milk]:is(:state(toggle-hover),[state--toggle-hover])) {
111
- --sbb-expansion-panel-background-color: var(--sbb-background-color-1);
112
- }
113
-
114
- .sbb-expansion-panel {
115
- background-color: var(--sbb-expansion-panel-background-color);
116
- border: var(--sbb-expansion-panel-border-width) solid var(--sbb-expansion-panel-border-color);
117
- border-block-start-color: var(--sbb-expansion-panel-border-block-start-color);
118
- border-block-start-width: var(--sbb-expansion-panel-border-block-start-width);
119
- border-radius: var(--sbb-expansion-panel-start-start-radius) var(--sbb-expansion-panel-start-end-radius) var(--sbb-expansion-panel-end-end-radius) var(--sbb-expansion-panel-end-start-radius);
120
- background-clip: padding-box;
121
- }
122
-
123
126
  .sbb-expansion-panel__header {
124
127
  margin: 0;
125
128
  }
@@ -148,7 +151,7 @@ const style = css`:host {
148
151
  }
149
152
 
150
153
  .sbb-expansion-panel__content {
151
- overflow: hidden;
154
+ min-height: 0;
152
155
  }
153
156
 
154
157
  @keyframes open {
@@ -216,7 +219,11 @@ let SbbExpansionPanelElement = (() => {
216
219
  this._stateInternal = __runInitializers(this, _size_extraInitializers);
217
220
  this._progressiveId = `-${++nextId}`;
218
221
  this._state = "closed";
219
- this.addEventListener?.("toggleexpanded", () => this._toggleExpanded());
222
+ this.addEventListener?.("toggleexpanded", (ev) => {
223
+ if (ev.target === this._headerRef) {
224
+ this._toggleExpanded();
225
+ }
226
+ });
220
227
  }
221
228
  /** Heading level; if unset, a `div` will be rendered. */
222
229
  get titleLevel() {
@@ -362,15 +369,13 @@ let SbbExpansionPanelElement = (() => {
362
369
  render() {
363
370
  const TAGNAME = this.titleLevel ? `h${this.titleLevel}` : "div";
364
371
  return html`
365
- <div class="sbb-expansion-panel">
366
- <${unsafeStatic(TAGNAME)} class="sbb-expansion-panel__header">
367
- <slot name="header" @slotchange=${this._handleSlotchange}></slot>
368
- </${unsafeStatic(TAGNAME)}>
369
- <div class="sbb-expansion-panel__content-wrapper" @animationend=${this._onAnimationEnd}>
370
- <span class="sbb-expansion-panel__content">
371
- <slot name="content" @slotchange=${this._handleSlotchange}></slot>
372
- </span>
373
- </div>
372
+ <${unsafeStatic(TAGNAME)} class="sbb-expansion-panel__header">
373
+ <slot name="header" @slotchange=${this._handleSlotchange}></slot>
374
+ </${unsafeStatic(TAGNAME)}>
375
+ <div class="sbb-expansion-panel__content-wrapper" @animationend=${this._onAnimationEnd}>
376
+ <span class="sbb-expansion-panel__content">
377
+ <slot name="content" @slotchange=${this._handleSlotchange}></slot>
378
+ </span>
374
379
  </div>
375
380
  `;
376
381
  }
@@ -414,4 +419,4 @@ let SbbExpansionPanelElement = (() => {
414
419
  export {
415
420
  SbbExpansionPanelElement
416
421
  };
417
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwvZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaHRtbCwgdW5zYWZlU3RhdGljIH0gZnJvbSAnbGl0L3N0YXRpYy1odG1sLmpzJztcblxuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLnRzJztcbmltcG9ydCB7IGlzTGVhbiwgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL2RvbS50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYk9wZW5lZENsb3NlZFN0YXRlIH0gZnJvbSAnLi4vLi4vY29yZS9pbnRlcmZhY2VzLnRzJztcbmltcG9ydCB7XG4gIFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpbixcbiAgU2JiSHlkcmF0aW9uTWl4aW4sXG4gIMm1c3RhdGVDb250cm9sbGVyLFxufSBmcm9tICcuLi8uLi9jb3JlL21peGlucy50cyc7XG5pbXBvcnQgeyBib3hTaXppbmdTdHlsZXMgfSBmcm9tICcuLi8uLi9jb3JlL3N0eWxlcy50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYlRpdGxlTGV2ZWwgfSBmcm9tICcuLi8uLi90aXRsZS50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYkV4cGFuc2lvblBhbmVsQ29udGVudEVsZW1lbnQgfSBmcm9tICcuLi9leHBhbnNpb24tcGFuZWwtY29udGVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYkV4cGFuc2lvblBhbmVsSGVhZGVyRWxlbWVudCB9IGZyb20gJy4uL2V4cGFuc2lvbi1wYW5lbC1oZWFkZXIudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9leHBhbnNpb24tcGFuZWwuc2Nzcz9saXQmaW5saW5lJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYW4gZXhwYW5kYWJsZSBzdW1tYXJ5LWRldGFpbHMgd2lkZ2V0LlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGEgYHNiYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyYCBhbmQgYSBgc2JiLWV4cGFuc2lvbi1wYW5lbC1jb250ZW50YCBlbGVtZW50LlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItZXhwYW5zaW9uLXBhbmVsJylcbmNsYXNzIFNiYkV4cGFuc2lvblBhbmVsRWxlbWVudCBleHRlbmRzIFNiYkh5ZHJhdGlvbk1peGluKFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpbihMaXRFbGVtZW50KSkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbYm94U2l6aW5nU3R5bGVzLCBzdHlsZV07XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIGJlZm9yZW9wZW46ICdiZWZvcmVvcGVuJyxcbiAgICBvcGVuOiAnb3BlbicsXG4gICAgYmVmb3JlY2xvc2U6ICdiZWZvcmVjbG9zZScsXG4gICAgY2xvc2U6ICdjbG9zZScsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqIEhlYWRpbmcgbGV2ZWw7IGlmIHVuc2V0LCBhIGBkaXZgIHdpbGwgYmUgcmVuZGVyZWQuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3RpdGxlLWxldmVsJyB9KSBwdWJsaWMgYWNjZXNzb3IgdGl0bGVMZXZlbDogU2JiVGl0bGVMZXZlbCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBUaGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgcGFuZWwuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIGNvbG9yOiAnd2hpdGUnIHwgJ21pbGsnID0gJ3doaXRlJztcblxuICAvKiogV2hldGhlciB0aGUgcGFuZWwgaXMgZXhwYW5kZWQuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIHNldCBleHBhbmRlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2V4cGFuZGVkID0gdmFsdWU7XG4gICAgdGhpcy5fb25FeHBhbmRlZENoYW5nZSgpO1xuICB9XG4gIHB1YmxpYyBnZXQgZXhwYW5kZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2V4cGFuZGVkO1xuICB9XG4gIHByaXZhdGUgX2V4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHBhbmVsIGlzIGRpc2FibGVkLCBzbyBpdHMgZXhwYW5kZWQgc3RhdGUgY2FuJ3QgYmUgY2hhbmdlZC4gKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICB0aGlzLl91cGRhdGVEaXNhYmxlZE9uSGVhZGVyKHRoaXMuX2Rpc2FibGVkKTtcbiAgfVxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBwYW5lbCBoYXMgbm8gYm9yZGVyLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYm9yZGVybGVzczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBsIG9yIHMuXG4gICAqIEBkZWZhdWx0ICdsJyAvICdzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdzJyB8ICdsJyA9IGlzTGVhbigpID8gJ3MnIDogJ2wnO1xuXG4gIC8qKiBUaGUgc3RhdGUgb2YgdGhlIGNvbXBvbmVudC4gKi9cbiAgcHJpdmF0ZSBzZXQgX3N0YXRlKHN0YXRlOiBTYmJPcGVuZWRDbG9zZWRTdGF0ZSkge1xuICAgIGlmICh0aGlzLl9zdGF0ZUludGVybmFsKSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKGBzdGF0ZS0ke3RoaXMuX3N0YXRlSW50ZXJuYWx9YCk7XG4gICAgfVxuICAgIHRoaXMuX3N0YXRlSW50ZXJuYWwgPSBzdGF0ZTtcbiAgICBpZiAodGhpcy5fc3RhdGVJbnRlcm5hbCkge1xuICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmFkZChgc3RhdGUtJHt0aGlzLl9zdGF0ZUludGVybmFsfWApO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIGdldCBfc3RhdGUoKTogU2JiT3BlbmVkQ2xvc2VkU3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZUludGVybmFsO1xuICB9XG4gIHByaXZhdGUgX3N0YXRlSW50ZXJuYWwhOiBTYmJPcGVuZWRDbG9zZWRTdGF0ZTtcblxuICBwcml2YXRlIF9wcm9ncmVzc2l2ZUlkID0gYC0keysrbmV4dElkfWA7XG4gIHByaXZhdGUgX2hlYWRlclJlZj86IFNiYkV4cGFuc2lvblBhbmVsSGVhZGVyRWxlbWVudDtcbiAgcHJpdmF0ZSBfY29udGVudFJlZj86IFNiYkV4cGFuc2lvblBhbmVsQ29udGVudEVsZW1lbnQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLl9zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCd0b2dnbGVleHBhbmRlZCcsICgpID0+IHRoaXMuX3RvZ2dsZUV4cGFuZGVkKCkpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy50b2dnbGVTdGF0ZSgnYWNjb3JkaW9uJywgISF0aGlzLmNsb3Nlc3Q/Lignc2JiLWFjY29yZGlvbicpKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5kZWxldGUoJ2FjY29yZGlvbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdG9nZ2xlRXhwYW5kZWQoKTogdm9pZCB7XG4gICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLmV4cGFuZGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25FeHBhbmRlZENoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9oZWFkZXJSZWY/LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIFN0cmluZyh0aGlzLmV4cGFuZGVkKSk7XG4gICAgdGhpcy5fY29udGVudFJlZj8uc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsIFN0cmluZyghdGhpcy5leHBhbmRlZCkpO1xuXG4gICAgaWYgKHRoaXMuZXhwYW5kZWQpIHtcbiAgICAgIHRoaXMuX29wZW4oKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3N0YXRlID09PSAnb3BlbmVkJykge1xuICAgICAgdGhpcy5fY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vcGVuKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlID0gJ29wZW5pbmcnO1xuICAgIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1leHBhbnNpb24tcGFuZWxgIHN0YXJ0cyB0aGUgb3BlbmluZyB0cmFuc2l0aW9uLiAqL1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2JlZm9yZW9wZW4nKSk7XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgb3BlbmVkYCBzdGF0ZS5cbiAgICBpZiAoIXRoaXMuaGFzVXBkYXRlZCB8fCB0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdGUgPSAnY2xvc2luZyc7XG4gICAgLyoqIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLWV4cGFuc2lvbi1wYW5lbGAgYmVnaW5zIHRoZSBjbG9zaW5nIHRyYW5zaXRpb24uICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnYmVmb3JlY2xvc2UnKSk7XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgY2xvc2VkYCBzdGF0ZS5cbiAgICBpZiAodGhpcy5faXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5faGFuZGxlQ2xvc2luZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1plcm9BbmltYXRpb25EdXJhdGlvbih0aGlzLCAnLS1zYmItZXhwYW5zaW9uLXBhbmVsLWFuaW1hdGlvbi1kdXJhdGlvbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlT3BlbmluZygpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZSA9ICdvcGVuZWQnO1xuICAgIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1leHBhbnNpb24tcGFuZWxgIGlzIG9wZW5lZC4gKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdvcGVuJykpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlQ2xvc2luZygpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1leHBhbnNpb24tcGFuZWxgIGlzIGNsb3NlZC4gKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjbG9zZScpKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZURpc2FibGVkT25IZWFkZXIobmV3RGlzYWJsZWRWYWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLl9oZWFkZXJSZWYpIHtcbiAgICAgIHRoaXMuX2hlYWRlclJlZi5kaXNhYmxlZCA9IG5ld0Rpc2FibGVkVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlU2xvdGNoYW5nZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IEFycmF5LmZyb20odGhpcy5jaGlsZHJlbiA/PyBbXSk7XG4gICAgY29uc3QgaGVhZGVyID0gY2hpbGRyZW4uZmluZChcbiAgICAgIChlKTogZSBpcyBTYmJFeHBhbnNpb25QYW5lbEhlYWRlckVsZW1lbnQgPT4gZS5sb2NhbE5hbWUgPT09ICdzYmItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcicsXG4gICAgKTtcbiAgICBjb25zdCBjb250ZW50ID0gY2hpbGRyZW4uZmluZChcbiAgICAgIChlKTogZSBpcyBTYmJFeHBhbnNpb25QYW5lbENvbnRlbnRFbGVtZW50ID0+IGUubG9jYWxOYW1lID09PSAnc2JiLWV4cGFuc2lvbi1wYW5lbC1jb250ZW50JyxcbiAgICApO1xuICAgIGlmICh0aGlzLl9oZWFkZXJSZWYgPT09IGhlYWRlciAmJiB0aGlzLl9jb250ZW50UmVmID09PSBjb250ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChoZWFkZXIgJiYgdGhpcy5faGVhZGVyUmVmICE9PSBoZWFkZXIpIHtcbiAgICAgIGhlYWRlci5pZCB8fD0gYHNiYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyJHt0aGlzLl9wcm9ncmVzc2l2ZUlkfWA7XG4gICAgICBoZWFkZXIuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgU3RyaW5nKHRoaXMuZXhwYW5kZWQpKTtcbiAgICAgIGhlYWRlci50b2dnbGVBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgdGhpcy5kaXNhYmxlZCk7XG4gICAgfVxuICAgIGlmIChjb250ZW50ICYmIHRoaXMuX2NvbnRlbnRSZWYgIT09IGNvbnRlbnQpIHtcbiAgICAgIGNvbnRlbnQuaWQgfHw9IGBzYmItZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnQke3RoaXMuX3Byb2dyZXNzaXZlSWR9YDtcbiAgICAgIGNvbnRlbnQuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsIFN0cmluZyghdGhpcy5leHBhbmRlZCkpO1xuICAgIH1cblxuICAgIHRoaXMuX2hlYWRlclJlZiA9IGhlYWRlcjtcbiAgICB0aGlzLl9jb250ZW50UmVmID0gY29udGVudDtcbiAgICBpZiAodGhpcy5faGVhZGVyUmVmICYmIHRoaXMuX2NvbnRlbnRSZWYpIHtcbiAgICAgIHRoaXMuX2hlYWRlclJlZi5zZXRBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMnLCB0aGlzLl9jb250ZW50UmVmLmlkKTtcbiAgICAgIHRoaXMuX2NvbnRlbnRSZWYuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknLCB0aGlzLl9oZWFkZXJSZWYuaWQpO1xuICAgICAgybVzdGF0ZUNvbnRyb2xsZXIodGhpcy5fY29udGVudFJlZikudG9nZ2xlKFxuICAgICAgICAnaWNvbi1zcGFjZScsXG4gICAgICAgIMm1c3RhdGVDb250cm9sbGVyKHRoaXMuX2hlYWRlclJlZikuaGFzKCdpY29uJyksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uQW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnb3Blbi1vcGFjaXR5JyAmJiB0aGlzLl9zdGF0ZSA9PT0gJ29wZW5pbmcnKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfSBlbHNlIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnY2xvc2UnICYmIHRoaXMuX3N0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICBjb25zdCBUQUdOQU1FID0gdGhpcy50aXRsZUxldmVsID8gYGgke3RoaXMudGl0bGVMZXZlbH1gIDogJ2Rpdic7XG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBsaXQvYmluZGluZy1wb3NpdGlvbnMgKi9cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItZXhwYW5zaW9uLXBhbmVsXCI+XG4gICAgICAgIDwke3Vuc2FmZVN0YXRpYyhUQUdOQU1FKX0gY2xhc3M9XCJzYmItZXhwYW5zaW9uLXBhbmVsX19oZWFkZXJcIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwiaGVhZGVyXCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9oYW5kbGVTbG90Y2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgIDwvJHt1bnNhZmVTdGF0aWMoVEFHTkFNRSl9PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWV4cGFuc2lvbi1wYW5lbF9fY29udGVudC13cmFwcGVyXCIgQGFuaW1hdGlvbmVuZD0ke3RoaXMuX29uQW5pbWF0aW9uRW5kfT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1leHBhbnNpb24tcGFuZWxfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgIDxzbG90IG5hbWU9XCJjb250ZW50XCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9oYW5kbGVTbG90Y2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gICAgLyogZXNsaW50LWVuYWJsZSBsaXQvYmluZGluZy1wb3NpdGlvbnMgKi9cbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWV4cGFuc2lvbi1wYW5lbCc6IFNiYkV4cGFuc2lvblBhbmVsRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIsm1c3RhdGVDb250cm9sbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQSxJQUFJLFNBQVM7SUFTUCw0QkFBd0IsTUFBQTs7MEJBRDdCLGNBQWMscUJBQXFCLENBQUM7Ozs7QUFDRSxNQUFBLGNBQUEsa0JBQWtCLHlCQUF5QixVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBOUQsRUFBQSxtQkFBUSxZQUF1RDtBQUFBLElBbUU1RixjQUFBO0FBQ0UsWUFBQTtBQTFEc0M7QUFHWDtBQTJCN0I7QUFNNkI7QUFwQzJCLHlCQUFBLCtCQVZw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
422
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwvZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaHRtbCwgdW5zYWZlU3RhdGljIH0gZnJvbSAnbGl0L3N0YXRpYy1odG1sLmpzJztcblxuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLnRzJztcbmltcG9ydCB7IGlzTGVhbiwgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL2RvbS50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYk9wZW5lZENsb3NlZFN0YXRlIH0gZnJvbSAnLi4vLi4vY29yZS9pbnRlcmZhY2VzLnRzJztcbmltcG9ydCB7XG4gIFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpbixcbiAgU2JiSHlkcmF0aW9uTWl4aW4sXG4gIMm1c3RhdGVDb250cm9sbGVyLFxufSBmcm9tICcuLi8uLi9jb3JlL21peGlucy50cyc7XG5pbXBvcnQgeyBib3hTaXppbmdTdHlsZXMgfSBmcm9tICcuLi8uLi9jb3JlL3N0eWxlcy50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYlRpdGxlTGV2ZWwgfSBmcm9tICcuLi8uLi90aXRsZS50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYkV4cGFuc2lvblBhbmVsQ29udGVudEVsZW1lbnQgfSBmcm9tICcuLi9leHBhbnNpb24tcGFuZWwtY29udGVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYkV4cGFuc2lvblBhbmVsSGVhZGVyRWxlbWVudCB9IGZyb20gJy4uL2V4cGFuc2lvbi1wYW5lbC1oZWFkZXIudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9leHBhbnNpb24tcGFuZWwuc2Nzcz9saXQmaW5saW5lJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYW4gZXhwYW5kYWJsZSBzdW1tYXJ5LWRldGFpbHMgd2lkZ2V0LlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGEgYHNiYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyYCBhbmQgYSBgc2JiLWV4cGFuc2lvbi1wYW5lbC1jb250ZW50YCBlbGVtZW50LlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItZXhwYW5zaW9uLXBhbmVsJylcbmNsYXNzIFNiYkV4cGFuc2lvblBhbmVsRWxlbWVudCBleHRlbmRzIFNiYkh5ZHJhdGlvbk1peGluKFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpbihMaXRFbGVtZW50KSkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbYm94U2l6aW5nU3R5bGVzLCBzdHlsZV07XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIGJlZm9yZW9wZW46ICdiZWZvcmVvcGVuJyxcbiAgICBvcGVuOiAnb3BlbicsXG4gICAgYmVmb3JlY2xvc2U6ICdiZWZvcmVjbG9zZScsXG4gICAgY2xvc2U6ICdjbG9zZScsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqIEhlYWRpbmcgbGV2ZWw7IGlmIHVuc2V0LCBhIGBkaXZgIHdpbGwgYmUgcmVuZGVyZWQuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3RpdGxlLWxldmVsJyB9KSBwdWJsaWMgYWNjZXNzb3IgdGl0bGVMZXZlbDogU2JiVGl0bGVMZXZlbCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBUaGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgcGFuZWwuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIGNvbG9yOiAnd2hpdGUnIHwgJ21pbGsnID0gJ3doaXRlJztcblxuICAvKiogV2hldGhlciB0aGUgcGFuZWwgaXMgZXhwYW5kZWQuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIHNldCBleHBhbmRlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2V4cGFuZGVkID0gdmFsdWU7XG4gICAgdGhpcy5fb25FeHBhbmRlZENoYW5nZSgpO1xuICB9XG4gIHB1YmxpYyBnZXQgZXhwYW5kZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2V4cGFuZGVkO1xuICB9XG4gIHByaXZhdGUgX2V4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHBhbmVsIGlzIGRpc2FibGVkLCBzbyBpdHMgZXhwYW5kZWQgc3RhdGUgY2FuJ3QgYmUgY2hhbmdlZC4gKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICB0aGlzLl91cGRhdGVEaXNhYmxlZE9uSGVhZGVyKHRoaXMuX2Rpc2FibGVkKTtcbiAgfVxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBwYW5lbCBoYXMgbm8gYm9yZGVyLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYm9yZGVybGVzczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBsIG9yIHMuXG4gICAqIEBkZWZhdWx0ICdsJyAvICdzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdzJyB8ICdsJyA9IGlzTGVhbigpID8gJ3MnIDogJ2wnO1xuXG4gIC8qKiBUaGUgc3RhdGUgb2YgdGhlIGNvbXBvbmVudC4gKi9cbiAgcHJpdmF0ZSBzZXQgX3N0YXRlKHN0YXRlOiBTYmJPcGVuZWRDbG9zZWRTdGF0ZSkge1xuICAgIGlmICh0aGlzLl9zdGF0ZUludGVybmFsKSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKGBzdGF0ZS0ke3RoaXMuX3N0YXRlSW50ZXJuYWx9YCk7XG4gICAgfVxuICAgIHRoaXMuX3N0YXRlSW50ZXJuYWwgPSBzdGF0ZTtcbiAgICBpZiAodGhpcy5fc3RhdGVJbnRlcm5hbCkge1xuICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmFkZChgc3RhdGUtJHt0aGlzLl9zdGF0ZUludGVybmFsfWApO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIGdldCBfc3RhdGUoKTogU2JiT3BlbmVkQ2xvc2VkU3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZUludGVybmFsO1xuICB9XG4gIHByaXZhdGUgX3N0YXRlSW50ZXJuYWwhOiBTYmJPcGVuZWRDbG9zZWRTdGF0ZTtcblxuICBwcml2YXRlIF9wcm9ncmVzc2l2ZUlkID0gYC0keysrbmV4dElkfWA7XG4gIHByaXZhdGUgX2hlYWRlclJlZj86IFNiYkV4cGFuc2lvblBhbmVsSGVhZGVyRWxlbWVudDtcbiAgcHJpdmF0ZSBfY29udGVudFJlZj86IFNiYkV4cGFuc2lvblBhbmVsQ29udGVudEVsZW1lbnQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLl9zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCd0b2dnbGVleHBhbmRlZCcsIChldjogRXZlbnQpID0+IHtcbiAgICAgIGlmIChldi50YXJnZXQgPT09IHRoaXMuX2hlYWRlclJlZikge1xuICAgICAgICB0aGlzLl90b2dnbGVFeHBhbmRlZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy50b2dnbGVTdGF0ZSgnYWNjb3JkaW9uJywgISF0aGlzLmNsb3Nlc3Q/Lignc2JiLWFjY29yZGlvbicpKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5kZWxldGUoJ2FjY29yZGlvbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdG9nZ2xlRXhwYW5kZWQoKTogdm9pZCB7XG4gICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLmV4cGFuZGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25FeHBhbmRlZENoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9oZWFkZXJSZWY/LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIFN0cmluZyh0aGlzLmV4cGFuZGVkKSk7XG4gICAgdGhpcy5fY29udGVudFJlZj8uc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsIFN0cmluZyghdGhpcy5leHBhbmRlZCkpO1xuXG4gICAgaWYgKHRoaXMuZXhwYW5kZWQpIHtcbiAgICAgIHRoaXMuX29wZW4oKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3N0YXRlID09PSAnb3BlbmVkJykge1xuICAgICAgdGhpcy5fY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vcGVuKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlID0gJ29wZW5pbmcnO1xuICAgIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1leHBhbnNpb24tcGFuZWxgIHN0YXJ0cyB0aGUgb3BlbmluZyB0cmFuc2l0aW9uLiAqL1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2JlZm9yZW9wZW4nKSk7XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgb3BlbmVkYCBzdGF0ZS5cbiAgICBpZiAoIXRoaXMuaGFzVXBkYXRlZCB8fCB0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdGUgPSAnY2xvc2luZyc7XG4gICAgLyoqIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLWV4cGFuc2lvbi1wYW5lbGAgYmVnaW5zIHRoZSBjbG9zaW5nIHRyYW5zaXRpb24uICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnYmVmb3JlY2xvc2UnKSk7XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgY2xvc2VkYCBzdGF0ZS5cbiAgICBpZiAodGhpcy5faXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5faGFuZGxlQ2xvc2luZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1plcm9BbmltYXRpb25EdXJhdGlvbih0aGlzLCAnLS1zYmItZXhwYW5zaW9uLXBhbmVsLWFuaW1hdGlvbi1kdXJhdGlvbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlT3BlbmluZygpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZSA9ICdvcGVuZWQnO1xuICAgIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1leHBhbnNpb24tcGFuZWxgIGlzIG9wZW5lZC4gKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdvcGVuJykpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlQ2xvc2luZygpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1leHBhbnNpb24tcGFuZWxgIGlzIGNsb3NlZC4gKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjbG9zZScpKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZURpc2FibGVkT25IZWFkZXIobmV3RGlzYWJsZWRWYWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLl9oZWFkZXJSZWYpIHtcbiAgICAgIHRoaXMuX2hlYWRlclJlZi5kaXNhYmxlZCA9IG5ld0Rpc2FibGVkVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlU2xvdGNoYW5nZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IEFycmF5LmZyb20odGhpcy5jaGlsZHJlbiA/PyBbXSk7XG4gICAgY29uc3QgaGVhZGVyID0gY2hpbGRyZW4uZmluZChcbiAgICAgIChlKTogZSBpcyBTYmJFeHBhbnNpb25QYW5lbEhlYWRlckVsZW1lbnQgPT4gZS5sb2NhbE5hbWUgPT09ICdzYmItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcicsXG4gICAgKTtcbiAgICBjb25zdCBjb250ZW50ID0gY2hpbGRyZW4uZmluZChcbiAgICAgIChlKTogZSBpcyBTYmJFeHBhbnNpb25QYW5lbENvbnRlbnRFbGVtZW50ID0+IGUubG9jYWxOYW1lID09PSAnc2JiLWV4cGFuc2lvbi1wYW5lbC1jb250ZW50JyxcbiAgICApO1xuICAgIGlmICh0aGlzLl9oZWFkZXJSZWYgPT09IGhlYWRlciAmJiB0aGlzLl9jb250ZW50UmVmID09PSBjb250ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChoZWFkZXIgJiYgdGhpcy5faGVhZGVyUmVmICE9PSBoZWFkZXIpIHtcbiAgICAgIGhlYWRlci5pZCB8fD0gYHNiYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyJHt0aGlzLl9wcm9ncmVzc2l2ZUlkfWA7XG4gICAgICBoZWFkZXIuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgU3RyaW5nKHRoaXMuZXhwYW5kZWQpKTtcbiAgICAgIGhlYWRlci50b2dnbGVBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgdGhpcy5kaXNhYmxlZCk7XG4gICAgfVxuICAgIGlmIChjb250ZW50ICYmIHRoaXMuX2NvbnRlbnRSZWYgIT09IGNvbnRlbnQpIHtcbiAgICAgIGNvbnRlbnQuaWQgfHw9IGBzYmItZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnQke3RoaXMuX3Byb2dyZXNzaXZlSWR9YDtcbiAgICAgIGNvbnRlbnQuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsIFN0cmluZyghdGhpcy5leHBhbmRlZCkpO1xuICAgIH1cblxuICAgIHRoaXMuX2hlYWRlclJlZiA9IGhlYWRlcjtcbiAgICB0aGlzLl9jb250ZW50UmVmID0gY29udGVudDtcbiAgICBpZiAodGhpcy5faGVhZGVyUmVmICYmIHRoaXMuX2NvbnRlbnRSZWYpIHtcbiAgICAgIHRoaXMuX2hlYWRlclJlZi5zZXRBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMnLCB0aGlzLl9jb250ZW50UmVmLmlkKTtcbiAgICAgIHRoaXMuX2NvbnRlbnRSZWYuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknLCB0aGlzLl9oZWFkZXJSZWYuaWQpO1xuICAgICAgybVzdGF0ZUNvbnRyb2xsZXIodGhpcy5fY29udGVudFJlZikudG9nZ2xlKFxuICAgICAgICAnaWNvbi1zcGFjZScsXG4gICAgICAgIMm1c3RhdGVDb250cm9sbGVyKHRoaXMuX2hlYWRlclJlZikuaGFzKCdpY29uJyksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uQW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnb3Blbi1vcGFjaXR5JyAmJiB0aGlzLl9zdGF0ZSA9PT0gJ29wZW5pbmcnKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfSBlbHNlIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnY2xvc2UnICYmIHRoaXMuX3N0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICBjb25zdCBUQUdOQU1FID0gdGhpcy50aXRsZUxldmVsID8gYGgke3RoaXMudGl0bGVMZXZlbH1gIDogJ2Rpdic7XG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBsaXQvYmluZGluZy1wb3NpdGlvbnMgKi9cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDwke3Vuc2FmZVN0YXRpYyhUQUdOQU1FKX0gY2xhc3M9XCJzYmItZXhwYW5zaW9uLXBhbmVsX19oZWFkZXJcIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cImhlYWRlclwiIEBzbG90Y2hhbmdlPSR7dGhpcy5faGFuZGxlU2xvdGNoYW5nZX0+PC9zbG90PlxuICAgICAgPC8ke3Vuc2FmZVN0YXRpYyhUQUdOQU1FKX0+XG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWV4cGFuc2lvbi1wYW5lbF9fY29udGVudC13cmFwcGVyXCIgQGFuaW1hdGlvbmVuZD0ke3RoaXMuX29uQW5pbWF0aW9uRW5kfT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItZXhwYW5zaW9uLXBhbmVsX19jb250ZW50XCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImNvbnRlbnRcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX2hhbmRsZVNsb3RjaGFuZ2V9Pjwvc2xvdD5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgICAvKiBlc2xpbnQtZW5hYmxlIGxpdC9iaW5kaW5nLXBvc2l0aW9ucyAqL1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItZXhwYW5zaW9uLXBhbmVsJzogU2JiRXhwYW5zaW9uUGFuZWxFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiybVzdGF0ZUNvbnRyb2xsZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBLElBQUksU0FBUztJQVNQLDRCQUF3QixNQUFBOzswQkFEN0IsY0FBYyxxQkFBcUIsQ0FBQzs7OztBQUNFLE1BQUEsY0FBQSxrQkFBa0IseUJBQXlCLFVBQVUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQUE5RCxFQUFBLG1CQUFRLFlBQXVEO0FBQUEsSUFtRTVGLGNBQUE7QUFDRSxZQUFBO0FBMURzQztBQUdYO0FBMkI3QjtBQU02QjtBQXBDMkIs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