@sbb-esta/lyne-elements 1.8.0 → 1.9.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 (43) hide show
  1. package/clock.js +5 -5
  2. package/container/container.js +14 -14
  3. package/core/dom/platform.d.ts +2 -3
  4. package/core/dom/platform.d.ts.map +1 -1
  5. package/core/dom.js +38 -40
  6. package/core/styles/core.scss +6 -0
  7. package/core/styles/mixins/lists.scss +11 -1
  8. package/core/testing/wait-for-image-ready.d.ts.map +1 -1
  9. package/core/testing.js +61 -54
  10. package/core.css +5 -0
  11. package/custom-elements.json +123 -1
  12. package/datepicker/datepicker-toggle.js +3 -3
  13. package/development/clock.js +1 -1
  14. package/development/container/container.js +1 -1
  15. package/development/core/dom/platform.d.ts +2 -3
  16. package/development/core/dom/platform.d.ts.map +1 -1
  17. package/development/core/dom.js +4 -5
  18. package/development/core/testing/wait-for-image-ready.d.ts.map +1 -1
  19. package/development/core/testing.js +16 -2
  20. package/development/datepicker/datepicker-toggle.js +3 -3
  21. package/development/overlay.js +2 -9
  22. package/development/select/select.d.ts +3 -1
  23. package/development/select/select.d.ts.map +1 -1
  24. package/development/select.js +20 -6
  25. package/development/stepper/step-label.js +20 -2
  26. package/development/stepper/stepper/stepper.d.ts +3 -0
  27. package/development/stepper/stepper/stepper.d.ts.map +1 -1
  28. package/development/stepper/stepper.js +16 -1
  29. package/development/toggle/toggle-option/toggle-option.d.ts.map +1 -1
  30. package/development/toggle/toggle-option.js +2 -1
  31. package/lists.css +9 -1
  32. package/overlay.js +1 -1
  33. package/package.json +1 -1
  34. package/select/select.d.ts +3 -1
  35. package/select/select.d.ts.map +1 -1
  36. package/select.js +61 -50
  37. package/standard-theme.css +14 -1
  38. package/stepper/step-label.js +10 -10
  39. package/stepper/stepper/stepper.d.ts +3 -0
  40. package/stepper/stepper/stepper.d.ts.map +1 -1
  41. package/stepper/stepper.js +34 -25
  42. package/toggle/toggle-option/toggle-option.d.ts.map +1 -1
  43. package/toggle/toggle-option.js +1 -0
@@ -9981,6 +9981,42 @@
9981
9981
  }
9982
9982
  }
9983
9983
  },
9984
+ {
9985
+ "kind": "method",
9986
+ "name": "_spreadDeferredDisplayValue",
9987
+ "privacy": "private",
9988
+ "return": {
9989
+ "type": {
9990
+ "text": "(TemplateResult | Promise<TemplateResult>)[]"
9991
+ }
9992
+ },
9993
+ "parameters": [
9994
+ {
9995
+ "name": "placeholder",
9996
+ "type": {
9997
+ "text": "TemplateResult"
9998
+ }
9999
+ }
10000
+ ]
10001
+ },
10002
+ {
10003
+ "kind": "method",
10004
+ "name": "_deferredDisplayValue",
10005
+ "privacy": "private",
10006
+ "return": {
10007
+ "type": {
10008
+ "text": "Promise<TemplateResult>"
10009
+ }
10010
+ },
10011
+ "parameters": [
10012
+ {
10013
+ "name": "placeholder",
10014
+ "type": {
10015
+ "text": "TemplateResult"
10016
+ }
10017
+ }
10018
+ ]
10019
+ },
9984
10020
  {
9985
10021
  "kind": "field",
9986
10022
  "name": "_updatePromise",
@@ -10101,6 +10137,56 @@
10101
10137
  "module": "core/mixins.js"
10102
10138
  }
10103
10139
  },
10140
+ {
10141
+ "kind": "field",
10142
+ "name": "_hydrationRequired",
10143
+ "type": {
10144
+ "text": "boolean"
10145
+ },
10146
+ "privacy": "private",
10147
+ "default": "!!this.shadowRoot",
10148
+ "inheritedFrom": {
10149
+ "name": "SbbHydrationMixin",
10150
+ "module": "core/mixins.js"
10151
+ }
10152
+ },
10153
+ {
10154
+ "kind": "field",
10155
+ "name": "_hydrationComplete",
10156
+ "privacy": "private",
10157
+ "default": "new Promise<boolean>( (resolve) => (this._resolveHydration = resolve), )",
10158
+ "inheritedFrom": {
10159
+ "name": "SbbHydrationMixin",
10160
+ "module": "core/mixins.js"
10161
+ }
10162
+ },
10163
+ {
10164
+ "kind": "field",
10165
+ "name": "_resolveHydration",
10166
+ "type": {
10167
+ "text": "(hydrationRequired: boolean) => void"
10168
+ },
10169
+ "privacy": "private",
10170
+ "inheritedFrom": {
10171
+ "name": "SbbHydrationMixin",
10172
+ "module": "core/mixins.js"
10173
+ }
10174
+ },
10175
+ {
10176
+ "kind": "field",
10177
+ "name": "hydrationRequired",
10178
+ "type": {
10179
+ "text": "boolean"
10180
+ },
10181
+ "privacy": "protected",
10182
+ "description": "Returns whether hydration is required and not completed.",
10183
+ "readonly": true,
10184
+ "inheritedFrom": {
10185
+ "name": "SbbHydrationMixin",
10186
+ "module": "core/mixins.js"
10187
+ },
10188
+ "default": "!!this.shadowRoot"
10189
+ },
10104
10190
  {
10105
10191
  "kind": "field",
10106
10192
  "name": "state",
@@ -10334,6 +10420,10 @@
10334
10420
  {
10335
10421
  "name": "SbbNegativeMixin",
10336
10422
  "module": "core/mixins.js"
10423
+ },
10424
+ {
10425
+ "name": "SbbHydrationMixin",
10426
+ "module": "core/mixins.js"
10337
10427
  }
10338
10428
  ],
10339
10429
  "superclass": {
@@ -30160,7 +30250,8 @@
30160
30250
  {
30161
30251
  "kind": "variable",
30162
30252
  "name": "isChromium",
30163
- "description": "Note: `userAgentData` is still experimental. If possible, avoid to use it.\nhttps://developer.mozilla.org/en-US/docs/Web/API/Navigator/userAgentData"
30253
+ "default": "isBlink",
30254
+ "description": "We just check for the blink engine."
30164
30255
  },
30165
30256
  {
30166
30257
  "kind": "function",
@@ -54905,6 +54996,18 @@
54905
54996
  "attribute": "orientation",
54906
54997
  "reflects": true
54907
54998
  },
54999
+ {
55000
+ "kind": "field",
55001
+ "name": "size",
55002
+ "type": {
55003
+ "text": "'s' | 'm'"
55004
+ },
55005
+ "privacy": "public",
55006
+ "default": "'m'",
55007
+ "description": "Size variant, either s or m.",
55008
+ "attribute": "size",
55009
+ "reflects": true
55010
+ },
54908
55011
  {
54909
55012
  "kind": "field",
54910
55013
  "name": "selected",
@@ -55106,6 +55209,16 @@
55106
55209
  }
55107
55210
  }
55108
55211
  },
55212
+ {
55213
+ "kind": "method",
55214
+ "name": "_proxySize",
55215
+ "privacy": "private",
55216
+ "return": {
55217
+ "type": {
55218
+ "text": "void"
55219
+ }
55220
+ }
55221
+ },
55109
55222
  {
55110
55223
  "kind": "method",
55111
55224
  "name": "_handleKeyDown",
@@ -55202,6 +55315,15 @@
55202
55315
  "description": "Steps orientation, either horizontal or vertical.",
55203
55316
  "fieldName": "orientation"
55204
55317
  },
