@hitachivantara/uikit-react-core 5.27.10 → 5.28.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.
@@ -59,6 +59,9 @@ const HvDatePicker = (props) => {
59
59
  value,
60
60
  startValue,
61
61
  endValue,
62
+ expanded,
63
+ defaultExpanded,
64
+ onToggle,
62
65
  rangeMode = false,
63
66
  startAdornment,
64
67
  horizontalPlacement = "right",
@@ -80,7 +83,7 @@ const HvDatePicker = (props) => {
80
83
  const [validationState, setValidationState] = useControlled.useControlled(status, "standBy");
81
84
  const [validationMessage] = useControlled.useControlled(statusMessage, "Required");
82
85
  const locale = localeProp || "en-US";
83
- const [calendarOpen, setCalendarOpen] = React.useState(false);
86
+ const [calendarOpen, setCalendarOpen] = useControlled.useControlled(expanded, Boolean(defaultExpanded));
84
87
  const [startDate, setStartDate, rollbackStartDate] = useSavedState.useSavedState(rangeMode ? startValue : value);
85
88
  const [endDate, setEndDate, rollbackEndDate] = useSavedState.useSavedState(endValue);
86
89
  const [visibleDate, dispatchAction] = useVisibleDate.default(startDate, endDate);
@@ -148,6 +151,7 @@ const HvDatePicker = (props) => {
148
151
  const handleToggle = (evt, open) => {
149
152
  if (evt === null)
150
153
  return;
154
+ onToggle == null ? void 0 : onToggle(evt, open);
151
155
  setCalendarOpen(open);
152
156
  if (!open)
153
157
  handleCalendarClose();
@@ -217,7 +221,7 @@ const HvDatePicker = (props) => {
217
221
  label: "StyledTypography"
218
222
  })({
219
223
  color: dateString ? uikitStyles.theme.colors.secondary : uikitStyles.theme.datePicker.dropdownPlaceholderColor
220
- }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRGF0ZVBpY2tlci9EYXRlUGlja2VyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1ZDZCIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRGF0ZVBpY2tlci9EYXRlUGlja2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZiwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEZWZhdWx0UHJvcHMgfSBmcm9tIFwiQGNvcmUvaG9va3MvdXNlRGVmYXVsdFByb3BzXCI7XG5cbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuXG5pbXBvcnQgeyBDYWxlbmRhciB9IGZyb20gXCJAaGl0YWNoaXZhbnRhcmEvdWlraXQtcmVhY3QtaWNvbnNcIjtcbmltcG9ydCB7IHRoZW1lIH0gZnJvbSBcIkBoaXRhY2hpdmFudGFyYS91aWtpdC1zdHlsZXNcIjtcblxuaW1wb3J0IHsgdXNlQ29udHJvbGxlZCB9IGZyb20gXCJAY29yZS9ob29rcy91c2VDb250cm9sbGVkXCI7XG5pbXBvcnQgeyB1c2VVbmlxdWVJZCB9IGZyb20gXCJAY29yZS9ob29rcy91c2VVbmlxdWVJZFwiO1xuaW1wb3J0IHsgdXNlTGFiZWxzIH0gZnJvbSBcIkBjb3JlL2hvb2tzL3VzZUxhYmVsc1wiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQGNvcmUvaG9va3MvdXNlVGhlbWVcIjtcbmltcG9ydCB7IEh2QmFzZVByb3BzIH0gZnJvbSBcIkBjb3JlL3R5cGVzL2dlbmVyaWNcIjtcbmltcG9ydCB7IEV4dHJhY3ROYW1lcyB9IGZyb20gXCJAY29yZS91dGlscy9jbGFzc2VzXCI7XG5pbXBvcnQgeyBzZXRJZCB9IGZyb20gXCJAY29yZS91dGlscy9zZXRJZFwiO1xuaW1wb3J0IHsgdXNlU2F2ZWRTdGF0ZSB9IGZyb20gXCJAY29yZS91dGlscy91c2VTYXZlZFN0YXRlXCI7XG5pbXBvcnQge1xuICBpc0ludmFsaWQsXG4gIEh2TGFiZWwsXG4gIEh2Rm9ybVN0YXR1cyxcbiAgSHZXYXJuaW5nVGV4dCxcbiAgSHZGb3JtRWxlbWVudCxcbiAgSHZJbmZvTWVzc2FnZSxcbn0gZnJvbSBcIkBjb3JlL2NvbXBvbmVudHMvRm9ybXNcIjtcbmltcG9ydCB7IGlzRGF0ZSB9IGZyb20gXCJAY29yZS9jb21wb25lbnRzL0NhbGVuZGFyL3V0aWxzXCI7XG5pbXBvcnQgeyBIdkNhbGVuZGFyLCBIdkNhbGVuZGFyUHJvcHMgfSBmcm9tIFwiQGNvcmUvY29tcG9uZW50cy9DYWxlbmRhclwiO1xuaW1wb3J0IHtcbiAgSHZCYXNlRHJvcGRvd24sXG4gIEh2QmFzZURyb3Bkb3duUHJvcHMsXG59IGZyb20gXCJAY29yZS9jb21wb25lbnRzL0Jhc2VEcm9wZG93blwiO1xuaW1wb3J0IHsgSHZUeXBvZ3JhcGh5IH0gZnJvbSBcIkBjb3JlL2NvbXBvbmVudHMvVHlwb2dyYXBoeVwiO1xuaW1wb3J0IHsgSHZBY3Rpb25CYXIgfSBmcm9tIFwiQGNvcmUvY29tcG9uZW50cy9BY3Rpb25CYXJcIjtcbmltcG9ydCB7IEh2QnV0dG9uIH0gZnJvbSBcIkBjb3JlL2NvbXBvbmVudHMvQnV0dG9uXCI7XG5cbmltcG9ydCB7IGdldERhdGVMYWJlbCB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgdXNlVmlzaWJsZURhdGUgZnJvbSBcIi4vdXNlVmlzaWJsZURhdGVcIjtcbmltcG9ydCB7IHN0YXRpY0NsYXNzZXMsIHVzZUNsYXNzZXMgfSBmcm9tIFwiLi9EYXRlUGlja2VyLnN0eWxlc1wiO1xuXG5leHBvcnQgeyBzdGF0aWNDbGFzc2VzIGFzIGRhdGVQaWNrZXJDbGFzc2VzIH07XG5cbmV4cG9ydCB0eXBlIEh2RGF0ZVBpY2tlckNsYXNzZXMgPSBFeHRyYWN0TmFtZXM8dHlwZW9mIHVzZUNsYXNzZXM+O1xuXG5jb25zdCBERUZBVUxUX0xBQkVMUyA9IHtcbiAgYXBwbHlMYWJlbDogXCJBcHBseVwiLFxuICBjYW5jZWxMYWJlbDogXCJDYW5jZWxcIixcbiAgY2xlYXJMYWJlbDogXCJDbGVhclwiLFxuICBpbnZhbGlkTGFiZWw6IFwiSW52YWxpZCBkYXRlXCIsXG59O1xuXG4vKiogQGRlcHJlY2F0ZWQgdXNlIGBIdkZvcm1TdGF0dXNgIGluc3RlYWQgKi9cbmV4cG9ydCB0eXBlIEh2RGF0ZVBpY2tlclN0YXR1cyA9IEh2Rm9ybVN0YXR1cztcblxuZXhwb3J0IGludGVyZmFjZSBIdkRhdGVQaWNrZXJQcm9wc1xuICBleHRlbmRzIEh2QmFzZVByb3BzPEhUTUxEaXZFbGVtZW50LCBcIm9uQ2hhbmdlXCI+IHtcbiAgLyoqXG4gICAqIFRoZSBmb3JtIGVsZW1lbnQgbmFtZS5cbiAgICovXG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgb2YgdGhlIGZvcm0gZWxlbWVudC5cbiAgICpcbiAgICogVGhlIGZvcm0gZWxlbWVudCBtdXN0IGJlIGxhYmVsZWQgZm9yIGFjY2Vzc2liaWxpdHkgcmVhc29ucy5cbiAgICogSWYgbm90IHByb3ZpZGVkLCBhbiBhcmlhLWxhYmVsIG9yIGFyaWEtbGFiZWxsZWRieSBtdXN0IGJlIHByb3ZpZGVkIGluc3RlYWQuXG4gICAqL1xuICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgLyoqXG4gICAqIFByb3ZpZGUgYWRkaXRpb25hbCBkZXNjcmlwdGl2ZSB0ZXh0IGZvciB0aGUgZm9ybSBlbGVtZW50LlxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIC8qKlxuICAgKiBUaGUgcGxhY2Vob2xkZXIgdmFsdWUgd2hlbiBub3RoaW5nIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgZm9ybSBlbGVtZW50IGlzIGRpc2FibGVkLlxuICAgKi9cbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdXNlciBpbnB1dCBpcyByZXF1aXJlZCBvbiB0aGUgZm9ybSBlbGVtZW50LlxuICAgKi9cbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIHN0YXR1cyBvZiB0aGUgZm9ybSBlbGVtZW50LlxuICAgKlxuICAgKiBWYWxpZCBpcyBjb3JyZWN0LCBpbnZhbGlkIGlzIGluY29ycmVjdCBhbmQgc3RhbmRCeSBtZWFucyBubyB2YWxpZGF0aW9ucyBoYXZlIHJ1bi5cbiAgICpcbiAgICogV2hlbiB1bmNvbnRyb2xsZWQgYW5kIHVuc3BlY2lmaWVkIGl0IHdpbGwgZGVmYXVsdCB0byBcInN0YW5kQnlcIiBhbmQgY2hhbmdlIHRvIGVpdGhlciBcInZhbGlkXCJcbiAgICogb3IgXCJpbnZhbGlkXCIgYWZ0ZXIgYW55IGNoYW5nZSB0byB0aGUgc3RhdGUuXG4gICAqL1xuICBzdGF0dXM/OiBIdkZvcm1TdGF0dXM7XG4gIC8qKlxuICAgKiBUaGUgZXJyb3IgbWVzc2FnZSB0byBzaG93IHdoZW4gdGhlIHZhbGlkYXRpb24gc3RhdHVzIGlzIFwiaW52YWxpZFwiLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBcIlJlcXVpcmVkXCIgd2hlbiB0aGUgc3RhdHVzIGlzIHVuY29udHJvbGxlZCBhbmQgbm8gYGFyaWEtZXJyb3JtZXNzYWdlYCBpcyBwcm92aWRlZC5cbiAgICovXG4gIHN0YXR1c01lc3NhZ2U/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVzIHRoZSBlbGVtZW50IHRoYXQgcHJvdmlkZXMgYW4gZXJyb3IgbWVzc2FnZSBmb3IgdGhlIGRhdGUgcGlja2VyLlxuICAgKlxuICAgKiBXaWxsIG9ubHkgYmUgdXNlZCB3aGVuIHRoZSB2YWxpZGF0aW9uIHN0YXR1cyBpcyBpbnZhbGlkLlxuICAgKi9cbiAgXCJhcmlhLWVycm9ybWVzc2FnZVwiPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGNhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICBvbkNoYW5nZT86IChkYXRlPzogRGF0ZSwgZW5kRGF0ZT86IERhdGUpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBUaGUgY2FsbGJhY2sgZmlyZWQgd2hlbiB1c2VyIGNsaWNrcyBvbiBjYW5jZWwuXG4gICAqL1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBUaGUgY2FsbGJhY2sgZmlyZWQgd2hlbiB1c2VyIGNsaWNrcyBvbiBjbGVhci5cbiAgICovXG4gIG9uQ2xlYXI/OiAoKSA9PiB2b2lkO1xuICAvKipcbiAgICogQW4gb2JqZWN0IGNvbnRhaW5pbmcgYWxsIHRoZSBsYWJlbHMgZm9yIHRoZSBkYXRlcGlja2VyLlxuICAgKi9cbiAgbGFiZWxzPzoge1xuICAgIC8qKlxuICAgICAqIEFwcGx5IGJ1dHRvbiBsYWJlbC5cbiAgICAgKi9cbiAgICBhcHBseUxhYmVsPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIENhbmNlbCBidXR0b24gbGFiZWwuXG4gICAgICovXG4gICAgY2FuY2VsTGFiZWw/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQ2xlYXIgYnV0dG9uIGxhYmVsLlxuICAgICAqL1xuICAgIGNsZWFyTGFiZWw/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogSW52YWxpZCBEYXRlIGxhYmVsLlxuICAgICAqL1xuICAgIGludmFsaWREYXRlTGFiZWw/OiBzdHJpbmc7XG4gIH07XG4gIC8qKlxuICAgKiBUaGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgaW5wdXQgd2hlbiBpbiBzaW5nbGUgY2FsZW5kYXIgbW9kZS5cbiAgICovXG4gIHZhbHVlPzogRGF0ZTtcbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsIHZhbHVlIGZvciB0aGUgc3RhcnQgZGF0ZSB3aGVuIGluIHJhbmdlIG1vZGUuXG4gICAqL1xuICBzdGFydFZhbHVlPzogRGF0ZTtcbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsIHZhbHVlIGZvciB0aGUgZW5kIGRhdGUgd2hlbiBpbiByYW5nZSBtb2RlLlxuICAgKi9cbiAgZW5kVmFsdWU/OiBEYXRlO1xuICAvKipcbiAgICogRmxhZyBpbmZvcm1pbmcgaWYgdGhlIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIGluIHJhbmdlIG1vZGUgb3IgaW4gc2luZ2xlIG1vZGUuXG4gICAqIFRPRE86IHJlbW92ZSB0aGlzIGluIGZhdm91ciBvZiBkaXNjcmltaW5hdGVkIHVuaW9uXG4gICAqL1xuICByYW5nZU1vZGU/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIHBsYWNlbWVudCB3aGVyZSB0aGUgY2FsZW5kYXIgc2hvdWxkIGJlIHBsYWNlZCBhY2NvcmRpbmcgdG8gdGhlIGlucHV0LiBPcHRpb25zIGFyZSBgbGVmdGAgb3IgYHJpZ2h0YC5cbiAgICogTm90ZSB0aGlzIHByb3Agb25seSBhZmZlY3RzIHRoZSBjYWxlbmRhciB3aGVuIGluIGByYW5nZU1vZGVgLlxuICAgKi9cbiAgaG9yaXpvbnRhbFBsYWNlbWVudD86IFwibGVmdFwiIHwgXCJyaWdodFwiO1xuICAvKipcbiAgICogVGhlIGNhbGVuZGFyIGxvY2FsZS4gSWYgdW5kZWZpbmVkLCBpdCB1c2VzIGNhbGVuZGFyIGRlZmF1bHRcbiAgICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqXG4gICAqIENvbnRyb2xzIGlmIGFjdGlvbnMgYnV0dG9ucyBhcmUgdmlzaWJsZSBhdCB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBzaG93QWN0aW9ucz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDb250cm9scyBpZiBjbGVhciBidXR0b24gaXMgdmlzaWJsZSBhdCB0aGUgY2FsZW5kYXIsXG4gICAqIG9ubHkgd29ya3MgaWYgc2hvd2luZyBhY3Rpb25zIG9yIGluIHJhbmdlIG1vZGUuXG4gICAqL1xuICBzaG93Q2xlYXI/OiBib29sZWFuO1xuICAvKipcbiAgICogRGlzYWJsZSB0aGUgcG9ydGFsIGJlaGF2aW9yLiBUaGUgY2hpbGRyZW4gc3RheSB3aXRoaW4gaXQncyBwYXJlbnQgRE9NIGhpZXJhcmNoeS5cbiAgICovXG4gIGRpc2FibGVQb3J0YWw/OiBib29sZWFuO1xuICAvKipcbiAgICogU2V0cyBpZiB0aGUgY2FsZW5kYXIgY29udGFpbmVyIHNob3VsZCBmb2xsb3cgdGhlIGRhdGUgcGlja2VyIGlucHV0IG91dCBvZiB0aGUgc2NyZWVuIG9yIHN0YXkgdmlzaWJsZS5cbiAgICovXG4gIGVzY2FwZVdpdGhSZWZlcmVuY2U/OiBib29sZWFuO1xuICAvKipcbiAgICogQW4gZWxlbWVudCBwbGFjZWQgYmVmb3JlIHRoZSBDYWxlbmRhclxuICAgKi9cbiAgc3RhcnRBZG9ybm1lbnQ/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIC8qKlxuICAgKiBBbiBvYmplY3QgY29udGFpbmluZyBwcm9wcyB0byBiZSBwYXNzZWQgb250byB0aGUgYmFzZURyb3Bkb3duLlxuICAgKi9cbiAgZHJvcGRvd25Qcm9wcz86IE9iamVjdDtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCB0aGUgRGF0ZVBpY2tlciB3aWxsIGJlIGluIHJlYWQgb25seSBtb2RlLCB1bmFibGUgdG8gYmUgaW50ZXJhY3RlZC5cbiAgICovXG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgcHJvcHMgcGFzc2VkIHRvIHRoZSBIdkNhbGVuZGFyIGNvbXBvbmVudC5cbiAgICovXG4gIGNhbGVuZGFyUHJvcHM/OiBQYXJ0aWFsPEh2Q2FsZW5kYXJQcm9wcz47XG4gIC8qKlxuICAgKiBBIEpzcyBPYmplY3QgdXNlZCB0byBvdmVycmlkZSBvciBleHRlbmQgdGhlIGNvbXBvbmVudCBzdHlsZXMgYXBwbGllZC5cbiAgICovXG4gIGNsYXNzZXM/OiBIdkRhdGVQaWNrZXJDbGFzc2VzO1xufVxuXG4vKipcbiAqIEEgZGF0ZSBwaWNrZXIsIHBvcHVwIGNhbGVuZGFyIG9yIGRhdGUgcmFuZ2UgcGlja2VyIGlzIGEgZ3JhcGhpY2FsIHVzZXJcbiAqIGludGVyZmFjZSB3aWRnZXQgd2hpY2ggYWxsb3dzIHRoZSB1c2VyIHRvIHNlbGVjdCBhIGRhdGUgZnJvbSBhIGNhbGVuZGFyLlxuICovXG5leHBvcnQgY29uc3QgSHZEYXRlUGlja2VyID0gKHByb3BzOiBIdkRhdGVQaWNrZXJQcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgY2xhc3NlczogY2xhc3Nlc1Byb3AsXG4gICAgY2xhc3NOYW1lLFxuXG4gICAgaWQsXG4gICAgbmFtZSxcblxuICAgIHJlcXVpcmVkID0gZmFsc2UsXG4gICAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgICByZWFkT25seSxcblxuICAgIGxhYmVsLFxuICAgIFwiYXJpYS1sYWJlbFwiOiBhcmlhTGFiZWwsXG4gICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogYXJpYUxhYmVsbGVkQnksXG4gICAgZGVzY3JpcHRpb24sXG4gICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGFyaWFEZXNjcmliZWRCeSxcblxuICAgIG9uQ2hhbmdlLFxuICAgIG9uQ2FuY2VsLFxuICAgIG9uQ2xlYXIsXG4gICAgc3RhdHVzLFxuICAgIHN0YXR1c01lc3NhZ2UsXG4gICAgXCJhcmlhLWVycm9ybWVzc2FnZVwiOiBhcmlhRXJyb3JNZXNzYWdlLFxuXG4gICAgcGxhY2Vob2xkZXIsXG5cbiAgICBsYWJlbHM6IGxhYmVsc1Byb3AsXG5cbiAgICB2YWx1ZSxcbiAgICBzdGFydFZhbHVlLFxuICAgIGVuZFZhbHVlLFxuXG4gICAgcmFuZ2VNb2RlID0gZmFsc2UsXG4gICAgc3RhcnRBZG9ybm1lbnQsXG4gICAgaG9yaXpvbnRhbFBsYWNlbWVudCA9IFwicmlnaHRcIixcbiAgICBsb2NhbGU6IGxvY2FsZVByb3AsXG4gICAgc2hvd0FjdGlvbnMgPSBmYWxzZSxcbiAgICBzaG93Q2xlYXIgPSBmYWxzZSxcbiAgICBkaXNhYmxlUG9ydGFsID0gdHJ1ZSxcbiAgICBlc2NhcGVXaXRoUmVmZXJlbmNlID0gdHJ1ZSxcbiAgICBkcm9wZG93blByb3BzLFxuICAgIGNhbGVuZGFyUHJvcHMsXG4gICAgLi4ub3RoZXJzXG4gIH0gPSB1c2VEZWZhdWx0UHJvcHMoXCJIdkRhdGVQaWNrZXJcIiwgcHJvcHMpO1xuXG4gIGNvbnN0IHsgY2xhc3NlcywgY3ggfSA9IHVzZUNsYXNzZXMoY2xhc3Nlc1Byb3ApO1xuICBjb25zdCBsYWJlbHMgPSB1c2VMYWJlbHMoREVGQVVMVF9MQUJFTFMsIGxhYmVsc1Byb3ApO1xuXG4gIGNvbnN0IGVsZW1lbnRJZCA9IHVzZVVuaXF1ZUlkKGlkLCBcImh2ZGF0ZXBpY2tlclwiKTtcblxuICBjb25zdCBbdmFsaWRhdGlvblN0YXRlLCBzZXRWYWxpZGF0aW9uU3RhdGVdID0gdXNlQ29udHJvbGxlZChcbiAgICBzdGF0dXMsXG4gICAgXCJzdGFuZEJ5XCJcbiAgKTtcblxuICBjb25zdCBbdmFsaWRhdGlvbk1lc3NhZ2VdID0gdXNlQ29udHJvbGxlZChzdGF0dXNNZXNzYWdlLCBcIlJlcXVpcmVkXCIpO1xuXG4gIGNvbnN0IGxvY2FsZSA9IGxvY2FsZVByb3AgfHwgXCJlbi1VU1wiO1xuXG4gIGNvbnN0IFtjYWxlbmRhck9wZW4sIHNldENhbGVuZGFyT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgW3N0YXJ0RGF0ZSwgc2V0U3RhcnREYXRlLCByb2xsYmFja1N0YXJ0RGF0ZV0gPSB1c2VTYXZlZFN0YXRlKFxuICAgIHJhbmdlTW9kZSA/IHN0YXJ0VmFsdWUgOiB2YWx1ZVxuICApO1xuICBjb25zdCBbZW5kRGF0ZSwgc2V0RW5kRGF0ZSwgcm9sbGJhY2tFbmREYXRlXSA9IHVzZVNhdmVkU3RhdGUoZW5kVmFsdWUpO1xuXG4gIGNvbnN0IFt2aXNpYmxlRGF0ZSwgZGlzcGF0Y2hBY3Rpb25dID0gdXNlVmlzaWJsZURhdGUoc3RhcnREYXRlLCBlbmREYXRlKTtcblxuICBjb25zdCBmb2N1c1RhcmdldCA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG5cbiAgY29uc3QgeyBhY3RpdmVUaGVtZSB9ID0gdXNlVGhlbWUoKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFN0YXJ0RGF0ZShyYW5nZU1vZGUgPyBzdGFydFZhbHVlIDogdmFsdWUsIHRydWUpO1xuICAgIHNldEVuZERhdGUoZW5kVmFsdWUsIHRydWUpO1xuICB9LCBbdmFsdWUsIHN0YXJ0VmFsdWUsIGVuZFZhbHVlLCByYW5nZU1vZGUsIHNldFN0YXJ0RGF0ZSwgc2V0RW5kRGF0ZV0pO1xuXG4gIGNvbnN0IGVuZERhdGVJc1NldCA9IHVzZVJlZihmYWxzZSk7XG4gIGVuZERhdGVJc1NldC5jdXJyZW50ID0gZW5kRGF0ZSAhPSBudWxsO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN0YXJ0RGF0ZSAhPSBudWxsKSB7XG4gICAgICBkaXNwYXRjaEFjdGlvbih7XG4gICAgICAgIHR5cGU6IFwibW9udGhfeWVhclwiLFxuICAgICAgICB0YXJnZXQ6IGVuZERhdGVJc1NldC5jdXJyZW50ID8gXCJsZWZ0XCIgOiBcImJlc3RcIixcbiAgICAgICAgeWVhcjogc3RhcnREYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgIG1vbnRoOiBzdGFydERhdGUuZ2V0TW9udGgoKSArIDEsXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtkaXNwYXRjaEFjdGlvbiwgc3RhcnREYXRlXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZW5kRGF0ZSAhPSBudWxsKSB7XG4gICAgICBkaXNwYXRjaEFjdGlvbih7XG4gICAgICAgIHR5cGU6IFwibW9udGhfeWVhclwiLFxuICAgICAgICB0YXJnZXQ6IFwicmlnaHRcIixcbiAgICAgICAgeWVhcjogZW5kRGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICBtb250aDogZW5kRGF0ZS5nZXRNb250aCgpICsgMSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW2Rpc3BhdGNoQWN0aW9uLCBlbmREYXRlXSk7XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGBBcHBseWAgYWN0aW9uLiBCb3RoIHNpbmdsZSBhbmQgcmFuZ2VkIG1vZGVzIGFyZSBoYW5kbGVkIGhlcmUuXG4gICAqL1xuICBjb25zdCBoYW5kbGVBcHBseSA9ICgpID0+IHtcbiAgICBzZXRTdGFydERhdGUoc3RhcnREYXRlLCB0cnVlKTtcbiAgICBzZXRFbmREYXRlKGVuZERhdGUgPz8gc3RhcnREYXRlLCB0cnVlKTtcblxuICAgIG9uQ2hhbmdlPy4oc3RhcnREYXRlLCBlbmREYXRlKTtcblxuICAgIHNldFZhbGlkYXRpb25TdGF0ZSgoKSA9PiB7XG4gICAgICAvLyB0aGlzIHdpbGwgb25seSBydW4gaWYgc3RhdHVzIGlzIHVuY29udHJvbGxlZFxuICAgICAgaWYgKHJlcXVpcmVkICYmICghaXNEYXRlKHN0YXJ0RGF0ZSkgfHwgKHJhbmdlTW9kZSAmJiAhaXNEYXRlKGVuZERhdGUpKSkpIHtcbiAgICAgICAgcmV0dXJuIFwiaW52YWxpZFwiO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gXCJ2YWxpZFwiO1xuICAgIH0pO1xuXG4gICAgc2V0Q2FsZW5kYXJPcGVuKGZhbHNlKTtcbiAgfTtcblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgYENhbmNlbGAgYWN0aW9uLiBCb3RoIHNpbmdsZSBhbmQgcmFuZ2VkIG1vZGVzIGFyZSBoYW5kbGVkIGhlcmUuXG4gICAqL1xuICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgcm9sbGJhY2tTdGFydERhdGUoKTtcbiAgICByb2xsYmFja0VuZERhdGUoKTtcblxuICAgIG9uQ2FuY2VsPy4oKTtcblxuICAgIHNldENhbGVuZGFyT3BlbihmYWxzZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGBDYW5jZWxgIGFjdGlvbi4gQm90aCBzaW5nbGUgYW5kIHJhbmdlZCBtb2RlcyBhcmUgaGFuZGxlZCBoZXJlLlxuICAgKi9cbiAgY29uc3QgaGFuZGxlQ2xlYXIgPSAoKSA9PiB7XG4gICAgc2V0U3RhcnREYXRlKHVuZGVmaW5lZCwgZmFsc2UpO1xuICAgIHNldEVuZERhdGUodW5kZWZpbmVkLCBmYWxzZSk7XG4gICAgb25DbGVhcj8uKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2FsZW5kYXJDbG9zZSA9ICgpID0+IHtcbiAgICBjb25zdCBzaG91bGRTYXZlID0gIShyYW5nZU1vZGUgfHwgc2hvd0FjdGlvbnMpO1xuICAgIGlmIChzaG91bGRTYXZlKSB7XG4gICAgICBoYW5kbGVBcHBseSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBoYW5kbGVDYW5jZWwoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlOiBIdkJhc2VEcm9wZG93blByb3BzW1wib25Ub2dnbGVcIl0gPSAoZXZ0LCBvcGVuKSA9PiB7XG4gICAgLyogXG4gICAgIElmIGV2dCBpcyBudWxsIHRoaXMgdG9nZ2xlIHdhc24ndCB0cmlnZ2VyZWQgYnkgdGhlIHVzZXIuXG4gICAgIGluc3RlYWQgaXQgd2FzIHRyaWdnZXJlZCBieSB0aGUgYmFzZURyb3Bkb3duIHVzZUVmZmVjdCBhZnRlclxuICAgICB0aGUgZGF0ZXBpY2tlciBjaGFuZ2VkIHRoZSBleHBhbmRlZCB2YWx1ZSB0aGlzIGJhc2VEcm9wZG93biBiZWhhdmlvciBuZWVkcyBhIHJldmlld1xuICAgICovXG4gICAgaWYgKGV2dCA9PT0gbnVsbCkgcmV0dXJuO1xuICAgIHNldENhbGVuZGFyT3BlbihvcGVuKTtcbiAgICBpZiAoIW9wZW4pIGhhbmRsZUNhbGVuZGFyQ2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBmb2N1c09uQ29udGFpbmVyID0gKCkgPT4ge1xuICAgIGZvY3VzVGFyZ2V0LmN1cnJlbnQ/LmZvY3VzKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRGF0ZUNoYW5nZTogSHZDYWxlbmRhclByb3BzW1wib25DaGFuZ2VcIl0gPSAoZXZlbnQsIG5ld0RhdGUpID0+IHtcbiAgICBpZiAoIWlzRGF0ZShuZXdEYXRlKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgYXV0b1NhdmUgPSAhc2hvd0FjdGlvbnMgJiYgIXJhbmdlTW9kZTtcblxuICAgIGlmIChyYW5nZU1vZGUpIHtcbiAgICAgIGlmICghc3RhcnREYXRlIHx8IChzdGFydERhdGUgJiYgZW5kRGF0ZSkgfHwgbmV3RGF0ZSA8IHN0YXJ0RGF0ZSkge1xuICAgICAgICBzZXRTdGFydERhdGUobmV3RGF0ZSk7XG4gICAgICAgIHNldEVuZERhdGUodW5kZWZpbmVkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVuZERhdGUobmV3RGF0ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFN0YXJ0RGF0ZShuZXdEYXRlLCBhdXRvU2F2ZSk7XG4gICAgfVxuXG4gICAgaWYgKGF1dG9TYXZlKSB7XG4gICAgICBvbkNoYW5nZT8uKG5ld0RhdGUpO1xuXG4gICAgICBzZXRWYWxpZGF0aW9uU3RhdGUoKCkgPT4ge1xuICAgICAgICAvLyB0aGlzIHdpbGwgb25seSBydW4gaWYgc3RhdHVzIGlzIHVuY29udHJvbGxlZFxuICAgICAgICBpZiAocmVxdWlyZWQgJiYgIWlzRGF0ZShuZXdEYXRlKSkge1xuICAgICAgICAgIHJldHVybiBcImludmFsaWRcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBcInZhbGlkXCI7XG4gICAgICB9KTtcblxuICAgICAgc2V0Q2FsZW5kYXJPcGVuKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSW5wdXREYXRlQ2hhbmdlOiBIdkNhbGVuZGFyUHJvcHNbXCJvbklucHV0Q2hhbmdlXCJdID0gKFxuICAgIGV2ZW50LFxuICAgIG5ld0RhdGUsXG4gICAgcG9zaXRpb25cbiAgKSA9PiB7XG4gICAgaWYgKCFpc0RhdGUobmV3RGF0ZSkpIHJldHVybjtcblxuICAgIGlmICghcmFuZ2VNb2RlKSB7XG4gICAgICBoYW5kbGVEYXRlQ2hhbmdlKGV2ZW50IGFzIGFueSwgbmV3RGF0ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHBvc2l0aW9uID09PSBcImxlZnRcIikge1xuICAgICAgaWYgKGVuZERhdGUpIHNldFN0YXJ0RGF0ZShuZXdEYXRlID4gZW5kRGF0ZSA/IGVuZERhdGUgOiBuZXdEYXRlKTtcbiAgICB9IGVsc2UgaWYgKHBvc2l0aW9uID09PSBcInJpZ2h0XCIpIHtcbiAgICAgIGlmICghc3RhcnREYXRlKSB7XG4gICAgICAgIGlmIChlbmREYXRlKSBzZXRTdGFydERhdGUobmV3RGF0ZSA+IGVuZERhdGUgPyBlbmREYXRlIDogbmV3RGF0ZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHNldEVuZERhdGUobmV3RGF0ZSA8IHN0YXJ0RGF0ZSA/IHN0YXJ0RGF0ZSA6IG5ld0RhdGUpO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgY29udGFpbmVyIGZvciB0aGUgYWN0aW9uIGVsZW1lbnRzLlxuICAgKi9cbiAgY29uc3QgcmVuZGVyQWN0aW9ucyA9ICgpID0+IChcbiAgICA8SHZBY3Rpb25CYXIgY2xhc3NOYW1lPXtjeCh7IFtjbGFzc2VzLmFjdGlvbkNvbnRhaW5lcl06IHNob3dDbGVhciB9KX0+XG4gICAgICB7c2hvd0NsZWFyICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMubGVmdENvbnRhaW5lcn0+XG4gICAgICAgICAgPEh2QnV0dG9uXG4gICAgICAgICAgICBpZD17c2V0SWQoaWQsIFwiYWN0aW9uXCIsIFwiY2xlYXJcIil9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuYWN0aW9ufVxuICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlHaG9zdFwiXG4gICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDbGVhcn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bGFiZWxzPy5jbGVhckxhYmVsfVxuICAgICAgICAgIDwvSHZCdXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLnJpZ2h0Q29udGFpbmVyfT5cbiAgICAgICAgPEh2QnV0dG9uXG4gICAgICAgICAgaWQ9e3NldElkKGlkLCBcImFjdGlvblwiLCBcImFwcGx5XCIpfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5hY3Rpb259XG4gICAgICAgICAgdmFyaWFudD1cInByaW1hcnlHaG9zdFwiXG4gICAgICAgICAgb25DbGljaz17aGFuZGxlQXBwbHl9XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWxzPy5hcHBseUxhYmVsfVxuICAgICAgICA8L0h2QnV0dG9uPlxuICAgICAgICA8SHZCdXR0b25cbiAgICAgICAgICBpZD17c2V0SWQoaWQsIFwiYWN0aW9uXCIsIFwiY2FuY2VsXCIpfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5hY3Rpb259XG4gICAgICAgICAgdmFyaWFudD1cInByaW1hcnlHaG9zdFwiXG4gICAgICAgICAgb25DbGljaz17aGFuZGxlQ2FuY2VsfVxuICAgICAgICA+XG4gICAgICAgICAge2xhYmVscz8uY2FuY2VsTGFiZWx9XG4gICAgICAgIDwvSHZCdXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L0h2QWN0aW9uQmFyPlxuICApO1xuXG4gIGNvbnN0IHN0eWxlZFR5cG9ncmFwaHkgPSAoXG4gICAgZGF0ZVN0cmluZzogc3RyaW5nLFxuICAgIHZhcmlhbnQ6IGFueSxcbiAgICB0ZXh0OiBSZWFjdE5vZGVcbiAgKSA9PiB7XG4gICAgY29uc3QgU3R5bGVkVHlwb2dyYXBoeSA9IHN0eWxlZChIdlR5cG9ncmFwaHkpKHtcbiAgICAgIGNvbG9yOiBkYXRlU3RyaW5nXG4gICAgICAgID8gdGhlbWUuY29sb3JzLnNlY29uZGFyeVxuICAgICAgICA6IHRoZW1lLmRhdGVQaWNrZXIuZHJvcGRvd25QbGFjZWhvbGRlckNvbG9yLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIDxTdHlsZWRUeXBvZ3JhcGh5IHZhcmlhbnQ9e3ZhcmlhbnR9Pnt0ZXh0fTwvU3R5bGVkVHlwb2dyYXBoeT47XG4gIH07XG5cbiAgY29uc3QgcmVuZGVySW5wdXQgPSAoZGF0ZVN0cmluZzogc3RyaW5nKSA9PlxuICAgIHN0eWxlZFR5cG9ncmFwaHkoXG4gICAgICBkYXRlU3RyaW5nLFxuICAgICAgYWN0aXZlVGhlbWU/LmRhdGVQaWNrZXIucGxhY2Vob2xkZXJWYXJpYW50LFxuICAgICAgKGRhdGVTdHJpbmcgfHwgcGxhY2Vob2xkZXIpID09PSB1bmRlZmluZWQgPyBcIlwiIDogZGF0ZVN0cmluZyB8fCBwbGFjZWhvbGRlclxuICAgICk7XG5cbiAgY29uc3QgZGF0ZVZhbHVlID0gcmFuZ2VNb2RlID8geyBzdGFydERhdGUsIGVuZERhdGUgfSA6IHN0YXJ0RGF0ZTtcblxuICBjb25zdCBoYXNMYWJlbCA9IGxhYmVsICE9IG51bGw7XG4gIGNvbnN0IGhhc0Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24gIT0gbnVsbDtcblxuICAvLyB0aGUgZXJyb3IgbWVzc2FnZSBhcmVhIHdpbGwgb25seSBiZSBjcmVhdGVkIGlmOlxuICAvLyAtIGFuIGV4dGVybmFsIGVsZW1lbnQgdGhhdCBwcm92aWRlcyBhbiBlcnJvciBtZXNzYWdlIGlzbid0IGlkZW50aWZpZWQgdmlhIGFyaWEtZXJyb3JtZXNzYWdlIEFORFxuICAvLyAgIC0gYm90aCBzdGF0dXMgYW5kIHN0YXR1c01lc3NhZ2UgcHJvcGVydGllcyBhcmUgYmVpbmcgY29udHJvbGxlZCBPUlxuICAvLyAgIC0gc3RhdHVzIGlzIHVuY29udHJvbGxlZCBhbmQgcmVxdWlyZWQgaXMgdHJ1ZVxuICBjb25zdCBjYW5TaG93RXJyb3IgPVxuICAgIGFyaWFFcnJvck1lc3NhZ2UgPT0gbnVsbCAmJlxuICAgICgoc3RhdHVzICE9PSB1bmRlZmluZWQgJiYgc3RhdHVzTWVzc2FnZSAhPT0gdW5kZWZpbmVkKSB8fFxuICAgICAgKHN0YXR1cyA9PT0gdW5kZWZpbmVkICYmIHJlcXVpcmVkKSk7XG5cbiAgY29uc3QgaXNTdGF0ZUludmFsaWQgPSBpc0ludmFsaWQodmFsaWRhdGlvblN0YXRlKTtcblxuICBsZXQgZXJyb3JNZXNzYWdlSWQ7XG4gIGlmIChpc1N0YXRlSW52YWxpZCkge1xuICAgIGVycm9yTWVzc2FnZUlkID0gY2FuU2hvd0Vycm9yXG4gICAgICA/IHNldElkKGVsZW1lbnRJZCwgXCJlcnJvclwiKVxuICAgICAgOiBhcmlhRXJyb3JNZXNzYWdlO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8SHZGb3JtRWxlbWVudFxuICAgICAgaWQ9e2lkfVxuICAgICAgbmFtZT17bmFtZX1cbiAgICAgIHZhbHVlPXtkYXRlVmFsdWV9XG4gICAgICBzdGF0dXM9e3ZhbGlkYXRpb25TdGF0ZX1cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgIHJlcXVpcmVkPXtyZXF1aXJlZH1cbiAgICAgIGNsYXNzTmFtZT17Y3goY2xhc3Nlcy5yb290LCBjbGFzc05hbWUpfVxuICAgICAgcmVhZE9ubHk9e3JlYWRPbmx5fVxuICAgICAgey4uLm90aGVyc31cbiAgICA+XG4gICAgICB7KGhhc0xhYmVsIHx8IGhhc0Rlc2NyaXB0aW9uKSAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmxhYmVsQ29udGFpbmVyfT5cbiAgICAgICAgICB7aGFzTGFiZWwgJiYgKFxuICAgICAgICAgICAgPEh2TGFiZWxcbiAgICAgICAgICAgICAgaWQ9e3NldElkKGVsZW1lbnRJZCwgXCJsYWJlbFwiKX1cbiAgICAgICAgICAgICAgbGFiZWw9e2xhYmVsfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMubGFiZWx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICB7aGFzRGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgICAgPEh2SW5mb01lc3NhZ2VcbiAgICAgICAgICAgICAgaWQ9e3NldElkKGVsZW1lbnRJZCwgXCJkZXNjcmlwdGlvblwiKX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7ZGVzY3JpcHRpb259XG4gICAgICAgICAgICA8L0h2SW5mb01lc3NhZ2U+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAgPEh2QmFzZURyb3Bkb3duXG4gICAgICAgIHJvbGU9XCJjb21ib2JveFwiXG4gICAgICAgIGNsYXNzZXM9e3tcbiAgICAgICAgICByb290OiBjbGFzc2VzLmRyb3Bkb3duLFxuICAgICAgICAgIHBhbmVsOiBjbGFzc2VzLnBhbmVsLFxuICAgICAgICAgIGhlYWRlcjogY3goeyBbY2xhc3Nlcy5kcm9wZG93bkhlYWRlckludmFsaWRdOiBpc1N0YXRlSW52YWxpZCB9KSxcbiAgICAgICAgICBoZWFkZXJPcGVuOiBjbGFzc2VzLmRyb3Bkb3duSGVhZGVyT3BlbixcbiAgICAgICAgfX1cbiAgICAgICAgcmVhZE9ubHk9e3JlYWRPbmx5fVxuICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgIGRpc2FibGVQb3J0YWw9e2Rpc2FibGVQb3J0YWx9XG4gICAgICAgIHZhcmlhYmxlV2lkdGhcbiAgICAgICAgcGxhY2VtZW50PXtob3Jpem9udGFsUGxhY2VtZW50fVxuICAgICAgICBleHBhbmRlZD17Y2FsZW5kYXJPcGVufVxuICAgICAgICBvblRvZ2dsZT17aGFuZGxlVG9nZ2xlfVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17aGFuZGxlQ2FsZW5kYXJDbG9zZX1cbiAgICAgICAgb25Db250YWluZXJDcmVhdGlvbj17Zm9jdXNPbkNvbnRhaW5lcn1cbiAgICAgICAgcGxhY2Vob2xkZXI9e3JlbmRlcklucHV0KGdldERhdGVMYWJlbChkYXRlVmFsdWUsIHJhbmdlTW9kZSwgbG9jYWxlKSl9XG4gICAgICAgIGFkb3JubWVudD17XG4gICAgICAgICAgPENhbGVuZGFyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuaWNvbn1cbiAgICAgICAgICAgIGNvbG9yPXtkaXNhYmxlZCA/IFwic2Vjb25kYXJ5XzgwXCIgOiB1bmRlZmluZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgICBwb3BwZXJQcm9wcz17e1xuICAgICAgICAgIG1vZGlmaWVyczogW1xuICAgICAgICAgICAgeyBuYW1lOiBcInByZXZlbnRPdmVyZmxvd1wiLCBlbmFibGVkOiBlc2NhcGVXaXRoUmVmZXJlbmNlIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfX1cbiAgICAgICAgYXJpYS1oYXNwb3B1cD1cImRpYWxvZ1wiXG4gICAgICAgIGFyaWEtbGFiZWw9e2FyaWFMYWJlbH1cbiAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtcbiAgICAgICAgICBbbGFiZWwgJiYgc2V0SWQoZWxlbWVudElkLCBcImxhYmVsXCIpLCBhcmlhTGFiZWxsZWRCeV1cbiAgICAgICAgICAgIC5qb2luKFwiIFwiKVxuICAgICAgICAgICAgLnRyaW0oKSB8fCB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICBhcmlhLWludmFsaWQ9e2lzU3RhdGVJbnZhbGlkID8gdHJ1ZSA6IHVuZGVmaW5lZH1cbiAgICAgICAgYXJpYS1lcnJvcm1lc3NhZ2U9e2Vycm9yTWVzc2FnZUlkfVxuICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PXtcbiAgICAgICAgICBbZGVzY3JpcHRpb24gJiYgc2V0SWQoZWxlbWVudElkLCBcImRlc2NyaXB0aW9uXCIpLCBhcmlhRGVzY3JpYmVkQnldXG4gICAgICAgICAgICAuam9pbihcIiBcIilcbiAgICAgICAgICAgIC50cmltKCkgfHwgdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgICAgey4uLmRyb3Bkb3duUHJvcHN9XG4gICAgICA+XG4gICAgICAgIDxkaXYgcmVmPXtmb2N1c1RhcmdldH0gdGFiSW5kZXg9ey0xfSAvPlxuICAgICAgICA8SHZDYWxlbmRhclxuICAgICAgICAgIGlkPXtzZXRJZChpZCwgXCJjYWxlbmRhclwiKX1cbiAgICAgICAgICBzdGFydEFkb3JubWVudD17c3RhcnRBZG9ybm1lbnR9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZURhdGVDaGFuZ2V9XG4gICAgICAgICAgb25JbnB1dENoYW5nZT17aGFuZGxlSW5wdXREYXRlQ2hhbmdlfVxuICAgICAgICAgIG9uVmlzaWJsZURhdGVDaGFuZ2U9eyhfZXZlbnQsIHR5cGUsIG1vbnRoLCB0YXJnZXQpID0+IHtcbiAgICAgICAgICAgIGRpc3BhdGNoQWN0aW9uKHsgdHlwZSwgdGFyZ2V0LCBtb250aCB9KTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgIHsuLi52aXNpYmxlRGF0ZX1cbiAgICAgICAgICB7Li4uY2FsZW5kYXJQcm9wc31cbiAgICAgICAgICBpbnZhbGlkRGF0ZUxhYmVsPXtsYWJlbHM/LmludmFsaWREYXRlTGFiZWx9XG4gICAgICAgIC8+XG4gICAgICAgIHsocmFuZ2VNb2RlIHx8IHNob3dBY3Rpb25zKSAmJiByZW5kZXJBY3Rpb25zKCl9XG4gICAgICA8L0h2QmFzZURyb3Bkb3duPlxuICAgICAge2NhblNob3dFcnJvciAmJiAoXG4gICAgICAgIDxIdldhcm5pbmdUZXh0XG4gICAgICAgICAgaWQ9e3NldElkKGVsZW1lbnRJZCwgXCJlcnJvclwiKX1cbiAgICAgICAgICBkaXNhYmxlQm9yZGVyXG4gICAgICAgICAgY2xhc3NOYW1lPXtjeChjbGFzc2VzLmVycm9yKX1cbiAgICAgICAgPlxuICAgICAgICAgIHt2YWxpZGF0aW9uTWVzc2FnZX1cbiAgICAgICAgPC9Idldhcm5pbmdUZXh0PlxuICAgICAgKX1cbiAgICA8L0h2Rm9ybUVsZW1lbnQ+XG4gICk7XG59O1xuIl19 */");
224
+ }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRGF0ZVBpY2tlci9EYXRlUGlja2VyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnYjZCIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRGF0ZVBpY2tlci9EYXRlUGlja2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURlZmF1bHRQcm9wcyB9IGZyb20gXCJAY29yZS9ob29rcy91c2VEZWZhdWx0UHJvcHNcIjtcblxuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5cbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSBcIkBoaXRhY2hpdmFudGFyYS91aWtpdC1yZWFjdC1pY29uc1wiO1xuaW1wb3J0IHsgdGhlbWUgfSBmcm9tIFwiQGhpdGFjaGl2YW50YXJhL3Vpa2l0LXN0eWxlc1wiO1xuXG5pbXBvcnQgeyB1c2VDb250cm9sbGVkIH0gZnJvbSBcIkBjb3JlL2hvb2tzL3VzZUNvbnRyb2xsZWRcIjtcbmltcG9ydCB7IHVzZVVuaXF1ZUlkIH0gZnJvbSBcIkBjb3JlL2hvb2tzL3VzZVVuaXF1ZUlkXCI7XG5pbXBvcnQgeyB1c2VMYWJlbHMgfSBmcm9tIFwiQGNvcmUvaG9va3MvdXNlTGFiZWxzXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJAY29yZS9ob29rcy91c2VUaGVtZVwiO1xuaW1wb3J0IHsgRXh0cmFjdE5hbWVzIH0gZnJvbSBcIkBjb3JlL3V0aWxzL2NsYXNzZXNcIjtcbmltcG9ydCB7IHNldElkIH0gZnJvbSBcIkBjb3JlL3V0aWxzL3NldElkXCI7XG5pbXBvcnQgeyB1c2VTYXZlZFN0YXRlIH0gZnJvbSBcIkBjb3JlL3V0aWxzL3VzZVNhdmVkU3RhdGVcIjtcbmltcG9ydCB7XG4gIGlzSW52YWxpZCxcbiAgSHZMYWJlbCxcbiAgSHZGb3JtU3RhdHVzLFxuICBIdldhcm5pbmdUZXh0LFxuICBIdkZvcm1FbGVtZW50LFxuICBIdkluZm9NZXNzYWdlLFxuICBIdkZvcm1FbGVtZW50UHJvcHMsXG59IGZyb20gXCJAY29yZS9jb21wb25lbnRzL0Zvcm1zXCI7XG5pbXBvcnQgeyBpc0RhdGUgfSBmcm9tIFwiQGNvcmUvY29tcG9uZW50cy9DYWxlbmRhci91dGlsc1wiO1xuaW1wb3J0IHsgSHZDYWxlbmRhciwgSHZDYWxlbmRhclByb3BzIH0gZnJvbSBcIkBjb3JlL2NvbXBvbmVudHMvQ2FsZW5kYXJcIjtcbmltcG9ydCB7XG4gIEh2QmFzZURyb3Bkb3duLFxuICBIdkJhc2VEcm9wZG93blByb3BzLFxufSBmcm9tIFwiQGNvcmUvY29tcG9uZW50cy9CYXNlRHJvcGRvd25cIjtcbmltcG9ydCB7IEh2VHlwb2dyYXBoeSB9IGZyb20gXCJAY29yZS9jb21wb25lbnRzL1R5cG9ncmFwaHlcIjtcbmltcG9ydCB7IEh2QWN0aW9uQmFyIH0gZnJvbSBcIkBjb3JlL2NvbXBvbmVudHMvQWN0aW9uQmFyXCI7XG5pbXBvcnQgeyBIdkJ1dHRvbiB9IGZyb20gXCJAY29yZS9jb21wb25lbnRzL0J1dHRvblwiO1xuXG5pbXBvcnQgeyBnZXREYXRlTGFiZWwgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHVzZVZpc2libGVEYXRlIGZyb20gXCIuL3VzZVZpc2libGVEYXRlXCI7XG5pbXBvcnQgeyBzdGF0aWNDbGFzc2VzLCB1c2VDbGFzc2VzIH0gZnJvbSBcIi4vRGF0ZVBpY2tlci5zdHlsZXNcIjtcblxuZXhwb3J0IHsgc3RhdGljQ2xhc3NlcyBhcyBkYXRlUGlja2VyQ2xhc3NlcyB9O1xuXG5leHBvcnQgdHlwZSBIdkRhdGVQaWNrZXJDbGFzc2VzID0gRXh0cmFjdE5hbWVzPHR5cGVvZiB1c2VDbGFzc2VzPjtcblxuY29uc3QgREVGQVVMVF9MQUJFTFMgPSB7XG4gIGFwcGx5TGFiZWw6IFwiQXBwbHlcIixcbiAgY2FuY2VsTGFiZWw6IFwiQ2FuY2VsXCIsXG4gIGNsZWFyTGFiZWw6IFwiQ2xlYXJcIixcbiAgaW52YWxpZExhYmVsOiBcIkludmFsaWQgZGF0ZVwiLFxufTtcblxuLyoqIEBkZXByZWNhdGVkIHVzZSBgSHZGb3JtU3RhdHVzYCBpbnN0ZWFkICovXG5leHBvcnQgdHlwZSBIdkRhdGVQaWNrZXJTdGF0dXMgPSBIdkZvcm1TdGF0dXM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSHZEYXRlUGlja2VyUHJvcHNcbiAgZXh0ZW5kcyBPbWl0PEh2Rm9ybUVsZW1lbnRQcm9wcywgXCJvbkNoYW5nZVwiPixcbiAgICBQaWNrPFxuICAgICAgSHZCYXNlRHJvcGRvd25Qcm9wcyxcbiAgICAgIFwiZGlzYWJsZVBvcnRhbFwiIHwgXCJleHBhbmRlZFwiIHwgXCJkZWZhdWx0RXhwYW5kZWRcIiB8IFwib25Ub2dnbGVcIlxuICAgID4ge1xuICAvKipcbiAgICogSWRlbnRpZmllcyB0aGUgZWxlbWVudCB0aGF0IHByb3ZpZGVzIGFuIGVycm9yIG1lc3NhZ2UgZm9yIHRoZSBkYXRlIHBpY2tlci5cbiAgICpcbiAgICogV2lsbCBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgdmFsaWRhdGlvbiBzdGF0dXMgaXMgaW52YWxpZC5cbiAgICovXG4gIFwiYXJpYS1lcnJvcm1lc3NhZ2VcIj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjYWxsYmFjayBmaXJlZCB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuICAgKi9cbiAgb25DaGFuZ2U/OiAoZGF0ZT86IERhdGUsIGVuZERhdGU/OiBEYXRlKSA9PiB2b2lkO1xuICAvKipcbiAgICogVGhlIGNhbGxiYWNrIGZpcmVkIHdoZW4gdXNlciBjbGlja3Mgb24gY2FuY2VsLlxuICAgKi9cbiAgb25DYW5jZWw/OiAoKSA9PiB2b2lkO1xuICAvKipcbiAgICogVGhlIGNhbGxiYWNrIGZpcmVkIHdoZW4gdXNlciBjbGlja3Mgb24gY2xlYXIuXG4gICAqL1xuICBvbkNsZWFyPzogKCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIEFuIG9iamVjdCBjb250YWluaW5nIGFsbCB0aGUgbGFiZWxzIGZvciB0aGUgZGF0ZXBpY2tlci5cbiAgICovXG4gIGxhYmVscz86IHtcbiAgICAvKipcbiAgICAgKiBBcHBseSBidXR0b24gbGFiZWwuXG4gICAgICovXG4gICAgYXBwbHlMYWJlbD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBDYW5jZWwgYnV0dG9uIGxhYmVsLlxuICAgICAqL1xuICAgIGNhbmNlbExhYmVsPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIENsZWFyIGJ1dHRvbiBsYWJlbC5cbiAgICAgKi9cbiAgICBjbGVhckxhYmVsPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEludmFsaWQgRGF0ZSBsYWJlbC5cbiAgICAgKi9cbiAgICBpbnZhbGlkRGF0ZUxhYmVsPzogc3RyaW5nO1xuICB9O1xuICAvKipcbiAgICogVGhlIGluaXRpYWwgdmFsdWUgb2YgdGhlIGlucHV0IHdoZW4gaW4gc2luZ2xlIGNhbGVuZGFyIG1vZGUuXG4gICAqL1xuICB2YWx1ZT86IERhdGU7XG4gIC8qKlxuICAgKiBUaGUgaW5pdGlhbCB2YWx1ZSBmb3IgdGhlIHN0YXJ0IGRhdGUgd2hlbiBpbiByYW5nZSBtb2RlLlxuICAgKi9cbiAgc3RhcnRWYWx1ZT86IERhdGU7XG4gIC8qKlxuICAgKiBUaGUgaW5pdGlhbCB2YWx1ZSBmb3IgdGhlIGVuZCBkYXRlIHdoZW4gaW4gcmFuZ2UgbW9kZS5cbiAgICovXG4gIGVuZFZhbHVlPzogRGF0ZTtcbiAgLyoqXG4gICAqIEZsYWcgaW5mb3JtaW5nIGlmIHRoZSB0aGUgY29tcG9uZW50IHNob3VsZCBiZSBpbiByYW5nZSBtb2RlIG9yIGluIHNpbmdsZSBtb2RlLlxuICAgKi9cbiAgLy8gVE9ETzogcmVtb3ZlIHRoaXMgaW4gZmF2b3VyIG9mIGRpc2NyaW1pbmF0ZWQgdW5pb25cbiAgcmFuZ2VNb2RlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBwbGFjZW1lbnQgd2hlcmUgdGhlIGNhbGVuZGFyIHNob3VsZCBiZSBwbGFjZWQgYWNjb3JkaW5nIHRvIHRoZSBpbnB1dC4gT3B0aW9ucyBhcmUgYGxlZnRgIG9yIGByaWdodGAuXG4gICAqIE5vdGUgdGhpcyBwcm9wIG9ubHkgYWZmZWN0cyB0aGUgY2FsZW5kYXIgd2hlbiBpbiBgcmFuZ2VNb2RlYC5cbiAgICovXG4gIGhvcml6b250YWxQbGFjZW1lbnQ/OiBcImxlZnRcIiB8IFwicmlnaHRcIjtcbiAgLyoqXG4gICAqIFRoZSBjYWxlbmRhciBsb2NhbGUuIElmIHVuZGVmaW5lZCwgaXQgdXNlcyBjYWxlbmRhciBkZWZhdWx0XG4gICAqL1xuICBsb2NhbGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDb250cm9scyBpZiBhY3Rpb25zIGJ1dHRvbnMgYXJlIHZpc2libGUgYXQgdGhlIGNhbGVuZGFyLlxuICAgKi9cbiAgc2hvd0FjdGlvbnM/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29udHJvbHMgaWYgY2xlYXIgYnV0dG9uIGlzIHZpc2libGUgYXQgdGhlIGNhbGVuZGFyLFxuICAgKiBvbmx5IHdvcmtzIGlmIHNob3dpbmcgYWN0aW9ucyBvciBpbiByYW5nZSBtb2RlLlxuICAgKi9cbiAgc2hvd0NsZWFyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNldHMgaWYgdGhlIGNhbGVuZGFyIGNvbnRhaW5lciBzaG91bGQgZm9sbG93IHRoZSBkYXRlIHBpY2tlciBpbnB1dCBvdXQgb2YgdGhlIHNjcmVlbiBvciBzdGF5IHZpc2libGUuXG4gICAqL1xuICBlc2NhcGVXaXRoUmVmZXJlbmNlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFuIGVsZW1lbnQgcGxhY2VkIGJlZm9yZSB0aGUgQ2FsZW5kYXJcbiAgICovXG4gIHN0YXJ0QWRvcm5tZW50PzogUmVhY3QuUmVhY3ROb2RlO1xuICAvKipcbiAgICogQW4gb2JqZWN0IGNvbnRhaW5pbmcgcHJvcHMgdG8gYmUgcGFzc2VkIG9udG8gdGhlIGJhc2VEcm9wZG93bi5cbiAgICovXG4gIGRyb3Bkb3duUHJvcHM/OiBQYXJ0aWFsPEh2QmFzZURyb3Bkb3duUHJvcHM+O1xuICAvKipcbiAgICogQWRkaXRpb25hbCBwcm9wcyBwYXNzZWQgdG8gdGhlIEh2Q2FsZW5kYXIgY29tcG9uZW50LlxuICAgKi9cbiAgY2FsZW5kYXJQcm9wcz86IFBhcnRpYWw8SHZDYWxlbmRhclByb3BzPjtcbiAgLyoqXG4gICAqIEEgSnNzIE9iamVjdCB1c2VkIHRvIG92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgY29tcG9uZW50IHN0eWxlcyBhcHBsaWVkLlxuICAgKi9cbiAgY2xhc3Nlcz86IEh2RGF0ZVBpY2tlckNsYXNzZXM7XG59XG5cbi8qKlxuICogQSBkYXRlIHBpY2tlciwgcG9wdXAgY2FsZW5kYXIgb3IgZGF0ZSByYW5nZSBwaWNrZXIgaXMgYSBncmFwaGljYWwgdXNlclxuICogaW50ZXJmYWNlIHdpZGdldCB3aGljaCBhbGxvd3MgdGhlIHVzZXIgdG8gc2VsZWN0IGEgZGF0ZSBmcm9tIGEgY2FsZW5kYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBIdkRhdGVQaWNrZXIgPSAocHJvcHM6IEh2RGF0ZVBpY2tlclByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc2VzOiBjbGFzc2VzUHJvcCxcbiAgICBjbGFzc05hbWUsXG5cbiAgICBpZCxcbiAgICBuYW1lLFxuXG4gICAgcmVxdWlyZWQgPSBmYWxzZSxcbiAgICBkaXNhYmxlZCA9IGZhbHNlLFxuICAgIHJlYWRPbmx5LFxuXG4gICAgbGFiZWwsXG4gICAgXCJhcmlhLWxhYmVsXCI6IGFyaWFMYWJlbCxcbiAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBhcmlhTGFiZWxsZWRCeSxcbiAgICBkZXNjcmlwdGlvbixcbiAgICBcImFyaWEtZGVzY3JpYmVkYnlcIjogYXJpYURlc2NyaWJlZEJ5LFxuXG4gICAgb25DaGFuZ2UsXG4gICAgb25DYW5jZWwsXG4gICAgb25DbGVhcixcbiAgICBzdGF0dXMsXG4gICAgc3RhdHVzTWVzc2FnZSxcbiAgICBcImFyaWEtZXJyb3JtZXNzYWdlXCI6IGFyaWFFcnJvck1lc3NhZ2UsXG5cbiAgICBwbGFjZWhvbGRlcixcblxuICAgIGxhYmVsczogbGFiZWxzUHJvcCxcblxuICAgIHZhbHVlLFxuICAgIHN0YXJ0VmFsdWUsXG4gICAgZW5kVmFsdWUsXG5cbiAgICBleHBhbmRlZCxcbiAgICBkZWZhdWx0RXhwYW5kZWQsXG4gICAgb25Ub2dnbGUsXG4gICAgcmFuZ2VNb2RlID0gZmFsc2UsXG4gICAgc3RhcnRBZG9ybm1lbnQsXG4gICAgaG9yaXpvbnRhbFBsYWNlbWVudCA9IFwicmlnaHRcIixcbiAgICBsb2NhbGU6IGxvY2FsZVByb3AsXG4gICAgc2hvd0FjdGlvbnMgPSBmYWxzZSxcbiAgICBzaG93Q2xlYXIgPSBmYWxzZSxcbiAgICBkaXNhYmxlUG9ydGFsID0gdHJ1ZSxcbiAgICBlc2NhcGVXaXRoUmVmZXJlbmNlID0gdHJ1ZSxcbiAgICBkcm9wZG93blByb3BzLFxuICAgIGNhbGVuZGFyUHJvcHMsXG4gICAgLi4ub3RoZXJzXG4gIH0gPSB1c2VEZWZhdWx0UHJvcHMoXCJIdkRhdGVQaWNrZXJcIiwgcHJvcHMpO1xuXG4gIGNvbnN0IHsgY2xhc3NlcywgY3ggfSA9IHVzZUNsYXNzZXMoY2xhc3Nlc1Byb3ApO1xuICBjb25zdCBsYWJlbHMgPSB1c2VMYWJlbHMoREVGQVVMVF9MQUJFTFMsIGxhYmVsc1Byb3ApO1xuXG4gIGNvbnN0IGVsZW1lbnRJZCA9IHVzZVVuaXF1ZUlkKGlkLCBcImh2ZGF0ZXBpY2tlclwiKTtcblxuICBjb25zdCBbdmFsaWRhdGlvblN0YXRlLCBzZXRWYWxpZGF0aW9uU3RhdGVdID0gdXNlQ29udHJvbGxlZChcbiAgICBzdGF0dXMsXG4gICAgXCJzdGFuZEJ5XCJcbiAgKTtcblxuICBjb25zdCBbdmFsaWRhdGlvbk1lc3NhZ2VdID0gdXNlQ29udHJvbGxlZChzdGF0dXNNZXNzYWdlLCBcIlJlcXVpcmVkXCIpO1xuXG4gIGNvbnN0IGxvY2FsZSA9IGxvY2FsZVByb3AgfHwgXCJlbi1VU1wiO1xuXG4gIGNvbnN0IFtjYWxlbmRhck9wZW4sIHNldENhbGVuZGFyT3Blbl0gPSB1c2VDb250cm9sbGVkKFxuICAgIGV4cGFuZGVkLFxuICAgIEJvb2xlYW4oZGVmYXVsdEV4cGFuZGVkKVxuICApO1xuXG4gIGNvbnN0IFtzdGFydERhdGUsIHNldFN0YXJ0RGF0ZSwgcm9sbGJhY2tTdGFydERhdGVdID0gdXNlU2F2ZWRTdGF0ZShcbiAgICByYW5nZU1vZGUgPyBzdGFydFZhbHVlIDogdmFsdWVcbiAgKTtcbiAgY29uc3QgW2VuZERhdGUsIHNldEVuZERhdGUsIHJvbGxiYWNrRW5kRGF0ZV0gPSB1c2VTYXZlZFN0YXRlKGVuZFZhbHVlKTtcblxuICBjb25zdCBbdmlzaWJsZURhdGUsIGRpc3BhdGNoQWN0aW9uXSA9IHVzZVZpc2libGVEYXRlKHN0YXJ0RGF0ZSwgZW5kRGF0ZSk7XG5cbiAgY29uc3QgZm9jdXNUYXJnZXQgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuXG4gIGNvbnN0IHsgYWN0aXZlVGhlbWUgfSA9IHVzZVRoZW1lKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRTdGFydERhdGUocmFuZ2VNb2RlID8gc3RhcnRWYWx1ZSA6IHZhbHVlLCB0cnVlKTtcbiAgICBzZXRFbmREYXRlKGVuZFZhbHVlLCB0cnVlKTtcbiAgfSwgW3ZhbHVlLCBzdGFydFZhbHVlLCBlbmRWYWx1ZSwgcmFuZ2VNb2RlLCBzZXRTdGFydERhdGUsIHNldEVuZERhdGVdKTtcblxuICBjb25zdCBlbmREYXRlSXNTZXQgPSB1c2VSZWYoZmFsc2UpO1xuICBlbmREYXRlSXNTZXQuY3VycmVudCA9IGVuZERhdGUgIT0gbnVsbDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzdGFydERhdGUgIT0gbnVsbCkge1xuICAgICAgZGlzcGF0Y2hBY3Rpb24oe1xuICAgICAgICB0eXBlOiBcIm1vbnRoX3llYXJcIixcbiAgICAgICAgdGFyZ2V0OiBlbmREYXRlSXNTZXQuY3VycmVudCA/IFwibGVmdFwiIDogXCJiZXN0XCIsXG4gICAgICAgIHllYXI6IHN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICBtb250aDogc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxLFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbZGlzcGF0Y2hBY3Rpb24sIHN0YXJ0RGF0ZV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGVuZERhdGUgIT0gbnVsbCkge1xuICAgICAgZGlzcGF0Y2hBY3Rpb24oe1xuICAgICAgICB0eXBlOiBcIm1vbnRoX3llYXJcIixcbiAgICAgICAgdGFyZ2V0OiBcInJpZ2h0XCIsXG4gICAgICAgIHllYXI6IGVuZERhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgbW9udGg6IGVuZERhdGUuZ2V0TW9udGgoKSArIDEsXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtkaXNwYXRjaEFjdGlvbiwgZW5kRGF0ZV0pO1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBgQXBwbHlgIGFjdGlvbi4gQm90aCBzaW5nbGUgYW5kIHJhbmdlZCBtb2RlcyBhcmUgaGFuZGxlZCBoZXJlLlxuICAgKi9cbiAgY29uc3QgaGFuZGxlQXBwbHkgPSAoKSA9PiB7XG4gICAgc2V0U3RhcnREYXRlKHN0YXJ0RGF0ZSwgdHJ1ZSk7XG4gICAgc2V0RW5kRGF0ZShlbmREYXRlID8/IHN0YXJ0RGF0ZSwgdHJ1ZSk7XG5cbiAgICBvbkNoYW5nZT8uKHN0YXJ0RGF0ZSwgZW5kRGF0ZSk7XG5cbiAgICBzZXRWYWxpZGF0aW9uU3RhdGUoKCkgPT4ge1xuICAgICAgLy8gdGhpcyB3aWxsIG9ubHkgcnVuIGlmIHN0YXR1cyBpcyB1bmNvbnRyb2xsZWRcbiAgICAgIGlmIChyZXF1aXJlZCAmJiAoIWlzRGF0ZShzdGFydERhdGUpIHx8IChyYW5nZU1vZGUgJiYgIWlzRGF0ZShlbmREYXRlKSkpKSB7XG4gICAgICAgIHJldHVybiBcImludmFsaWRcIjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFwidmFsaWRcIjtcbiAgICB9KTtcblxuICAgIHNldENhbGVuZGFyT3BlbihmYWxzZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGBDYW5jZWxgIGFjdGlvbi4gQm90aCBzaW5nbGUgYW5kIHJhbmdlZCBtb2RlcyBhcmUgaGFuZGxlZCBoZXJlLlxuICAgKi9cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIHJvbGxiYWNrU3RhcnREYXRlKCk7XG4gICAgcm9sbGJhY2tFbmREYXRlKCk7XG5cbiAgICBvbkNhbmNlbD8uKCk7XG5cbiAgICBzZXRDYWxlbmRhck9wZW4oZmFsc2UpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBgQ2FuY2VsYCBhY3Rpb24uIEJvdGggc2luZ2xlIGFuZCByYW5nZWQgbW9kZXMgYXJlIGhhbmRsZWQgaGVyZS5cbiAgICovXG4gIGNvbnN0IGhhbmRsZUNsZWFyID0gKCkgPT4ge1xuICAgIHNldFN0YXJ0RGF0ZSh1bmRlZmluZWQsIGZhbHNlKTtcbiAgICBzZXRFbmREYXRlKHVuZGVmaW5lZCwgZmFsc2UpO1xuICAgIG9uQ2xlYXI/LigpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNhbGVuZGFyQ2xvc2UgPSAoKSA9PiB7XG4gICAgY29uc3Qgc2hvdWxkU2F2ZSA9ICEocmFuZ2VNb2RlIHx8IHNob3dBY3Rpb25zKTtcbiAgICBpZiAoc2hvdWxkU2F2ZSkge1xuICAgICAgaGFuZGxlQXBwbHkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGFuZGxlQ2FuY2VsKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZTogSHZCYXNlRHJvcGRvd25Qcm9wc1tcIm9uVG9nZ2xlXCJdID0gKGV2dCwgb3BlbikgPT4ge1xuICAgIC8qIFxuICAgICBJZiBldnQgaXMgbnVsbCB0aGlzIHRvZ2dsZSB3YXNuJ3QgdHJpZ2dlcmVkIGJ5IHRoZSB1c2VyLlxuICAgICBpbnN0ZWFkIGl0IHdhcyB0cmlnZ2VyZWQgYnkgdGhlIGJhc2VEcm9wZG93biB1c2VFZmZlY3QgYWZ0ZXJcbiAgICAgdGhlIGRhdGVwaWNrZXIgY2hhbmdlZCB0aGUgZXhwYW5kZWQgdmFsdWUgdGhpcyBiYXNlRHJvcGRvd24gYmVoYXZpb3IgbmVlZHMgYSByZXZpZXdcbiAgICAqL1xuICAgIGlmIChldnQgPT09IG51bGwpIHJldHVybjtcbiAgICBvblRvZ2dsZT8uKGV2dCwgb3Blbik7XG4gICAgc2V0Q2FsZW5kYXJPcGVuKG9wZW4pO1xuICAgIGlmICghb3BlbikgaGFuZGxlQ2FsZW5kYXJDbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IGZvY3VzT25Db250YWluZXIgPSAoKSA9PiB7XG4gICAgZm9jdXNUYXJnZXQuY3VycmVudD8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVEYXRlQ2hhbmdlOiBIdkNhbGVuZGFyUHJvcHNbXCJvbkNoYW5nZVwiXSA9IChldmVudCwgbmV3RGF0ZSkgPT4ge1xuICAgIGlmICghaXNEYXRlKG5ld0RhdGUpKSByZXR1cm47XG5cbiAgICBjb25zdCBhdXRvU2F2ZSA9ICFzaG93QWN0aW9ucyAmJiAhcmFuZ2VNb2RlO1xuXG4gICAgaWYgKHJhbmdlTW9kZSkge1xuICAgICAgaWYgKCFzdGFydERhdGUgfHwgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB8fCBuZXdEYXRlIDwgc3RhcnREYXRlKSB7XG4gICAgICAgIHNldFN0YXJ0RGF0ZShuZXdEYXRlKTtcbiAgICAgICAgc2V0RW5kRGF0ZSh1bmRlZmluZWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RW5kRGF0ZShuZXdEYXRlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2V0U3RhcnREYXRlKG5ld0RhdGUsIGF1dG9TYXZlKTtcbiAgICB9XG5cbiAgICBpZiAoYXV0b1NhdmUpIHtcbiAgICAgIG9uQ2hhbmdlPy4obmV3RGF0ZSk7XG5cbiAgICAgIHNldFZhbGlkYXRpb25TdGF0ZSgoKSA9PiB7XG4gICAgICAgIC8vIHRoaXMgd2lsbCBvbmx5IHJ1biBpZiBzdGF0dXMgaXMgdW5jb250cm9sbGVkXG4gICAgICAgIGlmIChyZXF1aXJlZCAmJiAhaXNEYXRlKG5ld0RhdGUpKSB7XG4gICAgICAgICAgcmV0dXJuIFwiaW52YWxpZFwiO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFwidmFsaWRcIjtcbiAgICAgIH0pO1xuXG4gICAgICBzZXRDYWxlbmRhck9wZW4oZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVJbnB1dERhdGVDaGFuZ2U6IEh2Q2FsZW5kYXJQcm9wc1tcIm9uSW5wdXRDaGFuZ2VcIl0gPSAoXG4gICAgZXZlbnQsXG4gICAgbmV3RGF0ZSxcbiAgICBwb3NpdGlvblxuICApID0+IHtcbiAgICBpZiAoIWlzRGF0ZShuZXdEYXRlKSkgcmV0dXJuO1xuXG4gICAgaWYgKCFyYW5nZU1vZGUpIHtcbiAgICAgIGhhbmRsZURhdGVDaGFuZ2UoZXZlbnQgYXMgYW55LCBuZXdEYXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAocG9zaXRpb24gPT09IFwibGVmdFwiKSB7XG4gICAgICBpZiAoZW5kRGF0ZSkgc2V0U3RhcnREYXRlKG5ld0RhdGUgPiBlbmREYXRlID8gZW5kRGF0ZSA6IG5ld0RhdGUpO1xuICAgIH0gZWxzZSBpZiAocG9zaXRpb24gPT09IFwicmlnaHRcIikge1xuICAgICAgaWYgKCFzdGFydERhdGUpIHtcbiAgICAgICAgaWYgKGVuZERhdGUpIHNldFN0YXJ0RGF0ZShuZXdEYXRlID4gZW5kRGF0ZSA/IGVuZERhdGUgOiBuZXdEYXRlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc2V0RW5kRGF0ZShuZXdEYXRlIDwgc3RhcnREYXRlID8gc3RhcnREYXRlIDogbmV3RGF0ZSk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBjb250YWluZXIgZm9yIHRoZSBhY3Rpb24gZWxlbWVudHMuXG4gICAqL1xuICBjb25zdCByZW5kZXJBY3Rpb25zID0gKCkgPT4gKFxuICAgIDxIdkFjdGlvbkJhciBjbGFzc05hbWU9e2N4KHsgW2NsYXNzZXMuYWN0aW9uQ29udGFpbmVyXTogc2hvd0NsZWFyIH0pfT5cbiAgICAgIHtzaG93Q2xlYXIgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5sZWZ0Q29udGFpbmVyfT5cbiAgICAgICAgICA8SHZCdXR0b25cbiAgICAgICAgICAgIGlkPXtzZXRJZChpZCwgXCJhY3Rpb25cIiwgXCJjbGVhclwiKX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5hY3Rpb259XG4gICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeUdob3N0XCJcbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsZWFyfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtsYWJlbHM/LmNsZWFyTGFiZWx9XG4gICAgICAgICAgPC9IdkJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMucmlnaHRDb250YWluZXJ9PlxuICAgICAgICA8SHZCdXR0b25cbiAgICAgICAgICBpZD17c2V0SWQoaWQsIFwiYWN0aW9uXCIsIFwiYXBwbHlcIil9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmFjdGlvbn1cbiAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeUdob3N0XCJcbiAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVBcHBseX1cbiAgICAgICAgPlxuICAgICAgICAgIHtsYWJlbHM/LmFwcGx5TGFiZWx9XG4gICAgICAgIDwvSHZCdXR0b24+XG4gICAgICAgIDxIdkJ1dHRvblxuICAgICAgICAgIGlkPXtzZXRJZChpZCwgXCJhY3Rpb25cIiwgXCJjYW5jZWxcIil9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmFjdGlvbn1cbiAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeUdob3N0XCJcbiAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWxzPy5jYW5jZWxMYWJlbH1cbiAgICAgICAgPC9IdkJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvSHZBY3Rpb25CYXI+XG4gICk7XG5cbiAgY29uc3Qgc3R5bGVkVHlwb2dyYXBoeSA9IChcbiAgICBkYXRlU3RyaW5nOiBzdHJpbmcsXG4gICAgdmFyaWFudDogYW55LFxuICAgIHRleHQ6IFJlYWN0Tm9kZVxuICApID0+IHtcbiAgICBjb25zdCBTdHlsZWRUeXBvZ3JhcGh5ID0gc3R5bGVkKEh2VHlwb2dyYXBoeSkoe1xuICAgICAgY29sb3I6IGRhdGVTdHJpbmdcbiAgICAgICAgPyB0aGVtZS5jb2xvcnMuc2Vjb25kYXJ5XG4gICAgICAgIDogdGhlbWUuZGF0ZVBpY2tlci5kcm9wZG93blBsYWNlaG9sZGVyQ29sb3IsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gPFN0eWxlZFR5cG9ncmFwaHkgdmFyaWFudD17dmFyaWFudH0+e3RleHR9PC9TdHlsZWRUeXBvZ3JhcGh5PjtcbiAgfTtcblxuICBjb25zdCByZW5kZXJJbnB1dCA9IChkYXRlU3RyaW5nOiBzdHJpbmcpID0+XG4gICAgc3R5bGVkVHlwb2dyYXBoeShcbiAgICAgIGRhdGVTdHJpbmcsXG4gICAgICBhY3RpdmVUaGVtZT8uZGF0ZVBpY2tlci5wbGFjZWhvbGRlclZhcmlhbnQsXG4gICAgICAoZGF0ZVN0cmluZyB8fCBwbGFjZWhvbGRlcikgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBkYXRlU3RyaW5nIHx8IHBsYWNlaG9sZGVyXG4gICAgKTtcblxuICBjb25zdCBkYXRlVmFsdWUgPSByYW5nZU1vZGUgPyB7IHN0YXJ0RGF0ZSwgZW5kRGF0ZSB9IDogc3RhcnREYXRlO1xuXG4gIGNvbnN0IGhhc0xhYmVsID0gbGFiZWwgIT0gbnVsbDtcbiAgY29uc3QgaGFzRGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbiAhPSBudWxsO1xuXG4gIC8vIHRoZSBlcnJvciBtZXNzYWdlIGFyZWEgd2lsbCBvbmx5IGJlIGNyZWF0ZWQgaWY6XG4gIC8vIC0gYW4gZXh0ZXJuYWwgZWxlbWVudCB0aGF0IHByb3ZpZGVzIGFuIGVycm9yIG1lc3NhZ2UgaXNuJ3QgaWRlbnRpZmllZCB2aWEgYXJpYS1lcnJvcm1lc3NhZ2UgQU5EXG4gIC8vICAgLSBib3RoIHN0YXR1cyBhbmQgc3RhdHVzTWVzc2FnZSBwcm9wZXJ0aWVzIGFyZSBiZWluZyBjb250cm9sbGVkIE9SXG4gIC8vICAgLSBzdGF0dXMgaXMgdW5jb250cm9sbGVkIGFuZCByZXF1aXJlZCBpcyB0cnVlXG4gIGNvbnN0IGNhblNob3dFcnJvciA9XG4gICAgYXJpYUVycm9yTWVzc2FnZSA9PSBudWxsICYmXG4gICAgKChzdGF0dXMgIT09IHVuZGVmaW5lZCAmJiBzdGF0dXNNZXNzYWdlICE9PSB1bmRlZmluZWQpIHx8XG4gICAgICAoc3RhdHVzID09PSB1bmRlZmluZWQgJiYgcmVxdWlyZWQpKTtcblxuICBjb25zdCBpc1N0YXRlSW52YWxpZCA9IGlzSW52YWxpZCh2YWxpZGF0aW9uU3RhdGUpO1xuXG4gIGxldCBlcnJvck1lc3NhZ2VJZDtcbiAgaWYgKGlzU3RhdGVJbnZhbGlkKSB7XG4gICAgZXJyb3JNZXNzYWdlSWQgPSBjYW5TaG93RXJyb3JcbiAgICAgID8gc2V0SWQoZWxlbWVudElkLCBcImVycm9yXCIpXG4gICAgICA6IGFyaWFFcnJvck1lc3NhZ2U7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxIdkZvcm1FbGVtZW50XG4gICAgICBpZD17aWR9XG4gICAgICBuYW1lPXtuYW1lfVxuICAgICAgdmFsdWU9e2RhdGVWYWx1ZX1cbiAgICAgIHN0YXR1cz17dmFsaWRhdGlvblN0YXRlfVxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgcmVxdWlyZWQ9e3JlcXVpcmVkfVxuICAgICAgY2xhc3NOYW1lPXtjeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSl9XG4gICAgICByZWFkT25seT17cmVhZE9ubHl9XG4gICAgICB7Li4ub3RoZXJzfVxuICAgID5cbiAgICAgIHsoaGFzTGFiZWwgfHwgaGFzRGVzY3JpcHRpb24pICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMubGFiZWxDb250YWluZXJ9PlxuICAgICAgICAgIHtoYXNMYWJlbCAmJiAoXG4gICAgICAgICAgICA8SHZMYWJlbFxuICAgICAgICAgICAgICBpZD17c2V0SWQoZWxlbWVudElkLCBcImxhYmVsXCIpfVxuICAgICAgICAgICAgICBsYWJlbD17bGFiZWx9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHtoYXNEZXNjcmlwdGlvbiAmJiAoXG4gICAgICAgICAgICA8SHZJbmZvTWVzc2FnZVxuICAgICAgICAgICAgICBpZD17c2V0SWQoZWxlbWVudElkLCBcImRlc2NyaXB0aW9uXCIpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuZGVzY3JpcHRpb259XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtkZXNjcmlwdGlvbn1cbiAgICAgICAgICAgIDwvSHZJbmZvTWVzc2FnZT5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgICA8SHZCYXNlRHJvcGRvd25cbiAgICAgICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICAgICAgY2xhc3Nlcz17e1xuICAgICAgICAgIHJvb3Q6IGNsYXNzZXMuZHJvcGRvd24sXG4gICAgICAgICAgcGFuZWw6IGNsYXNzZXMucGFuZWwsXG4gICAgICAgICAgaGVhZGVyOiBjeCh7IFtjbGFzc2VzLmRyb3Bkb3duSGVhZGVySW52YWxpZF06IGlzU3RhdGVJbnZhbGlkIH0pLFxuICAgICAgICAgIGhlYWRlck9wZW46IGNsYXNzZXMuZHJvcGRvd25IZWFkZXJPcGVuLFxuICAgICAgICB9fVxuICAgICAgICByZWFkT25seT17cmVhZE9ubHl9XG4gICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgZGlzYWJsZVBvcnRhbD17ZGlzYWJsZVBvcnRhbH1cbiAgICAgICAgdmFyaWFibGVXaWR0aFxuICAgICAgICBwbGFjZW1lbnQ9e2hvcml6b250YWxQbGFjZW1lbnR9XG4gICAgICAgIGV4cGFuZGVkPXtjYWxlbmRhck9wZW59XG4gICAgICAgIG9uVG9nZ2xlPXtoYW5kbGVUb2dnbGV9XG4gICAgICAgIG9uQ2xpY2tPdXRzaWRlPXtoYW5kbGVDYWxlbmRhckNsb3NlfVxuICAgICAgICBvbkNvbnRhaW5lckNyZWF0aW9uPXtmb2N1c09uQ29udGFpbmVyfVxuICAgICAgICBwbGFjZWhvbGRlcj17cmVuZGVySW5wdXQoZ2V0RGF0ZUxhYmVsKGRhdGVWYWx1ZSwgcmFuZ2VNb2RlLCBsb2NhbGUpKX1cbiAgICAgICAgYWRvcm5tZW50PXtcbiAgICAgICAgICA8Q2FsZW5kYXJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5pY29ufVxuICAgICAgICAgICAgY29sb3I9e2Rpc2FibGVkID8gXCJzZWNvbmRhcnlfODBcIiA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIHBvcHBlclByb3BzPXt7XG4gICAgICAgICAgbW9kaWZpZXJzOiBbXG4gICAgICAgICAgICB7IG5hbWU6IFwicHJldmVudE92ZXJmbG93XCIsIGVuYWJsZWQ6IGVzY2FwZVdpdGhSZWZlcmVuY2UgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9fVxuICAgICAgICBhcmlhLWhhc3BvcHVwPVwiZGlhbG9nXCJcbiAgICAgICAgYXJpYS1sYWJlbD17YXJpYUxhYmVsfVxuICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e1xuICAgICAgICAgIFtsYWJlbCAmJiBzZXRJZChlbGVtZW50SWQsIFwibGFiZWxcIiksIGFyaWFMYWJlbGxlZEJ5XVxuICAgICAgICAgICAgLmpvaW4oXCIgXCIpXG4gICAgICAgICAgICAudHJpbSgpIHx8IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgICAgIGFyaWEtaW52YWxpZD17aXNTdGF0ZUludmFsaWQgPyB0cnVlIDogdW5kZWZpbmVkfVxuICAgICAgICBhcmlhLWVycm9ybWVzc2FnZT17ZXJyb3JNZXNzYWdlSWR9XG4gICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9e1xuICAgICAgICAgIFtkZXNjcmlwdGlvbiAmJiBzZXRJZChlbGVtZW50SWQsIFwiZGVzY3JpcHRpb25cIiksIGFyaWFEZXNjcmliZWRCeV1cbiAgICAgICAgICAgIC5qb2luKFwiIFwiKVxuICAgICAgICAgICAgLnRyaW0oKSB8fCB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICB7Li4uZHJvcGRvd25Qcm9wc31cbiAgICAgID5cbiAgICAgICAgPGRpdiByZWY9e2ZvY3VzVGFyZ2V0fSB0YWJJbmRleD17LTF9IC8+XG4gICAgICAgIDxIdkNhbGVuZGFyXG4gICAgICAgICAgaWQ9e3NldElkKGlkLCBcImNhbGVuZGFyXCIpfVxuICAgICAgICAgIHN0YXJ0QWRvcm5tZW50PXtzdGFydEFkb3JubWVudH1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlRGF0ZUNoYW5nZX1cbiAgICAgICAgICBvbklucHV0Q2hhbmdlPXtoYW5kbGVJbnB1dERhdGVDaGFuZ2V9XG4gICAgICAgICAgb25WaXNpYmxlRGF0ZUNoYW5nZT17KF9ldmVudCwgdHlwZSwgbW9udGgsIHRhcmdldCkgPT4ge1xuICAgICAgICAgICAgZGlzcGF0Y2hBY3Rpb24oeyB0eXBlLCB0YXJnZXQsIG1vbnRoIH0pO1xuICAgICAgICAgIH19XG4gICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgey4uLnZpc2libGVEYXRlfVxuICAgICAgICAgIHsuLi5jYWxlbmRhclByb3BzfVxuICAgICAgICAgIGludmFsaWREYXRlTGFiZWw9e2xhYmVscz8uaW52YWxpZERhdGVMYWJlbH1cbiAgICAgICAgLz5cbiAgICAgICAgeyhyYW5nZU1vZGUgfHwgc2hvd0FjdGlvbnMpICYmIHJlbmRlckFjdGlvbnMoKX1cbiAgICAgIDwvSHZCYXNlRHJvcGRvd24+XG4gICAgICB7Y2FuU2hvd0Vycm9yICYmIChcbiAgICAgICAgPEh2V2FybmluZ1RleHRcbiAgICAgICAgICBpZD17c2V0SWQoZWxlbWVudElkLCBcImVycm9yXCIpfVxuICAgICAgICAgIGRpc2FibGVCb3JkZXJcbiAgICAgICAgICBjbGFzc05hbWU9e2N4KGNsYXNzZXMuZXJyb3IpfVxuICAgICAgICA+XG4gICAgICAgICAge3ZhbGlkYXRpb25NZXNzYWdlfVxuICAgICAgICA8L0h2V2FybmluZ1RleHQ+XG4gICAgICApfVxuICAgIDwvSHZGb3JtRWxlbWVudD5cbiAgKTtcbn07XG4iXX0= */");
221
225
  return /* @__PURE__ */ jsxRuntime.jsx(StyledTypography, { variant, children: text });
222
226
  };
223
227
  const renderInput = (dateString) => styledTypography(dateString, activeTheme == null ? void 0 : activeTheme.datePicker.placeholderVariant, (dateString || placeholder) === void 0 ? "" : dateString || placeholder);
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.cjs","sources":["../../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import { useState, useEffect, useRef, ReactNode } from \"react\";\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\n\nimport styled from \"@emotion/styled\";\n\nimport { Calendar } from \"@hitachivantara/uikit-react-icons\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { useControlled } from \"@core/hooks/useControlled\";\nimport { useUniqueId } from \"@core/hooks/useUniqueId\";\nimport { useLabels } from \"@core/hooks/useLabels\";\nimport { useTheme } from \"@core/hooks/useTheme\";\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { setId } from \"@core/utils/setId\";\nimport { useSavedState } from \"@core/utils/useSavedState\";\nimport {\n isInvalid,\n HvLabel,\n HvFormStatus,\n HvWarningText,\n HvFormElement,\n HvInfoMessage,\n} from \"@core/components/Forms\";\nimport { isDate } from \"@core/components/Calendar/utils\";\nimport { HvCalendar, HvCalendarProps } from \"@core/components/Calendar\";\nimport {\n HvBaseDropdown,\n HvBaseDropdownProps,\n} from \"@core/components/BaseDropdown\";\nimport { HvTypography } from \"@core/components/Typography\";\nimport { HvActionBar } from \"@core/components/ActionBar\";\nimport { HvButton } from \"@core/components/Button\";\n\nimport { getDateLabel } from \"./utils\";\nimport useVisibleDate from \"./useVisibleDate\";\nimport { staticClasses, useClasses } from \"./DatePicker.styles\";\n\nexport { staticClasses as datePickerClasses };\n\nexport type HvDatePickerClasses = ExtractNames<typeof useClasses>;\n\nconst DEFAULT_LABELS = {\n applyLabel: \"Apply\",\n cancelLabel: \"Cancel\",\n clearLabel: \"Clear\",\n invalidLabel: \"Invalid date\",\n};\n\n/** @deprecated use `HvFormStatus` instead */\nexport type HvDatePickerStatus = HvFormStatus;\n\nexport interface HvDatePickerProps\n extends HvBaseProps<HTMLDivElement, \"onChange\"> {\n /**\n * The form element name.\n */\n name?: string;\n /**\n * The label of the form element.\n *\n * The form element must be labeled for accessibility reasons.\n * If not provided, an aria-label or aria-labelledby must be provided instead.\n */\n label?: React.ReactNode;\n /**\n * Provide additional descriptive text for the form element.\n */\n description?: React.ReactNode;\n /**\n * The placeholder value when nothing is selected.\n */\n placeholder?: string;\n /**\n * Indicates that the form element is disabled.\n */\n disabled?: boolean;\n /**\n * Indicates that user input is required on the form element.\n */\n required?: boolean;\n /**\n * The status of the form element.\n *\n * Valid is correct, invalid is incorrect and standBy means no validations have run.\n *\n * When uncontrolled and unspecified it will default to \"standBy\" and change to either \"valid\"\n * or \"invalid\" after any change to the state.\n */\n status?: HvFormStatus;\n /**\n * The error message to show when the validation status is \"invalid\".\n *\n * Defaults to \"Required\" when the status is uncontrolled and no `aria-errormessage` is provided.\n */\n statusMessage?: React.ReactNode;\n /**\n * Identifies the element that provides an error message for the date picker.\n *\n * Will only be used when the validation status is invalid.\n */\n \"aria-errormessage\"?: string;\n /**\n * The callback fired when the value changes.\n */\n onChange?: (date?: Date, endDate?: Date) => void;\n /**\n * The callback fired when user clicks on cancel.\n */\n onCancel?: () => void;\n /**\n * The callback fired when user clicks on clear.\n */\n onClear?: () => void;\n /**\n * An object containing all the labels for the datepicker.\n */\n labels?: {\n /**\n * Apply button label.\n */\n applyLabel?: string;\n /**\n * Cancel button label.\n */\n cancelLabel?: string;\n /**\n * Clear button label.\n */\n clearLabel?: string;\n /**\n * Invalid Date label.\n */\n invalidDateLabel?: string;\n };\n /**\n * The initial value of the input when in single calendar mode.\n */\n value?: Date;\n /**\n * The initial value for the start date when in range mode.\n */\n startValue?: Date;\n /**\n * The initial value for the end date when in range mode.\n */\n endValue?: Date;\n /**\n * Flag informing if the the component should be in range mode or in single mode.\n * TODO: remove this in favour of discriminated union\n */\n rangeMode?: boolean;\n /**\n * The placement where the calendar should be placed according to the input. Options are `left` or `right`.\n * Note this prop only affects the calendar when in `rangeMode`.\n */\n horizontalPlacement?: \"left\" | \"right\";\n /**\n * The calendar locale. If undefined, it uses calendar default\n */\n locale?: string;\n /**\n * Controls if actions buttons are visible at the calendar.\n */\n showActions?: boolean;\n /**\n * Controls if clear button is visible at the calendar,\n * only works if showing actions or in range mode.\n */\n showClear?: boolean;\n /**\n * Disable the portal behavior. The children stay within it's parent DOM hierarchy.\n */\n disablePortal?: boolean;\n /**\n * Sets if the calendar container should follow the date picker input out of the screen or stay visible.\n */\n escapeWithReference?: boolean;\n /**\n * An element placed before the Calendar\n */\n startAdornment?: React.ReactNode;\n /**\n * An object containing props to be passed onto the baseDropdown.\n */\n dropdownProps?: Object;\n /**\n * If `true` the DatePicker will be in read only mode, unable to be interacted.\n */\n readOnly?: boolean;\n /**\n * Additional props passed to the HvCalendar component.\n */\n calendarProps?: Partial<HvCalendarProps>;\n /**\n * A Jss Object used to override or extend the component styles applied.\n */\n classes?: HvDatePickerClasses;\n}\n\n/**\n * A date picker, popup calendar or date range picker is a graphical user\n * interface widget which allows the user to select a date from a calendar.\n */\nexport const HvDatePicker = (props: HvDatePickerProps) => {\n const {\n classes: classesProp,\n className,\n\n id,\n name,\n\n required = false,\n disabled = false,\n readOnly,\n\n label,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n description,\n \"aria-describedby\": ariaDescribedBy,\n\n onChange,\n onCancel,\n onClear,\n status,\n statusMessage,\n \"aria-errormessage\": ariaErrorMessage,\n\n placeholder,\n\n labels: labelsProp,\n\n value,\n startValue,\n endValue,\n\n rangeMode = false,\n startAdornment,\n horizontalPlacement = \"right\",\n locale: localeProp,\n showActions = false,\n showClear = false,\n disablePortal = true,\n escapeWithReference = true,\n dropdownProps,\n calendarProps,\n ...others\n } = useDefaultProps(\"HvDatePicker\", props);\n\n const { classes, cx } = useClasses(classesProp);\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n\n const elementId = useUniqueId(id, \"hvdatepicker\");\n\n const [validationState, setValidationState] = useControlled(\n status,\n \"standBy\"\n );\n\n const [validationMessage] = useControlled(statusMessage, \"Required\");\n\n const locale = localeProp || \"en-US\";\n\n const [calendarOpen, setCalendarOpen] = useState(false);\n\n const [startDate, setStartDate, rollbackStartDate] = useSavedState(\n rangeMode ? startValue : value\n );\n const [endDate, setEndDate, rollbackEndDate] = useSavedState(endValue);\n\n const [visibleDate, dispatchAction] = useVisibleDate(startDate, endDate);\n\n const focusTarget = useRef<HTMLDivElement>(null);\n\n const { activeTheme } = useTheme();\n\n useEffect(() => {\n setStartDate(rangeMode ? startValue : value, true);\n setEndDate(endValue, true);\n }, [value, startValue, endValue, rangeMode, setStartDate, setEndDate]);\n\n const endDateIsSet = useRef(false);\n endDateIsSet.current = endDate != null;\n\n useEffect(() => {\n if (startDate != null) {\n dispatchAction({\n type: \"month_year\",\n target: endDateIsSet.current ? \"left\" : \"best\",\n year: startDate.getFullYear(),\n month: startDate.getMonth() + 1,\n });\n }\n }, [dispatchAction, startDate]);\n\n useEffect(() => {\n if (endDate != null) {\n dispatchAction({\n type: \"month_year\",\n target: \"right\",\n year: endDate.getFullYear(),\n month: endDate.getMonth() + 1,\n });\n }\n }, [dispatchAction, endDate]);\n\n /**\n * Handles the `Apply` action. Both single and ranged modes are handled here.\n */\n const handleApply = () => {\n setStartDate(startDate, true);\n setEndDate(endDate ?? startDate, true);\n\n onChange?.(startDate, endDate);\n\n setValidationState(() => {\n // this will only run if status is uncontrolled\n if (required && (!isDate(startDate) || (rangeMode && !isDate(endDate)))) {\n return \"invalid\";\n }\n\n return \"valid\";\n });\n\n setCalendarOpen(false);\n };\n\n /**\n * Handles the `Cancel` action. Both single and ranged modes are handled here.\n */\n const handleCancel = () => {\n rollbackStartDate();\n rollbackEndDate();\n\n onCancel?.();\n\n setCalendarOpen(false);\n };\n\n /**\n * Handles the `Cancel` action. Both single and ranged modes are handled here.\n */\n const handleClear = () => {\n setStartDate(undefined, false);\n setEndDate(undefined, false);\n onClear?.();\n };\n\n const handleCalendarClose = () => {\n const shouldSave = !(rangeMode || showActions);\n if (shouldSave) {\n handleApply();\n } else {\n handleCancel();\n }\n };\n\n const handleToggle: HvBaseDropdownProps[\"onToggle\"] = (evt, open) => {\n /* \n If evt is null this toggle wasn't triggered by the user.\n instead it was triggered by the baseDropdown useEffect after\n the datepicker changed the expanded value this baseDropdown behavior needs a review\n */\n if (evt === null) return;\n setCalendarOpen(open);\n if (!open) handleCalendarClose();\n };\n\n const focusOnContainer = () => {\n focusTarget.current?.focus();\n };\n\n const handleDateChange: HvCalendarProps[\"onChange\"] = (event, newDate) => {\n if (!isDate(newDate)) return;\n\n const autoSave = !showActions && !rangeMode;\n\n if (rangeMode) {\n if (!startDate || (startDate && endDate) || newDate < startDate) {\n setStartDate(newDate);\n setEndDate(undefined);\n } else {\n setEndDate(newDate);\n }\n } else {\n setStartDate(newDate, autoSave);\n }\n\n if (autoSave) {\n onChange?.(newDate);\n\n setValidationState(() => {\n // this will only run if status is uncontrolled\n if (required && !isDate(newDate)) {\n return \"invalid\";\n }\n\n return \"valid\";\n });\n\n setCalendarOpen(false);\n }\n };\n\n const handleInputDateChange: HvCalendarProps[\"onInputChange\"] = (\n event,\n newDate,\n position\n ) => {\n if (!isDate(newDate)) return;\n\n if (!rangeMode) {\n handleDateChange(event as any, newDate);\n return;\n }\n\n if (position === \"left\") {\n if (endDate) setStartDate(newDate > endDate ? endDate : newDate);\n } else if (position === \"right\") {\n if (!startDate) {\n if (endDate) setStartDate(newDate > endDate ? endDate : newDate);\n return;\n }\n setEndDate(newDate < startDate ? startDate : newDate);\n }\n };\n\n /**\n * Renders the container for the action elements.\n */\n const renderActions = () => (\n <HvActionBar className={cx({ [classes.actionContainer]: showClear })}>\n {showClear && (\n <div className={classes.leftContainer}>\n <HvButton\n id={setId(id, \"action\", \"clear\")}\n className={classes.action}\n variant=\"primaryGhost\"\n onClick={handleClear}\n >\n {labels?.clearLabel}\n </HvButton>\n </div>\n )}\n <div className={classes.rightContainer}>\n <HvButton\n id={setId(id, \"action\", \"apply\")}\n className={classes.action}\n variant=\"primaryGhost\"\n onClick={handleApply}\n >\n {labels?.applyLabel}\n </HvButton>\n <HvButton\n id={setId(id, \"action\", \"cancel\")}\n className={classes.action}\n variant=\"primaryGhost\"\n onClick={handleCancel}\n >\n {labels?.cancelLabel}\n </HvButton>\n </div>\n </HvActionBar>\n );\n\n const styledTypography = (\n dateString: string,\n variant: any,\n text: ReactNode\n ) => {\n const StyledTypography = styled(HvTypography)({\n color: dateString\n ? theme.colors.secondary\n : theme.datePicker.dropdownPlaceholderColor,\n });\n\n return <StyledTypography variant={variant}>{text}</StyledTypography>;\n };\n\n const renderInput = (dateString: string) =>\n styledTypography(\n dateString,\n activeTheme?.datePicker.placeholderVariant,\n (dateString || placeholder) === undefined ? \"\" : dateString || placeholder\n );\n\n const dateValue = rangeMode ? { startDate, endDate } : startDate;\n\n const hasLabel = label != null;\n const hasDescription = description != null;\n\n // the error message area will only be created if:\n // - an external element that provides an error message isn't identified via aria-errormessage AND\n // - both status and statusMessage properties are being controlled OR\n // - status is uncontrolled and required is true\n const canShowError =\n ariaErrorMessage == null &&\n ((status !== undefined && statusMessage !== undefined) ||\n (status === undefined && required));\n\n const isStateInvalid = isInvalid(validationState);\n\n let errorMessageId;\n if (isStateInvalid) {\n errorMessageId = canShowError\n ? setId(elementId, \"error\")\n : ariaErrorMessage;\n }\n\n return (\n <HvFormElement\n id={id}\n name={name}\n value={dateValue}\n status={validationState}\n disabled={disabled}\n required={required}\n className={cx(classes.root, className)}\n readOnly={readOnly}\n {...others}\n >\n {(hasLabel || hasDescription) && (\n <div className={classes.labelContainer}>\n {hasLabel && (\n <HvLabel\n id={setId(elementId, \"label\")}\n label={label}\n className={classes.label}\n />\n )}\n\n {hasDescription && (\n <HvInfoMessage\n id={setId(elementId, \"description\")}\n className={classes.description}\n >\n {description}\n </HvInfoMessage>\n )}\n </div>\n )}\n <HvBaseDropdown\n role=\"combobox\"\n classes={{\n root: classes.dropdown,\n panel: classes.panel,\n header: cx({ [classes.dropdownHeaderInvalid]: isStateInvalid }),\n headerOpen: classes.dropdownHeaderOpen,\n }}\n readOnly={readOnly}\n disabled={disabled}\n disablePortal={disablePortal}\n variableWidth\n placement={horizontalPlacement}\n expanded={calendarOpen}\n onToggle={handleToggle}\n onClickOutside={handleCalendarClose}\n onContainerCreation={focusOnContainer}\n placeholder={renderInput(getDateLabel(dateValue, rangeMode, locale))}\n adornment={\n <Calendar\n className={classes.icon}\n color={disabled ? \"secondary_80\" : undefined}\n />\n }\n popperProps={{\n modifiers: [\n { name: \"preventOverflow\", enabled: escapeWithReference },\n ],\n }}\n aria-haspopup=\"dialog\"\n aria-label={ariaLabel}\n aria-labelledby={\n [label && setId(elementId, \"label\"), ariaLabelledBy]\n .join(\" \")\n .trim() || undefined\n }\n aria-invalid={isStateInvalid ? true : undefined}\n aria-errormessage={errorMessageId}\n aria-describedby={\n [description && setId(elementId, \"description\"), ariaDescribedBy]\n .join(\" \")\n .trim() || undefined\n }\n {...dropdownProps}\n >\n <div ref={focusTarget} tabIndex={-1} />\n <HvCalendar\n id={setId(id, \"calendar\")}\n startAdornment={startAdornment}\n onChange={handleDateChange}\n onInputChange={handleInputDateChange}\n onVisibleDateChange={(_event, type, month, target) => {\n dispatchAction({ type, target, month });\n }}\n locale={locale}\n {...visibleDate}\n {...calendarProps}\n invalidDateLabel={labels?.invalidDateLabel}\n />\n {(rangeMode || showActions) && renderActions()}\n </HvBaseDropdown>\n {canShowError && (\n <HvWarningText\n id={setId(elementId, \"error\")}\n disableBorder\n className={cx(classes.error)}\n >\n {validationMessage}\n </HvWarningText>\n )}\n </HvFormElement>\n );\n};\n"],"names":["DEFAULT_LABELS","applyLabel","cancelLabel","clearLabel","invalidLabel","HvDatePicker","props","classes","classesProp","className","id","name","required","disabled","readOnly","label","ariaLabel","ariaLabelledBy","description","ariaDescribedBy","onChange","onCancel","onClear","status","statusMessage","ariaErrorMessage","placeholder","labels","labelsProp","value","startValue","endValue","rangeMode","startAdornment","horizontalPlacement","locale","localeProp","showActions","showClear","disablePortal","escapeWithReference","dropdownProps","calendarProps","others","useDefaultProps","cx","useClasses","useLabels","elementId","useUniqueId","validationState","setValidationState","useControlled","validationMessage","calendarOpen","setCalendarOpen","useState","startDate","setStartDate","rollbackStartDate","useSavedState","endDate","setEndDate","rollbackEndDate","visibleDate","dispatchAction","useVisibleDate","focusTarget","useRef","activeTheme","useTheme","useEffect","endDateIsSet","current","type","target","year","getFullYear","month","getMonth","handleApply","isDate","handleCancel","handleClear","undefined","handleCalendarClose","shouldSave","handleToggle","evt","open","focusOnContainer","focus","handleDateChange","event","newDate","autoSave","handleInputDateChange","position","renderActions","jsxs","HvActionBar","actionContainer","jsx","leftContainer","HvButton","setId","action","rightContainer","styledTypography","dateString","variant","text","StyledTypography","HvTypography","process","env","NODE_ENV","color","theme","colors","secondary","datePicker","dropdownPlaceholderColor","renderInput","placeholderVariant","dateValue","hasLabel","hasDescription","canShowError","isStateInvalid","isInvalid","errorMessageId","HvFormElement","root","labelContainer","HvLabel","HvInfoMessage","HvBaseDropdown","dropdown","panel","header","dropdownHeaderInvalid","headerOpen","dropdownHeaderOpen","getDateLabel","Calendar","icon","modifiers","enabled","join","trim","HvCalendar","_event","invalidDateLabel","HvWarningText","error"],"mappings":"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"}
1
+ {"version":3,"file":"DatePicker.cjs","sources":["../../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import { useEffect, useRef, ReactNode } from \"react\";\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\n\nimport styled from \"@emotion/styled\";\n\nimport { Calendar } from \"@hitachivantara/uikit-react-icons\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { useControlled } from \"@core/hooks/useControlled\";\nimport { useUniqueId } from \"@core/hooks/useUniqueId\";\nimport { useLabels } from \"@core/hooks/useLabels\";\nimport { useTheme } from \"@core/hooks/useTheme\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { setId } from \"@core/utils/setId\";\nimport { useSavedState } from \"@core/utils/useSavedState\";\nimport {\n isInvalid,\n HvLabel,\n HvFormStatus,\n HvWarningText,\n HvFormElement,\n HvInfoMessage,\n HvFormElementProps,\n} from \"@core/components/Forms\";\nimport { isDate } from \"@core/components/Calendar/utils\";\nimport { HvCalendar, HvCalendarProps } from \"@core/components/Calendar\";\nimport {\n HvBaseDropdown,\n HvBaseDropdownProps,\n} from \"@core/components/BaseDropdown\";\nimport { HvTypography } from \"@core/components/Typography\";\nimport { HvActionBar } from \"@core/components/ActionBar\";\nimport { HvButton } from \"@core/components/Button\";\n\nimport { getDateLabel } from \"./utils\";\nimport useVisibleDate from \"./useVisibleDate\";\nimport { staticClasses, useClasses } from \"./DatePicker.styles\";\n\nexport { staticClasses as datePickerClasses };\n\nexport type HvDatePickerClasses = ExtractNames<typeof useClasses>;\n\nconst DEFAULT_LABELS = {\n applyLabel: \"Apply\",\n cancelLabel: \"Cancel\",\n clearLabel: \"Clear\",\n invalidLabel: \"Invalid date\",\n};\n\n/** @deprecated use `HvFormStatus` instead */\nexport type HvDatePickerStatus = HvFormStatus;\n\nexport interface HvDatePickerProps\n extends Omit<HvFormElementProps, \"onChange\">,\n Pick<\n HvBaseDropdownProps,\n \"disablePortal\" | \"expanded\" | \"defaultExpanded\" | \"onToggle\"\n > {\n /**\n * Identifies the element that provides an error message for the date picker.\n *\n * Will only be used when the validation status is invalid.\n */\n \"aria-errormessage\"?: string;\n /**\n * The callback fired when the value changes.\n */\n onChange?: (date?: Date, endDate?: Date) => void;\n /**\n * The callback fired when user clicks on cancel.\n */\n onCancel?: () => void;\n /**\n * The callback fired when user clicks on clear.\n */\n onClear?: () => void;\n /**\n * An object containing all the labels for the datepicker.\n */\n labels?: {\n /**\n * Apply button label.\n */\n applyLabel?: string;\n /**\n * Cancel button label.\n */\n cancelLabel?: string;\n /**\n * Clear button label.\n */\n clearLabel?: string;\n /**\n * Invalid Date label.\n */\n invalidDateLabel?: string;\n };\n /**\n * The initial value of the input when in single calendar mode.\n */\n value?: Date;\n /**\n * The initial value for the start date when in range mode.\n */\n startValue?: Date;\n /**\n * The initial value for the end date when in range mode.\n */\n endValue?: Date;\n /**\n * Flag informing if the the component should be in range mode or in single mode.\n */\n // TODO: remove this in favour of discriminated union\n rangeMode?: boolean;\n /**\n * The placement where the calendar should be placed according to the input. Options are `left` or `right`.\n * Note this prop only affects the calendar when in `rangeMode`.\n */\n horizontalPlacement?: \"left\" | \"right\";\n /**\n * The calendar locale. If undefined, it uses calendar default\n */\n locale?: string;\n /**\n * Controls if actions buttons are visible at the calendar.\n */\n showActions?: boolean;\n /**\n * Controls if clear button is visible at the calendar,\n * only works if showing actions or in range mode.\n */\n showClear?: boolean;\n /**\n * Sets if the calendar container should follow the date picker input out of the screen or stay visible.\n */\n escapeWithReference?: boolean;\n /**\n * An element placed before the Calendar\n */\n startAdornment?: React.ReactNode;\n /**\n * An object containing props to be passed onto the baseDropdown.\n */\n dropdownProps?: Partial<HvBaseDropdownProps>;\n /**\n * Additional props passed to the HvCalendar component.\n */\n calendarProps?: Partial<HvCalendarProps>;\n /**\n * A Jss Object used to override or extend the component styles applied.\n */\n classes?: HvDatePickerClasses;\n}\n\n/**\n * A date picker, popup calendar or date range picker is a graphical user\n * interface widget which allows the user to select a date from a calendar.\n */\nexport const HvDatePicker = (props: HvDatePickerProps) => {\n const {\n classes: classesProp,\n className,\n\n id,\n name,\n\n required = false,\n disabled = false,\n readOnly,\n\n label,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n description,\n \"aria-describedby\": ariaDescribedBy,\n\n onChange,\n onCancel,\n onClear,\n status,\n statusMessage,\n \"aria-errormessage\": ariaErrorMessage,\n\n placeholder,\n\n labels: labelsProp,\n\n value,\n startValue,\n endValue,\n\n expanded,\n defaultExpanded,\n onToggle,\n rangeMode = false,\n startAdornment,\n horizontalPlacement = \"right\",\n locale: localeProp,\n showActions = false,\n showClear = false,\n disablePortal = true,\n escapeWithReference = true,\n dropdownProps,\n calendarProps,\n ...others\n } = useDefaultProps(\"HvDatePicker\", props);\n\n const { classes, cx } = useClasses(classesProp);\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n\n const elementId = useUniqueId(id, \"hvdatepicker\");\n\n const [validationState, setValidationState] = useControlled(\n status,\n \"standBy\"\n );\n\n const [validationMessage] = useControlled(statusMessage, \"Required\");\n\n const locale = localeProp || \"en-US\";\n\n const [calendarOpen, setCalendarOpen] = useControlled(\n expanded,\n Boolean(defaultExpanded)\n );\n\n const [startDate, setStartDate, rollbackStartDate] = useSavedState(\n rangeMode ? startValue : value\n );\n const [endDate, setEndDate, rollbackEndDate] = useSavedState(endValue);\n\n const [visibleDate, dispatchAction] = useVisibleDate(startDate, endDate);\n\n const focusTarget = useRef<HTMLDivElement>(null);\n\n const { activeTheme } = useTheme();\n\n useEffect(() => {\n setStartDate(rangeMode ? startValue : value, true);\n setEndDate(endValue, true);\n }, [value, startValue, endValue, rangeMode, setStartDate, setEndDate]);\n\n const endDateIsSet = useRef(false);\n endDateIsSet.current = endDate != null;\n\n useEffect(() => {\n if (startDate != null) {\n dispatchAction({\n type: \"month_year\",\n target: endDateIsSet.current ? \"left\" : \"best\",\n year: startDate.getFullYear(),\n month: startDate.getMonth() + 1,\n });\n }\n }, [dispatchAction, startDate]);\n\n useEffect(() => {\n if (endDate != null) {\n dispatchAction({\n type: \"month_year\",\n target: \"right\",\n year: endDate.getFullYear(),\n month: endDate.getMonth() + 1,\n });\n }\n }, [dispatchAction, endDate]);\n\n /**\n * Handles the `Apply` action. Both single and ranged modes are handled here.\n */\n const handleApply = () => {\n setStartDate(startDate, true);\n setEndDate(endDate ?? startDate, true);\n\n onChange?.(startDate, endDate);\n\n setValidationState(() => {\n // this will only run if status is uncontrolled\n if (required && (!isDate(startDate) || (rangeMode && !isDate(endDate)))) {\n return \"invalid\";\n }\n\n return \"valid\";\n });\n\n setCalendarOpen(false);\n };\n\n /**\n * Handles the `Cancel` action. Both single and ranged modes are handled here.\n */\n const handleCancel = () => {\n rollbackStartDate();\n rollbackEndDate();\n\n onCancel?.();\n\n setCalendarOpen(false);\n };\n\n /**\n * Handles the `Cancel` action. Both single and ranged modes are handled here.\n */\n const handleClear = () => {\n setStartDate(undefined, false);\n setEndDate(undefined, false);\n onClear?.();\n };\n\n const handleCalendarClose = () => {\n const shouldSave = !(rangeMode || showActions);\n if (shouldSave) {\n handleApply();\n } else {\n handleCancel();\n }\n };\n\n const handleToggle: HvBaseDropdownProps[\"onToggle\"] = (evt, open) => {\n /* \n If evt is null this toggle wasn't triggered by the user.\n instead it was triggered by the baseDropdown useEffect after\n the datepicker changed the expanded value this baseDropdown behavior needs a review\n */\n if (evt === null) return;\n onToggle?.(evt, open);\n setCalendarOpen(open);\n if (!open) handleCalendarClose();\n };\n\n const focusOnContainer = () => {\n focusTarget.current?.focus();\n };\n\n const handleDateChange: HvCalendarProps[\"onChange\"] = (event, newDate) => {\n if (!isDate(newDate)) return;\n\n const autoSave = !showActions && !rangeMode;\n\n if (rangeMode) {\n if (!startDate || (startDate && endDate) || newDate < startDate) {\n setStartDate(newDate);\n setEndDate(undefined);\n } else {\n setEndDate(newDate);\n }\n } else {\n setStartDate(newDate, autoSave);\n }\n\n if (autoSave) {\n onChange?.(newDate);\n\n setValidationState(() => {\n // this will only run if status is uncontrolled\n if (required && !isDate(newDate)) {\n return \"invalid\";\n }\n\n return \"valid\";\n });\n\n setCalendarOpen(false);\n }\n };\n\n const handleInputDateChange: HvCalendarProps[\"onInputChange\"] = (\n event,\n newDate,\n position\n ) => {\n if (!isDate(newDate)) return;\n\n if (!rangeMode) {\n handleDateChange(event as any, newDate);\n return;\n }\n\n if (position === \"left\") {\n if (endDate) setStartDate(newDate > endDate ? endDate : newDate);\n } else if (position === \"right\") {\n if (!startDate) {\n if (endDate) setStartDate(newDate > endDate ? endDate : newDate);\n return;\n }\n setEndDate(newDate < startDate ? startDate : newDate);\n }\n };\n\n /**\n * Renders the container for the action elements.\n */\n const renderActions = () => (\n <HvActionBar className={cx({ [classes.actionContainer]: showClear })}>\n {showClear && (\n <div className={classes.leftContainer}>\n <HvButton\n id={setId(id, \"action\", \"clear\")}\n className={classes.action}\n variant=\"primaryGhost\"\n onClick={handleClear}\n >\n {labels?.clearLabel}\n </HvButton>\n </div>\n )}\n <div className={classes.rightContainer}>\n <HvButton\n id={setId(id, \"action\", \"apply\")}\n className={classes.action}\n variant=\"primaryGhost\"\n onClick={handleApply}\n >\n {labels?.applyLabel}\n </HvButton>\n <HvButton\n id={setId(id, \"action\", \"cancel\")}\n className={classes.action}\n variant=\"primaryGhost\"\n onClick={handleCancel}\n >\n {labels?.cancelLabel}\n </HvButton>\n </div>\n </HvActionBar>\n );\n\n const styledTypography = (\n dateString: string,\n variant: any,\n text: ReactNode\n ) => {\n const StyledTypography = styled(HvTypography)({\n color: dateString\n ? theme.colors.secondary\n : theme.datePicker.dropdownPlaceholderColor,\n });\n\n return <StyledTypography variant={variant}>{text}</StyledTypography>;\n };\n\n const renderInput = (dateString: string) =>\n styledTypography(\n dateString,\n activeTheme?.datePicker.placeholderVariant,\n (dateString || placeholder) === undefined ? \"\" : dateString || placeholder\n );\n\n const dateValue = rangeMode ? { startDate, endDate } : startDate;\n\n const hasLabel = label != null;\n const hasDescription = description != null;\n\n // the error message area will only be created if:\n // - an external element that provides an error message isn't identified via aria-errormessage AND\n // - both status and statusMessage properties are being controlled OR\n // - status is uncontrolled and required is true\n const canShowError =\n ariaErrorMessage == null &&\n ((status !== undefined && statusMessage !== undefined) ||\n (status === undefined && required));\n\n const isStateInvalid = isInvalid(validationState);\n\n let errorMessageId;\n if (isStateInvalid) {\n errorMessageId = canShowError\n ? setId(elementId, \"error\")\n : ariaErrorMessage;\n }\n\n return (\n <HvFormElement\n id={id}\n name={name}\n value={dateValue}\n status={validationState}\n disabled={disabled}\n required={required}\n className={cx(classes.root, className)}\n readOnly={readOnly}\n {...others}\n >\n {(hasLabel || hasDescription) && (\n <div className={classes.labelContainer}>\n {hasLabel && (\n <HvLabel\n id={setId(elementId, \"label\")}\n label={label}\n className={classes.label}\n />\n )}\n\n {hasDescription && (\n <HvInfoMessage\n id={setId(elementId, \"description\")}\n className={classes.description}\n >\n {description}\n </HvInfoMessage>\n )}\n </div>\n )}\n <HvBaseDropdown\n role=\"combobox\"\n classes={{\n root: classes.dropdown,\n panel: classes.panel,\n header: cx({ [classes.dropdownHeaderInvalid]: isStateInvalid }),\n headerOpen: classes.dropdownHeaderOpen,\n }}\n readOnly={readOnly}\n disabled={disabled}\n disablePortal={disablePortal}\n variableWidth\n placement={horizontalPlacement}\n expanded={calendarOpen}\n onToggle={handleToggle}\n onClickOutside={handleCalendarClose}\n onContainerCreation={focusOnContainer}\n placeholder={renderInput(getDateLabel(dateValue, rangeMode, locale))}\n adornment={\n <Calendar\n className={classes.icon}\n color={disabled ? \"secondary_80\" : undefined}\n />\n }\n popperProps={{\n modifiers: [\n { name: \"preventOverflow\", enabled: escapeWithReference },\n ],\n }}\n aria-haspopup=\"dialog\"\n aria-label={ariaLabel}\n aria-labelledby={\n [label && setId(elementId, \"label\"), ariaLabelledBy]\n .join(\" \")\n .trim() || undefined\n }\n aria-invalid={isStateInvalid ? true : undefined}\n aria-errormessage={errorMessageId}\n aria-describedby={\n [description && setId(elementId, \"description\"), ariaDescribedBy]\n .join(\" \")\n .trim() || undefined\n }\n {...dropdownProps}\n >\n <div ref={focusTarget} tabIndex={-1} />\n <HvCalendar\n id={setId(id, \"calendar\")}\n startAdornment={startAdornment}\n onChange={handleDateChange}\n onInputChange={handleInputDateChange}\n onVisibleDateChange={(_event, type, month, target) => {\n dispatchAction({ type, target, month });\n }}\n locale={locale}\n {...visibleDate}\n {...calendarProps}\n invalidDateLabel={labels?.invalidDateLabel}\n />\n {(rangeMode || showActions) && renderActions()}\n </HvBaseDropdown>\n {canShowError && (\n <HvWarningText\n id={setId(elementId, \"error\")}\n disableBorder\n className={cx(classes.error)}\n >\n {validationMessage}\n </HvWarningText>\n )}\n </HvFormElement>\n );\n};\n"],"names":["DEFAULT_LABELS","applyLabel","cancelLabel","clearLabel","invalidLabel","HvDatePicker","props","classes","classesProp","className","id","name","required","disabled","readOnly","label","ariaLabel","ariaLabelledBy","description","ariaDescribedBy","onChange","onCancel","onClear","status","statusMessage","ariaErrorMessage","placeholder","labels","labelsProp","value","startValue","endValue","expanded","defaultExpanded","onToggle","rangeMode","startAdornment","horizontalPlacement","locale","localeProp","showActions","showClear","disablePortal","escapeWithReference","dropdownProps","calendarProps","others","useDefaultProps","cx","useClasses","useLabels","elementId","useUniqueId","validationState","setValidationState","useControlled","validationMessage","calendarOpen","setCalendarOpen","Boolean","startDate","setStartDate","rollbackStartDate","useSavedState","endDate","setEndDate","rollbackEndDate","visibleDate","dispatchAction","useVisibleDate","focusTarget","useRef","activeTheme","useTheme","useEffect","endDateIsSet","current","type","target","year","getFullYear","month","getMonth","handleApply","isDate","handleCancel","handleClear","undefined","handleCalendarClose","shouldSave","handleToggle","evt","open","focusOnContainer","focus","handleDateChange","event","newDate","autoSave","handleInputDateChange","position","renderActions","jsxs","HvActionBar","actionContainer","jsx","leftContainer","HvButton","setId","action","rightContainer","styledTypography","dateString","variant","text","StyledTypography","HvTypography","process","env","NODE_ENV","color","theme","colors","secondary","datePicker","dropdownPlaceholderColor","renderInput","placeholderVariant","dateValue","hasLabel","hasDescription","canShowError","isStateInvalid","isInvalid","errorMessageId","HvFormElement","root","labelContainer","HvLabel","HvInfoMessage","HvBaseDropdown","dropdown","panel","header","dropdownHeaderInvalid","headerOpen","dropdownHeaderOpen","getDateLabel","Calendar","icon","modifiers","enabled","join","trim","HvCalendar","_event","invalidDateLabel","HvWarningText","error"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsxs, jsx } from "@emotion/react/jsx-runtime";
2
2
  import _styled from "@emotion/styled/base";
3
- import { useState, useRef, useEffect } from "react";
3
+ import { useRef, useEffect } from "react";
4
4
  import { useDefaultProps } from "../../hooks/useDefaultProps.js";
5
5
  import { Calendar } from "@hitachivantara/uikit-react-icons";
6
6
  import { theme } from "@hitachivantara/uikit-styles";
@@ -56,6 +56,9 @@ const HvDatePicker = (props) => {
56
56
  value,
57
57
  startValue,
58
58
  endValue,
59
+ expanded,
60
+ defaultExpanded,
61
+ onToggle,
59
62
  rangeMode = false,
60
63
  startAdornment,
61
64
  horizontalPlacement = "right",
@@ -77,7 +80,7 @@ const HvDatePicker = (props) => {
77
80
  const [validationState, setValidationState] = useControlled(status, "standBy");
78
81
  const [validationMessage] = useControlled(statusMessage, "Required");
79
82
  const locale = localeProp || "en-US";
80
- const [calendarOpen, setCalendarOpen] = useState(false);
83
+ const [calendarOpen, setCalendarOpen] = useControlled(expanded, Boolean(defaultExpanded));
81
84
  const [startDate, setStartDate, rollbackStartDate] = useSavedState(rangeMode ? startValue : value);
82
85
  const [endDate, setEndDate, rollbackEndDate] = useSavedState(endValue);
83
86
  const [visibleDate, dispatchAction] = useVisibleDate(startDate, endDate);
@@ -145,6 +148,7 @@ const HvDatePicker = (props) => {
145
148
  const handleToggle = (evt, open) => {
146
149
  if (evt === null)
147
150
  return;
151
+ onToggle == null ? void 0 : onToggle(evt, open);
148
152
  setCalendarOpen(open);
149
153
  if (!open)
150
154
  handleCalendarClose();
@@ -214,7 +218,7 @@ const HvDatePicker = (props) => {
214
218
  label: "StyledTypography"
215
219
  })({
216
220
  color: dateString ? theme.colors.secondary : theme.datePicker.dropdownPlaceholderColor
217
- }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRGF0ZVBpY2tlci9EYXRlUGlja2VyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1ZDZCIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRGF0ZVBpY2tlci9EYXRlUGlja2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZiwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEZWZhdWx0UHJvcHMgfSBmcm9tIFwiQGNvcmUvaG9va3MvdXNlRGVmYXVsdFByb3BzXCI7XG5cbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuXG5pbXBvcnQgeyBDYWxlbmRhciB9IGZyb20gXCJAaGl0YWNoaXZhbnRhcmEvdWlraXQtcmVhY3QtaWNvbnNcIjtcbmltcG9ydCB7IHRoZW1lIH0gZnJvbSBcIkBoaXRhY2hpdmFudGFyYS91aWtpdC1zdHlsZXNcIjtcblxuaW1wb3J0IHsgdXNlQ29udHJvbGxlZCB9IGZyb20gXCJAY29yZS9ob29rcy91c2VDb250cm9sbGVkXCI7XG5pbXBvcnQgeyB1c2VVbmlxdWVJZCB9IGZyb20gXCJAY29yZS9ob29rcy91c2VVbmlxdWVJZFwiO1xuaW1wb3J0IHsgdXNlTGFiZWxzIH0gZnJvbSBcIkBjb3JlL2hvb2tzL3VzZUxhYmVsc1wiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQGNvcmUvaG9va3MvdXNlVGhlbWVcIjtcbmltcG9ydCB7IEh2QmFzZVByb3BzIH0gZnJvbSBcIkBjb3JlL3R5cGVzL2dlbmVyaWNcIjtcbmltcG9ydCB7IEV4dHJhY3ROYW1lcyB9IGZyb20gXCJAY29yZS91dGlscy9jbGFzc2VzXCI7XG5pbXBvcnQgeyBzZXRJZCB9IGZyb20gXCJAY29yZS91dGlscy9zZXRJZFwiO1xuaW1wb3J0IHsgdXNlU2F2ZWRTdGF0ZSB9IGZyb20gXCJAY29yZS91dGlscy91c2VTYXZlZFN0YXRlXCI7XG5pbXBvcnQge1xuICBpc0ludmFsaWQsXG4gIEh2TGFiZWwsXG4gIEh2Rm9ybVN0YXR1cyxcbiAgSHZXYXJuaW5nVGV4dCxcbiAgSHZGb3JtRWxlbWVudCxcbiAgSHZJbmZvTWVzc2FnZSxcbn0gZnJvbSBcIkBjb3JlL2NvbXBvbmVudHMvRm9ybXNcIjtcbmltcG9ydCB7IGlzRGF0ZSB9IGZyb20gXCJAY29yZS9jb21wb25lbnRzL0NhbGVuZGFyL3V0aWxzXCI7XG5pbXBvcnQgeyBIdkNhbGVuZGFyLCBIdkNhbGVuZGFyUHJvcHMgfSBmcm9tIFwiQGNvcmUvY29tcG9uZW50cy9DYWxlbmRhclwiO1xuaW1wb3J0IHtcbiAgSHZCYXNlRHJvcGRvd24sXG4gIEh2QmFzZURyb3Bkb3duUHJvcHMsXG59IGZyb20gXCJAY29yZS9jb21wb25lbnRzL0Jhc2VEcm9wZG93blwiO1xuaW1wb3J0IHsgSHZUeXBvZ3JhcGh5IH0gZnJvbSBcIkBjb3JlL2NvbXBvbmVudHMvVHlwb2dyYXBoeVwiO1xuaW1wb3J0IHsgSHZBY3Rpb25CYXIgfSBmcm9tIFwiQGNvcmUvY29tcG9uZW50cy9BY3Rpb25CYXJcIjtcbmltcG9ydCB7IEh2QnV0dG9uIH0gZnJvbSBcIkBjb3JlL2NvbXBvbmVudHMvQnV0dG9uXCI7XG5cbmltcG9ydCB7IGdldERhdGVMYWJlbCB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgdXNlVmlzaWJsZURhdGUgZnJvbSBcIi4vdXNlVmlzaWJsZURhdGVcIjtcbmltcG9ydCB7IHN0YXRpY0NsYXNzZXMsIHVzZUNsYXNzZXMgfSBmcm9tIFwiLi9EYXRlUGlja2VyLnN0eWxlc1wiO1xuXG5leHBvcnQgeyBzdGF0aWNDbGFzc2VzIGFzIGRhdGVQaWNrZXJDbGFzc2VzIH07XG5cbmV4cG9ydCB0eXBlIEh2RGF0ZVBpY2tlckNsYXNzZXMgPSBFeHRyYWN0TmFtZXM8dHlwZW9mIHVzZUNsYXNzZXM+O1xuXG5jb25zdCBERUZBVUxUX0xBQkVMUyA9IHtcbiAgYXBwbHlMYWJlbDogXCJBcHBseVwiLFxuICBjYW5jZWxMYWJlbDogXCJDYW5jZWxcIixcbiAgY2xlYXJMYWJlbDogXCJDbGVhclwiLFxuICBpbnZhbGlkTGFiZWw6IFwiSW52YWxpZCBkYXRlXCIsXG59O1xuXG4vKiogQGRlcHJlY2F0ZWQgdXNlIGBIdkZvcm1TdGF0dXNgIGluc3RlYWQgKi9cbmV4cG9ydCB0eXBlIEh2RGF0ZVBpY2tlclN0YXR1cyA9IEh2Rm9ybVN0YXR1cztcblxuZXhwb3J0IGludGVyZmFjZSBIdkRhdGVQaWNrZXJQcm9wc1xuICBleHRlbmRzIEh2QmFzZVByb3BzPEhUTUxEaXZFbGVtZW50LCBcIm9uQ2hhbmdlXCI+IHtcbiAgLyoqXG4gICAqIFRoZSBmb3JtIGVsZW1lbnQgbmFtZS5cbiAgICovXG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgb2YgdGhlIGZvcm0gZWxlbWVudC5cbiAgICpcbiAgICogVGhlIGZvcm0gZWxlbWVudCBtdXN0IGJlIGxhYmVsZWQgZm9yIGFjY2Vzc2liaWxpdHkgcmVhc29ucy5cbiAgICogSWYgbm90IHByb3ZpZGVkLCBhbiBhcmlhLWxhYmVsIG9yIGFyaWEtbGFiZWxsZWRieSBtdXN0IGJlIHByb3ZpZGVkIGluc3RlYWQuXG4gICAqL1xuICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgLyoqXG4gICAqIFByb3ZpZGUgYWRkaXRpb25hbCBkZXNjcmlwdGl2ZSB0ZXh0IGZvciB0aGUgZm9ybSBlbGVtZW50LlxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIC8qKlxuICAgKiBUaGUgcGxhY2Vob2xkZXIgdmFsdWUgd2hlbiBub3RoaW5nIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgZm9ybSBlbGVtZW50IGlzIGRpc2FibGVkLlxuICAgKi9cbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdXNlciBpbnB1dCBpcyByZXF1aXJlZCBvbiB0aGUgZm9ybSBlbGVtZW50LlxuICAgKi9cbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIHN0YXR1cyBvZiB0aGUgZm9ybSBlbGVtZW50LlxuICAgKlxuICAgKiBWYWxpZCBpcyBjb3JyZWN0LCBpbnZhbGlkIGlzIGluY29ycmVjdCBhbmQgc3RhbmRCeSBtZWFucyBubyB2YWxpZGF0aW9ucyBoYXZlIHJ1bi5cbiAgICpcbiAgICogV2hlbiB1bmNvbnRyb2xsZWQgYW5kIHVuc3BlY2lmaWVkIGl0IHdpbGwgZGVmYXVsdCB0byBcInN0YW5kQnlcIiBhbmQgY2hhbmdlIHRvIGVpdGhlciBcInZhbGlkXCJcbiAgICogb3IgXCJpbnZhbGlkXCIgYWZ0ZXIgYW55IGNoYW5nZSB0byB0aGUgc3RhdGUuXG4gICAqL1xuICBzdGF0dXM/OiBIdkZvcm1TdGF0dXM7XG4gIC8qKlxuICAgKiBUaGUgZXJyb3IgbWVzc2FnZSB0byBzaG93IHdoZW4gdGhlIHZhbGlkYXRpb24gc3RhdHVzIGlzIFwiaW52YWxpZFwiLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBcIlJlcXVpcmVkXCIgd2hlbiB0aGUgc3RhdHVzIGlzIHVuY29udHJvbGxlZCBhbmQgbm8gYGFyaWEtZXJyb3JtZXNzYWdlYCBpcyBwcm92aWRlZC5cbiAgICovXG4gIHN0YXR1c01lc3NhZ2U/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVzIHRoZSBlbGVtZW50IHRoYXQgcHJvdmlkZXMgYW4gZXJyb3IgbWVzc2FnZSBmb3IgdGhlIGRhdGUgcGlja2VyLlxuICAgKlxuICAgKiBXaWxsIG9ubHkgYmUgdXNlZCB3aGVuIHRoZSB2YWxpZGF0aW9uIHN0YXR1cyBpcyBpbnZhbGlkLlxuICAgKi9cbiAgXCJhcmlhLWVycm9ybWVzc2FnZVwiPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGNhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICBvbkNoYW5nZT86IChkYXRlPzogRGF0ZSwgZW5kRGF0ZT86IERhdGUpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBUaGUgY2FsbGJhY2sgZmlyZWQgd2hlbiB1c2VyIGNsaWNrcyBvbiBjYW5jZWwuXG4gICAqL1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBUaGUgY2FsbGJhY2sgZmlyZWQgd2hlbiB1c2VyIGNsaWNrcyBvbiBjbGVhci5cbiAgICovXG4gIG9uQ2xlYXI/OiAoKSA9PiB2b2lkO1xuICAvKipcbiAgICogQW4gb2JqZWN0IGNvbnRhaW5pbmcgYWxsIHRoZSBsYWJlbHMgZm9yIHRoZSBkYXRlcGlja2VyLlxuICAgKi9cbiAgbGFiZWxzPzoge1xuICAgIC8qKlxuICAgICAqIEFwcGx5IGJ1dHRvbiBsYWJlbC5cbiAgICAgKi9cbiAgICBhcHBseUxhYmVsPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIENhbmNlbCBidXR0b24gbGFiZWwuXG4gICAgICovXG4gICAgY2FuY2VsTGFiZWw/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQ2xlYXIgYnV0dG9uIGxhYmVsLlxuICAgICAqL1xuICAgIGNsZWFyTGFiZWw/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogSW52YWxpZCBEYXRlIGxhYmVsLlxuICAgICAqL1xuICAgIGludmFsaWREYXRlTGFiZWw/OiBzdHJpbmc7XG4gIH07XG4gIC8qKlxuICAgKiBUaGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgaW5wdXQgd2hlbiBpbiBzaW5nbGUgY2FsZW5kYXIgbW9kZS5cbiAgICovXG4gIHZhbHVlPzogRGF0ZTtcbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsIHZhbHVlIGZvciB0aGUgc3RhcnQgZGF0ZSB3aGVuIGluIHJhbmdlIG1vZGUuXG4gICAqL1xuICBzdGFydFZhbHVlPzogRGF0ZTtcbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsIHZhbHVlIGZvciB0aGUgZW5kIGRhdGUgd2hlbiBpbiByYW5nZSBtb2RlLlxuICAgKi9cbiAgZW5kVmFsdWU/OiBEYXRlO1xuICAvKipcbiAgICogRmxhZyBpbmZvcm1pbmcgaWYgdGhlIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIGluIHJhbmdlIG1vZGUgb3IgaW4gc2luZ2xlIG1vZGUuXG4gICAqIFRPRE86IHJlbW92ZSB0aGlzIGluIGZhdm91ciBvZiBkaXNjcmltaW5hdGVkIHVuaW9uXG4gICAqL1xuICByYW5nZU1vZGU/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIHBsYWNlbWVudCB3aGVyZSB0aGUgY2FsZW5kYXIgc2hvdWxkIGJlIHBsYWNlZCBhY2NvcmRpbmcgdG8gdGhlIGlucHV0LiBPcHRpb25zIGFyZSBgbGVmdGAgb3IgYHJpZ2h0YC5cbiAgICogTm90ZSB0aGlzIHByb3Agb25seSBhZmZlY3RzIHRoZSBjYWxlbmRhciB3aGVuIGluIGByYW5nZU1vZGVgLlxuICAgKi9cbiAgaG9yaXpvbnRhbFBsYWNlbWVudD86IFwibGVmdFwiIHwgXCJyaWdodFwiO1xuICAvKipcbiAgICogVGhlIGNhbGVuZGFyIGxvY2FsZS4gSWYgdW5kZWZpbmVkLCBpdCB1c2VzIGNhbGVuZGFyIGRlZmF1bHRcbiAgICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqXG4gICAqIENvbnRyb2xzIGlmIGFjdGlvbnMgYnV0dG9ucyBhcmUgdmlzaWJsZSBhdCB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBzaG93QWN0aW9ucz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDb250cm9scyBpZiBjbGVhciBidXR0b24gaXMgdmlzaWJsZSBhdCB0aGUgY2FsZW5kYXIsXG4gICAqIG9ubHkgd29ya3MgaWYgc2hvd2luZyBhY3Rpb25zIG9yIGluIHJhbmdlIG1vZGUuXG4gICAqL1xuICBzaG93Q2xlYXI/OiBib29sZWFuO1xuICAvKipcbiAgICogRGlzYWJsZSB0aGUgcG9ydGFsIGJlaGF2aW9yLiBUaGUgY2hpbGRyZW4gc3RheSB3aXRoaW4gaXQncyBwYXJlbnQgRE9NIGhpZXJhcmNoeS5cbiAgICovXG4gIGRpc2FibGVQb3J0YWw/OiBib29sZWFuO1xuICAvKipcbiAgICogU2V0cyBpZiB0aGUgY2FsZW5kYXIgY29udGFpbmVyIHNob3VsZCBmb2xsb3cgdGhlIGRhdGUgcGlja2VyIGlucHV0IG91dCBvZiB0aGUgc2NyZWVuIG9yIHN0YXkgdmlzaWJsZS5cbiAgICovXG4gIGVzY2FwZVdpdGhSZWZlcmVuY2U/OiBib29sZWFuO1xuICAvKipcbiAgICogQW4gZWxlbWVudCBwbGFjZWQgYmVmb3JlIHRoZSBDYWxlbmRhclxuICAgKi9cbiAgc3RhcnRBZG9ybm1lbnQ/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIC8qKlxuICAgKiBBbiBvYmplY3QgY29udGFpbmluZyBwcm9wcyB0byBiZSBwYXNzZWQgb250byB0aGUgYmFzZURyb3Bkb3duLlxuICAgKi9cbiAgZHJvcGRvd25Qcm9wcz86IE9iamVjdDtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCB0aGUgRGF0ZVBpY2tlciB3aWxsIGJlIGluIHJlYWQgb25seSBtb2RlLCB1bmFibGUgdG8gYmUgaW50ZXJhY3RlZC5cbiAgICovXG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgcHJvcHMgcGFzc2VkIHRvIHRoZSBIdkNhbGVuZGFyIGNvbXBvbmVudC5cbiAgICovXG4gIGNhbGVuZGFyUHJvcHM/OiBQYXJ0aWFsPEh2Q2FsZW5kYXJQcm9wcz47XG4gIC8qKlxuICAgKiBBIEpzcyBPYmplY3QgdXNlZCB0byBvdmVycmlkZSBvciBleHRlbmQgdGhlIGNvbXBvbmVudCBzdHlsZXMgYXBwbGllZC5cbiAgICovXG4gIGNsYXNzZXM/OiBIdkRhdGVQaWNrZXJDbGFzc2VzO1xufVxuXG4vKipcbiAqIEEgZGF0ZSBwaWNrZXIsIHBvcHVwIGNhbGVuZGFyIG9yIGRhdGUgcmFuZ2UgcGlja2VyIGlzIGEgZ3JhcGhpY2FsIHVzZXJcbiAqIGludGVyZmFjZSB3aWRnZXQgd2hpY2ggYWxsb3dzIHRoZSB1c2VyIHRvIHNlbGVjdCBhIGRhdGUgZnJvbSBhIGNhbGVuZGFyLlxuICovXG5leHBvcnQgY29uc3QgSHZEYXRlUGlja2VyID0gKHByb3BzOiBIdkRhdGVQaWNrZXJQcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgY2xhc3NlczogY2xhc3Nlc1Byb3AsXG4gICAgY2xhc3NOYW1lLFxuXG4gICAgaWQsXG4gICAgbmFtZSxcblxuICAgIHJlcXVpcmVkID0gZmFsc2UsXG4gICAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgICByZWFkT25seSxcblxuICAgIGxhYmVsLFxuICAgIFwiYXJpYS1sYWJlbFwiOiBhcmlhTGFiZWwsXG4gICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogYXJpYUxhYmVsbGVkQnksXG4gICAgZGVzY3JpcHRpb24sXG4gICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGFyaWFEZXNjcmliZWRCeSxcblxuICAgIG9uQ2hhbmdlLFxuICAgIG9uQ2FuY2VsLFxuICAgIG9uQ2xlYXIsXG4gICAgc3RhdHVzLFxuICAgIHN0YXR1c01lc3NhZ2UsXG4gICAgXCJhcmlhLWVycm9ybWVzc2FnZVwiOiBhcmlhRXJyb3JNZXNzYWdlLFxuXG4gICAgcGxhY2Vob2xkZXIsXG5cbiAgICBsYWJlbHM6IGxhYmVsc1Byb3AsXG5cbiAgICB2YWx1ZSxcbiAgICBzdGFydFZhbHVlLFxuICAgIGVuZFZhbHVlLFxuXG4gICAgcmFuZ2VNb2RlID0gZmFsc2UsXG4gICAgc3RhcnRBZG9ybm1lbnQsXG4gICAgaG9yaXpvbnRhbFBsYWNlbWVudCA9IFwicmlnaHRcIixcbiAgICBsb2NhbGU6IGxvY2FsZVByb3AsXG4gICAgc2hvd0FjdGlvbnMgPSBmYWxzZSxcbiAgICBzaG93Q2xlYXIgPSBmYWxzZSxcbiAgICBkaXNhYmxlUG9ydGFsID0gdHJ1ZSxcbiAgICBlc2NhcGVXaXRoUmVmZXJlbmNlID0gdHJ1ZSxcbiAgICBkcm9wZG93blByb3BzLFxuICAgIGNhbGVuZGFyUHJvcHMsXG4gICAgLi4ub3RoZXJzXG4gIH0gPSB1c2VEZWZhdWx0UHJvcHMoXCJIdkRhdGVQaWNrZXJcIiwgcHJvcHMpO1xuXG4gIGNvbnN0IHsgY2xhc3NlcywgY3ggfSA9IHVzZUNsYXNzZXMoY2xhc3Nlc1Byb3ApO1xuICBjb25zdCBsYWJlbHMgPSB1c2VMYWJlbHMoREVGQVVMVF9MQUJFTFMsIGxhYmVsc1Byb3ApO1xuXG4gIGNvbnN0IGVsZW1lbnRJZCA9IHVzZVVuaXF1ZUlkKGlkLCBcImh2ZGF0ZXBpY2tlclwiKTtcblxuICBjb25zdCBbdmFsaWRhdGlvblN0YXRlLCBzZXRWYWxpZGF0aW9uU3RhdGVdID0gdXNlQ29udHJvbGxlZChcbiAgICBzdGF0dXMsXG4gICAgXCJzdGFuZEJ5XCJcbiAgKTtcblxuICBjb25zdCBbdmFsaWRhdGlvbk1lc3NhZ2VdID0gdXNlQ29udHJvbGxlZChzdGF0dXNNZXNzYWdlLCBcIlJlcXVpcmVkXCIpO1xuXG4gIGNvbnN0IGxvY2FsZSA9IGxvY2FsZVByb3AgfHwgXCJlbi1VU1wiO1xuXG4gIGNvbnN0IFtjYWxlbmRhck9wZW4sIHNldENhbGVuZGFyT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgW3N0YXJ0RGF0ZSwgc2V0U3RhcnREYXRlLCByb2xsYmFja1N0YXJ0RGF0ZV0gPSB1c2VTYXZlZFN0YXRlKFxuICAgIHJhbmdlTW9kZSA/IHN0YXJ0VmFsdWUgOiB2YWx1ZVxuICApO1xuICBjb25zdCBbZW5kRGF0ZSwgc2V0RW5kRGF0ZSwgcm9sbGJhY2tFbmREYXRlXSA9IHVzZVNhdmVkU3RhdGUoZW5kVmFsdWUpO1xuXG4gIGNvbnN0IFt2aXNpYmxlRGF0ZSwgZGlzcGF0Y2hBY3Rpb25dID0gdXNlVmlzaWJsZURhdGUoc3RhcnREYXRlLCBlbmREYXRlKTtcblxuICBjb25zdCBmb2N1c1RhcmdldCA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG5cbiAgY29uc3QgeyBhY3RpdmVUaGVtZSB9ID0gdXNlVGhlbWUoKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFN0YXJ0RGF0ZShyYW5nZU1vZGUgPyBzdGFydFZhbHVlIDogdmFsdWUsIHRydWUpO1xuICAgIHNldEVuZERhdGUoZW5kVmFsdWUsIHRydWUpO1xuICB9LCBbdmFsdWUsIHN0YXJ0VmFsdWUsIGVuZFZhbHVlLCByYW5nZU1vZGUsIHNldFN0YXJ0RGF0ZSwgc2V0RW5kRGF0ZV0pO1xuXG4gIGNvbnN0IGVuZERhdGVJc1NldCA9IHVzZVJlZihmYWxzZSk7XG4gIGVuZERhdGVJc1NldC5jdXJyZW50ID0gZW5kRGF0ZSAhPSBudWxsO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN0YXJ0RGF0ZSAhPSBudWxsKSB7XG4gICAgICBkaXNwYXRjaEFjdGlvbih7XG4gICAgICAgIHR5cGU6IFwibW9udGhfeWVhclwiLFxuICAgICAgICB0YXJnZXQ6IGVuZERhdGVJc1NldC5jdXJyZW50ID8gXCJsZWZ0XCIgOiBcImJlc3RcIixcbiAgICAgICAgeWVhcjogc3RhcnREYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgIG1vbnRoOiBzdGFydERhdGUuZ2V0TW9udGgoKSArIDEsXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtkaXNwYXRjaEFjdGlvbiwgc3RhcnREYXRlXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZW5kRGF0ZSAhPSBudWxsKSB7XG4gICAgICBkaXNwYXRjaEFjdGlvbih7XG4gICAgICAgIHR5cGU6IFwibW9udGhfeWVhclwiLFxuICAgICAgICB0YXJnZXQ6IFwicmlnaHRcIixcbiAgICAgICAgeWVhcjogZW5kRGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICBtb250aDogZW5kRGF0ZS5nZXRNb250aCgpICsgMSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW2Rpc3BhdGNoQWN0aW9uLCBlbmREYXRlXSk7XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGBBcHBseWAgYWN0aW9uLiBCb3RoIHNpbmdsZSBhbmQgcmFuZ2VkIG1vZGVzIGFyZSBoYW5kbGVkIGhlcmUuXG4gICAqL1xuICBjb25zdCBoYW5kbGVBcHBseSA9ICgpID0+IHtcbiAgICBzZXRTdGFydERhdGUoc3RhcnREYXRlLCB0cnVlKTtcbiAgICBzZXRFbmREYXRlKGVuZERhdGUgPz8gc3RhcnREYXRlLCB0cnVlKTtcblxuICAgIG9uQ2hhbmdlPy4oc3RhcnREYXRlLCBlbmREYXRlKTtcblxuICAgIHNldFZhbGlkYXRpb25TdGF0ZSgoKSA9PiB7XG4gICAgICAvLyB0aGlzIHdpbGwgb25seSBydW4gaWYgc3RhdHVzIGlzIHVuY29udHJvbGxlZFxuICAgICAgaWYgKHJlcXVpcmVkICYmICghaXNEYXRlKHN0YXJ0RGF0ZSkgfHwgKHJhbmdlTW9kZSAmJiAhaXNEYXRlKGVuZERhdGUpKSkpIHtcbiAgICAgICAgcmV0dXJuIFwiaW52YWxpZFwiO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gXCJ2YWxpZFwiO1xuICAgIH0pO1xuXG4gICAgc2V0Q2FsZW5kYXJPcGVuKGZhbHNlKTtcbiAgfTtcblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgYENhbmNlbGAgYWN0aW9uLiBCb3RoIHNpbmdsZSBhbmQgcmFuZ2VkIG1vZGVzIGFyZSBoYW5kbGVkIGhlcmUuXG4gICAqL1xuICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgcm9sbGJhY2tTdGFydERhdGUoKTtcbiAgICByb2xsYmFja0VuZERhdGUoKTtcblxuICAgIG9uQ2FuY2VsPy4oKTtcblxuICAgIHNldENhbGVuZGFyT3BlbihmYWxzZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGBDYW5jZWxgIGFjdGlvbi4gQm90aCBzaW5nbGUgYW5kIHJhbmdlZCBtb2RlcyBhcmUgaGFuZGxlZCBoZXJlLlxuICAgKi9cbiAgY29uc3QgaGFuZGxlQ2xlYXIgPSAoKSA9PiB7XG4gICAgc2V0U3RhcnREYXRlKHVuZGVmaW5lZCwgZmFsc2UpO1xuICAgIHNldEVuZERhdGUodW5kZWZpbmVkLCBmYWxzZSk7XG4gICAgb25DbGVhcj8uKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2FsZW5kYXJDbG9zZSA9ICgpID0+IHtcbiAgICBjb25zdCBzaG91bGRTYXZlID0gIShyYW5nZU1vZGUgfHwgc2hvd0FjdGlvbnMpO1xuICAgIGlmIChzaG91bGRTYXZlKSB7XG4gICAgICBoYW5kbGVBcHBseSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBoYW5kbGVDYW5jZWwoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlOiBIdkJhc2VEcm9wZG93blByb3BzW1wib25Ub2dnbGVcIl0gPSAoZXZ0LCBvcGVuKSA9PiB7XG4gICAgLyogXG4gICAgIElmIGV2dCBpcyBudWxsIHRoaXMgdG9nZ2xlIHdhc24ndCB0cmlnZ2VyZWQgYnkgdGhlIHVzZXIuXG4gICAgIGluc3RlYWQgaXQgd2FzIHRyaWdnZXJlZCBieSB0aGUgYmFzZURyb3Bkb3duIHVzZUVmZmVjdCBhZnRlclxuICAgICB0aGUgZGF0ZXBpY2tlciBjaGFuZ2VkIHRoZSBleHBhbmRlZCB2YWx1ZSB0aGlzIGJhc2VEcm9wZG93biBiZWhhdmlvciBuZWVkcyBhIHJldmlld1xuICAgICovXG4gICAgaWYgKGV2dCA9PT0gbnVsbCkgcmV0dXJuO1xuICAgIHNldENhbGVuZGFyT3BlbihvcGVuKTtcbiAgICBpZiAoIW9wZW4pIGhhbmRsZUNhbGVuZGFyQ2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBmb2N1c09uQ29udGFpbmVyID0gKCkgPT4ge1xuICAgIGZvY3VzVGFyZ2V0LmN1cnJlbnQ/LmZvY3VzKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRGF0ZUNoYW5nZTogSHZDYWxlbmRhclByb3BzW1wib25DaGFuZ2VcIl0gPSAoZXZlbnQsIG5ld0RhdGUpID0+IHtcbiAgICBpZiAoIWlzRGF0ZShuZXdEYXRlKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgYXV0b1NhdmUgPSAhc2hvd0FjdGlvbnMgJiYgIXJhbmdlTW9kZTtcblxuICAgIGlmIChyYW5nZU1vZGUpIHtcbiAgICAgIGlmICghc3RhcnREYXRlIHx8IChzdGFydERhdGUgJiYgZW5kRGF0ZSkgfHwgbmV3RGF0ZSA8IHN0YXJ0RGF0ZSkge1xuICAgICAgICBzZXRTdGFydERhdGUobmV3RGF0ZSk7XG4gICAgICAgIHNldEVuZERhdGUodW5kZWZpbmVkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVuZERhdGUobmV3RGF0ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFN0YXJ0RGF0ZShuZXdEYXRlLCBhdXRvU2F2ZSk7XG4gICAgfVxuXG4gICAgaWYgKGF1dG9TYXZlKSB7XG4gICAgICBvbkNoYW5nZT8uKG5ld0RhdGUpO1xuXG4gICAgICBzZXRWYWxpZGF0aW9uU3RhdGUoKCkgPT4ge1xuICAgICAgICAvLyB0aGlzIHdpbGwgb25seSBydW4gaWYgc3RhdHVzIGlzIHVuY29udHJvbGxlZFxuICAgICAgICBpZiAocmVxdWlyZWQgJiYgIWlzRGF0ZShuZXdEYXRlKSkge1xuICAgICAgICAgIHJldHVybiBcImludmFsaWRcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBcInZhbGlkXCI7XG4gICAgICB9KTtcblxuICAgICAgc2V0Q2FsZW5kYXJPcGVuKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSW5wdXREYXRlQ2hhbmdlOiBIdkNhbGVuZGFyUHJvcHNbXCJvbklucHV0Q2hhbmdlXCJdID0gKFxuICAgIGV2ZW50LFxuICAgIG5ld0RhdGUsXG4gICAgcG9zaXRpb25cbiAgKSA9PiB7XG4gICAgaWYgKCFpc0RhdGUobmV3RGF0ZSkpIHJldHVybjtcblxuICAgIGlmICghcmFuZ2VNb2RlKSB7XG4gICAgICBoYW5kbGVEYXRlQ2hhbmdlKGV2ZW50IGFzIGFueSwgbmV3RGF0ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHBvc2l0aW9uID09PSBcImxlZnRcIikge1xuICAgICAgaWYgKGVuZERhdGUpIHNldFN0YXJ0RGF0ZShuZXdEYXRlID4gZW5kRGF0ZSA/IGVuZERhdGUgOiBuZXdEYXRlKTtcbiAgICB9IGVsc2UgaWYgKHBvc2l0aW9uID09PSBcInJpZ2h0XCIpIHtcbiAgICAgIGlmICghc3RhcnREYXRlKSB7XG4gICAgICAgIGlmIChlbmREYXRlKSBzZXRTdGFydERhdGUobmV3RGF0ZSA+IGVuZERhdGUgPyBlbmREYXRlIDogbmV3RGF0ZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHNldEVuZERhdGUobmV3RGF0ZSA8IHN0YXJ0RGF0ZSA/IHN0YXJ0RGF0ZSA6IG5ld0RhdGUpO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgY29udGFpbmVyIGZvciB0aGUgYWN0aW9uIGVsZW1lbnRzLlxuICAgKi9cbiAgY29uc3QgcmVuZGVyQWN0aW9ucyA9ICgpID0+IChcbiAgICA8SHZBY3Rpb25CYXIgY2xhc3NOYW1lPXtjeCh7IFtjbGFzc2VzLmFjdGlvbkNvbnRhaW5lcl06IHNob3dDbGVhciB9KX0+XG4gICAgICB7c2hvd0NsZWFyICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMubGVmdENvbnRhaW5lcn0+XG4gICAgICAgICAgPEh2QnV0dG9uXG4gICAgICAgICAgICBpZD17c2V0SWQoaWQsIFwiYWN0aW9uXCIsIFwiY2xlYXJcIil9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuYWN0aW9ufVxuICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlHaG9zdFwiXG4gICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDbGVhcn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bGFiZWxzPy5jbGVhckxhYmVsfVxuICAgICAgICAgIDwvSHZCdXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLnJpZ2h0Q29udGFpbmVyfT5cbiAgICAgICAgPEh2QnV0dG9uXG4gICAgICAgICAgaWQ9e3NldElkKGlkLCBcImFjdGlvblwiLCBcImFwcGx5XCIpfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5hY3Rpb259XG4gICAgICAgICAgdmFyaWFudD1cInByaW1hcnlHaG9zdFwiXG4gICAgICAgICAgb25DbGljaz17aGFuZGxlQXBwbHl9XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWxzPy5hcHBseUxhYmVsfVxuICAgICAgICA8L0h2QnV0dG9uPlxuICAgICAgICA8SHZCdXR0b25cbiAgICAgICAgICBpZD17c2V0SWQoaWQsIFwiYWN0aW9uXCIsIFwiY2FuY2VsXCIpfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5hY3Rpb259XG4gICAgICAgICAgdmFyaWFudD1cInByaW1hcnlHaG9zdFwiXG4gICAgICAgICAgb25DbGljaz17aGFuZGxlQ2FuY2VsfVxuICAgICAgICA+XG4gICAgICAgICAge2xhYmVscz8uY2FuY2VsTGFiZWx9XG4gICAgICAgIDwvSHZCdXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L0h2QWN0aW9uQmFyPlxuICApO1xuXG4gIGNvbnN0IHN0eWxlZFR5cG9ncmFwaHkgPSAoXG4gICAgZGF0ZVN0cmluZzogc3RyaW5nLFxuICAgIHZhcmlhbnQ6IGFueSxcbiAgICB0ZXh0OiBSZWFjdE5vZGVcbiAgKSA9PiB7XG4gICAgY29uc3QgU3R5bGVkVHlwb2dyYXBoeSA9IHN0eWxlZChIdlR5cG9ncmFwaHkpKHtcbiAgICAgIGNvbG9yOiBkYXRlU3RyaW5nXG4gICAgICAgID8gdGhlbWUuY29sb3JzLnNlY29uZGFyeVxuICAgICAgICA6IHRoZW1lLmRhdGVQaWNrZXIuZHJvcGRvd25QbGFjZWhvbGRlckNvbG9yLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIDxTdHlsZWRUeXBvZ3JhcGh5IHZhcmlhbnQ9e3ZhcmlhbnR9Pnt0ZXh0fTwvU3R5bGVkVHlwb2dyYXBoeT47XG4gIH07XG5cbiAgY29uc3QgcmVuZGVySW5wdXQgPSAoZGF0ZVN0cmluZzogc3RyaW5nKSA9PlxuICAgIHN0eWxlZFR5cG9ncmFwaHkoXG4gICAgICBkYXRlU3RyaW5nLFxuICAgICAgYWN0aXZlVGhlbWU/LmRhdGVQaWNrZXIucGxhY2Vob2xkZXJWYXJpYW50LFxuICAgICAgKGRhdGVTdHJpbmcgfHwgcGxhY2Vob2xkZXIpID09PSB1bmRlZmluZWQgPyBcIlwiIDogZGF0ZVN0cmluZyB8fCBwbGFjZWhvbGRlclxuICAgICk7XG5cbiAgY29uc3QgZGF0ZVZhbHVlID0gcmFuZ2VNb2RlID8geyBzdGFydERhdGUsIGVuZERhdGUgfSA6IHN0YXJ0RGF0ZTtcblxuICBjb25zdCBoYXNMYWJlbCA9IGxhYmVsICE9IG51bGw7XG4gIGNvbnN0IGhhc0Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24gIT0gbnVsbDtcblxuICAvLyB0aGUgZXJyb3IgbWVzc2FnZSBhcmVhIHdpbGwgb25seSBiZSBjcmVhdGVkIGlmOlxuICAvLyAtIGFuIGV4dGVybmFsIGVsZW1lbnQgdGhhdCBwcm92aWRlcyBhbiBlcnJvciBtZXNzYWdlIGlzbid0IGlkZW50aWZpZWQgdmlhIGFyaWEtZXJyb3JtZXNzYWdlIEFORFxuICAvLyAgIC0gYm90aCBzdGF0dXMgYW5kIHN0YXR1c01lc3NhZ2UgcHJvcGVydGllcyBhcmUgYmVpbmcgY29udHJvbGxlZCBPUlxuICAvLyAgIC0gc3RhdHVzIGlzIHVuY29udHJvbGxlZCBhbmQgcmVxdWlyZWQgaXMgdHJ1ZVxuICBjb25zdCBjYW5TaG93RXJyb3IgPVxuICAgIGFyaWFFcnJvck1lc3NhZ2UgPT0gbnVsbCAmJlxuICAgICgoc3RhdHVzICE9PSB1bmRlZmluZWQgJiYgc3RhdHVzTWVzc2FnZSAhPT0gdW5kZWZpbmVkKSB8fFxuICAgICAgKHN0YXR1cyA9PT0gdW5kZWZpbmVkICYmIHJlcXVpcmVkKSk7XG5cbiAgY29uc3QgaXNTdGF0ZUludmFsaWQgPSBpc0ludmFsaWQodmFsaWRhdGlvblN0YXRlKTtcblxuICBsZXQgZXJyb3JNZXNzYWdlSWQ7XG4gIGlmIChpc1N0YXRlSW52YWxpZCkge1xuICAgIGVycm9yTWVzc2FnZUlkID0gY2FuU2hvd0Vycm9yXG4gICAgICA/IHNldElkKGVsZW1lbnRJZCwgXCJlcnJvclwiKVxuICAgICAgOiBhcmlhRXJyb3JNZXNzYWdlO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8SHZGb3JtRWxlbWVudFxuICAgICAgaWQ9e2lkfVxuICAgICAgbmFtZT17bmFtZX1cbiAgICAgIHZhbHVlPXtkYXRlVmFsdWV9XG4gICAgICBzdGF0dXM9e3ZhbGlkYXRpb25TdGF0ZX1cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgIHJlcXVpcmVkPXtyZXF1aXJlZH1cbiAgICAgIGNsYXNzTmFtZT17Y3goY2xhc3Nlcy5yb290LCBjbGFzc05hbWUpfVxuICAgICAgcmVhZE9ubHk9e3JlYWRPbmx5fVxuICAgICAgey4uLm90aGVyc31cbiAgICA+XG4gICAgICB7KGhhc0xhYmVsIHx8IGhhc0Rlc2NyaXB0aW9uKSAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmxhYmVsQ29udGFpbmVyfT5cbiAgICAgICAgICB7aGFzTGFiZWwgJiYgKFxuICAgICAgICAgICAgPEh2TGFiZWxcbiAgICAgICAgICAgICAgaWQ9e3NldElkKGVsZW1lbnRJZCwgXCJsYWJlbFwiKX1cbiAgICAgICAgICAgICAgbGFiZWw9e2xhYmVsfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMubGFiZWx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICB7aGFzRGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgICAgPEh2SW5mb01lc3NhZ2VcbiAgICAgICAgICAgICAgaWQ9e3NldElkKGVsZW1lbnRJZCwgXCJkZXNjcmlwdGlvblwiKX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7ZGVzY3JpcHRpb259XG4gICAgICAgICAgICA8L0h2SW5mb01lc3NhZ2U+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAgPEh2QmFzZURyb3Bkb3duXG4gICAgICAgIHJvbGU9XCJjb21ib2JveFwiXG4gICAgICAgIGNsYXNzZXM9e3tcbiAgICAgICAgICByb290OiBjbGFzc2VzLmRyb3Bkb3duLFxuICAgICAgICAgIHBhbmVsOiBjbGFzc2VzLnBhbmVsLFxuICAgICAgICAgIGhlYWRlcjogY3goeyBbY2xhc3Nlcy5kcm9wZG93bkhlYWRlckludmFsaWRdOiBpc1N0YXRlSW52YWxpZCB9KSxcbiAgICAgICAgICBoZWFkZXJPcGVuOiBjbGFzc2VzLmRyb3Bkb3duSGVhZGVyT3BlbixcbiAgICAgICAgfX1cbiAgICAgICAgcmVhZE9ubHk9e3JlYWRPbmx5fVxuICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgIGRpc2FibGVQb3J0YWw9e2Rpc2FibGVQb3J0YWx9XG4gICAgICAgIHZhcmlhYmxlV2lkdGhcbiAgICAgICAgcGxhY2VtZW50PXtob3Jpem9udGFsUGxhY2VtZW50fVxuICAgICAgICBleHBhbmRlZD17Y2FsZW5kYXJPcGVufVxuICAgICAgICBvblRvZ2dsZT17aGFuZGxlVG9nZ2xlfVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17aGFuZGxlQ2FsZW5kYXJDbG9zZX1cbiAgICAgICAgb25Db250YWluZXJDcmVhdGlvbj17Zm9jdXNPbkNvbnRhaW5lcn1cbiAgICAgICAgcGxhY2Vob2xkZXI9e3JlbmRlcklucHV0KGdldERhdGVMYWJlbChkYXRlVmFsdWUsIHJhbmdlTW9kZSwgbG9jYWxlKSl9XG4gICAgICAgIGFkb3JubWVudD17XG4gICAgICAgICAgPENhbGVuZGFyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuaWNvbn1cbiAgICAgICAgICAgIGNvbG9yPXtkaXNhYmxlZCA/IFwic2Vjb25kYXJ5XzgwXCIgOiB1bmRlZmluZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgICBwb3BwZXJQcm9wcz17e1xuICAgICAgICAgIG1vZGlmaWVyczogW1xuICAgICAgICAgICAgeyBuYW1lOiBcInByZXZlbnRPdmVyZmxvd1wiLCBlbmFibGVkOiBlc2NhcGVXaXRoUmVmZXJlbmNlIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfX1cbiAgICAgICAgYXJpYS1oYXNwb3B1cD1cImRpYWxvZ1wiXG4gICAgICAgIGFyaWEtbGFiZWw9e2FyaWFMYWJlbH1cbiAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtcbiAgICAgICAgICBbbGFiZWwgJiYgc2V0SWQoZWxlbWVudElkLCBcImxhYmVsXCIpLCBhcmlhTGFiZWxsZWRCeV1cbiAgICAgICAgICAgIC5qb2luKFwiIFwiKVxuICAgICAgICAgICAgLnRyaW0oKSB8fCB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICBhcmlhLWludmFsaWQ9e2lzU3RhdGVJbnZhbGlkID8gdHJ1ZSA6IHVuZGVmaW5lZH1cbiAgICAgICAgYXJpYS1lcnJvcm1lc3NhZ2U9e2Vycm9yTWVzc2FnZUlkfVxuICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PXtcbiAgICAgICAgICBbZGVzY3JpcHRpb24gJiYgc2V0SWQoZWxlbWVudElkLCBcImRlc2NyaXB0aW9uXCIpLCBhcmlhRGVzY3JpYmVkQnldXG4gICAgICAgICAgICAuam9pbihcIiBcIilcbiAgICAgICAgICAgIC50cmltKCkgfHwgdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgICAgey4uLmRyb3Bkb3duUHJvcHN9XG4gICAgICA+XG4gICAgICAgIDxkaXYgcmVmPXtmb2N1c1RhcmdldH0gdGFiSW5kZXg9ey0xfSAvPlxuICAgICAgICA8SHZDYWxlbmRhclxuICAgICAgICAgIGlkPXtzZXRJZChpZCwgXCJjYWxlbmRhclwiKX1cbiAgICAgICAgICBzdGFydEFkb3JubWVudD17c3RhcnRBZG9ybm1lbnR9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZURhdGVDaGFuZ2V9XG4gICAgICAgICAgb25JbnB1dENoYW5nZT17aGFuZGxlSW5wdXREYXRlQ2hhbmdlfVxuICAgICAgICAgIG9uVmlzaWJsZURhdGVDaGFuZ2U9eyhfZXZlbnQsIHR5cGUsIG1vbnRoLCB0YXJnZXQpID0+IHtcbiAgICAgICAgICAgIGRpc3BhdGNoQWN0aW9uKHsgdHlwZSwgdGFyZ2V0LCBtb250aCB9KTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgIHsuLi52aXNpYmxlRGF0ZX1cbiAgICAgICAgICB7Li4uY2FsZW5kYXJQcm9wc31cbiAgICAgICAgICBpbnZhbGlkRGF0ZUxhYmVsPXtsYWJlbHM/LmludmFsaWREYXRlTGFiZWx9XG4gICAgICAgIC8+XG4gICAgICAgIHsocmFuZ2VNb2RlIHx8IHNob3dBY3Rpb25zKSAmJiByZW5kZXJBY3Rpb25zKCl9XG4gICAgICA8L0h2QmFzZURyb3Bkb3duPlxuICAgICAge2NhblNob3dFcnJvciAmJiAoXG4gICAgICAgIDxIdldhcm5pbmdUZXh0XG4gICAgICAgICAgaWQ9e3NldElkKGVsZW1lbnRJZCwgXCJlcnJvclwiKX1cbiAgICAgICAgICBkaXNhYmxlQm9yZGVyXG4gICAgICAgICAgY2xhc3NOYW1lPXtjeChjbGFzc2VzLmVycm9yKX1cbiAgICAgICAgPlxuICAgICAgICAgIHt2YWxpZGF0aW9uTWVzc2FnZX1cbiAgICAgICAgPC9Idldhcm5pbmdUZXh0PlxuICAgICAgKX1cbiAgICA8L0h2Rm9ybUVsZW1lbnQ+XG4gICk7XG59O1xuIl19 */");
221
+ }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRGF0ZVBpY2tlci9EYXRlUGlja2VyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnYjZCIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRGF0ZVBpY2tlci9EYXRlUGlja2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURlZmF1bHRQcm9wcyB9IGZyb20gXCJAY29yZS9ob29rcy91c2VEZWZhdWx0UHJvcHNcIjtcblxuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5cbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSBcIkBoaXRhY2hpdmFudGFyYS91aWtpdC1yZWFjdC1pY29uc1wiO1xuaW1wb3J0IHsgdGhlbWUgfSBmcm9tIFwiQGhpdGFjaGl2YW50YXJhL3Vpa2l0LXN0eWxlc1wiO1xuXG5pbXBvcnQgeyB1c2VDb250cm9sbGVkIH0gZnJvbSBcIkBjb3JlL2hvb2tzL3VzZUNvbnRyb2xsZWRcIjtcbmltcG9ydCB7IHVzZVVuaXF1ZUlkIH0gZnJvbSBcIkBjb3JlL2hvb2tzL3VzZVVuaXF1ZUlkXCI7XG5pbXBvcnQgeyB1c2VMYWJlbHMgfSBmcm9tIFwiQGNvcmUvaG9va3MvdXNlTGFiZWxzXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJAY29yZS9ob29rcy91c2VUaGVtZVwiO1xuaW1wb3J0IHsgRXh0cmFjdE5hbWVzIH0gZnJvbSBcIkBjb3JlL3V0aWxzL2NsYXNzZXNcIjtcbmltcG9ydCB7IHNldElkIH0gZnJvbSBcIkBjb3JlL3V0aWxzL3NldElkXCI7XG5pbXBvcnQgeyB1c2VTYXZlZFN0YXRlIH0gZnJvbSBcIkBjb3JlL3V0aWxzL3VzZVNhdmVkU3RhdGVcIjtcbmltcG9ydCB7XG4gIGlzSW52YWxpZCxcbiAgSHZMYWJlbCxcbiAgSHZGb3JtU3RhdHVzLFxuICBIdldhcm5pbmdUZXh0LFxuICBIdkZvcm1FbGVtZW50LFxuICBIdkluZm9NZXNzYWdlLFxuICBIdkZvcm1FbGVtZW50UHJvcHMsXG59IGZyb20gXCJAY29yZS9jb21wb25lbnRzL0Zvcm1zXCI7XG5pbXBvcnQgeyBpc0RhdGUgfSBmcm9tIFwiQGNvcmUvY29tcG9uZW50cy9DYWxlbmRhci91dGlsc1wiO1xuaW1wb3J0IHsgSHZDYWxlbmRhciwgSHZDYWxlbmRhclByb3BzIH0gZnJvbSBcIkBjb3JlL2NvbXBvbmVudHMvQ2FsZW5kYXJcIjtcbmltcG9ydCB7XG4gIEh2QmFzZURyb3Bkb3duLFxuICBIdkJhc2VEcm9wZG93blByb3BzLFxufSBmcm9tIFwiQGNvcmUvY29tcG9uZW50cy9CYXNlRHJvcGRvd25cIjtcbmltcG9ydCB7IEh2VHlwb2dyYXBoeSB9IGZyb20gXCJAY29yZS9jb21wb25lbnRzL1R5cG9ncmFwaHlcIjtcbmltcG9ydCB7IEh2QWN0aW9uQmFyIH0gZnJvbSBcIkBjb3JlL2NvbXBvbmVudHMvQWN0aW9uQmFyXCI7XG5pbXBvcnQgeyBIdkJ1dHRvbiB9IGZyb20gXCJAY29yZS9jb21wb25lbnRzL0J1dHRvblwiO1xuXG5pbXBvcnQgeyBnZXREYXRlTGFiZWwgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHVzZVZpc2libGVEYXRlIGZyb20gXCIuL3VzZVZpc2libGVEYXRlXCI7XG5pbXBvcnQgeyBzdGF0aWNDbGFzc2VzLCB1c2VDbGFzc2VzIH0gZnJvbSBcIi4vRGF0ZVBpY2tlci5zdHlsZXNcIjtcblxuZXhwb3J0IHsgc3RhdGljQ2xhc3NlcyBhcyBkYXRlUGlja2VyQ2xhc3NlcyB9O1xuXG5leHBvcnQgdHlwZSBIdkRhdGVQaWNrZXJDbGFzc2VzID0gRXh0cmFjdE5hbWVzPHR5cGVvZiB1c2VDbGFzc2VzPjtcblxuY29uc3QgREVGQVVMVF9MQUJFTFMgPSB7XG4gIGFwcGx5TGFiZWw6IFwiQXBwbHlcIixcbiAgY2FuY2VsTGFiZWw6IFwiQ2FuY2VsXCIsXG4gIGNsZWFyTGFiZWw6IFwiQ2xlYXJcIixcbiAgaW52YWxpZExhYmVsOiBcIkludmFsaWQgZGF0ZVwiLFxufTtcblxuLyoqIEBkZXByZWNhdGVkIHVzZSBgSHZGb3JtU3RhdHVzYCBpbnN0ZWFkICovXG5leHBvcnQgdHlwZSBIdkRhdGVQaWNrZXJTdGF0dXMgPSBIdkZvcm1TdGF0dXM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSHZEYXRlUGlja2VyUHJvcHNcbiAgZXh0ZW5kcyBPbWl0PEh2Rm9ybUVsZW1lbnRQcm9wcywgXCJvbkNoYW5nZVwiPixcbiAgICBQaWNrPFxuICAgICAgSHZCYXNlRHJvcGRvd25Qcm9wcyxcbiAgICAgIFwiZGlzYWJsZVBvcnRhbFwiIHwgXCJleHBhbmRlZFwiIHwgXCJkZWZhdWx0RXhwYW5kZWRcIiB8IFwib25Ub2dnbGVcIlxuICAgID4ge1xuICAvKipcbiAgICogSWRlbnRpZmllcyB0aGUgZWxlbWVudCB0aGF0IHByb3ZpZGVzIGFuIGVycm9yIG1lc3NhZ2UgZm9yIHRoZSBkYXRlIHBpY2tlci5cbiAgICpcbiAgICogV2lsbCBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgdmFsaWRhdGlvbiBzdGF0dXMgaXMgaW52YWxpZC5cbiAgICovXG4gIFwiYXJpYS1lcnJvcm1lc3NhZ2VcIj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjYWxsYmFjayBmaXJlZCB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuICAgKi9cbiAgb25DaGFuZ2U/OiAoZGF0ZT86IERhdGUsIGVuZERhdGU/OiBEYXRlKSA9PiB2b2lkO1xuICAvKipcbiAgICogVGhlIGNhbGxiYWNrIGZpcmVkIHdoZW4gdXNlciBjbGlja3Mgb24gY2FuY2VsLlxuICAgKi9cbiAgb25DYW5jZWw/OiAoKSA9PiB2b2lkO1xuICAvKipcbiAgICogVGhlIGNhbGxiYWNrIGZpcmVkIHdoZW4gdXNlciBjbGlja3Mgb24gY2xlYXIuXG4gICAqL1xuICBvbkNsZWFyPzogKCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIEFuIG9iamVjdCBjb250YWluaW5nIGFsbCB0aGUgbGFiZWxzIGZvciB0aGUgZGF0ZXBpY2tlci5cbiAgICovXG4gIGxhYmVscz86IHtcbiAgICAvKipcbiAgICAgKiBBcHBseSBidXR0b24gbGFiZWwuXG4gICAgICovXG4gICAgYXBwbHlMYWJlbD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBDYW5jZWwgYnV0dG9uIGxhYmVsLlxuICAgICAqL1xuICAgIGNhbmNlbExhYmVsPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIENsZWFyIGJ1dHRvbiBsYWJlbC5cbiAgICAgKi9cbiAgICBjbGVhckxhYmVsPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEludmFsaWQgRGF0ZSBsYWJlbC5cbiAgICAgKi9cbiAgICBpbnZhbGlkRGF0ZUxhYmVsPzogc3RyaW5nO1xuICB9O1xuICAvKipcbiAgICogVGhlIGluaXRpYWwgdmFsdWUgb2YgdGhlIGlucHV0IHdoZW4gaW4gc2luZ2xlIGNhbGVuZGFyIG1vZGUuXG4gICAqL1xuICB2YWx1ZT86IERhdGU7XG4gIC8qKlxuICAgKiBUaGUgaW5pdGlhbCB2YWx1ZSBmb3IgdGhlIHN0YXJ0IGRhdGUgd2hlbiBpbiByYW5nZSBtb2RlLlxuICAgKi9cbiAgc3RhcnRWYWx1ZT86IERhdGU7XG4gIC8qKlxuICAgKiBUaGUgaW5pdGlhbCB2YWx1ZSBmb3IgdGhlIGVuZCBkYXRlIHdoZW4gaW4gcmFuZ2UgbW9kZS5cbiAgICovXG4gIGVuZFZhbHVlPzogRGF0ZTtcbiAgLyoqXG4gICAqIEZsYWcgaW5mb3JtaW5nIGlmIHRoZSB0aGUgY29tcG9uZW50IHNob3VsZCBiZSBpbiByYW5nZSBtb2RlIG9yIGluIHNpbmdsZSBtb2RlLlxuICAgKi9cbiAgLy8gVE9ETzogcmVtb3ZlIHRoaXMgaW4gZmF2b3VyIG9mIGRpc2NyaW1pbmF0ZWQgdW5pb25cbiAgcmFuZ2VNb2RlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBwbGFjZW1lbnQgd2hlcmUgdGhlIGNhbGVuZGFyIHNob3VsZCBiZSBwbGFjZWQgYWNjb3JkaW5nIHRvIHRoZSBpbnB1dC4gT3B0aW9ucyBhcmUgYGxlZnRgIG9yIGByaWdodGAuXG4gICAqIE5vdGUgdGhpcyBwcm9wIG9ubHkgYWZmZWN0cyB0aGUgY2FsZW5kYXIgd2hlbiBpbiBgcmFuZ2VNb2RlYC5cbiAgICovXG4gIGhvcml6b250YWxQbGFjZW1lbnQ/OiBcImxlZnRcIiB8IFwicmlnaHRcIjtcbiAgLyoqXG4gICAqIFRoZSBjYWxlbmRhciBsb2NhbGUuIElmIHVuZGVmaW5lZCwgaXQgdXNlcyBjYWxlbmRhciBkZWZhdWx0XG4gICAqL1xuICBsb2NhbGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDb250cm9scyBpZiBhY3Rpb25zIGJ1dHRvbnMgYXJlIHZpc2libGUgYXQgdGhlIGNhbGVuZGFyLlxuICAgKi9cbiAgc2hvd0FjdGlvbnM/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29udHJvbHMgaWYgY2xlYXIgYnV0dG9uIGlzIHZpc2libGUgYXQgdGhlIGNhbGVuZGFyLFxuICAgKiBvbmx5IHdvcmtzIGlmIHNob3dpbmcgYWN0aW9ucyBvciBpbiByYW5nZSBtb2RlLlxuICAgKi9cbiAgc2hvd0NsZWFyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNldHMgaWYgdGhlIGNhbGVuZGFyIGNvbnRhaW5lciBzaG91bGQgZm9sbG93IHRoZSBkYXRlIHBpY2tlciBpbnB1dCBvdXQgb2YgdGhlIHNjcmVlbiBvciBzdGF5IHZpc2libGUuXG4gICAqL1xuICBlc2NhcGVXaXRoUmVmZXJlbmNlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFuIGVsZW1lbnQgcGxhY2VkIGJlZm9yZSB0aGUgQ2FsZW5kYXJcbiAgICovXG4gIHN0YXJ0QWRvcm5tZW50PzogUmVhY3QuUmVhY3ROb2RlO1xuICAvKipcbiAgICogQW4gb2JqZWN0IGNvbnRhaW5pbmcgcHJvcHMgdG8gYmUgcGFzc2VkIG9udG8gdGhlIGJhc2VEcm9wZG93bi5cbiAgICovXG4gIGRyb3Bkb3duUHJvcHM/OiBQYXJ0aWFsPEh2QmFzZURyb3Bkb3duUHJvcHM+O1xuICAvKipcbiAgICogQWRkaXRpb25hbCBwcm9wcyBwYXNzZWQgdG8gdGhlIEh2Q2FsZW5kYXIgY29tcG9uZW50LlxuICAgKi9cbiAgY2FsZW5kYXJQcm9wcz86IFBhcnRpYWw8SHZDYWxlbmRhclByb3BzPjtcbiAgLyoqXG4gICAqIEEgSnNzIE9iamVjdCB1c2VkIHRvIG92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgY29tcG9uZW50IHN0eWxlcyBhcHBsaWVkLlxuICAgKi9cbiAgY2xhc3Nlcz86IEh2RGF0ZVBpY2tlckNsYXNzZXM7XG59XG5cbi8qKlxuICogQSBkYXRlIHBpY2tlciwgcG9wdXAgY2FsZW5kYXIgb3IgZGF0ZSByYW5nZSBwaWNrZXIgaXMgYSBncmFwaGljYWwgdXNlclxuICogaW50ZXJmYWNlIHdpZGdldCB3aGljaCBhbGxvd3MgdGhlIHVzZXIgdG8gc2VsZWN0IGEgZGF0ZSBmcm9tIGEgY2FsZW5kYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBIdkRhdGVQaWNrZXIgPSAocHJvcHM6IEh2RGF0ZVBpY2tlclByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc2VzOiBjbGFzc2VzUHJvcCxcbiAgICBjbGFzc05hbWUsXG5cbiAgICBpZCxcbiAgICBuYW1lLFxuXG4gICAgcmVxdWlyZWQgPSBmYWxzZSxcbiAgICBkaXNhYmxlZCA9IGZhbHNlLFxuICAgIHJlYWRPbmx5LFxuXG4gICAgbGFiZWwsXG4gICAgXCJhcmlhLWxhYmVsXCI6IGFyaWFMYWJlbCxcbiAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBhcmlhTGFiZWxsZWRCeSxcbiAgICBkZXNjcmlwdGlvbixcbiAgICBcImFyaWEtZGVzY3JpYmVkYnlcIjogYXJpYURlc2NyaWJlZEJ5LFxuXG4gICAgb25DaGFuZ2UsXG4gICAgb25DYW5jZWwsXG4gICAgb25DbGVhcixcbiAgICBzdGF0dXMsXG4gICAgc3RhdHVzTWVzc2FnZSxcbiAgICBcImFyaWEtZXJyb3JtZXNzYWdlXCI6IGFyaWFFcnJvck1lc3NhZ2UsXG5cbiAgICBwbGFjZWhvbGRlcixcblxuICAgIGxhYmVsczogbGFiZWxzUHJvcCxcblxuICAgIHZhbHVlLFxuICAgIHN0YXJ0VmFsdWUsXG4gICAgZW5kVmFsdWUsXG5cbiAgICBleHBhbmRlZCxcbiAgICBkZWZhdWx0RXhwYW5kZWQsXG4gICAgb25Ub2dnbGUsXG4gICAgcmFuZ2VNb2RlID0gZmFsc2UsXG4gICAgc3RhcnRBZG9ybm1lbnQsXG4gICAgaG9yaXpvbnRhbFBsYWNlbWVudCA9IFwicmlnaHRcIixcbiAgICBsb2NhbGU6IGxvY2FsZVByb3AsXG4gICAgc2hvd0FjdGlvbnMgPSBmYWxzZSxcbiAgICBzaG93Q2xlYXIgPSBmYWxzZSxcbiAgICBkaXNhYmxlUG9ydGFsID0gdHJ1ZSxcbiAgICBlc2NhcGVXaXRoUmVmZXJlbmNlID0gdHJ1ZSxcbiAgICBkcm9wZG93blByb3BzLFxuICAgIGNhbGVuZGFyUHJvcHMsXG4gICAgLi4ub3RoZXJzXG4gIH0gPSB1c2VEZWZhdWx0UHJvcHMoXCJIdkRhdGVQaWNrZXJcIiwgcHJvcHMpO1xuXG4gIGNvbnN0IHsgY2xhc3NlcywgY3ggfSA9IHVzZUNsYXNzZXMoY2xhc3Nlc1Byb3ApO1xuICBjb25zdCBsYWJlbHMgPSB1c2VMYWJlbHMoREVGQVVMVF9MQUJFTFMsIGxhYmVsc1Byb3ApO1xuXG4gIGNvbnN0IGVsZW1lbnRJZCA9IHVzZVVuaXF1ZUlkKGlkLCBcImh2ZGF0ZXBpY2tlclwiKTtcblxuICBjb25zdCBbdmFsaWRhdGlvblN0YXRlLCBzZXRWYWxpZGF0aW9uU3RhdGVdID0gdXNlQ29udHJvbGxlZChcbiAgICBzdGF0dXMsXG4gICAgXCJzdGFuZEJ5XCJcbiAgKTtcblxuICBjb25zdCBbdmFsaWRhdGlvbk1lc3NhZ2VdID0gdXNlQ29udHJvbGxlZChzdGF0dXNNZXNzYWdlLCBcIlJlcXVpcmVkXCIpO1xuXG4gIGNvbnN0IGxvY2FsZSA9IGxvY2FsZVByb3AgfHwgXCJlbi1VU1wiO1xuXG4gIGNvbnN0IFtjYWxlbmRhck9wZW4sIHNldENhbGVuZGFyT3Blbl0gPSB1c2VDb250cm9sbGVkKFxuICAgIGV4cGFuZGVkLFxuICAgIEJvb2xlYW4oZGVmYXVsdEV4cGFuZGVkKVxuICApO1xuXG4gIGNvbnN0IFtzdGFydERhdGUsIHNldFN0YXJ0RGF0ZSwgcm9sbGJhY2tTdGFydERhdGVdID0gdXNlU2F2ZWRTdGF0ZShcbiAgICByYW5nZU1vZGUgPyBzdGFydFZhbHVlIDogdmFsdWVcbiAgKTtcbiAgY29uc3QgW2VuZERhdGUsIHNldEVuZERhdGUsIHJvbGxiYWNrRW5kRGF0ZV0gPSB1c2VTYXZlZFN0YXRlKGVuZFZhbHVlKTtcblxuICBjb25zdCBbdmlzaWJsZURhdGUsIGRpc3BhdGNoQWN0aW9uXSA9IHVzZVZpc2libGVEYXRlKHN0YXJ0RGF0ZSwgZW5kRGF0ZSk7XG5cbiAgY29uc3QgZm9jdXNUYXJnZXQgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuXG4gIGNvbnN0IHsgYWN0aXZlVGhlbWUgfSA9IHVzZVRoZW1lKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRTdGFydERhdGUocmFuZ2VNb2RlID8gc3RhcnRWYWx1ZSA6IHZhbHVlLCB0cnVlKTtcbiAgICBzZXRFbmREYXRlKGVuZFZhbHVlLCB0cnVlKTtcbiAgfSwgW3ZhbHVlLCBzdGFydFZhbHVlLCBlbmRWYWx1ZSwgcmFuZ2VNb2RlLCBzZXRTdGFydERhdGUsIHNldEVuZERhdGVdKTtcblxuICBjb25zdCBlbmREYXRlSXNTZXQgPSB1c2VSZWYoZmFsc2UpO1xuICBlbmREYXRlSXNTZXQuY3VycmVudCA9IGVuZERhdGUgIT0gbnVsbDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzdGFydERhdGUgIT0gbnVsbCkge1xuICAgICAgZGlzcGF0Y2hBY3Rpb24oe1xuICAgICAgICB0eXBlOiBcIm1vbnRoX3llYXJcIixcbiAgICAgICAgdGFyZ2V0OiBlbmREYXRlSXNTZXQuY3VycmVudCA/IFwibGVmdFwiIDogXCJiZXN0XCIsXG4gICAgICAgIHllYXI6IHN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICBtb250aDogc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxLFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbZGlzcGF0Y2hBY3Rpb24sIHN0YXJ0RGF0ZV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGVuZERhdGUgIT0gbnVsbCkge1xuICAgICAgZGlzcGF0Y2hBY3Rpb24oe1xuICAgICAgICB0eXBlOiBcIm1vbnRoX3llYXJcIixcbiAgICAgICAgdGFyZ2V0OiBcInJpZ2h0XCIsXG4gICAgICAgIHllYXI6IGVuZERhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgbW9udGg6IGVuZERhdGUuZ2V0TW9udGgoKSArIDEsXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtkaXNwYXRjaEFjdGlvbiwgZW5kRGF0ZV0pO1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBgQXBwbHlgIGFjdGlvbi4gQm90aCBzaW5nbGUgYW5kIHJhbmdlZCBtb2RlcyBhcmUgaGFuZGxlZCBoZXJlLlxuICAgKi9cbiAgY29uc3QgaGFuZGxlQXBwbHkgPSAoKSA9PiB7XG4gICAgc2V0U3RhcnREYXRlKHN0YXJ0RGF0ZSwgdHJ1ZSk7XG4gICAgc2V0RW5kRGF0ZShlbmREYXRlID8/IHN0YXJ0RGF0ZSwgdHJ1ZSk7XG5cbiAgICBvbkNoYW5nZT8uKHN0YXJ0RGF0ZSwgZW5kRGF0ZSk7XG5cbiAgICBzZXRWYWxpZGF0aW9uU3RhdGUoKCkgPT4ge1xuICAgICAgLy8gdGhpcyB3aWxsIG9ubHkgcnVuIGlmIHN0YXR1cyBpcyB1bmNvbnRyb2xsZWRcbiAgICAgIGlmIChyZXF1aXJlZCAmJiAoIWlzRGF0ZShzdGFydERhdGUpIHx8IChyYW5nZU1vZGUgJiYgIWlzRGF0ZShlbmREYXRlKSkpKSB7XG4gICAgICAgIHJldHVybiBcImludmFsaWRcIjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFwidmFsaWRcIjtcbiAgICB9KTtcblxuICAgIHNldENhbGVuZGFyT3BlbihmYWxzZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGBDYW5jZWxgIGFjdGlvbi4gQm90aCBzaW5nbGUgYW5kIHJhbmdlZCBtb2RlcyBhcmUgaGFuZGxlZCBoZXJlLlxuICAgKi9cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIHJvbGxiYWNrU3RhcnREYXRlKCk7XG4gICAgcm9sbGJhY2tFbmREYXRlKCk7XG5cbiAgICBvbkNhbmNlbD8uKCk7XG5cbiAgICBzZXRDYWxlbmRhck9wZW4oZmFsc2UpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBgQ2FuY2VsYCBhY3Rpb24uIEJvdGggc2luZ2xlIGFuZCByYW5nZWQgbW9kZXMgYXJlIGhhbmRsZWQgaGVyZS5cbiAgICovXG4gIGNvbnN0IGhhbmRsZUNsZWFyID0gKCkgPT4ge1xuICAgIHNldFN0YXJ0RGF0ZSh1bmRlZmluZWQsIGZhbHNlKTtcbiAgICBzZXRFbmREYXRlKHVuZGVmaW5lZCwgZmFsc2UpO1xuICAgIG9uQ2xlYXI/LigpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNhbGVuZGFyQ2xvc2UgPSAoKSA9PiB7XG4gICAgY29uc3Qgc2hvdWxkU2F2ZSA9ICEocmFuZ2VNb2RlIHx8IHNob3dBY3Rpb25zKTtcbiAgICBpZiAoc2hvdWxkU2F2ZSkge1xuICAgICAgaGFuZGxlQXBwbHkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGFuZGxlQ2FuY2VsKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZTogSHZCYXNlRHJvcGRvd25Qcm9wc1tcIm9uVG9nZ2xlXCJdID0gKGV2dCwgb3BlbikgPT4ge1xuICAgIC8qIFxuICAgICBJZiBldnQgaXMgbnVsbCB0aGlzIHRvZ2dsZSB3YXNuJ3QgdHJpZ2dlcmVkIGJ5IHRoZSB1c2VyLlxuICAgICBpbnN0ZWFkIGl0IHdhcyB0cmlnZ2VyZWQgYnkgdGhlIGJhc2VEcm9wZG93biB1c2VFZmZlY3QgYWZ0ZXJcbiAgICAgdGhlIGRhdGVwaWNrZXIgY2hhbmdlZCB0aGUgZXhwYW5kZWQgdmFsdWUgdGhpcyBiYXNlRHJvcGRvd24gYmVoYXZpb3IgbmVlZHMgYSByZXZpZXdcbiAgICAqL1xuICAgIGlmIChldnQgPT09IG51bGwpIHJldHVybjtcbiAgICBvblRvZ2dsZT8uKGV2dCwgb3Blbik7XG4gICAgc2V0Q2FsZW5kYXJPcGVuKG9wZW4pO1xuICAgIGlmICghb3BlbikgaGFuZGxlQ2FsZW5kYXJDbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IGZvY3VzT25Db250YWluZXIgPSAoKSA9PiB7XG4gICAgZm9jdXNUYXJnZXQuY3VycmVudD8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVEYXRlQ2hhbmdlOiBIdkNhbGVuZGFyUHJvcHNbXCJvbkNoYW5nZVwiXSA9IChldmVudCwgbmV3RGF0ZSkgPT4ge1xuICAgIGlmICghaXNEYXRlKG5ld0RhdGUpKSByZXR1cm47XG5cbiAgICBjb25zdCBhdXRvU2F2ZSA9ICFzaG93QWN0aW9ucyAmJiAhcmFuZ2VNb2RlO1xuXG4gICAgaWYgKHJhbmdlTW9kZSkge1xuICAgICAgaWYgKCFzdGFydERhdGUgfHwgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB8fCBuZXdEYXRlIDwgc3RhcnREYXRlKSB7XG4gICAgICAgIHNldFN0YXJ0RGF0ZShuZXdEYXRlKTtcbiAgICAgICAgc2V0RW5kRGF0ZSh1bmRlZmluZWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RW5kRGF0ZShuZXdEYXRlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2V0U3RhcnREYXRlKG5ld0RhdGUsIGF1dG9TYXZlKTtcbiAgICB9XG5cbiAgICBpZiAoYXV0b1NhdmUpIHtcbiAgICAgIG9uQ2hhbmdlPy4obmV3RGF0ZSk7XG5cbiAgICAgIHNldFZhbGlkYXRpb25TdGF0ZSgoKSA9PiB7XG4gICAgICAgIC8vIHRoaXMgd2lsbCBvbmx5IHJ1biBpZiBzdGF0dXMgaXMgdW5jb250cm9sbGVkXG4gICAgICAgIGlmIChyZXF1aXJlZCAmJiAhaXNEYXRlKG5ld0RhdGUpKSB7XG4gICAgICAgICAgcmV0dXJuIFwiaW52YWxpZFwiO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFwidmFsaWRcIjtcbiAgICAgIH0pO1xuXG4gICAgICBzZXRDYWxlbmRhck9wZW4oZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVJbnB1dERhdGVDaGFuZ2U6IEh2Q2FsZW5kYXJQcm9wc1tcIm9uSW5wdXRDaGFuZ2VcIl0gPSAoXG4gICAgZXZlbnQsXG4gICAgbmV3RGF0ZSxcbiAgICBwb3NpdGlvblxuICApID0+IHtcbiAgICBpZiAoIWlzRGF0ZShuZXdEYXRlKSkgcmV0dXJuO1xuXG4gICAgaWYgKCFyYW5nZU1vZGUpIHtcbiAgICAgIGhhbmRsZURhdGVDaGFuZ2UoZXZlbnQgYXMgYW55LCBuZXdEYXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAocG9zaXRpb24gPT09IFwibGVmdFwiKSB7XG4gICAgICBpZiAoZW5kRGF0ZSkgc2V0U3RhcnREYXRlKG5ld0RhdGUgPiBlbmREYXRlID8gZW5kRGF0ZSA6IG5ld0RhdGUpO1xuICAgIH0gZWxzZSBpZiAocG9zaXRpb24gPT09IFwicmlnaHRcIikge1xuICAgICAgaWYgKCFzdGFydERhdGUpIHtcbiAgICAgICAgaWYgKGVuZERhdGUpIHNldFN0YXJ0RGF0ZShuZXdEYXRlID4gZW5kRGF0ZSA/IGVuZERhdGUgOiBuZXdEYXRlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc2V0RW5kRGF0ZShuZXdEYXRlIDwgc3RhcnREYXRlID8gc3RhcnREYXRlIDogbmV3RGF0ZSk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBjb250YWluZXIgZm9yIHRoZSBhY3Rpb24gZWxlbWVudHMuXG4gICAqL1xuICBjb25zdCByZW5kZXJBY3Rpb25zID0gKCkgPT4gKFxuICAgIDxIdkFjdGlvbkJhciBjbGFzc05hbWU9e2N4KHsgW2NsYXNzZXMuYWN0aW9uQ29udGFpbmVyXTogc2hvd0NsZWFyIH0pfT5cbiAgICAgIHtzaG93Q2xlYXIgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5sZWZ0Q29udGFpbmVyfT5cbiAgICAgICAgICA8SHZCdXR0b25cbiAgICAgICAgICAgIGlkPXtzZXRJZChpZCwgXCJhY3Rpb25cIiwgXCJjbGVhclwiKX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5hY3Rpb259XG4gICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeUdob3N0XCJcbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsZWFyfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtsYWJlbHM/LmNsZWFyTGFiZWx9XG4gICAgICAgICAgPC9IdkJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMucmlnaHRDb250YWluZXJ9PlxuICAgICAgICA8SHZCdXR0b25cbiAgICAgICAgICBpZD17c2V0SWQoaWQsIFwiYWN0aW9uXCIsIFwiYXBwbHlcIil9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmFjdGlvbn1cbiAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeUdob3N0XCJcbiAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVBcHBseX1cbiAgICAgICAgPlxuICAgICAgICAgIHtsYWJlbHM/LmFwcGx5TGFiZWx9XG4gICAgICAgIDwvSHZCdXR0b24+XG4gICAgICAgIDxIdkJ1dHRvblxuICAgICAgICAgIGlkPXtzZXRJZChpZCwgXCJhY3Rpb25cIiwgXCJjYW5jZWxcIil9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmFjdGlvbn1cbiAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeUdob3N0XCJcbiAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWxzPy5jYW5jZWxMYWJlbH1cbiAgICAgICAgPC9IdkJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvSHZBY3Rpb25CYXI+XG4gICk7XG5cbiAgY29uc3Qgc3R5bGVkVHlwb2dyYXBoeSA9IChcbiAgICBkYXRlU3RyaW5nOiBzdHJpbmcsXG4gICAgdmFyaWFudDogYW55LFxuICAgIHRleHQ6IFJlYWN0Tm9kZVxuICApID0+IHtcbiAgICBjb25zdCBTdHlsZWRUeXBvZ3JhcGh5ID0gc3R5bGVkKEh2VHlwb2dyYXBoeSkoe1xuICAgICAgY29sb3I6IGRhdGVTdHJpbmdcbiAgICAgICAgPyB0aGVtZS5jb2xvcnMuc2Vjb25kYXJ5XG4gICAgICAgIDogdGhlbWUuZGF0ZVBpY2tlci5kcm9wZG93blBsYWNlaG9sZGVyQ29sb3IsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gPFN0eWxlZFR5cG9ncmFwaHkgdmFyaWFudD17dmFyaWFudH0+e3RleHR9PC9TdHlsZWRUeXBvZ3JhcGh5PjtcbiAgfTtcblxuICBjb25zdCByZW5kZXJJbnB1dCA9IChkYXRlU3RyaW5nOiBzdHJpbmcpID0+XG4gICAgc3R5bGVkVHlwb2dyYXBoeShcbiAgICAgIGRhdGVTdHJpbmcsXG4gICAgICBhY3RpdmVUaGVtZT8uZGF0ZVBpY2tlci5wbGFjZWhvbGRlclZhcmlhbnQsXG4gICAgICAoZGF0ZVN0cmluZyB8fCBwbGFjZWhvbGRlcikgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBkYXRlU3RyaW5nIHx8IHBsYWNlaG9sZGVyXG4gICAgKTtcblxuICBjb25zdCBkYXRlVmFsdWUgPSByYW5nZU1vZGUgPyB7IHN0YXJ0RGF0ZSwgZW5kRGF0ZSB9IDogc3RhcnREYXRlO1xuXG4gIGNvbnN0IGhhc0xhYmVsID0gbGFiZWwgIT0gbnVsbDtcbiAgY29uc3QgaGFzRGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbiAhPSBudWxsO1xuXG4gIC8vIHRoZSBlcnJvciBtZXNzYWdlIGFyZWEgd2lsbCBvbmx5IGJlIGNyZWF0ZWQgaWY6XG4gIC8vIC0gYW4gZXh0ZXJuYWwgZWxlbWVudCB0aGF0IHByb3ZpZGVzIGFuIGVycm9yIG1lc3NhZ2UgaXNuJ3QgaWRlbnRpZmllZCB2aWEgYXJpYS1lcnJvcm1lc3NhZ2UgQU5EXG4gIC8vICAgLSBib3RoIHN0YXR1cyBhbmQgc3RhdHVzTWVzc2FnZSBwcm9wZXJ0aWVzIGFyZSBiZWluZyBjb250cm9sbGVkIE9SXG4gIC8vICAgLSBzdGF0dXMgaXMgdW5jb250cm9sbGVkIGFuZCByZXF1aXJlZCBpcyB0cnVlXG4gIGNvbnN0IGNhblNob3dFcnJvciA9XG4gICAgYXJpYUVycm9yTWVzc2FnZSA9PSBudWxsICYmXG4gICAgKChzdGF0dXMgIT09IHVuZGVmaW5lZCAmJiBzdGF0dXNNZXNzYWdlICE9PSB1bmRlZmluZWQpIHx8XG4gICAgICAoc3RhdHVzID09PSB1bmRlZmluZWQgJiYgcmVxdWlyZWQpKTtcblxuICBjb25zdCBpc1N0YXRlSW52YWxpZCA9IGlzSW52YWxpZCh2YWxpZGF0aW9uU3RhdGUpO1xuXG4gIGxldCBlcnJvck1lc3NhZ2VJZDtcbiAgaWYgKGlzU3RhdGVJbnZhbGlkKSB7XG4gICAgZXJyb3JNZXNzYWdlSWQgPSBjYW5TaG93RXJyb3JcbiAgICAgID8gc2V0SWQoZWxlbWVudElkLCBcImVycm9yXCIpXG4gICAgICA6IGFyaWFFcnJvck1lc3NhZ2U7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxIdkZvcm1FbGVtZW50XG4gICAgICBpZD17aWR9XG4gICAgICBuYW1lPXtuYW1lfVxuICAgICAgdmFsdWU9e2RhdGVWYWx1ZX1cbiAgICAgIHN0YXR1cz17dmFsaWRhdGlvblN0YXRlfVxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgcmVxdWlyZWQ9e3JlcXVpcmVkfVxuICAgICAgY2xhc3NOYW1lPXtjeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSl9XG4gICAgICByZWFkT25seT17cmVhZE9ubHl9XG4gICAgICB7Li4ub3RoZXJzfVxuICAgID5cbiAgICAgIHsoaGFzTGFiZWwgfHwgaGFzRGVzY3JpcHRpb24pICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMubGFiZWxDb250YWluZXJ9PlxuICAgICAgICAgIHtoYXNMYWJlbCAmJiAoXG4gICAgICAgICAgICA8SHZMYWJlbFxuICAgICAgICAgICAgICBpZD17c2V0SWQoZWxlbWVudElkLCBcImxhYmVsXCIpfVxuICAgICAgICAgICAgICBsYWJlbD17bGFiZWx9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHtoYXNEZXNjcmlwdGlvbiAmJiAoXG4gICAgICAgICAgICA8SHZJbmZvTWVzc2FnZVxuICAgICAgICAgICAgICBpZD17c2V0SWQoZWxlbWVudElkLCBcImRlc2NyaXB0aW9uXCIpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuZGVzY3JpcHRpb259XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtkZXNjcmlwdGlvbn1cbiAgICAgICAgICAgIDwvSHZJbmZvTWVzc2FnZT5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgICA8SHZCYXNlRHJvcGRvd25cbiAgICAgICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICAgICAgY2xhc3Nlcz17e1xuICAgICAgICAgIHJvb3Q6IGNsYXNzZXMuZHJvcGRvd24sXG4gICAgICAgICAgcGFuZWw6IGNsYXNzZXMucGFuZWwsXG4gICAgICAgICAgaGVhZGVyOiBjeCh7IFtjbGFzc2VzLmRyb3Bkb3duSGVhZGVySW52YWxpZF06IGlzU3RhdGVJbnZhbGlkIH0pLFxuICAgICAgICAgIGhlYWRlck9wZW46IGNsYXNzZXMuZHJvcGRvd25IZWFkZXJPcGVuLFxuICAgICAgICB9fVxuICAgICAgICByZWFkT25seT17cmVhZE9ubHl9XG4gICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgZGlzYWJsZVBvcnRhbD17ZGlzYWJsZVBvcnRhbH1cbiAgICAgICAgdmFyaWFibGVXaWR0aFxuICAgICAgICBwbGFjZW1lbnQ9e2hvcml6b250YWxQbGFjZW1lbnR9XG4gICAgICAgIGV4cGFuZGVkPXtjYWxlbmRhck9wZW59XG4gICAgICAgIG9uVG9nZ2xlPXtoYW5kbGVUb2dnbGV9XG4gICAgICAgIG9uQ2xpY2tPdXRzaWRlPXtoYW5kbGVDYWxlbmRhckNsb3NlfVxuICAgICAgICBvbkNvbnRhaW5lckNyZWF0aW9uPXtmb2N1c09uQ29udGFpbmVyfVxuICAgICAgICBwbGFjZWhvbGRlcj17cmVuZGVySW5wdXQoZ2V0RGF0ZUxhYmVsKGRhdGVWYWx1ZSwgcmFuZ2VNb2RlLCBsb2NhbGUpKX1cbiAgICAgICAgYWRvcm5tZW50PXtcbiAgICAgICAgICA8Q2FsZW5kYXJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5pY29ufVxuICAgICAgICAgICAgY29sb3I9e2Rpc2FibGVkID8gXCJzZWNvbmRhcnlfODBcIiA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIHBvcHBlclByb3BzPXt7XG4gICAgICAgICAgbW9kaWZpZXJzOiBbXG4gICAgICAgICAgICB7IG5hbWU6IFwicHJldmVudE92ZXJmbG93XCIsIGVuYWJsZWQ6IGVzY2FwZVdpdGhSZWZlcmVuY2UgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9fVxuICAgICAgICBhcmlhLWhhc3BvcHVwPVwiZGlhbG9nXCJcbiAgICAgICAgYXJpYS1sYWJlbD17YXJpYUxhYmVsfVxuICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e1xuICAgICAgICAgIFtsYWJlbCAmJiBzZXRJZChlbGVtZW50SWQsIFwibGFiZWxcIiksIGFyaWFMYWJlbGxlZEJ5XVxuICAgICAgICAgICAgLmpvaW4oXCIgXCIpXG4gICAgICAgICAgICAudHJpbSgpIHx8IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgICAgIGFyaWEtaW52YWxpZD17aXNTdGF0ZUludmFsaWQgPyB0cnVlIDogdW5kZWZpbmVkfVxuICAgICAgICBhcmlhLWVycm9ybWVzc2FnZT17ZXJyb3JNZXNzYWdlSWR9XG4gICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9e1xuICAgICAgICAgIFtkZXNjcmlwdGlvbiAmJiBzZXRJZChlbGVtZW50SWQsIFwiZGVzY3JpcHRpb25cIiksIGFyaWFEZXNjcmliZWRCeV1cbiAgICAgICAgICAgIC5qb2luKFwiIFwiKVxuICAgICAgICAgICAgLnRyaW0oKSB8fCB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICB7Li4uZHJvcGRvd25Qcm9wc31cbiAgICAgID5cbiAgICAgICAgPGRpdiByZWY9e2ZvY3VzVGFyZ2V0fSB0YWJJbmRleD17LTF9IC8+XG4gICAgICAgIDxIdkNhbGVuZGFyXG4gICAgICAgICAgaWQ9e3NldElkKGlkLCBcImNhbGVuZGFyXCIpfVxuICAgICAgICAgIHN0YXJ0QWRvcm5tZW50PXtzdGFydEFkb3JubWVudH1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlRGF0ZUNoYW5nZX1cbiAgICAgICAgICBvbklucHV0Q2hhbmdlPXtoYW5kbGVJbnB1dERhdGVDaGFuZ2V9XG4gICAgICAgICAgb25WaXNpYmxlRGF0ZUNoYW5nZT17KF9ldmVudCwgdHlwZSwgbW9udGgsIHRhcmdldCkgPT4ge1xuICAgICAgICAgICAgZGlzcGF0Y2hBY3Rpb24oeyB0eXBlLCB0YXJnZXQsIG1vbnRoIH0pO1xuICAgICAgICAgIH19XG4gICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgey4uLnZpc2libGVEYXRlfVxuICAgICAgICAgIHsuLi5jYWxlbmRhclByb3BzfVxuICAgICAgICAgIGludmFsaWREYXRlTGFiZWw9e2xhYmVscz8uaW52YWxpZERhdGVMYWJlbH1cbiAgICAgICAgLz5cbiAgICAgICAgeyhyYW5nZU1vZGUgfHwgc2hvd0FjdGlvbnMpICYmIHJlbmRlckFjdGlvbnMoKX1cbiAgICAgIDwvSHZCYXNlRHJvcGRvd24+XG4gICAgICB7Y2FuU2hvd0Vycm9yICYmIChcbiAgICAgICAgPEh2V2FybmluZ1RleHRcbiAgICAgICAgICBpZD17c2V0SWQoZWxlbWVudElkLCBcImVycm9yXCIpfVxuICAgICAgICAgIGRpc2FibGVCb3JkZXJcbiAgICAgICAgICBjbGFzc05hbWU9e2N4KGNsYXNzZXMuZXJyb3IpfVxuICAgICAgICA+XG4gICAgICAgICAge3ZhbGlkYXRpb25NZXNzYWdlfVxuICAgICAgICA8L0h2V2FybmluZ1RleHQ+XG4gICAgICApfVxuICAgIDwvSHZGb3JtRWxlbWVudD5cbiAgKTtcbn07XG4iXX0= */");
218
222
  return /* @__PURE__ */ jsx(StyledTypography, { variant, children: text });
219
223
  };
220
224
  const renderInput = (dateString) => styledTypography(dateString, activeTheme == null ? void 0 : activeTheme.datePicker.placeholderVariant, (dateString || placeholder) === void 0 ? "" : dateString || placeholder);
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.js","sources":["../../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import { useState, useEffect, useRef, ReactNode } from \"react\";\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\n\nimport styled from \"@emotion/styled\";\n\nimport { Calendar } from \"@hitachivantara/uikit-react-icons\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { useControlled } from \"@core/hooks/useControlled\";\nimport { useUniqueId } from \"@core/hooks/useUniqueId\";\nimport { useLabels } from \"@core/hooks/useLabels\";\nimport { useTheme } from \"@core/hooks/useTheme\";\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { setId } from \"@core/utils/setId\";\nimport { useSavedState } from \"@core/utils/useSavedState\";\nimport {\n isInvalid,\n HvLabel,\n HvFormStatus,\n HvWarningText,\n HvFormElement,\n HvInfoMessage,\n} from \"@core/components/Forms\";\nimport { isDate } from \"@core/components/Calendar/utils\";\nimport { HvCalendar, HvCalendarProps } from \"@core/components/Calendar\";\nimport {\n HvBaseDropdown,\n HvBaseDropdownProps,\n} from \"@core/components/BaseDropdown\";\nimport { HvTypography } from \"@core/components/Typography\";\nimport { HvActionBar } from \"@core/components/ActionBar\";\nimport { HvButton } from \"@core/components/Button\";\n\nimport { getDateLabel } from \"./utils\";\nimport useVisibleDate from \"./useVisibleDate\";\nimport { staticClasses, useClasses } from \"./DatePicker.styles\";\n\nexport { staticClasses as datePickerClasses };\n\nexport type HvDatePickerClasses = ExtractNames<typeof useClasses>;\n\nconst DEFAULT_LABELS = {\n applyLabel: \"Apply\",\n cancelLabel: \"Cancel\",\n clearLabel: \"Clear\",\n invalidLabel: \"Invalid date\",\n};\n\n/** @deprecated use `HvFormStatus` instead */\nexport type HvDatePickerStatus = HvFormStatus;\n\nexport interface HvDatePickerProps\n extends HvBaseProps<HTMLDivElement, \"onChange\"> {\n /**\n * The form element name.\n */\n name?: string;\n /**\n * The label of the form element.\n *\n * The form element must be labeled for accessibility reasons.\n * If not provided, an aria-label or aria-labelledby must be provided instead.\n */\n label?: React.ReactNode;\n /**\n * Provide additional descriptive text for the form element.\n */\n description?: React.ReactNode;\n /**\n * The placeholder value when nothing is selected.\n */\n placeholder?: string;\n /**\n * Indicates that the form element is disabled.\n */\n disabled?: boolean;\n /**\n * Indicates that user input is required on the form element.\n */\n required?: boolean;\n /**\n * The status of the form element.\n *\n * Valid is correct, invalid is incorrect and standBy means no validations have run.\n *\n * When uncontrolled and unspecified it will default to \"standBy\" and change to either \"valid\"\n * or \"invalid\" after any change to the state.\n */\n status?: HvFormStatus;\n /**\n * The error message to show when the validation status is \"invalid\".\n *\n * Defaults to \"Required\" when the status is uncontrolled and no `aria-errormessage` is provided.\n */\n statusMessage?: React.ReactNode;\n /**\n * Identifies the element that provides an error message for the date picker.\n *\n * Will only be used when the validation status is invalid.\n */\n \"aria-errormessage\"?: string;\n /**\n * The callback fired when the value changes.\n */\n onChange?: (date?: Date, endDate?: Date) => void;\n /**\n * The callback fired when user clicks on cancel.\n */\n onCancel?: () => void;\n /**\n * The callback fired when user clicks on clear.\n */\n onClear?: () => void;\n /**\n * An object containing all the labels for the datepicker.\n */\n labels?: {\n /**\n * Apply button label.\n */\n applyLabel?: string;\n /**\n * Cancel button label.\n */\n cancelLabel?: string;\n /**\n * Clear button label.\n */\n clearLabel?: string;\n /**\n * Invalid Date label.\n */\n invalidDateLabel?: string;\n };\n /**\n * The initial value of the input when in single calendar mode.\n */\n value?: Date;\n /**\n * The initial value for the start date when in range mode.\n */\n startValue?: Date;\n /**\n * The initial value for the end date when in range mode.\n */\n endValue?: Date;\n /**\n * Flag informing if the the component should be in range mode or in single mode.\n * TODO: remove this in favour of discriminated union\n */\n rangeMode?: boolean;\n /**\n * The placement where the calendar should be placed according to the input. Options are `left` or `right`.\n * Note this prop only affects the calendar when in `rangeMode`.\n */\n horizontalPlacement?: \"left\" | \"right\";\n /**\n * The calendar locale. If undefined, it uses calendar default\n */\n locale?: string;\n /**\n * Controls if actions buttons are visible at the calendar.\n */\n showActions?: boolean;\n /**\n * Controls if clear button is visible at the calendar,\n * only works if showing actions or in range mode.\n */\n showClear?: boolean;\n /**\n * Disable the portal behavior. The children stay within it's parent DOM hierarchy.\n */\n disablePortal?: boolean;\n /**\n * Sets if the calendar container should follow the date picker input out of the screen or stay visible.\n */\n escapeWithReference?: boolean;\n /**\n * An element placed before the Calendar\n */\n startAdornment?: React.ReactNode;\n /**\n * An object containing props to be passed onto the baseDropdown.\n */\n dropdownProps?: Object;\n /**\n * If `true` the DatePicker will be in read only mode, unable to be interacted.\n */\n readOnly?: boolean;\n /**\n * Additional props passed to the HvCalendar component.\n */\n calendarProps?: Partial<HvCalendarProps>;\n /**\n * A Jss Object used to override or extend the component styles applied.\n */\n classes?: HvDatePickerClasses;\n}\n\n/**\n * A date picker, popup calendar or date range picker is a graphical user\n * interface widget which allows the user to select a date from a calendar.\n */\nexport const HvDatePicker = (props: HvDatePickerProps) => {\n const {\n classes: classesProp,\n className,\n\n id,\n name,\n\n required = false,\n disabled = false,\n readOnly,\n\n label,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n description,\n \"aria-describedby\": ariaDescribedBy,\n\n onChange,\n onCancel,\n onClear,\n status,\n statusMessage,\n \"aria-errormessage\": ariaErrorMessage,\n\n placeholder,\n\n labels: labelsProp,\n\n value,\n startValue,\n endValue,\n\n rangeMode = false,\n startAdornment,\n horizontalPlacement = \"right\",\n locale: localeProp,\n showActions = false,\n showClear = false,\n disablePortal = true,\n escapeWithReference = true,\n dropdownProps,\n calendarProps,\n ...others\n } = useDefaultProps(\"HvDatePicker\", props);\n\n const { classes, cx } = useClasses(classesProp);\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n\n const elementId = useUniqueId(id, \"hvdatepicker\");\n\n const [validationState, setValidationState] = useControlled(\n status,\n \"standBy\"\n );\n\n const [validationMessage] = useControlled(statusMessage, \"Required\");\n\n const locale = localeProp || \"en-US\";\n\n const [calendarOpen, setCalendarOpen] = useState(false);\n\n const [startDate, setStartDate, rollbackStartDate] = useSavedState(\n rangeMode ? startValue : value\n );\n const [endDate, setEndDate, rollbackEndDate] = useSavedState(endValue);\n\n const [visibleDate, dispatchAction] = useVisibleDate(startDate, endDate);\n\n const focusTarget = useRef<HTMLDivElement>(null);\n\n const { activeTheme } = useTheme();\n\n useEffect(() => {\n setStartDate(rangeMode ? startValue : value, true);\n setEndDate(endValue, true);\n }, [value, startValue, endValue, rangeMode, setStartDate, setEndDate]);\n\n const endDateIsSet = useRef(false);\n endDateIsSet.current = endDate != null;\n\n useEffect(() => {\n if (startDate != null) {\n dispatchAction({\n type: \"month_year\",\n target: endDateIsSet.current ? \"left\" : \"best\",\n year: startDate.getFullYear(),\n month: startDate.getMonth() + 1,\n });\n }\n }, [dispatchAction, startDate]);\n\n useEffect(() => {\n if (endDate != null) {\n dispatchAction({\n type: \"month_year\",\n target: \"right\",\n year: endDate.getFullYear(),\n month: endDate.getMonth() + 1,\n });\n }\n }, [dispatchAction, endDate]);\n\n /**\n * Handles the `Apply` action. Both single and ranged modes are handled here.\n */\n const handleApply = () => {\n setStartDate(startDate, true);\n setEndDate(endDate ?? startDate, true);\n\n onChange?.(startDate, endDate);\n\n setValidationState(() => {\n // this will only run if status is uncontrolled\n if (required && (!isDate(startDate) || (rangeMode && !isDate(endDate)))) {\n return \"invalid\";\n }\n\n return \"valid\";\n });\n\n setCalendarOpen(false);\n };\n\n /**\n * Handles the `Cancel` action. Both single and ranged modes are handled here.\n */\n const handleCancel = () => {\n rollbackStartDate();\n rollbackEndDate();\n\n onCancel?.();\n\n setCalendarOpen(false);\n };\n\n /**\n * Handles the `Cancel` action. Both single and ranged modes are handled here.\n */\n const handleClear = () => {\n setStartDate(undefined, false);\n setEndDate(undefined, false);\n onClear?.();\n };\n\n const handleCalendarClose = () => {\n const shouldSave = !(rangeMode || showActions);\n if (shouldSave) {\n handleApply();\n } else {\n handleCancel();\n }\n };\n\n const handleToggle: HvBaseDropdownProps[\"onToggle\"] = (evt, open) => {\n /* \n If evt is null this toggle wasn't triggered by the user.\n instead it was triggered by the baseDropdown useEffect after\n the datepicker changed the expanded value this baseDropdown behavior needs a review\n */\n if (evt === null) return;\n setCalendarOpen(open);\n if (!open) handleCalendarClose();\n };\n\n const focusOnContainer = () => {\n focusTarget.current?.focus();\n };\n\n const handleDateChange: HvCalendarProps[\"onChange\"] = (event, newDate) => {\n if (!isDate(newDate)) return;\n\n const autoSave = !showActions && !rangeMode;\n\n if (rangeMode) {\n if (!startDate || (startDate && endDate) || newDate < startDate) {\n setStartDate(newDate);\n setEndDate(undefined);\n } else {\n setEndDate(newDate);\n }\n } else {\n setStartDate(newDate, autoSave);\n }\n\n if (autoSave) {\n onChange?.(newDate);\n\n setValidationState(() => {\n // this will only run if status is uncontrolled\n if (required && !isDate(newDate)) {\n return \"invalid\";\n }\n\n return \"valid\";\n });\n\n setCalendarOpen(false);\n }\n };\n\n const handleInputDateChange: HvCalendarProps[\"onInputChange\"] = (\n event,\n newDate,\n position\n ) => {\n if (!isDate(newDate)) return;\n\n if (!rangeMode) {\n handleDateChange(event as any, newDate);\n return;\n }\n\n if (position === \"left\") {\n if (endDate) setStartDate(newDate > endDate ? endDate : newDate);\n } else if (position === \"right\") {\n if (!startDate) {\n if (endDate) setStartDate(newDate > endDate ? endDate : newDate);\n return;\n }\n setEndDate(newDate < startDate ? startDate : newDate);\n }\n };\n\n /**\n * Renders the container for the action elements.\n */\n const renderActions = () => (\n <HvActionBar className={cx({ [classes.actionContainer]: showClear })}>\n {showClear && (\n <div className={classes.leftContainer}>\n <HvButton\n id={setId(id, \"action\", \"clear\")}\n className={classes.action}\n variant=\"primaryGhost\"\n onClick={handleClear}\n >\n {labels?.clearLabel}\n </HvButton>\n </div>\n )}\n <div className={classes.rightContainer}>\n <HvButton\n id={setId(id, \"action\", \"apply\")}\n className={classes.action}\n variant=\"primaryGhost\"\n onClick={handleApply}\n >\n {labels?.applyLabel}\n </HvButton>\n <HvButton\n id={setId(id, \"action\", \"cancel\")}\n className={classes.action}\n variant=\"primaryGhost\"\n onClick={handleCancel}\n >\n {labels?.cancelLabel}\n </HvButton>\n </div>\n </HvActionBar>\n );\n\n const styledTypography = (\n dateString: string,\n variant: any,\n text: ReactNode\n ) => {\n const StyledTypography = styled(HvTypography)({\n color: dateString\n ? theme.colors.secondary\n : theme.datePicker.dropdownPlaceholderColor,\n });\n\n return <StyledTypography variant={variant}>{text}</StyledTypography>;\n };\n\n const renderInput = (dateString: string) =>\n styledTypography(\n dateString,\n activeTheme?.datePicker.placeholderVariant,\n (dateString || placeholder) === undefined ? \"\" : dateString || placeholder\n );\n\n const dateValue = rangeMode ? { startDate, endDate } : startDate;\n\n const hasLabel = label != null;\n const hasDescription = description != null;\n\n // the error message area will only be created if:\n // - an external element that provides an error message isn't identified via aria-errormessage AND\n // - both status and statusMessage properties are being controlled OR\n // - status is uncontrolled and required is true\n const canShowError =\n ariaErrorMessage == null &&\n ((status !== undefined && statusMessage !== undefined) ||\n (status === undefined && required));\n\n const isStateInvalid = isInvalid(validationState);\n\n let errorMessageId;\n if (isStateInvalid) {\n errorMessageId = canShowError\n ? setId(elementId, \"error\")\n : ariaErrorMessage;\n }\n\n return (\n <HvFormElement\n id={id}\n name={name}\n value={dateValue}\n status={validationState}\n disabled={disabled}\n required={required}\n className={cx(classes.root, className)}\n readOnly={readOnly}\n {...others}\n >\n {(hasLabel || hasDescription) && (\n <div className={classes.labelContainer}>\n {hasLabel && (\n <HvLabel\n id={setId(elementId, \"label\")}\n label={label}\n className={classes.label}\n />\n )}\n\n {hasDescription && (\n <HvInfoMessage\n id={setId(elementId, \"description\")}\n className={classes.description}\n >\n {description}\n </HvInfoMessage>\n )}\n </div>\n )}\n <HvBaseDropdown\n role=\"combobox\"\n classes={{\n root: classes.dropdown,\n panel: classes.panel,\n header: cx({ [classes.dropdownHeaderInvalid]: isStateInvalid }),\n headerOpen: classes.dropdownHeaderOpen,\n }}\n readOnly={readOnly}\n disabled={disabled}\n disablePortal={disablePortal}\n variableWidth\n placement={horizontalPlacement}\n expanded={calendarOpen}\n onToggle={handleToggle}\n onClickOutside={handleCalendarClose}\n onContainerCreation={focusOnContainer}\n placeholder={renderInput(getDateLabel(dateValue, rangeMode, locale))}\n adornment={\n <Calendar\n className={classes.icon}\n color={disabled ? \"secondary_80\" : undefined}\n />\n }\n popperProps={{\n modifiers: [\n { name: \"preventOverflow\", enabled: escapeWithReference },\n ],\n }}\n aria-haspopup=\"dialog\"\n aria-label={ariaLabel}\n aria-labelledby={\n [label && setId(elementId, \"label\"), ariaLabelledBy]\n .join(\" \")\n .trim() || undefined\n }\n aria-invalid={isStateInvalid ? true : undefined}\n aria-errormessage={errorMessageId}\n aria-describedby={\n [description && setId(elementId, \"description\"), ariaDescribedBy]\n .join(\" \")\n .trim() || undefined\n }\n {...dropdownProps}\n >\n <div ref={focusTarget} tabIndex={-1} />\n <HvCalendar\n id={setId(id, \"calendar\")}\n startAdornment={startAdornment}\n onChange={handleDateChange}\n onInputChange={handleInputDateChange}\n onVisibleDateChange={(_event, type, month, target) => {\n dispatchAction({ type, target, month });\n }}\n locale={locale}\n {...visibleDate}\n {...calendarProps}\n invalidDateLabel={labels?.invalidDateLabel}\n />\n {(rangeMode || showActions) && renderActions()}\n </HvBaseDropdown>\n {canShowError && (\n <HvWarningText\n id={setId(elementId, \"error\")}\n disableBorder\n className={cx(classes.error)}\n >\n {validationMessage}\n </HvWarningText>\n )}\n </HvFormElement>\n );\n};\n"],"names":["DEFAULT_LABELS","applyLabel","cancelLabel","clearLabel","invalidLabel","HvDatePicker","props","classes","classesProp","className","id","name","required","disabled","readOnly","label","ariaLabel","ariaLabelledBy","description","ariaDescribedBy","onChange","onCancel","onClear","status","statusMessage","ariaErrorMessage","placeholder","labels","labelsProp","value","startValue","endValue","rangeMode","startAdornment","horizontalPlacement","locale","localeProp","showActions","showClear","disablePortal","escapeWithReference","dropdownProps","calendarProps","others","useDefaultProps","cx","useClasses","useLabels","elementId","useUniqueId","validationState","setValidationState","useControlled","validationMessage","calendarOpen","setCalendarOpen","useState","startDate","setStartDate","rollbackStartDate","useSavedState","endDate","setEndDate","rollbackEndDate","visibleDate","dispatchAction","useVisibleDate","focusTarget","useRef","activeTheme","useTheme","useEffect","endDateIsSet","current","type","target","year","getFullYear","month","getMonth","handleApply","isDate","handleCancel","handleClear","undefined","handleCalendarClose","shouldSave","handleToggle","evt","open","focusOnContainer","focus","handleDateChange","event","newDate","autoSave","handleInputDateChange","position","renderActions","actionContainer","leftContainer","setId","action","rightContainer","styledTypography","dateString","variant","text","StyledTypography","HvTypography","process","env","NODE_ENV","color","theme","colors","secondary","datePicker","dropdownPlaceholderColor","renderInput","placeholderVariant","dateValue","hasLabel","hasDescription","canShowError","isStateInvalid","isInvalid","errorMessageId","root","labelContainer","dropdown","panel","header","dropdownHeaderInvalid","headerOpen","dropdownHeaderOpen","getDateLabel","icon","modifiers","enabled","join","trim","_event","invalidDateLabel","error"],"mappings":"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"}
1
+ {"version":3,"file":"DatePicker.js","sources":["../../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import { useEffect, useRef, ReactNode } from \"react\";\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\n\nimport styled from \"@emotion/styled\";\n\nimport { Calendar } from \"@hitachivantara/uikit-react-icons\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { useControlled } from \"@core/hooks/useControlled\";\nimport { useUniqueId } from \"@core/hooks/useUniqueId\";\nimport { useLabels } from \"@core/hooks/useLabels\";\nimport { useTheme } from \"@core/hooks/useTheme\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { setId } from \"@core/utils/setId\";\nimport { useSavedState } from \"@core/utils/useSavedState\";\nimport {\n isInvalid,\n HvLabel,\n HvFormStatus,\n HvWarningText,\n HvFormElement,\n HvInfoMessage,\n HvFormElementProps,\n} from \"@core/components/Forms\";\nimport { isDate } from \"@core/components/Calendar/utils\";\nimport { HvCalendar, HvCalendarProps } from \"@core/components/Calendar\";\nimport {\n HvBaseDropdown,\n HvBaseDropdownProps,\n} from \"@core/components/BaseDropdown\";\nimport { HvTypography } from \"@core/components/Typography\";\nimport { HvActionBar } from \"@core/components/ActionBar\";\nimport { HvButton } from \"@core/components/Button\";\n\nimport { getDateLabel } from \"./utils\";\nimport useVisibleDate from \"./useVisibleDate\";\nimport { staticClasses, useClasses } from \"./DatePicker.styles\";\n\nexport { staticClasses as datePickerClasses };\n\nexport type HvDatePickerClasses = ExtractNames<typeof useClasses>;\n\nconst DEFAULT_LABELS = {\n applyLabel: \"Apply\",\n cancelLabel: \"Cancel\",\n clearLabel: \"Clear\",\n invalidLabel: \"Invalid date\",\n};\n\n/** @deprecated use `HvFormStatus` instead */\nexport type HvDatePickerStatus = HvFormStatus;\n\nexport interface HvDatePickerProps\n extends Omit<HvFormElementProps, \"onChange\">,\n Pick<\n HvBaseDropdownProps,\n \"disablePortal\" | \"expanded\" | \"defaultExpanded\" | \"onToggle\"\n > {\n /**\n * Identifies the element that provides an error message for the date picker.\n *\n * Will only be used when the validation status is invalid.\n */\n \"aria-errormessage\"?: string;\n /**\n * The callback fired when the value changes.\n */\n onChange?: (date?: Date, endDate?: Date) => void;\n /**\n * The callback fired when user clicks on cancel.\n */\n onCancel?: () => void;\n /**\n * The callback fired when user clicks on clear.\n */\n onClear?: () => void;\n /**\n * An object containing all the labels for the datepicker.\n */\n labels?: {\n /**\n * Apply button label.\n */\n applyLabel?: string;\n /**\n * Cancel button label.\n */\n cancelLabel?: string;\n /**\n * Clear button label.\n */\n clearLabel?: string;\n /**\n * Invalid Date label.\n */\n invalidDateLabel?: string;\n };\n /**\n * The initial value of the input when in single calendar mode.\n */\n value?: Date;\n /**\n * The initial value for the start date when in range mode.\n */\n startValue?: Date;\n /**\n * The initial value for the end date when in range mode.\n */\n endValue?: Date;\n /**\n * Flag informing if the the component should be in range mode or in single mode.\n */\n // TODO: remove this in favour of discriminated union\n rangeMode?: boolean;\n /**\n * The placement where the calendar should be placed according to the input. Options are `left` or `right`.\n * Note this prop only affects the calendar when in `rangeMode`.\n */\n horizontalPlacement?: \"left\" | \"right\";\n /**\n * The calendar locale. If undefined, it uses calendar default\n */\n locale?: string;\n /**\n * Controls if actions buttons are visible at the calendar.\n */\n showActions?: boolean;\n /**\n * Controls if clear button is visible at the calendar,\n * only works if showing actions or in range mode.\n */\n showClear?: boolean;\n /**\n * Sets if the calendar container should follow the date picker input out of the screen or stay visible.\n */\n escapeWithReference?: boolean;\n /**\n * An element placed before the Calendar\n */\n startAdornment?: React.ReactNode;\n /**\n * An object containing props to be passed onto the baseDropdown.\n */\n dropdownProps?: Partial<HvBaseDropdownProps>;\n /**\n * Additional props passed to the HvCalendar component.\n */\n calendarProps?: Partial<HvCalendarProps>;\n /**\n * A Jss Object used to override or extend the component styles applied.\n */\n classes?: HvDatePickerClasses;\n}\n\n/**\n * A date picker, popup calendar or date range picker is a graphical user\n * interface widget which allows the user to select a date from a calendar.\n */\nexport const HvDatePicker = (props: HvDatePickerProps) => {\n const {\n classes: classesProp,\n className,\n\n id,\n name,\n\n required = false,\n disabled = false,\n readOnly,\n\n label,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n description,\n \"aria-describedby\": ariaDescribedBy,\n\n onChange,\n onCancel,\n onClear,\n status,\n statusMessage,\n \"aria-errormessage\": ariaErrorMessage,\n\n placeholder,\n\n labels: labelsProp,\n\n value,\n startValue,\n endValue,\n\n expanded,\n defaultExpanded,\n onToggle,\n rangeMode = false,\n startAdornment,\n horizontalPlacement = \"right\",\n locale: localeProp,\n showActions = false,\n showClear = false,\n disablePortal = true,\n escapeWithReference = true,\n dropdownProps,\n calendarProps,\n ...others\n } = useDefaultProps(\"HvDatePicker\", props);\n\n const { classes, cx } = useClasses(classesProp);\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n\n const elementId = useUniqueId(id, \"hvdatepicker\");\n\n const [validationState, setValidationState] = useControlled(\n status,\n \"standBy\"\n );\n\n const [validationMessage] = useControlled(statusMessage, \"Required\");\n\n const locale = localeProp || \"en-US\";\n\n const [calendarOpen, setCalendarOpen] = useControlled(\n expanded,\n Boolean(defaultExpanded)\n );\n\n const [startDate, setStartDate, rollbackStartDate] = useSavedState(\n rangeMode ? startValue : value\n );\n const [endDate, setEndDate, rollbackEndDate] = useSavedState(endValue);\n\n const [visibleDate, dispatchAction] = useVisibleDate(startDate, endDate);\n\n const focusTarget = useRef<HTMLDivElement>(null);\n\n const { activeTheme } = useTheme();\n\n useEffect(() => {\n setStartDate(rangeMode ? startValue : value, true);\n setEndDate(endValue, true);\n }, [value, startValue, endValue, rangeMode, setStartDate, setEndDate]);\n\n const endDateIsSet = useRef(false);\n endDateIsSet.current = endDate != null;\n\n useEffect(() => {\n if (startDate != null) {\n dispatchAction({\n type: \"month_year\",\n target: endDateIsSet.current ? \"left\" : \"best\",\n year: startDate.getFullYear(),\n month: startDate.getMonth() + 1,\n });\n }\n }, [dispatchAction, startDate]);\n\n useEffect(() => {\n if (endDate != null) {\n dispatchAction({\n type: \"month_year\",\n target: \"right\",\n year: endDate.getFullYear(),\n month: endDate.getMonth() + 1,\n });\n }\n }, [dispatchAction, endDate]);\n\n /**\n * Handles the `Apply` action. Both single and ranged modes are handled here.\n */\n const handleApply = () => {\n setStartDate(startDate, true);\n setEndDate(endDate ?? startDate, true);\n\n onChange?.(startDate, endDate);\n\n setValidationState(() => {\n // this will only run if status is uncontrolled\n if (required && (!isDate(startDate) || (rangeMode && !isDate(endDate)))) {\n return \"invalid\";\n }\n\n return \"valid\";\n });\n\n setCalendarOpen(false);\n };\n\n /**\n * Handles the `Cancel` action. Both single and ranged modes are handled here.\n */\n const handleCancel = () => {\n rollbackStartDate();\n rollbackEndDate();\n\n onCancel?.();\n\n setCalendarOpen(false);\n };\n\n /**\n * Handles the `Cancel` action. Both single and ranged modes are handled here.\n */\n const handleClear = () => {\n setStartDate(undefined, false);\n setEndDate(undefined, false);\n onClear?.();\n };\n\n const handleCalendarClose = () => {\n const shouldSave = !(rangeMode || showActions);\n if (shouldSave) {\n handleApply();\n } else {\n handleCancel();\n }\n };\n\n const handleToggle: HvBaseDropdownProps[\"onToggle\"] = (evt, open) => {\n /* \n If evt is null this toggle wasn't triggered by the user.\n instead it was triggered by the baseDropdown useEffect after\n the datepicker changed the expanded value this baseDropdown behavior needs a review\n */\n if (evt === null) return;\n onToggle?.(evt, open);\n setCalendarOpen(open);\n if (!open) handleCalendarClose();\n };\n\n const focusOnContainer = () => {\n focusTarget.current?.focus();\n };\n\n const handleDateChange: HvCalendarProps[\"onChange\"] = (event, newDate) => {\n if (!isDate(newDate)) return;\n\n const autoSave = !showActions && !rangeMode;\n\n if (rangeMode) {\n if (!startDate || (startDate && endDate) || newDate < startDate) {\n setStartDate(newDate);\n setEndDate(undefined);\n } else {\n setEndDate(newDate);\n }\n } else {\n setStartDate(newDate, autoSave);\n }\n\n if (autoSave) {\n onChange?.(newDate);\n\n setValidationState(() => {\n // this will only run if status is uncontrolled\n if (required && !isDate(newDate)) {\n return \"invalid\";\n }\n\n return \"valid\";\n });\n\n setCalendarOpen(false);\n }\n };\n\n const handleInputDateChange: HvCalendarProps[\"onInputChange\"] = (\n event,\n newDate,\n position\n ) => {\n if (!isDate(newDate)) return;\n\n if (!rangeMode) {\n handleDateChange(event as any, newDate);\n return;\n }\n\n if (position === \"left\") {\n if (endDate) setStartDate(newDate > endDate ? endDate : newDate);\n } else if (position === \"right\") {\n if (!startDate) {\n if (endDate) setStartDate(newDate > endDate ? endDate : newDate);\n return;\n }\n setEndDate(newDate < startDate ? startDate : newDate);\n }\n };\n\n /**\n * Renders the container for the action elements.\n */\n const renderActions = () => (\n <HvActionBar className={cx({ [classes.actionContainer]: showClear })}>\n {showClear && (\n <div className={classes.leftContainer}>\n <HvButton\n id={setId(id, \"action\", \"clear\")}\n className={classes.action}\n variant=\"primaryGhost\"\n onClick={handleClear}\n >\n {labels?.clearLabel}\n </HvButton>\n </div>\n )}\n <div className={classes.rightContainer}>\n <HvButton\n id={setId(id, \"action\", \"apply\")}\n className={classes.action}\n variant=\"primaryGhost\"\n onClick={handleApply}\n >\n {labels?.applyLabel}\n </HvButton>\n <HvButton\n id={setId(id, \"action\", \"cancel\")}\n className={classes.action}\n variant=\"primaryGhost\"\n onClick={handleCancel}\n >\n {labels?.cancelLabel}\n </HvButton>\n </div>\n </HvActionBar>\n );\n\n const styledTypography = (\n dateString: string,\n variant: any,\n text: ReactNode\n ) => {\n const StyledTypography = styled(HvTypography)({\n color: dateString\n ? theme.colors.secondary\n : theme.datePicker.dropdownPlaceholderColor,\n });\n\n return <StyledTypography variant={variant}>{text}</StyledTypography>;\n };\n\n const renderInput = (dateString: string) =>\n styledTypography(\n dateString,\n activeTheme?.datePicker.placeholderVariant,\n (dateString || placeholder) === undefined ? \"\" : dateString || placeholder\n );\n\n const dateValue = rangeMode ? { startDate, endDate } : startDate;\n\n const hasLabel = label != null;\n const hasDescription = description != null;\n\n // the error message area will only be created if:\n // - an external element that provides an error message isn't identified via aria-errormessage AND\n // - both status and statusMessage properties are being controlled OR\n // - status is uncontrolled and required is true\n const canShowError =\n ariaErrorMessage == null &&\n ((status !== undefined && statusMessage !== undefined) ||\n (status === undefined && required));\n\n const isStateInvalid = isInvalid(validationState);\n\n let errorMessageId;\n if (isStateInvalid) {\n errorMessageId = canShowError\n ? setId(elementId, \"error\")\n : ariaErrorMessage;\n }\n\n return (\n <HvFormElement\n id={id}\n name={name}\n value={dateValue}\n status={validationState}\n disabled={disabled}\n required={required}\n className={cx(classes.root, className)}\n readOnly={readOnly}\n {...others}\n >\n {(hasLabel || hasDescription) && (\n <div className={classes.labelContainer}>\n {hasLabel && (\n <HvLabel\n id={setId(elementId, \"label\")}\n label={label}\n className={classes.label}\n />\n )}\n\n {hasDescription && (\n <HvInfoMessage\n id={setId(elementId, \"description\")}\n className={classes.description}\n >\n {description}\n </HvInfoMessage>\n )}\n </div>\n )}\n <HvBaseDropdown\n role=\"combobox\"\n classes={{\n root: classes.dropdown,\n panel: classes.panel,\n header: cx({ [classes.dropdownHeaderInvalid]: isStateInvalid }),\n headerOpen: classes.dropdownHeaderOpen,\n }}\n readOnly={readOnly}\n disabled={disabled}\n disablePortal={disablePortal}\n variableWidth\n placement={horizontalPlacement}\n expanded={calendarOpen}\n onToggle={handleToggle}\n onClickOutside={handleCalendarClose}\n onContainerCreation={focusOnContainer}\n placeholder={renderInput(getDateLabel(dateValue, rangeMode, locale))}\n adornment={\n <Calendar\n className={classes.icon}\n color={disabled ? \"secondary_80\" : undefined}\n />\n }\n popperProps={{\n modifiers: [\n { name: \"preventOverflow\", enabled: escapeWithReference },\n ],\n }}\n aria-haspopup=\"dialog\"\n aria-label={ariaLabel}\n aria-labelledby={\n [label && setId(elementId, \"label\"), ariaLabelledBy]\n .join(\" \")\n .trim() || undefined\n }\n aria-invalid={isStateInvalid ? true : undefined}\n aria-errormessage={errorMessageId}\n aria-describedby={\n [description && setId(elementId, \"description\"), ariaDescribedBy]\n .join(\" \")\n .trim() || undefined\n }\n {...dropdownProps}\n >\n <div ref={focusTarget} tabIndex={-1} />\n <HvCalendar\n id={setId(id, \"calendar\")}\n startAdornment={startAdornment}\n onChange={handleDateChange}\n onInputChange={handleInputDateChange}\n onVisibleDateChange={(_event, type, month, target) => {\n dispatchAction({ type, target, month });\n }}\n locale={locale}\n {...visibleDate}\n {...calendarProps}\n invalidDateLabel={labels?.invalidDateLabel}\n />\n {(rangeMode || showActions) && renderActions()}\n </HvBaseDropdown>\n {canShowError && (\n <HvWarningText\n id={setId(elementId, \"error\")}\n disableBorder\n className={cx(classes.error)}\n >\n {validationMessage}\n </HvWarningText>\n )}\n </HvFormElement>\n );\n};\n"],"names":["DEFAULT_LABELS","applyLabel","cancelLabel","clearLabel","invalidLabel","HvDatePicker","props","classes","classesProp","className","id","name","required","disabled","readOnly","label","ariaLabel","ariaLabelledBy","description","ariaDescribedBy","onChange","onCancel","onClear","status","statusMessage","ariaErrorMessage","placeholder","labels","labelsProp","value","startValue","endValue","expanded","defaultExpanded","onToggle","rangeMode","startAdornment","horizontalPlacement","locale","localeProp","showActions","showClear","disablePortal","escapeWithReference","dropdownProps","calendarProps","others","useDefaultProps","cx","useClasses","useLabels","elementId","useUniqueId","validationState","setValidationState","useControlled","validationMessage","calendarOpen","setCalendarOpen","Boolean","startDate","setStartDate","rollbackStartDate","useSavedState","endDate","setEndDate","rollbackEndDate","visibleDate","dispatchAction","useVisibleDate","focusTarget","useRef","activeTheme","useTheme","useEffect","endDateIsSet","current","type","target","year","getFullYear","month","getMonth","handleApply","isDate","handleCancel","handleClear","undefined","handleCalendarClose","shouldSave","handleToggle","evt","open","focusOnContainer","focus","handleDateChange","event","newDate","autoSave","handleInputDateChange","position","renderActions","actionContainer","leftContainer","setId","action","rightContainer","styledTypography","dateString","variant","text","StyledTypography","HvTypography","process","env","NODE_ENV","color","theme","colors","secondary","datePicker","dropdownPlaceholderColor","renderInput","placeholderVariant","dateValue","hasLabel","hasDescription","canShowError","isStateInvalid","isInvalid","errorMessageId","root","labelContainer","dropdown","panel","header","dropdownHeaderInvalid","headerOpen","dropdownHeaderOpen","getDateLabel","icon","modifiers","enabled","join","trim","_event","invalidDateLabel","error"],"mappings":"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"}
@@ -2599,49 +2599,7 @@ export declare const HvDatePicker: (props: HvDatePickerProps) => JSX_2.Element;
2599
2599
 
2600
2600
  export declare type HvDatePickerClasses = ExtractNames<typeof useClasses_106>;
2601
2601
 
2602
- export declare interface HvDatePickerProps extends HvBaseProps<HTMLDivElement, "onChange"> {
2603
- /**
2604
- * The form element name.
2605
- */
2606
- name?: string;
2607
- /**
2608
- * The label of the form element.
2609
- *
2610
- * The form element must be labeled for accessibility reasons.
2611
- * If not provided, an aria-label or aria-labelledby must be provided instead.
2612
- */
2613
- label?: React.ReactNode;
2614
- /**
2615
- * Provide additional descriptive text for the form element.
2616
- */
2617
- description?: React.ReactNode;
2618
- /**
2619
- * The placeholder value when nothing is selected.
2620
- */
2621
- placeholder?: string;
2622
- /**
2623
- * Indicates that the form element is disabled.
2624
- */
2625
- disabled?: boolean;
2626
- /**
2627
- * Indicates that user input is required on the form element.
2628
- */
2629
- required?: boolean;
2630
- /**
2631
- * The status of the form element.
2632
- *
2633
- * Valid is correct, invalid is incorrect and standBy means no validations have run.
2634
- *
2635
- * When uncontrolled and unspecified it will default to "standBy" and change to either "valid"
2636
- * or "invalid" after any change to the state.
2637
- */
2638
- status?: HvFormStatus;
2639
- /**
2640
- * The error message to show when the validation status is "invalid".
2641
- *
2642
- * Defaults to "Required" when the status is uncontrolled and no `aria-errormessage` is provided.
2643
- */
2644
- statusMessage?: React.ReactNode;
2602
+ export declare interface HvDatePickerProps extends Omit<HvFormElementProps, "onChange">, Pick<HvBaseDropdownProps, "disablePortal" | "expanded" | "defaultExpanded" | "onToggle"> {
2645
2603
  /**
2646
2604
  * Identifies the element that provides an error message for the date picker.
2647
2605
  *
@@ -2695,7 +2653,6 @@ export declare interface HvDatePickerProps extends HvBaseProps<HTMLDivElement, "
2695
2653
  endValue?: Date;
2696
2654
  /**
2697
2655
  * Flag informing if the the component should be in range mode or in single mode.
2698
- * TODO: remove this in favour of discriminated union
2699
2656
  */
2700
2657
  rangeMode?: boolean;
2701
2658
  /**
@@ -2716,10 +2673,6 @@ export declare interface HvDatePickerProps extends HvBaseProps<HTMLDivElement, "
2716
2673
  * only works if showing actions or in range mode.
2717
2674
  */
2718
2675
  showClear?: boolean;
2719
- /**
2720
- * Disable the portal behavior. The children stay within it's parent DOM hierarchy.
2721
- */
2722
- disablePortal?: boolean;
2723
2676
  /**
2724
2677
  * Sets if the calendar container should follow the date picker input out of the screen or stay visible.
2725
2678
  */
@@ -2731,11 +2684,7 @@ export declare interface HvDatePickerProps extends HvBaseProps<HTMLDivElement, "
2731
2684
  /**
2732
2685
  * An object containing props to be passed onto the baseDropdown.
2733
2686
  */
2734
- dropdownProps?: Object;
2735
- /**
2736
- * If `true` the DatePicker will be in read only mode, unable to be interacted.
2737
- */
2738
- readOnly?: boolean;
2687
+ dropdownProps?: Partial<HvBaseDropdownProps>;
2739
2688
  /**
2740
2689
  * Additional props passed to the HvCalendar component.
2741
2690
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hitachivantara/uikit-react-core",
3
- "version": "5.27.10",
3
+ "version": "5.28.0",
4
4
  "private": false,
5
5
  "author": "Hitachi Vantara UI Kit Team",
6
6
  "description": "Core React components for the NEXT Design System.",
@@ -64,7 +64,7 @@
64
64
  "access": "public",
65
65
  "directory": "package"
66
66
  },
67
- "gitHead": "18f6e9c22421729de7c70bff66145e4806dd2f0d",
67
+ "gitHead": "05db5a640d352bf7f44caffc109394fef5be37aa",
68
68
  "main": "dist/cjs/index.cjs",
69
69
  "exports": {
70
70
  ".": {