55318
+ {
55319
+ "name": "size",
55320
+ "type": {
55321
+ "text": "'s' | 'm'"
55322
+ },
55323
+ "default": "'m'",
55324
+ "description": "Size variant, either s or m.",
55325
+ "fieldName": "size"
55326
+ },
55205
55327
  {
55206
55328
  "name": "selected-index",
55207
55329
  "description": "The currently selected step index.",
@@ -10,8 +10,8 @@ import { getDatePicker as y, datepickerControlRegisteredEventFactory as $ } from
10
10
  import "../calendar.js";
11
11
  import "../popover.js";
12
12
  const x = p`*,:before,:after{box-sizing:border-box}:host{--sbb-datepicker-control-radius: var(--sbb-border-radius-4x);--sbb-datepicker-control-color: var(--sbb-color-black);display:inline-flex}sbb-popover-trigger{color:var(--sbb-datepicker-control-color);height:unset}sbb-icon{color:var(--sbb-color-graphite)}`;
13
- var D = Object.defineProperty, A = Object.getOwnPropertyDescriptor, l = (e, t, i, n) => {
14
- for (var a = n > 1 ? void 0 : n ? A(t, i) : t, o = e.length - 1, r; o >= 0; o--)
13
+ var D = Object.defineProperty, O = Object.getOwnPropertyDescriptor, l = (e, t, i, n) => {
14
+ for (var a = n > 1 ? void 0 : n ? O(t, i) : t, o = e.length - 1, r; o >= 0; o--)
15
15
  (r = e[o]) && (a = (n ? r(t, i, a) : r(a)) || a);
16
16
  return n && a && D(t, i, a), a;
17
17
  };
@@ -78,7 +78,7 @@ let s = class extends C(
78
78
  !e || !t || (e.wide = t.wide, e.now = this._nowOrUndefined(), e.dateFilter = t.dateFilter);
79
79
  }
80
80
  _datePickerChanged(e) {
81
- this._datePickerElement = e.target, this._calendarElement && this._datePickerElement.valueAsDate && (this._calendarElement.selected = this._datePickerElement.valueAsDate);
81
+ this._datePickerElement = e.target, this._calendarElement && (this._calendarElement.selected = this._datePickerElement.valueAsDate || void 0);
82
82
  }
83
83
  _assignCalendar(e) {
84
84
  var t;
@@ -63,7 +63,7 @@ const style = css`/**
63
63
  }
64
64
 
65
65
  .sbb-clock__hand-minutes {
66
- transition: transform 0.2s cubic-bezier(0.4, 2.08, 0.55, 0.44);
66
+ transition: transform var(--sbb-disable-animation-zero-time, 0.2s) cubic-bezier(0.4, 2.08, 0.55, 0.44);
67
67
  }
68
68
  @supports not (aspect-ratio: 1/1) {
69
69
  .sbb-clock__hand-minutes {
@@ -84,7 +84,7 @@ const style = css`@charset "UTF-8";
84
84
  position: relative;
85
85
  }
86
86
 
87
- .sbb-container__content {
87
+ :host([data-slot-names~=image]) .sbb-container__content {
88
88
  position: relative;
89
89
  }
90
90
 
@@ -15,10 +15,9 @@ export declare const isAndroid: boolean;
15
15
  /** Whether the current browser is Safari. */
16
16
  export declare const isSafari: boolean;
17
17
  /**
18
- * Note: `userAgentData` is still experimental. If possible, avoid to use it.
19
- * https://developer.mozilla.org/en-US/docs/Web/API/Navigator/userAgentData
18
+ * We just check for the blink engine.
20
19
  */
21
- export declare const isChromium: any;
20
+ export declare const isChromium: boolean;
22
21
  /** Whether the application is being rendered in a Next.js environment. */
23
22
  export declare const isNextjs: () => boolean;
24
23
  //# sourceMappingURL=platform.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/dom/platform.ts"],"names":[],"mappings":"AAmBA,qDAAqD;AACrD,eAAO,MAAM,MAAM,SAAmD,CAAC;AAEvE,iEAAiE;AACjE,eAAO,MAAM,SAAS,SAA2D,CAAC;AAGlF,qDAAqD;AACrD,eAAO,MAAM,OAAO,SAKR,CAAC;AAIb,sDAAsD;AACtD,eAAO,MAAM,QAAQ,SACuE,CAAC;AAE7F,iDAAiD;AACjD,eAAO,MAAM,KAAK,SACoE,CAAC;AAMvF,8CAA8C;AAC9C,eAAO,MAAM,SAAS,SAAgE,CAAC;AAEvF,+CAA+C;AAE/C,eAAO,MAAM,SAAS,SAAkE,CAAC;AAKzF,6CAA6C;AAC7C,eAAO,MAAM,QAAQ,SAA+D,CAAC;AAErF;;;GAGG;AACH,eAAO,MAAM,UAAU,KAEkE,CAAC;AAE1F,0EAA0E;AAC1E,eAAO,MAAM,QAAQ,QAAO,OAAmD,CAAC"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/dom/platform.ts"],"names":[],"mappings":"AAmBA,qDAAqD;AACrD,eAAO,MAAM,MAAM,SAAmD,CAAC;AAEvE,iEAAiE;AACjE,eAAO,MAAM,SAAS,SAA2D,CAAC;AAGlF,qDAAqD;AACrD,eAAO,MAAM,OAAO,SAKR,CAAC;AAIb,sDAAsD;AACtD,eAAO,MAAM,QAAQ,SACuE,CAAC;AAE7F,iDAAiD;AACjD,eAAO,MAAM,KAAK,SACoE,CAAC;AAMvF,8CAA8C;AAC9C,eAAO,MAAM,SAAS,SAAgE,CAAC;AAEvF,+CAA+C;AAE/C,eAAO,MAAM,SAAS,SAAkE,CAAC;AAKzF,6CAA6C;AAC7C,eAAO,MAAM,QAAQ,SAA+D,CAAC;AAErF;;GAEG;AACH,eAAO,MAAM,UAAU,SAAU,CAAC;AAElC,0EAA0E;AAC1E,eAAO,MAAM,QAAQ,QAAO,OAAmD,CAAC"}
@@ -1,4 +1,3 @@
1
- var _a, _b;
2
1
  import { isServer } from "lit";
3
2
  const breakpoints = ["zero", "micro", "small", "medium", "wide", "large", "ultra"];
4
3
  function isBreakpoint(from, to, properties) {
@@ -44,9 +43,9 @@ function hostContext(selector, element) {
44
43
  }
45
44
  const ACTION_ELEMENTS = "a,button,sbb-teaser-hero,sbb-teaser";
46
45
  function findInput(element, trigger) {
47
- var _a2;
46
+ var _a;
48
47
  if (!trigger) {
49
- const parent = (_a2 = element.closest) == null ? void 0 : _a2.call(element, "sbb-form-field");
48
+ const parent = (_a = element.closest) == null ? void 0 : _a.call(element, "sbb-form-field");
50
49
  return parent == null ? void 0 : parent.querySelector("input");
51
50
  }
52
51
  return findReferencedElement(trigger);
@@ -72,7 +71,7 @@ const isIOS = !isServer && /iPad|iPhone|iPod/.test(navigator.userAgent) && !("MS
72
71
  const isFirefox = !isServer && /(firefox|minefield)/i.test(navigator.userAgent);
73
72
  const isAndroid = !isServer && /android/i.test(navigator.userAgent) && !isTrident;
74
73
  const isSafari = !isServer && /safari/i.test(navigator.userAgent) && isWebkit;
75
- const isChromium = !isServer && ((_b = (_a = navigator.userAgentData) == null ? void 0 : _a.brands) == null ? void 0 : _b.some((data) => data.brand == "Chromium"));
74
+ const isChromium = isBlink;
76
75
  const isNextjs = () => !!globalThis.next;
77
76
  function pageScrollDisabled() {
78
77
  return document.body.hasAttribute("data-sbb-scroll-disabled");
@@ -143,4 +142,4 @@ export {
143
142
  pageScrollDisabled,
144
143
  setOrRemoveAttribute
145
144
  };
146
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9kb20vYnJlYWtwb2ludC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RvbS9maW5kLXJlZmVyZW5jZWQtZWxlbWVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RvbS9nZXQtZG9jdW1lbnQtd3JpdGluZy1tb2RlLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL2hvc3QtY29udGV4dC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RvbS9pbnB1dC1lbGVtZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL3NldC1vci1yZW1vdmUtYXR0cmlidXRlLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL3BsYXRmb3JtLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL3Njcm9sbC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RvbS9zc3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTZXJ2ZXIgfSBmcm9tICdsaXQnO1xuXG5leHBvcnQgY29uc3QgYnJlYWtwb2ludHMgPSBbJ3plcm8nLCAnbWljcm8nLCAnc21hbGwnLCAnbWVkaXVtJywgJ3dpZGUnLCAnbGFyZ2UnLCAndWx0cmEnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEJyZWFrcG9pbnQgPSAodHlwZW9mIGJyZWFrcG9pbnRzKVtudW1iZXJdO1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBkb2N1bWVudCBtYXRjaGVzIGEgcGFydGljdWxhciBtZWRpYSBxdWVyeS5cbiAqIEl0IHdpbGwgcmVseSBvbiB0aGUgZ2xvYmFsIENTUyB2YXJpYWJsZXMgdG8gZGV0ZXJtaW5lIHRoZSB2YWx1ZSBvZiB0aGUgYnJlYWtwb2ludHMuXG4gKlxuICogQHBhcmFtIGZyb20gVGhlIGJyZWFrcG9pbnQgY29ycmVzcG9uZGluZyB0byB0aGUgYG1pbi13aWR0aGAgdmFsdWUgb2YgdGhlIG1lZGlhIHF1ZXJ5IChvcHRpb25hbCkuXG4gKiBAcGFyYW0gdG8gVGhlIGJyZWFrcG9pbnQgY29ycmVzcG9uZGluZyB0byB0aGUgYG1heC13aWR0aGAgdmFsdWUgb2YgdGhlIG1lZGlhIHF1ZXJ5IChvcHRpb25hbCkuXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSB3aW5kb3cgbWF0Y2hlcyB0aGUgYnJlYWtwb2ludC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQnJlYWtwb2ludChcbiAgZnJvbT86IEJyZWFrcG9pbnQsXG4gIHRvPzogQnJlYWtwb2ludCxcbiAgcHJvcGVydGllcz86IHsgaW5jbHVkZU1heEJyZWFrcG9pbnQ6IGJvb2xlYW4gfSxcbik6IGJvb2xlYW4ge1xuICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAvLyBUT0RPOiBSZW1vdmUgYW5kIGRlY2lkZSBjYXNlIGJ5IGNhc2Ugd2hhdCBzaG91bGQgYmUgZG9uZSBvbiBjb25zdW1pbmcgZW5kXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTtcbiAgY29uc3QgYnJlYWtwb2ludE1pbiA9IGZyb20gPyBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoYC0tc2JiLWJyZWFrcG9pbnQtJHtmcm9tfS1taW5gKSA6ICcnO1xuICBjb25zdCBicmVha3BvaW50TWF4ID0gdG9cbiAgICA/IGAke1xuICAgICAgICBwYXJzZUZsb2F0KFxuICAgICAgICAgIGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICAgICAgICAgIGAtLXNiYi1icmVha3BvaW50LSR7dG99LSR7cHJvcGVydGllcz8uaW5jbHVkZU1heEJyZWFrcG9pbnQgPyAnbWF4JyA6ICdtaW4nfWAsXG4gICAgICAgICAgKSxcbiAgICAgICAgKSAtIChwcm9wZXJ0aWVzPy5pbmNsdWRlTWF4QnJlYWtwb2ludCA/IDAgOiAwLjA2MjUpXG4gICAgICB9cmVtYFxuICAgIDogJyc7IC8vIHN1YnRyYWN0IDFweCAoMC4wNjI1cmVtKSBmcm9tIHRoZSBtYXgtd2lkdGggYnJlYWtwb2ludFxuXG4gIGNvbnN0IG1pbldpZHRoID0gYnJlYWtwb2ludE1pbiAmJiBgKG1pbi13aWR0aDogJHticmVha3BvaW50TWlufSlgO1xuICBjb25zdCBtYXhXaWR0aCA9IGJyZWFrcG9pbnRNYXggJiYgYChtYXgtd2lkdGg6ICR7YnJlYWtwb2ludE1heH0pYDtcbiAgY29uc3QgYW5kID0gYnJlYWtwb2ludE1pbiAmJiBicmVha3BvaW50TWF4ICYmICcgYW5kICc7XG5cbiAgcmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhKGAke21pbldpZHRofSR7YW5kfSR7bWF4V2lkdGh9YCkubWF0Y2hlcztcbn1cbiIsImltcG9ydCB7IGlzU2VydmVyIH0gZnJvbSAnbGl0JztcblxuLyoqXG4gKiAgQ2hlY2sgd2hldGhlciBpdCdzIGEgc3RyaW5nIG9yIGFuIEhUTUxFbGVtZW50LCBpZiBpdCdzIGEgc3RyaW5nIHF1ZXJpZXMgdGhlIGVsZW1lbnQgd2l0aCB0aGVcbiAqICBjb3JyZXNwb25kaW5nIGlkLlxuICogIEBwYXJhbSByZWZlcmVuY2UgZWl0aGVyIHRoZSB3YW50ZWQgaWQgb3IgdGhlIEhUTUxFbGVtZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUmVmZXJlbmNlZEVsZW1lbnQ8VCBleHRlbmRzIEhUTUxFbGVtZW50ID0gSFRNTEVsZW1lbnQ+KFxuICByZWZlcmVuY2U6IHN0cmluZyB8IEhUTUxFbGVtZW50LFxuKTogVCB8IG51bGwge1xuICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgcmVmZXJlbmNlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChyZWZlcmVuY2UpIGFzIFQ7XG4gIH0gZWxzZSBpZiAocmVmZXJlbmNlIGluc3RhbmNlb2Ygd2luZG93LkVsZW1lbnQpIHtcbiAgICByZXR1cm4gcmVmZXJlbmNlIGFzIFQ7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG4iLCJpbXBvcnQgeyBpc1NlcnZlciB9IGZyb20gJ2xpdCc7XG5cbmV4cG9ydCBjb25zdCBnZXREb2N1bWVudFdyaXRpbmdNb2RlID0gKCk6IHN0cmluZyA9PlxuICAoIWlzU2VydmVyICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RpcicpKSB8fCAnbHRyJztcbiIsImltcG9ydCB7IGlzU2VydmVyIH0gZnJvbSAnbGl0JztcblxuLyoqXG4gKiBMb29rcyBmb3IgdGhlIGNsb3Nlc3QgZWxlbWVudCBtYXRjaGluZyB0aGUgZ2l2ZW4gc2VsZWN0b3Igc3RhcnRpbmcgZnJvbSB0aGUgZ2l2ZW4gZWxlbWVudC5cbiAqIFJldHVybnMgbnVsbCwgaWYgbm9uZSBvZiB0aGUgYW5jZXN0b3IgbWF0Y2guXG4gKlxuICogQHBhcmFtIHNlbGVjdG9yIFRoZSBzZWxlY3RvciB0byBtYXRjaCBhbmNlc3RvciBhZ2FpbnN0LlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIGJhc2UgZWxlbWVudCBmcm9tIHdoaWNoIHRvIHN0YXJ0IHRoZSBzZWFyY2guXG4gKiBAcmV0dXJucyBUaGUgY2xvc2VzdCBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvciBvciBudWxsIGlmIG5vbmUgaXMgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBob3N0Q29udGV4dChzZWxlY3Rvcjogc3RyaW5nLCBlbGVtZW50OiBFbGVtZW50KTogRWxlbWVudCB8IG51bGwge1xuICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBTdGFydCB3aXRoIHBhcmVudCBlbGVtZW50IGluIG9yZGVyIHRvIGF2b2lkIGZpbmRpbmcgZWxlbWVudCBpdHNlbGZcbiAgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudCA/PyAoZWxlbWVudC5nZXRSb290Tm9kZSgpIGFzIFNoYWRvd1Jvb3QpLmhvc3Q7XG4gIHdoaWxlIChlbGVtZW50ICYmIChlbGVtZW50IGFzIGFueSkgIT09IGRvY3VtZW50ICYmIChlbGVtZW50IGFzIGFueSkgIT09IHdpbmRvdykge1xuICAgIGNvbnN0IG1hdGNoID0gZWxlbWVudC5jbG9zZXN0KHNlbGVjdG9yKTtcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIHJldHVybiBtYXRjaDtcbiAgICB9XG5cbiAgICBlbGVtZW50ID0gKGVsZW1lbnQuZ2V0Um9vdE5vZGUoKSBhcyBTaGFkb3dSb290KS5ob3N0O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8vIEEgbGlzdCBvZiBlbGVtZW50cyB0aGF0IHNob3VsZCBub3QgYWxsb3cgYW5vdGhlciBhbmNob3Igb3IgYnV0dG9uIGVsZW1lbnQgaW5zaWRlIHRoZW0uXG4vLyBOZWVkcyB0byBiZSBleHRlbmRlZCBpZiBhZGRpdGlvbmFsIGVsZW1lbnRzIGZhbGwgaW50byB0aGlzIGNhdGVnb3J5LlxuZXhwb3J0IGNvbnN0IEFDVElPTl9FTEVNRU5UUyA9ICdhLGJ1dHRvbixzYmItdGVhc2VyLWhlcm8sc2JiLXRlYXNlcic7XG4iLCJpbXBvcnQgeyBmaW5kUmVmZXJlbmNlZEVsZW1lbnQgfSBmcm9tICcuL2ZpbmQtcmVmZXJlbmNlZC1lbGVtZW50LmpzJztcblxuLyoqXG4gKiBHaXZlbiBhbiBlbGVtZW50LCByZXR1cm5zIHRoZSByZWxhdGVkIGlucHV0IHJlZmVyZW5jZSwgaWYgaXQgZXhpc3RzIHJlc3BlY3RpbmcgZm9sbG93aW5nIHByaW9yaXR5LlxuICogMS4gSW5wdXQgZmllbGQgaW4gYHNiYi1mb3JtLWZpZWxkYCAoaWYgdHJpZ2dlciBpcyB1bmRlZmllbmQpXG4gKiAyLiBJbnB1dCByZWZlcmVuY2VkIGJ5IGlkICh0cmlnZ2VyIGlzIHN0cmluZylcbiAqIDMuIElucHV0IHJlZmVyZW5jZWQgZGlyZWN0bHkgKHRyaWdnZXIgaXMgSFRNTEVsZW1lbnQpXG4gKiBAcGFyYW0gZWxlbWVudCBUaGUgc3RhcnRpbmcgU2JiRGF0ZXBpY2tlckVsZW1lbnQgZWxlbWVudC5cbiAqIEBwYXJhbSB0cmlnZ2VyIFRoZSBpZCBvciB0aGUgcmVmZXJlbmNlIG9mIHRoZSBpbnB1dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRJbnB1dChcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIHRyaWdnZXI/OiBzdHJpbmcgfCBIVE1MRWxlbWVudCB8IG51bGwsXG4pOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gIGlmICghdHJpZ2dlcikge1xuICAgIGNvbnN0IHBhcmVudCA9IGVsZW1lbnQuY2xvc2VzdD8uKCdzYmItZm9ybS1maWVsZCcpO1xuICAgIHJldHVybiBwYXJlbnQ/LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykgYXMgSFRNTElucHV0RWxlbWVudCB8IG51bGw7XG4gIH1cblxuICByZXR1cm4gZmluZFJlZmVyZW5jZWRFbGVtZW50PEhUTUxJbnB1dEVsZW1lbnQ+KHRyaWdnZXIpO1xufVxuIiwiLyoqXG4gKiBTZXQgdGhlIGF0dHJpYnV0ZSBvbmx5IGlmIHZhbHVlIGlzIG5vdCAnZmFsc2UnLCBvdGhlcndpc2UgcmVtb3ZlIGF0dHJpYnV0ZS5cbiAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHRoYXQgd2lsbCBoYXZlIHRoZSBhdHRyaWJ1dGVcbiAqIEBwYXJhbSBhdHRyaWJ1dGUgVGhlIGF0dHJpYnV0ZSBuYW1lXG4gKiBAcGFyYW0gdmFsdWUgVGhlIGF0dHJpYnV0ZSB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0T3JSZW1vdmVBdHRyaWJ1dGUoZWxlbWVudDogSFRNTEVsZW1lbnQsIGF0dHJpYnV0ZTogc3RyaW5nLCB2YWx1ZT86IGFueSk6IHZvaWQge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgfSBlbHNlIHtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIHZhbHVlKTtcbiAgfVxufVxuIiwiLy8gVGhpcyBmaWxlIGlzIGZyZWVseSBpbnNwaXJlZCBieSBBbmd1bGFyIE1hdGVyaWFsIHNvbHV0aW9uLlxuLy8gUmVmZXJlbmNlOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2Jsb2IvbWFpbi9zcmMvY2RrL3BsYXRmb3JtL3BsYXRmb3JtLnRzXG5pbXBvcnQgeyBpc1NlcnZlciB9IGZyb20gJ2xpdCc7XG5cbi8vIFdoZXRoZXIgdGhlIGN1cnJlbnQgcGxhdGZvcm0gc3VwcG9ydHMgdGhlIFY4IEJyZWFrIEl0ZXJhdG9yLiBUaGUgVjggY2hlY2tcbi8vIGlzIG5lY2Vzc2FyeSB0byBkZXRlY3QgYWxsIEJsaW5rIGJhc2VkIGJyb3dzZXJzLlxubGV0IGhhc1Y4QnJlYWtJdGVyYXRvcjogYm9vbGVhbjtcblxuLy8gV2UgbmVlZCBhIHRyeS9jYXRjaCBhcm91bmQgdGhlIHJlZmVyZW5jZSB0byBgSW50bGAsIGJlY2F1c2UgYWNjZXNzaW5nIGl0IGluIHNvbWUgY2FzZXMgY2FuXG4vLyBjYXVzZSBJRSB0byB0aHJvdy4gVGhlc2UgY2FzZXMgYXJlIHRpZWQgdG8gcGFydGljdWxhciB2ZXJzaW9ucyBvZiBXaW5kb3dzIGFuZCBjYW4gaGFwcGVuIGlmXG4vLyB0aGUgY29uc3VtZXIgaXMgcHJvdmlkaW5nIGEgcG9seWZpbGxlZCBgTWFwYC4gU2VlOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9DaGFrcmFDb3JlL2lzc3Vlcy8zMTg5XG4vLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2lzc3Vlcy8xNTY4N1xudHJ5IHtcbiAgaGFzVjhCcmVha0l0ZXJhdG9yID0gdHlwZW9mIEludGwgIT09ICd1bmRlZmluZWQnICYmIChJbnRsIGFzIGFueSkudjhCcmVha0l0ZXJhdG9yO1xufSBjYXRjaCB7XG4gIGhhc1Y4QnJlYWtJdGVyYXRvciA9IGZhbHNlO1xufVxuXG4vKiogV2hldGhlciB0aGUgY3VycmVudCBicm93c2VyIGlzIE1pY3Jvc29mdCBFZGdlLiAqL1xuZXhwb3J0IGNvbnN0IGlzRWRnZSA9ICFpc1NlcnZlciAmJiAvKGVkZ2UpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgcmVuZGVyaW5nIGVuZ2luZSBpcyBNaWNyb3NvZnQgVHJpZGVudC4gKi9cbmV4cG9ydCBjb25zdCBpc1RyaWRlbnQgPSAhaXNTZXJ2ZXIgJiYgLyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuLy8gRWRnZUhUTUwgYW5kIFRyaWRlbnQgbW9jayBCbGluayBzcGVjaWZpYyB0aGluZ3MgYW5kIG5lZWQgdG8gYmUgZXhjbHVkZWQgZnJvbSB0aGlzIGNoZWNrLlxuLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgcmVuZGVyaW5nIGVuZ2luZSBpcyBCbGluay4gKi9cbmV4cG9ydCBjb25zdCBpc0JsaW5rID1cbiAgIWlzU2VydmVyICYmXG4gICEhKCh3aW5kb3cgYXMgYW55KS5jaHJvbWUgfHwgaGFzVjhCcmVha0l0ZXJhdG9yKSAmJlxuICB0eXBlb2YgQ1NTICE9PSAndW5kZWZpbmVkJyAmJlxuICAhaXNFZGdlICYmXG4gICFpc1RyaWRlbnQ7XG5cbi8vIFdlYmtpdCBpcyBwYXJ0IG9mIHRoZSB1c2VyQWdlbnQgaW4gRWRnZUhUTUwsIEJsaW5rIGFuZCBUcmlkZW50LiBUaGVyZWZvcmUsIHdlIG5lZWQgdG9cbi8vIGVuc3VyZSB0aGF0IFdlYmtpdCBydW5zIHN0YW5kYWxvbmUgYW5kIGlzIG5vdCB1c2VkIGFzIGFub3RoZXIgZW5naW5lJ3MgYmFzZS5cbi8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IHJlbmRlcmluZyBlbmdpbmUgaXMgV2ViS2l0LiAqL1xuZXhwb3J0IGNvbnN0IGlzV2Via2l0ID1cbiAgIWlzU2VydmVyICYmIC9BcHBsZVdlYktpdC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgIWlzQmxpbmsgJiYgIWlzRWRnZSAmJiAhaXNUcmlkZW50O1xuXG4vKiogV2hldGhlciB0aGUgY3VycmVudCBwbGF0Zm9ybSBpcyBBcHBsZSBpT1MuICovXG5leHBvcnQgY29uc3QgaXNJT1MgPVxuICAhaXNTZXJ2ZXIgJiYgL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgISgnTVNTdHJlYW0nIGluIHdpbmRvdyk7XG5cbi8vIEl0J3MgZGlmZmljdWx0IHRvIGRldGVjdCB0aGUgcGxhaW4gR2Vja28gZW5naW5lLCBiZWNhdXNlIG1vc3Qgb2YgdGhlIGJyb3dzZXJzIGlkZW50aWZ5XG4vLyB0aGVtIHNlbGYgYXMgR2Vja28tbGlrZSBicm93c2VycyBhbmQgbW9kaWZ5IHRoZSB1c2VyQWdlbnQncyBhY2NvcmRpbmcgdG8gdGhhdC5cbi8vIFNpbmNlIHdlIG9ubHkgY292ZXIgb25lIGV4cGxpY2l0IEZpcmVmb3ggY2FzZSwgd2UgY2FuIHNpbXBseSBjaGVjayBmb3IgRmlyZWZveFxuLy8gaW5zdGVhZCBvZiBoYXZpbmcgYW4gdW5zdGFibGUgY2hlY2sgZm9yIEdlY2tvLlxuLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgYnJvd3NlciBpcyBGaXJlZm94LiAqL1xuZXhwb3J0IGNvbnN0IGlzRmlyZWZveCA9ICFpc1NlcnZlciAmJiAvKGZpcmVmb3h8bWluZWZpZWxkKS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbi8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IHBsYXRmb3JtIGlzIEFuZHJvaWQuICovXG4vLyBUcmlkZW50IG9uIG1vYmlsZSBhZGRzIHRoZSBhbmRyb2lkIHBsYXRmb3JtIHRvIHRoZSB1c2VyQWdlbnQgdG8gdHJpY2sgZGV0ZWN0aW9ucy5cbmV4cG9ydCBjb25zdCBpc0FuZHJvaWQgPSAhaXNTZXJ2ZXIgJiYgL2FuZHJvaWQvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmICFpc1RyaWRlbnQ7XG5cbi8vIFNhZmFyaSBicm93c2VycyB3aWxsIGluY2x1ZGUgdGhlIFNhZmFyaSBrZXl3b3JkIGluIHRoZWlyIHVzZXJBZ2VudC4gU29tZSBicm93c2VycyBtYXkgZmFrZVxuLy8gdGhpcyBhbmQganVzdCBwbGFjZSB0aGUgU2FmYXJpIGtleXdvcmQgaW4gdGhlIHVzZXJBZ2VudC4gVG8gYmUgbW9yZSBzYWZlIGFib3V0IFNhZmFyaSBldmVyeVxuLy8gU2FmYXJpIGJyb3dzZXIgc2hvdWxkIGFsc28gdXNlIFdlYmtpdCBhcyBpdHMgbGF5b3V0IGVuZ2luZS5cbi8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IGJyb3dzZXIgaXMgU2FmYXJpLiAqL1xuZXhwb3J0IGNvbnN0IGlzU2FmYXJpID0gIWlzU2VydmVyICYmIC9zYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmIGlzV2Via2l0O1xuXG4vKipcbiAqIE5vdGU6IGB1c2VyQWdlbnREYXRhYCBpcyBzdGlsbCBleHBlcmltZW50YWwuIElmIHBvc3NpYmxlLCBhdm9pZCB0byB1c2UgaXQuXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvTmF2aWdhdG9yL3VzZXJBZ2VudERhdGFcbiAqL1xuZXhwb3J0IGNvbnN0IGlzQ2hyb21pdW0gPVxuICAhaXNTZXJ2ZXIgJiZcbiAgKG5hdmlnYXRvciBhcyBhbnkpLnVzZXJBZ2VudERhdGE/LmJyYW5kcz8uc29tZSgoZGF0YTogYW55KSA9PiBkYXRhLmJyYW5kID09ICdDaHJvbWl1bScpO1xuXG4vKiogV2hldGhlciB0aGUgYXBwbGljYXRpb24gaXMgYmVpbmcgcmVuZGVyZWQgaW4gYSBOZXh0LmpzIGVudmlyb25tZW50LiAqL1xuZXhwb3J0IGNvbnN0IGlzTmV4dGpzID0gKCk6IGJvb2xlYW4gPT4gISEoZ2xvYmFsVGhpcyBhcyB7IG5leHQ/OiBvYmplY3QgfSkubmV4dDtcbiIsImV4cG9ydCBmdW5jdGlvbiBwYWdlU2Nyb2xsRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gIHJldHVybiBkb2N1bWVudC5ib2R5Lmhhc0F0dHJpYnV0ZSgnZGF0YS1zYmItc2Nyb2xsLWRpc2FibGVkJyk7XG59XG5cbi8qKlxuICogSGFuZGxlIHRoZSBwYWdlIHNjcm9sbCwgYWxsb3dpbmcgdG8gZGlzYWJsZS9lbmFibGUgdGhlIHdpbmRvdyBzY3JvbGwgYXZvaWRpbmcgYSBwb3RlbnRpYWxcbiAqIGNvbnRlbnQgc2hpZnQgY2F1c2VkIGJ5IHRoZSBkaXNhcHBlYXJhbmNlL2FwcGVhcmFuY2Ugb2YgdGhlIHNjcm9sbGJhci5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYlNjcm9sbEhhbmRsZXIge1xuICBwcml2YXRlIF9wb3NpdGlvbiE6IHN0cmluZztcbiAgcHJpdmF0ZSBfb3ZlcmZsb3chOiBzdHJpbmc7XG4gIHByaXZhdGUgX21hcmdpbklubGluZUVuZCE6IHN0cmluZztcblxuICBwdWJsaWMgZGlzYWJsZVNjcm9sbCgpOiB2b2lkIHtcbiAgICBpZiAocGFnZVNjcm9sbERpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTYXZlIGFueSBwcmUtZXhpc3Rpbmcgc3R5bGVzIHRvIHJlYXBwbHkgdGhlbSB0byB0aGUgYm9keSB3aGVuIGVuYWJsaW5nIHRoZSBzY3JvbGwgYWdhaW4uXG4gICAgdGhpcy5fcG9zaXRpb24gPSBkb2N1bWVudC5ib2R5LnN0eWxlLnBvc2l0aW9uO1xuICAgIHRoaXMuX292ZXJmbG93ID0gZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdztcbiAgICB0aGlzLl9tYXJnaW5JbmxpbmVFbmQgPSBkb2N1bWVudC5ib2R5LnN0eWxlLm1hcmdpbklubGluZUVuZDtcblxuICAgIGNvbnN0IHNjcm9sbGJhcldpZHRoID0gd2luZG93LmlubmVyV2lkdGggLSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7XG5cbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5tYXJnaW5JbmxpbmVFbmQgPSBgJHtzY3JvbGxiYXJXaWR0aH1weGA7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItc2Nyb2xsYmFyLXdpZHRoJywgYCR7c2Nyb2xsYmFyV2lkdGh9cHhgKTtcblxuICAgIGRvY3VtZW50LmJvZHkudG9nZ2xlQXR0cmlidXRlKCdkYXRhLXNiYi1zY3JvbGwtZGlzYWJsZWQnLCB0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBlbmFibGVTY3JvbGwoKTogdm9pZCB7XG4gICAgaWYgKCFwYWdlU2Nyb2xsRGlzYWJsZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFJldmVydCBib2R5IGlubGluZSBzdHlsZXMuXG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wb3NpdGlvbiA9IHRoaXMuX3Bvc2l0aW9uIHx8ICcnO1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSB0aGlzLl9vdmVyZmxvdyB8fCAnJztcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm1hcmdpbklubGluZUVuZCA9IHRoaXMuX21hcmdpbklubGluZUVuZCB8fCAnJztcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnNldFByb3BlcnR5KCctLXNiYi1zY3JvbGxiYXItd2lkdGgnLCAnMCcpO1xuXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtc2JiLXNjcm9sbC1kaXNhYmxlZCcpO1xuICB9XG59XG4iLCJpbXBvcnQgdHlwZSB7IExpdEVsZW1lbnQgfSBmcm9tICdsaXQnO1xuXG5jb25zdCBsb2NhbE5hbWVDYWNoZSA9IG5ldyBNYXA8dW5rbm93biwgc3RyaW5nPigpO1xuXG4vKipcbiAqIEluIFNTUiB0aGUgbG9jYWwvdGFnIG5hbWUgaXMgbm90IGF2YWlsYWJsZSBvbiB0aGUgY2xhc3MgaW5zdGFuY2UsIGJ1dCBpdCBpcyBhdmFpbGFibGVcbiAqIGluIHRoZSBzaGltIGN1c3RvbUVsZW1lbnRzIHJlZ2lzdHJ5LlxuICpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9saXQvbGl0L2Jsb2IvbWFpbi9wYWNrYWdlcy9sYWJzL3Nzci1kb20tc2hpbS9zcmMudHMgKFNlZSBDdXN0b21FbGVtZW50UmVnaXN0cnlTaGltKVxuICpcbiAqIENhbiBiZSByZW1vdmVkIG9uY2UgaHR0cHM6Ly9naXRodWIuY29tL2xpdC9saXQvcHVsbC80NTUzIGlzIG1lcmdlZC9yZWxlYXNlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExvY2FsTmFtZShlbGVtZW50OiBMaXRFbGVtZW50KTogc3RyaW5nIHtcbiAgaWYgKGxvY2FsTmFtZUNhY2hlLmhhcyhlbGVtZW50LmNvbnN0cnVjdG9yKSkge1xuICAgIHJldHVybiBsb2NhbE5hbWVDYWNoZS5nZXQoZWxlbWVudC5jb25zdHJ1Y3RvcikhO1xuICB9XG5cbiAgY29uc3QgZGVmaW5pdGlvbnMgPSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgKGN1c3RvbUVsZW1lbnRzIGFzIHVua25vd24gYXMgeyBfX2RlZmluaXRpb25zOiBNYXA8c3RyaW5nLCB7IGN0b3I6IHVua25vd24gfT4gfSkuX19kZWZpbml0aW9ucztcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgZGVmaW5pdGlvbnMpIHtcbiAgICBpZiAodmFsdWUuY3RvciA9PT0gZWxlbWVudC5jb25zdHJ1Y3Rvcikge1xuICAgICAgbG9jYWxOYW1lQ2FjaGUuc2V0KGVsZW1lbnQuY29uc3RydWN0b3IsIGtleSk7XG4gICAgICByZXR1cm4ga2V5O1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYEdpdmVuIGVsZW1lbnQgJHtlbGVtZW50LmNvbnN0cnVjdG9yLm5hbWV9IGhhcyBub3QgYmVlbiByZWdpc3RlcmVkIHlldC5gKTtcbn1cbiJdLCJuYW1l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
145
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9kb20vYnJlYWtwb2ludC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RvbS9maW5kLXJlZmVyZW5jZWQtZWxlbWVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RvbS9nZXQtZG9jdW1lbnQtd3JpdGluZy1tb2RlLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL2hvc3QtY29udGV4dC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RvbS9pbnB1dC1lbGVtZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL3NldC1vci1yZW1vdmUtYXR0cmlidXRlLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL3BsYXRmb3JtLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL3Njcm9sbC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RvbS9zc3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTZXJ2ZXIgfSBmcm9tICdsaXQnO1xuXG5leHBvcnQgY29uc3QgYnJlYWtwb2ludHMgPSBbJ3plcm8nLCAnbWljcm8nLCAnc21hbGwnLCAnbWVkaXVtJywgJ3dpZGUnLCAnbGFyZ2UnLCAndWx0cmEnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEJyZWFrcG9pbnQgPSAodHlwZW9mIGJyZWFrcG9pbnRzKVtudW1iZXJdO1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBkb2N1bWVudCBtYXRjaGVzIGEgcGFydGljdWxhciBtZWRpYSBxdWVyeS5cbiAqIEl0IHdpbGwgcmVseSBvbiB0aGUgZ2xvYmFsIENTUyB2YXJpYWJsZXMgdG8gZGV0ZXJtaW5lIHRoZSB2YWx1ZSBvZiB0aGUgYnJlYWtwb2ludHMuXG4gKlxuICogQHBhcmFtIGZyb20gVGhlIGJyZWFrcG9pbnQgY29ycmVzcG9uZGluZyB0byB0aGUgYG1pbi13aWR0aGAgdmFsdWUgb2YgdGhlIG1lZGlhIHF1ZXJ5IChvcHRpb25hbCkuXG4gKiBAcGFyYW0gdG8gVGhlIGJyZWFrcG9pbnQgY29ycmVzcG9uZGluZyB0byB0aGUgYG1heC13aWR0aGAgdmFsdWUgb2YgdGhlIG1lZGlhIHF1ZXJ5IChvcHRpb25hbCkuXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSB3aW5kb3cgbWF0Y2hlcyB0aGUgYnJlYWtwb2ludC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQnJlYWtwb2ludChcbiAgZnJvbT86IEJyZWFrcG9pbnQsXG4gIHRvPzogQnJlYWtwb2ludCxcbiAgcHJvcGVydGllcz86IHsgaW5jbHVkZU1heEJyZWFrcG9pbnQ6IGJvb2xlYW4gfSxcbik6IGJvb2xlYW4ge1xuICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAvLyBUT0RPOiBSZW1vdmUgYW5kIGRlY2lkZSBjYXNlIGJ5IGNhc2Ugd2hhdCBzaG91bGQgYmUgZG9uZSBvbiBjb25zdW1pbmcgZW5kXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTtcbiAgY29uc3QgYnJlYWtwb2ludE1pbiA9IGZyb20gPyBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoYC0tc2JiLWJyZWFrcG9pbnQtJHtmcm9tfS1taW5gKSA6ICcnO1xuICBjb25zdCBicmVha3BvaW50TWF4ID0gdG9cbiAgICA/IGAke1xuICAgICAgICBwYXJzZUZsb2F0KFxuICAgICAgICAgIGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICAgICAgICAgIGAtLXNiYi1icmVha3BvaW50LSR7dG99LSR7cHJvcGVydGllcz8uaW5jbHVkZU1heEJyZWFrcG9pbnQgPyAnbWF4JyA6ICdtaW4nfWAsXG4gICAgICAgICAgKSxcbiAgICAgICAgKSAtIChwcm9wZXJ0aWVzPy5pbmNsdWRlTWF4QnJlYWtwb2ludCA/IDAgOiAwLjA2MjUpXG4gICAgICB9cmVtYFxuICAgIDogJyc7IC8vIHN1YnRyYWN0IDFweCAoMC4wNjI1cmVtKSBmcm9tIHRoZSBtYXgtd2lkdGggYnJlYWtwb2ludFxuXG4gIGNvbnN0IG1pbldpZHRoID0gYnJlYWtwb2ludE1pbiAmJiBgKG1pbi13aWR0aDogJHticmVha3BvaW50TWlufSlgO1xuICBjb25zdCBtYXhXaWR0aCA9IGJyZWFrcG9pbnRNYXggJiYgYChtYXgtd2lkdGg6ICR7YnJlYWtwb2ludE1heH0pYDtcbiAgY29uc3QgYW5kID0gYnJlYWtwb2ludE1pbiAmJiBicmVha3BvaW50TWF4ICYmICcgYW5kICc7XG5cbiAgcmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhKGAke21pbldpZHRofSR7YW5kfSR7bWF4V2lkdGh9YCkubWF0Y2hlcztcbn1cbiIsImltcG9ydCB7IGlzU2VydmVyIH0gZnJvbSAnbGl0JztcblxuLyoqXG4gKiAgQ2hlY2sgd2hldGhlciBpdCdzIGEgc3RyaW5nIG9yIGFuIEhUTUxFbGVtZW50LCBpZiBpdCdzIGEgc3RyaW5nIHF1ZXJpZXMgdGhlIGVsZW1lbnQgd2l0aCB0aGVcbiAqICBjb3JyZXNwb25kaW5nIGlkLlxuICogIEBwYXJhbSByZWZlcmVuY2UgZWl0aGVyIHRoZSB3YW50ZWQgaWQgb3IgdGhlIEhUTUxFbGVtZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUmVmZXJlbmNlZEVsZW1lbnQ8VCBleHRlbmRzIEhUTUxFbGVtZW50ID0gSFRNTEVsZW1lbnQ+KFxuICByZWZlcmVuY2U6IHN0cmluZyB8IEhUTUxFbGVtZW50LFxuKTogVCB8IG51bGwge1xuICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgcmVmZXJlbmNlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChyZWZlcmVuY2UpIGFzIFQ7XG4gIH0gZWxzZSBpZiAocmVmZXJlbmNlIGluc3RhbmNlb2Ygd2luZG93LkVsZW1lbnQpIHtcbiAgICByZXR1cm4gcmVmZXJlbmNlIGFzIFQ7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG4iLCJpbXBvcnQgeyBpc1NlcnZlciB9IGZyb20gJ2xpdCc7XG5cbmV4cG9ydCBjb25zdCBnZXREb2N1bWVudFdyaXRpbmdNb2RlID0gKCk6IHN0cmluZyA9PlxuICAoIWlzU2VydmVyICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RpcicpKSB8fCAnbHRyJztcbiIsImltcG9ydCB7IGlzU2VydmVyIH0gZnJvbSAnbGl0JztcblxuLyoqXG4gKiBMb29rcyBmb3IgdGhlIGNsb3Nlc3QgZWxlbWVudCBtYXRjaGluZyB0aGUgZ2l2ZW4gc2VsZWN0b3Igc3RhcnRpbmcgZnJvbSB0aGUgZ2l2ZW4gZWxlbWVudC5cbiAqIFJldHVybnMgbnVsbCwgaWYgbm9uZSBvZiB0aGUgYW5jZXN0b3IgbWF0Y2guXG4gKlxuICogQHBhcmFtIHNlbGVjdG9yIFRoZSBzZWxlY3RvciB0byBtYXRjaCBhbmNlc3RvciBhZ2FpbnN0LlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIGJhc2UgZWxlbWVudCBmcm9tIHdoaWNoIHRvIHN0YXJ0IHRoZSBzZWFyY2guXG4gKiBAcmV0dXJucyBUaGUgY2xvc2VzdCBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvciBvciBudWxsIGlmIG5vbmUgaXMgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBob3N0Q29udGV4dChzZWxlY3Rvcjogc3RyaW5nLCBlbGVtZW50OiBFbGVtZW50KTogRWxlbWVudCB8IG51bGwge1xuICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBTdGFydCB3aXRoIHBhcmVudCBlbGVtZW50IGluIG9yZGVyIHRvIGF2b2lkIGZpbmRpbmcgZWxlbWVudCBpdHNlbGZcbiAgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudCA/PyAoZWxlbWVudC5nZXRSb290Tm9kZSgpIGFzIFNoYWRvd1Jvb3QpLmhvc3Q7XG4gIHdoaWxlIChlbGVtZW50ICYmIChlbGVtZW50IGFzIGFueSkgIT09IGRvY3VtZW50ICYmIChlbGVtZW50IGFzIGFueSkgIT09IHdpbmRvdykge1xuICAgIGNvbnN0IG1hdGNoID0gZWxlbWVudC5jbG9zZXN0KHNlbGVjdG9yKTtcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIHJldHVybiBtYXRjaDtcbiAgICB9XG5cbiAgICBlbGVtZW50ID0gKGVsZW1lbnQuZ2V0Um9vdE5vZGUoKSBhcyBTaGFkb3dSb290KS5ob3N0O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8vIEEgbGlzdCBvZiBlbGVtZW50cyB0aGF0IHNob3VsZCBub3QgYWxsb3cgYW5vdGhlciBhbmNob3Igb3IgYnV0dG9uIGVsZW1lbnQgaW5zaWRlIHRoZW0uXG4vLyBOZWVkcyB0byBiZSBleHRlbmRlZCBpZiBhZGRpdGlvbmFsIGVsZW1lbnRzIGZhbGwgaW50byB0aGlzIGNhdGVnb3J5LlxuZXhwb3J0IGNvbnN0IEFDVElPTl9FTEVNRU5UUyA9ICdhLGJ1dHRvbixzYmItdGVhc2VyLWhlcm8sc2JiLXRlYXNlcic7XG4iLCJpbXBvcnQgeyBmaW5kUmVmZXJlbmNlZEVsZW1lbnQgfSBmcm9tICcuL2ZpbmQtcmVmZXJlbmNlZC1lbGVtZW50LmpzJztcblxuLyoqXG4gKiBHaXZlbiBhbiBlbGVtZW50LCByZXR1cm5zIHRoZSByZWxhdGVkIGlucHV0IHJlZmVyZW5jZSwgaWYgaXQgZXhpc3RzIHJlc3BlY3RpbmcgZm9sbG93aW5nIHByaW9yaXR5LlxuICogMS4gSW5wdXQgZmllbGQgaW4gYHNiYi1mb3JtLWZpZWxkYCAoaWYgdHJpZ2dlciBpcyB1bmRlZmllbmQpXG4gKiAyLiBJbnB1dCByZWZlcmVuY2VkIGJ5IGlkICh0cmlnZ2VyIGlzIHN0cmluZylcbiAqIDMuIElucHV0IHJlZmVyZW5jZWQgZGlyZWN0bHkgKHRyaWdnZXIgaXMgSFRNTEVsZW1lbnQpXG4gKiBAcGFyYW0gZWxlbWVudCBUaGUgc3RhcnRpbmcgU2JiRGF0ZXBpY2tlckVsZW1lbnQgZWxlbWVudC5cbiAqIEBwYXJhbSB0cmlnZ2VyIFRoZSBpZCBvciB0aGUgcmVmZXJlbmNlIG9mIHRoZSBpbnB1dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRJbnB1dChcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIHRyaWdnZXI/OiBzdHJpbmcgfCBIVE1MRWxlbWVudCB8IG51bGwsXG4pOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gIGlmICghdHJpZ2dlcikge1xuICAgIGNvbnN0IHBhcmVudCA9IGVsZW1lbnQuY2xvc2VzdD8uKCdzYmItZm9ybS1maWVsZCcpO1xuICAgIHJldHVybiBwYXJlbnQ/LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykgYXMgSFRNTElucHV0RWxlbWVudCB8IG51bGw7XG4gIH1cblxuICByZXR1cm4gZmluZFJlZmVyZW5jZWRFbGVtZW50PEhUTUxJbnB1dEVsZW1lbnQ+KHRyaWdnZXIpO1xufVxuIiwiLyoqXG4gKiBTZXQgdGhlIGF0dHJpYnV0ZSBvbmx5IGlmIHZhbHVlIGlzIG5vdCAnZmFsc2UnLCBvdGhlcndpc2UgcmVtb3ZlIGF0dHJpYnV0ZS5cbiAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHRoYXQgd2lsbCBoYXZlIHRoZSBhdHRyaWJ1dGVcbiAqIEBwYXJhbSBhdHRyaWJ1dGUgVGhlIGF0dHJpYnV0ZSBuYW1lXG4gKiBAcGFyYW0gdmFsdWUgVGhlIGF0dHJpYnV0ZSB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0T3JSZW1vdmVBdHRyaWJ1dGUoZWxlbWVudDogSFRNTEVsZW1lbnQsIGF0dHJpYnV0ZTogc3RyaW5nLCB2YWx1ZT86IGFueSk6IHZvaWQge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgfSBlbHNlIHtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIHZhbHVlKTtcbiAgfVxufVxuIiwiLy8gVGhpcyBmaWxlIGlzIGZyZWVseSBpbnNwaXJlZCBieSBBbmd1bGFyIE1hdGVyaWFsIHNvbHV0aW9uLlxuLy8gUmVmZXJlbmNlOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2Jsb2IvbWFpbi9zcmMvY2RrL3BsYXRmb3JtL3BsYXRmb3JtLnRzXG5pbXBvcnQgeyBpc1NlcnZlciB9IGZyb20gJ2xpdCc7XG5cbi8vIFdoZXRoZXIgdGhlIGN1cnJlbnQgcGxhdGZvcm0gc3VwcG9ydHMgdGhlIFY4IEJyZWFrIEl0ZXJhdG9yLiBUaGUgVjggY2hlY2tcbi8vIGlzIG5lY2Vzc2FyeSB0byBkZXRlY3QgYWxsIEJsaW5rIGJhc2VkIGJyb3dzZXJzLlxubGV0IGhhc1Y4QnJlYWtJdGVyYXRvcjogYm9vbGVhbjtcblxuLy8gV2UgbmVlZCBhIHRyeS9jYXRjaCBhcm91bmQgdGhlIHJlZmVyZW5jZSB0byBgSW50bGAsIGJlY2F1c2UgYWNjZXNzaW5nIGl0IGluIHNvbWUgY2FzZXMgY2FuXG4vLyBjYXVzZSBJRSB0byB0aHJvdy4gVGhlc2UgY2FzZXMgYXJlIHRpZWQgdG8gcGFydGljdWxhciB2ZXJzaW9ucyBvZiBXaW5kb3dzIGFuZCBjYW4gaGFwcGVuIGlmXG4vLyB0aGUgY29uc3VtZXIgaXMgcHJvdmlkaW5nIGEgcG9seWZpbGxlZCBgTWFwYC4gU2VlOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9DaGFrcmFDb3JlL2lzc3Vlcy8zMTg5XG4vLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2lzc3Vlcy8xNTY4N1xudHJ5IHtcbiAgaGFzVjhCcmVha0l0ZXJhdG9yID0gdHlwZW9mIEludGwgIT09ICd1bmRlZmluZWQnICYmIChJbnRsIGFzIGFueSkudjhCcmVha0l0ZXJhdG9yO1xufSBjYXRjaCB7XG4gIGhhc1Y4QnJlYWtJdGVyYXRvciA9IGZhbHNlO1xufVxuXG4vKiogV2hldGhlciB0aGUgY3VycmVudCBicm93c2VyIGlzIE1pY3Jvc29mdCBFZGdlLiAqL1xuZXhwb3J0IGNvbnN0IGlzRWRnZSA9ICFpc1NlcnZlciAmJiAvKGVkZ2UpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgcmVuZGVyaW5nIGVuZ2luZSBpcyBNaWNyb3NvZnQgVHJpZGVudC4gKi9cbmV4cG9ydCBjb25zdCBpc1RyaWRlbnQgPSAhaXNTZXJ2ZXIgJiYgLyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuLy8gRWRnZUhUTUwgYW5kIFRyaWRlbnQgbW9jayBCbGluayBzcGVjaWZpYyB0aGluZ3MgYW5kIG5lZWQgdG8gYmUgZXhjbHVkZWQgZnJvbSB0aGlzIGNoZWNrLlxuLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgcmVuZGVyaW5nIGVuZ2luZSBpcyBCbGluay4gKi9cbmV4cG9ydCBjb25zdCBpc0JsaW5rID1cbiAgIWlzU2VydmVyICYmXG4gICEhKCh3aW5kb3cgYXMgYW55KS5jaHJvbWUgfHwgaGFzVjhCcmVha0l0ZXJhdG9yKSAmJlxuICB0eXBlb2YgQ1NTICE9PSAndW5kZWZpbmVkJyAmJlxuICAhaXNFZGdlICYmXG4gICFpc1RyaWRlbnQ7XG5cbi8vIFdlYmtpdCBpcyBwYXJ0IG9mIHRoZSB1c2VyQWdlbnQgaW4gRWRnZUhUTUwsIEJsaW5rIGFuZCBUcmlkZW50LiBUaGVyZWZvcmUsIHdlIG5lZWQgdG9cbi8vIGVuc3VyZSB0aGF0IFdlYmtpdCBydW5zIHN0YW5kYWxvbmUgYW5kIGlzIG5vdCB1c2VkIGFzIGFub3RoZXIgZW5naW5lJ3MgYmFzZS5cbi8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IHJlbmRlcmluZyBlbmdpbmUgaXMgV2ViS2l0LiAqL1xuZXhwb3J0IGNvbnN0IGlzV2Via2l0ID1cbiAgIWlzU2VydmVyICYmIC9BcHBsZVdlYktpdC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgIWlzQmxpbmsgJiYgIWlzRWRnZSAmJiAhaXNUcmlkZW50O1xuXG4vKiogV2hldGhlciB0aGUgY3VycmVudCBwbGF0Zm9ybSBpcyBBcHBsZSBpT1MuICovXG5leHBvcnQgY29uc3QgaXNJT1MgPVxuICAhaXNTZXJ2ZXIgJiYgL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgISgnTVNTdHJlYW0nIGluIHdpbmRvdyk7XG5cbi8vIEl0J3MgZGlmZmljdWx0IHRvIGRldGVjdCB0aGUgcGxhaW4gR2Vja28gZW5naW5lLCBiZWNhdXNlIG1vc3Qgb2YgdGhlIGJyb3dzZXJzIGlkZW50aWZ5XG4vLyB0aGVtIHNlbGYgYXMgR2Vja28tbGlrZSBicm93c2VycyBhbmQgbW9kaWZ5IHRoZSB1c2VyQWdlbnQncyBhY2NvcmRpbmcgdG8gdGhhdC5cbi8vIFNpbmNlIHdlIG9ubHkgY292ZXIgb25lIGV4cGxpY2l0IEZpcmVmb3ggY2FzZSwgd2UgY2FuIHNpbXBseSBjaGVjayBmb3IgRmlyZWZveFxuLy8gaW5zdGVhZCBvZiBoYXZpbmcgYW4gdW5zdGFibGUgY2hlY2sgZm9yIEdlY2tvLlxuLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgYnJvd3NlciBpcyBGaXJlZm94LiAqL1xuZXhwb3J0IGNvbnN0IGlzRmlyZWZveCA9ICFpc1NlcnZlciAmJiAvKGZpcmVmb3h8bWluZWZpZWxkKS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbi8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IHBsYXRmb3JtIGlzIEFuZHJvaWQuICovXG4vLyBUcmlkZW50IG9uIG1vYmlsZSBhZGRzIHRoZSBhbmRyb2lkIHBsYXRmb3JtIHRvIHRoZSB1c2VyQWdlbnQgdG8gdHJpY2sgZGV0ZWN0aW9ucy5cbmV4cG9ydCBjb25zdCBpc0FuZHJvaWQgPSAhaXNTZXJ2ZXIgJiYgL2FuZHJvaWQvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmICFpc1RyaWRlbnQ7XG5cbi8vIFNhZmFyaSBicm93c2VycyB3aWxsIGluY2x1ZGUgdGhlIFNhZmFyaSBrZXl3b3JkIGluIHRoZWlyIHVzZXJBZ2VudC4gU29tZSBicm93c2VycyBtYXkgZmFrZVxuLy8gdGhpcyBhbmQganVzdCBwbGFjZSB0aGUgU2FmYXJpIGtleXdvcmQgaW4gdGhlIHVzZXJBZ2VudC4gVG8gYmUgbW9yZSBzYWZlIGFib3V0IFNhZmFyaSBldmVyeVxuLy8gU2FmYXJpIGJyb3dzZXIgc2hvdWxkIGFsc28gdXNlIFdlYmtpdCBhcyBpdHMgbGF5b3V0IGVuZ2luZS5cbi8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IGJyb3dzZXIgaXMgU2FmYXJpLiAqL1xuZXhwb3J0IGNvbnN0IGlzU2FmYXJpID0gIWlzU2VydmVyICYmIC9zYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmIGlzV2Via2l0O1xuXG4vKipcbiAqIFdlIGp1c3QgY2hlY2sgZm9yIHRoZSBibGluayBlbmdpbmUuXG4gKi9cbmV4cG9ydCBjb25zdCBpc0Nocm9taXVtID0gaXNCbGluaztcblxuLyoqIFdoZXRoZXIgdGhlIGFwcGxpY2F0aW9uIGlzIGJlaW5nIHJlbmRlcmVkIGluIGEgTmV4dC5qcyBlbnZpcm9ubWVudC4gKi9cbmV4cG9ydCBjb25zdCBpc05leHRqcyA9ICgpOiBib29sZWFuID0+ICEhKGdsb2JhbFRoaXMgYXMgeyBuZXh0Pzogb2JqZWN0IH0pLm5leHQ7XG4iLCJleHBvcnQgZnVuY3Rpb24gcGFnZVNjcm9sbERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZG9jdW1lbnQuYm9keS5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2JiLXNjcm9sbC1kaXNhYmxlZCcpO1xufVxuXG4vKipcbiAqIEhhbmRsZSB0aGUgcGFnZSBzY3JvbGwsIGFsbG93aW5nIHRvIGRpc2FibGUvZW5hYmxlIHRoZSB3aW5kb3cgc2Nyb2xsIGF2b2lkaW5nIGEgcG90ZW50aWFsXG4gKiBjb250ZW50IHNoaWZ0IGNhdXNlZCBieSB0aGUgZGlzYXBwZWFyYW5jZS9hcHBlYXJhbmNlIG9mIHRoZSBzY3JvbGxiYXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJTY3JvbGxIYW5kbGVyIHtcbiAgcHJpdmF0ZSBfcG9zaXRpb24hOiBzdHJpbmc7XG4gIHByaXZhdGUgX292ZXJmbG93ITogc3RyaW5nO1xuICBwcml2YXRlIF9tYXJnaW5JbmxpbmVFbmQhOiBzdHJpbmc7XG5cbiAgcHVibGljIGRpc2FibGVTY3JvbGwoKTogdm9pZCB7XG4gICAgaWYgKHBhZ2VTY3JvbGxEaXNhYmxlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2F2ZSBhbnkgcHJlLWV4aXN0aW5nIHN0eWxlcyB0byByZWFwcGx5IHRoZW0gdG8gdGhlIGJvZHkgd2hlbiBlbmFibGluZyB0aGUgc2Nyb2xsIGFnYWluLlxuICAgIHRoaXMuX3Bvc2l0aW9uID0gZG9jdW1lbnQuYm9keS5zdHlsZS5wb3NpdGlvbjtcbiAgICB0aGlzLl9vdmVyZmxvdyA9IGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c7XG4gICAgdGhpcy5fbWFyZ2luSW5saW5lRW5kID0gZG9jdW1lbnQuYm9keS5zdHlsZS5tYXJnaW5JbmxpbmVFbmQ7XG5cbiAgICBjb25zdCBzY3JvbGxiYXJXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO1xuXG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luSW5saW5lRW5kID0gYCR7c2Nyb2xsYmFyV2lkdGh9cHhgO1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLXNjcm9sbGJhci13aWR0aCcsIGAke3Njcm9sbGJhcldpZHRofXB4YCk7XG5cbiAgICBkb2N1bWVudC5ib2R5LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1zYmItc2Nyb2xsLWRpc2FibGVkJywgdHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlU2Nyb2xsKCk6IHZvaWQge1xuICAgIGlmICghcGFnZVNjcm9sbERpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSZXZlcnQgYm9keSBpbmxpbmUgc3R5bGVzLlxuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUucG9zaXRpb24gPSB0aGlzLl9wb3NpdGlvbiB8fCAnJztcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gdGhpcy5fb3ZlcmZsb3cgfHwgJyc7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5tYXJnaW5JbmxpbmVFbmQgPSB0aGlzLl9tYXJnaW5JbmxpbmVFbmQgfHwgJyc7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItc2Nyb2xsYmFyLXdpZHRoJywgJzAnKTtcblxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXNiYi1zY3JvbGwtZGlzYWJsZWQnKTtcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcblxuY29uc3QgbG9jYWxOYW1lQ2FjaGUgPSBuZXcgTWFwPHVua25vd24sIHN0cmluZz4oKTtcblxuLyoqXG4gKiBJbiBTU1IgdGhlIGxvY2FsL3RhZyBuYW1lIGlzIG5vdCBhdmFpbGFibGUgb24gdGhlIGNsYXNzIGluc3RhbmNlLCBidXQgaXQgaXMgYXZhaWxhYmxlXG4gKiBpbiB0aGUgc2hpbSBjdXN0b21FbGVtZW50cyByZWdpc3RyeS5cbiAqXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbGl0L2xpdC9ibG9iL21haW4vcGFja2FnZXMvbGFicy9zc3ItZG9tLXNoaW0vc3JjLnRzIChTZWUgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5U2hpbSlcbiAqXG4gKiBDYW4gYmUgcmVtb3ZlZCBvbmNlIGh0dHBzOi8vZ2l0aHViLmNvbS9saXQvbGl0L3B1bGwvNDU1MyBpcyBtZXJnZWQvcmVsZWFzZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NhbE5hbWUoZWxlbWVudDogTGl0RWxlbWVudCk6IHN0cmluZyB7XG4gIGlmIChsb2NhbE5hbWVDYWNoZS5oYXMoZWxlbWVudC5jb25zdHJ1Y3RvcikpIHtcbiAgICByZXR1cm4gbG9jYWxOYW1lQ2FjaGUuZ2V0KGVsZW1lbnQuY29uc3RydWN0b3IpITtcbiAgfVxuXG4gIGNvbnN0IGRlZmluaXRpb25zID0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgIChjdXN0b21FbGVtZW50cyBhcyB1bmtub3duIGFzIHsgX19kZWZpbml0aW9uczogTWFwPHN0cmluZywgeyBjdG9yOiB1bmtub3duIH0+IH0pLl9fZGVmaW5pdGlvbnM7XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGRlZmluaXRpb25zKSB7XG4gICAgaWYgKHZhbHVlLmN0b3IgPT09IGVsZW1lbnQuY29uc3RydWN0b3IpIHtcbiAgICAgIGxvY2FsTmFtZUNhY2hlLnNldChlbGVtZW50LmNvbnN0cnVjdG9yLCBrZXkpO1xuICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBHaXZlbiBlbGVtZW50ICR7ZWxlbWVudC5jb25zdHJ1Y3Rvci5uYW1lfSBoYXMgbm90IGJlZW4gcmVnaXN0ZXJlZCB5ZXQuYCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVhLE1BQUEsY0FBYyxDQUFDLFFBQVEsU0FBUyxTQUFTLFVBQVUsUUFBUSxTQUFTLE9BQU87QUFXeEUsU0FBQSxhQUNkLE1BQ0EsSUFDQSxZQUNTO0FBQ1QsTUFBSSxVQUFVO0FBRUwsV0FBQTtBQUFBLEVBQ1Q7QUFFTSxRQUFBLGdCQUFnQixpQkFBaUIsU0FBUyxlQUFlO0FBQy9ELFFBQU0sZ0JBQWdCLE9BQU8sY0FBYyxpQkFBaUIsb0JBQW9C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
@@ -1 +1 @@
1
- {"version":3,"file":"wait-for-image-ready.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/testing/wait-for-image-ready.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,gBAAgB,GAAG,eAAe,EAC3C,qBAAqB,SAAW,GAC/B,OAAO,CAAC,IAAI,CAAC,CAcf"}
1
+ {"version":3,"file":"wait-for-image-ready.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/testing/wait-for-image-ready.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,gBAAgB,GAAG,eAAe,EAC3C,qBAAqB,SAAW,GAC/B,OAAO,CAAC,IAAI,CAAC,CAkCf"}
@@ -1,3 +1,4 @@
1
+ import { isSafari } from "./dom.js";
1
2
  class EventSpy {
2
3
  constructor(_event, _target = null) {
3
4
  this._event = _event;
@@ -76,18 +77,31 @@ function waitForEvent(element, eventName, timeout = 1e3) {
76
77
  });
77
78
  }
78
79
  async function waitForImageReady(element, timeoutInMilliseconds = 2 * 1e3) {
80
+ var _a;
81
+ const imgElement = element.localName === "sbb-image" ? ((_a = element.shadowRoot) == null ? void 0 : _a.querySelector(".sbb-image__img")) ?? null : element;
82
+ if (!imgElement) {
83
+ throw new Error("img tag not found");
84
+ }
79
85
  if (!element.complete) {
80
86
  await new Promise((resolve, reject) => {
81
87
  const timeout = setTimeout(() => reject("image loading timeout"), timeoutInMilliseconds);
82
88
  element.addEventListener("load", () => {
83
89
  clearTimeout(timeout);
84
- resolve();
90
+ imgElement.decode().then(() => {
91
+ if (isSafari && element.localName === "sbb-image") {
92
+ setTimeout(resolve, 100);
93
+ } else {
94
+ resolve();
95
+ }
96
+ });
85
97
  });
86
98
  element.addEventListener("error", () => {
87
99
  clearTimeout(timeout);
88
100
  reject("image error");
89
101
  });
90
102
  });
103
+ } else {
104
+ await imgElement.decode();
91
105
  }
92
106
  }
93
107
  const isReactiveElement = (element) => {
@@ -117,4 +131,4 @@ export {
117
131
  waitForImageReady,
118
132
  waitForLitRender
119
133
  };
120
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvdGVzdGluZy9ldmVudC1zcHkudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS90ZXN0aW5nL21vY2hhLWV4dGVuc2lvbnMudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS90ZXN0aW5nL3Njcm9sbC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL3Rlc3Rpbmcvd2FpdC1mb3ItY29uZGl0aW9uLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvdGVzdGluZy93YWl0LWZvci1ldmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL3Rlc3Rpbmcvd2FpdC1mb3ItaW1hZ2UtcmVhZHkudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS90ZXN0aW5nL3dhaXQtZm9yLXJlbmRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgY2xhc3MgZXhpc3RzIHRvIGZhY2lsaXRhdGUgdGhlIHRlc3QgbWlncmF0aW9uIGZyb20gc3RlbmNpbCB0byBsaXQuXG4gKiBJdCBtaW1pY3MgdGhlIEFQSSB0aGF0IHN0ZW5jaWwgcHJvdmlkZWQgdG8gdGVzdCBldmVudHMuXG4gKlxuICogVE9ETzogRG9jdW1lbnQgbWVcbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50U3B5PFQgZXh0ZW5kcyBFdmVudD4ge1xuICBwcml2YXRlIF9jb3VudDogbnVtYmVyID0gMDtcbiAgcHVibGljIGdldCBjb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jb3VudDtcbiAgfVxuXG4gIHByaXZhdGUgX2V2ZW50czogVFtdID0gW107XG4gIHB1YmxpYyBnZXQgZXZlbnRzKCk6IFRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50cztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlyc3RFdmVudCgpOiBUIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzLmxlbmd0aCA/IHRoaXMuZXZlbnRzWzBdIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGFzdEV2ZW50KCk6IFQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudHMubGVuZ3RoID8gdGhpcy5ldmVudHNbdGhpcy5ldmVudHMubGVuZ3RoIC0gMV0gOiBudWxsO1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2V2ZW50OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFyZ2V0OiBOb2RlIHwgbnVsbCA9IG51bGwsXG4gICkge1xuICAgIGlmICghdGhpcy5fdGFyZ2V0KSB7XG4gICAgICB0aGlzLl90YXJnZXQgPSBkb2N1bWVudDtcbiAgICB9XG4gICAgdGhpcy5fbGlzdGVuRm9yRXZlbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2xpc3RlbkZvckV2ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuX3RhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcih0aGlzLl9ldmVudCwgKGV2KSA9PiB7XG4gICAgICB0aGlzLl9ldmVudHMucHVzaChldiBhcyBUKTtcbiAgICAgIHRoaXMuX2NvdW50Kys7XG4gICAgfSk7XG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgRnVuYywgU3VpdGUsIFRlc3QgfSBmcm9tICdtb2NoYSc7XG5cbi8qKlxuICogU2tpcCB0aGUgYGRlc2NyaWJlYCBpZiB0aGUgY29uZGl0aW9uIGlzIG5vdCBtZXRcbiAqL1xuZXhwb3J0IGNvbnN0IGRlc2NyaWJlSWYgPSAoXG4gIGNvbmRpdGlvbjogYm9vbGVhbixcbiAgdGl0bGU6IHN0cmluZyxcbiAgZm46ICh0aGlzOiBTdWl0ZSkgPT4gdm9pZCxcbik6IFN1aXRlIHwgdm9pZCA9PiB7XG4gIGlmIChjb25kaXRpb24pIHtcbiAgICByZXR1cm4gTW9jaGEuZGVzY3JpYmUodGl0bGUsIGZuKTtcbiAgfVxufTtcblxuLyoqXG4gKiBTa2lwIHRoZSBgdGVzdGAgaWYgdGhlIGNvbmRpdGlvbiBpcyBub3QgbWV0XG4gKi9cbmV4cG9ydCBjb25zdCB0ZXN0SWYgPSAoY29uZGl0aW9uOiBib29sZWFuLCB0aXRsZTogc3RyaW5nLCBmbj86IEZ1bmMpOiBUZXN0IHwgdm9pZCA9PiB7XG4gIGlmIChjb25kaXRpb24pIHtcbiAgICByZXR1cm4gTW9jaGEudGVzdCh0aXRsZSwgZm4pO1xuICB9XG59O1xuIiwiLyoqXG4gKiBDYW4gYmUgdXNlZCBpbiB0ZXN0cyB3aGVyZSBzY3JvbGwgZXZlbnRzIGFyZSBub3QgdHJpZ2dlcmVkIGJ5IGRlZmF1bHQuXG4gKiBAcGFyYW0gb3B0aW9ucyBTY3JvbGxUb09wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vY2tTY3JvbGxUbyhvcHRpb25zOiBTY3JvbGxUb09wdGlvbnMpOiB2b2lkIHtcbiAgd2luZG93LnNjcm9sbFRvKG9wdGlvbnMpO1xuXG4gIC8vIFdlIG5lZWQgdG8gbWFudWFsbHkgZGlzcGF0Y2hpbmcgdGhlIHNjcm9sbCBhcyB0aGUgc2Nyb2xsVG9cbiAgLy8gZG9lcyBub3QgZmlyZSBhIHNjcm9sbCBldmVudCBpbiB0ZXN0IGVudi5cbiAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ3Njcm9sbCcpKTtcbn1cbiIsImV4cG9ydCBhc3luYyBmdW5jdGlvbiB3YWl0Rm9yQ29uZGl0aW9uKFxuICBjb25kaXRpb246ICgpID0+IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+LFxuICBpbnRlcnZhbCA9IDMwLFxuICB0aW1lb3V0SW5NaWxsaXNlY29uZHMgPSAyICogMTAwMCxcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKCk7XG4gIGxldCBjb3VudGVyID0gMDtcbiAgZnVuY3Rpb24gY2hlY2tDb25kaXRpb24oKTogYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvdW50ZXIrKztcbiAgICByZXR1cm4gY29uZGl0aW9uKCk7XG4gIH1cbiAgd2hpbGUgKFxuICAgICEoYXdhaXQgY2hlY2tDb25kaXRpb24oKSkgJiZcbiAgICBzdGFydC5nZXRUaW1lKCkgKyB0aW1lb3V0SW5NaWxsaXNlY29uZHMgPj0gbmV3IERhdGUoKS5nZXRUaW1lKClcbiAgKSB7XG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgaW50ZXJ2YWwpKTtcbiAgfVxuICBpZiAoc3RhcnQuZ2V0VGltZSgpICsgdGltZW91dEluTWlsbGlzZWNvbmRzIDwgbmV3IERhdGUoKS5nZXRUaW1lKCkpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICBgd2FpdEZvckNvbmRpdGlvbiB0aW1lb3V0OiAke2NvbmRpdGlvbi50b1N0cmluZygpfSwgYXR0ZW1wdHM6ICR7Y291bnRlcn0sIHN0YXJ0OiAke3N0YXJ0LmdldFRpbWUoKX0sIGVuZDogJHtuZXcgRGF0ZSgpLmdldFRpbWUoKX1gLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiB3YWl0Rm9yRXZlbnQoXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICBldmVudE5hbWU6IHN0cmluZyxcbiAgdGltZW91dCA9IDEwMDAsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBzaWduYWwgPSBBYm9ydFNpZ25hbC50aW1lb3V0KHRpbWVvdXQpO1xuICAgIGNvbnN0IHRpbWVvdXRSZWFjaGVkID0gKCk6IHZvaWQgPT4gcmVqZWN0KGBUaW1lb3V0IG9mICR7dGltZW91dH0gcmVhY2hlZGApO1xuICAgIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIHRpbWVvdXRSZWFjaGVkKTtcbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICBldmVudE5hbWUsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIHRpbWVvdXRSZWFjaGVkKTtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSxcbiAgICAgIHsgcGFzc2l2ZTogdHJ1ZSwgc2lnbmFsIH0sXG4gICAgKTtcbiAgfSk7XG59XG4iLCJpbXBvcnQgdHlwZSB7IFNiYkltYWdlRWxlbWVudCB9IGZyb20gJy4uLy4uL2ltYWdlLmpzJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JJbWFnZVJlYWR5KFxuICBlbGVtZW50OiBIVE1MSW1hZ2VFbGVtZW50IHwgU2JiSW1hZ2VFbGVtZW50LFxuICB0aW1lb3V0SW5NaWxsaXNlY29uZHMgPSAyICogMTAwMCxcbik6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIWVsZW1lbnQuY29tcGxldGUpIHtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiByZWplY3QoJ2ltYWdlIGxvYWRpbmcgdGltZW91dCcpLCB0aW1lb3V0SW5NaWxsaXNlY29uZHMpO1xuICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsICgpID0+IHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICByZWplY3QoJ2ltYWdlIGVycm9yJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBSZWFjdGl2ZUVsZW1lbnQgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYkh5ZHJhdGlvbk1peGluVHlwZSB9IGZyb20gJy4uL21peGlucy5qcyc7XG5cbi8qKlxuICogVGVzdHMgaWYgYW4gZWxlbWVudCBpcyBhIExpdCBgUmVhY3RpdmVFbGVtZW50YC5cbiAqXG4gKiBAcGFyYW0gZWxlbWVudCB0aGUgZWxlbWVudCB0byB0ZXN0LlxuICogQHJldHVybiB0cnVlIGlmIHRoZSBlbGVtZW50IGlzIGEgYFJlYWN0aXZlRWxlbWVudGAuXG4gKi9cbmV4cG9ydCBjb25zdCBpc1JlYWN0aXZlRWxlbWVudCA9IChcbiAgZWxlbWVudDogRWxlbWVudCxcbik6IGVsZW1lbnQgaXMgUmVhY3RpdmVFbGVtZW50ICYgUGFydGlhbDxTYmJIeWRyYXRpb25NaXhpblR5cGU+ID0+IHtcbiAgcmV0dXJuIEJvb2xlYW4oKGVsZW1lbnQgYXMgUmVhY3RpdmVFbGVtZW50KS51cGRhdGVDb21wbGV0ZSk7XG59O1xuXG5jb25zdCBwcm9taXNlQ29tcGxldGUgPSBQcm9taXNlLnJlc29sdmUoKTtcblxuLyoqXG4gKiBXYWl0cyBmb3IgYWxsIExpdCBgUmVhY3RpdmVFbGVtZW50YCBjaGlsZHJlbiBvZiB0aGUgZ2l2ZW4gcGFyZW50IG5vZGUgdG9cbiAqIGZpbmlzaCByZW5kZXJpbmcuXG4gKlxuICogQHBhcmFtIHJvb3QgYSBwYXJlbnQgbm9kZSB0byB3YWl0IGZvciByZW5kZXJpbmcgb24uXG4gKi9cbmV4cG9ydCBjb25zdCB3YWl0Rm9yTGl0UmVuZGVyID0gYXN5bmMgPFxuICBUIGV4dGVuZHMgSFRNTEVsZW1lbnQgfCBEb2N1bWVudEZyYWdtZW50ID0gSFRNTEVsZW1lbnQgfCBEb2N1bWVudEZyYWdtZW50LFxuPihcbiAgbm9kZTogVCB8IFByb21pc2U8VD4sXG4pOiBQcm9taXNlPFQ+ID0+IHtcbiAgY29uc3Qgcm9vdCA9IGF3YWl0IG5vZGU7XG4gIChyb290LnBhcmVudEVsZW1lbnQgPz8gcm9vdClcbiAgICAucXVlcnlTZWxlY3RvckFsbD8uKCdbZGVmZXItaHlkcmF0aW9uXScpXG4gICAgLmZvckVhY2goKGUpID0+IGUucmVtb3ZlQXR0cmlidXRlKCdkZWZlci1oeWRyYXRpb24nKSk7XG4gIGNvbnN0IGNvbXBsZXRhYmxlcyA9IFtyb290IGFzIEVsZW1lbnQsIC4uLnJvb3QucXVlcnlTZWxlY3RvckFsbCgnKicpXVxuICAgIC5maWx0ZXIoaXNSZWFjdGl2ZUVsZW1lbnQpXG4gICAgLm1hcCgoZSkgPT4gW1xuICAgICAgZS51cGRhdGVDb21wbGV0ZSxcbiAgICAgIGUuaHlkcmF0aW9uQ29tcGxldGUgPz8gcHJvbWlzZUNvbXBsZXRlLFxuICAgICAgd2FpdEZvckxpdFJlbmRlcihlLnJlbmRlclJvb3QpLFxuICAgIF0pXG4gICAgLmZsYXQoSW5maW5pdHkpO1xuICBhd2FpdCBQcm9taXNlLmFsbChjb21wbGV0YWJsZXMpO1xuICByZXR1cm4gcm9vdDtcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTU8sTUFBTSxTQUEwQjtBQUFBLEVBbUI5QixZQUNHLFFBQ1MsVUFBdUIsTUFDeEM7QUFGUSxTQUFBLFNBQUE7QUFDUyxTQUFBLFVBQUE7QUFwQm5CLFNBQVEsU0FBaUI7QUFLekIsU0FBUSxVQUFlO0FBaUJqQixRQUFBLENBQUMsS0FBSyxTQUFTO0FBQ2pCLFdBQUssVUFBVTtBQUFBLElBQ2pCO0FBQ0EsU0FBSyxnQkFBZ0I7QUFBQSxFQUN2QjtBQUFBLEVBekJBLElBQVcsUUFBZ0I7QUFDekIsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBLEVBR0EsSUFBVyxTQUFjO0FBQ3ZCLFdBQU8sS0FBSztBQUFBLEVBQ2Q7QUFBQSxFQUVBLElBQVcsYUFBdUI7QUFDaEMsV0FBTyxLQUFLLE9BQU8sU0FBUyxLQUFLLE9BQU8sQ0FBQyxJQUFJO0FBQUEsRUFDL0M7QUFBQSxFQUVBLElBQVcsWUFBc0I7QUFDeEIsV0FBQSxLQUFLLE9BQU8sU0FBUyxLQUFLLE9BQU8sS0FBSyxPQUFPLFNBQVMsQ0FBQyxJQUFJO0FBQUEsRUFDcEU7QUFBQSxFQVlRLGtCQUF3QjtBQTdCM0I7QUE4QkgsZUFBSyxZQUFMLG1CQUFjLGlCQUFpQixLQUFLLFFBQVEsQ0FBQyxPQUFPO0FBQzdDLFdBQUEsUUFBUSxLQUFLLEVBQU87QUFDcEIsV0FBQTtBQUFBLElBQUE7QUFBQSxFQUVUO0FBQ0Y7QUNwQ08sTUFBTSxhQUFhLENBQ3hCLFdBQ0EsT0FDQSxPQUNpQjtBQUNqQixNQUFJLFdBQVc7QUFDTixXQUFBLE1BQU0sU0FBUyxPQUFPLEVBQUU7QUFBQSxFQUNqQztBQUNGO0FBS08sTUFBTSxTQUFTLENBQUMsV0FBb0IsT0FBZSxPQUEyQjtBQUNuRixNQUFJLFdBQVc7QUFDTixXQUFBLE1BQU0sS0FBSyxPQUFPLEVBQUU7QUFBQSxFQUM3QjtBQUNGO0FDbEJPLFNBQVMsYUFBYSxTQUFnQztBQUMzRCxTQUFPLFNBQVMsT0FBTztBQUl2QixXQUFTLGNBQWMsSUFBSSxNQUFNLFFBQVEsQ0FBQztBQUM1QztBQ1ZBLGVBQXNCLGlCQUNwQixXQUNBLFdBQVcsSUFDWCx3QkFBd0IsSUFBSSxLQUNWO0FBQ1osUUFBQSw0QkFBWTtBQUNsQixNQUFJLFVBQVU7QUFDZCxXQUFTLGlCQUE2QztBQUNwRDtBQUNBLFdBQU8sVUFBVTtBQUFBLEVBQ25CO0FBQ0EsU0FDRSxDQUFFLE1BQU0sb0JBQ1IsTUFBTSxRQUFBLElBQVksMEJBQTZCLG9CQUFBLFFBQU8sV0FDdEQ7QUFDQSxVQUFNLElBQUksUUFBUSxDQUFDLFlBQVksV0FBVyxTQUFTLFFBQVEsQ0FBQztBQUFBLEVBQzlEO0FBQ0ksTUFBQSxNQUFNLFlBQVksNkNBQTRCLEtBQUssR0FBRSxXQUFXO0FBQ2xFLFdBQU8sUUFBUTtBQUFBLE1BQ2IsNkJBQTZCLFVBQVUsU0FBVSxDQUFBLGVBQWUsT0FBTyxZQUFZLE1BQU0sUUFBQSxDQUFTLFdBQVUsb0JBQUksS0FBSyxHQUFFLFNBQVM7QUFBQSxJQUFBO0FBQUEsRUFFcEk7QUFDTyxTQUFBLFFBQVEsUUFBUSxJQUFJO0FBQzdCO0FDdkJPLFNBQVMsYUFDZCxTQUNBLFdBQ0EsVUFBVSxLQUNLO0FBQ2YsU0FBTyxJQUFJLFFBQWMsQ0FBQyxTQUFTLFdBQVc7QUFDdEMsVUFBQSxTQUFTLFlBQVksUUFBUSxPQUFPO0FBQzFDLFVBQU0saUJBQWlCLE1BQVksT0FBTyxjQUFjLE9BQU8sVUFBVTtBQUNsRSxXQUFBLGlCQUFpQixTQUFTLGNBQWM7QUFDdkMsWUFBQTtBQUFBLE1BQ047QUFBQSxNQUNBLE1BQU07QUFDRyxlQUFBLG9CQUFvQixTQUFTLGNBQWM7QUFDMUM7TUFDVjtBQUFBLE1BQ0EsRUFBRSxTQUFTLE1BQU0sT0FBTztBQUFBLElBQUE7QUFBQSxFQUMxQixDQUNEO0FBQ0g7QUNoQkEsZUFBc0Isa0JBQ3BCLFNBQ0Esd0JBQXdCLElBQUksS0FDYjtBQUNYLE1BQUEsQ0FBQyxRQUFRLFVBQVU7QUFDckIsVUFBTSxJQUFJLFFBQWMsQ0FBQyxTQUFTLFdBQVc7QUFDM0MsWUFBTSxVQUFVLFdBQVcsTUFBTSxPQUFPLHVCQUF1QixHQUFHLHFCQUFxQjtBQUMvRSxjQUFBLGlCQUFpQixRQUFRLE1BQU07QUFDckMscUJBQWEsT0FBTztBQUNaO01BQUEsQ0FDVDtBQUNPLGNBQUEsaUJBQWlCLFNBQVMsTUFBTTtBQUN0QyxxQkFBYSxPQUFPO0FBQ3BCLGVBQU8sYUFBYTtBQUFBLE1BQUEsQ0FDckI7QUFBQSxJQUFBLENBQ0Y7QUFBQSxFQUNIO0FBQ0Y7QUNUYSxNQUFBLG9CQUFvQixDQUMvQixZQUNnRTtBQUN6RCxTQUFBLFFBQVMsUUFBNEIsY0FBYztBQUM1RDtBQUVBLE1BQU0sa0JBQWtCLFFBQVE7QUFRbkIsTUFBQSxtQkFBbUIsT0FHOUIsU0FDZTtBTnRCVjtBTXVCTCxRQUFNLE9BQU8sTUFBTTtBQUNuQixHQUFDLGdCQUFLLGlCQUFpQixNQUNwQixxQkFERiw0QkFDcUIscUJBQ25CLFFBQVEsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLGlCQUFpQjtBQUNyRCxRQUFNLGVBQWUsQ0FBQyxNQUFpQixHQUFHLEtBQUssaUJBQWlCLEdBQUcsQ0FBQyxFQUNqRSxPQUFPLGlCQUFpQixFQUN4QixJQUFJLENBQUMsTUFBTTtBQUFBLElBQ1YsRUFBRTtBQUFBLElBQ0YsRUFBRSxxQkFBcUI7QUFBQSxJQUN2QixpQkFBaUIsRUFBRSxVQUFVO0FBQUEsRUFBQSxDQUM5QixFQUNBLEtBQUssUUFBUTtBQUNWLFFBQUEsUUFBUSxJQUFJLFlBQVk7QUFDdkIsU0FBQTtBQUNUOyJ9
134
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvdGVzdGluZy9ldmVudC1zcHkudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS90ZXN0aW5nL21vY2hhLWV4dGVuc2lvbnMudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS90ZXN0aW5nL3Njcm9sbC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL3Rlc3Rpbmcvd2FpdC1mb3ItY29uZGl0aW9uLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvdGVzdGluZy93YWl0LWZvci1ldmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL3Rlc3Rpbmcvd2FpdC1mb3ItaW1hZ2UtcmVhZHkudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS90ZXN0aW5nL3dhaXQtZm9yLXJlbmRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgY2xhc3MgZXhpc3RzIHRvIGZhY2lsaXRhdGUgdGhlIHRlc3QgbWlncmF0aW9uIGZyb20gc3RlbmNpbCB0byBsaXQuXG4gKiBJdCBtaW1pY3MgdGhlIEFQSSB0aGF0IHN0ZW5jaWwgcHJvdmlkZWQgdG8gdGVzdCBldmVudHMuXG4gKlxuICogVE9ETzogRG9jdW1lbnQgbWVcbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50U3B5PFQgZXh0ZW5kcyBFdmVudD4ge1xuICBwcml2YXRlIF9jb3VudDogbnVtYmVyID0gMDtcbiAgcHVibGljIGdldCBjb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jb3VudDtcbiAgfVxuXG4gIHByaXZhdGUgX2V2ZW50czogVFtdID0gW107XG4gIHB1YmxpYyBnZXQgZXZlbnRzKCk6IFRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50cztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlyc3RFdmVudCgpOiBUIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzLmxlbmd0aCA/IHRoaXMuZXZlbnRzWzBdIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGFzdEV2ZW50KCk6IFQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudHMubGVuZ3RoID8gdGhpcy5ldmVudHNbdGhpcy5ldmVudHMubGVuZ3RoIC0gMV0gOiBudWxsO1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2V2ZW50OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFyZ2V0OiBOb2RlIHwgbnVsbCA9IG51bGwsXG4gICkge1xuICAgIGlmICghdGhpcy5fdGFyZ2V0KSB7XG4gICAgICB0aGlzLl90YXJnZXQgPSBkb2N1bWVudDtcbiAgICB9XG4gICAgdGhpcy5fbGlzdGVuRm9yRXZlbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2xpc3RlbkZvckV2ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuX3RhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcih0aGlzLl9ldmVudCwgKGV2KSA9PiB7XG4gICAgICB0aGlzLl9ldmVudHMucHVzaChldiBhcyBUKTtcbiAgICAgIHRoaXMuX2NvdW50Kys7XG4gICAgfSk7XG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgRnVuYywgU3VpdGUsIFRlc3QgfSBmcm9tICdtb2NoYSc7XG5cbi8qKlxuICogU2tpcCB0aGUgYGRlc2NyaWJlYCBpZiB0aGUgY29uZGl0aW9uIGlzIG5vdCBtZXRcbiAqL1xuZXhwb3J0IGNvbnN0IGRlc2NyaWJlSWYgPSAoXG4gIGNvbmRpdGlvbjogYm9vbGVhbixcbiAgdGl0bGU6IHN0cmluZyxcbiAgZm46ICh0aGlzOiBTdWl0ZSkgPT4gdm9pZCxcbik6IFN1aXRlIHwgdm9pZCA9PiB7XG4gIGlmIChjb25kaXRpb24pIHtcbiAgICByZXR1cm4gTW9jaGEuZGVzY3JpYmUodGl0bGUsIGZuKTtcbiAgfVxufTtcblxuLyoqXG4gKiBTa2lwIHRoZSBgdGVzdGAgaWYgdGhlIGNvbmRpdGlvbiBpcyBub3QgbWV0XG4gKi9cbmV4cG9ydCBjb25zdCB0ZXN0SWYgPSAoY29uZGl0aW9uOiBib29sZWFuLCB0aXRsZTogc3RyaW5nLCBmbj86IEZ1bmMpOiBUZXN0IHwgdm9pZCA9PiB7XG4gIGlmIChjb25kaXRpb24pIHtcbiAgICByZXR1cm4gTW9jaGEudGVzdCh0aXRsZSwgZm4pO1xuICB9XG59O1xuIiwiLyoqXG4gKiBDYW4gYmUgdXNlZCBpbiB0ZXN0cyB3aGVyZSBzY3JvbGwgZXZlbnRzIGFyZSBub3QgdHJpZ2dlcmVkIGJ5IGRlZmF1bHQuXG4gKiBAcGFyYW0gb3B0aW9ucyBTY3JvbGxUb09wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vY2tTY3JvbGxUbyhvcHRpb25zOiBTY3JvbGxUb09wdGlvbnMpOiB2b2lkIHtcbiAgd2luZG93LnNjcm9sbFRvKG9wdGlvbnMpO1xuXG4gIC8vIFdlIG5lZWQgdG8gbWFudWFsbHkgZGlzcGF0Y2hpbmcgdGhlIHNjcm9sbCBhcyB0aGUgc2Nyb2xsVG9cbiAgLy8gZG9lcyBub3QgZmlyZSBhIHNjcm9sbCBldmVudCBpbiB0ZXN0IGVudi5cbiAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ3Njcm9sbCcpKTtcbn1cbiIsImV4cG9ydCBhc3luYyBmdW5jdGlvbiB3YWl0Rm9yQ29uZGl0aW9uKFxuICBjb25kaXRpb246ICgpID0+IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+LFxuICBpbnRlcnZhbCA9IDMwLFxuICB0aW1lb3V0SW5NaWxsaXNlY29uZHMgPSAyICogMTAwMCxcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKCk7XG4gIGxldCBjb3VudGVyID0gMDtcbiAgZnVuY3Rpb24gY2hlY2tDb25kaXRpb24oKTogYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvdW50ZXIrKztcbiAgICByZXR1cm4gY29uZGl0aW9uKCk7XG4gIH1cbiAgd2hpbGUgKFxuICAgICEoYXdhaXQgY2hlY2tDb25kaXRpb24oKSkgJiZcbiAgICBzdGFydC5nZXRUaW1lKCkgKyB0aW1lb3V0SW5NaWxsaXNlY29uZHMgPj0gbmV3IERhdGUoKS5nZXRUaW1lKClcbiAgKSB7XG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgaW50ZXJ2YWwpKTtcbiAgfVxuICBpZiAoc3RhcnQuZ2V0VGltZSgpICsgdGltZW91dEluTWlsbGlzZWNvbmRzIDwgbmV3IERhdGUoKS5nZXRUaW1lKCkpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICBgd2FpdEZvckNvbmRpdGlvbiB0aW1lb3V0OiAke2NvbmRpdGlvbi50b1N0cmluZygpfSwgYXR0ZW1wdHM6ICR7Y291bnRlcn0sIHN0YXJ0OiAke3N0YXJ0LmdldFRpbWUoKX0sIGVuZDogJHtuZXcgRGF0ZSgpLmdldFRpbWUoKX1gLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiB3YWl0Rm9yRXZlbnQoXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICBldmVudE5hbWU6IHN0cmluZyxcbiAgdGltZW91dCA9IDEwMDAsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBzaWduYWwgPSBBYm9ydFNpZ25hbC50aW1lb3V0KHRpbWVvdXQpO1xuICAgIGNvbnN0IHRpbWVvdXRSZWFjaGVkID0gKCk6IHZvaWQgPT4gcmVqZWN0KGBUaW1lb3V0IG9mICR7dGltZW91dH0gcmVhY2hlZGApO1xuICAgIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIHRpbWVvdXRSZWFjaGVkKTtcbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICBldmVudE5hbWUsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIHRpbWVvdXRSZWFjaGVkKTtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSxcbiAgICAgIHsgcGFzc2l2ZTogdHJ1ZSwgc2lnbmFsIH0sXG4gICAgKTtcbiAgfSk7XG59XG4iLCJpbXBvcnQgdHlwZSB7IFNiYkltYWdlRWxlbWVudCB9IGZyb20gJy4uLy4uL2ltYWdlLmpzJztcbmltcG9ydCB7IGlzU2FmYXJpIH0gZnJvbSAnLi4vZG9tLmpzJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JJbWFnZVJlYWR5KFxuICBlbGVtZW50OiBIVE1MSW1hZ2VFbGVtZW50IHwgU2JiSW1hZ2VFbGVtZW50LFxuICB0aW1lb3V0SW5NaWxsaXNlY29uZHMgPSAyICogMTAwMCxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBpbWdFbGVtZW50ID1cbiAgICBlbGVtZW50LmxvY2FsTmFtZSA9PT0gJ3NiYi1pbWFnZSdcbiAgICAgID8gKGVsZW1lbnQuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcjxIVE1MSW1hZ2VFbGVtZW50PignLnNiYi1pbWFnZV9faW1nJykgPz8gbnVsbClcbiAgICAgIDogKGVsZW1lbnQgYXMgSFRNTEltYWdlRWxlbWVudCk7XG5cbiAgaWYgKCFpbWdFbGVtZW50KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbWcgdGFnIG5vdCBmb3VuZCcpO1xuICB9XG5cbiAgaWYgKCFlbGVtZW50LmNvbXBsZXRlKSB7XG4gICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KCdpbWFnZSBsb2FkaW5nIHRpbWVvdXQnKSwgdGltZW91dEluTWlsbGlzZWNvbmRzKTtcbiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuXG4gICAgICAgIGltZ0VsZW1lbnQuZGVjb2RlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgaWYgKGlzU2FmYXJpICYmIGVsZW1lbnQubG9jYWxOYW1lID09PSAnc2JiLWltYWdlJykge1xuICAgICAgICAgICAgLy8gT24gYSB0ZXN0IHBhZ2UgdGhpcyBpcyBvbmx5IGhhcHBlbmluZyBvbmNlIChmaXJzdCB0aW1lIGFuIGltYWdlIGlzIGxvYWRlZCkuIFRoZXJlZm9yZSwgdGhlIGltcGFjdCBpcyB2ZXJ5IHNtYWxsLlxuICAgICAgICAgICAgc2V0VGltZW91dChyZXNvbHZlLCAxMDApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgIHJlamVjdCgnaW1hZ2UgZXJyb3InKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGF3YWl0IGltZ0VsZW1lbnQuZGVjb2RlKCk7XG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgUmVhY3RpdmVFbGVtZW50IH0gZnJvbSAnbGl0JztcblxuaW1wb3J0IHR5cGUgeyBTYmJIeWRyYXRpb25NaXhpblR5cGUgfSBmcm9tICcuLi9taXhpbnMuanMnO1xuXG4vKipcbiAqIFRlc3RzIGlmIGFuIGVsZW1lbnQgaXMgYSBMaXQgYFJlYWN0aXZlRWxlbWVudGAuXG4gKlxuICogQHBhcmFtIGVsZW1lbnQgdGhlIGVsZW1lbnQgdG8gdGVzdC5cbiAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgZWxlbWVudCBpcyBhIGBSZWFjdGl2ZUVsZW1lbnRgLlxuICovXG5leHBvcnQgY29uc3QgaXNSZWFjdGl2ZUVsZW1lbnQgPSAoXG4gIGVsZW1lbnQ6IEVsZW1lbnQsXG4pOiBlbGVtZW50IGlzIFJlYWN0aXZlRWxlbWVudCAmIFBhcnRpYWw8U2JiSHlkcmF0aW9uTWl4aW5UeXBlPiA9PiB7XG4gIHJldHVybiBCb29sZWFuKChlbGVtZW50IGFzIFJlYWN0aXZlRWxlbWVudCkudXBkYXRlQ29tcGxldGUpO1xufTtcblxuY29uc3QgcHJvbWlzZUNvbXBsZXRlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5cbi8qKlxuICogV2FpdHMgZm9yIGFsbCBMaXQgYFJlYWN0aXZlRWxlbWVudGAgY2hpbGRyZW4gb2YgdGhlIGdpdmVuIHBhcmVudCBub2RlIHRvXG4gKiBmaW5pc2ggcmVuZGVyaW5nLlxuICpcbiAqIEBwYXJhbSByb290IGEgcGFyZW50IG5vZGUgdG8gd2FpdCBmb3IgcmVuZGVyaW5nIG9uLlxuICovXG5leHBvcnQgY29uc3Qgd2FpdEZvckxpdFJlbmRlciA9IGFzeW5jIDxcbiAgVCBleHRlbmRzIEhUTUxFbGVtZW50IHwgRG9jdW1lbnRGcmFnbWVudCA9IEhUTUxFbGVtZW50IHwgRG9jdW1lbnRGcmFnbWVudCxcbj4oXG4gIG5vZGU6IFQgfCBQcm9taXNlPFQ+LFxuKTogUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IHJvb3QgPSBhd2FpdCBub2RlO1xuICAocm9vdC5wYXJlbnRFbGVtZW50ID8/IHJvb3QpXG4gICAgLnF1ZXJ5U2VsZWN0b3JBbGw/LignW2RlZmVyLWh5ZHJhdGlvbl0nKVxuICAgIC5mb3JFYWNoKChlKSA9PiBlLnJlbW92ZUF0dHJpYnV0ZSgnZGVmZXItaHlkcmF0aW9uJykpO1xuICBjb25zdCBjb21wbGV0YWJsZXMgPSBbcm9vdCBhcyBFbGVtZW50LCAuLi5yb290LnF1ZXJ5U2VsZWN0b3JBbGwoJyonKV1cbiAgICAuZmlsdGVyKGlzUmVhY3RpdmVFbGVtZW50KVxuICAgIC5tYXAoKGUpID0+IFtcbiAgICAgIGUudXBkYXRlQ29tcGxldGUsXG4gICAgICBlLmh5ZHJhdGlvbkNvbXBsZXRlID8/IHByb21pc2VDb21wbGV0ZSxcbiAgICAgIHdhaXRGb3JMaXRSZW5kZXIoZS5yZW5kZXJSb290KSxcbiAgICBdKVxuICAgIC5mbGF0KEluZmluaXR5KTtcbiAgYXdhaXQgUHJvbWlzZS5hbGwoY29tcGxldGFibGVzKTtcbiAgcmV0dXJuIHJvb3Q7XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFNTyxNQUFNLFNBQTBCO0FBQUEsRUFtQjlCLFlBQ0csUUFDUyxVQUF1QixNQUN4QztBQUZRLFNBQUEsU0FBQTtBQUNTLFNBQUEsVUFBQTtBQXBCbkIsU0FBUSxTQUFpQjtBQUt6QixTQUFRLFVBQWU7QUFpQmpCLFFBQUEsQ0FBQyxLQUFLLFNBQVM7QUFDakIsV0FBSyxVQUFVO0FBQUEsSUFDakI7QUFDQSxTQUFLLGdCQUFnQjtBQUFBLEVBQ3ZCO0FBQUEsRUF6QkEsSUFBVyxRQUFnQjtBQUN6QixXQUFPLEtBQUs7QUFBQSxFQUNkO0FBQUEsRUFHQSxJQUFXLFNBQWM7QUFDdkIsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBLEVBRUEsSUFBVyxhQUF1QjtBQUNoQyxXQUFPLEtBQUssT0FBTyxTQUFTLEtBQUssT0FBTyxDQUFDLElBQUk7QUFBQSxFQUMvQztBQUFBLEVBRUEsSUFBVyxZQUFzQjtBQUN4QixXQUFBLEtBQUssT0FBTyxTQUFTLEtBQUssT0FBTyxLQUFLLE9BQU8sU0FBUyxDQUFDLElBQUk7QUFBQSxFQUNwRTtBQUFBLEVBWVEsa0JBQXdCOztBQUM5QixlQUFLLFlBQUwsbUJBQWMsaUJBQWlCLEtBQUssUUFBUSxDQUFDLE9BQU87QUFDN0MsV0FBQSxRQUFRLEtBQUssRUFBTztBQUNwQixXQUFBO0FBQUEsSUFBQTtBQUFBLEVBRVQ7QUFDRjtBQ3BDTyxNQUFNLGFBQWEsQ0FDeEIsV0FDQSxPQUNBLE9BQ2lCO0FBQ2pCLE1BQUksV0FBVztBQUNOLFdBQUEsTUFBTSxTQUFTLE9BQU8sRUFBRTtBQUFBLEVBQ2pDO0FBQ0Y7QUFLTyxNQUFNLFNBQVMsQ0FBQyxXQUFvQixPQUFlLE9BQTJCO0FBQ25GLE1BQUksV0FBVztBQUNOLFdBQUEsTUFBTSxLQUFLLE9BQU8sRUFB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
@@ -162,8 +162,8 @@ let SbbDatepickerToggleElement = class extends SbbNegativeMixin(
162
162
  }
163
163
  _datePickerChanged(event) {
164
164
  this._datePickerElement = event.target;
165
- if (this._calendarElement && this._datePickerElement.valueAsDate) {
166
- this._calendarElement.selected = this._datePickerElement.valueAsDate;
165
+ if (this._calendarElement) {
166
+ this._calendarElement.selected = this._datePickerElement.valueAsDate || void 0;
167
167
  }
168
168
  }
169
169
  _assignCalendar(calendar) {
@@ -258,4 +258,4 @@ SbbDatepickerToggleElement = __decorateClass([
258
258
  export {
259
259
  SbbDatepickerToggleElement
260
260
  };
261
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci10b2dnbGUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXItdG9nZ2xlL2RhdGVwaWNrZXItdG9nZ2xlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBpc1NlcnZlciwgTGl0RWxlbWVudCwgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyByZWYgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZWYuanMnO1xuXG5pbXBvcnQgdHlwZSB7IENhbGVuZGFyVmlldywgU2JiQ2FsZW5kYXJFbGVtZW50IH0gZnJvbSAnLi4vLi4vY2FsZW5kYXIuanMnO1xuaW1wb3J0IHsgc2JiSW5wdXRNb2RhbGl0eURldGVjdG9yIH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlciwgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBob3N0QXR0cmlidXRlcyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBpMThuU2hvd0NhbGVuZGFyIH0gZnJvbSAnLi4vLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB7IFNiYkh5ZHJhdGlvbk1peGluLCBTYmJOZWdhdGl2ZU1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJQb3BvdmVyRWxlbWVudCwgU2JiUG9wb3ZlclRyaWdnZXJFbGVtZW50IH0gZnJvbSAnLi4vLi4vcG9wb3Zlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVwaWNrZXJFbGVtZW50LCBTYmJJbnB1dFVwZGF0ZUV2ZW50IH0gZnJvbSAnLi4vZGF0ZXBpY2tlci5qcyc7XG5pbXBvcnQgeyBkYXRlcGlja2VyQ29udHJvbFJlZ2lzdGVyZWRFdmVudEZhY3RvcnksIGdldERhdGVQaWNrZXIgfSBmcm9tICcuLi9kYXRlcGlja2VyLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZGF0ZXBpY2tlci10b2dnbGUuc2Nzcz9saXQmaW5saW5lJztcblxuaW1wb3J0ICcuLi8uLi9jYWxlbmRhci5qcyc7XG5pbXBvcnQgJy4uLy4uL3BvcG92ZXIuanMnO1xuXG4vKipcbiAqIENvbWJpbmVkIHdpdGggYSBgc2JiLWRhdGVwaWNrZXJgLCBpdCBjYW4gYmUgdXNlZCB0byBzZWxlY3QgYSBkYXRlIGZyb20gYSBgc2JiLWNhbGVuZGFyYC5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kYXRlcGlja2VyLXRvZ2dsZScpXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICBzbG90OiAncHJlZml4Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2JiRGF0ZXBpY2tlclRvZ2dsZUVsZW1lbnQ8VCA9IERhdGU+IGV4dGVuZHMgU2JiTmVnYXRpdmVNaXhpbihcbiAgU2JiSHlkcmF0aW9uTWl4aW4oTGl0RWxlbWVudCksXG4pIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqIERhdGVwaWNrZXIgcmVmZXJlbmNlLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdkYXRlLXBpY2tlcicgfSkgcHVibGljIGRhdGVQaWNrZXI/OiBzdHJpbmcgfCBTYmJEYXRlcGlja2VyRWxlbWVudDtcblxuICAvKiogVGhlIGluaXRpYWwgdmlldyBvZiBjYWxlbmRhciB3aGljaCBzaG91bGQgYmUgZGlzcGxheWVkIG9uIG9wZW5pbmcuICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyB2aWV3OiBDYWxlbmRhclZpZXcgPSAnZGF5JztcblxuICBAc3RhdGUoKSBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgX21pbjogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBfbWF4OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcblxuICBAc3RhdGUoKSBwcml2YXRlIF9yZW5kZXJDYWxlbmRhciA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2RhdGVQaWNrZXJFbGVtZW50OiBTYmJEYXRlcGlja2VyRWxlbWVudDxUPiB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX2NhbGVuZGFyRWxlbWVudCE6IFNiYkNhbGVuZGFyRWxlbWVudDxUPjtcbiAgcHJpdmF0ZSBfdHJpZ2dlckVsZW1lbnQhOiBTYmJQb3BvdmVyVHJpZ2dlckVsZW1lbnQ7XG4gIHByaXZhdGUgX3BvcG92ZXJFbGVtZW50ITogU2JiUG9wb3ZlckVsZW1lbnQ7XG4gIHByaXZhdGUgX2RhdGVQaWNrZXJDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX2Fib3J0ID0gbmV3IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlcih0aGlzKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBpZiAoIWlzU2VydmVyKSB7XG4gICAgICB0aGlzLmh5ZHJhdGlvbkNvbXBsZXRlLnRoZW4oKCkgPT4gKHRoaXMuX3JlbmRlckNhbGVuZGFyID0gdHJ1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RyaWdnZXJFbGVtZW50KSB7XG4gICAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCA9IHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3Rvcignc2JiLXBvcG92ZXItdHJpZ2dlcicpITtcbiAgICB9XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQuY2xpY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIGlmICghdGhpcy5kYXRlUGlja2VyKSB7XG4gICAgICB0aGlzLl9pbml0KCk7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybUZpZWxkID0gdGhpcy5jbG9zZXN0Py4oJ3NiYi1mb3JtLWZpZWxkJykgPz8gdGhpcy5jbG9zZXN0Py4oJ1tkYXRhLWZvcm0tZmllbGRdJyk7XG4gICAgaWYgKGZvcm1GaWVsZCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IGZvcm1GaWVsZC5oYXNBdHRyaWJ1dGUoJ25lZ2F0aXZlJyk7XG4gICAgfVxuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2NsaWNrJyxcbiAgICAgIChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQuY29tcG9zZWRQYXRoKClbMF0gPT09IHRoaXMpIHtcbiAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgc2lnbmFsOiB0aGlzLl9hYm9ydC5zaWduYWwgfSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkYXRlUGlja2VyJykpIHtcbiAgICAgIHRoaXMuX2luaXQodGhpcy5kYXRlUGlja2VyKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXQoZGF0ZVBpY2tlcj86IHN0cmluZyB8IFNiYkRhdGVwaWNrZXJFbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQgPSBnZXREYXRlUGlja2VyPFQ+KHRoaXMsIGRhdGVQaWNrZXIpO1xuICAgIGlmICghdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQpIHtcbiAgICAgIC8vIElmIHRoZSBjb21wb25lbnQgaXMgYXR0YWNoZWQgdG8gdGhlIERPTSBiZWZvcmUgdGhlIGRhdGVwaWNrZXIsIGl0IGhhcyB0byBsaXN0ZW4gZm9yIHRoZSBkYXRlcGlja2VyIGluaXQsXG4gICAgICAvLyBhc3N1bWluZyB0aGF0IHRoZSB0d28gY29tcG9uZW50cyBzaGFyZSB0aGUgc2FtZSBwYXJlbnQgZWxlbWVudC5cbiAgICAgIHRoaXMucGFyZW50RWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ2lucHV0VXBkYXRlZCcsXG4gICAgICAgIChlOiBFdmVudCkgPT4gdGhpcy5faW5pdChlLnRhcmdldCBhcyBTYmJEYXRlcGlja2VyRWxlbWVudCksXG4gICAgICAgIHsgb25jZTogdHJ1ZSwgc2lnbmFsOiB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlci5zaWduYWwgfSxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnaW5wdXRVcGRhdGVkJyxcbiAgICAgIChldmVudDogQ3VzdG9tRXZlbnQ8U2JiSW5wdXRVcGRhdGVFdmVudD4pID0+IHtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgU2JiRGF0ZXBpY2tlckVsZW1lbnQ8VD47XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gISEoZXZlbnQuZGV0YWlsLmRpc2FibGVkIHx8IGV2ZW50LmRldGFpbC5yZWFkb25seSk7XG4gICAgICAgIHRoaXMuX21pbiA9IGV2ZW50LmRldGFpbC5taW47XG4gICAgICAgIHRoaXMuX21heCA9IGV2ZW50LmRldGFpbC5tYXg7XG4gICAgICB9LFxuICAgICAgeyBzaWduYWw6IHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyLnNpZ25hbCB9LFxuICAgICk7XG4gICAgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnY2hhbmdlJyxcbiAgICAgIChldmVudDogRXZlbnQpID0+IHRoaXMuX2RhdGVQaWNrZXJDaGFuZ2VkKGV2ZW50KSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG4gICAgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnZGF0ZVBpY2tlclVwZGF0ZWQnLFxuICAgICAgKGV2ZW50OiBFdmVudCkgPT5cbiAgICAgICAgdGhpcy5fY29uZmlndXJlQ2FsZW5kYXIodGhpcy5fY2FsZW5kYXJFbGVtZW50LCBldmVudC50YXJnZXQgYXMgU2JiRGF0ZXBpY2tlckVsZW1lbnQ8VD4pLFxuICAgICAgeyBzaWduYWw6IHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyLnNpZ25hbCB9LFxuICAgICk7XG4gICAgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQuZGlzcGF0Y2hFdmVudChkYXRlcGlja2VyQ29udHJvbFJlZ2lzdGVyZWRFdmVudEZhY3RvcnkoKSk7XG4gIH1cblxuICBwcml2YXRlIF9jb25maWd1cmVDYWxlbmRhcihcbiAgICBjYWxlbmRhcjogU2JiQ2FsZW5kYXJFbGVtZW50PFQ+LFxuICAgIGRhdGVwaWNrZXI6IFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+LFxuICApOiB2b2lkIHtcbiAgICBpZiAoIWNhbGVuZGFyIHx8ICFkYXRlcGlja2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNhbGVuZGFyLndpZGUgPSBkYXRlcGlja2VyLndpZGU7XG4gICAgY2FsZW5kYXIubm93ID0gdGhpcy5fbm93T3JVbmRlZmluZWQoKTtcbiAgICBjYWxlbmRhci5kYXRlRmlsdGVyID0gZGF0ZXBpY2tlci5kYXRlRmlsdGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGF0ZVBpY2tlckNoYW5nZWQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgU2JiRGF0ZXBpY2tlckVsZW1lbnQ8VD47XG4gICAgaWYgKHRoaXMuX2NhbGVuZGFyRWxlbWVudCAmJiB0aGlzLl9kYXRlUGlja2VyRWxlbWVudC52YWx1ZUFzRGF0ZSkge1xuICAgICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LnNlbGVjdGVkID0gdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQudmFsdWVBc0RhdGU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfYXNzaWduQ2FsZW5kYXIoY2FsZW5kYXI6IFNiYkNhbGVuZGFyRWxlbWVudDxUPik6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jYWxlbmRhckVsZW1lbnQgJiYgdGhpcy5fY2FsZW5kYXJFbGVtZW50ID09PSBjYWxlbmRhcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9jYWxlbmRhckVsZW1lbnQgPSBjYWxlbmRhcjtcbiAgICBpZiAoXG4gICAgICAhKCd2YWx1ZUFzRGF0ZScgaW4gKHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50ID8/IHt9KSkgfHxcbiAgICAgICF0aGlzLl9jYWxlbmRhckVsZW1lbnQ/LnJlc2V0UG9zaXRpb25cbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LnNlbGVjdGVkID0gdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQhLnZhbHVlQXNEYXRlID8/IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9jb25maWd1cmVDYWxlbmRhcih0aGlzLl9jYWxlbmRhckVsZW1lbnQsIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50ISk7XG4gICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LnJlc2V0UG9zaXRpb24oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB1cGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLnVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgdGhpcy5fcG9wb3ZlckVsZW1lbnQudHJpZ2dlciA9IHRoaXMuX3RyaWdnZXJFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBfbm93T3JVbmRlZmluZWQoKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50Py5oYXNDdXN0b21Ob3coKSA/IHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50Lm5vdyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPHNiYi1wb3BvdmVyLXRyaWdnZXJcbiAgICAgICAgaWNvbi1uYW1lPVwiY2FsZW5kYXItc21hbGxcIlxuICAgICAgICBhcmlhLWxhYmVsPSR7aTE4blNob3dDYWxlbmRhclt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX1cbiAgICAgICAgP2Rpc2FibGVkPSR7IWlzU2VydmVyICYmICghdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQgfHwgdGhpcy5fZGlzYWJsZWQpfVxuICAgICAgICA/bmVnYXRpdmU9JHt0aGlzLm5lZ2F0aXZlfVxuICAgICAgICBkYXRhLWljb24tc21hbGxcbiAgICAgICAgJHtyZWYoKGVsPzogRWxlbWVudCkgPT4gKHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gZWwgYXMgU2JiUG9wb3ZlclRyaWdnZXJFbGVtZW50KSl9XG4gICAgICA+PC9zYmItcG9wb3Zlci10cmlnZ2VyPlxuICAgICAgPHNiYi1wb3BvdmVyXG4gICAgICAgIEB3aWxsT3Blbj0keygpID0+IHRoaXMuX2NhbGVuZGFyRWxlbWVudC5yZXNldFBvc2l0aW9uKCl9XG4gICAgICAgIEBkaWRPcGVuPSR7KCkgPT4ge1xuICAgICAgICAgIGlmIChzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IubW9zdFJlY2VudE1vZGFsaXR5ID09PSAna2V5Ym9hcmQnKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWxlbmRhckVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIC50cmlnZ2VyPSR7dGhpcy5fdHJpZ2dlckVsZW1lbnR9XG4gICAgICAgIGhpZGUtY2xvc2UtYnV0dG9uXG4gICAgICAgICR7cmVmKChlbD86IEVsZW1lbnQpID0+ICh0aGlzLl9wb3BvdmVyRWxlbWVudCA9IGVsIGFzIFNiYlBvcG92ZXJFbGVtZW50KSl9XG4gICAgICA+XG4gICAgICAgICR7dGhpcy5fcmVuZGVyQ2FsZW5kYXJcbiAgICAgICAgICA/IGh0bWxgPHNiYi1jYWxlbmRhclxuICAgICAgICAgICAgICAudmlldz0ke3RoaXMudmlld31cbiAgICAgICAgICAgICAgLm1pbj0ke3RoaXMuX21pbn1cbiAgICAgICAgICAgICAgLm1heD0ke3RoaXMuX21heH1cbiAgICAgICAgICAgICAgLm5vdz0ke3RoaXMuX25vd09yVW5kZWZpbmVkKCl9XG4gICAgICAgICAgICAgID93aWRlPSR7dGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQ/LndpZGV9XG4gICAgICAgICAgICAgIC5kYXRlRmlsdGVyPSR7dGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQ/LmRhdGVGaWx0ZXJ9XG4gICAgICAgICAgICAgIEBkYXRlU2VsZWN0ZWQ9JHsoZDogQ3VzdG9tRXZlbnQ8VD4pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWxlbmRhckVsZW1lbnQuc2VsZWN0ZWQgPSBkLmRldGFpbDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50LnZhbHVlQXNEYXRlID0gZC5kZXRhaWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAke3JlZigoY2FsZW5kYXI/OiBFbGVtZW50KSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuX2Fzc2lnbkNhbGVuZGFyKGNhbGVuZGFyIGFzIFNiYkNhbGVuZGFyRWxlbWVudDxUPiksXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA+PC9zYmItY2FsZW5kYXI+YFxuICAgICAgICAgIDogbm90aGluZ31cbiAgICAgIDwvc2JiLXBvcG92ZXI+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRhdGVwaWNrZXItdG9nZ2xlJzogU2JiRGF0ZXBpY2tlclRvZ2dsZUVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkJPLElBQU0sNkJBQU4sY0FBbUQ7QUFBQSxFQUN4RCxrQkFBa0IsVUFBVTtBQUM5QixFQUFFO0FBQUEsRUF5Qk8sY0FBYztB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
261
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci10b2dnbGUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXItdG9nZ2xlL2RhdGVwaWNrZXItdG9nZ2xlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBpc1NlcnZlciwgTGl0RWxlbWVudCwgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyByZWYgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZWYuanMnO1xuXG5pbXBvcnQgdHlwZSB7IENhbGVuZGFyVmlldywgU2JiQ2FsZW5kYXJFbGVtZW50IH0gZnJvbSAnLi4vLi4vY2FsZW5kYXIuanMnO1xuaW1wb3J0IHsgc2JiSW5wdXRNb2RhbGl0eURldGVjdG9yIH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlciwgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBob3N0QXR0cmlidXRlcyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBpMThuU2hvd0NhbGVuZGFyIH0gZnJvbSAnLi4vLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB7IFNiYkh5ZHJhdGlvbk1peGluLCBTYmJOZWdhdGl2ZU1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJQb3BvdmVyRWxlbWVudCwgU2JiUG9wb3ZlclRyaWdnZXJFbGVtZW50IH0gZnJvbSAnLi4vLi4vcG9wb3Zlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVwaWNrZXJFbGVtZW50LCBTYmJJbnB1dFVwZGF0ZUV2ZW50IH0gZnJvbSAnLi4vZGF0ZXBpY2tlci5qcyc7XG5pbXBvcnQgeyBkYXRlcGlja2VyQ29udHJvbFJlZ2lzdGVyZWRFdmVudEZhY3RvcnksIGdldERhdGVQaWNrZXIgfSBmcm9tICcuLi9kYXRlcGlja2VyLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZGF0ZXBpY2tlci10b2dnbGUuc2Nzcz9saXQmaW5saW5lJztcblxuaW1wb3J0ICcuLi8uLi9jYWxlbmRhci5qcyc7XG5pbXBvcnQgJy4uLy4uL3BvcG92ZXIuanMnO1xuXG4vKipcbiAqIENvbWJpbmVkIHdpdGggYSBgc2JiLWRhdGVwaWNrZXJgLCBpdCBjYW4gYmUgdXNlZCB0byBzZWxlY3QgYSBkYXRlIGZyb20gYSBgc2JiLWNhbGVuZGFyYC5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kYXRlcGlja2VyLXRvZ2dsZScpXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICBzbG90OiAncHJlZml4Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2JiRGF0ZXBpY2tlclRvZ2dsZUVsZW1lbnQ8VCA9IERhdGU+IGV4dGVuZHMgU2JiTmVnYXRpdmVNaXhpbihcbiAgU2JiSHlkcmF0aW9uTWl4aW4oTGl0RWxlbWVudCksXG4pIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqIERhdGVwaWNrZXIgcmVmZXJlbmNlLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdkYXRlLXBpY2tlcicgfSkgcHVibGljIGRhdGVQaWNrZXI/OiBzdHJpbmcgfCBTYmJEYXRlcGlja2VyRWxlbWVudDtcblxuICAvKiogVGhlIGluaXRpYWwgdmlldyBvZiBjYWxlbmRhciB3aGljaCBzaG91bGQgYmUgZGlzcGxheWVkIG9uIG9wZW5pbmcuICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyB2aWV3OiBDYWxlbmRhclZpZXcgPSAnZGF5JztcblxuICBAc3RhdGUoKSBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgX21pbjogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBfbWF4OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcblxuICBAc3RhdGUoKSBwcml2YXRlIF9yZW5kZXJDYWxlbmRhciA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2RhdGVQaWNrZXJFbGVtZW50OiBTYmJEYXRlcGlja2VyRWxlbWVudDxUPiB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX2NhbGVuZGFyRWxlbWVudCE6IFNiYkNhbGVuZGFyRWxlbWVudDxUPjtcbiAgcHJpdmF0ZSBfdHJpZ2dlckVsZW1lbnQhOiBTYmJQb3BvdmVyVHJpZ2dlckVsZW1lbnQ7XG4gIHByaXZhdGUgX3BvcG92ZXJFbGVtZW50ITogU2JiUG9wb3ZlckVsZW1lbnQ7XG4gIHByaXZhdGUgX2RhdGVQaWNrZXJDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX2Fib3J0ID0gbmV3IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlcih0aGlzKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBpZiAoIWlzU2VydmVyKSB7XG4gICAgICB0aGlzLmh5ZHJhdGlvbkNvbXBsZXRlLnRoZW4oKCkgPT4gKHRoaXMuX3JlbmRlckNhbGVuZGFyID0gdHJ1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RyaWdnZXJFbGVtZW50KSB7XG4gICAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCA9IHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3Rvcignc2JiLXBvcG92ZXItdHJpZ2dlcicpITtcbiAgICB9XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQuY2xpY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIGlmICghdGhpcy5kYXRlUGlja2VyKSB7XG4gICAgICB0aGlzLl9pbml0KCk7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybUZpZWxkID0gdGhpcy5jbG9zZXN0Py4oJ3NiYi1mb3JtLWZpZWxkJykgPz8gdGhpcy5jbG9zZXN0Py4oJ1tkYXRhLWZvcm0tZmllbGRdJyk7XG4gICAgaWYgKGZvcm1GaWVsZCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IGZvcm1GaWVsZC5oYXNBdHRyaWJ1dGUoJ25lZ2F0aXZlJyk7XG4gICAgfVxuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2NsaWNrJyxcbiAgICAgIChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQuY29tcG9zZWRQYXRoKClbMF0gPT09IHRoaXMpIHtcbiAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgc2lnbmFsOiB0aGlzLl9hYm9ydC5zaWduYWwgfSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkYXRlUGlja2VyJykpIHtcbiAgICAgIHRoaXMuX2luaXQodGhpcy5kYXRlUGlja2VyKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXQoZGF0ZVBpY2tlcj86IHN0cmluZyB8IFNiYkRhdGVwaWNrZXJFbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQgPSBnZXREYXRlUGlja2VyPFQ+KHRoaXMsIGRhdGVQaWNrZXIpO1xuICAgIGlmICghdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQpIHtcbiAgICAgIC8vIElmIHRoZSBjb21wb25lbnQgaXMgYXR0YWNoZWQgdG8gdGhlIERPTSBiZWZvcmUgdGhlIGRhdGVwaWNrZXIsIGl0IGhhcyB0byBsaXN0ZW4gZm9yIHRoZSBkYXRlcGlja2VyIGluaXQsXG4gICAgICAvLyBhc3N1bWluZyB0aGF0IHRoZSB0d28gY29tcG9uZW50cyBzaGFyZSB0aGUgc2FtZSBwYXJlbnQgZWxlbWVudC5cbiAgICAgIHRoaXMucGFyZW50RWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ2lucHV0VXBkYXRlZCcsXG4gICAgICAgIChlOiBFdmVudCkgPT4gdGhpcy5faW5pdChlLnRhcmdldCBhcyBTYmJEYXRlcGlja2VyRWxlbWVudCksXG4gICAgICAgIHsgb25jZTogdHJ1ZSwgc2lnbmFsOiB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlci5zaWduYWwgfSxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnaW5wdXRVcGRhdGVkJyxcbiAgICAgIChldmVudDogQ3VzdG9tRXZlbnQ8U2JiSW5wdXRVcGRhdGVFdmVudD4pID0+IHtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgU2JiRGF0ZXBpY2tlckVsZW1lbnQ8VD47XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gISEoZXZlbnQuZGV0YWlsLmRpc2FibGVkIHx8IGV2ZW50LmRldGFpbC5yZWFkb25seSk7XG4gICAgICAgIHRoaXMuX21pbiA9IGV2ZW50LmRldGFpbC5taW47XG4gICAgICAgIHRoaXMuX21heCA9IGV2ZW50LmRldGFpbC5tYXg7XG4gICAgICB9LFxuICAgICAgeyBzaWduYWw6IHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyLnNpZ25hbCB9LFxuICAgICk7XG4gICAgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnY2hhbmdlJyxcbiAgICAgIChldmVudDogRXZlbnQpID0+IHRoaXMuX2RhdGVQaWNrZXJDaGFuZ2VkKGV2ZW50KSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG4gICAgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnZGF0ZVBpY2tlclVwZGF0ZWQnLFxuICAgICAgKGV2ZW50OiBFdmVudCkgPT5cbiAgICAgICAgdGhpcy5fY29uZmlndXJlQ2FsZW5kYXIodGhpcy5fY2FsZW5kYXJFbGVtZW50LCBldmVudC50YXJnZXQgYXMgU2JiRGF0ZXBpY2tlckVsZW1lbnQ8VD4pLFxuICAgICAgeyBzaWduYWw6IHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyLnNpZ25hbCB9LFxuICAgICk7XG4gICAgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQuZGlzcGF0Y2hFdmVudChkYXRlcGlja2VyQ29udHJvbFJlZ2lzdGVyZWRFdmVudEZhY3RvcnkoKSk7XG4gIH1cblxuICBwcml2YXRlIF9jb25maWd1cmVDYWxlbmRhcihcbiAgICBjYWxlbmRhcjogU2JiQ2FsZW5kYXJFbGVtZW50PFQ+LFxuICAgIGRhdGVwaWNrZXI6IFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+LFxuICApOiB2b2lkIHtcbiAgICBpZiAoIWNhbGVuZGFyIHx8ICFkYXRlcGlja2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNhbGVuZGFyLndpZGUgPSBkYXRlcGlja2VyLndpZGU7XG4gICAgY2FsZW5kYXIubm93ID0gdGhpcy5fbm93T3JVbmRlZmluZWQoKTtcbiAgICBjYWxlbmRhci5kYXRlRmlsdGVyID0gZGF0ZXBpY2tlci5kYXRlRmlsdGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGF0ZVBpY2tlckNoYW5nZWQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgU2JiRGF0ZXBpY2tlckVsZW1lbnQ8VD47XG4gICAgaWYgKHRoaXMuX2NhbGVuZGFyRWxlbWVudCkge1xuICAgICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LnNlbGVjdGVkID0gdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQudmFsdWVBc0RhdGUgfHwgdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2Fzc2lnbkNhbGVuZGFyKGNhbGVuZGFyOiBTYmJDYWxlbmRhckVsZW1lbnQ8VD4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY2FsZW5kYXJFbGVtZW50ICYmIHRoaXMuX2NhbGVuZGFyRWxlbWVudCA9PT0gY2FsZW5kYXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50ID0gY2FsZW5kYXI7XG4gICAgaWYgKFxuICAgICAgISgndmFsdWVBc0RhdGUnIGluICh0aGlzLl9kYXRlUGlja2VyRWxlbWVudCA/PyB7fSkpIHx8XG4gICAgICAhdGhpcy5fY2FsZW5kYXJFbGVtZW50Py5yZXNldFBvc2l0aW9uXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5zZWxlY3RlZCA9IHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50IS52YWx1ZUFzRGF0ZSA/PyB1bmRlZmluZWQ7XG4gICAgdGhpcy5fY29uZmlndXJlQ2FsZW5kYXIodGhpcy5fY2FsZW5kYXJFbGVtZW50LCB0aGlzLl9kYXRlUGlja2VyRWxlbWVudCEpO1xuICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5yZXNldFBvc2l0aW9uKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci51cGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIHRoaXMuX3BvcG92ZXJFbGVtZW50LnRyaWdnZXIgPSB0aGlzLl90cmlnZ2VyRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgX25vd09yVW5kZWZpbmVkKCk6IFQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyRWxlbWVudD8uaGFzQ3VzdG9tTm93KCkgPyB0aGlzLl9kYXRlUGlja2VyRWxlbWVudC5ub3cgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzYmItcG9wb3Zlci10cmlnZ2VyXG4gICAgICAgIGljb24tbmFtZT1cImNhbGVuZGFyLXNtYWxsXCJcbiAgICAgICAgYXJpYS1sYWJlbD0ke2kxOG5TaG93Q2FsZW5kYXJbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgID9kaXNhYmxlZD0keyFpc1NlcnZlciAmJiAoIXRoaXMuX2RhdGVQaWNrZXJFbGVtZW50IHx8IHRoaXMuX2Rpc2FibGVkKX1cbiAgICAgICAgP25lZ2F0aXZlPSR7dGhpcy5uZWdhdGl2ZX1cbiAgICAgICAgZGF0YS1pY29uLXNtYWxsXG4gICAgICAgICR7cmVmKChlbD86IEVsZW1lbnQpID0+ICh0aGlzLl90cmlnZ2VyRWxlbWVudCA9IGVsIGFzIFNiYlBvcG92ZXJUcmlnZ2VyRWxlbWVudCkpfVxuICAgICAgPjwvc2JiLXBvcG92ZXItdHJpZ2dlcj5cbiAgICAgIDxzYmItcG9wb3ZlclxuICAgICAgICBAd2lsbE9wZW49JHsoKSA9PiB0aGlzLl9jYWxlbmRhckVsZW1lbnQucmVzZXRQb3NpdGlvbigpfVxuICAgICAgICBAZGlkT3Blbj0keygpID0+IHtcbiAgICAgICAgICBpZiAoc2JiSW5wdXRNb2RhbGl0eURldGVjdG9yLm1vc3RSZWNlbnRNb2RhbGl0eSA9PT0gJ2tleWJvYXJkJykge1xuICAgICAgICAgICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICAudHJpZ2dlcj0ke3RoaXMuX3RyaWdnZXJFbGVtZW50fVxuICAgICAgICBoaWRlLWNsb3NlLWJ1dHRvblxuICAgICAgICAke3JlZigoZWw/OiBFbGVtZW50KSA9PiAodGhpcy5fcG9wb3ZlckVsZW1lbnQgPSBlbCBhcyBTYmJQb3BvdmVyRWxlbWVudCkpfVxuICAgICAgPlxuICAgICAgICAke3RoaXMuX3JlbmRlckNhbGVuZGFyXG4gICAgICAgICAgPyBodG1sYDxzYmItY2FsZW5kYXJcbiAgICAgICAgICAgICAgLnZpZXc9JHt0aGlzLnZpZXd9XG4gICAgICAgICAgICAgIC5taW49JHt0aGlzLl9taW59XG4gICAgICAgICAgICAgIC5tYXg9JHt0aGlzLl9tYXh9XG4gICAgICAgICAgICAgIC5ub3c9JHt0aGlzLl9ub3dPclVuZGVmaW5lZCgpfVxuICAgICAgICAgICAgICA/d2lkZT0ke3RoaXMuX2RhdGVQaWNrZXJFbGVtZW50Py53aWRlfVxuICAgICAgICAgICAgICAuZGF0ZUZpbHRlcj0ke3RoaXMuX2RhdGVQaWNrZXJFbGVtZW50Py5kYXRlRmlsdGVyfVxuICAgICAgICAgICAgICBAZGF0ZVNlbGVjdGVkPSR7KGQ6IEN1c3RvbUV2ZW50PFQ+KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LnNlbGVjdGVkID0gZC5kZXRhaWw7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9kYXRlUGlja2VyRWxlbWVudC52YWx1ZUFzRGF0ZSA9IGQuZGV0YWlsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgJHtyZWYoKGNhbGVuZGFyPzogRWxlbWVudCkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLl9hc3NpZ25DYWxlbmRhcihjYWxlbmRhciBhcyBTYmJDYWxlbmRhckVsZW1lbnQ8VD4pLFxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPjwvc2JiLWNhbGVuZGFyPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICA8L3NiYi1wb3BvdmVyPlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1kYXRlcGlja2VyLXRvZ2dsZSc6IFNiYkRhdGVwaWNrZXJUb2dnbGVFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTJCTyxJQUFNLDZCQUFOLGNBQW1EO0FBQUEsRUFDeEQsa0JBQWtCLFVBQVU7QUFDOUIsRUFBRTtBQUFBLEVBeUJPLGNBQWM7QUFDYjtBQW5CSSxTQUFPLE9BQXFCO0FBRS9C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