react-magma-dom 4.11.0-next.15 → 4.11.0-next.17

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.
package/dist/esm/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { css, keyframes, ClassNames, jsx, Global } from '@emotion/react';
2
2
  import * as React from 'react';
3
- import React__default, { createContext, useContext, forwardRef, createElement, Children, useMemo, cloneElement, Fragment, useState, useRef, useEffect, useCallback, useLayoutEffect, isValidElement } from 'react';
3
+ import React__default, { createContext, useContext, forwardRef, createElement, Children, useMemo, cloneElement, Fragment, useState, useRef, useEffect, useCallback, useLayoutEffect, isValidElement, memo, useReducer } from 'react';
4
4
  import { v4 } from 'uuid';
5
5
  import _styled from '@emotion/styled/base';
6
6
  import { AutoAwesomeIcon, CloseIcon, InfoIcon, CheckCircleIcon, WarningIcon, ErrorIcon, ChevronRightIcon, ClearIcon, CheckBoxIcon, CheckBoxOutlineBlankIcon, IndeterminateCheckBoxIcon, NorthIcon, SouthIcon, SortDoubleArrowIcon, ArrowDropDownIcon, WestIcon, EastIcon, KeyboardArrowLeftIcon, KeyboardArrowRightIcon, ArrowBackIcon, KeyboardIcon, EventIcon, ScheduleIcon, ArrowDropUpIcon, ArrowRightIcon, ArrowLeftIcon, CheckIcon, ExpandMoreIcon, ExpandLessIcon, ArrowBackIosIcon, ArrowForwardIosIcon, ArrowForwardIcon, RadioButtonCheckedIcon, RadioButtonUncheckedIcon, SearchIcon, CancelIcon, FolderIcon, ArticleIcon } from 'react-magma-icons';
@@ -14357,8 +14357,8 @@ var StyledCard$3 = /*#__PURE__*/_styled(Card, {
14357
14357
  }, " 0;transition:opacity 0.3s;white-space:nowrap;&:focus{outline:2px solid ", function (props) {
14358
14358
  return props.isInverse ? props.theme.colors.focusInverse : props.theme.colors.focus;
14359
14359
  }, ";outline-offset:0;}", function (props) {
14360
- return props.width && /*#__PURE__*/css("white-space:normal;width:", props.width, ";;label:StyledCard;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRyb3Bkb3duQ29udGVudC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNEJRIiwiZmlsZSI6IkRyb3Bkb3duQ29udGVudC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcclxuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xyXG5pbXBvcnQgeyBDYXJkIH0gZnJvbSAnLi4vQ2FyZCc7XHJcbmltcG9ydCB7IERyb3Bkb3duQ29udGV4dCwgfSBmcm9tICcuL0Ryb3Bkb3duJztcclxuaW1wb3J0IHsgVGhlbWVDb250ZXh0IH0gZnJvbSAnLi4vLi4vdGhlbWUvVGhlbWVDb250ZXh0JztcclxuaW1wb3J0IHsgdXNlRm9ya2VkUmVmIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xyXG5jb25zdCBTdHlsZWRDYXJkID0gc3R5bGVkKENhcmQpIGBcbiAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLnByaW1hcnk1MDBcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDB9O1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5pc09wZW4gPyAnYmxvY2snIDogJ25vbmUnKX07XG4gIG1heC1oZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMubWF4SGVpZ2h0ID8gcHJvcHMubWF4SGVpZ2h0IDogcHJvcHMudGhlbWUuZHJvcGRvd24uY29udGVudC5tYXhIZWlnaHR9O1xuICBvcGFjaXR5OiAke3Byb3BzID0+IChwcm9wcy5pc09wZW4gPyAnMScgOiAnMCcpfTtcbiAgb3V0bGluZTogMDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgcGFkZGluZzogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM30gMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAycHggc29saWRcbiAgICAgICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHByb3BzLnRoZW1lLmNvbG9ycy5mb2N1c0ludmVyc2VcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLmZvY3VzfTtcbiAgICBvdXRsaW5lLW9mZnNldDogMDtcbiAgfVxuXG4gICR7cHJvcHMgPT4gcHJvcHMud2lkdGggJiZcclxuICAgIGNzcyBgXG4gICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgICAgd2lkdGg6ICR7cHJvcHMud2lkdGh9O1xuICAgIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgRHJvcGRvd25Db250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZikgPT4ge1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiwgdGVzdElkLCBpZCwgLi4ub3RoZXIgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoRHJvcGRvd25Db250ZXh0KTtcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgcmVmID0gdXNlRm9ya2VkUmVmKGZvcndhcmRlZFJlZiwgY29udGV4dC5tZW51UmVmKTtcclxuICAgIGxldCBoYXNJdGVtQ2hpbGRyZW4gPSBmYWxzZTtcclxuICAgIC8vIEZvciBFeHBhbmRhYmxlIERyb3Bkb3ducyB0aGF0IGRvbid0IHJlcXVpcmUgYSBtYXgtaGVpZ2h0XHJcbiAgICBsZXQgaGFzRXhwYW5kYWJsZUl0ZW1zID0gZmFsc2U7XHJcbiAgICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCAoY2hpbGQpID0+IHtcclxuICAgICAgICBpZiAoY2hpbGQ/LnR5cGU/LmRpc3BsYXlOYW1lID09PSAnRHJvcGRvd25NZW51SXRlbScgfHxcclxuICAgICAgICAgICAgY2hpbGQ/LnR5cGU/LmRpc3BsYXlOYW1lID09PSAnRHJvcGRvd25NZW51R3JvdXAnKSB7XHJcbiAgICAgICAgICAgIGhhc0l0ZW1DaGlsZHJlbiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjaGlsZC50eXBlPy5kaXNwbGF5TmFtZSA9PT0gJ0Ryb3Bkb3duRXhwYW5kYWJsZU1lbnVHcm91cCcpIHtcclxuICAgICAgICAgICAgaGFzRXhwYW5kYWJsZUl0ZW1zID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBcImRhdGEtdGVzdGlkXCI6ICdkcm9wZG93bkNvbnRlbnRXcmFwcGVyJywgaWQ6IChpZCA/PyBjb250ZXh0LmRyb3Bkb3duQnV0dG9uSWQuY3VycmVudCkgKyAnX2Ryb3Bkb3duTWVudUlkJywgcmVmOiBlbCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuaXNPcGVuICYmIGNvbnRleHQuc2V0RmxvYXRpbmcoZWwpO1xyXG4gICAgICAgIH0sIFxyXG4gICAgICAgIC8vIHotaW5kZXggOTk2IGlzIHVzZWQgdG8gbWFrZSB0aGUgY29udGVudCBhcHBlYXIgYWJvdmUgZG9jcyBlbGVtZW50cyAoY29kZSBibG9ja3MpXHJcbiAgICAgICAgLy8gYW5kIGJlbG93IHRoZSBNb2RhbCBjb21wb25lbnQgKHotaW5kZXggOTk3KVxyXG4gICAgICAgIHN0eWxlOiB7IC4uLmNvbnRleHQuZmxvYXRpbmdTdHlsZXMsIHpJbmRleDogJzk5NicgfSB9LFxyXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkQ2FyZCwgT2JqZWN0LmFzc2lnbih7fSwgb3RoZXIsIHsgYWxpZ25tZW50OiBjb250ZXh0LmFsaWdubWVudCwgZHJvcERpcmVjdGlvbjogY29udGV4dC5kcm9wRGlyZWN0aW9uLCBoYXNEcm9wU2hhZG93OiB0cnVlLCBpc0ludmVyc2U6IGNvbnRleHQuaXNJbnZlcnNlLCBpc09wZW46IGNvbnRleHQuaXNPcGVuLCBtYXhIZWlnaHQ6IGNvbnRleHQubWF4SGVpZ2h0LCByZWY6IHJlZiwgc3R5bGU6IGhhc0V4cGFuZGFibGVJdGVtc1xyXG4gICAgICAgICAgICAgICAgPyB7IG1heEhlaWdodDogJ2luaGVyaXQnLCBvdmVyZmxvdzogJ2hpZGRlbicgfVxyXG4gICAgICAgICAgICAgICAgOiBwcm9wcy5zdHlsZSwgdGFiSW5kZXg6IC0xLCB0ZXN0SWQ6IHRlc3RJZCA/PyAnZHJvcGRvd25Db250ZW50JywgdGhlbWU6IHRoZW1lLCB3aWR0aDogY29udGV4dC53aWR0aCB9KSxcclxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGlkID8/IGNvbnRleHQuZHJvcGRvd25CdXR0b25JZC5jdXJyZW50LCByb2xlOiBoYXNJdGVtQ2hpbGRyZW4gPyAnbWVudScgOiBudWxsIH0sIGNoaWxkcmVuKSkpKTtcclxufSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURyb3Bkb3duQ29udGVudC5qcy5tYXAiXX0= */"));
14361
- }, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRyb3Bkb3duQ29udGVudC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT2dDIiwiZmlsZSI6IkRyb3Bkb3duQ29udGVudC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcclxuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xyXG5pbXBvcnQgeyBDYXJkIH0gZnJvbSAnLi4vQ2FyZCc7XHJcbmltcG9ydCB7IERyb3Bkb3duQ29udGV4dCwgfSBmcm9tICcuL0Ryb3Bkb3duJztcclxuaW1wb3J0IHsgVGhlbWVDb250ZXh0IH0gZnJvbSAnLi4vLi4vdGhlbWUvVGhlbWVDb250ZXh0JztcclxuaW1wb3J0IHsgdXNlRm9ya2VkUmVmIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xyXG5jb25zdCBTdHlsZWRDYXJkID0gc3R5bGVkKENhcmQpIGBcbiAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLnByaW1hcnk1MDBcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDB9O1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5pc09wZW4gPyAnYmxvY2snIDogJ25vbmUnKX07XG4gIG1heC1oZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMubWF4SGVpZ2h0ID8gcHJvcHMubWF4SGVpZ2h0IDogcHJvcHMudGhlbWUuZHJvcGRvd24uY29udGVudC5tYXhIZWlnaHR9O1xuICBvcGFjaXR5OiAke3Byb3BzID0+IChwcm9wcy5pc09wZW4gPyAnMScgOiAnMCcpfTtcbiAgb3V0bGluZTogMDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgcGFkZGluZzogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM30gMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAycHggc29saWRcbiAgICAgICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHByb3BzLnRoZW1lLmNvbG9ycy5mb2N1c0ludmVyc2VcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLmZvY3VzfTtcbiAgICBvdXRsaW5lLW9mZnNldDogMDtcbiAgfVxuXG4gICR7cHJvcHMgPT4gcHJvcHMud2lkdGggJiZcclxuICAgIGNzcyBgXG4gICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgICAgd2lkdGg6ICR7cHJvcHMud2lkdGh9O1xuICAgIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgRHJvcGRvd25Db250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZikgPT4ge1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiwgdGVzdElkLCBpZCwgLi4ub3RoZXIgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoRHJvcGRvd25Db250ZXh0KTtcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgcmVmID0gdXNlRm9ya2VkUmVmKGZvcndhcmRlZFJlZiwgY29udGV4dC5tZW51UmVmKTtcclxuICAgIGxldCBoYXNJdGVtQ2hpbGRyZW4gPSBmYWxzZTtcclxuICAgIC8vIEZvciBFeHBhbmRhYmxlIERyb3Bkb3ducyB0aGF0IGRvbid0IHJlcXVpcmUgYSBtYXgtaGVpZ2h0XHJcbiAgICBsZXQgaGFzRXhwYW5kYWJsZUl0ZW1zID0gZmFsc2U7XHJcbiAgICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCAoY2hpbGQpID0+IHtcclxuICAgICAgICBpZiAoY2hpbGQ/LnR5cGU/LmRpc3BsYXlOYW1lID09PSAnRHJvcGRvd25NZW51SXRlbScgfHxcclxuICAgICAgICAgICAgY2hpbGQ/LnR5cGU/LmRpc3BsYXlOYW1lID09PSAnRHJvcGRvd25NZW51R3JvdXAnKSB7XHJcbiAgICAgICAgICAgIGhhc0l0ZW1DaGlsZHJlbiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjaGlsZC50eXBlPy5kaXNwbGF5TmFtZSA9PT0gJ0Ryb3Bkb3duRXhwYW5kYWJsZU1lbnVHcm91cCcpIHtcclxuICAgICAgICAgICAgaGFzRXhwYW5kYWJsZUl0ZW1zID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBcImRhdGEtdGVzdGlkXCI6ICdkcm9wZG93bkNvbnRlbnRXcmFwcGVyJywgaWQ6IChpZCA/PyBjb250ZXh0LmRyb3Bkb3duQnV0dG9uSWQuY3VycmVudCkgKyAnX2Ryb3Bkb3duTWVudUlkJywgcmVmOiBlbCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuaXNPcGVuICYmIGNvbnRleHQuc2V0RmxvYXRpbmcoZWwpO1xyXG4gICAgICAgIH0sIFxyXG4gICAgICAgIC8vIHotaW5kZXggOTk2IGlzIHVzZWQgdG8gbWFrZSB0aGUgY29udGVudCBhcHBlYXIgYWJvdmUgZG9jcyBlbGVtZW50cyAoY29kZSBibG9ja3MpXHJcbiAgICAgICAgLy8gYW5kIGJlbG93IHRoZSBNb2RhbCBjb21wb25lbnQgKHotaW5kZXggOTk3KVxyXG4gICAgICAgIHN0eWxlOiB7IC4uLmNvbnRleHQuZmxvYXRpbmdTdHlsZXMsIHpJbmRleDogJzk5NicgfSB9LFxyXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkQ2FyZCwgT2JqZWN0LmFzc2lnbih7fSwgb3RoZXIsIHsgYWxpZ25tZW50OiBjb250ZXh0LmFsaWdubWVudCwgZHJvcERpcmVjdGlvbjogY29udGV4dC5kcm9wRGlyZWN0aW9uLCBoYXNEcm9wU2hhZG93OiB0cnVlLCBpc0ludmVyc2U6IGNvbnRleHQuaXNJbnZlcnNlLCBpc09wZW46IGNvbnRleHQuaXNPcGVuLCBtYXhIZWlnaHQ6IGNvbnRleHQubWF4SGVpZ2h0LCByZWY6IHJlZiwgc3R5bGU6IGhhc0V4cGFuZGFibGVJdGVtc1xyXG4gICAgICAgICAgICAgICAgPyB7IG1heEhlaWdodDogJ2luaGVyaXQnLCBvdmVyZmxvdzogJ2hpZGRlbicgfVxyXG4gICAgICAgICAgICAgICAgOiBwcm9wcy5zdHlsZSwgdGFiSW5kZXg6IC0xLCB0ZXN0SWQ6IHRlc3RJZCA/PyAnZHJvcGRvd25Db250ZW50JywgdGhlbWU6IHRoZW1lLCB3aWR0aDogY29udGV4dC53aWR0aCB9KSxcclxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGlkID8/IGNvbnRleHQuZHJvcGRvd25CdXR0b25JZC5jdXJyZW50LCByb2xlOiBoYXNJdGVtQ2hpbGRyZW4gPyAnbWVudScgOiBudWxsIH0sIGNoaWxkcmVuKSkpKTtcclxufSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURyb3Bkb3duQ29udGVudC5qcy5tYXAiXX0= */"));
14360
+ return props.width && /*#__PURE__*/css("white-space:normal;width:", props.width, ";;label:StyledCard;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRyb3Bkb3duQ29udGVudC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNEJRIiwiZmlsZSI6IkRyb3Bkb3duQ29udGVudC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcclxuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xyXG5pbXBvcnQgeyBDYXJkIH0gZnJvbSAnLi4vQ2FyZCc7XHJcbmltcG9ydCB7IERyb3Bkb3duQ29udGV4dCwgfSBmcm9tICcuL0Ryb3Bkb3duJztcclxuaW1wb3J0IHsgVGhlbWVDb250ZXh0IH0gZnJvbSAnLi4vLi4vdGhlbWUvVGhlbWVDb250ZXh0JztcclxuaW1wb3J0IHsgdXNlRm9ya2VkUmVmIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xyXG5jb25zdCBTdHlsZWRDYXJkID0gc3R5bGVkKENhcmQpIGBcbiAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLnByaW1hcnk1MDBcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDB9O1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5pc09wZW4gPyAnYmxvY2snIDogJ25vbmUnKX07XG4gIG1heC1oZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMubWF4SGVpZ2h0ID8gcHJvcHMubWF4SGVpZ2h0IDogcHJvcHMudGhlbWUuZHJvcGRvd24uY29udGVudC5tYXhIZWlnaHR9O1xuICBvcGFjaXR5OiAke3Byb3BzID0+IChwcm9wcy5pc09wZW4gPyAnMScgOiAnMCcpfTtcbiAgb3V0bGluZTogMDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgcGFkZGluZzogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM30gMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAycHggc29saWRcbiAgICAgICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHByb3BzLnRoZW1lLmNvbG9ycy5mb2N1c0ludmVyc2VcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLmZvY3VzfTtcbiAgICBvdXRsaW5lLW9mZnNldDogMDtcbiAgfVxuXG4gICR7cHJvcHMgPT4gcHJvcHMud2lkdGggJiZcclxuICAgIGNzcyBgXG4gICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgICAgd2lkdGg6ICR7cHJvcHMud2lkdGh9O1xuICAgIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgRHJvcGRvd25Db250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZikgPT4ge1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiwgdGVzdElkLCBpZCwgLi4ub3RoZXIgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoRHJvcGRvd25Db250ZXh0KTtcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgcmVmID0gdXNlRm9ya2VkUmVmKGZvcndhcmRlZFJlZiwgY29udGV4dC5tZW51UmVmKTtcclxuICAgIGxldCBoYXNJdGVtQ2hpbGRyZW4gPSBmYWxzZTtcclxuICAgIC8vIEZvciBFeHBhbmRhYmxlIERyb3Bkb3ducyB0aGF0IGRvbid0IHJlcXVpcmUgYSBtYXgtaGVpZ2h0XHJcbiAgICBsZXQgaGFzRXhwYW5kYWJsZUl0ZW1zID0gZmFsc2U7XHJcbiAgICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCAoY2hpbGQpID0+IHtcclxuICAgICAgICBpZiAoY2hpbGQ/LnR5cGU/LmRpc3BsYXlOYW1lID09PSAnRHJvcGRvd25NZW51SXRlbScgfHxcclxuICAgICAgICAgICAgY2hpbGQ/LnR5cGU/LmRpc3BsYXlOYW1lID09PSAnRHJvcGRvd25NZW51R3JvdXAnKSB7XHJcbiAgICAgICAgICAgIGhhc0l0ZW1DaGlsZHJlbiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjaGlsZC50eXBlPy5kaXNwbGF5TmFtZSA9PT0gJ0Ryb3Bkb3duRXhwYW5kYWJsZU1lbnVHcm91cCcpIHtcclxuICAgICAgICAgICAgaGFzRXhwYW5kYWJsZUl0ZW1zID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBcImRhdGEtdGVzdGlkXCI6ICdkcm9wZG93bkNvbnRlbnRXcmFwcGVyJywgaWQ6IChpZCA/PyBjb250ZXh0LmRyb3Bkb3duQnV0dG9uSWQuY3VycmVudCkgKyAnX2Ryb3Bkb3duTWVudUlkJywgcmVmOiBlbCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuaXNPcGVuICYmIGNvbnRleHQuc2V0RmxvYXRpbmcoZWwpO1xyXG4gICAgICAgIH0sIFxyXG4gICAgICAgIC8vIHotaW5kZXggOTk2IGlzIHVzZWQgdG8gbWFrZSB0aGUgY29udGVudCBhcHBlYXIgYWJvdmUgZG9jcyBlbGVtZW50cyAoY29kZSBibG9ja3MpXHJcbiAgICAgICAgLy8gYW5kIGJlbG93IHRoZSBNb2RhbCBjb21wb25lbnQgKHotaW5kZXggOTk3KVxyXG4gICAgICAgIHN0eWxlOiB7IC4uLmNvbnRleHQuZmxvYXRpbmdTdHlsZXMsIHpJbmRleDogJzk5NicgfSB9LFxyXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkQ2FyZCwgT2JqZWN0LmFzc2lnbih7fSwgb3RoZXIsIHsgYWxpZ25tZW50OiBjb250ZXh0LmFsaWdubWVudCwgZHJvcERpcmVjdGlvbjogY29udGV4dC5kcm9wRGlyZWN0aW9uLCBoYXNEcm9wU2hhZG93OiB0cnVlLCBpc0ludmVyc2U6IGNvbnRleHQuaXNJbnZlcnNlLCBpc09wZW46IGNvbnRleHQuaXNPcGVuLCBtYXhIZWlnaHQ6IGNvbnRleHQubWF4SGVpZ2h0LCByZWY6IHJlZiwgc3R5bGU6IGhhc0V4cGFuZGFibGVJdGVtc1xyXG4gICAgICAgICAgICAgICAgPyB7IG1heEhlaWdodDogJ2luaGVyaXQnLCBvdmVyZmxvdzogJ2hpZGRlbicgfVxyXG4gICAgICAgICAgICAgICAgOiBwcm9wcy5zdHlsZSwgdGFiSW5kZXg6IC0xLCB0ZXN0SWQ6IHRlc3RJZCA/PyAnZHJvcGRvd25Db250ZW50JywgdGhlbWU6IHRoZW1lLCB3aWR0aDogY29udGV4dC53aWR0aCB9KSxcclxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGlkID8/IGNvbnRleHQuZHJvcGRvd25CdXR0b25JZC5jdXJyZW50LCByb2xlOiBoYXNJdGVtQ2hpbGRyZW4gfHwgaGFzRXhwYW5kYWJsZUl0ZW1zID8gJ21lbnUnIDogbnVsbCB9LCBjaGlsZHJlbikpKSk7XHJcbn0pO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ecm9wZG93bkNvbnRlbnQuanMubWFwIl19 */"));
14361
+ }, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRyb3Bkb3duQ29udGVudC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT2dDIiwiZmlsZSI6IkRyb3Bkb3duQ29udGVudC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcclxuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xyXG5pbXBvcnQgeyBDYXJkIH0gZnJvbSAnLi4vQ2FyZCc7XHJcbmltcG9ydCB7IERyb3Bkb3duQ29udGV4dCwgfSBmcm9tICcuL0Ryb3Bkb3duJztcclxuaW1wb3J0IHsgVGhlbWVDb250ZXh0IH0gZnJvbSAnLi4vLi4vdGhlbWUvVGhlbWVDb250ZXh0JztcclxuaW1wb3J0IHsgdXNlRm9ya2VkUmVmIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xyXG5jb25zdCBTdHlsZWRDYXJkID0gc3R5bGVkKENhcmQpIGBcbiAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLnByaW1hcnk1MDBcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDB9O1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5pc09wZW4gPyAnYmxvY2snIDogJ25vbmUnKX07XG4gIG1heC1oZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMubWF4SGVpZ2h0ID8gcHJvcHMubWF4SGVpZ2h0IDogcHJvcHMudGhlbWUuZHJvcGRvd24uY29udGVudC5tYXhIZWlnaHR9O1xuICBvcGFjaXR5OiAke3Byb3BzID0+IChwcm9wcy5pc09wZW4gPyAnMScgOiAnMCcpfTtcbiAgb3V0bGluZTogMDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgcGFkZGluZzogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM30gMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAycHggc29saWRcbiAgICAgICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHByb3BzLnRoZW1lLmNvbG9ycy5mb2N1c0ludmVyc2VcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLmZvY3VzfTtcbiAgICBvdXRsaW5lLW9mZnNldDogMDtcbiAgfVxuXG4gICR7cHJvcHMgPT4gcHJvcHMud2lkdGggJiZcclxuICAgIGNzcyBgXG4gICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgICAgd2lkdGg6ICR7cHJvcHMud2lkdGh9O1xuICAgIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgRHJvcGRvd25Db250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZikgPT4ge1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiwgdGVzdElkLCBpZCwgLi4ub3RoZXIgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoRHJvcGRvd25Db250ZXh0KTtcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgcmVmID0gdXNlRm9ya2VkUmVmKGZvcndhcmRlZFJlZiwgY29udGV4dC5tZW51UmVmKTtcclxuICAgIGxldCBoYXNJdGVtQ2hpbGRyZW4gPSBmYWxzZTtcclxuICAgIC8vIEZvciBFeHBhbmRhYmxlIERyb3Bkb3ducyB0aGF0IGRvbid0IHJlcXVpcmUgYSBtYXgtaGVpZ2h0XHJcbiAgICBsZXQgaGFzRXhwYW5kYWJsZUl0ZW1zID0gZmFsc2U7XHJcbiAgICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCAoY2hpbGQpID0+IHtcclxuICAgICAgICBpZiAoY2hpbGQ/LnR5cGU/LmRpc3BsYXlOYW1lID09PSAnRHJvcGRvd25NZW51SXRlbScgfHxcclxuICAgICAgICAgICAgY2hpbGQ/LnR5cGU/LmRpc3BsYXlOYW1lID09PSAnRHJvcGRvd25NZW51R3JvdXAnKSB7XHJcbiAgICAgICAgICAgIGhhc0l0ZW1DaGlsZHJlbiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjaGlsZC50eXBlPy5kaXNwbGF5TmFtZSA9PT0gJ0Ryb3Bkb3duRXhwYW5kYWJsZU1lbnVHcm91cCcpIHtcclxuICAgICAgICAgICAgaGFzRXhwYW5kYWJsZUl0ZW1zID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBcImRhdGEtdGVzdGlkXCI6ICdkcm9wZG93bkNvbnRlbnRXcmFwcGVyJywgaWQ6IChpZCA/PyBjb250ZXh0LmRyb3Bkb3duQnV0dG9uSWQuY3VycmVudCkgKyAnX2Ryb3Bkb3duTWVudUlkJywgcmVmOiBlbCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuaXNPcGVuICYmIGNvbnRleHQuc2V0RmxvYXRpbmcoZWwpO1xyXG4gICAgICAgIH0sIFxyXG4gICAgICAgIC8vIHotaW5kZXggOTk2IGlzIHVzZWQgdG8gbWFrZSB0aGUgY29udGVudCBhcHBlYXIgYWJvdmUgZG9jcyBlbGVtZW50cyAoY29kZSBibG9ja3MpXHJcbiAgICAgICAgLy8gYW5kIGJlbG93IHRoZSBNb2RhbCBjb21wb25lbnQgKHotaW5kZXggOTk3KVxyXG4gICAgICAgIHN0eWxlOiB7IC4uLmNvbnRleHQuZmxvYXRpbmdTdHlsZXMsIHpJbmRleDogJzk5NicgfSB9LFxyXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkQ2FyZCwgT2JqZWN0LmFzc2lnbih7fSwgb3RoZXIsIHsgYWxpZ25tZW50OiBjb250ZXh0LmFsaWdubWVudCwgZHJvcERpcmVjdGlvbjogY29udGV4dC5kcm9wRGlyZWN0aW9uLCBoYXNEcm9wU2hhZG93OiB0cnVlLCBpc0ludmVyc2U6IGNvbnRleHQuaXNJbnZlcnNlLCBpc09wZW46IGNvbnRleHQuaXNPcGVuLCBtYXhIZWlnaHQ6IGNvbnRleHQubWF4SGVpZ2h0LCByZWY6IHJlZiwgc3R5bGU6IGhhc0V4cGFuZGFibGVJdGVtc1xyXG4gICAgICAgICAgICAgICAgPyB7IG1heEhlaWdodDogJ2luaGVyaXQnLCBvdmVyZmxvdzogJ2hpZGRlbicgfVxyXG4gICAgICAgICAgICAgICAgOiBwcm9wcy5zdHlsZSwgdGFiSW5kZXg6IC0xLCB0ZXN0SWQ6IHRlc3RJZCA/PyAnZHJvcGRvd25Db250ZW50JywgdGhlbWU6IHRoZW1lLCB3aWR0aDogY29udGV4dC53aWR0aCB9KSxcclxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGlkID8/IGNvbnRleHQuZHJvcGRvd25CdXR0b25JZC5jdXJyZW50LCByb2xlOiBoYXNJdGVtQ2hpbGRyZW4gfHwgaGFzRXhwYW5kYWJsZUl0ZW1zID8gJ21lbnUnIDogbnVsbCB9LCBjaGlsZHJlbikpKSk7XHJcbn0pO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ecm9wZG93bkNvbnRlbnQuanMubWFwIl19 */"));
14362
14362
  var DropdownContent = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
14363
14363
  var children = props.children,
14364
14364
  testId = props.testId,
@@ -14409,7 +14409,7 @@ var DropdownContent = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
14409
14409
  width: context.width
14410
14410
  }), createElement("div", {
14411
14411
  "aria-labelledby": id != null ? id : context.dropdownButtonId.current,
14412
- role: hasItemChildren ? 'menu' : null
14412
+ role: hasItemChildren || hasExpandableItems ? 'menu' : null
14413
14413
  }, children)));
14414
14414
  });
14415
14415
 
@@ -15653,7 +15653,7 @@ var StyledPanel = /*#__PURE__*/_styled("div", {
15653
15653
  return props.theme.bodyFont;
15654
15654
  }, ";padding:", function (props) {
15655
15655
  return props.theme.spaceScale.spacing03 + " " + props.theme.spaceScale.spacing05 + " " + props.theme.spaceScale.spacing04;
15656
- }, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFjY29yZGlvblBhbmVsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNK0IiLCJmaWxlIjoiQWNjb3JkaW9uUGFuZWwudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IEFjY29yZGlvbkl0ZW1Db250ZXh0IH0gZnJvbSAnLi91c2VBY2NvcmRpb25JdGVtJztcclxuaW1wb3J0IHsgdXNlSXNJbnZlcnNlIH0gZnJvbSAnLi4vLi4vaW52ZXJzZSc7XHJcbmltcG9ydCB7IFRoZW1lQ29udGV4dCB9IGZyb20gJy4uLy4uL3RoZW1lL1RoZW1lQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyYW5zaXRpb24gfSBmcm9tICcuLi9UcmFuc2l0aW9uJztcclxuY29uc3QgU3R5bGVkUGFuZWwgPSBzdHlsZWQuZGl2IGBcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMFxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDcwMH07XG4gIGZvbnQtZmFtaWx5OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmJvZHlGb250fTtcbiAgcGFkZGluZzogJHtwcm9wcyA9PiBgJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM30gJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX0gJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNH1gfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBBY2NvcmRpb25QYW5lbCA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCByZWYpID0+IHtcclxuICAgIGNvbnN0IHsgY2hpbGRyZW4sIHRlc3RJZCwgaXNJbnZlcnNlOiBpc0ludmVyc2VQcm9wLCAuLi5yZXN0IH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgaXNJbnZlcnNlID0gdXNlSXNJbnZlcnNlKGlzSW52ZXJzZVByb3ApO1xyXG4gICAgY29uc3QgeyBpc0V4cGFuZGVkLCBwYW5lbElkIH0gPSBSZWFjdC51c2VDb250ZXh0KEFjY29yZGlvbkl0ZW1Db250ZXh0KTtcclxuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChUcmFuc2l0aW9uLCB7IGlzT3BlbjogaXNFeHBhbmRlZCwgY29sbGFwc2U6IHRydWUsIHVubW91bnRPbkV4aXQ6IHRydWUgfSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZFBhbmVsLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IFwiYXJpYS1oaWRkZW5cIjogIWlzRXhwYW5kZWQsIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLCBpZDogcGFuZWxJZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHJlZjogcmVmLCB0aGVtZTogdGhlbWUgfSksIGNoaWxkcmVuKSkpO1xyXG59KTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QWNjb3JkaW9uUGFuZWwuanMubWFwIl19 */"));
15656
+ }, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFjY29yZGlvblBhbmVsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNK0IiLCJmaWxlIjoiQWNjb3JkaW9uUGFuZWwudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IEFjY29yZGlvbkl0ZW1Db250ZXh0IH0gZnJvbSAnLi91c2VBY2NvcmRpb25JdGVtJztcclxuaW1wb3J0IHsgdXNlSXNJbnZlcnNlIH0gZnJvbSAnLi4vLi4vaW52ZXJzZSc7XHJcbmltcG9ydCB7IFRoZW1lQ29udGV4dCB9IGZyb20gJy4uLy4uL3RoZW1lL1RoZW1lQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyYW5zaXRpb24gfSBmcm9tICcuLi9UcmFuc2l0aW9uJztcclxuY29uc3QgU3R5bGVkUGFuZWwgPSBzdHlsZWQuZGl2IGBcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMFxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDcwMH07XG4gIGZvbnQtZmFtaWx5OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmJvZHlGb250fTtcbiAgcGFkZGluZzogJHtwcm9wcyA9PiBgJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM30gJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX0gJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNH1gfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBBY2NvcmRpb25QYW5lbCA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCByZWYpID0+IHtcclxuICAgIGNvbnN0IHsgY2hpbGRyZW4sIHRlc3RJZCwgaXNJbnZlcnNlOiBpc0ludmVyc2VQcm9wLCAuLi5yZXN0IH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgaXNJbnZlcnNlID0gdXNlSXNJbnZlcnNlKGlzSW52ZXJzZVByb3ApO1xyXG4gICAgY29uc3QgeyBidXR0b25JZCwgaXNFeHBhbmRlZCwgcGFuZWxJZCB9ID0gUmVhY3QudXNlQ29udGV4dChBY2NvcmRpb25JdGVtQ29udGV4dCk7XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJhbnNpdGlvbiwgeyBpc09wZW46IGlzRXhwYW5kZWQsIGNvbGxhcHNlOiB0cnVlLCB1bm1vdW50T25FeGl0OiB0cnVlIH0sXHJcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRQYW5lbCwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwgeyBcImFyaWEtaGlkZGVuXCI6ICFpc0V4cGFuZGVkLCBcImFyaWEtbGFiZWxsZWRieVwiOiBidXR0b25JZCwgXCJkYXRhLXRlc3RpZFwiOiB0ZXN0SWQsIGlkOiBwYW5lbElkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgcmVmOiByZWYsIHRoZW1lOiB0aGVtZSB9KSwgY2hpbGRyZW4pKSk7XHJcbn0pO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1BY2NvcmRpb25QYW5lbC5qcy5tYXAiXX0= */"));
15657
15657
  var AccordionPanel = /*#__PURE__*/forwardRef(function (props, ref) {
15658
15658
  var children = props.children,
15659
15659
  testId = props.testId,
@@ -15662,6 +15662,7 @@ var AccordionPanel = /*#__PURE__*/forwardRef(function (props, ref) {
15662
15662
  var theme = useContext(ThemeContext);
15663
15663
  var isInverse = useIsInverse(isInverseProp);
15664
15664
  var _React$useContext = useContext(AccordionItemContext),
15665
+ buttonId = _React$useContext.buttonId,
15665
15666
  isExpanded = _React$useContext.isExpanded,
15666
15667
  panelId = _React$useContext.panelId;
15667
15668
  return createElement(Transition, {
@@ -15670,6 +15671,7 @@ var AccordionPanel = /*#__PURE__*/forwardRef(function (props, ref) {
15670
15671
  unmountOnExit: true
15671
15672
  }, createElement(StyledPanel, Object.assign({}, rest, {
15672
15673
  "aria-hidden": !isExpanded,
15674
+ "aria-labelledby": buttonId,
15673
15675
  "data-testid": testId,
15674
15676
  id: panelId,
15675
15677
  isInverse: isInverse,
@@ -15688,7 +15690,7 @@ var StyledAccordion$1 = /*#__PURE__*/_styled(Accordion, {
15688
15690
  styles: "border:none;padding:0"
15689
15691
  } : {
15690
15692
  name: "1rznqq0",
15691
- styles: "border:none;padding:0/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRyb3Bkb3duRXhwYW5kYWJsZU1lbnVHcm91cC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSTBDIiwiZmlsZSI6IkRyb3Bkb3duRXhwYW5kYWJsZU1lbnVHcm91cC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcclxuaW1wb3J0IHsgQWNjb3JkaW9uLCBBY2NvcmRpb25JY29uUG9zaXRpb24gfSBmcm9tICcuLi9BY2NvcmRpb24nO1xyXG5pbXBvcnQgeyBEcm9wZG93bkNvbnRleHQgfSBmcm9tICcuL0Ryb3Bkb3duJztcclxuY29uc3QgU3R5bGVkQWNjb3JkaW9uID0gc3R5bGVkKEFjY29yZGlvbikgYFxuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG5gO1xyXG5leHBvcnQgY29uc3QgRHJvcGRvd25FeHBhbmRhYmxlTWVudUdyb3VwQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQoe30pO1xyXG5leHBvcnQgY29uc3QgRHJvcGRvd25FeHBhbmRhYmxlTWVudUdyb3VwID0gUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4ge1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiwgdGVzdElkLCAuLi5vdGhlciB9ID0gcHJvcHM7XHJcbiAgICBjb25zdCBjb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChEcm9wZG93bkNvbnRleHQpO1xyXG4gICAgbGV0IGV4cGFuZGFibGVNZW51QnV0dG9uSGFzSWNvbiA9IGZhbHNlO1xyXG4gICAgbGV0IGlzRXhwYW5kYWJsZVBhbmVsID0gZmFsc2U7XHJcbiAgICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCAoY2hpbGQpID0+IHtcclxuICAgICAgICBpZiAoY2hpbGQudHlwZT8uZGlzcGxheU5hbWUgPT09ICdEcm9wZG93bkV4cGFuZGFibGVNZW51SXRlbScpIHtcclxuICAgICAgICAgICAgUmVhY3QuQ2hpbGRyZW4uZm9yRWFjaChjaGlsZC5wcm9wcy5jaGlsZHJlbiwgKGMpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChjLnR5cGU/LmRpc3BsYXlOYW1lID09PSAnRHJvcGRvd25FeHBhbmRhYmxlTWVudUJ1dHRvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYy5wcm9wcy5pY29uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGVNZW51QnV0dG9uSGFzSWNvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAoUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGQpKSB7XHJcbiAgICAgICAgICAgICAgICBpc0V4cGFuZGFibGVQYW5lbCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChEcm9wZG93bkV4cGFuZGFibGVNZW51R3JvdXBDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7IGV4cGFuZGFibGVNZW51QnV0dG9uSGFzSWNvbiwgaXNFeHBhbmRhYmxlUGFuZWwgfSB9LFxyXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkQWNjb3JkaW9uLCBPYmplY3QuYXNzaWduKHt9LCBvdGhlciwgeyBpY29uUG9zaXRpb246IEFjY29yZGlvbkljb25Qb3NpdGlvbi5yaWdodCwgaXNJbnZlcnNlOiBjb250ZXh0LmlzSW52ZXJzZSwgcmVmOiByZWYsIHJvbGU6IFwiZ3JvdXBcIiwgdGVzdElkOiB0ZXN0SWQgfSksIGNoaWxkcmVuKSkpO1xyXG59KTtcclxuRHJvcGRvd25FeHBhbmRhYmxlTWVudUdyb3VwLmRpc3BsYXlOYW1lID0gJ0Ryb3Bkb3duRXhwYW5kYWJsZU1lbnVHcm91cCc7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURyb3Bkb3duRXhwYW5kYWJsZU1lbnVHcm91cC5qcy5tYXAiXX0= */",
15693
+ styles: "border:none;padding:0/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRyb3Bkb3duRXhwYW5kYWJsZU1lbnVHcm91cC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSTBDIiwiZmlsZSI6IkRyb3Bkb3duRXhwYW5kYWJsZU1lbnVHcm91cC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcclxuaW1wb3J0IHsgQWNjb3JkaW9uLCBBY2NvcmRpb25JY29uUG9zaXRpb24gfSBmcm9tICcuLi9BY2NvcmRpb24nO1xyXG5pbXBvcnQgeyBEcm9wZG93bkNvbnRleHQgfSBmcm9tICcuL0Ryb3Bkb3duJztcclxuY29uc3QgU3R5bGVkQWNjb3JkaW9uID0gc3R5bGVkKEFjY29yZGlvbikgYFxuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG5gO1xyXG5leHBvcnQgY29uc3QgRHJvcGRvd25FeHBhbmRhYmxlTWVudUdyb3VwQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQoe30pO1xyXG5leHBvcnQgY29uc3QgRHJvcGRvd25FeHBhbmRhYmxlTWVudUdyb3VwID0gUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4ge1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiwgdGVzdElkLCAuLi5vdGhlciB9ID0gcHJvcHM7XHJcbiAgICBjb25zdCBjb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChEcm9wZG93bkNvbnRleHQpO1xyXG4gICAgbGV0IGV4cGFuZGFibGVNZW51QnV0dG9uSGFzSWNvbiA9IGZhbHNlO1xyXG4gICAgbGV0IGlzRXhwYW5kYWJsZVBhbmVsID0gZmFsc2U7XHJcbiAgICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCAoY2hpbGQpID0+IHtcclxuICAgICAgICBpZiAoY2hpbGQudHlwZT8uZGlzcGxheU5hbWUgPT09ICdEcm9wZG93bkV4cGFuZGFibGVNZW51SXRlbScpIHtcclxuICAgICAgICAgICAgUmVhY3QuQ2hpbGRyZW4uZm9yRWFjaChjaGlsZC5wcm9wcy5jaGlsZHJlbiwgKGMpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChjLnR5cGU/LmRpc3BsYXlOYW1lID09PSAnRHJvcGRvd25FeHBhbmRhYmxlTWVudUJ1dHRvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYy5wcm9wcy5pY29uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGVNZW51QnV0dG9uSGFzSWNvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAoUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGQpKSB7XHJcbiAgICAgICAgICAgICAgICBpc0V4cGFuZGFibGVQYW5lbCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChEcm9wZG93bkV4cGFuZGFibGVNZW51R3JvdXBDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7IGV4cGFuZGFibGVNZW51QnV0dG9uSGFzSWNvbiwgaXNFeHBhbmRhYmxlUGFuZWwgfSB9LFxyXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkQWNjb3JkaW9uLCBPYmplY3QuYXNzaWduKHt9LCBvdGhlciwgeyBpY29uUG9zaXRpb246IEFjY29yZGlvbkljb25Qb3NpdGlvbi5yaWdodCwgaXNJbnZlcnNlOiBjb250ZXh0LmlzSW52ZXJzZSwgcmVmOiByZWYsIHRlc3RJZDogdGVzdElkIH0pLCBjaGlsZHJlbikpKTtcclxufSk7XHJcbkRyb3Bkb3duRXhwYW5kYWJsZU1lbnVHcm91cC5kaXNwbGF5TmFtZSA9ICdEcm9wZG93bkV4cGFuZGFibGVNZW51R3JvdXAnO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ecm9wZG93bkV4cGFuZGFibGVNZW51R3JvdXAuanMubWFwIl19 */",
15692
15694
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$s
15693
15695
  });
15694
15696
  var DropdownExpandableMenuGroupContext = /*#__PURE__*/createContext({});
@@ -15725,7 +15727,6 @@ var DropdownExpandableMenuGroup = /*#__PURE__*/forwardRef(function (props, ref)
15725
15727
  iconPosition: AccordionIconPosition.right,
15726
15728
  isInverse: context.isInverse,
15727
15729
  ref: ref,
15728
- role: "group",
15729
15730
  testId: testId
15730
15731
  }), children));
15731
15732
  });
@@ -15759,7 +15760,7 @@ var StyledAccordionButton = /*#__PURE__*/_styled(AccordionButton, {
15759
15760
  return !props.icon && props.expandableMenuButtonHasIcon ? props.theme.spaceScale.spacing03 + " " + props.theme.spaceScale.spacing05 + " " + props.theme.spaceScale.spacing03 + " " + props.theme.spaceScale.spacing11 : props.theme.spaceScale.spacing03 + " " + props.theme.spaceScale.spacing05;
15760
15761
  }, ";margin:0;border-top:0;&:focus{outline-offset:-2px;}&:hover,&:focus{background:", function (props) {
15761
15762
  return props.isMenuItemContextDisabled ? '' : menuBackground;
15762
- }, ";}>span{display:flex;}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRyb3Bkb3duRXhwYW5kYWJsZU1lbnVCdXR0b24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNzRCIsImZpbGUiOiJEcm9wZG93bkV4cGFuZGFibGVNZW51QnV0dG9uLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xyXG5pbXBvcnQgeyBBY2NvcmRpb25CdXR0b24gfSBmcm9tICcuLi9BY2NvcmRpb24nO1xyXG5pbXBvcnQgeyBEcm9wZG93bkNvbnRleHQgfSBmcm9tICcuL0Ryb3Bkb3duJztcclxuaW1wb3J0IHsgRHJvcGRvd25FeHBhbmRhYmxlTWVudUdyb3VwQ29udGV4dCB9IGZyb20gJy4vRHJvcGRvd25FeHBhbmRhYmxlTWVudUdyb3VwJztcclxuaW1wb3J0IHsgRHJvcGRvd25FeHBhbmRhYmxlTWVudUl0ZW1Db250ZXh0IH0gZnJvbSAnLi9Ecm9wZG93bkV4cGFuZGFibGVNZW51SXRlbSc7XHJcbmltcG9ydCB7IEljb25XcmFwcGVyLCBtZW51QmFja2dyb3VuZCB9IGZyb20gJy4vRHJvcGRvd25NZW51SXRlbSc7XHJcbmltcG9ydCB7IFRoZW1lQ29udGV4dCB9IGZyb20gJy4uLy4uL3RoZW1lL1RoZW1lQ29udGV4dCc7XHJcbmltcG9ydCB7IHVzZUZvcmtlZFJlZiB9IGZyb20gJy4uLy4uL3V0aWxzJztcclxuY29uc3QgU3R5bGVkQWNjb3JkaW9uQnV0dG9uID0gc3R5bGVkKEFjY29yZGlvbkJ1dHRvbikgYFxuICBmb250LXdlaWdodDogNDAwO1xuICBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcbiAgcGFkZGluZzogJHtwcm9wcyA9PiAhcHJvcHMuaWNvbiAmJiBwcm9wcy5leHBhbmRhYmxlTWVudUJ1dHRvbkhhc0ljb25cclxuICAgID8gYCR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9ICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDV9ICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9ICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMTF9YFxyXG4gICAgOiBgJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM30gJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX1gfTtcbiAgbWFyZ2luOiAwO1xuICBib3JkZXItdG9wOiAwO1xuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgfVxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IHByb3BzLmlzTWVudUl0ZW1Db250ZXh0RGlzYWJsZWQgPyAnJyA6IG1lbnVCYWNrZ3JvdW5kfTtcbiAgfVxuICA+IHNwYW4ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH1cbmA7XHJcbmNvbnN0IFN0eWxlZEljb25XcmFwcGVyID0gc3R5bGVkKEljb25XcmFwcGVyKSBgXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuYDtcclxuZXhwb3J0IGNvbnN0IERyb3Bkb3duRXhwYW5kYWJsZU1lbnVCdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGNoaWxkcmVuLCBjdXN0b21PbktleURvd24sIGljb24sIHRlc3RJZCwgLi4ub3RoZXIgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XHJcbiAgICBjb25zdCBjb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChEcm9wZG93bkNvbnRleHQpO1xyXG4gICAgY29uc3QgZXhwYW5kYWJsZU1lbnVHcm91cENvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KERyb3Bkb3duRXhwYW5kYWJsZU1lbnVHcm91cENvbnRleHQpO1xyXG4gICAgY29uc3QgZXhwYW5kYWJsZU1lbnVJdGVtQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoRHJvcGRvd25FeHBhbmRhYmxlTWVudUl0ZW1Db250ZXh0KTtcclxuICAgIGNvbnN0IG93blJlZiA9IFJlYWN0LnVzZVJlZigpO1xyXG4gICAgY29uc3QgcmVmID0gdXNlRm9ya2VkUmVmKGZvcndhcmRlZFJlZiwgb3duUmVmKTtcclxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKCFleHBhbmRhYmxlTWVudUl0ZW1Db250ZXh0LmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQucmVnaXN0ZXJEcm9wZG93bk1lbnVJdGVtKGNvbnRleHQuaXRlbVJlZkFycmF5LCBvd25SZWYpO1xyXG4gICAgICAgIH1cclxuICAgIH0sIFtdKTtcclxuICAgIC8vQWxsb3dzIGEgY3VzdG9tIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIGEga2V5IGlzIHByZXNzZWQgdGhhdCBvdmVycmlkZXMgdGhlIGRlZmF1bHQgQWNjb3JkaW9uQnV0dG9uIG9uS2V5RG93biBldmVudC5cclxuICAgIGZ1bmN0aW9uIGhhbmRsZUN1c3RvbU9uS2V5RG93bigpIHtcclxuICAgICAgICBpZiAoY3VzdG9tT25LZXlEb3duICYmIHR5cGVvZiBjdXN0b21PbktleURvd24gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGN1c3RvbU9uS2V5RG93bigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRBY2NvcmRpb25CdXR0b24sIE9iamVjdC5hc3NpZ24oe30sIG90aGVyLCB7IHJlZjogcmVmLCBjdXN0b21PbktleURvd246IGhhbmRsZUN1c3RvbU9uS2V5RG93biwgaWNvbjogaWNvbiwgdGhlbWU6IHRoZW1lLCBleHBhbmRhYmxlTWVudUJ1dHRvbkhhc0ljb246IGV4cGFuZGFibGVNZW51R3JvdXBDb250ZXh0LmV4cGFuZGFibGVNZW51QnV0dG9uSGFzSWNvbiwgaXNJbnZlcnNlOiBjb250ZXh0LmlzSW52ZXJzZSwgaXNNZW51SXRlbUNvbnRleHREaXNhYmxlZDogZXhwYW5kYWJsZU1lbnVJdGVtQ29udGV4dC5kaXNhYmxlZCwgdGVzdElkOiB0ZXN0SWQgfSksXHJcbiAgICAgICAgaWNvbiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRJY29uV3JhcHBlciwgeyB0aGVtZTogdGhlbWUsIGlzSW52ZXJzZTogY29udGV4dC5pc0ludmVyc2UgfSwgaWNvbikpLFxyXG4gICAgICAgIGNoaWxkcmVuKSk7XHJcbn0pO1xyXG5Ecm9wZG93bkV4cGFuZGFibGVNZW51QnV0dG9uLmRpc3BsYXlOYW1lID0gJ0Ryb3Bkb3duRXhwYW5kYWJsZU1lbnVCdXR0b24nO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ecm9wZG93bkV4cGFuZGFibGVNZW51QnV0dG9uLmpzLm1hcCJdfQ== */"));
15763
+ }, ";}>span{display:flex;}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRyb3Bkb3duRXhwYW5kYWJsZU1lbnVCdXR0b24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNzRCIsImZpbGUiOiJEcm9wZG93bkV4cGFuZGFibGVNZW51QnV0dG9uLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xyXG5pbXBvcnQgeyBBY2NvcmRpb25CdXR0b24sIEFjY29yZGlvbkl0ZW1Db250ZXh0LCB9IGZyb20gJy4uL0FjY29yZGlvbic7XHJcbmltcG9ydCB7IERyb3Bkb3duQ29udGV4dCB9IGZyb20gJy4vRHJvcGRvd24nO1xyXG5pbXBvcnQgeyBEcm9wZG93bkV4cGFuZGFibGVNZW51R3JvdXBDb250ZXh0IH0gZnJvbSAnLi9Ecm9wZG93bkV4cGFuZGFibGVNZW51R3JvdXAnO1xyXG5pbXBvcnQgeyBEcm9wZG93bkV4cGFuZGFibGVNZW51SXRlbUNvbnRleHQgfSBmcm9tICcuL0Ryb3Bkb3duRXhwYW5kYWJsZU1lbnVJdGVtJztcclxuaW1wb3J0IHsgSWNvbldyYXBwZXIsIG1lbnVCYWNrZ3JvdW5kIH0gZnJvbSAnLi9Ecm9wZG93bk1lbnVJdGVtJztcclxuaW1wb3J0IHsgVGhlbWVDb250ZXh0IH0gZnJvbSAnLi4vLi4vdGhlbWUvVGhlbWVDb250ZXh0JztcclxuaW1wb3J0IHsgdXNlRm9ya2VkUmVmIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xyXG5jb25zdCBTdHlsZWRBY2NvcmRpb25CdXR0b24gPSBzdHlsZWQoQWNjb3JkaW9uQnV0dG9uKSBgXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuICBwYWRkaW5nOiAke3Byb3BzID0+ICFwcm9wcy5pY29uICYmIHByb3BzLmV4cGFuZGFibGVNZW51QnV0dG9uSGFzSWNvblxyXG4gICAgPyBgJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM30gJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX0gJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM30gJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcxMX1gXHJcbiAgICA6IGAke3Byb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzfSAke3Byb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA1fWB9O1xuICBtYXJnaW46IDA7XG4gIGJvcmRlci10b3A6IDA7XG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICB9XG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQ6ICR7cHJvcHMgPT4gcHJvcHMuaXNNZW51SXRlbUNvbnRleHREaXNhYmxlZCA/ICcnIDogbWVudUJhY2tncm91bmR9O1xuICB9XG4gID4gc3BhbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuYDtcclxuY29uc3QgU3R5bGVkSWNvbldyYXBwZXIgPSBzdHlsZWQoSWNvbldyYXBwZXIpIGBcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5gO1xyXG5leHBvcnQgY29uc3QgRHJvcGRvd25FeHBhbmRhYmxlTWVudUJ1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpID0+IHtcclxuICAgIGNvbnN0IHsgY2hpbGRyZW4sIGN1c3RvbU9uS2V5RG93biwgaWNvbiwgdGVzdElkLCAuLi5vdGhlciB9ID0gcHJvcHM7XHJcbiAgICBjb25zdCB0aGVtZSA9IFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KTtcclxuICAgIGNvbnN0IGNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KERyb3Bkb3duQ29udGV4dCk7XHJcbiAgICBjb25zdCBleHBhbmRhYmxlTWVudUdyb3VwQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoRHJvcGRvd25FeHBhbmRhYmxlTWVudUdyb3VwQ29udGV4dCk7XHJcbiAgICBjb25zdCBleHBhbmRhYmxlTWVudUl0ZW1Db250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChEcm9wZG93bkV4cGFuZGFibGVNZW51SXRlbUNvbnRleHQpO1xyXG4gICAgY29uc3QgeyBpc0V4cGFuZGVkIH0gPSBSZWFjdC51c2VDb250ZXh0KEFjY29yZGlvbkl0ZW1Db250ZXh0KTtcclxuICAgIGNvbnN0IG93blJlZiA9IFJlYWN0LnVzZVJlZigpO1xyXG4gICAgY29uc3QgcmVmID0gdXNlRm9ya2VkUmVmKGZvcndhcmRlZFJlZiwgb3duUmVmKTtcclxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKCFleHBhbmRhYmxlTWVudUl0ZW1Db250ZXh0LmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQucmVnaXN0ZXJEcm9wZG93bk1lbnVJdGVtKGNvbnRleHQuaXRlbVJlZkFycmF5LCBvd25SZWYpO1xyXG4gICAgICAgIH1cclxuICAgIH0sIFtdKTtcclxuICAgIC8vQWxsb3dzIGEgY3VzdG9tIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIGEga2V5IGlzIHByZXNzZWQgdGhhdCBvdmVycmlkZXMgdGhlIGRlZmF1bHQgQWNjb3JkaW9uQnV0dG9uIG9uS2V5RG93biBldmVudC5cclxuICAgIGZ1bmN0aW9uIGhhbmRsZUN1c3RvbU9uS2V5RG93bigpIHtcclxuICAgICAgICBpZiAoY3VzdG9tT25LZXlEb3duICYmIHR5cGVvZiBjdXN0b21PbktleURvd24gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGN1c3RvbU9uS2V5RG93bigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRBY2NvcmRpb25CdXR0b24sIE9iamVjdC5hc3NpZ24oe30sIG90aGVyLCB7IFwiYXJpYS1leHBhbmRlZFwiOiBpc0V4cGFuZGVkLCBcImFyaWEtaGFzcG9wdXBcIjogXCJ0cnVlXCIsIHJlZjogcmVmLCByb2xlOiBcIm1lbnVpdGVtXCIsIGN1c3RvbU9uS2V5RG93bjogaGFuZGxlQ3VzdG9tT25LZXlEb3duLCBpY29uOiBpY29uLCB0aGVtZTogdGhlbWUsIGV4cGFuZGFibGVNZW51QnV0dG9uSGFzSWNvbjogZXhwYW5kYWJsZU1lbnVHcm91cENvbnRleHQuZXhwYW5kYWJsZU1lbnVCdXR0b25IYXNJY29uLCBpc0ludmVyc2U6IGNvbnRleHQuaXNJbnZlcnNlLCBpc01lbnVJdGVtQ29udGV4dERpc2FibGVkOiBleHBhbmRhYmxlTWVudUl0ZW1Db250ZXh0LmRpc2FibGVkLCB0ZXN0SWQ6IHRlc3RJZCB9KSxcclxuICAgICAgICBpY29uICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEljb25XcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaXNJbnZlcnNlOiBjb250ZXh0LmlzSW52ZXJzZSB9LCBpY29uKSksXHJcbiAgICAgICAgY2hpbGRyZW4pKTtcclxufSk7XHJcbkRyb3Bkb3duRXhwYW5kYWJsZU1lbnVCdXR0b24uZGlzcGxheU5hbWUgPSAnRHJvcGRvd25FeHBhbmRhYmxlTWVudUJ1dHRvbic7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURyb3Bkb3duRXhwYW5kYWJsZU1lbnVCdXR0b24uanMubWFwIl19 */"));
15763
15764
  var StyledIconWrapper = /*#__PURE__*/_styled(IconWrapper$7, {
15764
15765
  target: "e1404z5f0",
15765
15766
  label: "StyledIconWrapper"
@@ -15768,7 +15769,7 @@ var StyledIconWrapper = /*#__PURE__*/_styled(IconWrapper$7, {
15768
15769
  styles: "justify-content:center"
15769
15770
  } : {
15770
15771
  name: "f7ay7b",
15771
- styles: "justify-content:center/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRyb3Bkb3duRXhwYW5kYWJsZU1lbnVCdXR0b24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRCOEMiLCJmaWxlIjoiRHJvcGRvd25FeHBhbmRhYmxlTWVudUJ1dHRvbi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcclxuaW1wb3J0IHsgQWNjb3JkaW9uQnV0dG9uIH0gZnJvbSAnLi4vQWNjb3JkaW9uJztcclxuaW1wb3J0IHsgRHJvcGRvd25Db250ZXh0IH0gZnJvbSAnLi9Ecm9wZG93bic7XHJcbmltcG9ydCB7IERyb3Bkb3duRXhwYW5kYWJsZU1lbnVHcm91cENvbnRleHQgfSBmcm9tICcuL0Ryb3Bkb3duRXhwYW5kYWJsZU1lbnVHcm91cCc7XHJcbmltcG9ydCB7IERyb3Bkb3duRXhwYW5kYWJsZU1lbnVJdGVtQ29udGV4dCB9IGZyb20gJy4vRHJvcGRvd25FeHBhbmRhYmxlTWVudUl0ZW0nO1xyXG5pbXBvcnQgeyBJY29uV3JhcHBlciwgbWVudUJhY2tncm91bmQgfSBmcm9tICcuL0Ryb3Bkb3duTWVudUl0ZW0nO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyB1c2VGb3JrZWRSZWYgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmNvbnN0IFN0eWxlZEFjY29yZGlvbkJ1dHRvbiA9IHN0eWxlZChBY2NvcmRpb25CdXR0b24pIGBcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgb3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG4gIHBhZGRpbmc6ICR7cHJvcHMgPT4gIXByb3BzLmljb24gJiYgcHJvcHMuZXhwYW5kYWJsZU1lbnVCdXR0b25IYXNJY29uXHJcbiAgICA/IGAke3Byb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzfSAke3Byb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA1fSAke3Byb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzfSAke3Byb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzExfWBcclxuICAgIDogYCR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9ICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDV9YH07XG4gIG1hcmdpbjogMDtcbiAgYm9yZGVyLXRvcDogMDtcbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG4gIH1cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5pc01lbnVJdGVtQ29udGV4dERpc2FibGVkID8gJycgOiBtZW51QmFja2dyb3VuZH07XG4gIH1cbiAgPiBzcGFuIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG5gO1xyXG5jb25zdCBTdHlsZWRJY29uV3JhcHBlciA9IHN0eWxlZChJY29uV3JhcHBlcikgYFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbmA7XHJcbmV4cG9ydCBjb25zdCBEcm9wZG93bkV4cGFuZGFibGVNZW51QnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZikgPT4ge1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiwgY3VzdG9tT25LZXlEb3duLCBpY29uLCB0ZXN0SWQsIC4uLm90aGVyIH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoRHJvcGRvd25Db250ZXh0KTtcclxuICAgIGNvbnN0IGV4cGFuZGFibGVNZW51R3JvdXBDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChEcm9wZG93bkV4cGFuZGFibGVNZW51R3JvdXBDb250ZXh0KTtcclxuICAgIGNvbnN0IGV4cGFuZGFibGVNZW51SXRlbUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KERyb3Bkb3duRXhwYW5kYWJsZU1lbnVJdGVtQ29udGV4dCk7XHJcbiAgICBjb25zdCBvd25SZWYgPSBSZWFjdC51c2VSZWYoKTtcclxuICAgIGNvbnN0IHJlZiA9IHVzZUZvcmtlZFJlZihmb3J3YXJkZWRSZWYsIG93blJlZik7XHJcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGlmICghZXhwYW5kYWJsZU1lbnVJdGVtQ29udGV4dC5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICBjb250ZXh0LnJlZ2lzdGVyRHJvcGRvd25NZW51SXRlbShjb250ZXh0Lml0ZW1SZWZBcnJheSwgb3duUmVmKTtcclxuICAgICAgICB9XHJcbiAgICB9LCBbXSk7XHJcbiAgICAvL0FsbG93cyBhIGN1c3RvbSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiBhIGtleSBpcyBwcmVzc2VkIHRoYXQgb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IEFjY29yZGlvbkJ1dHRvbiBvbktleURvd24gZXZlbnQuXHJcbiAgICBmdW5jdGlvbiBoYW5kbGVDdXN0b21PbktleURvd24oKSB7XHJcbiAgICAgICAgaWYgKGN1c3RvbU9uS2V5RG93biAmJiB0eXBlb2YgY3VzdG9tT25LZXlEb3duID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjdXN0b21PbktleURvd24oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkQWNjb3JkaW9uQnV0dG9uLCBPYmplY3QuYXNzaWduKHt9LCBvdGhlciwgeyByZWY6IHJlZiwgY3VzdG9tT25LZXlEb3duOiBoYW5kbGVDdXN0b21PbktleURvd24sIGljb246IGljb24sIHRoZW1lOiB0aGVtZSwgZXhwYW5kYWJsZU1lbnVCdXR0b25IYXNJY29uOiBleHBhbmRhYmxlTWVudUdyb3VwQ29udGV4dC5leHBhbmRhYmxlTWVudUJ1dHRvbkhhc0ljb24sIGlzSW52ZXJzZTogY29udGV4dC5pc0ludmVyc2UsIGlzTWVudUl0ZW1Db250ZXh0RGlzYWJsZWQ6IGV4cGFuZGFibGVNZW51SXRlbUNvbnRleHQuZGlzYWJsZWQsIHRlc3RJZDogdGVzdElkIH0pLFxyXG4gICAgICAgIGljb24gJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkSWNvbldyYXBwZXIsIHsgdGhlbWU6IHRoZW1lLCBpc0ludmVyc2U6IGNvbnRleHQuaXNJbnZlcnNlIH0sIGljb24pKSxcclxuICAgICAgICBjaGlsZHJlbikpO1xyXG59KTtcclxuRHJvcGRvd25FeHBhbmRhYmxlTWVudUJ1dHRvbi5kaXNwbGF5TmFtZSA9ICdEcm9wZG93bkV4cGFuZGFibGVNZW51QnV0dG9uJztcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RHJvcGRvd25FeHBhbmRhYmxlTWVudUJ1dHRvbi5qcy5tYXAiXX0= */",
15772
+ styles: "justify-content:center/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRyb3Bkb3duRXhwYW5kYWJsZU1lbnVCdXR0b24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRCOEMiLCJmaWxlIjoiRHJvcGRvd25FeHBhbmRhYmxlTWVudUJ1dHRvbi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcclxuaW1wb3J0IHsgQWNjb3JkaW9uQnV0dG9uLCBBY2NvcmRpb25JdGVtQ29udGV4dCwgfSBmcm9tICcuLi9BY2NvcmRpb24nO1xyXG5pbXBvcnQgeyBEcm9wZG93bkNvbnRleHQgfSBmcm9tICcuL0Ryb3Bkb3duJztcclxuaW1wb3J0IHsgRHJvcGRvd25FeHBhbmRhYmxlTWVudUdyb3VwQ29udGV4dCB9IGZyb20gJy4vRHJvcGRvd25FeHBhbmRhYmxlTWVudUdyb3VwJztcclxuaW1wb3J0IHsgRHJvcGRvd25FeHBhbmRhYmxlTWVudUl0ZW1Db250ZXh0IH0gZnJvbSAnLi9Ecm9wZG93bkV4cGFuZGFibGVNZW51SXRlbSc7XHJcbmltcG9ydCB7IEljb25XcmFwcGVyLCBtZW51QmFja2dyb3VuZCB9IGZyb20gJy4vRHJvcGRvd25NZW51SXRlbSc7XHJcbmltcG9ydCB7IFRoZW1lQ29udGV4dCB9IGZyb20gJy4uLy4uL3RoZW1lL1RoZW1lQ29udGV4dCc7XHJcbmltcG9ydCB7IHVzZUZvcmtlZFJlZiB9IGZyb20gJy4uLy4uL3V0aWxzJztcclxuY29uc3QgU3R5bGVkQWNjb3JkaW9uQnV0dG9uID0gc3R5bGVkKEFjY29yZGlvbkJ1dHRvbikgYFxuICBmb250LXdlaWdodDogNDAwO1xuICBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcbiAgcGFkZGluZzogJHtwcm9wcyA9PiAhcHJvcHMuaWNvbiAmJiBwcm9wcy5leHBhbmRhYmxlTWVudUJ1dHRvbkhhc0ljb25cclxuICAgID8gYCR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9ICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDV9ICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9ICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMTF9YFxyXG4gICAgOiBgJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM30gJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX1gfTtcbiAgbWFyZ2luOiAwO1xuICBib3JkZXItdG9wOiAwO1xuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgfVxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IHByb3BzLmlzTWVudUl0ZW1Db250ZXh0RGlzYWJsZWQgPyAnJyA6IG1lbnVCYWNrZ3JvdW5kfTtcbiAgfVxuICA+IHNwYW4ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH1cbmA7XHJcbmNvbnN0IFN0eWxlZEljb25XcmFwcGVyID0gc3R5bGVkKEljb25XcmFwcGVyKSBgXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuYDtcclxuZXhwb3J0IGNvbnN0IERyb3Bkb3duRXhwYW5kYWJsZU1lbnVCdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGNoaWxkcmVuLCBjdXN0b21PbktleURvd24sIGljb24sIHRlc3RJZCwgLi4ub3RoZXIgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XHJcbiAgICBjb25zdCBjb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChEcm9wZG93bkNvbnRleHQpO1xyXG4gICAgY29uc3QgZXhwYW5kYWJsZU1lbnVHcm91cENvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KERyb3Bkb3duRXhwYW5kYWJsZU1lbnVHcm91cENvbnRleHQpO1xyXG4gICAgY29uc3QgZXhwYW5kYWJsZU1lbnVJdGVtQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoRHJvcGRvd25FeHBhbmRhYmxlTWVudUl0ZW1Db250ZXh0KTtcclxuICAgIGNvbnN0IHsgaXNFeHBhbmRlZCB9ID0gUmVhY3QudXNlQ29udGV4dChBY2NvcmRpb25JdGVtQ29udGV4dCk7XHJcbiAgICBjb25zdCBvd25SZWYgPSBSZWFjdC51c2VSZWYoKTtcclxuICAgIGNvbnN0IHJlZiA9IHVzZUZvcmtlZFJlZihmb3J3YXJkZWRSZWYsIG93blJlZik7XHJcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGlmICghZXhwYW5kYWJsZU1lbnVJdGVtQ29udGV4dC5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICBjb250ZXh0LnJlZ2lzdGVyRHJvcGRvd25NZW51SXRlbShjb250ZXh0Lml0ZW1SZWZBcnJheSwgb3duUmVmKTtcclxuICAgICAgICB9XHJcbiAgICB9LCBbXSk7XHJcbiAgICAvL0FsbG93cyBhIGN1c3RvbSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiBhIGtleSBpcyBwcmVzc2VkIHRoYXQgb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IEFjY29yZGlvbkJ1dHRvbiBvbktleURvd24gZXZlbnQuXHJcbiAgICBmdW5jdGlvbiBoYW5kbGVDdXN0b21PbktleURvd24oKSB7XHJcbiAgICAgICAgaWYgKGN1c3RvbU9uS2V5RG93biAmJiB0eXBlb2YgY3VzdG9tT25LZXlEb3duID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjdXN0b21PbktleURvd24oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkQWNjb3JkaW9uQnV0dG9uLCBPYmplY3QuYXNzaWduKHt9LCBvdGhlciwgeyBcImFyaWEtZXhwYW5kZWRcIjogaXNFeHBhbmRlZCwgXCJhcmlhLWhhc3BvcHVwXCI6IFwidHJ1ZVwiLCByZWY6IHJlZiwgcm9sZTogXCJtZW51aXRlbVwiLCBjdXN0b21PbktleURvd246IGhhbmRsZUN1c3RvbU9uS2V5RG93biwgaWNvbjogaWNvbiwgdGhlbWU6IHRoZW1lLCBleHBhbmRhYmxlTWVudUJ1dHRvbkhhc0ljb246IGV4cGFuZGFibGVNZW51R3JvdXBDb250ZXh0LmV4cGFuZGFibGVNZW51QnV0dG9uSGFzSWNvbiwgaXNJbnZlcnNlOiBjb250ZXh0LmlzSW52ZXJzZSwgaXNNZW51SXRlbUNvbnRleHREaXNhYmxlZDogZXhwYW5kYWJsZU1lbnVJdGVtQ29udGV4dC5kaXNhYmxlZCwgdGVzdElkOiB0ZXN0SWQgfSksXHJcbiAgICAgICAgaWNvbiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRJY29uV3JhcHBlciwgeyB0aGVtZTogdGhlbWUsIGlzSW52ZXJzZTogY29udGV4dC5pc0ludmVyc2UgfSwgaWNvbikpLFxyXG4gICAgICAgIGNoaWxkcmVuKSk7XHJcbn0pO1xyXG5Ecm9wZG93bkV4cGFuZGFibGVNZW51QnV0dG9uLmRpc3BsYXlOYW1lID0gJ0Ryb3Bkb3duRXhwYW5kYWJsZU1lbnVCdXR0b24nO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ecm9wZG93bkV4cGFuZGFibGVNZW51QnV0dG9uLmpzLm1hcCJdfQ== */",
15772
15773
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$t
15773
15774
  });
15774
15775
  var DropdownExpandableMenuButton = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
@@ -15781,6 +15782,8 @@ var DropdownExpandableMenuButton = /*#__PURE__*/forwardRef(function (props, forw
15781
15782
  var context = useContext(DropdownContext);
15782
15783
  var expandableMenuGroupContext = useContext(DropdownExpandableMenuGroupContext);
15783
15784
  var expandableMenuItemContext = useContext(DropdownExpandableMenuItemContext);
15785
+ var _React$useContext = useContext(AccordionItemContext),
15786
+ isExpanded = _React$useContext.isExpanded;
15784
15787
  var ownRef = useRef();
15785
15788
  var ref = useForkedRef(forwardedRef, ownRef);
15786
15789
  useEffect(function () {
@@ -15795,7 +15798,10 @@ var DropdownExpandableMenuButton = /*#__PURE__*/forwardRef(function (props, forw
15795
15798
  }
15796
15799
  }
15797
15800
  return createElement(StyledAccordionButton, Object.assign({}, other, {
15801
+ "aria-expanded": isExpanded,
15802
+ "aria-haspopup": "true",
15798
15803
  ref: ref,
15804
+ role: "menuitem",
15799
15805
  customOnKeyDown: handleCustomOnKeyDown,
15800
15806
  icon: icon,
15801
15807
  theme: theme,
@@ -15820,7 +15826,7 @@ var StyledAccordionPanel = /*#__PURE__*/_styled(AccordionPanel, {
15820
15826
  styles: "padding:0"
15821
15827
  } : {
15822
15828
  name: "1hcx8jb",
15823
- styles: "padding:0/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRyb3Bkb3duRXhwYW5kYWJsZU1lbnVQYW5lbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSW9EIiwiZmlsZSI6IkRyb3Bkb3duRXhwYW5kYWJsZU1lbnVQYW5lbC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcclxuaW1wb3J0IHsgQWNjb3JkaW9uUGFuZWwgfSBmcm9tICcuLi9BY2NvcmRpb24nO1xyXG5pbXBvcnQgeyBEcm9wZG93bkV4cGFuZGFibGVNZW51R3JvdXAgfSBmcm9tICcuL0Ryb3Bkb3duRXhwYW5kYWJsZU1lbnVHcm91cCc7XHJcbmNvbnN0IFN0eWxlZEFjY29yZGlvblBhbmVsID0gc3R5bGVkKEFjY29yZGlvblBhbmVsKSBgXG4gIHBhZGRpbmc6IDA7XG5gO1xyXG5leHBvcnQgY29uc3QgRHJvcGRvd25FeHBhbmRhYmxlTWVudVBhbmVsID0gUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4ge1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiwgdGVzdElkLCAuLi5vdGhlciB9ID0gcHJvcHM7XHJcbiAgICBSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sIGNoaWxkID0+IHtcclxuICAgICAgICBjb25zdCBpdGVtID0gY2hpbGQ7XHJcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gRHJvcGRvd25FeHBhbmRhYmxlTWVudUdyb3VwKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgXG4gICAgICBSZWFjdCBNYWdtYSBXYXJuaW5nOiBPbmx5IG9uZSBncm91cCBsZXZlbCBpcyBzdXBwb3J0ZWQgZm9yIEV4cGFuZGFibGUgRHJvcGRvd25zLCBhbnl0aGluZyBuZXN0ZWQgdHdvIGxldmVscyBvciBtb3JlIGlzbid0IGFjY291bnRlZCBmb3IgaW4gdGhlIHN0eWxpbmdcbiAgICAgIGApO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEFjY29yZGlvblBhbmVsLCBPYmplY3QuYXNzaWduKHt9LCBvdGhlciwgeyByZWY6IHJlZiwgdGVzdElkOiB0ZXN0SWQgfSksIGNoaWxkcmVuKSk7XHJcbn0pO1xyXG5Ecm9wZG93bkV4cGFuZGFibGVNZW51UGFuZWwuZGlzcGxheU5hbWUgPSAnRHJvcGRvd25FeHBhbmRhYmxlTWVudVBhbmVsJztcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RHJvcGRvd25FeHBhbmRhYmxlTWVudVBhbmVsLmpzLm1hcCJdfQ== */",
15829
+ styles: "padding:0/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRyb3Bkb3duRXhwYW5kYWJsZU1lbnVQYW5lbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSW9EIiwiZmlsZSI6IkRyb3Bkb3duRXhwYW5kYWJsZU1lbnVQYW5lbC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcclxuaW1wb3J0IHsgQWNjb3JkaW9uUGFuZWwgfSBmcm9tICcuLi9BY2NvcmRpb24nO1xyXG5pbXBvcnQgeyBEcm9wZG93bkV4cGFuZGFibGVNZW51R3JvdXAgfSBmcm9tICcuL0Ryb3Bkb3duRXhwYW5kYWJsZU1lbnVHcm91cCc7XHJcbmNvbnN0IFN0eWxlZEFjY29yZGlvblBhbmVsID0gc3R5bGVkKEFjY29yZGlvblBhbmVsKSBgXG4gIHBhZGRpbmc6IDA7XG5gO1xyXG5leHBvcnQgY29uc3QgRHJvcGRvd25FeHBhbmRhYmxlTWVudVBhbmVsID0gUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4ge1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiwgdGVzdElkLCAuLi5vdGhlciB9ID0gcHJvcHM7XHJcbiAgICBSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sIGNoaWxkID0+IHtcclxuICAgICAgICBjb25zdCBpdGVtID0gY2hpbGQ7XHJcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gRHJvcGRvd25FeHBhbmRhYmxlTWVudUdyb3VwKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgXG4gICAgICBSZWFjdCBNYWdtYSBXYXJuaW5nOiBPbmx5IG9uZSBncm91cCBsZXZlbCBpcyBzdXBwb3J0ZWQgZm9yIEV4cGFuZGFibGUgRHJvcGRvd25zLCBhbnl0aGluZyBuZXN0ZWQgdHdvIGxldmVscyBvciBtb3JlIGlzbid0IGFjY291bnRlZCBmb3IgaW4gdGhlIHN0eWxpbmdcbiAgICAgIGApO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEFjY29yZGlvblBhbmVsLCBPYmplY3QuYXNzaWduKHt9LCBvdGhlciwgeyByZWY6IHJlZiwgcm9sZTogXCJtZW51XCIsIHRlc3RJZDogdGVzdElkIH0pLCBjaGlsZHJlbikpO1xyXG59KTtcclxuRHJvcGRvd25FeHBhbmRhYmxlTWVudVBhbmVsLmRpc3BsYXlOYW1lID0gJ0Ryb3Bkb3duRXhwYW5kYWJsZU1lbnVQYW5lbCc7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURyb3Bkb3duRXhwYW5kYWJsZU1lbnVQYW5lbC5qcy5tYXAiXX0= */",
15824
15830
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$u
15825
15831
  });
15826
15832
  var DropdownExpandableMenuPanel = /*#__PURE__*/forwardRef(function (props, ref) {
@@ -15835,6 +15841,7 @@ var DropdownExpandableMenuPanel = /*#__PURE__*/forwardRef(function (props, ref)
15835
15841
  });
15836
15842
  return createElement(StyledAccordionPanel, Object.assign({}, other, {
15837
15843
  ref: ref,
15844
+ role: "menu",
15838
15845
  testId: testId
15839
15846
  }), children);
15840
15847
  });
@@ -21805,15 +21812,437 @@ var BlockQuoteItem = /*#__PURE__*/forwardRef(function (props, ref) {
21805
21812
  }, rest), hasAttribution ? createElement(Fragment, null, "\u2015\xA0", children) : createElement(Fragment, null, "\u201C", children, "\u201D"));
21806
21813
  });
21807
21814
 
21815
+ function _extends$3() {
21816
+ _extends$3 = Object.assign || function (target) {
21817
+ for (var i = 1; i < arguments.length; i++) {
21818
+ var source = arguments[i];
21819
+ for (var key in source) {
21820
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
21821
+ target[key] = source[key];
21822
+ }
21823
+ }
21824
+ }
21825
+ return target;
21826
+ };
21827
+ return _extends$3.apply(this, arguments);
21828
+ }
21829
+ function _objectWithoutPropertiesLoose$1(source, excluded) {
21830
+ if (source == null) return {};
21831
+ var target = {};
21832
+ var sourceKeys = Object.keys(source);
21833
+ var key, i;
21834
+ for (i = 0; i < sourceKeys.length; i++) {
21835
+ key = sourceKeys[i];
21836
+ if (excluded.indexOf(key) >= 0) continue;
21837
+ target[key] = source[key];
21838
+ }
21839
+ return target;
21840
+ }
21841
+ var props = ['bottom', 'height', 'left', 'right', 'top', 'width'];
21842
+ var rectChanged = function rectChanged(a, b) {
21843
+ if (a === void 0) {
21844
+ a = {};
21845
+ }
21846
+ if (b === void 0) {
21847
+ b = {};
21848
+ }
21849
+ return props.some(function (prop) {
21850
+ return a[prop] !== b[prop];
21851
+ });
21852
+ };
21853
+ var observedNodes = /*#__PURE__*/new Map();
21854
+ var rafId;
21855
+ var run = function run() {
21856
+ var changedStates = [];
21857
+ observedNodes.forEach(function (state, node) {
21858
+ var newRect = node.getBoundingClientRect();
21859
+ if (rectChanged(newRect, state.rect)) {
21860
+ state.rect = newRect;
21861
+ changedStates.push(state);
21862
+ }
21863
+ });
21864
+ changedStates.forEach(function (state) {
21865
+ state.callbacks.forEach(function (cb) {
21866
+ return cb(state.rect);
21867
+ });
21868
+ });
21869
+ rafId = window.requestAnimationFrame(run);
21870
+ };
21871
+ function observeRect(node, cb) {
21872
+ return {
21873
+ observe: function observe() {
21874
+ var wasEmpty = observedNodes.size === 0;
21875
+ if (observedNodes.has(node)) {
21876
+ observedNodes.get(node).callbacks.push(cb);
21877
+ } else {
21878
+ observedNodes.set(node, {
21879
+ rect: undefined,
21880
+ hasRectChanged: false,
21881
+ callbacks: [cb]
21882
+ });
21883
+ }
21884
+ if (wasEmpty) run();
21885
+ },
21886
+ unobserve: function unobserve() {
21887
+ var state = observedNodes.get(node);
21888
+ if (state) {
21889
+ // Remove the callback
21890
+ var index = state.callbacks.indexOf(cb);
21891
+ if (index >= 0) state.callbacks.splice(index, 1); // Remove the node reference
21892
+
21893
+ if (!state.callbacks.length) observedNodes["delete"](node); // Stop the loop
21894
+
21895
+ if (!observedNodes.size) cancelAnimationFrame(rafId);
21896
+ }
21897
+ }
21898
+ };
21899
+ }
21900
+ var useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React__default.useLayoutEffect : React__default.useEffect;
21901
+ function useRect(nodeRef, initialRect) {
21902
+ if (initialRect === void 0) {
21903
+ initialRect = {
21904
+ width: 0,
21905
+ height: 0
21906
+ };
21907
+ }
21908
+ var _React$useState = React__default.useState(nodeRef.current),
21909
+ element = _React$useState[0],
21910
+ setElement = _React$useState[1];
21911
+ var _React$useReducer = React__default.useReducer(rectReducer, initialRect),
21912
+ rect = _React$useReducer[0],
21913
+ dispatch = _React$useReducer[1];
21914
+ var initialRectSet = React__default.useRef(false);
21915
+ useIsomorphicLayoutEffect(function () {
21916
+ if (nodeRef.current !== element) {
21917
+ setElement(nodeRef.current);
21918
+ }
21919
+ });
21920
+ useIsomorphicLayoutEffect(function () {
21921
+ if (element && !initialRectSet.current) {
21922
+ initialRectSet.current = true;
21923
+ var _rect = element.getBoundingClientRect();
21924
+ dispatch({
21925
+ rect: _rect
21926
+ });
21927
+ }
21928
+ }, [element]);
21929
+ React__default.useEffect(function () {
21930
+ if (!element) {
21931
+ return;
21932
+ }
21933
+ var observer = observeRect(element, function (rect) {
21934
+ dispatch({
21935
+ rect: rect
21936
+ });
21937
+ });
21938
+ observer.observe();
21939
+ return function () {
21940
+ observer.unobserve();
21941
+ };
21942
+ }, [element]);
21943
+ return rect;
21944
+ }
21945
+ function rectReducer(state, action) {
21946
+ var rect = action.rect;
21947
+ if (state.height !== rect.height || state.width !== rect.width) {
21948
+ return rect;
21949
+ }
21950
+ return state;
21951
+ }
21952
+ var defaultEstimateSize = function defaultEstimateSize() {
21953
+ return 50;
21954
+ };
21955
+ var defaultKeyExtractor = function defaultKeyExtractor(index) {
21956
+ return index;
21957
+ };
21958
+ var defaultMeasureSize = function defaultMeasureSize(el, horizontal) {
21959
+ var key = horizontal ? 'offsetWidth' : 'offsetHeight';
21960
+ return el[key];
21961
+ };
21962
+ var defaultRangeExtractor = function defaultRangeExtractor(range) {
21963
+ var start = Math.max(range.start - range.overscan, 0);
21964
+ var end = Math.min(range.end + range.overscan, range.size - 1);
21965
+ var arr = [];
21966
+ for (var i = start; i <= end; i++) {
21967
+ arr.push(i);
21968
+ }
21969
+ return arr;
21970
+ };
21971
+ function useVirtual(_ref) {
21972
+ var _measurements;
21973
+ var _ref$size = _ref.size,
21974
+ size = _ref$size === void 0 ? 0 : _ref$size,
21975
+ _ref$estimateSize = _ref.estimateSize,
21976
+ estimateSize = _ref$estimateSize === void 0 ? defaultEstimateSize : _ref$estimateSize,
21977
+ _ref$overscan = _ref.overscan,
21978
+ overscan = _ref$overscan === void 0 ? 1 : _ref$overscan,
21979
+ _ref$paddingStart = _ref.paddingStart,
21980
+ paddingStart = _ref$paddingStart === void 0 ? 0 : _ref$paddingStart,
21981
+ _ref$paddingEnd = _ref.paddingEnd,
21982
+ paddingEnd = _ref$paddingEnd === void 0 ? 0 : _ref$paddingEnd,
21983
+ parentRef = _ref.parentRef,
21984
+ horizontal = _ref.horizontal,
21985
+ scrollToFn = _ref.scrollToFn,
21986
+ useObserver = _ref.useObserver,
21987
+ initialRect = _ref.initialRect,
21988
+ onScrollElement = _ref.onScrollElement,
21989
+ scrollOffsetFn = _ref.scrollOffsetFn,
21990
+ _ref$keyExtractor = _ref.keyExtractor,
21991
+ keyExtractor = _ref$keyExtractor === void 0 ? defaultKeyExtractor : _ref$keyExtractor,
21992
+ _ref$measureSize = _ref.measureSize,
21993
+ measureSize = _ref$measureSize === void 0 ? defaultMeasureSize : _ref$measureSize,
21994
+ _ref$rangeExtractor = _ref.rangeExtractor,
21995
+ rangeExtractor = _ref$rangeExtractor === void 0 ? defaultRangeExtractor : _ref$rangeExtractor;
21996
+ var sizeKey = horizontal ? 'width' : 'height';
21997
+ var scrollKey = horizontal ? 'scrollLeft' : 'scrollTop';
21998
+ var latestRef = React__default.useRef({
21999
+ scrollOffset: 0,
22000
+ measurements: []
22001
+ });
22002
+ var _React$useState = React__default.useState(0),
22003
+ scrollOffset = _React$useState[0],
22004
+ setScrollOffset = _React$useState[1];
22005
+ latestRef.current.scrollOffset = scrollOffset;
22006
+ var useMeasureParent = useObserver || useRect;
22007
+ var _useMeasureParent = useMeasureParent(parentRef, initialRect),
22008
+ outerSize = _useMeasureParent[sizeKey];
22009
+ latestRef.current.outerSize = outerSize;
22010
+ var defaultScrollToFn = React__default.useCallback(function (offset) {
22011
+ if (parentRef.current) {
22012
+ parentRef.current[scrollKey] = offset;
22013
+ }
22014
+ }, [parentRef, scrollKey]);
22015
+ var resolvedScrollToFn = scrollToFn || defaultScrollToFn;
22016
+ scrollToFn = React__default.useCallback(function (offset) {
22017
+ resolvedScrollToFn(offset, defaultScrollToFn);
22018
+ }, [defaultScrollToFn, resolvedScrollToFn]);
22019
+ var _React$useState2 = React__default.useState({}),
22020
+ measuredCache = _React$useState2[0],
22021
+ setMeasuredCache = _React$useState2[1];
22022
+ var measure = React__default.useCallback(function () {
22023
+ return setMeasuredCache({});
22024
+ }, []);
22025
+ var pendingMeasuredCacheIndexesRef = React__default.useRef([]);
22026
+ var measurements = React__default.useMemo(function () {
22027
+ var min = pendingMeasuredCacheIndexesRef.current.length > 0 ? Math.min.apply(Math, pendingMeasuredCacheIndexesRef.current) : 0;
22028
+ pendingMeasuredCacheIndexesRef.current = [];
22029
+ var measurements = latestRef.current.measurements.slice(0, min);
22030
+ for (var i = min; i < size; i++) {
22031
+ var key = keyExtractor(i);
22032
+ var measuredSize = measuredCache[key];
22033
+ var _start = measurements[i - 1] ? measurements[i - 1].end : paddingStart;
22034
+ var _size = typeof measuredSize === 'number' ? measuredSize : estimateSize(i);
22035
+ var _end = _start + _size;
22036
+ measurements[i] = {
22037
+ index: i,
22038
+ start: _start,
22039
+ size: _size,
22040
+ end: _end,
22041
+ key: key
22042
+ };
22043
+ }
22044
+ return measurements;
22045
+ }, [estimateSize, measuredCache, paddingStart, size, keyExtractor]);
22046
+ var totalSize = (((_measurements = measurements[size - 1]) == null ? void 0 : _measurements.end) || paddingStart) + paddingEnd;
22047
+ latestRef.current.measurements = measurements;
22048
+ latestRef.current.totalSize = totalSize;
22049
+ var element = onScrollElement ? onScrollElement.current : parentRef.current;
22050
+ var scrollOffsetFnRef = React__default.useRef(scrollOffsetFn);
22051
+ scrollOffsetFnRef.current = scrollOffsetFn;
22052
+ useIsomorphicLayoutEffect(function () {
22053
+ if (!element) {
22054
+ setScrollOffset(0);
22055
+ return;
22056
+ }
22057
+ var onScroll = function onScroll(event) {
22058
+ var offset = scrollOffsetFnRef.current ? scrollOffsetFnRef.current(event) : element[scrollKey];
22059
+ setScrollOffset(offset);
22060
+ };
22061
+ onScroll();
22062
+ element.addEventListener('scroll', onScroll, {
22063
+ capture: false,
22064
+ passive: true
22065
+ });
22066
+ return function () {
22067
+ element.removeEventListener('scroll', onScroll);
22068
+ };
22069
+ }, [element, scrollKey]);
22070
+ var _calculateRange = calculateRange(latestRef.current),
22071
+ start = _calculateRange.start,
22072
+ end = _calculateRange.end;
22073
+ var indexes = React__default.useMemo(function () {
22074
+ return rangeExtractor({
22075
+ start: start,
22076
+ end: end,
22077
+ overscan: overscan,
22078
+ size: measurements.length
22079
+ });
22080
+ }, [start, end, overscan, measurements.length, rangeExtractor]);
22081
+ var measureSizeRef = React__default.useRef(measureSize);
22082
+ measureSizeRef.current = measureSize;
22083
+ var virtualItems = React__default.useMemo(function () {
22084
+ var virtualItems = [];
22085
+ var _loop = function _loop(k, len) {
22086
+ var i = indexes[k];
22087
+ var measurement = measurements[i];
22088
+ var item = _extends$3(_extends$3({}, measurement), {}, {
22089
+ measureRef: function measureRef(el) {
22090
+ if (el) {
22091
+ var measuredSize = measureSizeRef.current(el, horizontal);
22092
+ if (measuredSize !== item.size) {
22093
+ var _scrollOffset = latestRef.current.scrollOffset;
22094
+ if (item.start < _scrollOffset) {
22095
+ defaultScrollToFn(_scrollOffset + (measuredSize - item.size));
22096
+ }
22097
+ pendingMeasuredCacheIndexesRef.current.push(i);
22098
+ setMeasuredCache(function (old) {
22099
+ var _extends2;
22100
+ return _extends$3(_extends$3({}, old), {}, (_extends2 = {}, _extends2[item.key] = measuredSize, _extends2));
22101
+ });
22102
+ }
22103
+ }
22104
+ }
22105
+ });
22106
+ virtualItems.push(item);
22107
+ };
22108
+ for (var k = 0, len = indexes.length; k < len; k++) {
22109
+ _loop(k);
22110
+ }
22111
+ return virtualItems;
22112
+ }, [indexes, defaultScrollToFn, horizontal, measurements]);
22113
+ var mountedRef = React__default.useRef(false);
22114
+ useIsomorphicLayoutEffect(function () {
22115
+ if (mountedRef.current) {
22116
+ setMeasuredCache({});
22117
+ }
22118
+ mountedRef.current = true;
22119
+ }, [estimateSize]);
22120
+ var scrollToOffset = React__default.useCallback(function (toOffset, _temp) {
22121
+ var _ref2 = _temp === void 0 ? {} : _temp,
22122
+ _ref2$align = _ref2.align,
22123
+ align = _ref2$align === void 0 ? 'start' : _ref2$align;
22124
+ var _latestRef$current = latestRef.current,
22125
+ scrollOffset = _latestRef$current.scrollOffset,
22126
+ outerSize = _latestRef$current.outerSize;
22127
+ if (align === 'auto') {
22128
+ if (toOffset <= scrollOffset) {
22129
+ align = 'start';
22130
+ } else if (toOffset >= scrollOffset + outerSize) {
22131
+ align = 'end';
22132
+ } else {
22133
+ align = 'start';
22134
+ }
22135
+ }
22136
+ if (align === 'start') {
22137
+ scrollToFn(toOffset);
22138
+ } else if (align === 'end') {
22139
+ scrollToFn(toOffset - outerSize);
22140
+ } else if (align === 'center') {
22141
+ scrollToFn(toOffset - outerSize / 2);
22142
+ }
22143
+ }, [scrollToFn]);
22144
+ var tryScrollToIndex = React__default.useCallback(function (index, _temp2) {
22145
+ var _ref3 = _temp2 === void 0 ? {} : _temp2,
22146
+ _ref3$align = _ref3.align,
22147
+ align = _ref3$align === void 0 ? 'auto' : _ref3$align,
22148
+ rest = _objectWithoutPropertiesLoose$1(_ref3, ["align"]);
22149
+ var _latestRef$current2 = latestRef.current,
22150
+ measurements = _latestRef$current2.measurements,
22151
+ scrollOffset = _latestRef$current2.scrollOffset,
22152
+ outerSize = _latestRef$current2.outerSize;
22153
+ var measurement = measurements[Math.max(0, Math.min(index, size - 1))];
22154
+ if (!measurement) {
22155
+ return;
22156
+ }
22157
+ if (align === 'auto') {
22158
+ if (measurement.end >= scrollOffset + outerSize) {
22159
+ align = 'end';
22160
+ } else if (measurement.start <= scrollOffset) {
22161
+ align = 'start';
22162
+ } else {
22163
+ return;
22164
+ }
22165
+ }
22166
+ var toOffset = align === 'center' ? measurement.start + measurement.size / 2 : align === 'end' ? measurement.end : measurement.start;
22167
+ scrollToOffset(toOffset, _extends$3({
22168
+ align: align
22169
+ }, rest));
22170
+ }, [scrollToOffset, size]);
22171
+ var scrollToIndex = React__default.useCallback(function () {
22172
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
22173
+ args[_key] = arguments[_key];
22174
+ }
22175
+
22176
+ // We do a double request here because of
22177
+ // dynamic sizes which can cause offset shift
22178
+ // and end up in the wrong spot. Unfortunately,
22179
+ // we can't know about those dynamic sizes until
22180
+ // we try and render them. So double down!
22181
+ tryScrollToIndex.apply(void 0, args);
22182
+ requestAnimationFrame(function () {
22183
+ tryScrollToIndex.apply(void 0, args);
22184
+ });
22185
+ }, [tryScrollToIndex]);
22186
+ return {
22187
+ virtualItems: virtualItems,
22188
+ totalSize: totalSize,
22189
+ scrollToOffset: scrollToOffset,
22190
+ scrollToIndex: scrollToIndex,
22191
+ measure: measure
22192
+ };
22193
+ }
22194
+ var findNearestBinarySearch = function findNearestBinarySearch(low, high, getCurrentValue, value) {
22195
+ while (low <= high) {
22196
+ var middle = (low + high) / 2 | 0;
22197
+ var currentValue = getCurrentValue(middle);
22198
+ if (currentValue < value) {
22199
+ low = middle + 1;
22200
+ } else if (currentValue > value) {
22201
+ high = middle - 1;
22202
+ } else {
22203
+ return middle;
22204
+ }
22205
+ }
22206
+ if (low > 0) {
22207
+ return low - 1;
22208
+ } else {
22209
+ return 0;
22210
+ }
22211
+ };
22212
+ function calculateRange(_ref4) {
22213
+ var measurements = _ref4.measurements,
22214
+ outerSize = _ref4.outerSize,
22215
+ scrollOffset = _ref4.scrollOffset;
22216
+ var size = measurements.length - 1;
22217
+ var getOffset = function getOffset(index) {
22218
+ return measurements[index].start;
22219
+ };
22220
+ var start = findNearestBinarySearch(0, size, getOffset, scrollOffset);
22221
+ var end = start;
22222
+ while (end < size && measurements[end].end < scrollOffset + outerSize) {
22223
+ end++;
22224
+ }
22225
+ return {
22226
+ start: start,
22227
+ end: end
22228
+ };
22229
+ }
22230
+
21808
22231
  var TreeItemContext = /*#__PURE__*/createContext({
21809
22232
  expanded: false,
21810
- setExpanded: function setExpanded() {},
21811
22233
  checkedStatus: IndeterminateCheckboxStatus.unchecked,
21812
22234
  checkboxChangeHandler: function checkboxChangeHandler() {},
21813
22235
  hasOwnTreeItems: false,
21814
22236
  parentDepth: 0
21815
22237
  });
21816
22238
 
22239
+ var TreeItemHierarchyContext = /*#__PURE__*/createContext({
22240
+ depth: 0,
22241
+ parentDepth: 0,
22242
+ isTopLevel: true,
22243
+ index: 0
22244
+ });
22245
+
21817
22246
  var TreeViewSelectable;
21818
22247
  (function (TreeViewSelectable) {
21819
22248
  TreeViewSelectable["single"] = "single";
@@ -21821,29 +22250,36 @@ var TreeViewSelectable;
21821
22250
  TreeViewSelectable["off"] = "off";
21822
22251
  })(TreeViewSelectable || (TreeViewSelectable = {}));
21823
22252
 
21824
- var TreeViewContext = /*#__PURE__*/createContext({
22253
+ var TreeViewConfigContext = /*#__PURE__*/createContext({
21825
22254
  hasIcons: false,
21826
- initialExpandedItems: [],
21827
- registerTreeItem: function registerTreeItem(elements, element) {},
21828
22255
  selectable: TreeViewSelectable.single,
21829
- selectedItems: [],
21830
22256
  checkParents: true,
21831
22257
  checkChildren: true,
21832
- items: [],
21833
- selectItem: function selectItem() {
21834
- return undefined;
21835
- },
21836
- handleExpandedChange: function handleExpandedChange() {
21837
- return undefined;
21838
- },
21839
22258
  isTopLevelSelectable: true,
21840
- expandedSet: /*#__PURE__*/new Set(),
22259
+ registerTreeItem: function registerTreeItem(elements, element) {},
21841
22260
  expandIconStyles: {
21842
22261
  size: magma.iconSizes.medium,
21843
22262
  color: undefined
21844
22263
  }
21845
22264
  });
21846
22265
 
22266
+ var TreeViewExpansionContext = /*#__PURE__*/createContext({
22267
+ expandedSet: /*#__PURE__*/new Set(),
22268
+ handleExpandedChange: function handleExpandedChange() {
22269
+ return undefined;
22270
+ },
22271
+ initialExpandedItems: []
22272
+ });
22273
+
22274
+ var TreeViewSelectionContext = /*#__PURE__*/createContext({
22275
+ items: [],
22276
+ selectedItems: [],
22277
+ selectItem: function selectItem() {
22278
+ return undefined;
22279
+ },
22280
+ selectable: TreeViewSelectable.single
22281
+ });
22282
+
21847
22283
  var TreeNodeType;
21848
22284
  (function (TreeNodeType) {
21849
22285
  TreeNodeType["branch"] = "branch";
@@ -22063,143 +22499,185 @@ var _getTreeViewData = function getTreeViewData(_ref2) {
22063
22499
  }) : []);
22064
22500
  }).flat();
22065
22501
  };
22066
- var processItemCheckedStatus = function processItemCheckedStatus(_ref4) {
22502
+ // Optimized: Use Map for O(1) lookups while maintaining recursive logic
22503
+ var _processChildrenSelection = function processChildrenSelection(_ref4) {
22067
22504
  var items = _ref4.items,
22068
22505
  itemId = _ref4.itemId,
22069
22506
  checkedStatus = _ref4.checkedStatus,
22070
- forceCheckedStatusForDisabled = _ref4.forceCheckedStatusForDisabled;
22071
- var item = items.find(function (item) {
22072
- return item.itemId === itemId;
22073
- });
22074
- if (item != null && item.isDisabled && !forceCheckedStatusForDisabled) {
22075
- return items;
22507
+ forceCheckedStatusForDisabled = _ref4.forceCheckedStatusForDisabled,
22508
+ parentChildMap = _ref4.parentChildMap;
22509
+ var map = parentChildMap || buildParentChildMap(items);
22510
+ var itemMap = new Map(items.map(function (item) {
22511
+ return [item.itemId, item];
22512
+ }));
22513
+ var item = itemMap.get(itemId);
22514
+ // Update the current item
22515
+ if (item) {
22516
+ if (item.isDisabled && !forceCheckedStatusForDisabled) {
22517
+ itemMap.set(itemId, item);
22518
+ } else {
22519
+ itemMap.set(itemId, _extends({}, item, {
22520
+ checkedStatus: checkedStatus
22521
+ }));
22522
+ }
22076
22523
  }
22077
- return items.map(function (item) {
22078
- return item.itemId === itemId ? _extends({}, item, {
22079
- checkedStatus: checkedStatus
22080
- }) : item;
22081
- });
22082
- };
22083
- var _processChildrenSelection = function processChildrenSelection(_ref5) {
22084
- var items = _ref5.items,
22085
- itemId = _ref5.itemId,
22086
- checkedStatus = _ref5.checkedStatus,
22087
- forceCheckedStatusForDisabled = _ref5.forceCheckedStatusForDisabled;
22088
- var item = items.find(function (item) {
22089
- return item.itemId === itemId;
22090
- });
22091
- var itemsWithProcessedItemCheckedStatus = processItemCheckedStatus({
22092
- items: items,
22093
- itemId: itemId,
22094
- checkedStatus: checkedStatus,
22095
- forceCheckedStatusForDisabled: forceCheckedStatusForDisabled
22096
- });
22097
22524
  if (!(item != null && item.hasOwnTreeItems)) {
22098
- return itemsWithProcessedItemCheckedStatus;
22099
- }
22100
- var directChildren = itemsWithProcessedItemCheckedStatus.filter(function (item) {
22101
- return (item == null ? void 0 : item.parentId) === itemId;
22102
- });
22103
- var itemsWithProcessedChildren = directChildren.reduce(function (result, directChild) {
22104
- return _processChildrenSelection({
22105
- items: result,
22106
- itemId: directChild.itemId,
22525
+ return Array.from(itemMap.values());
22526
+ }
22527
+ // Get direct children
22528
+ var directChildren = map.get(itemId) || [];
22529
+ // Recursively process each direct child
22530
+ var currentItems = Array.from(itemMap.values());
22531
+ for (var _iterator = _createForOfIteratorHelperLoose(directChildren), _step; !(_step = _iterator()).done;) {
22532
+ var childId = _step.value;
22533
+ currentItems = _processChildrenSelection({
22534
+ items: currentItems,
22535
+ itemId: childId,
22107
22536
  checkedStatus: checkedStatus,
22108
- forceCheckedStatusForDisabled: forceCheckedStatusForDisabled
22537
+ forceCheckedStatusForDisabled: forceCheckedStatusForDisabled,
22538
+ parentChildMap: map
22109
22539
  });
22110
- }, itemsWithProcessedItemCheckedStatus);
22111
- var childrenIds = _getChildrenIds({
22112
- items: itemsWithProcessedChildren,
22113
- itemId: itemId
22114
- });
22115
- var children = itemsWithProcessedChildren.filter(function (item) {
22116
- return childrenIds.includes(item.itemId);
22117
- });
22118
- var uniqueChildrenCheckedStatus = Array.from(new Set(children.map(function (children) {
22119
- return children.checkedStatus === IndeterminateCheckboxStatus.checked;
22120
- })));
22121
- var isAllChildrenWithTheSameCheckedStatus = uniqueChildrenCheckedStatus.length === 1;
22122
- var itemCheckedStatus = isAllChildrenWithTheSameCheckedStatus ? checkedStatus : IndeterminateCheckboxStatus.indeterminate;
22123
- return processItemCheckedStatus({
22124
- items: itemsWithProcessedChildren,
22540
+ }
22541
+ // Rebuild map with updated items
22542
+ var updatedItemMap = new Map(currentItems.map(function (item) {
22543
+ return [item.itemId, item];
22544
+ }));
22545
+ // Get all children (including nested) to check their statuses
22546
+ var childrenIds = getChildrenIds({
22547
+ items: currentItems,
22125
22548
  itemId: itemId,
22126
- checkedStatus: itemCheckedStatus,
22127
- forceCheckedStatusForDisabled: forceCheckedStatusForDisabled
22549
+ parentChildMap: map
22128
22550
  });
22551
+ // Check if all children have the same checked status
22552
+ var childrenStatuses = new Set();
22553
+ for (var _iterator2 = _createForOfIteratorHelperLoose(childrenIds), _step2; !(_step2 = _iterator2()).done;) {
22554
+ var id = _step2.value;
22555
+ if (id === itemId) continue;
22556
+ var child = updatedItemMap.get(id);
22557
+ if (child) {
22558
+ childrenStatuses.add(child.checkedStatus === IndeterminateCheckboxStatus.checked);
22559
+ }
22560
+ }
22561
+ var isAllChildrenWithTheSameCheckedStatus = childrenStatuses.size === 1;
22562
+ var itemCheckedStatus = isAllChildrenWithTheSameCheckedStatus ? checkedStatus : IndeterminateCheckboxStatus.indeterminate;
22563
+ // Update the parent item with the calculated status
22564
+ var updatedItem = updatedItemMap.get(itemId);
22565
+ if (updatedItem) {
22566
+ updatedItemMap.set(itemId, _extends({}, updatedItem, {
22567
+ checkedStatus: itemCheckedStatus
22568
+ }));
22569
+ }
22570
+ return Array.from(updatedItemMap.values());
22129
22571
  };
22130
- var _getChildrenIds = function getChildrenIds(_ref6) {
22131
- var items = _ref6.items,
22132
- itemId = _ref6.itemId;
22133
- return items.reduce(function (result, item) {
22134
- if ((item == null ? void 0 : item.parentId) !== itemId) {
22135
- return result;
22136
- }
22137
- if (item != null && item.hasOwnTreeItems) {
22138
- return [].concat(result, _getChildrenIds({
22139
- items: items,
22140
- itemId: item.itemId
22141
- }));
22572
+ // Optimized: Build parent-child relationship map once for O(1) lookups
22573
+ var buildParentChildMap = function buildParentChildMap(items) {
22574
+ var map = new Map();
22575
+ for (var _iterator3 = _createForOfIteratorHelperLoose(items), _step3; !(_step3 = _iterator3()).done;) {
22576
+ var item = _step3.value;
22577
+ if (item.parentId) {
22578
+ var children = map.get(item.parentId) || [];
22579
+ children.push(item.itemId);
22580
+ map.set(item.parentId, children);
22142
22581
  }
22143
- return [].concat(result, [item.itemId]);
22144
- }, [itemId]);
22582
+ }
22583
+ return map;
22145
22584
  };
22146
- var getChildren = function getChildren(_ref7) {
22147
- var items = _ref7.items,
22148
- itemId = _ref7.itemId;
22149
- var childrenIds = _getChildrenIds({
22585
+ // Optimized: Use memoized parent-child map for faster lookups
22586
+ var getChildrenIds = function getChildrenIds(_ref5) {
22587
+ var items = _ref5.items,
22588
+ itemId = _ref5.itemId,
22589
+ parentChildMap = _ref5.parentChildMap;
22590
+ var map = parentChildMap || buildParentChildMap(items);
22591
+ var result = [itemId];
22592
+ var queue = [itemId];
22593
+ while (queue.length > 0) {
22594
+ var currentId = queue.shift();
22595
+ if (!currentId) continue;
22596
+ var children = map.get(currentId);
22597
+ if (children) {
22598
+ result.push.apply(result, children);
22599
+ queue.push.apply(queue, children);
22600
+ }
22601
+ }
22602
+ return result;
22603
+ };
22604
+ // Optimized: Use Set for O(1) lookup instead of array.includes
22605
+ var getChildren = function getChildren(_ref6) {
22606
+ var items = _ref6.items,
22607
+ itemId = _ref6.itemId,
22608
+ parentChildMap = _ref6.parentChildMap;
22609
+ var childrenIds = getChildrenIds({
22150
22610
  items: items,
22151
- itemId: itemId
22611
+ itemId: itemId,
22612
+ parentChildMap: parentChildMap
22152
22613
  });
22614
+ var childrenIdSet = new Set(childrenIds);
22153
22615
  return items.filter(function (item) {
22154
- return childrenIds.includes(item.itemId);
22616
+ return childrenIdSet.has(item.itemId);
22155
22617
  });
22156
22618
  };
22157
- var getChildrenUniqueStatuses = function getChildrenUniqueStatuses(_ref8) {
22158
- var items = _ref8.items,
22159
- itemId = _ref8.itemId;
22160
- var childrenAndItemIds = _getChildrenIds({
22619
+ // Optimized: Use Set for O(1) lookup and reduce iterations
22620
+ var getChildrenUniqueStatuses = function getChildrenUniqueStatuses(_ref7) {
22621
+ var items = _ref7.items,
22622
+ itemId = _ref7.itemId,
22623
+ parentChildMap = _ref7.parentChildMap;
22624
+ var childrenAndItemIds = getChildrenIds({
22161
22625
  items: items,
22162
- itemId: itemId
22163
- });
22164
- var leaves = items.filter(function (item) {
22165
- return !(item != null && item.hasOwnTreeItems) && childrenAndItemIds.includes(item.itemId);
22166
- });
22167
- var uniqueStatuses = Array.from(new Set(leaves.map(function (item) {
22168
- var _item$checkedStatus;
22169
- return (_item$checkedStatus = item.checkedStatus) != null ? _item$checkedStatus : IndeterminateCheckboxStatus.unchecked;
22170
- })));
22171
- return uniqueStatuses.filter(function (checkedStatus) {
22172
- return checkedStatus && checkedStatus !== IndeterminateCheckboxStatus.indeterminate;
22626
+ itemId: itemId,
22627
+ parentChildMap: parentChildMap
22173
22628
  });
22629
+ var childrenIdSet = new Set(childrenAndItemIds);
22630
+ var uniqueStatuses = new Set();
22631
+ for (var _iterator4 = _createForOfIteratorHelperLoose(items), _step4; !(_step4 = _iterator4()).done;) {
22632
+ var item = _step4.value;
22633
+ if (!(item != null && item.hasOwnTreeItems) && childrenIdSet.has(item.itemId)) {
22634
+ var _item$checkedStatus;
22635
+ var status = (_item$checkedStatus = item.checkedStatus) != null ? _item$checkedStatus : IndeterminateCheckboxStatus.unchecked;
22636
+ if (status && status !== IndeterminateCheckboxStatus.indeterminate) {
22637
+ uniqueStatuses.add(status);
22638
+ }
22639
+ }
22640
+ }
22641
+ return Array.from(uniqueStatuses);
22174
22642
  };
22175
- var processInitialParentStatuses = function processInitialParentStatuses(_ref9) {
22176
- var items = _ref9.items,
22177
- _ref9$isTopLevelSelec = _ref9.isTopLevelSelectable,
22178
- isTopLevelSelectable = _ref9$isTopLevelSelec === void 0 ? true : _ref9$isTopLevelSelec;
22179
- var itemsWithSelectedChildren = items.reduce(function (result, item) {
22643
+ // Optimized: Build map once and reuse
22644
+ var processInitialParentStatuses = function processInitialParentStatuses(_ref8) {
22645
+ var items = _ref8.items,
22646
+ _ref8$isTopLevelSelec = _ref8.isTopLevelSelectable,
22647
+ isTopLevelSelectable = _ref8$isTopLevelSelec === void 0 ? true : _ref8$isTopLevelSelec;
22648
+ var parentChildMap = buildParentChildMap(items);
22649
+ var itemsWithSelectedChildren = items;
22650
+ for (var _iterator5 = _createForOfIteratorHelperLoose(items), _step5; !(_step5 = _iterator5()).done;) {
22651
+ var item = _step5.value;
22180
22652
  if (!(item != null && item.hasOwnTreeItems) || (item == null ? void 0 : item.checkedStatus) !== IndeterminateCheckboxStatus.checked) {
22181
- return result;
22653
+ continue;
22182
22654
  }
22183
- return _processChildrenSelection({
22184
- items: result,
22655
+ itemsWithSelectedChildren = _processChildrenSelection({
22656
+ items: itemsWithSelectedChildren,
22185
22657
  itemId: item.itemId,
22186
22658
  checkedStatus: IndeterminateCheckboxStatus.checked,
22187
- forceCheckedStatusForDisabled: true
22659
+ forceCheckedStatusForDisabled: true,
22660
+ parentChildMap: parentChildMap
22188
22661
  });
22189
- }, items);
22190
- return itemsWithSelectedChildren.map(function (item) {
22191
- if (!(item != null && item.hasOwnTreeItems) || isTopLevelSelectable === false && item.parentId === null) {
22192
- return item;
22662
+ }
22663
+ var result = [];
22664
+ for (var _iterator6 = _createForOfIteratorHelperLoose(itemsWithSelectedChildren), _step6; !(_step6 = _iterator6()).done;) {
22665
+ var _item = _step6.value;
22666
+ if (!(_item != null && _item.hasOwnTreeItems) || isTopLevelSelectable === false && _item.parentId === null) {
22667
+ result.push(_item);
22668
+ continue;
22193
22669
  }
22194
22670
  var childrenUniqueStatuses = getChildrenUniqueStatuses({
22195
22671
  items: itemsWithSelectedChildren,
22196
- itemId: item.itemId
22672
+ itemId: _item.itemId,
22673
+ parentChildMap: parentChildMap
22197
22674
  });
22198
22675
  var parentStatus = childrenUniqueStatuses.length > 1 ? IndeterminateCheckboxStatus.indeterminate : childrenUniqueStatuses[0];
22199
- return parentStatus ? _extends({}, item, {
22676
+ result.push(parentStatus ? _extends({}, _item, {
22200
22677
  checkedStatus: parentStatus
22201
- }) : item;
22202
- });
22678
+ }) : _item);
22679
+ }
22680
+ return result;
22203
22681
  };
22204
22682
  var filterTopLevelItemsIfNeeded = function filterTopLevelItemsIfNeeded(preselectedItems, treeViewData, isTopLevelSelectable) {
22205
22683
  if (!preselectedItems || isTopLevelSelectable !== false) {
@@ -22212,15 +22690,15 @@ var filterTopLevelItemsIfNeeded = function filterTopLevelItemsIfNeeded(preselect
22212
22690
  return itemData ? itemData.parentId !== null : false;
22213
22691
  });
22214
22692
  };
22215
- var getInitialItems = function getInitialItems(_ref0) {
22216
- var children = _ref0.children,
22217
- rawPreselectedItems = _ref0.preselectedItems,
22218
- checkParents = _ref0.checkParents,
22219
- checkChildren = _ref0.checkChildren,
22220
- selectable = _ref0.selectable,
22221
- isTreeViewDisabled = _ref0.isDisabled,
22222
- isTopLevelSelectable = _ref0.isTopLevelSelectable,
22223
- items = _ref0.items;
22693
+ var getInitialItems = function getInitialItems(_ref9) {
22694
+ var children = _ref9.children,
22695
+ rawPreselectedItems = _ref9.preselectedItems,
22696
+ checkParents = _ref9.checkParents,
22697
+ checkChildren = _ref9.checkChildren,
22698
+ selectable = _ref9.selectable,
22699
+ isTreeViewDisabled = _ref9.isDisabled,
22700
+ isTopLevelSelectable = _ref9.isTopLevelSelectable,
22701
+ items = _ref9.items;
22224
22702
  var treeViewData = items || _getTreeViewData({
22225
22703
  children: children,
22226
22704
  checkChildren: checkChildren,
@@ -22234,8 +22712,8 @@ var getInitialItems = function getInitialItems(_ref0) {
22234
22712
  if (isTopLevelSelectable === false && treeViewDataItem.parentId === null) {
22235
22713
  return treeViewDataItem;
22236
22714
  }
22237
- var preselectedItem = filteredPreselectedItems.find(function (_ref1) {
22238
- var itemId = _ref1.itemId;
22715
+ var preselectedItem = filteredPreselectedItems.find(function (_ref0) {
22716
+ var itemId = _ref0.itemId;
22239
22717
  return treeViewDataItem.itemId === itemId;
22240
22718
  });
22241
22719
  return preselectedItem ? _extends({}, treeViewDataItem, {
@@ -22262,177 +22740,216 @@ var getInitialItems = function getInitialItems(_ref0) {
22262
22740
  }
22263
22741
  return result;
22264
22742
  };
22265
- var selectSingle = function selectSingle(_ref10) {
22266
- var items = _ref10.items,
22267
- itemId = _ref10.itemId,
22268
- checkedStatus = _ref10.checkedStatus;
22743
+ var selectSingle = function selectSingle(_ref1) {
22744
+ var items = _ref1.items,
22745
+ itemId = _ref1.itemId,
22746
+ checkedStatus = _ref1.checkedStatus;
22269
22747
  return items.map(function (item) {
22270
22748
  return _extends({}, item, {
22271
22749
  checkedStatus: item.itemId === itemId ? checkedStatus : IndeterminateCheckboxStatus.unchecked
22272
22750
  });
22273
22751
  });
22274
22752
  };
22275
- var _processParentsSelection = function processParentsSelection(_ref11) {
22276
- var items = _ref11.items,
22277
- itemId = _ref11.itemId,
22278
- checkedStatus = _ref11.checkedStatus,
22279
- _ref11$isTopLevelSele = _ref11.isTopLevelSelectable,
22280
- isTopLevelSelectable = _ref11$isTopLevelSele === void 0 ? true : _ref11$isTopLevelSele;
22281
- var item = items.find(function (item) {
22282
- return item.itemId === itemId;
22283
- });
22284
- if (!item || item.parentId === null) {
22285
- return items;
22286
- }
22287
- var siblings = items.filter(function (i) {
22288
- return i.parentId === item.parentId;
22289
- });
22290
- var isAllSiblingsHasTheSameStatus = siblings.every(function (item) {
22291
- return (item.checkedStatus || IndeterminateCheckboxStatus.unchecked) === checkedStatus;
22292
- });
22293
- var parentStatus = isAllSiblingsHasTheSameStatus ? checkedStatus : IndeterminateCheckboxStatus.indeterminate;
22294
- var parent = items.find(function (i) {
22295
- return i.itemId === item.parentId;
22296
- });
22297
- if (!parent) {
22298
- return items;
22299
- }
22300
- if (!isTopLevelSelectable && !parent.parentId) {
22301
- return items;
22302
- }
22303
- var nextItems = items.map(function (item) {
22304
- return item.itemId === parent.itemId ? _extends({}, item, {
22753
+ // Optimized: Use Map for O(1) lookups and iterative approach instead of recursion
22754
+ var processParentsSelection = function processParentsSelection(_ref10) {
22755
+ var items = _ref10.items,
22756
+ itemId = _ref10.itemId,
22757
+ checkedStatus = _ref10.checkedStatus,
22758
+ _ref10$isTopLevelSele = _ref10.isTopLevelSelectable,
22759
+ isTopLevelSelectable = _ref10$isTopLevelSele === void 0 ? true : _ref10$isTopLevelSele;
22760
+ var itemMap = new Map(items.map(function (item) {
22761
+ return [item.itemId, item];
22762
+ }));
22763
+ var parentChildMap = buildParentChildMap(items);
22764
+ var currentItem = itemMap.get(itemId);
22765
+ var currentStatus = checkedStatus;
22766
+ // Iteratively process parents from bottom to top
22767
+ while (currentItem && currentItem.parentId !== null) {
22768
+ var parentId = currentItem.parentId;
22769
+ var parent = itemMap.get(parentId);
22770
+ if (!parent) break;
22771
+ if (!isTopLevelSelectable && !parent.parentId) break;
22772
+ // Get all siblings including current item
22773
+ var siblings = parentChildMap.get(parentId) || [];
22774
+ var allSameStatus = true;
22775
+ var firstStatus = currentStatus;
22776
+ for (var _iterator7 = _createForOfIteratorHelperLoose(siblings), _step7; !(_step7 = _iterator7()).done;) {
22777
+ var siblingId = _step7.value;
22778
+ var sibling = itemMap.get(siblingId);
22779
+ if (!sibling) continue;
22780
+ var siblingStatus = sibling.checkedStatus || IndeterminateCheckboxStatus.unchecked;
22781
+ if (siblingStatus !== firstStatus) {
22782
+ allSameStatus = false;
22783
+ break;
22784
+ }
22785
+ }
22786
+ var parentStatus = allSameStatus ? currentStatus : IndeterminateCheckboxStatus.indeterminate;
22787
+ // Update parent
22788
+ itemMap.set(parentId, _extends({}, parent, {
22305
22789
  checkedStatus: parentStatus
22306
- }) : item;
22307
- });
22308
- return _processParentsSelection({
22309
- items: nextItems,
22310
- itemId: parent.itemId,
22311
- checkedStatus: parentStatus,
22312
- isTopLevelSelectable: isTopLevelSelectable
22313
- });
22790
+ }));
22791
+ // Move up to next parent
22792
+ currentItem = parent;
22793
+ currentStatus = parentStatus;
22794
+ }
22795
+ return Array.from(itemMap.values());
22314
22796
  };
22315
- var getMultiToggledStatus = function getMultiToggledStatus(_ref12) {
22316
- var items = _ref12.items,
22317
- itemId = _ref12.itemId;
22797
+ // Optimized: Early exit and use Map for faster lookups
22798
+ var getMultiToggledStatus = function getMultiToggledStatus(_ref11) {
22799
+ var items = _ref11.items,
22800
+ itemId = _ref11.itemId,
22801
+ parentChildMap = _ref11.parentChildMap;
22318
22802
  var children = getChildren({
22319
22803
  items: items,
22320
- itemId: itemId
22321
- });
22322
- var enabledChildren = children.filter(function (item) {
22323
- return !item.isDisabled;
22804
+ itemId: itemId,
22805
+ parentChildMap: parentChildMap
22324
22806
  });
22325
- if (enabledChildren.some(function (item) {
22326
- return !item.checkedStatus || item.checkedStatus === IndeterminateCheckboxStatus.unchecked;
22327
- })) {
22328
- return IndeterminateCheckboxStatus.checked;
22807
+ // Early exit: check if any enabled child is unchecked
22808
+ for (var _iterator8 = _createForOfIteratorHelperLoose(children), _step8; !(_step8 = _iterator8()).done;) {
22809
+ var item = _step8.value;
22810
+ if (item.isDisabled) continue;
22811
+ if (!item.checkedStatus || item.checkedStatus === IndeterminateCheckboxStatus.unchecked) {
22812
+ return IndeterminateCheckboxStatus.checked;
22813
+ }
22329
22814
  }
22330
22815
  return IndeterminateCheckboxStatus.unchecked;
22331
22816
  };
22332
- var toggleMulti = function toggleMulti(_ref13) {
22333
- var items = _ref13.items,
22334
- itemId = _ref13.itemId,
22335
- rawCheckedStatus = _ref13.checkedStatus,
22336
- forceCheckedStatus = _ref13.forceCheckedStatus,
22337
- checkChildren = _ref13.checkChildren,
22338
- checkParents = _ref13.checkParents,
22339
- isTopLevelSelectable = _ref13.isTopLevelSelectable;
22340
- var item = items.find(function (item) {
22341
- return item.itemId === itemId;
22342
- });
22817
+ // Optimized: Build maps once and reuse them, reduce array iterations
22818
+ var toggleMulti = function toggleMulti(_ref12) {
22819
+ var items = _ref12.items,
22820
+ itemId = _ref12.itemId,
22821
+ rawCheckedStatus = _ref12.checkedStatus,
22822
+ forceCheckedStatus = _ref12.forceCheckedStatus,
22823
+ checkChildren = _ref12.checkChildren,
22824
+ checkParents = _ref12.checkParents,
22825
+ isTopLevelSelectable = _ref12.isTopLevelSelectable;
22826
+ // Build parent-child map once for reuse
22827
+ var parentChildMap = buildParentChildMap(items);
22828
+ var itemMap = new Map(items.map(function (item) {
22829
+ return [item.itemId, item];
22830
+ }));
22831
+ var item = itemMap.get(itemId);
22343
22832
  if (isTopLevelSelectable === false && !(item != null && item.parentId)) {
22344
22833
  return items;
22345
22834
  }
22346
22835
  var checkedStatus = checkChildren && !forceCheckedStatus ? getMultiToggledStatus({
22347
22836
  items: items,
22348
- itemId: itemId
22837
+ itemId: itemId,
22838
+ parentChildMap: parentChildMap
22349
22839
  }) : rawCheckedStatus;
22350
- var itemsWithProcessedItemSelection = items.map(function (item) {
22351
- return item.itemId === itemId ? _extends({}, item, {
22840
+ // Update the item itself
22841
+ if (item) {
22842
+ itemMap.set(itemId, _extends({}, item, {
22352
22843
  checkedStatus: checkedStatus
22353
- }) : item;
22354
- });
22355
- var itemsWithProcessedChildrenSelection = checkChildren ? _processChildrenSelection({
22356
- items: itemsWithProcessedItemSelection,
22357
- itemId: itemId,
22358
- checkedStatus: checkedStatus
22359
- }) : itemsWithProcessedItemSelection;
22360
- return checkParents ? _processParentsSelection({
22361
- items: itemsWithProcessedChildrenSelection,
22362
- itemId: itemId,
22363
- checkedStatus: checkedStatus,
22364
- isTopLevelSelectable: isTopLevelSelectable
22365
- }) : itemsWithProcessedChildrenSelection;
22366
- };
22367
- var _getParentIds = function getParentIds(_ref14) {
22368
- var items = _ref14.items,
22369
- itemId = _ref14.itemId,
22370
- _ref14$prevParentIds = _ref14.prevParentIds,
22371
- prevParentIds = _ref14$prevParentIds === void 0 ? [] : _ref14$prevParentIds;
22372
- var item = items.find(function (item) {
22373
- return item.itemId === itemId;
22374
- });
22375
- if (!item) {
22376
- return prevParentIds;
22844
+ }));
22377
22845
  }
22378
- var parentId = item.parentId;
22379
- return parentId ? _getParentIds({
22380
- itemId: parentId,
22846
+ var resultItems = Array.from(itemMap.values());
22847
+ // Process children if needed
22848
+ if (checkChildren) {
22849
+ resultItems = _processChildrenSelection({
22850
+ items: resultItems,
22851
+ itemId: itemId,
22852
+ checkedStatus: checkedStatus,
22853
+ parentChildMap: parentChildMap
22854
+ });
22855
+ }
22856
+ // Process parents if needed
22857
+ if (checkParents) {
22858
+ resultItems = processParentsSelection({
22859
+ items: resultItems,
22860
+ itemId: itemId,
22861
+ checkedStatus: checkedStatus,
22862
+ isTopLevelSelectable: isTopLevelSelectable
22863
+ });
22864
+ }
22865
+ return resultItems;
22866
+ };
22867
+ var _getParentIds = function getParentIds(_ref13) {
22868
+ var items = _ref13.items,
22869
+ itemId = _ref13.itemId,
22870
+ _ref13$prevParentIds = _ref13.prevParentIds,
22871
+ prevParentIds = _ref13$prevParentIds === void 0 ? [] : _ref13$prevParentIds;
22872
+ var item = items.find(function (item) {
22873
+ return item.itemId === itemId;
22874
+ });
22875
+ if (!item) {
22876
+ return prevParentIds;
22877
+ }
22878
+ var parentId = item.parentId;
22879
+ return parentId ? _getParentIds({
22880
+ itemId: parentId,
22381
22881
  items: items,
22382
22882
  prevParentIds: [].concat(prevParentIds, [parentId])
22383
22883
  }) : prevParentIds;
22384
22884
  };
22385
22885
  var getEnabledRootParentIds = function getEnabledRootParentIds(items) {
22386
- var rootParents = items.filter(function (_ref15) {
22387
- var parentId = _ref15.parentId,
22388
- isDisabled = _ref15.isDisabled;
22886
+ var rootParents = items.filter(function (_ref14) {
22887
+ var parentId = _ref14.parentId,
22888
+ isDisabled = _ref14.isDisabled;
22389
22889
  return !parentId && !isDisabled;
22390
22890
  });
22391
- return rootParents.map(function (_ref16) {
22392
- var itemId = _ref16.itemId;
22891
+ return rootParents.map(function (_ref15) {
22892
+ var itemId = _ref15.itemId;
22393
22893
  return itemId;
22394
22894
  });
22395
22895
  };
22396
- var toggleAllMulti = function toggleAllMulti(_ref17) {
22397
- var items = _ref17.items,
22398
- checkedStatus = _ref17.checkedStatus,
22399
- checkChildren = _ref17.checkChildren,
22400
- checkParents = _ref17.checkParents,
22401
- isTopLevelSelectable = _ref17.isTopLevelSelectable;
22896
+ // Optimized: Reduce iterations and use Map for batch updates
22897
+ var toggleAllMulti = function toggleAllMulti(_ref16) {
22898
+ var items = _ref16.items,
22899
+ checkedStatus = _ref16.checkedStatus,
22900
+ checkChildren = _ref16.checkChildren,
22901
+ checkParents = _ref16.checkParents,
22902
+ isTopLevelSelectable = _ref16.isTopLevelSelectable;
22903
+ // Fast path: simple case without children/parent checking
22402
22904
  if (!checkChildren) {
22403
- return items.map(function (item) {
22905
+ var result = [];
22906
+ for (var _iterator9 = _createForOfIteratorHelperLoose(items), _step9; !(_step9 = _iterator9()).done;) {
22907
+ var item = _step9.value;
22404
22908
  if (item != null && item.isDisabled || isTopLevelSelectable === false && !item.parentId) {
22405
- return item;
22909
+ result.push(item);
22910
+ } else {
22911
+ result.push(_extends({}, item, {
22912
+ checkedStatus: checkedStatus
22913
+ }));
22406
22914
  }
22407
- return _extends({}, item, {
22408
- checkedStatus: checkedStatus
22409
- });
22410
- });
22915
+ }
22916
+ return result;
22411
22917
  }
22412
22918
  if (isTopLevelSelectable === false) {
22413
- return items.map(function (item) {
22414
- if (item.isDisabled || item.parentId === null) {
22415
- return item;
22919
+ var _result = [];
22920
+ for (var _iterator0 = _createForOfIteratorHelperLoose(items), _step0; !(_step0 = _iterator0()).done;) {
22921
+ var _item2 = _step0.value;
22922
+ if (_item2.isDisabled || _item2.parentId === null) {
22923
+ _result.push(_item2);
22924
+ } else {
22925
+ _result.push(_extends({}, _item2, {
22926
+ checkedStatus: checkedStatus
22927
+ }));
22416
22928
  }
22417
- return _extends({}, item, {
22418
- checkedStatus: checkedStatus
22419
- });
22420
- });
22929
+ }
22930
+ return _result;
22421
22931
  }
22422
22932
  if (!checkParents) {
22423
- return items.map(function (item) {
22424
- if (item.isDisabled) {
22425
- return item;
22933
+ var _result2 = [];
22934
+ for (var _iterator1 = _createForOfIteratorHelperLoose(items), _step1; !(_step1 = _iterator1()).done;) {
22935
+ var _item3 = _step1.value;
22936
+ if (_item3.isDisabled) {
22937
+ _result2.push(_item3);
22938
+ } else {
22939
+ _result2.push(_extends({}, _item3, {
22940
+ checkedStatus: checkedStatus
22941
+ }));
22426
22942
  }
22427
- return _extends({}, item, {
22428
- checkedStatus: checkedStatus
22429
- });
22430
- });
22943
+ }
22944
+ return _result2;
22431
22945
  }
22946
+ // Complex case: need to process each root parent
22432
22947
  var rootParentIds = getEnabledRootParentIds(items);
22433
- return rootParentIds.reduce(function (result, rootParentId) {
22434
- return toggleMulti({
22435
- items: result,
22948
+ var resultItems = items;
22949
+ for (var _iterator10 = _createForOfIteratorHelperLoose(rootParentIds), _step10; !(_step10 = _iterator10()).done;) {
22950
+ var rootParentId = _step10.value;
22951
+ resultItems = toggleMulti({
22952
+ items: resultItems,
22436
22953
  itemId: rootParentId,
22437
22954
  checkedStatus: checkedStatus,
22438
22955
  forceCheckedStatus: true,
@@ -22440,13 +22957,14 @@ var toggleAllMulti = function toggleAllMulti(_ref17) {
22440
22957
  checkParents: checkParents,
22441
22958
  isTopLevelSelectable: isTopLevelSelectable
22442
22959
  });
22443
- }, items);
22960
+ }
22961
+ return resultItems;
22444
22962
  };
22445
- var getInitialExpandedIds = function getInitialExpandedIds(_ref18) {
22446
- var items = _ref18.items,
22447
- initialExpandedItems = _ref18.initialExpandedItems;
22448
- if (!initialExpandedItems) {
22449
- return initialExpandedItems;
22963
+ var getInitialExpandedIds = function getInitialExpandedIds(_ref17) {
22964
+ var items = _ref17.items,
22965
+ initialExpandedItems = _ref17.initialExpandedItems;
22966
+ if (!initialExpandedItems || initialExpandedItems.length === 0) {
22967
+ return [];
22450
22968
  }
22451
22969
  return initialExpandedItems.reduce(function (result, itemId) {
22452
22970
  return [].concat(result, [itemId], _getParentIds({
@@ -22472,16 +22990,19 @@ function useTreeItem(props, forwardedRef) {
22472
22990
  onClick = props.onClick,
22473
22991
  parentDepth = props.parentDepth,
22474
22992
  topLevel = props.topLevel;
22475
- var _React$useContext = useContext(TreeViewContext),
22476
- registerTreeItem = _React$useContext.registerTreeItem,
22477
- selectable = _React$useContext.selectable,
22478
- selectedItems = _React$useContext.selectedItems,
22479
- treeItemRefArray = _React$useContext.treeItemRefArray,
22993
+ // Consume split contexts for reduced re-render scope
22994
+ var _React$useContext = useContext(TreeViewSelectionContext),
22480
22995
  items = _React$useContext.items,
22481
- selectItem = _React$useContext.selectItem,
22482
- isTopLevelSelectable = _React$useContext.isTopLevelSelectable,
22483
- expandedSet = _React$useContext.expandedSet,
22484
- handleExpandedChange = _React$useContext.handleExpandedChange;
22996
+ selectedItems = _React$useContext.selectedItems,
22997
+ selectItem = _React$useContext.selectItem;
22998
+ var _React$useContext2 = useContext(TreeViewExpansionContext),
22999
+ expandedSet = _React$useContext2.expandedSet,
23000
+ handleExpandedChange = _React$useContext2.handleExpandedChange;
23001
+ var _React$useContext3 = useContext(TreeViewConfigContext),
23002
+ registerTreeItem = _React$useContext3.registerTreeItem,
23003
+ selectable = _React$useContext3.selectable,
23004
+ treeItemRefArray = _React$useContext3.treeItemRefArray,
23005
+ isTopLevelSelectable = _React$useContext3.isTopLevelSelectable;
22485
23006
  var treeViewItemData = useMemo(function () {
22486
23007
  return items.find(function (item) {
22487
23008
  return item.itemId === itemId;
@@ -22501,21 +23022,13 @@ function useTreeItem(props, forwardedRef) {
22501
23022
  var hasOwnTreeItems = useMemo(function () {
22502
23023
  return (treeViewItemData == null ? void 0 : treeViewItemData.hasOwnTreeItems) || treeItemChildren.length > 0;
22503
23024
  }, [treeViewItemData, treeItemChildren.length]);
22504
- var _React$useState = useState(function () {
22505
- return expandedSet.has(itemId);
22506
- }),
22507
- expanded = _React$useState[0],
22508
- setExpanded = _React$useState[1];
23025
+ var expanded = useMemo(function () {
23026
+ return expandedSet.has(itemId);
23027
+ }, [expandedSet, itemId]);
22509
23028
  var ownRef = useRef(null);
22510
23029
  var ref = useForkedRef(forwardedRef, ownRef);
22511
23030
  var forceUpdate = useForceUpdate();
22512
23031
  var generatedId = useGenerateId();
22513
- useEffect(function () {
22514
- var isExpanded = expandedSet.has(itemId);
22515
- if (isExpanded !== expanded) {
22516
- setExpanded(isExpanded);
22517
- }
22518
- }, [expandedSet, itemId, expanded]);
22519
23032
  useEffect(function () {
22520
23033
  if (!isDisabled && ownRef.current !== null) {
22521
23034
  registerTreeItem(treeItemRefArray, ownRef);
@@ -22622,7 +23135,6 @@ function useTreeItem(props, forwardedRef) {
22622
23135
  if (expanded) {
22623
23136
  focusNext();
22624
23137
  } else {
22625
- setExpanded(true);
22626
23138
  handleExpandedChange(event, itemId);
22627
23139
  focusSelf();
22628
23140
  }
@@ -22631,7 +23143,6 @@ function useTreeItem(props, forwardedRef) {
22631
23143
  var collapseFocusedNode = function collapseFocusedNode(event) {
22632
23144
  if (hasOwnTreeItems) {
22633
23145
  if (expanded) {
22634
- setExpanded(false);
22635
23146
  handleExpandedChange(event, itemId);
22636
23147
  focusSelf();
22637
23148
  } else {
@@ -22787,7 +23298,6 @@ function useTreeItem(props, forwardedRef) {
22787
23298
  parentDepth: parentDepth,
22788
23299
  ref: ref,
22789
23300
  selectedItems: selectedItems,
22790
- setExpanded: setExpanded,
22791
23301
  treeItemChildren: treeItemChildren,
22792
23302
  isDisabled: isDisabled
22793
23303
  };
@@ -22823,7 +23333,7 @@ var StyledTreeItem = /*#__PURE__*/_styled("li", {
22823
23333
  }, ";padding-right:", function (props) {
22824
23334
  return props.theme.spaceScale.spacing02;
22825
23335
  }, ";", function (props) {
22826
- return props.selected && /*#__PURE__*/css("&:before{position:absolute;background-color:", props.isInverse ? props.theme.colors.tertiary500 : props.theme.colors.primary500, ";block-size:100%;content:'';inline-size:", props.theme.spaceScale.spacing02, ";inset-block-start:0;inset-inline-start:0;};label:StyledTreeItem;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzRFEiLCJmaWxlIjoiVHJlZUl0ZW0udHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XHJcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcclxuaW1wb3J0IHsgdHJhbnNwYXJlbnRpemUgfSBmcm9tICdwb2xpc2hlZCc7XHJcbmltcG9ydCB7IEFydGljbGVJY29uLCBDaGV2cm9uUmlnaHRJY29uLCBFeHBhbmRNb3JlSWNvbiwgRm9sZGVySWNvbiwgfSBmcm9tICdyZWFjdC1tYWdtYS1pY29ucyc7XHJcbmltcG9ydCB7IFRyZWVJdGVtQ29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld1NlbGVjdGFibGUgfSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgY2hlY2tlZFN0YXR1c1RvQm9vbGVhbiwgdXNlVHJlZUl0ZW0sIH0gZnJvbSAnLi91c2VUcmVlSXRlbSc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gJy4uL0NoZWNrYm94JztcclxuaW1wb3J0IHsgSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMsIH0gZnJvbSAnLi4vSW5kZXRlcm1pbmF0ZUNoZWNrYm94JztcclxuaW1wb3J0IHsgVHJhbnNpdGlvbiB9IGZyb20gJy4uL1RyYW5zaXRpb24nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IG1lcmdlUmVmcyB9IGZyb20gJy4uLy4uL3V0aWxzJztcclxuY29uc3QgU3R5bGVkVHJlZUl0ZW0gPSBzdHlsZWQubGkgYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDBcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWw3MDB9O1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIGN1cnNvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IocHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMuc2VsZWN0YWJsZVR5cGUsIHByb3BzLm5vZGVUeXBlKX07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcblxuICBwYWRkaW5nLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoKX07XG5cbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcblxuICAgICYgPiAqOmZpcnN0LWNoaWxkIHtcbiAgICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAgICAgb3V0bGluZTogMnB4IHNvbGlkXG4gICAgICAgICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHByb3BzLnRoZW1lLmNvbG9ycy5mb2N1c0ludmVyc2VcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLmZvY3VzfTtcbiAgICB9XG4gIH1cblxuICA+IGRpdjpmaXJzdC1vZi10eXBlIHtcbiAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IHByb3BzLnNlbGVjdGVkICYmIHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyB0cmFuc3BhcmVudGl6ZSgwLjcsIHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsOTAwKVxyXG4gICAgOiBwcm9wcy5zZWxlY3RlZCAmJlxyXG4gICAgICAgIHRyYW5zcGFyZW50aXplKDAuOTIsIHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsOTAwKX07XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6ICR7cHJvcHMgPT4gY2FsY3VsYXRlT2Zmc2V0KHByb3BzLm5vZGVUeXBlLCBwcm9wcy5kZXB0aCwgdHJ1ZSl9O1xuICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6ICR7cHJvcHMgPT4gY2FsY3VsYXRlT2Zmc2V0KHByb3BzLm5vZGVUeXBlLCBwcm9wcy5kZXB0aCwgdHJ1ZSwgdHJ1ZSl9O1xuICAgIHBhZGRpbmctYmxvY2stZW5kOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAyfTtcbiAgICBwYWRkaW5nLWJsb2NrLXN0YXJ0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAyfTtcbiAgICBwYWRkaW5nLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAyfTtcblxuICAgICR7cHJvcHMgPT4gcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgIGNzcyBgXG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcy5pc0ludmVyc2VcclxuICAgICAgICA/IHByb3BzLnRoZW1lLmNvbG9ycy50ZXJ0aWFyeTUwMFxyXG4gICAgICAgIDogcHJvcHMudGhlbWUuY29sb3JzLnByaW1hcnk1MDB9O1xuICAgICAgICAgIGJsb2NrLXNpemU6IDEwMCU7XG4gICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgaW5saW5lLXNpemU6ICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgICAgICAgIGluc2V0LWJsb2NrLXN0YXJ0OiAwO1xuICAgICAgICAgIGluc2V0LWlubGluZS1zdGFydDogMDtcbiAgICAgICAgfVxuICAgICAgYH1cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICR7cHJvcHMgPT4gZ2V0SG92ZXJCYWNrZ3JvdW5kKHtcclxuICAgIGlzRGlzYWJsZWQ6IHByb3BzLmlzRGlzYWJsZWQsXHJcbiAgICBob3ZlckNvbG9yOiBwcm9wcy5ob3ZlckNvbG9yLFxyXG4gICAgaXNJbnZlcnNlOiBwcm9wcy5pc0ludmVyc2UsXHJcbiAgICB0aGVtZTogcHJvcHMudGhlbWUsXHJcbn0pfTtcbiAgICB9XG4gIH1cbmA7XHJcbmZ1bmN0aW9uIGdldEhvdmVyQmFja2dyb3VuZCh7IGlzRGlzYWJsZWQsIGhvdmVyQ29sb3IsIGlzSW52ZXJzZSwgdGhlbWUgfSkge1xyXG4gICAgaWYgKGlzRGlzYWJsZWQpXHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIGlmIChob3ZlckNvbG9yKVxyXG4gICAgICAgIHJldHVybiBob3ZlckNvbG9yO1xyXG4gICAgY29uc3QgdHJhbnNwYXJlbmN5ID0gaXNJbnZlcnNlID8gMC44IDogMC45NTtcclxuICAgIHJldHVybiB0cmFuc3BhcmVudGl6ZSh0cmFuc3BhcmVuY3ksIHRoZW1lLmNvbG9ycy5uZXV0cmFsOTAwKTtcclxufVxyXG5jb25zdCBJY29uV3JhcHBlciA9IHN0eWxlZC5zcGFuIGBcbiAgY29sb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgbWFyZ2luLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzfTtcbiAgbWFyZ2luLWxlZnQ6IDA7XG5cbiAgc3ZnIHtcbiAgICBoZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaWNvblNpemVzLm1lZGl1bX1weDtcbiAgICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pY29uU2l6ZXMubWVkaXVtfXB4O1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIH1cbmA7XHJcbmNvbnN0IFN0eWxlZExhYmVsV3JhcHBlciA9IHN0eWxlZC5zcGFuIGBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGNvbG9yOiAke3Byb3BzID0+IGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIHdpZHRoOiAxMDAlO1xuYDtcclxuY29uc3QgU3R5bGVkRXhwYW5kV3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIG1hcmdpbi1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM307XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLmNvbG9yIHx8XHJcbiAgICBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICBib3JkZXItcmFkaXVzOiAwO1xuICB3aWR0aDogJHsoeyBzaXplLCB0aGVtZSB9KSA9PiBzaXplICE9PSB1bmRlZmluZWQgPyBgJHtzaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fTtcbiAgaGVpZ2h0OiAkeyh7IHNpemUsIHRoZW1lIH0pID0+IHNpemUgIT09IHVuZGVmaW5lZCA/IGAke3NpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9O1xuYDtcclxuY29uc3QgU3R5bGVkQ2hlY2tib3hXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIG1hcmdpbi1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM307XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGRpc3BsYXk6ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2ZsZXgnIDogJ2lubGluZS1mbGV4Jyl9O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogJHtwcm9wcyA9PiBgY2FsYygxMDAlIC0gJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM30pYH07XG5gO1xyXG5jb25zdCBTdHlsZWRJdGVtV3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogJHtwcm9wcyA9PiAocHJvcHMuaGFzQWRkaXRpb25hbENvbnRlbnQgPyAnY29sdW1uJyA6ICdyb3cnKX07XG4gIGFsaWduLWl0ZW1zOiAke3Byb3BzID0+IChwcm9wcy5oYXNDdXN0b21JY29uU2l6ZSA/ICdjZW50ZXInIDogJ2ZsZXgtc3RhcnQnKX07XG4gIGN1cnNvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IocHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMuc2VsZWN0YWJsZSwgcHJvcHMubm9kZVR5cGUpfTtcbmA7XHJcbmNvbnN0IEFkZGl0aW9uYWxDb250ZW50V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tYm90dG9tOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA1fTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUcmVlSXRlbSA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpID0+IHtcclxuICAgIGNvbnN0IHsgYWRkaXRpb25hbENvbnRlbnQsIGNoaWxkcmVuLCBob3ZlckNvbG9yLCBpY29uLCBpbmRleCwgbGFiZWwsIGxhYmVsU3R5bGUsIHN0eWxlLCB0ZXN0SWQsIHRvcExldmVsLCB0cmVlSXRlbVN0eWxlcywgLi4ucmVzdCB9ID0gcHJvcHM7XHJcbiAgICBjb25zdCB0aGVtZSA9IFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KTtcclxuICAgIGNvbnN0IGlzSW52ZXJzZSA9IHVzZUlzSW52ZXJzZSgpO1xyXG4gICAgY29uc3QgeyBleHBhbmRJY29uU3R5bGVzLCBoYW5kbGVFeHBhbmRlZENoYW5nZSwgaGFzSWNvbnMsIGl0ZW1Ub0ZvY3VzLCBpc1RvcExldmVsU2VsZWN0YWJsZSwgc2VsZWN0YWJsZSwgfSA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZVZpZXdDb250ZXh0KTtcclxuICAgIGNvbnN0IHsgY29udGV4dFZhbHVlLCBoYW5kbGVDbGljaywgaGFuZGxlS2V5RG93biB9ID0gdXNlVHJlZUl0ZW0ocHJvcHMsIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgY2hlY2tib3hDaGFuZ2VIYW5kbGVyLCBjaGVja2VkU3RhdHVzLCBleHBhbmRlZCwgaGFzT3duVHJlZUl0ZW1zLCBpdGVtRGVwdGgsIGl0ZW1JZCwgcGFyZW50RGVwdGgsIHJlZiwgc2VsZWN0ZWRJdGVtcywgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IG5vZGVUeXBlID0gaGFzT3duVHJlZUl0ZW1zID8gVHJlZU5vZGVUeXBlLmJyYW5jaCA6IFRyZWVOb2RlVHlwZS5sZWFmO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZVxyXG4gICAgICAgID8gc2VsZWN0ZWRJdGVtcz8uWzBdPy5pdGVtSWQgPT09IGl0ZW1JZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IGFyaWFDaGVja2VkVmFsdWUgPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGlcclxuICAgICAgICA/IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5pbmRldGVybWluYXRlXHJcbiAgICAgICAgICAgID8gJ21peGVkJ1xyXG4gICAgICAgICAgICA6IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5jaGVja2VkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgW2lzSW5zaWRlVHJlZUl0ZW0sIHNldElzSW5zaWRlVHJlZUl0ZW1dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgdHJlZUl0ZW1SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XHJcbiAgICBjb25zdCBmb2N1c1RyYXBFbGVtZW50ID0gdXNlRm9jdXNMb2NrKGlzSW5zaWRlVHJlZUl0ZW0pO1xyXG4gICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50cyA9ICdidXR0b24sIFtyb2xlPVwiYnV0dG9uXCJdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgYVtocmVmXSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJztcclxuICAgIGNvbnN0IGdldEludGVyYWN0aXZlRWxlbWVudHMgPSAoY29udGFpbmVyLCBzZWxlY3RvcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSkuZmlsdGVyKGVsID0+ICFlbC5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgfHxcclxuICAgICAgICAgICAgKGVsLnRhYkluZGV4ICE9PSB1bmRlZmluZWQgJiYgZWwudGFiSW5kZXggPj0gMCkpO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSBsYWJlbCBhbmQgYWRkaXRpb25hbCBjb250ZW50IG9mIGEgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIFlvdSBjYW4gbmF2aWdhdGUgdGhyb3VnaCBpbnRlcmFjdGl2ZSBlbGVtZW50cyB1c2luZyB0aGUgYFRhYmAga2V5LCBhY3RpdmF0ZSB0aGVtIHdpdGggYEVudGVyYCBvciBgU3BhY2VgLFxyXG4gICAgICogYW5kIGV4aXQgb3V0c2lkZSBhbmQgZm9jdXMgdGhlIHdob2xlIHRyZWUgaXRlbSB3aXRoIGBFc2NhcGVgLlxyXG4gICAgICogKiovXHJcbiAgICBjb25zdCBoYW5kbGVMYWJlbEFuZEFkZGl0aW9uYWxDb250ZW50S2V5RG93biA9IChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQsIHNoaWZ0S2V5IH0gPSBldmVudDtcclxuICAgICAgICBjb25zdCBjdXJyZW50RWxlbWVudCA9IHRhcmdldDtcclxuICAgICAgICBjb25zdCBpc0VudGVyID0ga2V5ID09PSAnRW50ZXInO1xyXG4gICAgICAgIGNvbnN0IGlzU3BhY2UgPSBrZXkgPT09ICcgJztcclxuICAgICAgICBjb25zdCBpc0VzY2FwZSA9IGtleSA9PT0gJ0VzY2FwZSc7XHJcbiAgICAgICAgY29uc3QgaXNUYWIgPSBrZXkgPT09ICdUYWInO1xyXG4gICAgICAgIGNvbnN0IGlzQWN0aXZhdGlvbktleSA9IGlzRW50ZXIgfHwgaXNTcGFjZTtcclxuICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC5jbG9zZXN0KGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgIC8vIElmIHRoZSBrZXkgaXMgYFRhYmAsIHdlIG5hdmlnYXRlIHRocm91Z2ggaW50ZXJhY3RpdmUgZWxlbWVudHMgaW5zaWRlIHRoZSB0cmVlIGl0ZW1cclxuICAgICAgICBpZiAoaXNUYWIgJiYgaXNJbnNpZGVUcmVlSXRlbSkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIC8vIEZpbHRlciBsaXN0IG9mIGludGVyYWN0aXZlIGVsZW1lbnRzIHdoaWNoIGFyZSBvbmx5IGluY2x1ZGVkIGZvciBjdXJyZW50IHRyZWUgaXRlbVxyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VHJlZUl0ZW1JbnRlcmFjdGl2ZUVsZW1lbnRzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QuZmlsdGVyKGVsID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3RUcmVlSXRlbSA9IGVsLmNsb3Nlc3QoJ1tyb2xlPVwidHJlZWl0ZW1cIl0nKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjbG9zZXN0VHJlZUl0ZW0gPT09IHRyZWVJdGVtUmVmLmN1cnJlbnQ7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBjdXJyZW50VHJlZUl0ZW1JbnRlcmFjdGl2ZUVsZW1lbnRzLmluZGV4T2YoY3VycmVudEVsZW1lbnQpO1xyXG4gICAgICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSBzaGlmdEtleSA/IC0xIDogMTtcclxuICAgICAgICAgICAgY29uc3QgdG90YWwgPSBjdXJyZW50VHJlZUl0ZW1JbnRlcmFjdGl2ZUVsZW1lbnRzLmxlbmd0aDtcclxuICAgICAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gKGN1cnJlbnRJbmRleCArIGRpcmVjdGlvbiArIHRvdGFsKSAlIHRvdGFsO1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50VG9Gb2N1cyA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHNbbmV4dEluZGV4XTtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnRUb0ZvY3VzKSB7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGVsZW1lbnRUb0ZvY3VzLmZvY3VzKCksIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gUHJlc3NpbmcgYEVudGVyYCBvciBgU3BhY2VgIG9uIGFuIGludGVyYWN0aXZlIGVsZW1lbnQgd2lsbCB0cmlnZ2VyIGl0cyBjbGljayBldmVudFxyXG4gICAgICAgIGlmIChpc0FjdGl2YXRpb25LZXkgJiYgaW50ZXJhY3RpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGludGVyYWN0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBNb3ZlcyBmb2N1cyBvdXRzaWRlIHRoZSB0cmVlIGl0ZW0gYW5kIGZvY3VzZXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYgd2hlbiBgRXNjYXBlYCBpcyBwcmVzc2VkXHJcbiAgICAgICAgaWYgKGlzRXNjYXBlKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKGZhbHNlKTtcclxuICAgICAgICAgICAgY29uc3QgdHJlZUl0ZW1Ob2RlID0gdHJlZUl0ZW1SZWYuY3VycmVudDtcclxuICAgICAgICAgICAgaWYgKHRyZWVJdGVtTm9kZSkge1xyXG4gICAgICAgICAgICAgICAgdHJlZUl0ZW1Ob2RlLmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBoYW5kbGVPbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgYVtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFtyb2xlPVwibWVudWl0ZW1cIl0nKTtcclxuICAgICAgICAvLyBQcmV2ZW50aW5nIHNlbGVjdGluZyB0aGUgaXRlbSB3aGVuIGNsaWNraW5nIG9uIGludGVyYWN0aXZlIGVsZW1lbnRzIHdoZW4gYHNlbGVjdGFibGVgIGlzIGBzaW5nbGVgXHJcbiAgICAgICAgaWYgKGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSkge1xyXG4gICAgICAgICAgICBoYW5kbGVDbGljayhldmVudCwgaXRlbUlkKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgZGVmYXVsdEljb24gPSBub2RlVHlwZSA9PT0gVHJlZU5vZGVUeXBlLmJyYW5jaCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEZvbGRlckljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KEFydGljbGVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSk7XHJcbiAgICBjb25zdCBsYWJlbFRleHQgPSAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRMYWJlbFdyYXBwZXIsIHsgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgc3R5bGU6IGxhYmVsU3R5bGUsIGlkOiBgJHtpdGVtSWR9LWxhYmVsYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1sYWJlbGAgfSxcclxuICAgICAgICBoYXNJY29ucyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uV3JhcHBlciwgeyBpc0ludmVyc2U6IGlzSW52ZXJzZSwgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWljb25gIH0sIGljb24gfHwgZGVmYXVsdEljb24pKSxcclxuICAgICAgICBsYWJlbCkpO1xyXG4gICAgY29uc3QgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCA9IGFkZGl0aW9uYWxDb250ZW50ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkaXRpb25hbENvbnRlbnRXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaWQ6IGAke2l0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgIH0sIGFkZGl0aW9uYWxDb250ZW50KSkgOiBudWxsO1xyXG4gICAgLy8gUHJvcHMgc2hhcmVkIGJ5IENoZWNrYm94IGFuZCBJbmRldGVybWluYXRlQ2hlY2tib3hcclxuICAgIGNvbnN0IGNoZWNrYm94UHJvcHMgPSB7XHJcbiAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaGlkZUZvY3VzOiB0cnVlLFxyXG4gICAgICAgIGlkOiBgJHtpdGVtSWR9LWNoZWNrYm94YCxcclxuICAgICAgICBpbnB1dFN0eWxlOiB7IG1hcmdpblJpZ2h0OiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMyB9LFxyXG4gICAgICAgIGxhYmVsU3R5bGU6IHtcclxuICAgICAgICAgICAgcGFkZGluZzogMCxcclxuICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxhYmVsVGV4dDogbGFiZWxUZXh0LFxyXG4gICAgICAgIG9uQ2hhbmdlOiBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxyXG4gICAgICAgIHRlc3RJZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICB9O1xyXG4gICAgY29uc3Qgb25FeHBhbmRlZENsaWNrZWQgPSAoZXZlbnQpID0+IHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGhhbmRsZUV4cGFuZGVkQ2hhbmdlKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IHRhYkluZGV4ID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1Ub0ZvY3VzID09PSBpdGVtSWQgPyAwIDogLTE7XHJcbiAgICB9LCBbaXNEaXNhYmxlZCwgaXRlbVRvRm9jdXMsIGl0ZW1JZF0pO1xyXG4gICAgY29uc3Qgc2hvdWxkU2hvd0NoZWNrYm94ID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLm11bHRpICYmXHJcbiAgICAgICAgKGlzVG9wTGV2ZWxTZWxlY3RhYmxlICE9PSBmYWxzZSB8fCAhdG9wTGV2ZWwpO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiB3aXRoaW4gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBQcmVzc2luZyBgQ3RybCArIEVudGVyYCBvciBgQ29tbWFuZCArIEVudGVyYCBmb2N1c2VzIHRoZSBmaXJzdCBpbnRlcmFjdGl2ZSBlbGVtZW50IHdpdGhpbiB0aGUgdHJlZSBpdGVtXHJcbiAgICAgKiBhbmQgbG9ja3MgZm9jdXMgaW5zaWRlIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogSWYgdGhlIGZvY3VzIGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBpdCBoYW5kbGVzIGtleSBldmVudHMgZm9yIGludGVyYWN0aW9uIGVsZW1lbnRzLlxyXG4gICAgICpcclxuICAgICAqIEl0IGFsc28gaGFuZGxlcyB0aGUgb3RoZXIga2V5cyB0byB0cmlnZ2VyIHRoZSBjbGljayBldmVudCBvbiB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICogKiovXHJcbiAgICBjb25zdCBvbktleURvd25IYW5kbGVyID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBrZXksIHRhcmdldCwgY3VycmVudFRhcmdldCB9ID0gZXZlbnQ7XHJcbiAgICAgICAgY29uc3QgaXNFbnRlciA9IGtleSA9PT0gJ0VudGVyJztcclxuICAgICAgICBjb25zdCBpc0N0cmxPckNvbW1hbmQgPSBldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXk7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsRW50ZXIgPSBpc0N0cmxPckNvbW1hbmQgJiYgaXNFbnRlcjtcclxuICAgICAgICAvLyBJZiB0aGUga2V5IGlzIEN0cmwgKyBFbnRlciBvciBDb21tYW5kICsgRW50ZXIsIGZvY3VzIHRoZSBmaXJzdCBpbnRlcmFjdGl2ZSBlbGVtZW50XHJcbiAgICAgICAgLy8gYW5kIGxvY2sgZm9jdXMgaW5zaWRlIHRoZSB0cmVlIGl0ZW1cclxuICAgICAgICBpZiAoaXNDdHJsRW50ZXIgJiYgdGFyZ2V0ID09PSBjdXJyZW50VGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIHNldElzSW5zaWRlVHJlZUl0ZW0odHJ1ZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHNMaXN0ID0gZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyhjdXJyZW50VGFyZ2V0LCBpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFRvRm9jdXMgPSBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdFswXTtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnRUb0ZvY3VzKSB7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50VG9Gb2N1cy5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBFbnN1cmUgdmFsaWQgQ1NTIHNlbGVjdG9ycyBieSBlc2NhcGluZyBzcGVjaWFsIGNoYXJhY3RlcnMgKGUuZy4sIHBlcmlvZHMgaW4gaXRlbUlkKVxyXG4gICAgICAgIGNvbnN0IHNhZmVJdGVtSWQgPSBDU1MuZXNjYXBlKGl0ZW1JZCk7XHJcbiAgICAgICAgY29uc3QgaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQgPSB0YXJnZXQuY2xvc2VzdChgIyR7c2FmZUl0ZW1JZH0tbGFiZWwsICMke3NhZmVJdGVtSWR9LWFkZGl0aW9uYWxjb250ZW50d3JhcHBlcmApO1xyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgd2l0aGluIHRoZSBsYWJlbCBvciBhZGRpdGlvbmFsIGNvbnRlbnQsIGhhbmRsZSBrZXkgZXZlbnRzIGZvciB0aG9zZSBhcmVhc1xyXG4gICAgICAgIGlmIChpc1dpdGhpbkxhYmVsT3JBZGRpdGlvbmFsQ29udGVudCkge1xyXG4gICAgICAgICAgICBoYW5kbGVMYWJlbEFuZEFkZGl0aW9uYWxDb250ZW50S2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBpcyB0aGUgdHJlZSBpdGVtIGl0c2VsZiwgaGFuZGxlIGtleSBkb3duIGZvciB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBoYW5kbGVLZXlEb3duKGV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb250ZXh0VmFsdWUgfSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IHRyZWVJdGVtU3R5bGVzIH0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkVHJlZUl0ZW0sIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgXCJhcmlhLWV4cGFuZGVkXCI6IGhhc093blRyZWVJdGVtcyA/IGV4cGFuZGVkIDogbnVsbCwgXCJhcmlhLXNlbGVjdGVkXCI6IHNlbGVjdGVkSXRlbSwgXCJhcmlhLWNoZWNrZWRcIjogc2hvdWxkU2hvd0NoZWNrYm94ID8gYXJpYUNoZWNrZWRWYWx1ZSA6IG51bGwsIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLCBkZXB0aDogaXRlbURlcHRoLCBoYXNPd25UcmVlSXRlbXM6IGhhc093blRyZWVJdGVtcywgaWQ6IGl0ZW1JZCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG5vZGVUeXBlOiBub2RlVHlwZSwgcm9sZTogXCJ0cmVlaXRlbVwiLCBzZWxlY3RhYmxlVHlwZTogc2VsZWN0YWJsZSwgc2VsZWN0ZWQ6IHNlbGVjdGVkSXRlbSwgdGhlbWU6IHRoZW1lLCB0YWJJbmRleDogdGFiSW5kZXgsIG9uS2V5RG93bjogb25LZXlEb3duSGFuZGxlciwgcmVmOiB0cmVlSXRlbVJlZiwgaG92ZXJDb2xvcjogaG92ZXJDb2xvciB9KSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkSXRlbVdyYXBwZXIsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1pdGVtd3JhcHBlcmAsIGRlcHRoOiBpdGVtRGVwdGgsIGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCBoYXNDdXN0b21JY29uU2l6ZTogISFleHBhbmRJY29uU3R5bGVzPy5zaXplLCBpZDogYCR7aXRlbUlkfS1pdGVtd3JhcHBlcmAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBub2RlVHlwZTogbm9kZVR5cGUsIHNlbGVjdGFibGU6IHNlbGVjdGFibGUsIHN0eWxlOiBzdHlsZSwgdGhlbWU6IHRoZW1lLCByZWY6IG1lcmdlUmVmcyhyZWYsIGZvY3VzVHJhcEVsZW1lbnQpLCBvbkNsaWNrOiBoYW5kbGVPbkNsaWNrIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEV4cGFuZFdyYXBwZXIsIHsgXCJhcmlhLWhpZGRlblwiOiBCb29sZWFuKCFleHBhbmRlZCksIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUsIGNvbG9yOiBleHBhbmRJY29uU3R5bGVzPy5jb2xvciwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1leHBhbmRgLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgb25DbGljazogZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25FeHBhbmRlZENsaWNrZWQoZXZlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGVtZTogdGhlbWUgfSwgZXhwYW5kZWQgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChFeHBhbmRNb3JlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUgfSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hldnJvblJpZ2h0SWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUgfSkpKSksXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvdWxkU2hvd0NoZWNrYm94ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkQ2hlY2tib3hXcmFwcGVyLCB7IGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCB0aGVtZTogdGhlbWUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IHN0YXR1czogY2hlY2tlZFN0YXR1cyB9KSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tib3gsIE9iamVjdC5hc3NpZ24oe30sIGNoZWNrYm94UHJvcHMsIHsgY2hlY2tlZDogY2hlY2tlZFN0YXR1c1RvQm9vbGVhbihjaGVja2VkU3RhdHVzKSB9KSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlSXRlbUFkZGl0aW9uYWxDb250ZW50KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlSXRlbUFkZGl0aW9uYWxDb250ZW50KSkpLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuQ2hpbGRyZW4ubWFwKGNoaWxkcmVuLCAoY2hpbGQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkPy50eXBlID09PSBUcmVlSXRlbSA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFRyYW5zaXRpb24sIHsgaXNPcGVuOiBleHBhbmRlZCwgdW5tb3VudE9uRXhpdDogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgeyByb2xlOiBcImdyb3VwXCIgfSwgUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQucHJvcHMuaXRlbUlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbURlcHRoLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50RGVwdGgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BMZXZlbDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSkpIDogKGNoaWxkKTtcclxuICAgICAgICAgICAgICAgIH0pKSkpKTtcclxufSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRyZWVJdGVtLmpzLm1hcCJdfQ== */"));
23336
+ return props.selected && /*#__PURE__*/css("&:before{position:absolute;background-color:", props.isInverse ? props.theme.colors.tertiary500 : props.theme.colors.primary500, ";block-size:100%;content:'';inline-size:", props.theme.spaceScale.spacing02, ";inset-block-start:0;inset-inline-start:0;};label:StyledTreeItem;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5RFEiLCJmaWxlIjoiVHJlZUl0ZW0udHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XHJcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcclxuaW1wb3J0IHsgdHJhbnNwYXJlbnRpemUgfSBmcm9tICdwb2xpc2hlZCc7XHJcbmltcG9ydCB7IEFydGljbGVJY29uLCBDaGV2cm9uUmlnaHRJY29uLCBFeHBhbmRNb3JlSWNvbiwgRm9sZGVySWNvbiwgfSBmcm9tICdyZWFjdC1tYWdtYS1pY29ucyc7XHJcbmltcG9ydCB7IFRyZWVJdGVtQ29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0IH0gZnJvbSAnLi9UcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0NvbmZpZ0NvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3Q29uZmlnQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdFeHBhbnNpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld1NlbGVjdGlvbkNvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld1NlbGVjdGFibGUgfSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgY2hlY2tlZFN0YXR1c1RvQm9vbGVhbiwgdXNlVHJlZUl0ZW0sIH0gZnJvbSAnLi91c2VUcmVlSXRlbSc7XHJcbmltcG9ydCB7IGNhbGN1bGF0ZU9mZnNldCwgZ2V0VHJlZUl0ZW1MYWJlbENvbG9yLCBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IsIFRyZWVOb2RlVHlwZSwgfSBmcm9tICcuL3V0aWxzJztcclxuaW1wb3J0IHsgdXNlRm9jdXNMb2NrIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlRm9jdXNMb2NrJztcclxuaW1wb3J0IHsgdXNlSXNJbnZlcnNlIH0gZnJvbSAnLi4vLi4vaW52ZXJzZSc7XHJcbmltcG9ydCB7IFRoZW1lQ29udGV4dCB9IGZyb20gJy4uLy4uL3RoZW1lL1RoZW1lQ29udGV4dCc7XHJcbmltcG9ydCB7IG1lcmdlUmVmcyB9IGZyb20gJy4uLy4uL3V0aWxzJztcclxuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCc7XHJcbmltcG9ydCB7IEluZGV0ZXJtaW5hdGVDaGVja2JveCwgSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLCB9IGZyb20gJy4uL0luZGV0ZXJtaW5hdGVDaGVja2JveCc7XHJcbmltcG9ydCB7IFRyYW5zaXRpb24gfSBmcm9tICcuLi9UcmFuc2l0aW9uJztcclxuY29uc3QgU3R5bGVkVHJlZUl0ZW0gPSBzdHlsZWQubGkgYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDBcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWw3MDB9O1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIGN1cnNvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IocHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMuc2VsZWN0YWJsZVR5cGUsIHByb3BzLm5vZGVUeXBlKX07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcblxuICBwYWRkaW5nLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoKX07XG5cbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcblxuICAgICYgPiAqOmZpcnN0LWNoaWxkIHtcbiAgICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAgICAgb3V0bGluZTogMnB4IHNvbGlkXG4gICAgICAgICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHByb3BzLnRoZW1lLmNvbG9ycy5mb2N1c0ludmVyc2VcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLmZvY3VzfTtcbiAgICB9XG4gIH1cblxuICA+IGRpdjpmaXJzdC1vZi10eXBlIHtcbiAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IHByb3BzLnNlbGVjdGVkICYmIHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyB0cmFuc3BhcmVudGl6ZSgwLjcsIHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsOTAwKVxyXG4gICAgOiBwcm9wcy5zZWxlY3RlZCAmJlxyXG4gICAgICAgIHRyYW5zcGFyZW50aXplKDAuOTIsIHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsOTAwKX07XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6ICR7cHJvcHMgPT4gY2FsY3VsYXRlT2Zmc2V0KHByb3BzLm5vZGVUeXBlLCBwcm9wcy5kZXB0aCwgdHJ1ZSl9O1xuICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6ICR7cHJvcHMgPT4gY2FsY3VsYXRlT2Zmc2V0KHByb3BzLm5vZGVUeXBlLCBwcm9wcy5kZXB0aCwgdHJ1ZSwgdHJ1ZSl9O1xuICAgIHBhZGRpbmctYmxvY2stZW5kOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAyfTtcbiAgICBwYWRkaW5nLWJsb2NrLXN0YXJ0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAyfTtcbiAgICBwYWRkaW5nLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAyfTtcblxuICAgICR7cHJvcHMgPT4gcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgIGNzcyBgXG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcy5pc0ludmVyc2VcclxuICAgICAgICA/IHByb3BzLnRoZW1lLmNvbG9ycy50ZXJ0aWFyeTUwMFxyXG4gICAgICAgIDogcHJvcHMudGhlbWUuY29sb3JzLnByaW1hcnk1MDB9O1xuICAgICAgICAgIGJsb2NrLXNpemU6IDEwMCU7XG4gICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgaW5saW5lLXNpemU6ICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgICAgICAgIGluc2V0LWJsb2NrLXN0YXJ0OiAwO1xuICAgICAgICAgIGluc2V0LWlubGluZS1zdGFydDogMDtcbiAgICAgICAgfVxuICAgICAgYH1cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICR7cHJvcHMgPT4gZ2V0SG92ZXJCYWNrZ3JvdW5kKHtcclxuICAgIGlzRGlzYWJsZWQ6IHByb3BzLmlzRGlzYWJsZWQsXHJcbiAgICBob3ZlckNvbG9yOiBwcm9wcy5ob3ZlckNvbG9yLFxyXG4gICAgaXNJbnZlcnNlOiBwcm9wcy5pc0ludmVyc2UsXHJcbiAgICB0aGVtZTogcHJvcHMudGhlbWUsXHJcbn0pfTtcbiAgICB9XG4gIH1cbmA7XHJcbmZ1bmN0aW9uIGdldEhvdmVyQmFja2dyb3VuZCh7IGlzRGlzYWJsZWQsIGhvdmVyQ29sb3IsIGlzSW52ZXJzZSwgdGhlbWUgfSkge1xyXG4gICAgaWYgKGlzRGlzYWJsZWQpXHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIGlmIChob3ZlckNvbG9yKVxyXG4gICAgICAgIHJldHVybiBob3ZlckNvbG9yO1xyXG4gICAgY29uc3QgdHJhbnNwYXJlbmN5ID0gaXNJbnZlcnNlID8gMC44IDogMC45NTtcclxuICAgIHJldHVybiB0cmFuc3BhcmVudGl6ZSh0cmFuc3BhcmVuY3ksIHRoZW1lLmNvbG9ycy5uZXV0cmFsOTAwKTtcclxufVxyXG5jb25zdCBJY29uV3JhcHBlciA9IHN0eWxlZC5zcGFuIGBcbiAgY29sb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgbWFyZ2luLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzfTtcbiAgbWFyZ2luLWxlZnQ6IDA7XG5cbiAgc3ZnIHtcbiAgICBoZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaWNvblNpemVzLm1lZGl1bX1weDtcbiAgICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pY29uU2l6ZXMubWVkaXVtfXB4O1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIH1cbmA7XHJcbmNvbnN0IFN0eWxlZExhYmVsV3JhcHBlciA9IHN0eWxlZC5zcGFuIGBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGNvbG9yOiAke3Byb3BzID0+IGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIHdpZHRoOiAxMDAlO1xuYDtcclxuY29uc3QgU3R5bGVkRXhwYW5kV3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIG1hcmdpbi1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM307XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLmNvbG9yIHx8XHJcbiAgICBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICBib3JkZXItcmFkaXVzOiAwO1xuICB3aWR0aDogJHsoeyBzaXplLCB0aGVtZSB9KSA9PiBzaXplICE9PSB1bmRlZmluZWQgPyBgJHtzaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fTtcbiAgaGVpZ2h0OiAkeyh7IHNpemUsIHRoZW1lIH0pID0+IHNpemUgIT09IHVuZGVmaW5lZCA/IGAke3NpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9O1xuYDtcclxuY29uc3QgU3R5bGVkQ2hlY2tib3hXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIG1hcmdpbi1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM307XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGRpc3BsYXk6ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2ZsZXgnIDogJ2lubGluZS1mbGV4Jyl9O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogJHtwcm9wcyA9PiBgY2FsYygxMDAlIC0gJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM30pYH07XG5gO1xyXG5jb25zdCBTdHlsZWRJdGVtV3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogJHtwcm9wcyA9PiAocHJvcHMuaGFzQWRkaXRpb25hbENvbnRlbnQgPyAnY29sdW1uJyA6ICdyb3cnKX07XG4gIGFsaWduLWl0ZW1zOiAke3Byb3BzID0+IChwcm9wcy5oYXNDdXN0b21JY29uU2l6ZSA/ICdjZW50ZXInIDogJ2ZsZXgtc3RhcnQnKX07XG4gIGN1cnNvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IocHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMuc2VsZWN0YWJsZSwgcHJvcHMubm9kZVR5cGUpfTtcbmA7XHJcbmNvbnN0IEFkZGl0aW9uYWxDb250ZW50V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tYm90dG9tOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA1fTtcbmA7XHJcbmNvbnN0IFRyZWVJdGVtQ29tcG9uZW50ID0gUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZikgPT4ge1xyXG4gICAgY29uc3QgeyBhZGRpdGlvbmFsQ29udGVudCwgY2hpbGRyZW4sIGhvdmVyQ29sb3IsIGljb24sIGluZGV4OiBpbmRleFByb3AsIGxhYmVsLCBsYWJlbFN0eWxlLCBzdHlsZSwgdGVzdElkLCB0b3BMZXZlbDogdG9wTGV2ZWxQcm9wLCB0cmVlSXRlbVN0eWxlcywgLi4ucmVzdCB9ID0gcHJvcHM7XHJcbiAgICBjb25zdCB0aGVtZSA9IFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KTtcclxuICAgIGNvbnN0IGlzSW52ZXJzZSA9IHVzZUlzSW52ZXJzZSgpO1xyXG4gICAgLy8gUmVhZCBoaWVyYXJjaHkgaW5mb3JtYXRpb24gZnJvbSBjb250ZXh0IChyZWR1Y2VzIGNsb25lRWxlbWVudCBvdmVyaGVhZClcclxuICAgIGNvbnN0IGhpZXJhcmNoeUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCk7XHJcbiAgICAvLyBVc2UgY29udGV4dCB2YWx1ZXMgaWYgcHJvcHMgYXJlIG5vdCBwcm92aWRlZCAoZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpXHJcbiAgICBjb25zdCBpbmRleCA9IGluZGV4UHJvcCAhPT0gdW5kZWZpbmVkID8gaW5kZXhQcm9wIDogaGllcmFyY2h5Q29udGV4dC5pbmRleDtcclxuICAgIGNvbnN0IHRvcExldmVsID0gdG9wTGV2ZWxQcm9wICE9PSB1bmRlZmluZWQgPyB0b3BMZXZlbFByb3AgOiBoaWVyYXJjaHlDb250ZXh0LmlzVG9wTGV2ZWw7XHJcbiAgICAvLyBDb25zdW1lIHNwbGl0IGNvbnRleHRzIGZvciByZWR1Y2VkIHJlLXJlbmRlciBzY29wZVxyXG4gICAgY29uc3QgeyBpdGVtVG9Gb2N1cyB9ID0gUmVhY3QudXNlQ29udGV4dChUcmVlVmlld1NlbGVjdGlvbkNvbnRleHQpO1xyXG4gICAgY29uc3QgeyBoYW5kbGVFeHBhbmRlZENoYW5nZSB9ID0gUmVhY3QudXNlQ29udGV4dChUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQpO1xyXG4gICAgY29uc3QgeyBleHBhbmRJY29uU3R5bGVzLCBoYXNJY29ucywgaXNUb3BMZXZlbFNlbGVjdGFibGUsIHNlbGVjdGFibGUgfSA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZVZpZXdDb25maWdDb250ZXh0KTtcclxuICAgIC8vIFBhc3MgdGhlIHJlc29sdmVkIHZhbHVlcyB0byB1c2VUcmVlSXRlbVxyXG4gICAgY29uc3QgcHJvcHNXaXRoSGllcmFyY2h5ID0ge1xyXG4gICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgIGluZGV4LFxyXG4gICAgICAgIHRvcExldmVsLFxyXG4gICAgICAgIGl0ZW1EZXB0aDogaGllcmFyY2h5Q29udGV4dC5kZXB0aCxcclxuICAgICAgICBwYXJlbnREZXB0aDogaGllcmFyY2h5Q29udGV4dC5wYXJlbnREZXB0aCxcclxuICAgIH07XHJcbiAgICBjb25zdCB7IGNvbnRleHRWYWx1ZSwgaGFuZGxlQ2xpY2ssIGhhbmRsZUtleURvd24gfSA9IHVzZVRyZWVJdGVtKHByb3BzV2l0aEhpZXJhcmNoeSwgZm9yd2FyZGVkUmVmKTtcclxuICAgIGNvbnN0IHsgaXNEaXNhYmxlZCB9ID0gY29udGV4dFZhbHVlO1xyXG4gICAgY29uc3QgeyBjaGVja2JveENoYW5nZUhhbmRsZXIsIGNoZWNrZWRTdGF0dXMsIGV4cGFuZGVkLCBoYXNPd25UcmVlSXRlbXMsIGl0ZW1EZXB0aCwgaXRlbUlkLCByZWYsIHNlbGVjdGVkSXRlbXMsIH0gPSBjb250ZXh0VmFsdWU7XHJcbiAgICBjb25zdCBub2RlVHlwZSA9IGhhc093blRyZWVJdGVtcyA/IFRyZWVOb2RlVHlwZS5icmFuY2ggOiBUcmVlTm9kZVR5cGUubGVhZjtcclxuICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5zaW5nbGVcclxuICAgICAgICA/IHNlbGVjdGVkSXRlbXM/LlswXT8uaXRlbUlkID09PSBpdGVtSWRcclxuICAgICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBhcmlhQ2hlY2tlZFZhbHVlID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLm11bHRpXHJcbiAgICAgICAgPyBjaGVja2VkU3RhdHVzID09PSBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMuaW5kZXRlcm1pbmF0ZVxyXG4gICAgICAgICAgICA/ICdtaXhlZCdcclxuICAgICAgICAgICAgOiBjaGVja2VkU3RhdHVzID09PSBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMuY2hlY2tlZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IFtpc0luc2lkZVRyZWVJdGVtLCBzZXRJc0luc2lkZVRyZWVJdGVtXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xyXG4gICAgY29uc3QgZm9jdXNUcmFwRWxlbWVudCA9IHVzZUZvY3VzTG9jayhpc0luc2lkZVRyZWVJdGVtKTtcclxuICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHMgPSAnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIGFbaHJlZl0sIFt0YWJpbmRleF06bm90KFt0YWJpbmRleD1cIi0xXCJdKSc7XHJcbiAgICBjb25zdCBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzID0gUmVhY3QudXNlQ2FsbGJhY2soKGNvbnRhaW5lciwgc2VsZWN0b3IpID0+IHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShjb250YWluZXIucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpLmZpbHRlcihlbCA9PiAhZWwuaGFzQXR0cmlidXRlKCd0YWJpbmRleCcpIHx8XHJcbiAgICAgICAgICAgIChlbC50YWJJbmRleCAhPT0gdW5kZWZpbmVkICYmIGVsLnRhYkluZGV4ID49IDApKTtcclxuICAgIH0sIFtdKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSBsYWJlbCBhbmQgYWRkaXRpb25hbCBjb250ZW50IG9mIGEgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIFlvdSBjYW4gbmF2aWdhdGUgdGhyb3VnaCBpbnRlcmFjdGl2ZSBlbGVtZW50cyB1c2luZyB0aGUgYFRhYmAga2V5LCBhY3RpdmF0ZSB0aGVtIHdpdGggYEVudGVyYCBvciBgU3BhY2VgLFxyXG4gICAgICogYW5kIGV4aXQgb3V0c2lkZSBhbmQgZm9jdXMgdGhlIHdob2xlIHRyZWUgaXRlbSB3aXRoIGBFc2NhcGVgLlxyXG4gICAgICogKiovXHJcbiAgICBjb25zdCBoYW5kbGVMYWJlbEFuZEFkZGl0aW9uYWxDb250ZW50S2V5RG93biA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQsIHNoaWZ0S2V5IH0gPSBldmVudDtcclxuICAgICAgICBjb25zdCBjdXJyZW50RWxlbWVudCA9IHRhcmdldDtcclxuICAgICAgICBjb25zdCBpc0VudGVyID0ga2V5ID09PSAnRW50ZXInO1xyXG4gICAgICAgIGNvbnN0IGlzU3BhY2UgPSBrZXkgPT09ICcgJztcclxuICAgICAgICBjb25zdCBpc0VzY2FwZSA9IGtleSA9PT0gJ0VzY2FwZSc7XHJcbiAgICAgICAgY29uc3QgaXNUYWIgPSBrZXkgPT09ICdUYWInO1xyXG4gICAgICAgIGNvbnN0IGlzQWN0aXZhdGlvbktleSA9IGlzRW50ZXIgfHwgaXNTcGFjZTtcclxuICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC5jbG9zZXN0KGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgIC8vIElmIHRoZSBrZXkgaXMgYFRhYmAsIHdlIG5hdmlnYXRlIHRocm91Z2ggaW50ZXJhY3RpdmUgZWxlbWVudHMgaW5zaWRlIHRoZSB0cmVlIGl0ZW1cclxuICAgICAgICBpZiAoaXNUYWIgJiYgaXNJbnNpZGVUcmVlSXRlbSkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIC8vIEZpbHRlciBsaXN0IG9mIGludGVyYWN0aXZlIGVsZW1lbnRzIHdoaWNoIGFyZSBvbmx5IGluY2x1ZGVkIGZvciBjdXJyZW50IHRyZWUgaXRlbVxyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VHJlZUl0ZW1JbnRlcmFjdGl2ZUVsZW1lbnRzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QuZmlsdGVyKGVsID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3RUcmVlSXRlbSA9IGVsLmNsb3Nlc3QoJ1tyb2xlPVwidHJlZWl0ZW1cIl0nKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjbG9zZXN0VHJlZUl0ZW0gPT09IHRyZWVJdGVtUmVmLmN1cnJlbnQ7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBjdXJyZW50VHJlZUl0ZW1JbnRlcmFjdGl2ZUVsZW1lbnRzLmluZGV4T2YoY3VycmVudEVsZW1lbnQpO1xyXG4gICAgICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSBzaGlmdEtleSA/IC0xIDogMTtcclxuICAgICAgICAgICAgY29uc3QgdG90YWwgPSBjdXJyZW50VHJlZUl0ZW1JbnRlcmFjdGl2ZUVsZW1lbnRzLmxlbmd0aDtcclxuICAgICAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gKGN1cnJlbnRJbmRleCArIGRpcmVjdGlvbiArIHRvdGFsKSAlIHRvdGFsO1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50VG9Gb2N1cyA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHNbbmV4dEluZGV4XTtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnRUb0ZvY3VzKSB7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGVsZW1lbnRUb0ZvY3VzLmZvY3VzKCksIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gUHJlc3NpbmcgYEVudGVyYCBvciBgU3BhY2VgIG9uIGFuIGludGVyYWN0aXZlIGVsZW1lbnQgd2lsbCB0cmlnZ2VyIGl0cyBjbGljayBldmVudFxyXG4gICAgICAgIGlmIChpc0FjdGl2YXRpb25LZXkgJiYgaW50ZXJhY3RpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGludGVyYWN0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBNb3ZlcyBmb2N1cyBvdXRzaWRlIHRoZSB0cmVlIGl0ZW0gYW5kIGZvY3VzZXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYgd2hlbiBgRXNjYXBlYCBpcyBwcmVzc2VkXHJcbiAgICAgICAgaWYgKGlzRXNjYXBlKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKGZhbHNlKTtcclxuICAgICAgICAgICAgY29uc3QgdHJlZUl0ZW1Ob2RlID0gdHJlZUl0ZW1SZWYuY3VycmVudDtcclxuICAgICAgICAgICAgaWYgKHRyZWVJdGVtTm9kZSkge1xyXG4gICAgICAgICAgICAgICAgdHJlZUl0ZW1Ob2RlLmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH0sIFtnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzLCBpbnRlcmFjdGl2ZUVsZW1lbnRzLCBpc0luc2lkZVRyZWVJdGVtXSk7XHJcbiAgICBjb25zdCBoYW5kbGVPbkNsaWNrID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgYVtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFtyb2xlPVwibWVudWl0ZW1cIl0nKTtcclxuICAgICAgICAvLyBQcmV2ZW50aW5nIHNlbGVjdGluZyB0aGUgaXRlbSB3aGVuIGNsaWNraW5nIG9uIGludGVyYWN0aXZlIGVsZW1lbnRzIHdoZW4gYHNlbGVjdGFibGVgIGlzIGBzaW5nbGVgXHJcbiAgICAgICAgaWYgKGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSkge1xyXG4gICAgICAgICAgICBoYW5kbGVDbGljayhldmVudCwgaXRlbUlkKTtcclxuICAgICAgICB9XHJcbiAgICB9LCBbaXNEaXNhYmxlZCwgc2VsZWN0YWJsZSwgaGFuZGxlQ2xpY2ssIGl0ZW1JZF0pO1xyXG4gICAgY29uc3QgZGVmYXVsdEljb24gPSBub2RlVHlwZSA9PT0gVHJlZU5vZGVUeXBlLmJyYW5jaCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEZvbGRlckljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KEFydGljbGVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSk7XHJcbiAgICBjb25zdCBsYWJlbFRleHQgPSAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRMYWJlbFdyYXBwZXIsIHsgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgc3R5bGU6IGxhYmVsU3R5bGUsIGlkOiBgJHtpdGVtSWR9LWxhYmVsYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1sYWJlbGAgfSxcclxuICAgICAgICBoYXNJY29ucyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uV3JhcHBlciwgeyBpc0ludmVyc2U6IGlzSW52ZXJzZSwgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWljb25gIH0sIGljb24gfHwgZGVmYXVsdEljb24pKSxcclxuICAgICAgICBsYWJlbCkpO1xyXG4gICAgY29uc3QgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCA9IGFkZGl0aW9uYWxDb250ZW50ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkaXRpb25hbENvbnRlbnRXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaWQ6IGAke2l0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgIH0sIGFkZGl0aW9uYWxDb250ZW50KSkgOiBudWxsO1xyXG4gICAgLy8gTWVtb2l6ZSBpbmxpbmUgc3R5bGUgb2JqZWN0cyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHJlLXJlbmRlcnNcclxuICAgIGNvbnN0IGNoZWNrYm94SW5wdXRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHsgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzIH0pLCBbdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDNdKTtcclxuICAgIGNvbnN0IGNoZWNrYm94TGFiZWxTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcclxuICAgICAgICBwYWRkaW5nOiAwLFxyXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICB9KSwgW10pO1xyXG4gICAgLy8gUHJvcHMgc2hhcmVkIGJ5IENoZWNrYm94IGFuZCBJbmRldGVybWluYXRlQ2hlY2tib3hcclxuICAgIGNvbnN0IGNoZWNrYm94UHJvcHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaGlkZUZvY3VzOiB0cnVlLFxyXG4gICAgICAgIGlkOiBgJHtpdGVtSWR9LWNoZWNrYm94YCxcclxuICAgICAgICBpbnB1dFN0eWxlOiBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgbGFiZWxTdHlsZTogY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dDogbGFiZWxUZXh0LFxyXG4gICAgICAgIG9uQ2hhbmdlOiBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxyXG4gICAgICAgIHRlc3RJZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICB9KSwgW1xyXG4gICAgICAgIGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaXRlbUlkLFxyXG4gICAgICAgIGNoZWNrYm94SW5wdXRTdHlsZSxcclxuICAgICAgICBjaGVja2JveExhYmVsU3R5bGUsXHJcbiAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgIGNoZWNrYm94Q2hhbmdlSGFuZGxlcixcclxuICAgIF0pO1xyXG4gICAgY29uc3Qgb25FeHBhbmRlZENsaWNrZWQgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGhhbmRsZUV4cGFuZGVkQ2hhbmdlKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgfSwgW2hhbmRsZUV4cGFuZGVkQ2hhbmdlLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGhhbmRsZUV4cGFuZENsaWNrID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIG9uRXhwYW5kZWRDbGlja2VkKGV2ZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9LCBbaXNEaXNhYmxlZCwgb25FeHBhbmRlZENsaWNrZWRdKTtcclxuICAgIGNvbnN0IHRhYkluZGV4ID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1Ub0ZvY3VzID09PSBpdGVtSWQgPyAwIDogLTE7XHJcbiAgICB9LCBbaXNEaXNhYmxlZCwgaXRlbVRvRm9jdXMsIGl0ZW1JZF0pO1xyXG4gICAgY29uc3Qgc2hvdWxkU2hvd0NoZWNrYm94ID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLm11bHRpICYmXHJcbiAgICAgICAgKGlzVG9wTGV2ZWxTZWxlY3RhYmxlICE9PSBmYWxzZSB8fCAhdG9wTGV2ZWwpO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiB3aXRoaW4gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBQcmVzc2luZyBgQ3RybCArIEVudGVyYCBvciBgQ29tbWFuZCArIEVudGVyYCBmb2N1c2VzIHRoZSBmaXJzdCBpbnRlcmFjdGl2ZSBlbGVtZW50IHdpdGhpbiB0aGUgdHJlZSBpdGVtXHJcbiAgICAgKiBhbmQgbG9ja3MgZm9jdXMgaW5zaWRlIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogSWYgdGhlIGZvY3VzIGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBpdCBoYW5kbGVzIGtleSBldmVudHMgZm9yIGludGVyYWN0aW9uIGVsZW1lbnRzLlxyXG4gICAgICpcclxuICAgICAqIEl0IGFsc28gaGFuZGxlcyB0aGUgb3RoZXIga2V5cyB0byB0cmlnZ2VyIHRoZSBjbGljayBldmVudCBvbiB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICogKiovXHJcbiAgICBjb25zdCBvbktleURvd25IYW5kbGVyID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBrZXksIHRhcmdldCwgY3VycmVudFRhcmdldCB9ID0gZXZlbnQ7XHJcbiAgICAgICAgY29uc3QgaXNFbnRlciA9IGtleSA9PT0gJ0VudGVyJztcclxuICAgICAgICBjb25zdCBpc0N0cmxPckNvbW1hbmQgPSBldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXk7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsRW50ZXIgPSBpc0N0cmxPckNvbW1hbmQgJiYgaXNFbnRlcjtcclxuICAgICAgICAvLyBJZiB0aGUga2V5IGlzIEN0cmwgKyBFbnRlciBvciBDb21tYW5kICsgRW50ZXIsIGZvY3VzIHRoZSBmaXJzdCBpbnRlcmFjdGl2ZSBlbGVtZW50XHJcbiAgICAgICAgLy8gYW5kIGxvY2sgZm9jdXMgaW5zaWRlIHRoZSB0cmVlIGl0ZW1cclxuICAgICAgICBpZiAoaXNDdHJsRW50ZXIgJiYgdGFyZ2V0ID09PSBjdXJyZW50VGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIHNldElzSW5zaWRlVHJlZUl0ZW0odHJ1ZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHNMaXN0ID0gZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyhjdXJyZW50VGFyZ2V0LCBpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFRvRm9jdXMgPSBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdFswXTtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnRUb0ZvY3VzKSB7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50VG9Gb2N1cy5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBFbnN1cmUgdmFsaWQgQ1NTIHNlbGVjdG9ycyBieSBlc2NhcGluZyBzcGVjaWFsIGNoYXJhY3RlcnMgKGUuZy4sIHBlcmlvZHMgaW4gaXRlbUlkKVxyXG4gICAgICAgIGNvbnN0IHNhZmVJdGVtSWQgPSBDU1MuZXNjYXBlKGl0ZW1JZCk7XHJcbiAgICAgICAgY29uc3QgaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQgPSB0YXJnZXQuY2xvc2VzdChgIyR7c2FmZUl0ZW1JZH0tbGFiZWwsICMke3NhZmVJdGVtSWR9LWFkZGl0aW9uYWxjb250ZW50d3JhcHBlcmApO1xyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgd2l0aGluIHRoZSBsYWJlbCBvciBhZGRpdGlvbmFsIGNvbnRlbnQsIGhhbmRsZSBrZXkgZXZlbnRzIGZvciB0aG9zZSBhcmVhc1xyXG4gICAgICAgIGlmIChpc1dpdGhpbkxhYmVsT3JBZGRpdGlvbmFsQ29udGVudCkge1xyXG4gICAgICAgICAgICBoYW5kbGVMYWJlbEFuZEFkZGl0aW9uYWxDb250ZW50S2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBpcyB0aGUgdHJlZSBpdGVtIGl0c2VsZiwgaGFuZGxlIGtleSBkb3duIGZvciB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBoYW5kbGVLZXlEb3duKGV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH0sIFtcclxuICAgICAgICBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzLFxyXG4gICAgICAgIGludGVyYWN0aXZlRWxlbWVudHMsXHJcbiAgICAgICAgaXRlbUlkLFxyXG4gICAgICAgIGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duLFxyXG4gICAgICAgIGhhbmRsZUtleURvd24sXHJcbiAgICBdKTtcclxuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChUcmVlSXRlbUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IGNvbnRleHRWYWx1ZSB9LFxyXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBzdHlsZTogdHJlZUl0ZW1TdHlsZXMgfSxcclxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRUcmVlSXRlbSwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwgeyBcImFyaWEtZXhwYW5kZWRcIjogaGFzT3duVHJlZUl0ZW1zID8gZXhwYW5kZWQgOiBudWxsLCBcImFyaWEtc2VsZWN0ZWRcIjogc2VsZWN0ZWRJdGVtLCBcImFyaWEtY2hlY2tlZFwiOiBzaG91bGRTaG93Q2hlY2tib3ggPyBhcmlhQ2hlY2tlZFZhbHVlIDogbnVsbCwgXCJkYXRhLXRlc3RpZFwiOiB0ZXN0SWQsIGRlcHRoOiBpdGVtRGVwdGgsIGhhc093blRyZWVJdGVtczogaGFzT3duVHJlZUl0ZW1zLCBpZDogaXRlbUlkLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgbm9kZVR5cGU6IG5vZGVUeXBlLCByb2xlOiBcInRyZWVpdGVtXCIsIHNlbGVjdGFibGVUeXBlOiBzZWxlY3RhYmxlLCBzZWxlY3RlZDogc2VsZWN0ZWRJdGVtLCB0aGVtZTogdGhlbWUsIHRhYkluZGV4OiB0YWJJbmRleCwgb25LZXlEb3duOiBvbktleURvd25IYW5kbGVyLCByZWY6IHRyZWVJdGVtUmVmLCBob3ZlckNvbG9yOiBob3ZlckNvbG9yIH0pLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRJdGVtV3JhcHBlciwgeyBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCA/PyBpdGVtSWR9LWl0ZW13cmFwcGVyYCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzQWRkaXRpb25hbENvbnRlbnQ6ICEhYWRkaXRpb25hbENvbnRlbnQsIGhhc0N1c3RvbUljb25TaXplOiAhIWV4cGFuZEljb25TdHlsZXM/LnNpemUsIGlkOiBgJHtpdGVtSWR9LWl0ZW13cmFwcGVyYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG5vZGVUeXBlOiBub2RlVHlwZSwgc2VsZWN0YWJsZTogc2VsZWN0YWJsZSwgc3R5bGU6IHN0eWxlLCB0aGVtZTogdGhlbWUsIHJlZjogbWVyZ2VSZWZzKHJlZiwgZm9jdXNUcmFwRWxlbWVudCksIG9uQ2xpY2s6IGhhbmRsZU9uQ2xpY2sgfSxcclxuICAgICAgICAgICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkRXhwYW5kV3JhcHBlciwgeyBcImFyaWEtaGlkZGVuXCI6IEJvb2xlYW4oIWV4cGFuZGVkKSwgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSwgY29sb3I6IGV4cGFuZEljb25TdHlsZXM/LmNvbG9yLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWV4cGFuZGAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBvbkNsaWNrOiBoYW5kbGVFeHBhbmRDbGljaywgdGhlbWU6IHRoZW1lIH0sIGV4cGFuZGVkID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRXhwYW5kTW9yZUljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZXZyb25SaWdodEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSkpLFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3VsZFNob3dDaGVja2JveCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZENoZWNrYm94V3JhcHBlciwgeyBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgdGhlbWU6IHRoZW1lIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEluZGV0ZXJtaW5hdGVDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBzdGF0dXM6IGNoZWNrZWRTdGF0dXMgfSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IGNoZWNrZWQ6IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4oY2hlY2tlZFN0YXR1cykgfSkpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpKSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkLCBjaGlsZEluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkPy50eXBlICE9PSBUcmVlSXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFBhc3MgaGllcmFyY2h5IGluZm8gdGhyb3VnaCBjb250ZXh0IGluc3RlYWQgb2YgY2xvbmVFbGVtZW50XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmVzdGVkSGllcmFyY2h5VmFsdWUgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoOiBpdGVtRGVwdGggKyAxLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnREZXB0aDogaXRlbURlcHRoLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RvcExldmVsOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGNoaWxkSW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJhbnNpdGlvbiwgeyBpc09wZW46IGV4cGFuZGVkLCB1bm1vdW50T25FeGl0OiB0cnVlIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiLCB7IHJvbGU6IFwiZ3JvdXBcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQuUHJvdmlkZXIsIHsga2V5OiBjaGlsZC5wcm9wcy5pdGVtSWQsIHZhbHVlOiBuZXN0ZWRIaWVyYXJjaHlWYWx1ZSB9LCBjaGlsZCkpKSk7XHJcbiAgICAgICAgICAgICAgICB9KSkpKSk7XHJcbn0pO1xyXG4vKipcclxuICogQ3VzdG9tIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIFJlYWN0Lm1lbW9cclxuICogT25seSByZS1yZW5kZXIgVHJlZUl0ZW0gd2hlbiByZWxldmFudCBwcm9wcyBjaGFuZ2VcclxuICovXHJcbmZ1bmN0aW9uIGFyZVByb3BzRXF1YWwocHJldlByb3BzLCBuZXh0UHJvcHMpIHtcclxuICAgIC8vIENoZWNrIGlmIGl0ZW1JZCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLml0ZW1JZCAhPT0gbmV4dFByb3BzLml0ZW1JZCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGxhYmVsIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMubGFiZWwgIT09IG5leHRQcm9wcy5sYWJlbCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGRpc2FibGVkIHN0YXRlIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaXNEaXNhYmxlZCAhPT0gbmV4dFByb3BzLmlzRGlzYWJsZWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBpY29uIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaWNvbiAhPT0gbmV4dFByb3BzLmljb24pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBhZGRpdGlvbmFsIGNvbnRlbnQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5hZGRpdGlvbmFsQ29udGVudCAhPT0gbmV4dFByb3BzLmFkZGl0aW9uYWxDb250ZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaG92ZXIgY29sb3IgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5ob3ZlckNvbG9yICE9PSBuZXh0UHJvcHMuaG92ZXJDb2xvcikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGNoaWxkcmVuIGNoYW5nZWQgKGZvciBuZXN0ZWQgdHJlZSBpdGVtcylcclxuICAgIC8vIFVzaW5nIHR5cGUgYXNzZXJ0aW9uIHNpbmNlIGNoaWxkcmVuIGNvbWVzIGZyb20gUmVhY3QuSFRNTEF0dHJpYnV0ZXNcclxuICAgIGlmIChwcmV2UHJvcHMuY2hpbGRyZW4gIT09IG5leHRQcm9wcy5jaGlsZHJlbikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIHN0eWxlcyBjaGFuZ2VkXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBzdHlsZSBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLnN0eWxlICE9PSBuZXh0UHJvcHMuc3R5bGUpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsU3R5bGUgIT09IG5leHRQcm9wcy5sYWJlbFN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy50cmVlSXRlbVN0eWxlcyAhPT0gbmV4dFByb3BzLnRyZWVJdGVtU3R5bGVzKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQWxsIHJlbGV2YW50IHByb3BzIGFyZSBlcXVhbCwgc2tpcCByZS1yZW5kZXJcclxuICAgIHJldHVybiB0cnVlO1xyXG59XHJcbi8qKlxyXG4gKiBNZW1vaXplZCBUcmVlSXRlbSBjb21wb25lbnRcclxuICogT25seSByZS1yZW5kZXJzIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlLCBpbXByb3ZpbmcgcGVyZm9ybWFuY2UgZm9yIGxhcmdlIHRyZWVzXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW0gPSBSZWFjdC5tZW1vKFRyZWVJdGVtQ29tcG9uZW50LCBhcmVQcm9wc0VxdWFsKTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VHJlZUl0ZW0uanMubWFwIl19 */"));
22827
23337
  }, " &:hover{background:", function (props) {
22828
23338
  return getHoverBackground({
22829
23339
  isDisabled: props.isDisabled,
@@ -22831,7 +23341,7 @@ var StyledTreeItem = /*#__PURE__*/_styled("li", {
22831
23341
  isInverse: props.isInverse,
22832
23342
  theme: props.theme
22833
23343
  });
22834
- }, ";}}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQmlDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3Q29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyB1c2VJc0ludmVyc2UgfSBmcm9tICcuLi8uLi9pbnZlcnNlJztcclxuaW1wb3J0IHsgVGhlbWVDb250ZXh0IH0gZnJvbSAnLi4vLi4vdGhlbWUvVGhlbWVDb250ZXh0JztcclxuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCc7XHJcbmltcG9ydCB7IEluZGV0ZXJtaW5hdGVDaGVja2JveCwgSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLCB9IGZyb20gJy4uL0luZGV0ZXJtaW5hdGVDaGVja2JveCc7XHJcbmltcG9ydCB7IFRyYW5zaXRpb24gfSBmcm9tICcuLi9UcmFuc2l0aW9uJztcclxuaW1wb3J0IHsgY2FsY3VsYXRlT2Zmc2V0LCBnZXRUcmVlSXRlbUxhYmVsQ29sb3IsIGdldFRyZWVJdGVtV3JhcHBlckN1cnNvciwgVHJlZU5vZGVUeXBlLCB9IGZyb20gJy4vdXRpbHMnO1xyXG5pbXBvcnQgeyB1c2VGb2N1c0xvY2sgfSBmcm9tICcuLi8uLi9ob29rcy91c2VGb2N1c0xvY2snO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmNvbnN0IFN0eWxlZFRyZWVJdGVtID0gc3R5bGVkLmxpIGBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMTAwXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsNzAwfTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGVUeXBlLCBwcm9wcy5ub2RlVHlwZSl9O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6ICR7cHJvcHMgPT4gY2FsY3VsYXRlT2Zmc2V0KHByb3BzLm5vZGVUeXBlLCBwcm9wcy5kZXB0aCl9O1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAmID4gKjpmaXJzdC1jaGlsZCB7XG4gICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgIG91dGxpbmU6IDJweCBzb2xpZFxuICAgICAgICAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXNJbnZlcnNlXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5mb2N1c307XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUpfTtcbiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIHRydWUpfTtcbiAgICBwYWRkaW5nLWJsb2NrLWVuZDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1ibG9jay1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG5cbiAgICAke3Byb3BzID0+IHByb3BzLnNlbGVjdGVkICYmXHJcbiAgICBjc3MgYFxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMuaXNJbnZlcnNlXHJcbiAgICAgICAgPyBwcm9wcy50aGVtZS5jb2xvcnMudGVydGlhcnk1MDBcclxuICAgICAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5wcmltYXJ5NTAwfTtcbiAgICAgICAgICBibG9jay1zaXplOiAxMDAlO1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIGlubGluZS1zaXplOiAke3Byb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAyfTtcbiAgICAgICAgICBpbnNldC1ibG9jay1zdGFydDogMDtcbiAgICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgICAgIH1cbiAgICAgIGB9XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IGdldEhvdmVyQmFja2dyb3VuZCh7XHJcbiAgICBpc0Rpc2FibGVkOiBwcm9wcy5pc0Rpc2FibGVkLFxyXG4gICAgaG92ZXJDb2xvcjogcHJvcHMuaG92ZXJDb2xvcixcclxuICAgIGlzSW52ZXJzZTogcHJvcHMuaXNJbnZlcnNlLFxyXG4gICAgdGhlbWU6IHByb3BzLnRoZW1lLFxyXG59KX07XG4gICAgfVxuICB9XG5gO1xyXG5mdW5jdGlvbiBnZXRIb3ZlckJhY2tncm91bmQoeyBpc0Rpc2FibGVkLCBob3ZlckNvbG9yLCBpc0ludmVyc2UsIHRoZW1lIH0pIHtcclxuICAgIGlmIChpc0Rpc2FibGVkKVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICBpZiAoaG92ZXJDb2xvcilcclxuICAgICAgICByZXR1cm4gaG92ZXJDb2xvcjtcclxuICAgIGNvbnN0IHRyYW5zcGFyZW5jeSA9IGlzSW52ZXJzZSA/IDAuOCA6IDAuOTU7XHJcbiAgICByZXR1cm4gdHJhbnNwYXJlbnRpemUodHJhbnNwYXJlbmN5LCB0aGVtZS5jb2xvcnMubmV1dHJhbDkwMCk7XHJcbn1cclxuY29uc3QgSWNvbldyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGNvbG9yOiAke3Byb3BzID0+IGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIG1hcmdpbi1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM307XG4gIG1hcmdpbi1sZWZ0OiAwO1xuXG4gIHN2ZyB7XG4gICAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaWNvblNpemVzLm1lZGl1bX1weDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB9XG5gO1xyXG5jb25zdCBTdHlsZWRMYWJlbFdyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICB3aWR0aDogMTAwJTtcbmA7XHJcbmNvbnN0IFN0eWxlZEV4cGFuZFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5jb2xvciB8fFxyXG4gICAgZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgd2lkdGg6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG4gIGhlaWdodDogJHsoeyBzaXplLCB0aGVtZSB9KSA9PiBzaXplICE9PSB1bmRlZmluZWQgPyBgJHtzaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXgsIGxhYmVsLCBsYWJlbFN0eWxlLCBzdHlsZSwgdGVzdElkLCB0b3BMZXZlbCwgdHJlZUl0ZW1TdHlsZXMsIC4uLnJlc3QgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XHJcbiAgICBjb25zdCBpc0ludmVyc2UgPSB1c2VJc0ludmVyc2UoKTtcclxuICAgIGNvbnN0IHsgZXhwYW5kSWNvblN0eWxlcywgaGFuZGxlRXhwYW5kZWRDaGFuZ2UsIGhhc0ljb25zLCBpdGVtVG9Gb2N1cywgaXNUb3BMZXZlbFNlbGVjdGFibGUsIHNlbGVjdGFibGUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNvbnRleHRWYWx1ZSwgaGFuZGxlQ2xpY2ssIGhhbmRsZUtleURvd24gfSA9IHVzZVRyZWVJdGVtKHByb3BzLCBmb3J3YXJkZWRSZWYpO1xyXG4gICAgY29uc3QgeyBpc0Rpc2FibGVkIH0gPSBjb250ZXh0VmFsdWU7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHBhcmVudERlcHRoLCByZWYsIHNlbGVjdGVkSXRlbXMsIH0gPSBjb250ZXh0VmFsdWU7XHJcbiAgICBjb25zdCBub2RlVHlwZSA9IGhhc093blRyZWVJdGVtcyA/IFRyZWVOb2RlVHlwZS5icmFuY2ggOiBUcmVlTm9kZVR5cGUubGVhZjtcclxuICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5zaW5nbGVcclxuICAgICAgICA/IHNlbGVjdGVkSXRlbXM/LlswXT8uaXRlbUlkID09PSBpdGVtSWRcclxuICAgICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBhcmlhQ2hlY2tlZFZhbHVlID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLm11bHRpXHJcbiAgICAgICAgPyBjaGVja2VkU3RhdHVzID09PSBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMuaW5kZXRlcm1pbmF0ZVxyXG4gICAgICAgICAgICA/ICdtaXhlZCdcclxuICAgICAgICAgICAgOiBjaGVja2VkU3RhdHVzID09PSBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMuY2hlY2tlZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IFtpc0luc2lkZVRyZWVJdGVtLCBzZXRJc0luc2lkZVRyZWVJdGVtXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xyXG4gICAgY29uc3QgZm9jdXNUcmFwRWxlbWVudCA9IHVzZUZvY3VzTG9jayhpc0luc2lkZVRyZWVJdGVtKTtcclxuICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHMgPSAnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIGFbaHJlZl0sIFt0YWJpbmRleF06bm90KFt0YWJpbmRleD1cIi0xXCJdKSc7XHJcbiAgICBjb25zdCBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzID0gKGNvbnRhaW5lciwgc2VsZWN0b3IpID0+IHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShjb250YWluZXIucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpLmZpbHRlcihlbCA9PiAhZWwuaGFzQXR0cmlidXRlKCd0YWJpbmRleCcpIHx8XHJcbiAgICAgICAgICAgIChlbC50YWJJbmRleCAhPT0gdW5kZWZpbmVkICYmIGVsLnRhYkluZGV4ID49IDApKTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgbGFiZWwgYW5kIGFkZGl0aW9uYWwgY29udGVudCBvZiBhIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBZb3UgY2FuIG5hdmlnYXRlIHRocm91Z2ggaW50ZXJhY3RpdmUgZWxlbWVudHMgdXNpbmcgdGhlIGBUYWJgIGtleSwgYWN0aXZhdGUgdGhlbSB3aXRoIGBFbnRlcmAgb3IgYFNwYWNlYCxcclxuICAgICAqIGFuZCBleGl0IG91dHNpZGUgYW5kIGZvY3VzIHRoZSB3aG9sZSB0cmVlIGl0ZW0gd2l0aCBgRXNjYXBlYC5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3QgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24gPSAoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0LCBzaGlmdEtleSB9ID0gZXZlbnQ7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSB0YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaXNFbnRlciA9IGtleSA9PT0gJ0VudGVyJztcclxuICAgICAgICBjb25zdCBpc1NwYWNlID0ga2V5ID09PSAnICc7XHJcbiAgICAgICAgY29uc3QgaXNFc2NhcGUgPSBrZXkgPT09ICdFc2NhcGUnO1xyXG4gICAgICAgIGNvbnN0IGlzVGFiID0ga2V5ID09PSAnVGFiJztcclxuICAgICAgICBjb25zdCBpc0FjdGl2YXRpb25LZXkgPSBpc0VudGVyIHx8IGlzU3BhY2U7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdChpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAvLyBJZiB0aGUga2V5IGlzIGBUYWJgLCB3ZSBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzVGFiICYmIGlzSW5zaWRlVHJlZUl0ZW0pIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICAvLyBGaWx0ZXIgbGlzdCBvZiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGljaCBhcmUgb25seSBpbmNsdWRlZCBmb3IgY3VycmVudCB0cmVlIGl0ZW1cclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0LmZpbHRlcihlbCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0VHJlZUl0ZW0gPSBlbC5jbG9zZXN0KCdbcm9sZT1cInRyZWVpdGVtXCJdJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdFRyZWVJdGVtID09PSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5pbmRleE9mKGN1cnJlbnRFbGVtZW50KTtcclxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gc2hpZnRLZXkgPyAtMSA6IDE7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGNvbnN0IG5leHRJbmRleCA9IChjdXJyZW50SW5kZXggKyBkaXJlY3Rpb24gKyB0b3RhbCkgJSB0b3RhbDtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFRvRm9jdXMgPSBjdXJyZW50VHJlZUl0ZW1JbnRlcmFjdGl2ZUVsZW1lbnRzW25leHRJbmRleF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBlbGVtZW50VG9Gb2N1cy5mb2N1cygpLCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFByZXNzaW5nIGBFbnRlcmAgb3IgYFNwYWNlYCBvbiBhbiBpbnRlcmFjdGl2ZSBlbGVtZW50IHdpbGwgdHJpZ2dlciBpdHMgY2xpY2sgZXZlbnRcclxuICAgICAgICBpZiAoaXNBY3RpdmF0aW9uS2V5ICYmIGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTW92ZXMgZm9jdXMgb3V0c2lkZSB0aGUgdHJlZSBpdGVtIGFuZCBmb2N1c2VzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmIHdoZW4gYEVzY2FwZWAgaXMgcHJlc3NlZFxyXG4gICAgICAgIGlmIChpc0VzY2FwZSkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbShmYWxzZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRyZWVJdGVtTm9kZSA9IHRyZWVJdGVtUmVmLmN1cnJlbnQ7XHJcbiAgICAgICAgICAgIGlmICh0cmVlSXRlbU5vZGUpIHtcclxuICAgICAgICAgICAgICAgIHRyZWVJdGVtTm9kZS5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaGFuZGxlT25DbGljayA9IChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoJ2J1dHRvbiwgW3JvbGU9XCJidXR0b25cIl0sIGFbaHJlZl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbcm9sZT1cIm1lbnVpdGVtXCJdJyk7XHJcbiAgICAgICAgLy8gUHJldmVudGluZyBzZWxlY3RpbmcgdGhlIGl0ZW0gd2hlbiBjbGlja2luZyBvbiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGVuIGBzZWxlY3RhYmxlYCBpcyBgc2luZ2xlYFxyXG4gICAgICAgIGlmIChpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5zaW5nbGUpIHtcclxuICAgICAgICAgICAgaGFuZGxlQ2xpY2soZXZlbnQsIGl0ZW1JZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gbm9kZVR5cGUgPT09IFRyZWVOb2RlVHlwZS5icmFuY2ggPyAoUmVhY3QuY3JlYXRlRWxlbWVudChGb2xkZXJJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChBcnRpY2xlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUgfSkpO1xyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkTGFiZWxXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHN0eWxlOiBsYWJlbFN0eWxlLCBpZDogYCR7aXRlbUlkfS1sYWJlbGAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tbGFiZWxgIH0sXHJcbiAgICAgICAgaGFzSWNvbnMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbldyYXBwZXIsIHsgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1pY29uYCB9LCBpY29uIHx8IGRlZmF1bHRJY29uKSksXHJcbiAgICAgICAgbGFiZWwpKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBhZGRpdGlvbmFsQ29udGVudCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEFkZGl0aW9uYWxDb250ZW50V3JhcHBlciwgeyB0aGVtZTogdGhlbWUsIGlkOiBgJHtpdGVtSWR9LWFkZGl0aW9uYWxjb250ZW50d3JhcHBlcmAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkID8/IGl0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCB9LCBhZGRpdGlvbmFsQ29udGVudCkpIDogbnVsbDtcclxuICAgIC8vIFByb3BzIHNoYXJlZCBieSBDaGVja2JveCBhbmQgSW5kZXRlcm1pbmF0ZUNoZWNrYm94XHJcbiAgICBjb25zdCBjaGVja2JveFByb3BzID0ge1xyXG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxyXG4gICAgICAgIGhpZGVGb2N1czogdHJ1ZSxcclxuICAgICAgICBpZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICAgICAgaW5wdXRTdHlsZTogeyBtYXJnaW5SaWdodDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDMgfSxcclxuICAgICAgICBsYWJlbFN0eWxlOiB7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDAsXHJcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBsYWJlbFRleHQ6IGxhYmVsVGV4dCxcclxuICAgICAgICBvbkNoYW5nZTogY2hlY2tib3hDaGFuZ2VIYW5kbGVyLFxyXG4gICAgICAgIHRhYkluZGV4OiAtMSxcclxuICAgICAgICB0ZXN0SWQ6IGAke2l0ZW1JZH0tY2hlY2tib3hgLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IG9uRXhwYW5kZWRDbGlja2VkID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBoYW5kbGVFeHBhbmRlZENoYW5nZShldmVudCwgaXRlbUlkKTtcclxuICAgIH07XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVG9Gb2N1cyA9PT0gaXRlbUlkID8gMCA6IC0xO1xyXG4gICAgfSwgW2lzRGlzYWJsZWQsIGl0ZW1Ub0ZvY3VzLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IHNob3VsZFNob3dDaGVja2JveCA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSAmJlxyXG4gICAgICAgIChpc1RvcExldmVsU2VsZWN0YWJsZSAhPT0gZmFsc2UgfHwgIXRvcExldmVsKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogUHJlc3NpbmcgYEN0cmwgKyBFbnRlcmAgb3IgYENvbW1hbmQgKyBFbnRlcmAgZm9jdXNlcyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudCB3aXRoaW4gdGhlIHRyZWUgaXRlbVxyXG4gICAgICogYW5kIGxvY2tzIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBmb2N1cyBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaXQgaGFuZGxlcyBrZXkgZXZlbnRzIGZvciBpbnRlcmFjdGlvbiBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBJdCBhbHNvIGhhbmRsZXMgdGhlIG90aGVyIGtleXMgdG8gdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsT3JDb21tYW5kID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5O1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybEVudGVyID0gaXNDdHJsT3JDb21tYW5kICYmIGlzRW50ZXI7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBDdHJsICsgRW50ZXIgb3IgQ29tbWFuZCArIEVudGVyLCBmb2N1cyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudFxyXG4gICAgICAgIC8vIGFuZCBsb2NrIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzQ3RybEVudGVyICYmIHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3RbMF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHZhbGlkIENTUyBzZWxlY3RvcnMgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuLCBwZXJpb2RzIGluIGl0ZW1JZClcclxuICAgICAgICBjb25zdCBzYWZlSXRlbUlkID0gQ1NTLmVzY2FwZShpdGVtSWQpO1xyXG4gICAgICAgIGNvbnN0IGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50ID0gdGFyZ2V0LmNsb3Nlc3QoYCMke3NhZmVJdGVtSWR9LWxhYmVsLCAjJHtzYWZlSXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgKTtcclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBoYW5kbGUga2V5IGV2ZW50cyBmb3IgdGhvc2UgYXJlYXNcclxuICAgICAgICBpZiAoaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYsIGhhbmRsZSBrZXkgZG93biBmb3IgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgaGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyZWVJdGVtQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogY29udGV4dFZhbHVlIH0sXHJcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHN0eWxlOiB0cmVlSXRlbVN0eWxlcyB9LFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZFRyZWVJdGVtLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IFwiYXJpYS1leHBhbmRlZFwiOiBoYXNPd25UcmVlSXRlbXMgPyBleHBhbmRlZCA6IG51bGwsIFwiYXJpYS1zZWxlY3RlZFwiOiBzZWxlY3RlZEl0ZW0sIFwiYXJpYS1jaGVja2VkXCI6IHNob3VsZFNob3dDaGVja2JveCA/IGFyaWFDaGVja2VkVmFsdWUgOiBudWxsLCBcImRhdGEtdGVzdGlkXCI6IHRlc3RJZCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzT3duVHJlZUl0ZW1zOiBoYXNPd25UcmVlSXRlbXMsIGlkOiBpdGVtSWQsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBub2RlVHlwZTogbm9kZVR5cGUsIHJvbGU6IFwidHJlZWl0ZW1cIiwgc2VsZWN0YWJsZVR5cGU6IHNlbGVjdGFibGUsIHNlbGVjdGVkOiBzZWxlY3RlZEl0ZW0sIHRoZW1lOiB0aGVtZSwgdGFiSW5kZXg6IHRhYkluZGV4LCBvbktleURvd246IG9uS2V5RG93bkhhbmRsZXIsIHJlZjogdHJlZUl0ZW1SZWYsIGhvdmVyQ29sb3I6IGhvdmVyQ29sb3IgfSksXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEl0ZW1XcmFwcGVyLCB7IFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkID8/IGl0ZW1JZH0taXRlbXdyYXBwZXJgLCBkZXB0aDogaXRlbURlcHRoLCBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgaGFzQ3VzdG9tSWNvblNpemU6ICEhZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSwgaWQ6IGAke2l0ZW1JZH0taXRlbXdyYXBwZXJgLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgbm9kZVR5cGU6IG5vZGVUeXBlLCBzZWxlY3RhYmxlOiBzZWxlY3RhYmxlLCBzdHlsZTogc3R5bGUsIHRoZW1lOiB0aGVtZSwgcmVmOiBtZXJnZVJlZnMocmVmLCBmb2N1c1RyYXBFbGVtZW50KSwgb25DbGljazogaGFuZGxlT25DbGljayB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRFeHBhbmRXcmFwcGVyLCB7IFwiYXJpYS1oaWRkZW5cIjogQm9vbGVhbighZXhwYW5kZWQpLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplLCBjb2xvcjogZXhwYW5kSWNvblN0eWxlcz8uY29sb3IsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZXhwYW5kYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG9uQ2xpY2s6IGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRXhwYW5kZWRDbGlja2VkKGV2ZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhlbWU6IHRoZW1lIH0sIGV4cGFuZGVkID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRXhwYW5kTW9yZUljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZXZyb25SaWdodEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSkpLFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3VsZFNob3dDaGVja2JveCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZENoZWNrYm94V3JhcHBlciwgeyBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgdGhlbWU6IHRoZW1lIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEluZGV0ZXJtaW5hdGVDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBzdGF0dXM6IGNoZWNrZWRTdGF0dXMgfSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IGNoZWNrZWQ6IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4oY2hlY2tlZFN0YXR1cykgfSkpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpKSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZD8udHlwZSA9PT0gVHJlZUl0ZW0gPyAoUmVhY3QuY3JlYXRlRWxlbWVudChUcmFuc2l0aW9uLCB7IGlzT3BlbjogZXhwYW5kZWQsIHVubW91bnRPbkV4aXQ6IHRydWUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInVsXCIsIHsgcm9sZTogXCJncm91cFwiIH0sIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLnByb3BzLml0ZW1JZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudERlcHRoLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSkpKSA6IChjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB9KSkpKSk7XHJcbn0pO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1UcmVlSXRlbS5qcy5tYXAiXX0= */"));
23344
+ }, ";}}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvQmlDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSAnLi4vQ2hlY2tib3gnO1xyXG5pbXBvcnQgeyBJbmRldGVybWluYXRlQ2hlY2tib3gsIEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cywgfSBmcm9tICcuLi9JbmRldGVybWluYXRlQ2hlY2tib3gnO1xyXG5pbXBvcnQgeyBUcmFuc2l0aW9uIH0gZnJvbSAnLi4vVHJhbnNpdGlvbic7XHJcbmNvbnN0IFN0eWxlZFRyZWVJdGVtID0gc3R5bGVkLmxpIGBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMTAwXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsNzAwfTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGVUeXBlLCBwcm9wcy5ub2RlVHlwZSl9O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6ICR7cHJvcHMgPT4gY2FsY3VsYXRlT2Zmc2V0KHByb3BzLm5vZGVUeXBlLCBwcm9wcy5kZXB0aCl9O1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAmID4gKjpmaXJzdC1jaGlsZCB7XG4gICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgIG91dGxpbmU6IDJweCBzb2xpZFxuICAgICAgICAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXNJbnZlcnNlXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5mb2N1c307XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUpfTtcbiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIHRydWUpfTtcbiAgICBwYWRkaW5nLWJsb2NrLWVuZDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1ibG9jay1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG5cbiAgICAke3Byb3BzID0+IHByb3BzLnNlbGVjdGVkICYmXHJcbiAgICBjc3MgYFxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMuaXNJbnZlcnNlXHJcbiAgICAgICAgPyBwcm9wcy50aGVtZS5jb2xvcnMudGVydGlhcnk1MDBcclxuICAgICAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5wcmltYXJ5NTAwfTtcbiAgICAgICAgICBibG9jay1zaXplOiAxMDAlO1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIGlubGluZS1zaXplOiAke3Byb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAyfTtcbiAgICAgICAgICBpbnNldC1ibG9jay1zdGFydDogMDtcbiAgICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgICAgIH1cbiAgICAgIGB9XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IGdldEhvdmVyQmFja2dyb3VuZCh7XHJcbiAgICBpc0Rpc2FibGVkOiBwcm9wcy5pc0Rpc2FibGVkLFxyXG4gICAgaG92ZXJDb2xvcjogcHJvcHMuaG92ZXJDb2xvcixcclxuICAgIGlzSW52ZXJzZTogcHJvcHMuaXNJbnZlcnNlLFxyXG4gICAgdGhlbWU6IHByb3BzLnRoZW1lLFxyXG59KX07XG4gICAgfVxuICB9XG5gO1xyXG5mdW5jdGlvbiBnZXRIb3ZlckJhY2tncm91bmQoeyBpc0Rpc2FibGVkLCBob3ZlckNvbG9yLCBpc0ludmVyc2UsIHRoZW1lIH0pIHtcclxuICAgIGlmIChpc0Rpc2FibGVkKVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICBpZiAoaG92ZXJDb2xvcilcclxuICAgICAgICByZXR1cm4gaG92ZXJDb2xvcjtcclxuICAgIGNvbnN0IHRyYW5zcGFyZW5jeSA9IGlzSW52ZXJzZSA/IDAuOCA6IDAuOTU7XHJcbiAgICByZXR1cm4gdHJhbnNwYXJlbnRpemUodHJhbnNwYXJlbmN5LCB0aGVtZS5jb2xvcnMubmV1dHJhbDkwMCk7XHJcbn1cclxuY29uc3QgSWNvbldyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGNvbG9yOiAke3Byb3BzID0+IGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIG1hcmdpbi1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM307XG4gIG1hcmdpbi1sZWZ0OiAwO1xuXG4gIHN2ZyB7XG4gICAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaWNvblNpemVzLm1lZGl1bX1weDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB9XG5gO1xyXG5jb25zdCBTdHlsZWRMYWJlbFdyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICB3aWR0aDogMTAwJTtcbmA7XHJcbmNvbnN0IFN0eWxlZEV4cGFuZFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5jb2xvciB8fFxyXG4gICAgZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgd2lkdGg6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG4gIGhlaWdodDogJHsoeyBzaXplLCB0aGVtZSB9KSA9PiBzaXplICE9PSB1bmRlZmluZWQgPyBgJHtzaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5jb25zdCBUcmVlSXRlbUNvbXBvbmVudCA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpID0+IHtcclxuICAgIGNvbnN0IHsgYWRkaXRpb25hbENvbnRlbnQsIGNoaWxkcmVuLCBob3ZlckNvbG9yLCBpY29uLCBpbmRleDogaW5kZXhQcm9wLCBsYWJlbCwgbGFiZWxTdHlsZSwgc3R5bGUsIHRlc3RJZCwgdG9wTGV2ZWw6IHRvcExldmVsUHJvcCwgdHJlZUl0ZW1TdHlsZXMsIC4uLnJlc3QgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XHJcbiAgICBjb25zdCBpc0ludmVyc2UgPSB1c2VJc0ludmVyc2UoKTtcclxuICAgIC8vIFJlYWQgaGllcmFyY2h5IGluZm9ybWF0aW9uIGZyb20gY29udGV4dCAocmVkdWNlcyBjbG9uZUVsZW1lbnQgb3ZlcmhlYWQpXHJcbiAgICBjb25zdCBoaWVyYXJjaHlDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChUcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQpO1xyXG4gICAgLy8gVXNlIGNvbnRleHQgdmFsdWVzIGlmIHByb3BzIGFyZSBub3QgcHJvdmlkZWQgKGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KVxyXG4gICAgY29uc3QgaW5kZXggPSBpbmRleFByb3AgIT09IHVuZGVmaW5lZCA/IGluZGV4UHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaW5kZXg7XHJcbiAgICBjb25zdCB0b3BMZXZlbCA9IHRvcExldmVsUHJvcCAhPT0gdW5kZWZpbmVkID8gdG9wTGV2ZWxQcm9wIDogaGllcmFyY2h5Q29udGV4dC5pc1RvcExldmVsO1xyXG4gICAgLy8gQ29uc3VtZSBzcGxpdCBjb250ZXh0cyBmb3IgcmVkdWNlZCByZS1yZW5kZXIgc2NvcGVcclxuICAgIGNvbnN0IHsgaXRlbVRvRm9jdXMgfSA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0KTtcclxuICAgIGNvbnN0IHsgaGFuZGxlRXhwYW5kZWRDaGFuZ2UgfSA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZVZpZXdFeHBhbnNpb25Db250ZXh0KTtcclxuICAgIGNvbnN0IHsgZXhwYW5kSWNvblN0eWxlcywgaGFzSWNvbnMsIGlzVG9wTGV2ZWxTZWxlY3RhYmxlLCBzZWxlY3RhYmxlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgY2hlY2tib3hDaGFuZ2VIYW5kbGVyLCBjaGVja2VkU3RhdHVzLCBleHBhbmRlZCwgaGFzT3duVHJlZUl0ZW1zLCBpdGVtRGVwdGgsIGl0ZW1JZCwgcmVmLCBzZWxlY3RlZEl0ZW1zLCB9ID0gY29udGV4dFZhbHVlO1xyXG4gICAgY29uc3Qgbm9kZVR5cGUgPSBoYXNPd25UcmVlSXRlbXMgPyBUcmVlTm9kZVR5cGUuYnJhbmNoIDogVHJlZU5vZGVUeXBlLmxlYWY7XHJcbiAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUuc2luZ2xlXHJcbiAgICAgICAgPyBzZWxlY3RlZEl0ZW1zPy5bMF0/Lml0ZW1JZCA9PT0gaXRlbUlkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgYXJpYUNoZWNrZWRWYWx1ZSA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aVxyXG4gICAgICAgID8gY2hlY2tlZFN0YXR1cyA9PT0gSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLmluZGV0ZXJtaW5hdGVcclxuICAgICAgICAgICAgPyAnbWl4ZWQnXHJcbiAgICAgICAgICAgIDogY2hlY2tlZFN0YXR1cyA9PT0gSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLmNoZWNrZWRcclxuICAgICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBbaXNJbnNpZGVUcmVlSXRlbSwgc2V0SXNJbnNpZGVUcmVlSXRlbV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XHJcbiAgICBjb25zdCB0cmVlSXRlbVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcclxuICAgIGNvbnN0IGZvY3VzVHJhcEVsZW1lbnQgPSB1c2VGb2N1c0xvY2soaXNJbnNpZGVUcmVlSXRlbSk7XHJcbiAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzID0gJ2J1dHRvbiwgW3JvbGU9XCJidXR0b25cIl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBhW2hyZWZdLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9XCItMVwiXSknO1xyXG4gICAgY29uc3QgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyA9IFJlYWN0LnVzZUNhbGxiYWNrKChjb250YWluZXIsIHNlbGVjdG9yKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKS5maWx0ZXIoZWwgPT4gIWVsLmhhc0F0dHJpYnV0ZSgndGFiaW5kZXgnKSB8fFxyXG4gICAgICAgICAgICAoZWwudGFiSW5kZXggIT09IHVuZGVmaW5lZCAmJiBlbC50YWJJbmRleCA+PSAwKSk7XHJcbiAgICB9LCBbXSk7XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgbGFiZWwgYW5kIGFkZGl0aW9uYWwgY29udGVudCBvZiBhIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBZb3UgY2FuIG5hdmlnYXRlIHRocm91Z2ggaW50ZXJhY3RpdmUgZWxlbWVudHMgdXNpbmcgdGhlIGBUYWJgIGtleSwgYWN0aXZhdGUgdGhlbSB3aXRoIGBFbnRlcmAgb3IgYFNwYWNlYCxcclxuICAgICAqIGFuZCBleGl0IG91dHNpZGUgYW5kIGZvY3VzIHRoZSB3aG9sZSB0cmVlIGl0ZW0gd2l0aCBgRXNjYXBlYC5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3QgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24gPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0LCBzaGlmdEtleSB9ID0gZXZlbnQ7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSB0YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaXNFbnRlciA9IGtleSA9PT0gJ0VudGVyJztcclxuICAgICAgICBjb25zdCBpc1NwYWNlID0ga2V5ID09PSAnICc7XHJcbiAgICAgICAgY29uc3QgaXNFc2NhcGUgPSBrZXkgPT09ICdFc2NhcGUnO1xyXG4gICAgICAgIGNvbnN0IGlzVGFiID0ga2V5ID09PSAnVGFiJztcclxuICAgICAgICBjb25zdCBpc0FjdGl2YXRpb25LZXkgPSBpc0VudGVyIHx8IGlzU3BhY2U7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdChpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAvLyBJZiB0aGUga2V5IGlzIGBUYWJgLCB3ZSBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzVGFiICYmIGlzSW5zaWRlVHJlZUl0ZW0pIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICAvLyBGaWx0ZXIgbGlzdCBvZiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGljaCBhcmUgb25seSBpbmNsdWRlZCBmb3IgY3VycmVudCB0cmVlIGl0ZW1cclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0LmZpbHRlcihlbCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0VHJlZUl0ZW0gPSBlbC5jbG9zZXN0KCdbcm9sZT1cInRyZWVpdGVtXCJdJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdFRyZWVJdGVtID09PSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5pbmRleE9mKGN1cnJlbnRFbGVtZW50KTtcclxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gc2hpZnRLZXkgPyAtMSA6IDE7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGNvbnN0IG5leHRJbmRleCA9IChjdXJyZW50SW5kZXggKyBkaXJlY3Rpb24gKyB0b3RhbCkgJSB0b3RhbDtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFRvRm9jdXMgPSBjdXJyZW50VHJlZUl0ZW1JbnRlcmFjdGl2ZUVsZW1lbnRzW25leHRJbmRleF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBlbGVtZW50VG9Gb2N1cy5mb2N1cygpLCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFByZXNzaW5nIGBFbnRlcmAgb3IgYFNwYWNlYCBvbiBhbiBpbnRlcmFjdGl2ZSBlbGVtZW50IHdpbGwgdHJpZ2dlciBpdHMgY2xpY2sgZXZlbnRcclxuICAgICAgICBpZiAoaXNBY3RpdmF0aW9uS2V5ICYmIGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTW92ZXMgZm9jdXMgb3V0c2lkZSB0aGUgdHJlZSBpdGVtIGFuZCBmb2N1c2VzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmIHdoZW4gYEVzY2FwZWAgaXMgcHJlc3NlZFxyXG4gICAgICAgIGlmIChpc0VzY2FwZSkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbShmYWxzZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRyZWVJdGVtTm9kZSA9IHRyZWVJdGVtUmVmLmN1cnJlbnQ7XHJcbiAgICAgICAgICAgIGlmICh0cmVlSXRlbU5vZGUpIHtcclxuICAgICAgICAgICAgICAgIHRyZWVJdGVtTm9kZS5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbZ2V0SW50ZXJhY3RpdmVFbGVtZW50cywgaW50ZXJhY3RpdmVFbGVtZW50cywgaXNJbnNpZGVUcmVlSXRlbV0pO1xyXG4gICAgY29uc3QgaGFuZGxlT25DbGljayA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoJ2J1dHRvbiwgW3JvbGU9XCJidXR0b25cIl0sIGFbaHJlZl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbcm9sZT1cIm1lbnVpdGVtXCJdJyk7XHJcbiAgICAgICAgLy8gUHJldmVudGluZyBzZWxlY3RpbmcgdGhlIGl0ZW0gd2hlbiBjbGlja2luZyBvbiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGVuIGBzZWxlY3RhYmxlYCBpcyBgc2luZ2xlYFxyXG4gICAgICAgIGlmIChpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5zaW5nbGUpIHtcclxuICAgICAgICAgICAgaGFuZGxlQ2xpY2soZXZlbnQsIGl0ZW1JZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIHNlbGVjdGFibGUsIGhhbmRsZUNsaWNrLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gbm9kZVR5cGUgPT09IFRyZWVOb2RlVHlwZS5icmFuY2ggPyAoUmVhY3QuY3JlYXRlRWxlbWVudChGb2xkZXJJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChBcnRpY2xlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUgfSkpO1xyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkTGFiZWxXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHN0eWxlOiBsYWJlbFN0eWxlLCBpZDogYCR7aXRlbUlkfS1sYWJlbGAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tbGFiZWxgIH0sXHJcbiAgICAgICAgaGFzSWNvbnMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbldyYXBwZXIsIHsgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1pY29uYCB9LCBpY29uIHx8IGRlZmF1bHRJY29uKSksXHJcbiAgICAgICAgbGFiZWwpKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBhZGRpdGlvbmFsQ29udGVudCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEFkZGl0aW9uYWxDb250ZW50V3JhcHBlciwgeyB0aGVtZTogdGhlbWUsIGlkOiBgJHtpdGVtSWR9LWFkZGl0aW9uYWxjb250ZW50d3JhcHBlcmAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkID8/IGl0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCB9LCBhZGRpdGlvbmFsQ29udGVudCkpIDogbnVsbDtcclxuICAgIC8vIE1lbW9pemUgaW5saW5lIHN0eWxlIG9iamVjdHMgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSByZS1yZW5kZXJzXHJcbiAgICBjb25zdCBjaGVja2JveElucHV0U3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7IG1hcmdpblJpZ2h0OiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMyB9KSwgW3RoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzXSk7XHJcbiAgICBjb25zdCBjaGVja2JveExhYmVsU3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgcGFkZGluZzogMCxcclxuICAgICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgfSksIFtdKTtcclxuICAgIC8vIFByb3BzIHNoYXJlZCBieSBDaGVja2JveCBhbmQgSW5kZXRlcm1pbmF0ZUNoZWNrYm94XHJcbiAgICBjb25zdCBjaGVja2JveFByb3BzID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xyXG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxyXG4gICAgICAgIGhpZGVGb2N1czogdHJ1ZSxcclxuICAgICAgICBpZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICAgICAgaW5wdXRTdHlsZTogY2hlY2tib3hJbnB1dFN0eWxlLFxyXG4gICAgICAgIGxhYmVsU3R5bGU6IGNoZWNrYm94TGFiZWxTdHlsZSxcclxuICAgICAgICBsYWJlbFRleHQ6IGxhYmVsVGV4dCxcclxuICAgICAgICBvbkNoYW5nZTogY2hlY2tib3hDaGFuZ2VIYW5kbGVyLFxyXG4gICAgICAgIHRhYkluZGV4OiAtMSxcclxuICAgICAgICB0ZXN0SWQ6IGAke2l0ZW1JZH0tY2hlY2tib3hgLFxyXG4gICAgfSksIFtcclxuICAgICAgICBpc0Rpc2FibGVkLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dCxcclxuICAgICAgICBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IG9uRXhwYW5kZWRDbGlja2VkID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBoYW5kbGVFeHBhbmRlZENoYW5nZShldmVudCwgaXRlbUlkKTtcclxuICAgIH0sIFtoYW5kbGVFeHBhbmRlZENoYW5nZSwgaXRlbUlkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVFeHBhbmRDbGljayA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmICghaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVG9Gb2N1cyA9PT0gaXRlbUlkID8gMCA6IC0xO1xyXG4gICAgfSwgW2lzRGlzYWJsZWQsIGl0ZW1Ub0ZvY3VzLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IHNob3VsZFNob3dDaGVja2JveCA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSAmJlxyXG4gICAgICAgIChpc1RvcExldmVsU2VsZWN0YWJsZSAhPT0gZmFsc2UgfHwgIXRvcExldmVsKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogUHJlc3NpbmcgYEN0cmwgKyBFbnRlcmAgb3IgYENvbW1hbmQgKyBFbnRlcmAgZm9jdXNlcyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudCB3aXRoaW4gdGhlIHRyZWUgaXRlbVxyXG4gICAgICogYW5kIGxvY2tzIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBmb2N1cyBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaXQgaGFuZGxlcyBrZXkgZXZlbnRzIGZvciBpbnRlcmFjdGlvbiBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBJdCBhbHNvIGhhbmRsZXMgdGhlIG90aGVyIGtleXMgdG8gdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsT3JDb21tYW5kID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5O1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybEVudGVyID0gaXNDdHJsT3JDb21tYW5kICYmIGlzRW50ZXI7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBDdHJsICsgRW50ZXIgb3IgQ29tbWFuZCArIEVudGVyLCBmb2N1cyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudFxyXG4gICAgICAgIC8vIGFuZCBsb2NrIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzQ3RybEVudGVyICYmIHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3RbMF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHZhbGlkIENTUyBzZWxlY3RvcnMgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuLCBwZXJpb2RzIGluIGl0ZW1JZClcclxuICAgICAgICBjb25zdCBzYWZlSXRlbUlkID0gQ1NTLmVzY2FwZShpdGVtSWQpO1xyXG4gICAgICAgIGNvbnN0IGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50ID0gdGFyZ2V0LmNsb3Nlc3QoYCMke3NhZmVJdGVtSWR9LWxhYmVsLCAjJHtzYWZlSXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgKTtcclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBoYW5kbGUga2V5IGV2ZW50cyBmb3IgdGhvc2UgYXJlYXNcclxuICAgICAgICBpZiAoaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYsIGhhbmRsZSBrZXkgZG93biBmb3IgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgaGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbXHJcbiAgICAgICAgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnRzLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICBoYW5kbGVMYWJlbEFuZEFkZGl0aW9uYWxDb250ZW50S2V5RG93bixcclxuICAgICAgICBoYW5kbGVLZXlEb3duLFxyXG4gICAgXSk7XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb250ZXh0VmFsdWUgfSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IHRyZWVJdGVtU3R5bGVzIH0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkVHJlZUl0ZW0sIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgXCJhcmlhLWV4cGFuZGVkXCI6IGhhc093blRyZWVJdGVtcyA/IGV4cGFuZGVkIDogbnVsbCwgXCJhcmlhLXNlbGVjdGVkXCI6IHNlbGVjdGVkSXRlbSwgXCJhcmlhLWNoZWNrZWRcIjogc2hvdWxkU2hvd0NoZWNrYm94ID8gYXJpYUNoZWNrZWRWYWx1ZSA6IG51bGwsIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLCBkZXB0aDogaXRlbURlcHRoLCBoYXNPd25UcmVlSXRlbXM6IGhhc093blRyZWVJdGVtcywgaWQ6IGl0ZW1JZCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG5vZGVUeXBlOiBub2RlVHlwZSwgcm9sZTogXCJ0cmVlaXRlbVwiLCBzZWxlY3RhYmxlVHlwZTogc2VsZWN0YWJsZSwgc2VsZWN0ZWQ6IHNlbGVjdGVkSXRlbSwgdGhlbWU6IHRoZW1lLCB0YWJJbmRleDogdGFiSW5kZXgsIG9uS2V5RG93bjogb25LZXlEb3duSGFuZGxlciwgcmVmOiB0cmVlSXRlbVJlZiwgaG92ZXJDb2xvcjogaG92ZXJDb2xvciB9KSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkSXRlbVdyYXBwZXIsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1pdGVtd3JhcHBlcmAsIGRlcHRoOiBpdGVtRGVwdGgsIGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCBoYXNDdXN0b21JY29uU2l6ZTogISFleHBhbmRJY29uU3R5bGVzPy5zaXplLCBpZDogYCR7aXRlbUlkfS1pdGVtd3JhcHBlcmAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBub2RlVHlwZTogbm9kZVR5cGUsIHNlbGVjdGFibGU6IHNlbGVjdGFibGUsIHN0eWxlOiBzdHlsZSwgdGhlbWU6IHRoZW1lLCByZWY6IG1lcmdlUmVmcyhyZWYsIGZvY3VzVHJhcEVsZW1lbnQpLCBvbkNsaWNrOiBoYW5kbGVPbkNsaWNrIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEV4cGFuZFdyYXBwZXIsIHsgXCJhcmlhLWhpZGRlblwiOiBCb29sZWFuKCFleHBhbmRlZCksIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUsIGNvbG9yOiBleHBhbmRJY29uU3R5bGVzPy5jb2xvciwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1leHBhbmRgLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgb25DbGljazogaGFuZGxlRXhwYW5kQ2xpY2ssIHRoZW1lOiB0aGVtZSB9LCBleHBhbmRlZCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEV4cGFuZE1vcmVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChDaGV2cm9uUmlnaHRJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSB9KSkpKSxcclxuICAgICAgICAgICAgICAgICAgICBzaG91bGRTaG93Q2hlY2tib3ggPyAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRDaGVja2JveFdyYXBwZXIsIHsgaGFzQWRkaXRpb25hbENvbnRlbnQ6ICEhYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lOiB0aGVtZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChJbmRldGVybWluYXRlQ2hlY2tib3gsIE9iamVjdC5hc3NpZ24oe30sIGNoZWNrYm94UHJvcHMsIHsgc3RhdHVzOiBjaGVja2VkU3RhdHVzIH0pKSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBjaGVja2VkOiBjaGVja2VkU3RhdHVzVG9Cb29sZWFuKGNoZWNrZWRTdGF0dXMpIH0pKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbFRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQpKSksXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sIChjaGlsZCwgY2hpbGRJbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZD8udHlwZSAhPT0gVHJlZUl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyBQYXNzIGhpZXJhcmNoeSBpbmZvIHRocm91Z2ggY29udGV4dCBpbnN0ZWFkIG9mIGNsb25lRWxlbWVudFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5lc3RlZEhpZXJhcmNoeVZhbHVlID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXB0aDogaXRlbURlcHRoICsgMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3BMZXZlbDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBjaGlsZEluZGV4LFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyYW5zaXRpb24sIHsgaXNPcGVuOiBleHBhbmRlZCwgdW5tb3VudE9uRXhpdDogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgeyByb2xlOiBcImdyb3VwXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0LlByb3ZpZGVyLCB7IGtleTogY2hpbGQucHJvcHMuaXRlbUlkLCB2YWx1ZTogbmVzdGVkSGllcmFyY2h5VmFsdWUgfSwgY2hpbGQpKSkpO1xyXG4gICAgICAgICAgICAgICAgfSkpKSkpO1xyXG59KTtcclxuLyoqXHJcbiAqIEN1c3RvbSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBSZWFjdC5tZW1vXHJcbiAqIE9ubHkgcmUtcmVuZGVyIFRyZWVJdGVtIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlXHJcbiAqL1xyXG5mdW5jdGlvbiBhcmVQcm9wc0VxdWFsKHByZXZQcm9wcywgbmV4dFByb3BzKSB7XHJcbiAgICAvLyBDaGVjayBpZiBpdGVtSWQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5pdGVtSWQgIT09IG5leHRQcm9wcy5pdGVtSWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBsYWJlbCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsICE9PSBuZXh0UHJvcHMubGFiZWwpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBkaXNhYmxlZCBzdGF0ZSBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmlzRGlzYWJsZWQgIT09IG5leHRQcm9wcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaWNvbiBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmljb24gIT09IG5leHRQcm9wcy5pY29uKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgYWRkaXRpb25hbCBjb250ZW50IGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuYWRkaXRpb25hbENvbnRlbnQgIT09IG5leHRQcm9wcy5hZGRpdGlvbmFsQ29udGVudCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGhvdmVyIGNvbG9yIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaG92ZXJDb2xvciAhPT0gbmV4dFByb3BzLmhvdmVyQ29sb3IpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBjaGlsZHJlbiBjaGFuZ2VkIChmb3IgbmVzdGVkIHRyZWUgaXRlbXMpXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBjaGlsZHJlbiBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLmNoaWxkcmVuICE9PSBuZXh0UHJvcHMuY2hpbGRyZW4pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBzdHlsZXMgY2hhbmdlZFxyXG4gICAgLy8gVXNpbmcgdHlwZSBhc3NlcnRpb24gc2luY2Ugc3R5bGUgY29tZXMgZnJvbSBSZWFjdC5IVE1MQXR0cmlidXRlc1xyXG4gICAgaWYgKHByZXZQcm9wcy5zdHlsZSAhPT0gbmV4dFByb3BzLnN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy5sYWJlbFN0eWxlICE9PSBuZXh0UHJvcHMubGFiZWxTdHlsZSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChwcmV2UHJvcHMudHJlZUl0ZW1TdHlsZXMgIT09IG5leHRQcm9wcy50cmVlSXRlbVN0eWxlcykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIEFsbCByZWxldmFudCBwcm9wcyBhcmUgZXF1YWwsIHNraXAgcmUtcmVuZGVyXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG4vKipcclxuICogTWVtb2l6ZWQgVHJlZUl0ZW0gY29tcG9uZW50XHJcbiAqIE9ubHkgcmUtcmVuZGVycyB3aGVuIHJlbGV2YW50IHByb3BzIGNoYW5nZSwgaW1wcm92aW5nIHBlcmZvcm1hbmNlIGZvciBsYXJnZSB0cmVlc1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFRyZWVJdGVtID0gUmVhY3QubWVtbyhUcmVlSXRlbUNvbXBvbmVudCwgYXJlUHJvcHNFcXVhbCk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRyZWVJdGVtLmpzLm1hcCJdfQ== */"));
22835
23345
  function getHoverBackground(_ref) {
22836
23346
  var isDisabled = _ref.isDisabled,
22837
23347
  hoverColor = _ref.hoverColor,
@@ -22853,13 +23363,13 @@ var IconWrapper$8 = /*#__PURE__*/_styled("span", {
22853
23363
  return props.theme.iconSizes.medium;
22854
23364
  }, "px;width:", function (props) {
22855
23365
  return props.theme.iconSizes.medium;
22856
- }, "px;vertical-align:middle;}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxRmdDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3Q29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyB1c2VJc0ludmVyc2UgfSBmcm9tICcuLi8uLi9pbnZlcnNlJztcclxuaW1wb3J0IHsgVGhlbWVDb250ZXh0IH0gZnJvbSAnLi4vLi4vdGhlbWUvVGhlbWVDb250ZXh0JztcclxuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCc7XHJcbmltcG9ydCB7IEluZGV0ZXJtaW5hdGVDaGVja2JveCwgSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLCB9IGZyb20gJy4uL0luZGV0ZXJtaW5hdGVDaGVja2JveCc7XHJcbmltcG9ydCB7IFRyYW5zaXRpb24gfSBmcm9tICcuLi9UcmFuc2l0aW9uJztcclxuaW1wb3J0IHsgY2FsY3VsYXRlT2Zmc2V0LCBnZXRUcmVlSXRlbUxhYmVsQ29sb3IsIGdldFRyZWVJdGVtV3JhcHBlckN1cnNvciwgVHJlZU5vZGVUeXBlLCB9IGZyb20gJy4vdXRpbHMnO1xyXG5pbXBvcnQgeyB1c2VGb2N1c0xvY2sgfSBmcm9tICcuLi8uLi9ob29rcy91c2VGb2N1c0xvY2snO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmNvbnN0IFN0eWxlZFRyZWVJdGVtID0gc3R5bGVkLmxpIGBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMTAwXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsNzAwfTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGVUeXBlLCBwcm9wcy5ub2RlVHlwZSl9O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6ICR7cHJvcHMgPT4gY2FsY3VsYXRlT2Zmc2V0KHByb3BzLm5vZGVUeXBlLCBwcm9wcy5kZXB0aCl9O1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAmID4gKjpmaXJzdC1jaGlsZCB7XG4gICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgIG91dGxpbmU6IDJweCBzb2xpZFxuICAgICAgICAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXNJbnZlcnNlXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5mb2N1c307XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUpfTtcbiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIHRydWUpfTtcbiAgICBwYWRkaW5nLWJsb2NrLWVuZDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1ibG9jay1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG5cbiAgICAke3Byb3BzID0+IHByb3BzLnNlbGVjdGVkICYmXHJcbiAgICBjc3MgYFxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMuaXNJbnZlcnNlXHJcbiAgICAgICAgPyBwcm9wcy50aGVtZS5jb2xvcnMudGVydGlhcnk1MDBcclxuICAgICAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5wcmltYXJ5NTAwfTtcbiAgICAgICAgICBibG9jay1zaXplOiAxMDAlO1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIGlubGluZS1zaXplOiAke3Byb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAyfTtcbiAgICAgICAgICBpbnNldC1ibG9jay1zdGFydDogMDtcbiAgICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgICAgIH1cbiAgICAgIGB9XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IGdldEhvdmVyQmFja2dyb3VuZCh7XHJcbiAgICBpc0Rpc2FibGVkOiBwcm9wcy5pc0Rpc2FibGVkLFxyXG4gICAgaG92ZXJDb2xvcjogcHJvcHMuaG92ZXJDb2xvcixcclxuICAgIGlzSW52ZXJzZTogcHJvcHMuaXNJbnZlcnNlLFxyXG4gICAgdGhlbWU6IHByb3BzLnRoZW1lLFxyXG59KX07XG4gICAgfVxuICB9XG5gO1xyXG5mdW5jdGlvbiBnZXRIb3ZlckJhY2tncm91bmQoeyBpc0Rpc2FibGVkLCBob3ZlckNvbG9yLCBpc0ludmVyc2UsIHRoZW1lIH0pIHtcclxuICAgIGlmIChpc0Rpc2FibGVkKVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICBpZiAoaG92ZXJDb2xvcilcclxuICAgICAgICByZXR1cm4gaG92ZXJDb2xvcjtcclxuICAgIGNvbnN0IHRyYW5zcGFyZW5jeSA9IGlzSW52ZXJzZSA/IDAuOCA6IDAuOTU7XHJcbiAgICByZXR1cm4gdHJhbnNwYXJlbnRpemUodHJhbnNwYXJlbmN5LCB0aGVtZS5jb2xvcnMubmV1dHJhbDkwMCk7XHJcbn1cclxuY29uc3QgSWNvbldyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGNvbG9yOiAke3Byb3BzID0+IGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIG1hcmdpbi1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM307XG4gIG1hcmdpbi1sZWZ0OiAwO1xuXG4gIHN2ZyB7XG4gICAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaWNvblNpemVzLm1lZGl1bX1weDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB9XG5gO1xyXG5jb25zdCBTdHlsZWRMYWJlbFdyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICB3aWR0aDogMTAwJTtcbmA7XHJcbmNvbnN0IFN0eWxlZEV4cGFuZFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5jb2xvciB8fFxyXG4gICAgZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgd2lkdGg6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG4gIGhlaWdodDogJHsoeyBzaXplLCB0aGVtZSB9KSA9PiBzaXplICE9PSB1bmRlZmluZWQgPyBgJHtzaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXgsIGxhYmVsLCBsYWJlbFN0eWxlLCBzdHlsZSwgdGVzdElkLCB0b3BMZXZlbCwgdHJlZUl0ZW1TdHlsZXMsIC4uLnJlc3QgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XHJcbiAgICBjb25zdCBpc0ludmVyc2UgPSB1c2VJc0ludmVyc2UoKTtcclxuICAgIGNvbnN0IHsgZXhwYW5kSWNvblN0eWxlcywgaGFuZGxlRXhwYW5kZWRDaGFuZ2UsIGhhc0ljb25zLCBpdGVtVG9Gb2N1cywgaXNUb3BMZXZlbFNlbGVjdGFibGUsIHNlbGVjdGFibGUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNvbnRleHRWYWx1ZSwgaGFuZGxlQ2xpY2ssIGhhbmRsZUtleURvd24gfSA9IHVzZVRyZWVJdGVtKHByb3BzLCBmb3J3YXJkZWRSZWYpO1xyXG4gICAgY29uc3QgeyBpc0Rpc2FibGVkIH0gPSBjb250ZXh0VmFsdWU7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHBhcmVudERlcHRoLCByZWYsIHNlbGVjdGVkSXRlbXMsIH0gPSBjb250ZXh0VmFsdWU7XHJcbiAgICBjb25zdCBub2RlVHlwZSA9IGhhc093blRyZWVJdGVtcyA/IFRyZWVOb2RlVHlwZS5icmFuY2ggOiBUcmVlTm9kZVR5cGUubGVhZjtcclxuICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5zaW5nbGVcclxuICAgICAgICA/IHNlbGVjdGVkSXRlbXM/LlswXT8uaXRlbUlkID09PSBpdGVtSWRcclxuICAgICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBhcmlhQ2hlY2tlZFZhbHVlID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLm11bHRpXHJcbiAgICAgICAgPyBjaGVja2VkU3RhdHVzID09PSBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMuaW5kZXRlcm1pbmF0ZVxyXG4gICAgICAgICAgICA/ICdtaXhlZCdcclxuICAgICAgICAgICAgOiBjaGVja2VkU3RhdHVzID09PSBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMuY2hlY2tlZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IFtpc0luc2lkZVRyZWVJdGVtLCBzZXRJc0luc2lkZVRyZWVJdGVtXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xyXG4gICAgY29uc3QgZm9jdXNUcmFwRWxlbWVudCA9IHVzZUZvY3VzTG9jayhpc0luc2lkZVRyZWVJdGVtKTtcclxuICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHMgPSAnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIGFbaHJlZl0sIFt0YWJpbmRleF06bm90KFt0YWJpbmRleD1cIi0xXCJdKSc7XHJcbiAgICBjb25zdCBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzID0gKGNvbnRhaW5lciwgc2VsZWN0b3IpID0+IHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShjb250YWluZXIucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpLmZpbHRlcihlbCA9PiAhZWwuaGFzQXR0cmlidXRlKCd0YWJpbmRleCcpIHx8XHJcbiAgICAgICAgICAgIChlbC50YWJJbmRleCAhPT0gdW5kZWZpbmVkICYmIGVsLnRhYkluZGV4ID49IDApKTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgbGFiZWwgYW5kIGFkZGl0aW9uYWwgY29udGVudCBvZiBhIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBZb3UgY2FuIG5hdmlnYXRlIHRocm91Z2ggaW50ZXJhY3RpdmUgZWxlbWVudHMgdXNpbmcgdGhlIGBUYWJgIGtleSwgYWN0aXZhdGUgdGhlbSB3aXRoIGBFbnRlcmAgb3IgYFNwYWNlYCxcclxuICAgICAqIGFuZCBleGl0IG91dHNpZGUgYW5kIGZvY3VzIHRoZSB3aG9sZSB0cmVlIGl0ZW0gd2l0aCBgRXNjYXBlYC5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3QgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24gPSAoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0LCBzaGlmdEtleSB9ID0gZXZlbnQ7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSB0YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaXNFbnRlciA9IGtleSA9PT0gJ0VudGVyJztcclxuICAgICAgICBjb25zdCBpc1NwYWNlID0ga2V5ID09PSAnICc7XHJcbiAgICAgICAgY29uc3QgaXNFc2NhcGUgPSBrZXkgPT09ICdFc2NhcGUnO1xyXG4gICAgICAgIGNvbnN0IGlzVGFiID0ga2V5ID09PSAnVGFiJztcclxuICAgICAgICBjb25zdCBpc0FjdGl2YXRpb25LZXkgPSBpc0VudGVyIHx8IGlzU3BhY2U7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdChpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAvLyBJZiB0aGUga2V5IGlzIGBUYWJgLCB3ZSBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzVGFiICYmIGlzSW5zaWRlVHJlZUl0ZW0pIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICAvLyBGaWx0ZXIgbGlzdCBvZiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGljaCBhcmUgb25seSBpbmNsdWRlZCBmb3IgY3VycmVudCB0cmVlIGl0ZW1cclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0LmZpbHRlcihlbCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0VHJlZUl0ZW0gPSBlbC5jbG9zZXN0KCdbcm9sZT1cInRyZWVpdGVtXCJdJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdFRyZWVJdGVtID09PSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5pbmRleE9mKGN1cnJlbnRFbGVtZW50KTtcclxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gc2hpZnRLZXkgPyAtMSA6IDE7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGNvbnN0IG5leHRJbmRleCA9IChjdXJyZW50SW5kZXggKyBkaXJlY3Rpb24gKyB0b3RhbCkgJSB0b3RhbDtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFRvRm9jdXMgPSBjdXJyZW50VHJlZUl0ZW1JbnRlcmFjdGl2ZUVsZW1lbnRzW25leHRJbmRleF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBlbGVtZW50VG9Gb2N1cy5mb2N1cygpLCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFByZXNzaW5nIGBFbnRlcmAgb3IgYFNwYWNlYCBvbiBhbiBpbnRlcmFjdGl2ZSBlbGVtZW50IHdpbGwgdHJpZ2dlciBpdHMgY2xpY2sgZXZlbnRcclxuICAgICAgICBpZiAoaXNBY3RpdmF0aW9uS2V5ICYmIGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTW92ZXMgZm9jdXMgb3V0c2lkZSB0aGUgdHJlZSBpdGVtIGFuZCBmb2N1c2VzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmIHdoZW4gYEVzY2FwZWAgaXMgcHJlc3NlZFxyXG4gICAgICAgIGlmIChpc0VzY2FwZSkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbShmYWxzZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRyZWVJdGVtTm9kZSA9IHRyZWVJdGVtUmVmLmN1cnJlbnQ7XHJcbiAgICAgICAgICAgIGlmICh0cmVlSXRlbU5vZGUpIHtcclxuICAgICAgICAgICAgICAgIHRyZWVJdGVtTm9kZS5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaGFuZGxlT25DbGljayA9IChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoJ2J1dHRvbiwgW3JvbGU9XCJidXR0b25cIl0sIGFbaHJlZl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbcm9sZT1cIm1lbnVpdGVtXCJdJyk7XHJcbiAgICAgICAgLy8gUHJldmVudGluZyBzZWxlY3RpbmcgdGhlIGl0ZW0gd2hlbiBjbGlja2luZyBvbiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGVuIGBzZWxlY3RhYmxlYCBpcyBgc2luZ2xlYFxyXG4gICAgICAgIGlmIChpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5zaW5nbGUpIHtcclxuICAgICAgICAgICAgaGFuZGxlQ2xpY2soZXZlbnQsIGl0ZW1JZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gbm9kZVR5cGUgPT09IFRyZWVOb2RlVHlwZS5icmFuY2ggPyAoUmVhY3QuY3JlYXRlRWxlbWVudChGb2xkZXJJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChBcnRpY2xlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUgfSkpO1xyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkTGFiZWxXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHN0eWxlOiBsYWJlbFN0eWxlLCBpZDogYCR7aXRlbUlkfS1sYWJlbGAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tbGFiZWxgIH0sXHJcbiAgICAgICAgaGFzSWNvbnMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbldyYXBwZXIsIHsgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1pY29uYCB9LCBpY29uIHx8IGRlZmF1bHRJY29uKSksXHJcbiAgICAgICAgbGFiZWwpKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBhZGRpdGlvbmFsQ29udGVudCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEFkZGl0aW9uYWxDb250ZW50V3JhcHBlciwgeyB0aGVtZTogdGhlbWUsIGlkOiBgJHtpdGVtSWR9LWFkZGl0aW9uYWxjb250ZW50d3JhcHBlcmAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkID8/IGl0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCB9LCBhZGRpdGlvbmFsQ29udGVudCkpIDogbnVsbDtcclxuICAgIC8vIFByb3BzIHNoYXJlZCBieSBDaGVja2JveCBhbmQgSW5kZXRlcm1pbmF0ZUNoZWNrYm94XHJcbiAgICBjb25zdCBjaGVja2JveFByb3BzID0ge1xyXG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxyXG4gICAgICAgIGhpZGVGb2N1czogdHJ1ZSxcclxuICAgICAgICBpZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICAgICAgaW5wdXRTdHlsZTogeyBtYXJnaW5SaWdodDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDMgfSxcclxuICAgICAgICBsYWJlbFN0eWxlOiB7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDAsXHJcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBsYWJlbFRleHQ6IGxhYmVsVGV4dCxcclxuICAgICAgICBvbkNoYW5nZTogY2hlY2tib3hDaGFuZ2VIYW5kbGVyLFxyXG4gICAgICAgIHRhYkluZGV4OiAtMSxcclxuICAgICAgICB0ZXN0SWQ6IGAke2l0ZW1JZH0tY2hlY2tib3hgLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IG9uRXhwYW5kZWRDbGlja2VkID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBoYW5kbGVFeHBhbmRlZENoYW5nZShldmVudCwgaXRlbUlkKTtcclxuICAgIH07XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVG9Gb2N1cyA9PT0gaXRlbUlkID8gMCA6IC0xO1xyXG4gICAgfSwgW2lzRGlzYWJsZWQsIGl0ZW1Ub0ZvY3VzLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IHNob3VsZFNob3dDaGVja2JveCA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSAmJlxyXG4gICAgICAgIChpc1RvcExldmVsU2VsZWN0YWJsZSAhPT0gZmFsc2UgfHwgIXRvcExldmVsKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogUHJlc3NpbmcgYEN0cmwgKyBFbnRlcmAgb3IgYENvbW1hbmQgKyBFbnRlcmAgZm9jdXNlcyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudCB3aXRoaW4gdGhlIHRyZWUgaXRlbVxyXG4gICAgICogYW5kIGxvY2tzIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBmb2N1cyBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaXQgaGFuZGxlcyBrZXkgZXZlbnRzIGZvciBpbnRlcmFjdGlvbiBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBJdCBhbHNvIGhhbmRsZXMgdGhlIG90aGVyIGtleXMgdG8gdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsT3JDb21tYW5kID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5O1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybEVudGVyID0gaXNDdHJsT3JDb21tYW5kICYmIGlzRW50ZXI7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBDdHJsICsgRW50ZXIgb3IgQ29tbWFuZCArIEVudGVyLCBmb2N1cyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudFxyXG4gICAgICAgIC8vIGFuZCBsb2NrIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzQ3RybEVudGVyICYmIHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3RbMF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHZhbGlkIENTUyBzZWxlY3RvcnMgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuLCBwZXJpb2RzIGluIGl0ZW1JZClcclxuICAgICAgICBjb25zdCBzYWZlSXRlbUlkID0gQ1NTLmVzY2FwZShpdGVtSWQpO1xyXG4gICAgICAgIGNvbnN0IGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50ID0gdGFyZ2V0LmNsb3Nlc3QoYCMke3NhZmVJdGVtSWR9LWxhYmVsLCAjJHtzYWZlSXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgKTtcclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBoYW5kbGUga2V5IGV2ZW50cyBmb3IgdGhvc2UgYXJlYXNcclxuICAgICAgICBpZiAoaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYsIGhhbmRsZSBrZXkgZG93biBmb3IgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgaGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyZWVJdGVtQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogY29udGV4dFZhbHVlIH0sXHJcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHN0eWxlOiB0cmVlSXRlbVN0eWxlcyB9LFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZFRyZWVJdGVtLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IFwiYXJpYS1leHBhbmRlZFwiOiBoYXNPd25UcmVlSXRlbXMgPyBleHBhbmRlZCA6IG51bGwsIFwiYXJpYS1zZWxlY3RlZFwiOiBzZWxlY3RlZEl0ZW0sIFwiYXJpYS1jaGVja2VkXCI6IHNob3VsZFNob3dDaGVja2JveCA/IGFyaWFDaGVja2VkVmFsdWUgOiBudWxsLCBcImRhdGEtdGVzdGlkXCI6IHRlc3RJZCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzT3duVHJlZUl0ZW1zOiBoYXNPd25UcmVlSXRlbXMsIGlkOiBpdGVtSWQsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBub2RlVHlwZTogbm9kZVR5cGUsIHJvbGU6IFwidHJlZWl0ZW1cIiwgc2VsZWN0YWJsZVR5cGU6IHNlbGVjdGFibGUsIHNlbGVjdGVkOiBzZWxlY3RlZEl0ZW0sIHRoZW1lOiB0aGVtZSwgdGFiSW5kZXg6IHRhYkluZGV4LCBvbktleURvd246IG9uS2V5RG93bkhhbmRsZXIsIHJlZjogdHJlZUl0ZW1SZWYsIGhvdmVyQ29sb3I6IGhvdmVyQ29sb3IgfSksXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEl0ZW1XcmFwcGVyLCB7IFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkID8/IGl0ZW1JZH0taXRlbXdyYXBwZXJgLCBkZXB0aDogaXRlbURlcHRoLCBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgaGFzQ3VzdG9tSWNvblNpemU6ICEhZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSwgaWQ6IGAke2l0ZW1JZH0taXRlbXdyYXBwZXJgLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgbm9kZVR5cGU6IG5vZGVUeXBlLCBzZWxlY3RhYmxlOiBzZWxlY3RhYmxlLCBzdHlsZTogc3R5bGUsIHRoZW1lOiB0aGVtZSwgcmVmOiBtZXJnZVJlZnMocmVmLCBmb2N1c1RyYXBFbGVtZW50KSwgb25DbGljazogaGFuZGxlT25DbGljayB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRFeHBhbmRXcmFwcGVyLCB7IFwiYXJpYS1oaWRkZW5cIjogQm9vbGVhbighZXhwYW5kZWQpLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplLCBjb2xvcjogZXhwYW5kSWNvblN0eWxlcz8uY29sb3IsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZXhwYW5kYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG9uQ2xpY2s6IGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRXhwYW5kZWRDbGlja2VkKGV2ZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhlbWU6IHRoZW1lIH0sIGV4cGFuZGVkID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRXhwYW5kTW9yZUljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZXZyb25SaWdodEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSkpLFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3VsZFNob3dDaGVja2JveCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZENoZWNrYm94V3JhcHBlciwgeyBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgdGhlbWU6IHRoZW1lIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEluZGV0ZXJtaW5hdGVDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBzdGF0dXM6IGNoZWNrZWRTdGF0dXMgfSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IGNoZWNrZWQ6IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4oY2hlY2tlZFN0YXR1cykgfSkpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpKSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZD8udHlwZSA9PT0gVHJlZUl0ZW0gPyAoUmVhY3QuY3JlYXRlRWxlbWVudChUcmFuc2l0aW9uLCB7IGlzT3BlbjogZXhwYW5kZWQsIHVubW91bnRPbkV4aXQ6IHRydWUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInVsXCIsIHsgcm9sZTogXCJncm91cFwiIH0sIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLnByb3BzLml0ZW1JZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudERlcHRoLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSkpKSA6IChjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB9KSkpKSk7XHJcbn0pO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1UcmVlSXRlbS5qcy5tYXAiXX0= */"));
23366
+ }, "px;vertical-align:middle;}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF3RmdDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSAnLi4vQ2hlY2tib3gnO1xyXG5pbXBvcnQgeyBJbmRldGVybWluYXRlQ2hlY2tib3gsIEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cywgfSBmcm9tICcuLi9JbmRldGVybWluYXRlQ2hlY2tib3gnO1xyXG5pbXBvcnQgeyBUcmFuc2l0aW9uIH0gZnJvbSAnLi4vVHJhbnNpdGlvbic7XHJcbmNvbnN0IFN0eWxlZFRyZWVJdGVtID0gc3R5bGVkLmxpIGBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMTAwXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsNzAwfTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGVUeXBlLCBwcm9wcy5ub2RlVHlwZSl9O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6ICR7cHJvcHMgPT4gY2FsY3VsYXRlT2Zmc2V0KHByb3BzLm5vZGVUeXBlLCBwcm9wcy5kZXB0aCl9O1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAmID4gKjpmaXJzdC1jaGlsZCB7XG4gICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgIG91dGxpbmU6IDJweCBzb2xpZFxuICAgICAgICAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXNJbnZlcnNlXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5mb2N1c307XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUpfTtcbiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIHRydWUpfTtcbiAgICBwYWRkaW5nLWJsb2NrLWVuZDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1ibG9jay1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG5cbiAgICAke3Byb3BzID0+IHByb3BzLnNlbGVjdGVkICYmXHJcbiAgICBjc3MgYFxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMuaXNJbnZlcnNlXHJcbiAgICAgICAgPyBwcm9wcy50aGVtZS5jb2xvcnMudGVydGlhcnk1MDBcclxuICAgICAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5wcmltYXJ5NTAwfTtcbiAgICAgICAgICBibG9jay1zaXplOiAxMDAlO1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIGlubGluZS1zaXplOiAke3Byb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAyfTtcbiAgICAgICAgICBpbnNldC1ibG9jay1zdGFydDogMDtcbiAgICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgICAgIH1cbiAgICAgIGB9XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IGdldEhvdmVyQmFja2dyb3VuZCh7XHJcbiAgICBpc0Rpc2FibGVkOiBwcm9wcy5pc0Rpc2FibGVkLFxyXG4gICAgaG92ZXJDb2xvcjogcHJvcHMuaG92ZXJDb2xvcixcclxuICAgIGlzSW52ZXJzZTogcHJvcHMuaXNJbnZlcnNlLFxyXG4gICAgdGhlbWU6IHByb3BzLnRoZW1lLFxyXG59KX07XG4gICAgfVxuICB9XG5gO1xyXG5mdW5jdGlvbiBnZXRIb3ZlckJhY2tncm91bmQoeyBpc0Rpc2FibGVkLCBob3ZlckNvbG9yLCBpc0ludmVyc2UsIHRoZW1lIH0pIHtcclxuICAgIGlmIChpc0Rpc2FibGVkKVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICBpZiAoaG92ZXJDb2xvcilcclxuICAgICAgICByZXR1cm4gaG92ZXJDb2xvcjtcclxuICAgIGNvbnN0IHRyYW5zcGFyZW5jeSA9IGlzSW52ZXJzZSA/IDAuOCA6IDAuOTU7XHJcbiAgICByZXR1cm4gdHJhbnNwYXJlbnRpemUodHJhbnNwYXJlbmN5LCB0aGVtZS5jb2xvcnMubmV1dHJhbDkwMCk7XHJcbn1cclxuY29uc3QgSWNvbldyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGNvbG9yOiAke3Byb3BzID0+IGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIG1hcmdpbi1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM307XG4gIG1hcmdpbi1sZWZ0OiAwO1xuXG4gIHN2ZyB7XG4gICAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaWNvblNpemVzLm1lZGl1bX1weDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB9XG5gO1xyXG5jb25zdCBTdHlsZWRMYWJlbFdyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICB3aWR0aDogMTAwJTtcbmA7XHJcbmNvbnN0IFN0eWxlZEV4cGFuZFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5jb2xvciB8fFxyXG4gICAgZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgd2lkdGg6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG4gIGhlaWdodDogJHsoeyBzaXplLCB0aGVtZSB9KSA9PiBzaXplICE9PSB1bmRlZmluZWQgPyBgJHtzaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5jb25zdCBUcmVlSXRlbUNvbXBvbmVudCA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpID0+IHtcclxuICAgIGNvbnN0IHsgYWRkaXRpb25hbENvbnRlbnQsIGNoaWxkcmVuLCBob3ZlckNvbG9yLCBpY29uLCBpbmRleDogaW5kZXhQcm9wLCBsYWJlbCwgbGFiZWxTdHlsZSwgc3R5bGUsIHRlc3RJZCwgdG9wTGV2ZWw6IHRvcExldmVsUHJvcCwgdHJlZUl0ZW1TdHlsZXMsIC4uLnJlc3QgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XHJcbiAgICBjb25zdCBpc0ludmVyc2UgPSB1c2VJc0ludmVyc2UoKTtcclxuICAgIC8vIFJlYWQgaGllcmFyY2h5IGluZm9ybWF0aW9uIGZyb20gY29udGV4dCAocmVkdWNlcyBjbG9uZUVsZW1lbnQgb3ZlcmhlYWQpXHJcbiAgICBjb25zdCBoaWVyYXJjaHlDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChUcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQpO1xyXG4gICAgLy8gVXNlIGNvbnRleHQgdmFsdWVzIGlmIHByb3BzIGFyZSBub3QgcHJvdmlkZWQgKGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KVxyXG4gICAgY29uc3QgaW5kZXggPSBpbmRleFByb3AgIT09IHVuZGVmaW5lZCA/IGluZGV4UHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaW5kZXg7XHJcbiAgICBjb25zdCB0b3BMZXZlbCA9IHRvcExldmVsUHJvcCAhPT0gdW5kZWZpbmVkID8gdG9wTGV2ZWxQcm9wIDogaGllcmFyY2h5Q29udGV4dC5pc1RvcExldmVsO1xyXG4gICAgLy8gQ29uc3VtZSBzcGxpdCBjb250ZXh0cyBmb3IgcmVkdWNlZCByZS1yZW5kZXIgc2NvcGVcclxuICAgIGNvbnN0IHsgaXRlbVRvRm9jdXMgfSA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0KTtcclxuICAgIGNvbnN0IHsgaGFuZGxlRXhwYW5kZWRDaGFuZ2UgfSA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZVZpZXdFeHBhbnNpb25Db250ZXh0KTtcclxuICAgIGNvbnN0IHsgZXhwYW5kSWNvblN0eWxlcywgaGFzSWNvbnMsIGlzVG9wTGV2ZWxTZWxlY3RhYmxlLCBzZWxlY3RhYmxlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgY2hlY2tib3hDaGFuZ2VIYW5kbGVyLCBjaGVja2VkU3RhdHVzLCBleHBhbmRlZCwgaGFzT3duVHJlZUl0ZW1zLCBpdGVtRGVwdGgsIGl0ZW1JZCwgcmVmLCBzZWxlY3RlZEl0ZW1zLCB9ID0gY29udGV4dFZhbHVlO1xyXG4gICAgY29uc3Qgbm9kZVR5cGUgPSBoYXNPd25UcmVlSXRlbXMgPyBUcmVlTm9kZVR5cGUuYnJhbmNoIDogVHJlZU5vZGVUeXBlLmxlYWY7XHJcbiAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUuc2luZ2xlXHJcbiAgICAgICAgPyBzZWxlY3RlZEl0ZW1zPy5bMF0/Lml0ZW1JZCA9PT0gaXRlbUlkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgYXJpYUNoZWNrZWRWYWx1ZSA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aVxyXG4gICAgICAgID8gY2hlY2tlZFN0YXR1cyA9PT0gSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLmluZGV0ZXJtaW5hdGVcclxuICAgICAgICAgICAgPyAnbWl4ZWQnXHJcbiAgICAgICAgICAgIDogY2hlY2tlZFN0YXR1cyA9PT0gSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLmNoZWNrZWRcclxuICAgICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBbaXNJbnNpZGVUcmVlSXRlbSwgc2V0SXNJbnNpZGVUcmVlSXRlbV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XHJcbiAgICBjb25zdCB0cmVlSXRlbVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcclxuICAgIGNvbnN0IGZvY3VzVHJhcEVsZW1lbnQgPSB1c2VGb2N1c0xvY2soaXNJbnNpZGVUcmVlSXRlbSk7XHJcbiAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzID0gJ2J1dHRvbiwgW3JvbGU9XCJidXR0b25cIl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBhW2hyZWZdLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9XCItMVwiXSknO1xyXG4gICAgY29uc3QgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyA9IFJlYWN0LnVzZUNhbGxiYWNrKChjb250YWluZXIsIHNlbGVjdG9yKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKS5maWx0ZXIoZWwgPT4gIWVsLmhhc0F0dHJpYnV0ZSgndGFiaW5kZXgnKSB8fFxyXG4gICAgICAgICAgICAoZWwudGFiSW5kZXggIT09IHVuZGVmaW5lZCAmJiBlbC50YWJJbmRleCA+PSAwKSk7XHJcbiAgICB9LCBbXSk7XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgbGFiZWwgYW5kIGFkZGl0aW9uYWwgY29udGVudCBvZiBhIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBZb3UgY2FuIG5hdmlnYXRlIHRocm91Z2ggaW50ZXJhY3RpdmUgZWxlbWVudHMgdXNpbmcgdGhlIGBUYWJgIGtleSwgYWN0aXZhdGUgdGhlbSB3aXRoIGBFbnRlcmAgb3IgYFNwYWNlYCxcclxuICAgICAqIGFuZCBleGl0IG91dHNpZGUgYW5kIGZvY3VzIHRoZSB3aG9sZSB0cmVlIGl0ZW0gd2l0aCBgRXNjYXBlYC5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3QgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24gPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0LCBzaGlmdEtleSB9ID0gZXZlbnQ7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSB0YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaXNFbnRlciA9IGtleSA9PT0gJ0VudGVyJztcclxuICAgICAgICBjb25zdCBpc1NwYWNlID0ga2V5ID09PSAnICc7XHJcbiAgICAgICAgY29uc3QgaXNFc2NhcGUgPSBrZXkgPT09ICdFc2NhcGUnO1xyXG4gICAgICAgIGNvbnN0IGlzVGFiID0ga2V5ID09PSAnVGFiJztcclxuICAgICAgICBjb25zdCBpc0FjdGl2YXRpb25LZXkgPSBpc0VudGVyIHx8IGlzU3BhY2U7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdChpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAvLyBJZiB0aGUga2V5IGlzIGBUYWJgLCB3ZSBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzVGFiICYmIGlzSW5zaWRlVHJlZUl0ZW0pIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICAvLyBGaWx0ZXIgbGlzdCBvZiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGljaCBhcmUgb25seSBpbmNsdWRlZCBmb3IgY3VycmVudCB0cmVlIGl0ZW1cclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0LmZpbHRlcihlbCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0VHJlZUl0ZW0gPSBlbC5jbG9zZXN0KCdbcm9sZT1cInRyZWVpdGVtXCJdJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdFRyZWVJdGVtID09PSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5pbmRleE9mKGN1cnJlbnRFbGVtZW50KTtcclxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gc2hpZnRLZXkgPyAtMSA6IDE7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGNvbnN0IG5leHRJbmRleCA9IChjdXJyZW50SW5kZXggKyBkaXJlY3Rpb24gKyB0b3RhbCkgJSB0b3RhbDtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFRvRm9jdXMgPSBjdXJyZW50VHJlZUl0ZW1JbnRlcmFjdGl2ZUVsZW1lbnRzW25leHRJbmRleF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBlbGVtZW50VG9Gb2N1cy5mb2N1cygpLCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFByZXNzaW5nIGBFbnRlcmAgb3IgYFNwYWNlYCBvbiBhbiBpbnRlcmFjdGl2ZSBlbGVtZW50IHdpbGwgdHJpZ2dlciBpdHMgY2xpY2sgZXZlbnRcclxuICAgICAgICBpZiAoaXNBY3RpdmF0aW9uS2V5ICYmIGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTW92ZXMgZm9jdXMgb3V0c2lkZSB0aGUgdHJlZSBpdGVtIGFuZCBmb2N1c2VzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmIHdoZW4gYEVzY2FwZWAgaXMgcHJlc3NlZFxyXG4gICAgICAgIGlmIChpc0VzY2FwZSkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbShmYWxzZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRyZWVJdGVtTm9kZSA9IHRyZWVJdGVtUmVmLmN1cnJlbnQ7XHJcbiAgICAgICAgICAgIGlmICh0cmVlSXRlbU5vZGUpIHtcclxuICAgICAgICAgICAgICAgIHRyZWVJdGVtTm9kZS5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbZ2V0SW50ZXJhY3RpdmVFbGVtZW50cywgaW50ZXJhY3RpdmVFbGVtZW50cywgaXNJbnNpZGVUcmVlSXRlbV0pO1xyXG4gICAgY29uc3QgaGFuZGxlT25DbGljayA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoJ2J1dHRvbiwgW3JvbGU9XCJidXR0b25cIl0sIGFbaHJlZl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbcm9sZT1cIm1lbnVpdGVtXCJdJyk7XHJcbiAgICAgICAgLy8gUHJldmVudGluZyBzZWxlY3RpbmcgdGhlIGl0ZW0gd2hlbiBjbGlja2luZyBvbiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGVuIGBzZWxlY3RhYmxlYCBpcyBgc2luZ2xlYFxyXG4gICAgICAgIGlmIChpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5zaW5nbGUpIHtcclxuICAgICAgICAgICAgaGFuZGxlQ2xpY2soZXZlbnQsIGl0ZW1JZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIHNlbGVjdGFibGUsIGhhbmRsZUNsaWNrLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gbm9kZVR5cGUgPT09IFRyZWVOb2RlVHlwZS5icmFuY2ggPyAoUmVhY3QuY3JlYXRlRWxlbWVudChGb2xkZXJJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChBcnRpY2xlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUgfSkpO1xyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkTGFiZWxXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHN0eWxlOiBsYWJlbFN0eWxlLCBpZDogYCR7aXRlbUlkfS1sYWJlbGAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tbGFiZWxgIH0sXHJcbiAgICAgICAgaGFzSWNvbnMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbldyYXBwZXIsIHsgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1pY29uYCB9LCBpY29uIHx8IGRlZmF1bHRJY29uKSksXHJcbiAgICAgICAgbGFiZWwpKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBhZGRpdGlvbmFsQ29udGVudCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEFkZGl0aW9uYWxDb250ZW50V3JhcHBlciwgeyB0aGVtZTogdGhlbWUsIGlkOiBgJHtpdGVtSWR9LWFkZGl0aW9uYWxjb250ZW50d3JhcHBlcmAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkID8/IGl0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCB9LCBhZGRpdGlvbmFsQ29udGVudCkpIDogbnVsbDtcclxuICAgIC8vIE1lbW9pemUgaW5saW5lIHN0eWxlIG9iamVjdHMgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSByZS1yZW5kZXJzXHJcbiAgICBjb25zdCBjaGVja2JveElucHV0U3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7IG1hcmdpblJpZ2h0OiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMyB9KSwgW3RoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzXSk7XHJcbiAgICBjb25zdCBjaGVja2JveExhYmVsU3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgcGFkZGluZzogMCxcclxuICAgICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgfSksIFtdKTtcclxuICAgIC8vIFByb3BzIHNoYXJlZCBieSBDaGVja2JveCBhbmQgSW5kZXRlcm1pbmF0ZUNoZWNrYm94XHJcbiAgICBjb25zdCBjaGVja2JveFByb3BzID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xyXG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxyXG4gICAgICAgIGhpZGVGb2N1czogdHJ1ZSxcclxuICAgICAgICBpZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICAgICAgaW5wdXRTdHlsZTogY2hlY2tib3hJbnB1dFN0eWxlLFxyXG4gICAgICAgIGxhYmVsU3R5bGU6IGNoZWNrYm94TGFiZWxTdHlsZSxcclxuICAgICAgICBsYWJlbFRleHQ6IGxhYmVsVGV4dCxcclxuICAgICAgICBvbkNoYW5nZTogY2hlY2tib3hDaGFuZ2VIYW5kbGVyLFxyXG4gICAgICAgIHRhYkluZGV4OiAtMSxcclxuICAgICAgICB0ZXN0SWQ6IGAke2l0ZW1JZH0tY2hlY2tib3hgLFxyXG4gICAgfSksIFtcclxuICAgICAgICBpc0Rpc2FibGVkLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dCxcclxuICAgICAgICBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IG9uRXhwYW5kZWRDbGlja2VkID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBoYW5kbGVFeHBhbmRlZENoYW5nZShldmVudCwgaXRlbUlkKTtcclxuICAgIH0sIFtoYW5kbGVFeHBhbmRlZENoYW5nZSwgaXRlbUlkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVFeHBhbmRDbGljayA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmICghaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVG9Gb2N1cyA9PT0gaXRlbUlkID8gMCA6IC0xO1xyXG4gICAgfSwgW2lzRGlzYWJsZWQsIGl0ZW1Ub0ZvY3VzLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IHNob3VsZFNob3dDaGVja2JveCA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSAmJlxyXG4gICAgICAgIChpc1RvcExldmVsU2VsZWN0YWJsZSAhPT0gZmFsc2UgfHwgIXRvcExldmVsKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogUHJlc3NpbmcgYEN0cmwgKyBFbnRlcmAgb3IgYENvbW1hbmQgKyBFbnRlcmAgZm9jdXNlcyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudCB3aXRoaW4gdGhlIHRyZWUgaXRlbVxyXG4gICAgICogYW5kIGxvY2tzIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBmb2N1cyBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaXQgaGFuZGxlcyBrZXkgZXZlbnRzIGZvciBpbnRlcmFjdGlvbiBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBJdCBhbHNvIGhhbmRsZXMgdGhlIG90aGVyIGtleXMgdG8gdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsT3JDb21tYW5kID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5O1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybEVudGVyID0gaXNDdHJsT3JDb21tYW5kICYmIGlzRW50ZXI7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBDdHJsICsgRW50ZXIgb3IgQ29tbWFuZCArIEVudGVyLCBmb2N1cyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudFxyXG4gICAgICAgIC8vIGFuZCBsb2NrIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzQ3RybEVudGVyICYmIHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3RbMF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHZhbGlkIENTUyBzZWxlY3RvcnMgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuLCBwZXJpb2RzIGluIGl0ZW1JZClcclxuICAgICAgICBjb25zdCBzYWZlSXRlbUlkID0gQ1NTLmVzY2FwZShpdGVtSWQpO1xyXG4gICAgICAgIGNvbnN0IGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50ID0gdGFyZ2V0LmNsb3Nlc3QoYCMke3NhZmVJdGVtSWR9LWxhYmVsLCAjJHtzYWZlSXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgKTtcclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBoYW5kbGUga2V5IGV2ZW50cyBmb3IgdGhvc2UgYXJlYXNcclxuICAgICAgICBpZiAoaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYsIGhhbmRsZSBrZXkgZG93biBmb3IgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgaGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbXHJcbiAgICAgICAgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnRzLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICBoYW5kbGVMYWJlbEFuZEFkZGl0aW9uYWxDb250ZW50S2V5RG93bixcclxuICAgICAgICBoYW5kbGVLZXlEb3duLFxyXG4gICAgXSk7XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb250ZXh0VmFsdWUgfSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IHRyZWVJdGVtU3R5bGVzIH0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkVHJlZUl0ZW0sIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgXCJhcmlhLWV4cGFuZGVkXCI6IGhhc093blRyZWVJdGVtcyA/IGV4cGFuZGVkIDogbnVsbCwgXCJhcmlhLXNlbGVjdGVkXCI6IHNlbGVjdGVkSXRlbSwgXCJhcmlhLWNoZWNrZWRcIjogc2hvdWxkU2hvd0NoZWNrYm94ID8gYXJpYUNoZWNrZWRWYWx1ZSA6IG51bGwsIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLCBkZXB0aDogaXRlbURlcHRoLCBoYXNPd25UcmVlSXRlbXM6IGhhc093blRyZWVJdGVtcywgaWQ6IGl0ZW1JZCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG5vZGVUeXBlOiBub2RlVHlwZSwgcm9sZTogXCJ0cmVlaXRlbVwiLCBzZWxlY3RhYmxlVHlwZTogc2VsZWN0YWJsZSwgc2VsZWN0ZWQ6IHNlbGVjdGVkSXRlbSwgdGhlbWU6IHRoZW1lLCB0YWJJbmRleDogdGFiSW5kZXgsIG9uS2V5RG93bjogb25LZXlEb3duSGFuZGxlciwgcmVmOiB0cmVlSXRlbVJlZiwgaG92ZXJDb2xvcjogaG92ZXJDb2xvciB9KSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkSXRlbVdyYXBwZXIsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1pdGVtd3JhcHBlcmAsIGRlcHRoOiBpdGVtRGVwdGgsIGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCBoYXNDdXN0b21JY29uU2l6ZTogISFleHBhbmRJY29uU3R5bGVzPy5zaXplLCBpZDogYCR7aXRlbUlkfS1pdGVtd3JhcHBlcmAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBub2RlVHlwZTogbm9kZVR5cGUsIHNlbGVjdGFibGU6IHNlbGVjdGFibGUsIHN0eWxlOiBzdHlsZSwgdGhlbWU6IHRoZW1lLCByZWY6IG1lcmdlUmVmcyhyZWYsIGZvY3VzVHJhcEVsZW1lbnQpLCBvbkNsaWNrOiBoYW5kbGVPbkNsaWNrIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEV4cGFuZFdyYXBwZXIsIHsgXCJhcmlhLWhpZGRlblwiOiBCb29sZWFuKCFleHBhbmRlZCksIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUsIGNvbG9yOiBleHBhbmRJY29uU3R5bGVzPy5jb2xvciwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1leHBhbmRgLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgb25DbGljazogaGFuZGxlRXhwYW5kQ2xpY2ssIHRoZW1lOiB0aGVtZSB9LCBleHBhbmRlZCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEV4cGFuZE1vcmVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChDaGV2cm9uUmlnaHRJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSB9KSkpKSxcclxuICAgICAgICAgICAgICAgICAgICBzaG91bGRTaG93Q2hlY2tib3ggPyAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRDaGVja2JveFdyYXBwZXIsIHsgaGFzQWRkaXRpb25hbENvbnRlbnQ6ICEhYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lOiB0aGVtZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChJbmRldGVybWluYXRlQ2hlY2tib3gsIE9iamVjdC5hc3NpZ24oe30sIGNoZWNrYm94UHJvcHMsIHsgc3RhdHVzOiBjaGVja2VkU3RhdHVzIH0pKSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBjaGVja2VkOiBjaGVja2VkU3RhdHVzVG9Cb29sZWFuKGNoZWNrZWRTdGF0dXMpIH0pKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbFRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQpKSksXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sIChjaGlsZCwgY2hpbGRJbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZD8udHlwZSAhPT0gVHJlZUl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyBQYXNzIGhpZXJhcmNoeSBpbmZvIHRocm91Z2ggY29udGV4dCBpbnN0ZWFkIG9mIGNsb25lRWxlbWVudFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5lc3RlZEhpZXJhcmNoeVZhbHVlID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXB0aDogaXRlbURlcHRoICsgMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3BMZXZlbDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBjaGlsZEluZGV4LFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyYW5zaXRpb24sIHsgaXNPcGVuOiBleHBhbmRlZCwgdW5tb3VudE9uRXhpdDogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgeyByb2xlOiBcImdyb3VwXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0LlByb3ZpZGVyLCB7IGtleTogY2hpbGQucHJvcHMuaXRlbUlkLCB2YWx1ZTogbmVzdGVkSGllcmFyY2h5VmFsdWUgfSwgY2hpbGQpKSkpO1xyXG4gICAgICAgICAgICAgICAgfSkpKSkpO1xyXG59KTtcclxuLyoqXHJcbiAqIEN1c3RvbSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBSZWFjdC5tZW1vXHJcbiAqIE9ubHkgcmUtcmVuZGVyIFRyZWVJdGVtIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlXHJcbiAqL1xyXG5mdW5jdGlvbiBhcmVQcm9wc0VxdWFsKHByZXZQcm9wcywgbmV4dFByb3BzKSB7XHJcbiAgICAvLyBDaGVjayBpZiBpdGVtSWQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5pdGVtSWQgIT09IG5leHRQcm9wcy5pdGVtSWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBsYWJlbCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsICE9PSBuZXh0UHJvcHMubGFiZWwpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBkaXNhYmxlZCBzdGF0ZSBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmlzRGlzYWJsZWQgIT09IG5leHRQcm9wcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaWNvbiBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmljb24gIT09IG5leHRQcm9wcy5pY29uKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgYWRkaXRpb25hbCBjb250ZW50IGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuYWRkaXRpb25hbENvbnRlbnQgIT09IG5leHRQcm9wcy5hZGRpdGlvbmFsQ29udGVudCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGhvdmVyIGNvbG9yIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaG92ZXJDb2xvciAhPT0gbmV4dFByb3BzLmhvdmVyQ29sb3IpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBjaGlsZHJlbiBjaGFuZ2VkIChmb3IgbmVzdGVkIHRyZWUgaXRlbXMpXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBjaGlsZHJlbiBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLmNoaWxkcmVuICE9PSBuZXh0UHJvcHMuY2hpbGRyZW4pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBzdHlsZXMgY2hhbmdlZFxyXG4gICAgLy8gVXNpbmcgdHlwZSBhc3NlcnRpb24gc2luY2Ugc3R5bGUgY29tZXMgZnJvbSBSZWFjdC5IVE1MQXR0cmlidXRlc1xyXG4gICAgaWYgKHByZXZQcm9wcy5zdHlsZSAhPT0gbmV4dFByb3BzLnN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy5sYWJlbFN0eWxlICE9PSBuZXh0UHJvcHMubGFiZWxTdHlsZSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChwcmV2UHJvcHMudHJlZUl0ZW1TdHlsZXMgIT09IG5leHRQcm9wcy50cmVlSXRlbVN0eWxlcykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIEFsbCByZWxldmFudCBwcm9wcyBhcmUgZXF1YWwsIHNraXAgcmUtcmVuZGVyXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG4vKipcclxuICogTWVtb2l6ZWQgVHJlZUl0ZW0gY29tcG9uZW50XHJcbiAqIE9ubHkgcmUtcmVuZGVycyB3aGVuIHJlbGV2YW50IHByb3BzIGNoYW5nZSwgaW1wcm92aW5nIHBlcmZvcm1hbmNlIGZvciBsYXJnZSB0cmVlc1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFRyZWVJdGVtID0gUmVhY3QubWVtbyhUcmVlSXRlbUNvbXBvbmVudCwgYXJlUHJvcHNFcXVhbCk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRyZWVJdGVtLmpzLm1hcCJdfQ== */"));
22857
23367
  var StyledLabelWrapper = /*#__PURE__*/_styled("span", {
22858
23368
  target: "e1xiryew4",
22859
23369
  label: "StyledLabelWrapper"
22860
23370
  })("display:flex;align-items:flex-start;color:", function (props) {
22861
23371
  return getTreeItemLabelColor(props.isInverse, props.isDisabled, props.theme);
22862
- }, ";width:100%;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnR3VDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3Q29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyB1c2VJc0ludmVyc2UgfSBmcm9tICcuLi8uLi9pbnZlcnNlJztcclxuaW1wb3J0IHsgVGhlbWVDb250ZXh0IH0gZnJvbSAnLi4vLi4vdGhlbWUvVGhlbWVDb250ZXh0JztcclxuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCc7XHJcbmltcG9ydCB7IEluZGV0ZXJtaW5hdGVDaGVja2JveCwgSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLCB9IGZyb20gJy4uL0luZGV0ZXJtaW5hdGVDaGVja2JveCc7XHJcbmltcG9ydCB7IFRyYW5zaXRpb24gfSBmcm9tICcuLi9UcmFuc2l0aW9uJztcclxuaW1wb3J0IHsgY2FsY3VsYXRlT2Zmc2V0LCBnZXRUcmVlSXRlbUxhYmVsQ29sb3IsIGdldFRyZWVJdGVtV3JhcHBlckN1cnNvciwgVHJlZU5vZGVUeXBlLCB9IGZyb20gJy4vdXRpbHMnO1xyXG5pbXBvcnQgeyB1c2VGb2N1c0xvY2sgfSBmcm9tICcuLi8uLi9ob29rcy91c2VGb2N1c0xvY2snO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmNvbnN0IFN0eWxlZFRyZWVJdGVtID0gc3R5bGVkLmxpIGBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMTAwXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsNzAwfTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGVUeXBlLCBwcm9wcy5ub2RlVHlwZSl9O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6ICR7cHJvcHMgPT4gY2FsY3VsYXRlT2Zmc2V0KHByb3BzLm5vZGVUeXBlLCBwcm9wcy5kZXB0aCl9O1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAmID4gKjpmaXJzdC1jaGlsZCB7XG4gICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgIG91dGxpbmU6IDJweCBzb2xpZFxuICAgICAgICAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXNJbnZlcnNlXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5mb2N1c307XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUpfTtcbiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIHRydWUpfTtcbiAgICBwYWRkaW5nLWJsb2NrLWVuZDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1ibG9jay1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG5cbiAgICAke3Byb3BzID0+IHByb3BzLnNlbGVjdGVkICYmXHJcbiAgICBjc3MgYFxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMuaXNJbnZlcnNlXHJcbiAgICAgICAgPyBwcm9wcy50aGVtZS5jb2xvcnMudGVydGlhcnk1MDBcclxuICAgICAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5wcmltYXJ5NTAwfTtcbiAgICAgICAgICBibG9jay1zaXplOiAxMDAlO1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIGlubGluZS1zaXplOiAke3Byb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAyfTtcbiAgICAgICAgICBpbnNldC1ibG9jay1zdGFydDogMDtcbiAgICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgICAgIH1cbiAgICAgIGB9XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IGdldEhvdmVyQmFja2dyb3VuZCh7XHJcbiAgICBpc0Rpc2FibGVkOiBwcm9wcy5pc0Rpc2FibGVkLFxyXG4gICAgaG92ZXJDb2xvcjogcHJvcHMuaG92ZXJDb2xvcixcclxuICAgIGlzSW52ZXJzZTogcHJvcHMuaXNJbnZlcnNlLFxyXG4gICAgdGhlbWU6IHByb3BzLnRoZW1lLFxyXG59KX07XG4gICAgfVxuICB9XG5gO1xyXG5mdW5jdGlvbiBnZXRIb3ZlckJhY2tncm91bmQoeyBpc0Rpc2FibGVkLCBob3ZlckNvbG9yLCBpc0ludmVyc2UsIHRoZW1lIH0pIHtcclxuICAgIGlmIChpc0Rpc2FibGVkKVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICBpZiAoaG92ZXJDb2xvcilcclxuICAgICAgICByZXR1cm4gaG92ZXJDb2xvcjtcclxuICAgIGNvbnN0IHRyYW5zcGFyZW5jeSA9IGlzSW52ZXJzZSA/IDAuOCA6IDAuOTU7XHJcbiAgICByZXR1cm4gdHJhbnNwYXJlbnRpemUodHJhbnNwYXJlbmN5LCB0aGVtZS5jb2xvcnMubmV1dHJhbDkwMCk7XHJcbn1cclxuY29uc3QgSWNvbldyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGNvbG9yOiAke3Byb3BzID0+IGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIG1hcmdpbi1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM307XG4gIG1hcmdpbi1sZWZ0OiAwO1xuXG4gIHN2ZyB7XG4gICAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaWNvblNpemVzLm1lZGl1bX1weDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB9XG5gO1xyXG5jb25zdCBTdHlsZWRMYWJlbFdyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICB3aWR0aDogMTAwJTtcbmA7XHJcbmNvbnN0IFN0eWxlZEV4cGFuZFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5jb2xvciB8fFxyXG4gICAgZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgd2lkdGg6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG4gIGhlaWdodDogJHsoeyBzaXplLCB0aGVtZSB9KSA9PiBzaXplICE9PSB1bmRlZmluZWQgPyBgJHtzaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXgsIGxhYmVsLCBsYWJlbFN0eWxlLCBzdHlsZSwgdGVzdElkLCB0b3BMZXZlbCwgdHJlZUl0ZW1TdHlsZXMsIC4uLnJlc3QgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XHJcbiAgICBjb25zdCBpc0ludmVyc2UgPSB1c2VJc0ludmVyc2UoKTtcclxuICAgIGNvbnN0IHsgZXhwYW5kSWNvblN0eWxlcywgaGFuZGxlRXhwYW5kZWRDaGFuZ2UsIGhhc0ljb25zLCBpdGVtVG9Gb2N1cywgaXNUb3BMZXZlbFNlbGVjdGFibGUsIHNlbGVjdGFibGUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNvbnRleHRWYWx1ZSwgaGFuZGxlQ2xpY2ssIGhhbmRsZUtleURvd24gfSA9IHVzZVRyZWVJdGVtKHByb3BzLCBmb3J3YXJkZWRSZWYpO1xyXG4gICAgY29uc3QgeyBpc0Rpc2FibGVkIH0gPSBjb250ZXh0VmFsdWU7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHBhcmVudERlcHRoLCByZWYsIHNlbGVjdGVkSXRlbXMsIH0gPSBjb250ZXh0VmFsdWU7XHJcbiAgICBjb25zdCBub2RlVHlwZSA9IGhhc093blRyZWVJdGVtcyA/IFRyZWVOb2RlVHlwZS5icmFuY2ggOiBUcmVlTm9kZVR5cGUubGVhZjtcclxuICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5zaW5nbGVcclxuICAgICAgICA/IHNlbGVjdGVkSXRlbXM/LlswXT8uaXRlbUlkID09PSBpdGVtSWRcclxuICAgICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBhcmlhQ2hlY2tlZFZhbHVlID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLm11bHRpXHJcbiAgICAgICAgPyBjaGVja2VkU3RhdHVzID09PSBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMuaW5kZXRlcm1pbmF0ZVxyXG4gICAgICAgICAgICA/ICdtaXhlZCdcclxuICAgICAgICAgICAgOiBjaGVja2VkU3RhdHVzID09PSBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMuY2hlY2tlZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IFtpc0luc2lkZVRyZWVJdGVtLCBzZXRJc0luc2lkZVRyZWVJdGVtXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xyXG4gICAgY29uc3QgZm9jdXNUcmFwRWxlbWVudCA9IHVzZUZvY3VzTG9jayhpc0luc2lkZVRyZWVJdGVtKTtcclxuICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHMgPSAnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIGFbaHJlZl0sIFt0YWJpbmRleF06bm90KFt0YWJpbmRleD1cIi0xXCJdKSc7XHJcbiAgICBjb25zdCBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzID0gKGNvbnRhaW5lciwgc2VsZWN0b3IpID0+IHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShjb250YWluZXIucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpLmZpbHRlcihlbCA9PiAhZWwuaGFzQXR0cmlidXRlKCd0YWJpbmRleCcpIHx8XHJcbiAgICAgICAgICAgIChlbC50YWJJbmRleCAhPT0gdW5kZWZpbmVkICYmIGVsLnRhYkluZGV4ID49IDApKTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgbGFiZWwgYW5kIGFkZGl0aW9uYWwgY29udGVudCBvZiBhIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBZb3UgY2FuIG5hdmlnYXRlIHRocm91Z2ggaW50ZXJhY3RpdmUgZWxlbWVudHMgdXNpbmcgdGhlIGBUYWJgIGtleSwgYWN0aXZhdGUgdGhlbSB3aXRoIGBFbnRlcmAgb3IgYFNwYWNlYCxcclxuICAgICAqIGFuZCBleGl0IG91dHNpZGUgYW5kIGZvY3VzIHRoZSB3aG9sZSB0cmVlIGl0ZW0gd2l0aCBgRXNjYXBlYC5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3QgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24gPSAoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0LCBzaGlmdEtleSB9ID0gZXZlbnQ7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSB0YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaXNFbnRlciA9IGtleSA9PT0gJ0VudGVyJztcclxuICAgICAgICBjb25zdCBpc1NwYWNlID0ga2V5ID09PSAnICc7XHJcbiAgICAgICAgY29uc3QgaXNFc2NhcGUgPSBrZXkgPT09ICdFc2NhcGUnO1xyXG4gICAgICAgIGNvbnN0IGlzVGFiID0ga2V5ID09PSAnVGFiJztcclxuICAgICAgICBjb25zdCBpc0FjdGl2YXRpb25LZXkgPSBpc0VudGVyIHx8IGlzU3BhY2U7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdChpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAvLyBJZiB0aGUga2V5IGlzIGBUYWJgLCB3ZSBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzVGFiICYmIGlzSW5zaWRlVHJlZUl0ZW0pIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICAvLyBGaWx0ZXIgbGlzdCBvZiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGljaCBhcmUgb25seSBpbmNsdWRlZCBmb3IgY3VycmVudCB0cmVlIGl0ZW1cclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0LmZpbHRlcihlbCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0VHJlZUl0ZW0gPSBlbC5jbG9zZXN0KCdbcm9sZT1cInRyZWVpdGVtXCJdJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdFRyZWVJdGVtID09PSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5pbmRleE9mKGN1cnJlbnRFbGVtZW50KTtcclxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gc2hpZnRLZXkgPyAtMSA6IDE7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGNvbnN0IG5leHRJbmRleCA9IChjdXJyZW50SW5kZXggKyBkaXJlY3Rpb24gKyB0b3RhbCkgJSB0b3RhbDtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFRvRm9jdXMgPSBjdXJyZW50VHJlZUl0ZW1JbnRlcmFjdGl2ZUVsZW1lbnRzW25leHRJbmRleF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBlbGVtZW50VG9Gb2N1cy5mb2N1cygpLCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFByZXNzaW5nIGBFbnRlcmAgb3IgYFNwYWNlYCBvbiBhbiBpbnRlcmFjdGl2ZSBlbGVtZW50IHdpbGwgdHJpZ2dlciBpdHMgY2xpY2sgZXZlbnRcclxuICAgICAgICBpZiAoaXNBY3RpdmF0aW9uS2V5ICYmIGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTW92ZXMgZm9jdXMgb3V0c2lkZSB0aGUgdHJlZSBpdGVtIGFuZCBmb2N1c2VzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmIHdoZW4gYEVzY2FwZWAgaXMgcHJlc3NlZFxyXG4gICAgICAgIGlmIChpc0VzY2FwZSkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbShmYWxzZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRyZWVJdGVtTm9kZSA9IHRyZWVJdGVtUmVmLmN1cnJlbnQ7XHJcbiAgICAgICAgICAgIGlmICh0cmVlSXRlbU5vZGUpIHtcclxuICAgICAgICAgICAgICAgIHRyZWVJdGVtTm9kZS5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaGFuZGxlT25DbGljayA9IChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoJ2J1dHRvbiwgW3JvbGU9XCJidXR0b25cIl0sIGFbaHJlZl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbcm9sZT1cIm1lbnVpdGVtXCJdJyk7XHJcbiAgICAgICAgLy8gUHJldmVudGluZyBzZWxlY3RpbmcgdGhlIGl0ZW0gd2hlbiBjbGlja2luZyBvbiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGVuIGBzZWxlY3RhYmxlYCBpcyBgc2luZ2xlYFxyXG4gICAgICAgIGlmIChpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5zaW5nbGUpIHtcclxuICAgICAgICAgICAgaGFuZGxlQ2xpY2soZXZlbnQsIGl0ZW1JZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gbm9kZVR5cGUgPT09IFRyZWVOb2RlVHlwZS5icmFuY2ggPyAoUmVhY3QuY3JlYXRlRWxlbWVudChGb2xkZXJJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChBcnRpY2xlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUgfSkpO1xyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkTGFiZWxXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHN0eWxlOiBsYWJlbFN0eWxlLCBpZDogYCR7aXRlbUlkfS1sYWJlbGAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tbGFiZWxgIH0sXHJcbiAgICAgICAgaGFzSWNvbnMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbldyYXBwZXIsIHsgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1pY29uYCB9LCBpY29uIHx8IGRlZmF1bHRJY29uKSksXHJcbiAgICAgICAgbGFiZWwpKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBhZGRpdGlvbmFsQ29udGVudCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEFkZGl0aW9uYWxDb250ZW50V3JhcHBlciwgeyB0aGVtZTogdGhlbWUsIGlkOiBgJHtpdGVtSWR9LWFkZGl0aW9uYWxjb250ZW50d3JhcHBlcmAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkID8/IGl0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCB9LCBhZGRpdGlvbmFsQ29udGVudCkpIDogbnVsbDtcclxuICAgIC8vIFByb3BzIHNoYXJlZCBieSBDaGVja2JveCBhbmQgSW5kZXRlcm1pbmF0ZUNoZWNrYm94XHJcbiAgICBjb25zdCBjaGVja2JveFByb3BzID0ge1xyXG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxyXG4gICAgICAgIGhpZGVGb2N1czogdHJ1ZSxcclxuICAgICAgICBpZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICAgICAgaW5wdXRTdHlsZTogeyBtYXJnaW5SaWdodDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDMgfSxcclxuICAgICAgICBsYWJlbFN0eWxlOiB7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDAsXHJcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBsYWJlbFRleHQ6IGxhYmVsVGV4dCxcclxuICAgICAgICBvbkNoYW5nZTogY2hlY2tib3hDaGFuZ2VIYW5kbGVyLFxyXG4gICAgICAgIHRhYkluZGV4OiAtMSxcclxuICAgICAgICB0ZXN0SWQ6IGAke2l0ZW1JZH0tY2hlY2tib3hgLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IG9uRXhwYW5kZWRDbGlja2VkID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBoYW5kbGVFeHBhbmRlZENoYW5nZShldmVudCwgaXRlbUlkKTtcclxuICAgIH07XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVG9Gb2N1cyA9PT0gaXRlbUlkID8gMCA6IC0xO1xyXG4gICAgfSwgW2lzRGlzYWJsZWQsIGl0ZW1Ub0ZvY3VzLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IHNob3VsZFNob3dDaGVja2JveCA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSAmJlxyXG4gICAgICAgIChpc1RvcExldmVsU2VsZWN0YWJsZSAhPT0gZmFsc2UgfHwgIXRvcExldmVsKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogUHJlc3NpbmcgYEN0cmwgKyBFbnRlcmAgb3IgYENvbW1hbmQgKyBFbnRlcmAgZm9jdXNlcyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudCB3aXRoaW4gdGhlIHRyZWUgaXRlbVxyXG4gICAgICogYW5kIGxvY2tzIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBmb2N1cyBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaXQgaGFuZGxlcyBrZXkgZXZlbnRzIGZvciBpbnRlcmFjdGlvbiBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBJdCBhbHNvIGhhbmRsZXMgdGhlIG90aGVyIGtleXMgdG8gdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsT3JDb21tYW5kID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5O1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybEVudGVyID0gaXNDdHJsT3JDb21tYW5kICYmIGlzRW50ZXI7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBDdHJsICsgRW50ZXIgb3IgQ29tbWFuZCArIEVudGVyLCBmb2N1cyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudFxyXG4gICAgICAgIC8vIGFuZCBsb2NrIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzQ3RybEVudGVyICYmIHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3RbMF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHZhbGlkIENTUyBzZWxlY3RvcnMgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuLCBwZXJpb2RzIGluIGl0ZW1JZClcclxuICAgICAgICBjb25zdCBzYWZlSXRlbUlkID0gQ1NTLmVzY2FwZShpdGVtSWQpO1xyXG4gICAgICAgIGNvbnN0IGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50ID0gdGFyZ2V0LmNsb3Nlc3QoYCMke3NhZmVJdGVtSWR9LWxhYmVsLCAjJHtzYWZlSXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgKTtcclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBoYW5kbGUga2V5IGV2ZW50cyBmb3IgdGhvc2UgYXJlYXNcclxuICAgICAgICBpZiAoaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYsIGhhbmRsZSBrZXkgZG93biBmb3IgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgaGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyZWVJdGVtQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogY29udGV4dFZhbHVlIH0sXHJcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHN0eWxlOiB0cmVlSXRlbVN0eWxlcyB9LFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZFRyZWVJdGVtLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IFwiYXJpYS1leHBhbmRlZFwiOiBoYXNPd25UcmVlSXRlbXMgPyBleHBhbmRlZCA6IG51bGwsIFwiYXJpYS1zZWxlY3RlZFwiOiBzZWxlY3RlZEl0ZW0sIFwiYXJpYS1jaGVja2VkXCI6IHNob3VsZFNob3dDaGVja2JveCA/IGFyaWFDaGVja2VkVmFsdWUgOiBudWxsLCBcImRhdGEtdGVzdGlkXCI6IHRlc3RJZCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzT3duVHJlZUl0ZW1zOiBoYXNPd25UcmVlSXRlbXMsIGlkOiBpdGVtSWQsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBub2RlVHlwZTogbm9kZVR5cGUsIHJvbGU6IFwidHJlZWl0ZW1cIiwgc2VsZWN0YWJsZVR5cGU6IHNlbGVjdGFibGUsIHNlbGVjdGVkOiBzZWxlY3RlZEl0ZW0sIHRoZW1lOiB0aGVtZSwgdGFiSW5kZXg6IHRhYkluZGV4LCBvbktleURvd246IG9uS2V5RG93bkhhbmRsZXIsIHJlZjogdHJlZUl0ZW1SZWYsIGhvdmVyQ29sb3I6IGhvdmVyQ29sb3IgfSksXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEl0ZW1XcmFwcGVyLCB7IFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkID8/IGl0ZW1JZH0taXRlbXdyYXBwZXJgLCBkZXB0aDogaXRlbURlcHRoLCBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgaGFzQ3VzdG9tSWNvblNpemU6ICEhZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSwgaWQ6IGAke2l0ZW1JZH0taXRlbXdyYXBwZXJgLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgbm9kZVR5cGU6IG5vZGVUeXBlLCBzZWxlY3RhYmxlOiBzZWxlY3RhYmxlLCBzdHlsZTogc3R5bGUsIHRoZW1lOiB0aGVtZSwgcmVmOiBtZXJnZVJlZnMocmVmLCBmb2N1c1RyYXBFbGVtZW50KSwgb25DbGljazogaGFuZGxlT25DbGljayB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRFeHBhbmRXcmFwcGVyLCB7IFwiYXJpYS1oaWRkZW5cIjogQm9vbGVhbighZXhwYW5kZWQpLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplLCBjb2xvcjogZXhwYW5kSWNvblN0eWxlcz8uY29sb3IsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZXhwYW5kYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG9uQ2xpY2s6IGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRXhwYW5kZWRDbGlja2VkKGV2ZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhlbWU6IHRoZW1lIH0sIGV4cGFuZGVkID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRXhwYW5kTW9yZUljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZXZyb25SaWdodEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSkpLFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3VsZFNob3dDaGVja2JveCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZENoZWNrYm94V3JhcHBlciwgeyBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgdGhlbWU6IHRoZW1lIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEluZGV0ZXJtaW5hdGVDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBzdGF0dXM6IGNoZWNrZWRTdGF0dXMgfSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IGNoZWNrZWQ6IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4oY2hlY2tlZFN0YXR1cykgfSkpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpKSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZD8udHlwZSA9PT0gVHJlZUl0ZW0gPyAoUmVhY3QuY3JlYXRlRWxlbWVudChUcmFuc2l0aW9uLCB7IGlzT3BlbjogZXhwYW5kZWQsIHVubW91bnRPbkV4aXQ6IHRydWUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInVsXCIsIHsgcm9sZTogXCJncm91cFwiIH0sIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLnByb3BzLml0ZW1JZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudERlcHRoLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSkpKSA6IChjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB9KSkpKSk7XHJcbn0pO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1UcmVlSXRlbS5qcy5tYXAiXX0= */"));
23372
+ }, ";width:100%;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtR3VDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSAnLi4vQ2hlY2tib3gnO1xyXG5pbXBvcnQgeyBJbmRldGVybWluYXRlQ2hlY2tib3gsIEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cywgfSBmcm9tICcuLi9JbmRldGVybWluYXRlQ2hlY2tib3gnO1xyXG5pbXBvcnQgeyBUcmFuc2l0aW9uIH0gZnJvbSAnLi4vVHJhbnNpdGlvbic7XHJcbmNvbnN0IFN0eWxlZFRyZWVJdGVtID0gc3R5bGVkLmxpIGBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMTAwXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsNzAwfTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGVUeXBlLCBwcm9wcy5ub2RlVHlwZSl9O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6ICR7cHJvcHMgPT4gY2FsY3VsYXRlT2Zmc2V0KHByb3BzLm5vZGVUeXBlLCBwcm9wcy5kZXB0aCl9O1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAmID4gKjpmaXJzdC1jaGlsZCB7XG4gICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgIG91dGxpbmU6IDJweCBzb2xpZFxuICAgICAgICAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXNJbnZlcnNlXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5mb2N1c307XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUpfTtcbiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIHRydWUpfTtcbiAgICBwYWRkaW5nLWJsb2NrLWVuZDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1ibG9jay1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG5cbiAgICAke3Byb3BzID0+IHByb3BzLnNlbGVjdGVkICYmXHJcbiAgICBjc3MgYFxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMuaXNJbnZlcnNlXHJcbiAgICAgICAgPyBwcm9wcy50aGVtZS5jb2xvcnMudGVydGlhcnk1MDBcclxuICAgICAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5wcmltYXJ5NTAwfTtcbiAgICAgICAgICBibG9jay1zaXplOiAxMDAlO1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIGlubGluZS1zaXplOiAke3Byb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAyfTtcbiAgICAgICAgICBpbnNldC1ibG9jay1zdGFydDogMDtcbiAgICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgICAgIH1cbiAgICAgIGB9XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IGdldEhvdmVyQmFja2dyb3VuZCh7XHJcbiAgICBpc0Rpc2FibGVkOiBwcm9wcy5pc0Rpc2FibGVkLFxyXG4gICAgaG92ZXJDb2xvcjogcHJvcHMuaG92ZXJDb2xvcixcclxuICAgIGlzSW52ZXJzZTogcHJvcHMuaXNJbnZlcnNlLFxyXG4gICAgdGhlbWU6IHByb3BzLnRoZW1lLFxyXG59KX07XG4gICAgfVxuICB9XG5gO1xyXG5mdW5jdGlvbiBnZXRIb3ZlckJhY2tncm91bmQoeyBpc0Rpc2FibGVkLCBob3ZlckNvbG9yLCBpc0ludmVyc2UsIHRoZW1lIH0pIHtcclxuICAgIGlmIChpc0Rpc2FibGVkKVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICBpZiAoaG92ZXJDb2xvcilcclxuICAgICAgICByZXR1cm4gaG92ZXJDb2xvcjtcclxuICAgIGNvbnN0IHRyYW5zcGFyZW5jeSA9IGlzSW52ZXJzZSA/IDAuOCA6IDAuOTU7XHJcbiAgICByZXR1cm4gdHJhbnNwYXJlbnRpemUodHJhbnNwYXJlbmN5LCB0aGVtZS5jb2xvcnMubmV1dHJhbDkwMCk7XHJcbn1cclxuY29uc3QgSWNvbldyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGNvbG9yOiAke3Byb3BzID0+IGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIG1hcmdpbi1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM307XG4gIG1hcmdpbi1sZWZ0OiAwO1xuXG4gIHN2ZyB7XG4gICAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaWNvblNpemVzLm1lZGl1bX1weDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB9XG5gO1xyXG5jb25zdCBTdHlsZWRMYWJlbFdyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICB3aWR0aDogMTAwJTtcbmA7XHJcbmNvbnN0IFN0eWxlZEV4cGFuZFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5jb2xvciB8fFxyXG4gICAgZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgd2lkdGg6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG4gIGhlaWdodDogJHsoeyBzaXplLCB0aGVtZSB9KSA9PiBzaXplICE9PSB1bmRlZmluZWQgPyBgJHtzaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5jb25zdCBUcmVlSXRlbUNvbXBvbmVudCA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpID0+IHtcclxuICAgIGNvbnN0IHsgYWRkaXRpb25hbENvbnRlbnQsIGNoaWxkcmVuLCBob3ZlckNvbG9yLCBpY29uLCBpbmRleDogaW5kZXhQcm9wLCBsYWJlbCwgbGFiZWxTdHlsZSwgc3R5bGUsIHRlc3RJZCwgdG9wTGV2ZWw6IHRvcExldmVsUHJvcCwgdHJlZUl0ZW1TdHlsZXMsIC4uLnJlc3QgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XHJcbiAgICBjb25zdCBpc0ludmVyc2UgPSB1c2VJc0ludmVyc2UoKTtcclxuICAgIC8vIFJlYWQgaGllcmFyY2h5IGluZm9ybWF0aW9uIGZyb20gY29udGV4dCAocmVkdWNlcyBjbG9uZUVsZW1lbnQgb3ZlcmhlYWQpXHJcbiAgICBjb25zdCBoaWVyYXJjaHlDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChUcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQpO1xyXG4gICAgLy8gVXNlIGNvbnRleHQgdmFsdWVzIGlmIHByb3BzIGFyZSBub3QgcHJvdmlkZWQgKGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KVxyXG4gICAgY29uc3QgaW5kZXggPSBpbmRleFByb3AgIT09IHVuZGVmaW5lZCA/IGluZGV4UHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaW5kZXg7XHJcbiAgICBjb25zdCB0b3BMZXZlbCA9IHRvcExldmVsUHJvcCAhPT0gdW5kZWZpbmVkID8gdG9wTGV2ZWxQcm9wIDogaGllcmFyY2h5Q29udGV4dC5pc1RvcExldmVsO1xyXG4gICAgLy8gQ29uc3VtZSBzcGxpdCBjb250ZXh0cyBmb3IgcmVkdWNlZCByZS1yZW5kZXIgc2NvcGVcclxuICAgIGNvbnN0IHsgaXRlbVRvRm9jdXMgfSA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0KTtcclxuICAgIGNvbnN0IHsgaGFuZGxlRXhwYW5kZWRDaGFuZ2UgfSA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZVZpZXdFeHBhbnNpb25Db250ZXh0KTtcclxuICAgIGNvbnN0IHsgZXhwYW5kSWNvblN0eWxlcywgaGFzSWNvbnMsIGlzVG9wTGV2ZWxTZWxlY3RhYmxlLCBzZWxlY3RhYmxlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgY2hlY2tib3hDaGFuZ2VIYW5kbGVyLCBjaGVja2VkU3RhdHVzLCBleHBhbmRlZCwgaGFzT3duVHJlZUl0ZW1zLCBpdGVtRGVwdGgsIGl0ZW1JZCwgcmVmLCBzZWxlY3RlZEl0ZW1zLCB9ID0gY29udGV4dFZhbHVlO1xyXG4gICAgY29uc3Qgbm9kZVR5cGUgPSBoYXNPd25UcmVlSXRlbXMgPyBUcmVlTm9kZVR5cGUuYnJhbmNoIDogVHJlZU5vZGVUeXBlLmxlYWY7XHJcbiAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUuc2luZ2xlXHJcbiAgICAgICAgPyBzZWxlY3RlZEl0ZW1zPy5bMF0/Lml0ZW1JZCA9PT0gaXRlbUlkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgYXJpYUNoZWNrZWRWYWx1ZSA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aVxyXG4gICAgICAgID8gY2hlY2tlZFN0YXR1cyA9PT0gSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLmluZGV0ZXJtaW5hdGVcclxuICAgICAgICAgICAgPyAnbWl4ZWQnXHJcbiAgICAgICAgICAgIDogY2hlY2tlZFN0YXR1cyA9PT0gSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLmNoZWNrZWRcclxuICAgICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBbaXNJbnNpZGVUcmVlSXRlbSwgc2V0SXNJbnNpZGVUcmVlSXRlbV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XHJcbiAgICBjb25zdCB0cmVlSXRlbVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcclxuICAgIGNvbnN0IGZvY3VzVHJhcEVsZW1lbnQgPSB1c2VGb2N1c0xvY2soaXNJbnNpZGVUcmVlSXRlbSk7XHJcbiAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzID0gJ2J1dHRvbiwgW3JvbGU9XCJidXR0b25cIl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBhW2hyZWZdLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9XCItMVwiXSknO1xyXG4gICAgY29uc3QgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyA9IFJlYWN0LnVzZUNhbGxiYWNrKChjb250YWluZXIsIHNlbGVjdG9yKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKS5maWx0ZXIoZWwgPT4gIWVsLmhhc0F0dHJpYnV0ZSgndGFiaW5kZXgnKSB8fFxyXG4gICAgICAgICAgICAoZWwudGFiSW5kZXggIT09IHVuZGVmaW5lZCAmJiBlbC50YWJJbmRleCA+PSAwKSk7XHJcbiAgICB9LCBbXSk7XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgbGFiZWwgYW5kIGFkZGl0aW9uYWwgY29udGVudCBvZiBhIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBZb3UgY2FuIG5hdmlnYXRlIHRocm91Z2ggaW50ZXJhY3RpdmUgZWxlbWVudHMgdXNpbmcgdGhlIGBUYWJgIGtleSwgYWN0aXZhdGUgdGhlbSB3aXRoIGBFbnRlcmAgb3IgYFNwYWNlYCxcclxuICAgICAqIGFuZCBleGl0IG91dHNpZGUgYW5kIGZvY3VzIHRoZSB3aG9sZSB0cmVlIGl0ZW0gd2l0aCBgRXNjYXBlYC5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3QgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24gPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0LCBzaGlmdEtleSB9ID0gZXZlbnQ7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSB0YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaXNFbnRlciA9IGtleSA9PT0gJ0VudGVyJztcclxuICAgICAgICBjb25zdCBpc1NwYWNlID0ga2V5ID09PSAnICc7XHJcbiAgICAgICAgY29uc3QgaXNFc2NhcGUgPSBrZXkgPT09ICdFc2NhcGUnO1xyXG4gICAgICAgIGNvbnN0IGlzVGFiID0ga2V5ID09PSAnVGFiJztcclxuICAgICAgICBjb25zdCBpc0FjdGl2YXRpb25LZXkgPSBpc0VudGVyIHx8IGlzU3BhY2U7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdChpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAvLyBJZiB0aGUga2V5IGlzIGBUYWJgLCB3ZSBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzVGFiICYmIGlzSW5zaWRlVHJlZUl0ZW0pIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICAvLyBGaWx0ZXIgbGlzdCBvZiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGljaCBhcmUgb25seSBpbmNsdWRlZCBmb3IgY3VycmVudCB0cmVlIGl0ZW1cclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0LmZpbHRlcihlbCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0VHJlZUl0ZW0gPSBlbC5jbG9zZXN0KCdbcm9sZT1cInRyZWVpdGVtXCJdJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdFRyZWVJdGVtID09PSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5pbmRleE9mKGN1cnJlbnRFbGVtZW50KTtcclxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gc2hpZnRLZXkgPyAtMSA6IDE7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGNvbnN0IG5leHRJbmRleCA9IChjdXJyZW50SW5kZXggKyBkaXJlY3Rpb24gKyB0b3RhbCkgJSB0b3RhbDtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFRvRm9jdXMgPSBjdXJyZW50VHJlZUl0ZW1JbnRlcmFjdGl2ZUVsZW1lbnRzW25leHRJbmRleF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBlbGVtZW50VG9Gb2N1cy5mb2N1cygpLCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFByZXNzaW5nIGBFbnRlcmAgb3IgYFNwYWNlYCBvbiBhbiBpbnRlcmFjdGl2ZSBlbGVtZW50IHdpbGwgdHJpZ2dlciBpdHMgY2xpY2sgZXZlbnRcclxuICAgICAgICBpZiAoaXNBY3RpdmF0aW9uS2V5ICYmIGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTW92ZXMgZm9jdXMgb3V0c2lkZSB0aGUgdHJlZSBpdGVtIGFuZCBmb2N1c2VzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmIHdoZW4gYEVzY2FwZWAgaXMgcHJlc3NlZFxyXG4gICAgICAgIGlmIChpc0VzY2FwZSkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbShmYWxzZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRyZWVJdGVtTm9kZSA9IHRyZWVJdGVtUmVmLmN1cnJlbnQ7XHJcbiAgICAgICAgICAgIGlmICh0cmVlSXRlbU5vZGUpIHtcclxuICAgICAgICAgICAgICAgIHRyZWVJdGVtTm9kZS5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbZ2V0SW50ZXJhY3RpdmVFbGVtZW50cywgaW50ZXJhY3RpdmVFbGVtZW50cywgaXNJbnNpZGVUcmVlSXRlbV0pO1xyXG4gICAgY29uc3QgaGFuZGxlT25DbGljayA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoJ2J1dHRvbiwgW3JvbGU9XCJidXR0b25cIl0sIGFbaHJlZl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbcm9sZT1cIm1lbnVpdGVtXCJdJyk7XHJcbiAgICAgICAgLy8gUHJldmVudGluZyBzZWxlY3RpbmcgdGhlIGl0ZW0gd2hlbiBjbGlja2luZyBvbiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGVuIGBzZWxlY3RhYmxlYCBpcyBgc2luZ2xlYFxyXG4gICAgICAgIGlmIChpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5zaW5nbGUpIHtcclxuICAgICAgICAgICAgaGFuZGxlQ2xpY2soZXZlbnQsIGl0ZW1JZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIHNlbGVjdGFibGUsIGhhbmRsZUNsaWNrLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gbm9kZVR5cGUgPT09IFRyZWVOb2RlVHlwZS5icmFuY2ggPyAoUmVhY3QuY3JlYXRlRWxlbWVudChGb2xkZXJJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChBcnRpY2xlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUgfSkpO1xyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkTGFiZWxXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHN0eWxlOiBsYWJlbFN0eWxlLCBpZDogYCR7aXRlbUlkfS1sYWJlbGAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tbGFiZWxgIH0sXHJcbiAgICAgICAgaGFzSWNvbnMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbldyYXBwZXIsIHsgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1pY29uYCB9LCBpY29uIHx8IGRlZmF1bHRJY29uKSksXHJcbiAgICAgICAgbGFiZWwpKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBhZGRpdGlvbmFsQ29udGVudCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEFkZGl0aW9uYWxDb250ZW50V3JhcHBlciwgeyB0aGVtZTogdGhlbWUsIGlkOiBgJHtpdGVtSWR9LWFkZGl0aW9uYWxjb250ZW50d3JhcHBlcmAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkID8/IGl0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCB9LCBhZGRpdGlvbmFsQ29udGVudCkpIDogbnVsbDtcclxuICAgIC8vIE1lbW9pemUgaW5saW5lIHN0eWxlIG9iamVjdHMgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSByZS1yZW5kZXJzXHJcbiAgICBjb25zdCBjaGVja2JveElucHV0U3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7IG1hcmdpblJpZ2h0OiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMyB9KSwgW3RoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzXSk7XHJcbiAgICBjb25zdCBjaGVja2JveExhYmVsU3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgcGFkZGluZzogMCxcclxuICAgICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgfSksIFtdKTtcclxuICAgIC8vIFByb3BzIHNoYXJlZCBieSBDaGVja2JveCBhbmQgSW5kZXRlcm1pbmF0ZUNoZWNrYm94XHJcbiAgICBjb25zdCBjaGVja2JveFByb3BzID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xyXG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxyXG4gICAgICAgIGhpZGVGb2N1czogdHJ1ZSxcclxuICAgICAgICBpZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICAgICAgaW5wdXRTdHlsZTogY2hlY2tib3hJbnB1dFN0eWxlLFxyXG4gICAgICAgIGxhYmVsU3R5bGU6IGNoZWNrYm94TGFiZWxTdHlsZSxcclxuICAgICAgICBsYWJlbFRleHQ6IGxhYmVsVGV4dCxcclxuICAgICAgICBvbkNoYW5nZTogY2hlY2tib3hDaGFuZ2VIYW5kbGVyLFxyXG4gICAgICAgIHRhYkluZGV4OiAtMSxcclxuICAgICAgICB0ZXN0SWQ6IGAke2l0ZW1JZH0tY2hlY2tib3hgLFxyXG4gICAgfSksIFtcclxuICAgICAgICBpc0Rpc2FibGVkLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dCxcclxuICAgICAgICBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IG9uRXhwYW5kZWRDbGlja2VkID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBoYW5kbGVFeHBhbmRlZENoYW5nZShldmVudCwgaXRlbUlkKTtcclxuICAgIH0sIFtoYW5kbGVFeHBhbmRlZENoYW5nZSwgaXRlbUlkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVFeHBhbmRDbGljayA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmICghaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVG9Gb2N1cyA9PT0gaXRlbUlkID8gMCA6IC0xO1xyXG4gICAgfSwgW2lzRGlzYWJsZWQsIGl0ZW1Ub0ZvY3VzLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IHNob3VsZFNob3dDaGVja2JveCA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSAmJlxyXG4gICAgICAgIChpc1RvcExldmVsU2VsZWN0YWJsZSAhPT0gZmFsc2UgfHwgIXRvcExldmVsKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogUHJlc3NpbmcgYEN0cmwgKyBFbnRlcmAgb3IgYENvbW1hbmQgKyBFbnRlcmAgZm9jdXNlcyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudCB3aXRoaW4gdGhlIHRyZWUgaXRlbVxyXG4gICAgICogYW5kIGxvY2tzIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBmb2N1cyBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaXQgaGFuZGxlcyBrZXkgZXZlbnRzIGZvciBpbnRlcmFjdGlvbiBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBJdCBhbHNvIGhhbmRsZXMgdGhlIG90aGVyIGtleXMgdG8gdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsT3JDb21tYW5kID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5O1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybEVudGVyID0gaXNDdHJsT3JDb21tYW5kICYmIGlzRW50ZXI7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBDdHJsICsgRW50ZXIgb3IgQ29tbWFuZCArIEVudGVyLCBmb2N1cyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudFxyXG4gICAgICAgIC8vIGFuZCBsb2NrIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzQ3RybEVudGVyICYmIHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3RbMF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHZhbGlkIENTUyBzZWxlY3RvcnMgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuLCBwZXJpb2RzIGluIGl0ZW1JZClcclxuICAgICAgICBjb25zdCBzYWZlSXRlbUlkID0gQ1NTLmVzY2FwZShpdGVtSWQpO1xyXG4gICAgICAgIGNvbnN0IGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50ID0gdGFyZ2V0LmNsb3Nlc3QoYCMke3NhZmVJdGVtSWR9LWxhYmVsLCAjJHtzYWZlSXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgKTtcclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBoYW5kbGUga2V5IGV2ZW50cyBmb3IgdGhvc2UgYXJlYXNcclxuICAgICAgICBpZiAoaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYsIGhhbmRsZSBrZXkgZG93biBmb3IgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgaGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbXHJcbiAgICAgICAgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnRzLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICBoYW5kbGVMYWJlbEFuZEFkZGl0aW9uYWxDb250ZW50S2V5RG93bixcclxuICAgICAgICBoYW5kbGVLZXlEb3duLFxyXG4gICAgXSk7XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb250ZXh0VmFsdWUgfSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IHRyZWVJdGVtU3R5bGVzIH0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkVHJlZUl0ZW0sIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgXCJhcmlhLWV4cGFuZGVkXCI6IGhhc093blRyZWVJdGVtcyA/IGV4cGFuZGVkIDogbnVsbCwgXCJhcmlhLXNlbGVjdGVkXCI6IHNlbGVjdGVkSXRlbSwgXCJhcmlhLWNoZWNrZWRcIjogc2hvdWxkU2hvd0NoZWNrYm94ID8gYXJpYUNoZWNrZWRWYWx1ZSA6IG51bGwsIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLCBkZXB0aDogaXRlbURlcHRoLCBoYXNPd25UcmVlSXRlbXM6IGhhc093blRyZWVJdGVtcywgaWQ6IGl0ZW1JZCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG5vZGVUeXBlOiBub2RlVHlwZSwgcm9sZTogXCJ0cmVlaXRlbVwiLCBzZWxlY3RhYmxlVHlwZTogc2VsZWN0YWJsZSwgc2VsZWN0ZWQ6IHNlbGVjdGVkSXRlbSwgdGhlbWU6IHRoZW1lLCB0YWJJbmRleDogdGFiSW5kZXgsIG9uS2V5RG93bjogb25LZXlEb3duSGFuZGxlciwgcmVmOiB0cmVlSXRlbVJlZiwgaG92ZXJDb2xvcjogaG92ZXJDb2xvciB9KSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkSXRlbVdyYXBwZXIsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1pdGVtd3JhcHBlcmAsIGRlcHRoOiBpdGVtRGVwdGgsIGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCBoYXNDdXN0b21JY29uU2l6ZTogISFleHBhbmRJY29uU3R5bGVzPy5zaXplLCBpZDogYCR7aXRlbUlkfS1pdGVtd3JhcHBlcmAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBub2RlVHlwZTogbm9kZVR5cGUsIHNlbGVjdGFibGU6IHNlbGVjdGFibGUsIHN0eWxlOiBzdHlsZSwgdGhlbWU6IHRoZW1lLCByZWY6IG1lcmdlUmVmcyhyZWYsIGZvY3VzVHJhcEVsZW1lbnQpLCBvbkNsaWNrOiBoYW5kbGVPbkNsaWNrIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEV4cGFuZFdyYXBwZXIsIHsgXCJhcmlhLWhpZGRlblwiOiBCb29sZWFuKCFleHBhbmRlZCksIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUsIGNvbG9yOiBleHBhbmRJY29uU3R5bGVzPy5jb2xvciwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1leHBhbmRgLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgb25DbGljazogaGFuZGxlRXhwYW5kQ2xpY2ssIHRoZW1lOiB0aGVtZSB9LCBleHBhbmRlZCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEV4cGFuZE1vcmVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChDaGV2cm9uUmlnaHRJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSB9KSkpKSxcclxuICAgICAgICAgICAgICAgICAgICBzaG91bGRTaG93Q2hlY2tib3ggPyAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRDaGVja2JveFdyYXBwZXIsIHsgaGFzQWRkaXRpb25hbENvbnRlbnQ6ICEhYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lOiB0aGVtZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChJbmRldGVybWluYXRlQ2hlY2tib3gsIE9iamVjdC5hc3NpZ24oe30sIGNoZWNrYm94UHJvcHMsIHsgc3RhdHVzOiBjaGVja2VkU3RhdHVzIH0pKSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBjaGVja2VkOiBjaGVja2VkU3RhdHVzVG9Cb29sZWFuKGNoZWNrZWRTdGF0dXMpIH0pKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbFRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQpKSksXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sIChjaGlsZCwgY2hpbGRJbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZD8udHlwZSAhPT0gVHJlZUl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyBQYXNzIGhpZXJhcmNoeSBpbmZvIHRocm91Z2ggY29udGV4dCBpbnN0ZWFkIG9mIGNsb25lRWxlbWVudFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5lc3RlZEhpZXJhcmNoeVZhbHVlID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXB0aDogaXRlbURlcHRoICsgMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3BMZXZlbDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBjaGlsZEluZGV4LFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyYW5zaXRpb24sIHsgaXNPcGVuOiBleHBhbmRlZCwgdW5tb3VudE9uRXhpdDogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgeyByb2xlOiBcImdyb3VwXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0LlByb3ZpZGVyLCB7IGtleTogY2hpbGQucHJvcHMuaXRlbUlkLCB2YWx1ZTogbmVzdGVkSGllcmFyY2h5VmFsdWUgfSwgY2hpbGQpKSkpO1xyXG4gICAgICAgICAgICAgICAgfSkpKSkpO1xyXG59KTtcclxuLyoqXHJcbiAqIEN1c3RvbSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBSZWFjdC5tZW1vXHJcbiAqIE9ubHkgcmUtcmVuZGVyIFRyZWVJdGVtIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlXHJcbiAqL1xyXG5mdW5jdGlvbiBhcmVQcm9wc0VxdWFsKHByZXZQcm9wcywgbmV4dFByb3BzKSB7XHJcbiAgICAvLyBDaGVjayBpZiBpdGVtSWQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5pdGVtSWQgIT09IG5leHRQcm9wcy5pdGVtSWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBsYWJlbCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsICE9PSBuZXh0UHJvcHMubGFiZWwpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBkaXNhYmxlZCBzdGF0ZSBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmlzRGlzYWJsZWQgIT09IG5leHRQcm9wcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaWNvbiBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmljb24gIT09IG5leHRQcm9wcy5pY29uKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgYWRkaXRpb25hbCBjb250ZW50IGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuYWRkaXRpb25hbENvbnRlbnQgIT09IG5leHRQcm9wcy5hZGRpdGlvbmFsQ29udGVudCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGhvdmVyIGNvbG9yIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaG92ZXJDb2xvciAhPT0gbmV4dFByb3BzLmhvdmVyQ29sb3IpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBjaGlsZHJlbiBjaGFuZ2VkIChmb3IgbmVzdGVkIHRyZWUgaXRlbXMpXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBjaGlsZHJlbiBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLmNoaWxkcmVuICE9PSBuZXh0UHJvcHMuY2hpbGRyZW4pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBzdHlsZXMgY2hhbmdlZFxyXG4gICAgLy8gVXNpbmcgdHlwZSBhc3NlcnRpb24gc2luY2Ugc3R5bGUgY29tZXMgZnJvbSBSZWFjdC5IVE1MQXR0cmlidXRlc1xyXG4gICAgaWYgKHByZXZQcm9wcy5zdHlsZSAhPT0gbmV4dFByb3BzLnN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy5sYWJlbFN0eWxlICE9PSBuZXh0UHJvcHMubGFiZWxTdHlsZSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChwcmV2UHJvcHMudHJlZUl0ZW1TdHlsZXMgIT09IG5leHRQcm9wcy50cmVlSXRlbVN0eWxlcykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIEFsbCByZWxldmFudCBwcm9wcyBhcmUgZXF1YWwsIHNraXAgcmUtcmVuZGVyXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG4vKipcclxuICogTWVtb2l6ZWQgVHJlZUl0ZW0gY29tcG9uZW50XHJcbiAqIE9ubHkgcmUtcmVuZGVycyB3aGVuIHJlbGV2YW50IHByb3BzIGNoYW5nZSwgaW1wcm92aW5nIHBlcmZvcm1hbmNlIGZvciBsYXJnZSB0cmVlc1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFRyZWVJdGVtID0gUmVhY3QubWVtbyhUcmVlSXRlbUNvbXBvbmVudCwgYXJlUHJvcHNFcXVhbCk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRyZWVJdGVtLmpzLm1hcCJdfQ== */"));
22863
23373
  var StyledExpandWrapper = /*#__PURE__*/_styled("div", {
22864
23374
  target: "e1xiryew3",
22865
23375
  label: "StyledExpandWrapper"
@@ -22875,7 +23385,7 @@ var StyledExpandWrapper = /*#__PURE__*/_styled("div", {
22875
23385
  var size = _ref3.size,
22876
23386
  theme = _ref3.theme;
22877
23387
  return size !== undefined ? size + "px" : theme.spaceScale.spacing06;
22878
- }, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzR3VDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3Q29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyB1c2VJc0ludmVyc2UgfSBmcm9tICcuLi8uLi9pbnZlcnNlJztcclxuaW1wb3J0IHsgVGhlbWVDb250ZXh0IH0gZnJvbSAnLi4vLi4vdGhlbWUvVGhlbWVDb250ZXh0JztcclxuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCc7XHJcbmltcG9ydCB7IEluZGV0ZXJtaW5hdGVDaGVja2JveCwgSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLCB9IGZyb20gJy4uL0luZGV0ZXJtaW5hdGVDaGVja2JveCc7XHJcbmltcG9ydCB7IFRyYW5zaXRpb24gfSBmcm9tICcuLi9UcmFuc2l0aW9uJztcclxuaW1wb3J0IHsgY2FsY3VsYXRlT2Zmc2V0LCBnZXRUcmVlSXRlbUxhYmVsQ29sb3IsIGdldFRyZWVJdGVtV3JhcHBlckN1cnNvciwgVHJlZU5vZGVUeXBlLCB9IGZyb20gJy4vdXRpbHMnO1xyXG5pbXBvcnQgeyB1c2VGb2N1c0xvY2sgfSBmcm9tICcuLi8uLi9ob29rcy91c2VGb2N1c0xvY2snO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmNvbnN0IFN0eWxlZFRyZWVJdGVtID0gc3R5bGVkLmxpIGBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMTAwXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsNzAwfTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGVUeXBlLCBwcm9wcy5ub2RlVHlwZSl9O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6ICR7cHJvcHMgPT4gY2FsY3VsYXRlT2Zmc2V0KHByb3BzLm5vZGVUeXBlLCBwcm9wcy5kZXB0aCl9O1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAmID4gKjpmaXJzdC1jaGlsZCB7XG4gICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgIG91dGxpbmU6IDJweCBzb2xpZFxuICAgICAgICAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXNJbnZlcnNlXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5mb2N1c307XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUpfTtcbiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIHRydWUpfTtcbiAgICBwYWRkaW5nLWJsb2NrLWVuZDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1ibG9jay1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG5cbiAgICAke3Byb3BzID0+IHByb3BzLnNlbGVjdGVkICYmXHJcbiAgICBjc3MgYFxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMuaXNJbnZlcnNlXHJcbiAgICAgICAgPyBwcm9wcy50aGVtZS5jb2xvcnMudGVydGlhcnk1MDBcclxuICAgICAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5wcmltYXJ5NTAwfTtcbiAgICAgICAgICBibG9jay1zaXplOiAxMDAlO1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIGlubGluZS1zaXplOiAke3Byb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAyfTtcbiAgICAgICAgICBpbnNldC1ibG9jay1zdGFydDogMDtcbiAgICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgICAgIH1cbiAgICAgIGB9XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IGdldEhvdmVyQmFja2dyb3VuZCh7XHJcbiAgICBpc0Rpc2FibGVkOiBwcm9wcy5pc0Rpc2FibGVkLFxyXG4gICAgaG92ZXJDb2xvcjogcHJvcHMuaG92ZXJDb2xvcixcclxuICAgIGlzSW52ZXJzZTogcHJvcHMuaXNJbnZlcnNlLFxyXG4gICAgdGhlbWU6IHByb3BzLnRoZW1lLFxyXG59KX07XG4gICAgfVxuICB9XG5gO1xyXG5mdW5jdGlvbiBnZXRIb3ZlckJhY2tncm91bmQoeyBpc0Rpc2FibGVkLCBob3ZlckNvbG9yLCBpc0ludmVyc2UsIHRoZW1lIH0pIHtcclxuICAgIGlmIChpc0Rpc2FibGVkKVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICBpZiAoaG92ZXJDb2xvcilcclxuICAgICAgICByZXR1cm4gaG92ZXJDb2xvcjtcclxuICAgIGNvbnN0IHRyYW5zcGFyZW5jeSA9IGlzSW52ZXJzZSA/IDAuOCA6IDAuOTU7XHJcbiAgICByZXR1cm4gdHJhbnNwYXJlbnRpemUodHJhbnNwYXJlbmN5LCB0aGVtZS5jb2xvcnMubmV1dHJhbDkwMCk7XHJcbn1cclxuY29uc3QgSWNvbldyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGNvbG9yOiAke3Byb3BzID0+IGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIG1hcmdpbi1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM307XG4gIG1hcmdpbi1sZWZ0OiAwO1xuXG4gIHN2ZyB7XG4gICAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaWNvblNpemVzLm1lZGl1bX1weDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB9XG5gO1xyXG5jb25zdCBTdHlsZWRMYWJlbFdyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICB3aWR0aDogMTAwJTtcbmA7XHJcbmNvbnN0IFN0eWxlZEV4cGFuZFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5jb2xvciB8fFxyXG4gICAgZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgd2lkdGg6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG4gIGhlaWdodDogJHsoeyBzaXplLCB0aGVtZSB9KSA9PiBzaXplICE9PSB1bmRlZmluZWQgPyBgJHtzaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXgsIGxhYmVsLCBsYWJlbFN0eWxlLCBzdHlsZSwgdGVzdElkLCB0b3BMZXZlbCwgdHJlZUl0ZW1TdHlsZXMsIC4uLnJlc3QgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XHJcbiAgICBjb25zdCBpc0ludmVyc2UgPSB1c2VJc0ludmVyc2UoKTtcclxuICAgIGNvbnN0IHsgZXhwYW5kSWNvblN0eWxlcywgaGFuZGxlRXhwYW5kZWRDaGFuZ2UsIGhhc0ljb25zLCBpdGVtVG9Gb2N1cywgaXNUb3BMZXZlbFNlbGVjdGFibGUsIHNlbGVjdGFibGUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNvbnRleHRWYWx1ZSwgaGFuZGxlQ2xpY2ssIGhhbmRsZUtleURvd24gfSA9IHVzZVRyZWVJdGVtKHByb3BzLCBmb3J3YXJkZWRSZWYpO1xyXG4gICAgY29uc3QgeyBpc0Rpc2FibGVkIH0gPSBjb250ZXh0VmFsdWU7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHBhcmVudERlcHRoLCByZWYsIHNlbGVjdGVkSXRlbXMsIH0gPSBjb250ZXh0VmFsdWU7XHJcbiAgICBjb25zdCBub2RlVHlwZSA9IGhhc093blRyZWVJdGVtcyA/IFRyZWVOb2RlVHlwZS5icmFuY2ggOiBUcmVlTm9kZVR5cGUubGVhZjtcclxuICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5zaW5nbGVcclxuICAgICAgICA/IHNlbGVjdGVkSXRlbXM/LlswXT8uaXRlbUlkID09PSBpdGVtSWRcclxuICAgICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBhcmlhQ2hlY2tlZFZhbHVlID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLm11bHRpXHJcbiAgICAgICAgPyBjaGVja2VkU3RhdHVzID09PSBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMuaW5kZXRlcm1pbmF0ZVxyXG4gICAgICAgICAgICA/ICdtaXhlZCdcclxuICAgICAgICAgICAgOiBjaGVja2VkU3RhdHVzID09PSBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMuY2hlY2tlZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IFtpc0luc2lkZVRyZWVJdGVtLCBzZXRJc0luc2lkZVRyZWVJdGVtXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xyXG4gICAgY29uc3QgZm9jdXNUcmFwRWxlbWVudCA9IHVzZUZvY3VzTG9jayhpc0luc2lkZVRyZWVJdGVtKTtcclxuICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHMgPSAnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIGFbaHJlZl0sIFt0YWJpbmRleF06bm90KFt0YWJpbmRleD1cIi0xXCJdKSc7XHJcbiAgICBjb25zdCBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzID0gKGNvbnRhaW5lciwgc2VsZWN0b3IpID0+IHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShjb250YWluZXIucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpLmZpbHRlcihlbCA9PiAhZWwuaGFzQXR0cmlidXRlKCd0YWJpbmRleCcpIHx8XHJcbiAgICAgICAgICAgIChlbC50YWJJbmRleCAhPT0gdW5kZWZpbmVkICYmIGVsLnRhYkluZGV4ID49IDApKTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgbGFiZWwgYW5kIGFkZGl0aW9uYWwgY29udGVudCBvZiBhIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBZb3UgY2FuIG5hdmlnYXRlIHRocm91Z2ggaW50ZXJhY3RpdmUgZWxlbWVudHMgdXNpbmcgdGhlIGBUYWJgIGtleSwgYWN0aXZhdGUgdGhlbSB3aXRoIGBFbnRlcmAgb3IgYFNwYWNlYCxcclxuICAgICAqIGFuZCBleGl0IG91dHNpZGUgYW5kIGZvY3VzIHRoZSB3aG9sZSB0cmVlIGl0ZW0gd2l0aCBgRXNjYXBlYC5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3QgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24gPSAoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0LCBzaGlmdEtleSB9ID0gZXZlbnQ7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSB0YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaXNFbnRlciA9IGtleSA9PT0gJ0VudGVyJztcclxuICAgICAgICBjb25zdCBpc1NwYWNlID0ga2V5ID09PSAnICc7XHJcbiAgICAgICAgY29uc3QgaXNFc2NhcGUgPSBrZXkgPT09ICdFc2NhcGUnO1xyXG4gICAgICAgIGNvbnN0IGlzVGFiID0ga2V5ID09PSAnVGFiJztcclxuICAgICAgICBjb25zdCBpc0FjdGl2YXRpb25LZXkgPSBpc0VudGVyIHx8IGlzU3BhY2U7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdChpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAvLyBJZiB0aGUga2V5IGlzIGBUYWJgLCB3ZSBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzVGFiICYmIGlzSW5zaWRlVHJlZUl0ZW0pIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICAvLyBGaWx0ZXIgbGlzdCBvZiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGljaCBhcmUgb25seSBpbmNsdWRlZCBmb3IgY3VycmVudCB0cmVlIGl0ZW1cclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0LmZpbHRlcihlbCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0VHJlZUl0ZW0gPSBlbC5jbG9zZXN0KCdbcm9sZT1cInRyZWVpdGVtXCJdJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdFRyZWVJdGVtID09PSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5pbmRleE9mKGN1cnJlbnRFbGVtZW50KTtcclxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gc2hpZnRLZXkgPyAtMSA6IDE7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGNvbnN0IG5leHRJbmRleCA9IChjdXJyZW50SW5kZXggKyBkaXJlY3Rpb24gKyB0b3RhbCkgJSB0b3RhbDtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFRvRm9jdXMgPSBjdXJyZW50VHJlZUl0ZW1JbnRlcmFjdGl2ZUVsZW1lbnRzW25leHRJbmRleF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBlbGVtZW50VG9Gb2N1cy5mb2N1cygpLCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFByZXNzaW5nIGBFbnRlcmAgb3IgYFNwYWNlYCBvbiBhbiBpbnRlcmFjdGl2ZSBlbGVtZW50IHdpbGwgdHJpZ2dlciBpdHMgY2xpY2sgZXZlbnRcclxuICAgICAgICBpZiAoaXNBY3RpdmF0aW9uS2V5ICYmIGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTW92ZXMgZm9jdXMgb3V0c2lkZSB0aGUgdHJlZSBpdGVtIGFuZCBmb2N1c2VzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmIHdoZW4gYEVzY2FwZWAgaXMgcHJlc3NlZFxyXG4gICAgICAgIGlmIChpc0VzY2FwZSkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbShmYWxzZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRyZWVJdGVtTm9kZSA9IHRyZWVJdGVtUmVmLmN1cnJlbnQ7XHJcbiAgICAgICAgICAgIGlmICh0cmVlSXRlbU5vZGUpIHtcclxuICAgICAgICAgICAgICAgIHRyZWVJdGVtTm9kZS5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaGFuZGxlT25DbGljayA9IChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoJ2J1dHRvbiwgW3JvbGU9XCJidXR0b25cIl0sIGFbaHJlZl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbcm9sZT1cIm1lbnVpdGVtXCJdJyk7XHJcbiAgICAgICAgLy8gUHJldmVudGluZyBzZWxlY3RpbmcgdGhlIGl0ZW0gd2hlbiBjbGlja2luZyBvbiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGVuIGBzZWxlY3RhYmxlYCBpcyBgc2luZ2xlYFxyXG4gICAgICAgIGlmIChpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5zaW5nbGUpIHtcclxuICAgICAgICAgICAgaGFuZGxlQ2xpY2soZXZlbnQsIGl0ZW1JZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gbm9kZVR5cGUgPT09IFRyZWVOb2RlVHlwZS5icmFuY2ggPyAoUmVhY3QuY3JlYXRlRWxlbWVudChGb2xkZXJJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChBcnRpY2xlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUgfSkpO1xyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkTGFiZWxXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHN0eWxlOiBsYWJlbFN0eWxlLCBpZDogYCR7aXRlbUlkfS1sYWJlbGAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tbGFiZWxgIH0sXHJcbiAgICAgICAgaGFzSWNvbnMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbldyYXBwZXIsIHsgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1pY29uYCB9LCBpY29uIHx8IGRlZmF1bHRJY29uKSksXHJcbiAgICAgICAgbGFiZWwpKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBhZGRpdGlvbmFsQ29udGVudCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEFkZGl0aW9uYWxDb250ZW50V3JhcHBlciwgeyB0aGVtZTogdGhlbWUsIGlkOiBgJHtpdGVtSWR9LWFkZGl0aW9uYWxjb250ZW50d3JhcHBlcmAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkID8/IGl0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCB9LCBhZGRpdGlvbmFsQ29udGVudCkpIDogbnVsbDtcclxuICAgIC8vIFByb3BzIHNoYXJlZCBieSBDaGVja2JveCBhbmQgSW5kZXRlcm1pbmF0ZUNoZWNrYm94XHJcbiAgICBjb25zdCBjaGVja2JveFByb3BzID0ge1xyXG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxyXG4gICAgICAgIGhpZGVGb2N1czogdHJ1ZSxcclxuICAgICAgICBpZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICAgICAgaW5wdXRTdHlsZTogeyBtYXJnaW5SaWdodDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDMgfSxcclxuICAgICAgICBsYWJlbFN0eWxlOiB7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDAsXHJcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBsYWJlbFRleHQ6IGxhYmVsVGV4dCxcclxuICAgICAgICBvbkNoYW5nZTogY2hlY2tib3hDaGFuZ2VIYW5kbGVyLFxyXG4gICAgICAgIHRhYkluZGV4OiAtMSxcclxuICAgICAgICB0ZXN0SWQ6IGAke2l0ZW1JZH0tY2hlY2tib3hgLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IG9uRXhwYW5kZWRDbGlja2VkID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBoYW5kbGVFeHBhbmRlZENoYW5nZShldmVudCwgaXRlbUlkKTtcclxuICAgIH07XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVG9Gb2N1cyA9PT0gaXRlbUlkID8gMCA6IC0xO1xyXG4gICAgfSwgW2lzRGlzYWJsZWQsIGl0ZW1Ub0ZvY3VzLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IHNob3VsZFNob3dDaGVja2JveCA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSAmJlxyXG4gICAgICAgIChpc1RvcExldmVsU2VsZWN0YWJsZSAhPT0gZmFsc2UgfHwgIXRvcExldmVsKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogUHJlc3NpbmcgYEN0cmwgKyBFbnRlcmAgb3IgYENvbW1hbmQgKyBFbnRlcmAgZm9jdXNlcyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudCB3aXRoaW4gdGhlIHRyZWUgaXRlbVxyXG4gICAgICogYW5kIGxvY2tzIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBmb2N1cyBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaXQgaGFuZGxlcyBrZXkgZXZlbnRzIGZvciBpbnRlcmFjdGlvbiBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBJdCBhbHNvIGhhbmRsZXMgdGhlIG90aGVyIGtleXMgdG8gdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsT3JDb21tYW5kID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5O1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybEVudGVyID0gaXNDdHJsT3JDb21tYW5kICYmIGlzRW50ZXI7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBDdHJsICsgRW50ZXIgb3IgQ29tbWFuZCArIEVudGVyLCBmb2N1cyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudFxyXG4gICAgICAgIC8vIGFuZCBsb2NrIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzQ3RybEVudGVyICYmIHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3RbMF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHZhbGlkIENTUyBzZWxlY3RvcnMgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuLCBwZXJpb2RzIGluIGl0ZW1JZClcclxuICAgICAgICBjb25zdCBzYWZlSXRlbUlkID0gQ1NTLmVzY2FwZShpdGVtSWQpO1xyXG4gICAgICAgIGNvbnN0IGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50ID0gdGFyZ2V0LmNsb3Nlc3QoYCMke3NhZmVJdGVtSWR9LWxhYmVsLCAjJHtzYWZlSXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgKTtcclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBoYW5kbGUga2V5IGV2ZW50cyBmb3IgdGhvc2UgYXJlYXNcclxuICAgICAgICBpZiAoaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYsIGhhbmRsZSBrZXkgZG93biBmb3IgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgaGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyZWVJdGVtQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogY29udGV4dFZhbHVlIH0sXHJcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHN0eWxlOiB0cmVlSXRlbVN0eWxlcyB9LFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZFRyZWVJdGVtLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IFwiYXJpYS1leHBhbmRlZFwiOiBoYXNPd25UcmVlSXRlbXMgPyBleHBhbmRlZCA6IG51bGwsIFwiYXJpYS1zZWxlY3RlZFwiOiBzZWxlY3RlZEl0ZW0sIFwiYXJpYS1jaGVja2VkXCI6IHNob3VsZFNob3dDaGVja2JveCA/IGFyaWFDaGVja2VkVmFsdWUgOiBudWxsLCBcImRhdGEtdGVzdGlkXCI6IHRlc3RJZCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzT3duVHJlZUl0ZW1zOiBoYXNPd25UcmVlSXRlbXMsIGlkOiBpdGVtSWQsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBub2RlVHlwZTogbm9kZVR5cGUsIHJvbGU6IFwidHJlZWl0ZW1cIiwgc2VsZWN0YWJsZVR5cGU6IHNlbGVjdGFibGUsIHNlbGVjdGVkOiBzZWxlY3RlZEl0ZW0sIHRoZW1lOiB0aGVtZSwgdGFiSW5kZXg6IHRhYkluZGV4LCBvbktleURvd246IG9uS2V5RG93bkhhbmRsZXIsIHJlZjogdHJlZUl0ZW1SZWYsIGhvdmVyQ29sb3I6IGhvdmVyQ29sb3IgfSksXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEl0ZW1XcmFwcGVyLCB7IFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkID8/IGl0ZW1JZH0taXRlbXdyYXBwZXJgLCBkZXB0aDogaXRlbURlcHRoLCBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgaGFzQ3VzdG9tSWNvblNpemU6ICEhZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSwgaWQ6IGAke2l0ZW1JZH0taXRlbXdyYXBwZXJgLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgbm9kZVR5cGU6IG5vZGVUeXBlLCBzZWxlY3RhYmxlOiBzZWxlY3RhYmxlLCBzdHlsZTogc3R5bGUsIHRoZW1lOiB0aGVtZSwgcmVmOiBtZXJnZVJlZnMocmVmLCBmb2N1c1RyYXBFbGVtZW50KSwgb25DbGljazogaGFuZGxlT25DbGljayB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRFeHBhbmRXcmFwcGVyLCB7IFwiYXJpYS1oaWRkZW5cIjogQm9vbGVhbighZXhwYW5kZWQpLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplLCBjb2xvcjogZXhwYW5kSWNvblN0eWxlcz8uY29sb3IsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZXhwYW5kYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG9uQ2xpY2s6IGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRXhwYW5kZWRDbGlja2VkKGV2ZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhlbWU6IHRoZW1lIH0sIGV4cGFuZGVkID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRXhwYW5kTW9yZUljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZXZyb25SaWdodEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSkpLFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3VsZFNob3dDaGVja2JveCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZENoZWNrYm94V3JhcHBlciwgeyBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgdGhlbWU6IHRoZW1lIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEluZGV0ZXJtaW5hdGVDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBzdGF0dXM6IGNoZWNrZWRTdGF0dXMgfSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IGNoZWNrZWQ6IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4oY2hlY2tlZFN0YXR1cykgfSkpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpKSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZD8udHlwZSA9PT0gVHJlZUl0ZW0gPyAoUmVhY3QuY3JlYXRlRWxlbWVudChUcmFuc2l0aW9uLCB7IGlzT3BlbjogZXhwYW5kZWQsIHVubW91bnRPbkV4aXQ6IHRydWUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInVsXCIsIHsgcm9sZTogXCJncm91cFwiIH0sIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLnByb3BzLml0ZW1JZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudERlcHRoLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSkpKSA6IChjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB9KSkpKSk7XHJcbn0pO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1UcmVlSXRlbS5qcy5tYXAiXX0= */"));
23388
+ }, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5R3VDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSAnLi4vQ2hlY2tib3gnO1xyXG5pbXBvcnQgeyBJbmRldGVybWluYXRlQ2hlY2tib3gsIEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cywgfSBmcm9tICcuLi9JbmRldGVybWluYXRlQ2hlY2tib3gnO1xyXG5pbXBvcnQgeyBUcmFuc2l0aW9uIH0gZnJvbSAnLi4vVHJhbnNpdGlvbic7XHJcbmNvbnN0IFN0eWxlZFRyZWVJdGVtID0gc3R5bGVkLmxpIGBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMTAwXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsNzAwfTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGVUeXBlLCBwcm9wcy5ub2RlVHlwZSl9O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6ICR7cHJvcHMgPT4gY2FsY3VsYXRlT2Zmc2V0KHByb3BzLm5vZGVUeXBlLCBwcm9wcy5kZXB0aCl9O1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAmID4gKjpmaXJzdC1jaGlsZCB7XG4gICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgIG91dGxpbmU6IDJweCBzb2xpZFxuICAgICAgICAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXNJbnZlcnNlXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5mb2N1c307XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUpfTtcbiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIHRydWUpfTtcbiAgICBwYWRkaW5nLWJsb2NrLWVuZDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1ibG9jay1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG5cbiAgICAke3Byb3BzID0+IHByb3BzLnNlbGVjdGVkICYmXHJcbiAgICBjc3MgYFxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMuaXNJbnZlcnNlXHJcbiAgICAgICAgPyBwcm9wcy50aGVtZS5jb2xvcnMudGVydGlhcnk1MDBcclxuICAgICAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5wcmltYXJ5NTAwfTtcbiAgICAgICAgICBibG9jay1zaXplOiAxMDAlO1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIGlubGluZS1zaXplOiAke3Byb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAyfTtcbiAgICAgICAgICBpbnNldC1ibG9jay1zdGFydDogMDtcbiAgICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgICAgIH1cbiAgICAgIGB9XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IGdldEhvdmVyQmFja2dyb3VuZCh7XHJcbiAgICBpc0Rpc2FibGVkOiBwcm9wcy5pc0Rpc2FibGVkLFxyXG4gICAgaG92ZXJDb2xvcjogcHJvcHMuaG92ZXJDb2xvcixcclxuICAgIGlzSW52ZXJzZTogcHJvcHMuaXNJbnZlcnNlLFxyXG4gICAgdGhlbWU6IHByb3BzLnRoZW1lLFxyXG59KX07XG4gICAgfVxuICB9XG5gO1xyXG5mdW5jdGlvbiBnZXRIb3ZlckJhY2tncm91bmQoeyBpc0Rpc2FibGVkLCBob3ZlckNvbG9yLCBpc0ludmVyc2UsIHRoZW1lIH0pIHtcclxuICAgIGlmIChpc0Rpc2FibGVkKVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICBpZiAoaG92ZXJDb2xvcilcclxuICAgICAgICByZXR1cm4gaG92ZXJDb2xvcjtcclxuICAgIGNvbnN0IHRyYW5zcGFyZW5jeSA9IGlzSW52ZXJzZSA/IDAuOCA6IDAuOTU7XHJcbiAgICByZXR1cm4gdHJhbnNwYXJlbnRpemUodHJhbnNwYXJlbmN5LCB0aGVtZS5jb2xvcnMubmV1dHJhbDkwMCk7XHJcbn1cclxuY29uc3QgSWNvbldyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGNvbG9yOiAke3Byb3BzID0+IGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIG1hcmdpbi1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM307XG4gIG1hcmdpbi1sZWZ0OiAwO1xuXG4gIHN2ZyB7XG4gICAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaWNvblNpemVzLm1lZGl1bX1weDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB9XG5gO1xyXG5jb25zdCBTdHlsZWRMYWJlbFdyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICB3aWR0aDogMTAwJTtcbmA7XHJcbmNvbnN0IFN0eWxlZEV4cGFuZFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5jb2xvciB8fFxyXG4gICAgZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgd2lkdGg6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG4gIGhlaWdodDogJHsoeyBzaXplLCB0aGVtZSB9KSA9PiBzaXplICE9PSB1bmRlZmluZWQgPyBgJHtzaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5jb25zdCBUcmVlSXRlbUNvbXBvbmVudCA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpID0+IHtcclxuICAgIGNvbnN0IHsgYWRkaXRpb25hbENvbnRlbnQsIGNoaWxkcmVuLCBob3ZlckNvbG9yLCBpY29uLCBpbmRleDogaW5kZXhQcm9wLCBsYWJlbCwgbGFiZWxTdHlsZSwgc3R5bGUsIHRlc3RJZCwgdG9wTGV2ZWw6IHRvcExldmVsUHJvcCwgdHJlZUl0ZW1TdHlsZXMsIC4uLnJlc3QgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XHJcbiAgICBjb25zdCBpc0ludmVyc2UgPSB1c2VJc0ludmVyc2UoKTtcclxuICAgIC8vIFJlYWQgaGllcmFyY2h5IGluZm9ybWF0aW9uIGZyb20gY29udGV4dCAocmVkdWNlcyBjbG9uZUVsZW1lbnQgb3ZlcmhlYWQpXHJcbiAgICBjb25zdCBoaWVyYXJjaHlDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChUcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQpO1xyXG4gICAgLy8gVXNlIGNvbnRleHQgdmFsdWVzIGlmIHByb3BzIGFyZSBub3QgcHJvdmlkZWQgKGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KVxyXG4gICAgY29uc3QgaW5kZXggPSBpbmRleFByb3AgIT09IHVuZGVmaW5lZCA/IGluZGV4UHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaW5kZXg7XHJcbiAgICBjb25zdCB0b3BMZXZlbCA9IHRvcExldmVsUHJvcCAhPT0gdW5kZWZpbmVkID8gdG9wTGV2ZWxQcm9wIDogaGllcmFyY2h5Q29udGV4dC5pc1RvcExldmVsO1xyXG4gICAgLy8gQ29uc3VtZSBzcGxpdCBjb250ZXh0cyBmb3IgcmVkdWNlZCByZS1yZW5kZXIgc2NvcGVcclxuICAgIGNvbnN0IHsgaXRlbVRvRm9jdXMgfSA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0KTtcclxuICAgIGNvbnN0IHsgaGFuZGxlRXhwYW5kZWRDaGFuZ2UgfSA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZVZpZXdFeHBhbnNpb25Db250ZXh0KTtcclxuICAgIGNvbnN0IHsgZXhwYW5kSWNvblN0eWxlcywgaGFzSWNvbnMsIGlzVG9wTGV2ZWxTZWxlY3RhYmxlLCBzZWxlY3RhYmxlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgY2hlY2tib3hDaGFuZ2VIYW5kbGVyLCBjaGVja2VkU3RhdHVzLCBleHBhbmRlZCwgaGFzT3duVHJlZUl0ZW1zLCBpdGVtRGVwdGgsIGl0ZW1JZCwgcmVmLCBzZWxlY3RlZEl0ZW1zLCB9ID0gY29udGV4dFZhbHVlO1xyXG4gICAgY29uc3Qgbm9kZVR5cGUgPSBoYXNPd25UcmVlSXRlbXMgPyBUcmVlTm9kZVR5cGUuYnJhbmNoIDogVHJlZU5vZGVUeXBlLmxlYWY7XHJcbiAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUuc2luZ2xlXHJcbiAgICAgICAgPyBzZWxlY3RlZEl0ZW1zPy5bMF0/Lml0ZW1JZCA9PT0gaXRlbUlkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgYXJpYUNoZWNrZWRWYWx1ZSA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aVxyXG4gICAgICAgID8gY2hlY2tlZFN0YXR1cyA9PT0gSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLmluZGV0ZXJtaW5hdGVcclxuICAgICAgICAgICAgPyAnbWl4ZWQnXHJcbiAgICAgICAgICAgIDogY2hlY2tlZFN0YXR1cyA9PT0gSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLmNoZWNrZWRcclxuICAgICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBbaXNJbnNpZGVUcmVlSXRlbSwgc2V0SXNJbnNpZGVUcmVlSXRlbV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XHJcbiAgICBjb25zdCB0cmVlSXRlbVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcclxuICAgIGNvbnN0IGZvY3VzVHJhcEVsZW1lbnQgPSB1c2VGb2N1c0xvY2soaXNJbnNpZGVUcmVlSXRlbSk7XHJcbiAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzID0gJ2J1dHRvbiwgW3JvbGU9XCJidXR0b25cIl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBhW2hyZWZdLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9XCItMVwiXSknO1xyXG4gICAgY29uc3QgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyA9IFJlYWN0LnVzZUNhbGxiYWNrKChjb250YWluZXIsIHNlbGVjdG9yKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKS5maWx0ZXIoZWwgPT4gIWVsLmhhc0F0dHJpYnV0ZSgndGFiaW5kZXgnKSB8fFxyXG4gICAgICAgICAgICAoZWwudGFiSW5kZXggIT09IHVuZGVmaW5lZCAmJiBlbC50YWJJbmRleCA+PSAwKSk7XHJcbiAgICB9LCBbXSk7XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgbGFiZWwgYW5kIGFkZGl0aW9uYWwgY29udGVudCBvZiBhIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBZb3UgY2FuIG5hdmlnYXRlIHRocm91Z2ggaW50ZXJhY3RpdmUgZWxlbWVudHMgdXNpbmcgdGhlIGBUYWJgIGtleSwgYWN0aXZhdGUgdGhlbSB3aXRoIGBFbnRlcmAgb3IgYFNwYWNlYCxcclxuICAgICAqIGFuZCBleGl0IG91dHNpZGUgYW5kIGZvY3VzIHRoZSB3aG9sZSB0cmVlIGl0ZW0gd2l0aCBgRXNjYXBlYC5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3QgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24gPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0LCBzaGlmdEtleSB9ID0gZXZlbnQ7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSB0YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaXNFbnRlciA9IGtleSA9PT0gJ0VudGVyJztcclxuICAgICAgICBjb25zdCBpc1NwYWNlID0ga2V5ID09PSAnICc7XHJcbiAgICAgICAgY29uc3QgaXNFc2NhcGUgPSBrZXkgPT09ICdFc2NhcGUnO1xyXG4gICAgICAgIGNvbnN0IGlzVGFiID0ga2V5ID09PSAnVGFiJztcclxuICAgICAgICBjb25zdCBpc0FjdGl2YXRpb25LZXkgPSBpc0VudGVyIHx8IGlzU3BhY2U7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdChpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAvLyBJZiB0aGUga2V5IGlzIGBUYWJgLCB3ZSBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzVGFiICYmIGlzSW5zaWRlVHJlZUl0ZW0pIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICAvLyBGaWx0ZXIgbGlzdCBvZiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGljaCBhcmUgb25seSBpbmNsdWRlZCBmb3IgY3VycmVudCB0cmVlIGl0ZW1cclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0LmZpbHRlcihlbCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0VHJlZUl0ZW0gPSBlbC5jbG9zZXN0KCdbcm9sZT1cInRyZWVpdGVtXCJdJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdFRyZWVJdGVtID09PSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5pbmRleE9mKGN1cnJlbnRFbGVtZW50KTtcclxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gc2hpZnRLZXkgPyAtMSA6IDE7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGNvbnN0IG5leHRJbmRleCA9IChjdXJyZW50SW5kZXggKyBkaXJlY3Rpb24gKyB0b3RhbCkgJSB0b3RhbDtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFRvRm9jdXMgPSBjdXJyZW50VHJlZUl0ZW1JbnRlcmFjdGl2ZUVsZW1lbnRzW25leHRJbmRleF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBlbGVtZW50VG9Gb2N1cy5mb2N1cygpLCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFByZXNzaW5nIGBFbnRlcmAgb3IgYFNwYWNlYCBvbiBhbiBpbnRlcmFjdGl2ZSBlbGVtZW50IHdpbGwgdHJpZ2dlciBpdHMgY2xpY2sgZXZlbnRcclxuICAgICAgICBpZiAoaXNBY3RpdmF0aW9uS2V5ICYmIGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTW92ZXMgZm9jdXMgb3V0c2lkZSB0aGUgdHJlZSBpdGVtIGFuZCBmb2N1c2VzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmIHdoZW4gYEVzY2FwZWAgaXMgcHJlc3NlZFxyXG4gICAgICAgIGlmIChpc0VzY2FwZSkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbShmYWxzZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRyZWVJdGVtTm9kZSA9IHRyZWVJdGVtUmVmLmN1cnJlbnQ7XHJcbiAgICAgICAgICAgIGlmICh0cmVlSXRlbU5vZGUpIHtcclxuICAgICAgICAgICAgICAgIHRyZWVJdGVtTm9kZS5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbZ2V0SW50ZXJhY3RpdmVFbGVtZW50cywgaW50ZXJhY3RpdmVFbGVtZW50cywgaXNJbnNpZGVUcmVlSXRlbV0pO1xyXG4gICAgY29uc3QgaGFuZGxlT25DbGljayA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoJ2J1dHRvbiwgW3JvbGU9XCJidXR0b25cIl0sIGFbaHJlZl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbcm9sZT1cIm1lbnVpdGVtXCJdJyk7XHJcbiAgICAgICAgLy8gUHJldmVudGluZyBzZWxlY3RpbmcgdGhlIGl0ZW0gd2hlbiBjbGlja2luZyBvbiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGVuIGBzZWxlY3RhYmxlYCBpcyBgc2luZ2xlYFxyXG4gICAgICAgIGlmIChpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5zaW5nbGUpIHtcclxuICAgICAgICAgICAgaGFuZGxlQ2xpY2soZXZlbnQsIGl0ZW1JZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIHNlbGVjdGFibGUsIGhhbmRsZUNsaWNrLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gbm9kZVR5cGUgPT09IFRyZWVOb2RlVHlwZS5icmFuY2ggPyAoUmVhY3QuY3JlYXRlRWxlbWVudChGb2xkZXJJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChBcnRpY2xlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUgfSkpO1xyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkTGFiZWxXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHN0eWxlOiBsYWJlbFN0eWxlLCBpZDogYCR7aXRlbUlkfS1sYWJlbGAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tbGFiZWxgIH0sXHJcbiAgICAgICAgaGFzSWNvbnMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbldyYXBwZXIsIHsgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1pY29uYCB9LCBpY29uIHx8IGRlZmF1bHRJY29uKSksXHJcbiAgICAgICAgbGFiZWwpKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBhZGRpdGlvbmFsQ29udGVudCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEFkZGl0aW9uYWxDb250ZW50V3JhcHBlciwgeyB0aGVtZTogdGhlbWUsIGlkOiBgJHtpdGVtSWR9LWFkZGl0aW9uYWxjb250ZW50d3JhcHBlcmAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkID8/IGl0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCB9LCBhZGRpdGlvbmFsQ29udGVudCkpIDogbnVsbDtcclxuICAgIC8vIE1lbW9pemUgaW5saW5lIHN0eWxlIG9iamVjdHMgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSByZS1yZW5kZXJzXHJcbiAgICBjb25zdCBjaGVja2JveElucHV0U3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7IG1hcmdpblJpZ2h0OiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMyB9KSwgW3RoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzXSk7XHJcbiAgICBjb25zdCBjaGVja2JveExhYmVsU3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgcGFkZGluZzogMCxcclxuICAgICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgfSksIFtdKTtcclxuICAgIC8vIFByb3BzIHNoYXJlZCBieSBDaGVja2JveCBhbmQgSW5kZXRlcm1pbmF0ZUNoZWNrYm94XHJcbiAgICBjb25zdCBjaGVja2JveFByb3BzID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xyXG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxyXG4gICAgICAgIGhpZGVGb2N1czogdHJ1ZSxcclxuICAgICAgICBpZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICAgICAgaW5wdXRTdHlsZTogY2hlY2tib3hJbnB1dFN0eWxlLFxyXG4gICAgICAgIGxhYmVsU3R5bGU6IGNoZWNrYm94TGFiZWxTdHlsZSxcclxuICAgICAgICBsYWJlbFRleHQ6IGxhYmVsVGV4dCxcclxuICAgICAgICBvbkNoYW5nZTogY2hlY2tib3hDaGFuZ2VIYW5kbGVyLFxyXG4gICAgICAgIHRhYkluZGV4OiAtMSxcclxuICAgICAgICB0ZXN0SWQ6IGAke2l0ZW1JZH0tY2hlY2tib3hgLFxyXG4gICAgfSksIFtcclxuICAgICAgICBpc0Rpc2FibGVkLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dCxcclxuICAgICAgICBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IG9uRXhwYW5kZWRDbGlja2VkID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBoYW5kbGVFeHBhbmRlZENoYW5nZShldmVudCwgaXRlbUlkKTtcclxuICAgIH0sIFtoYW5kbGVFeHBhbmRlZENoYW5nZSwgaXRlbUlkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVFeHBhbmRDbGljayA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmICghaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVG9Gb2N1cyA9PT0gaXRlbUlkID8gMCA6IC0xO1xyXG4gICAgfSwgW2lzRGlzYWJsZWQsIGl0ZW1Ub0ZvY3VzLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IHNob3VsZFNob3dDaGVja2JveCA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSAmJlxyXG4gICAgICAgIChpc1RvcExldmVsU2VsZWN0YWJsZSAhPT0gZmFsc2UgfHwgIXRvcExldmVsKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogUHJlc3NpbmcgYEN0cmwgKyBFbnRlcmAgb3IgYENvbW1hbmQgKyBFbnRlcmAgZm9jdXNlcyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudCB3aXRoaW4gdGhlIHRyZWUgaXRlbVxyXG4gICAgICogYW5kIGxvY2tzIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBmb2N1cyBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaXQgaGFuZGxlcyBrZXkgZXZlbnRzIGZvciBpbnRlcmFjdGlvbiBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBJdCBhbHNvIGhhbmRsZXMgdGhlIG90aGVyIGtleXMgdG8gdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsT3JDb21tYW5kID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5O1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybEVudGVyID0gaXNDdHJsT3JDb21tYW5kICYmIGlzRW50ZXI7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBDdHJsICsgRW50ZXIgb3IgQ29tbWFuZCArIEVudGVyLCBmb2N1cyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudFxyXG4gICAgICAgIC8vIGFuZCBsb2NrIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzQ3RybEVudGVyICYmIHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3RbMF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHZhbGlkIENTUyBzZWxlY3RvcnMgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuLCBwZXJpb2RzIGluIGl0ZW1JZClcclxuICAgICAgICBjb25zdCBzYWZlSXRlbUlkID0gQ1NTLmVzY2FwZShpdGVtSWQpO1xyXG4gICAgICAgIGNvbnN0IGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50ID0gdGFyZ2V0LmNsb3Nlc3QoYCMke3NhZmVJdGVtSWR9LWxhYmVsLCAjJHtzYWZlSXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgKTtcclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBoYW5kbGUga2V5IGV2ZW50cyBmb3IgdGhvc2UgYXJlYXNcclxuICAgICAgICBpZiAoaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYsIGhhbmRsZSBrZXkgZG93biBmb3IgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgaGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbXHJcbiAgICAgICAgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnRzLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICBoYW5kbGVMYWJlbEFuZEFkZGl0aW9uYWxDb250ZW50S2V5RG93bixcclxuICAgICAgICBoYW5kbGVLZXlEb3duLFxyXG4gICAgXSk7XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb250ZXh0VmFsdWUgfSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IHRyZWVJdGVtU3R5bGVzIH0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkVHJlZUl0ZW0sIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgXCJhcmlhLWV4cGFuZGVkXCI6IGhhc093blRyZWVJdGVtcyA/IGV4cGFuZGVkIDogbnVsbCwgXCJhcmlhLXNlbGVjdGVkXCI6IHNlbGVjdGVkSXRlbSwgXCJhcmlhLWNoZWNrZWRcIjogc2hvdWxkU2hvd0NoZWNrYm94ID8gYXJpYUNoZWNrZWRWYWx1ZSA6IG51bGwsIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLCBkZXB0aDogaXRlbURlcHRoLCBoYXNPd25UcmVlSXRlbXM6IGhhc093blRyZWVJdGVtcywgaWQ6IGl0ZW1JZCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG5vZGVUeXBlOiBub2RlVHlwZSwgcm9sZTogXCJ0cmVlaXRlbVwiLCBzZWxlY3RhYmxlVHlwZTogc2VsZWN0YWJsZSwgc2VsZWN0ZWQ6IHNlbGVjdGVkSXRlbSwgdGhlbWU6IHRoZW1lLCB0YWJJbmRleDogdGFiSW5kZXgsIG9uS2V5RG93bjogb25LZXlEb3duSGFuZGxlciwgcmVmOiB0cmVlSXRlbVJlZiwgaG92ZXJDb2xvcjogaG92ZXJDb2xvciB9KSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkSXRlbVdyYXBwZXIsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1pdGVtd3JhcHBlcmAsIGRlcHRoOiBpdGVtRGVwdGgsIGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCBoYXNDdXN0b21JY29uU2l6ZTogISFleHBhbmRJY29uU3R5bGVzPy5zaXplLCBpZDogYCR7aXRlbUlkfS1pdGVtd3JhcHBlcmAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBub2RlVHlwZTogbm9kZVR5cGUsIHNlbGVjdGFibGU6IHNlbGVjdGFibGUsIHN0eWxlOiBzdHlsZSwgdGhlbWU6IHRoZW1lLCByZWY6IG1lcmdlUmVmcyhyZWYsIGZvY3VzVHJhcEVsZW1lbnQpLCBvbkNsaWNrOiBoYW5kbGVPbkNsaWNrIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEV4cGFuZFdyYXBwZXIsIHsgXCJhcmlhLWhpZGRlblwiOiBCb29sZWFuKCFleHBhbmRlZCksIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUsIGNvbG9yOiBleHBhbmRJY29uU3R5bGVzPy5jb2xvciwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1leHBhbmRgLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgb25DbGljazogaGFuZGxlRXhwYW5kQ2xpY2ssIHRoZW1lOiB0aGVtZSB9LCBleHBhbmRlZCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEV4cGFuZE1vcmVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChDaGV2cm9uUmlnaHRJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSB9KSkpKSxcclxuICAgICAgICAgICAgICAgICAgICBzaG91bGRTaG93Q2hlY2tib3ggPyAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRDaGVja2JveFdyYXBwZXIsIHsgaGFzQWRkaXRpb25hbENvbnRlbnQ6ICEhYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lOiB0aGVtZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChJbmRldGVybWluYXRlQ2hlY2tib3gsIE9iamVjdC5hc3NpZ24oe30sIGNoZWNrYm94UHJvcHMsIHsgc3RhdHVzOiBjaGVja2VkU3RhdHVzIH0pKSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBjaGVja2VkOiBjaGVja2VkU3RhdHVzVG9Cb29sZWFuKGNoZWNrZWRTdGF0dXMpIH0pKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbFRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQpKSksXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sIChjaGlsZCwgY2hpbGRJbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZD8udHlwZSAhPT0gVHJlZUl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyBQYXNzIGhpZXJhcmNoeSBpbmZvIHRocm91Z2ggY29udGV4dCBpbnN0ZWFkIG9mIGNsb25lRWxlbWVudFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5lc3RlZEhpZXJhcmNoeVZhbHVlID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXB0aDogaXRlbURlcHRoICsgMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3BMZXZlbDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBjaGlsZEluZGV4LFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyYW5zaXRpb24sIHsgaXNPcGVuOiBleHBhbmRlZCwgdW5tb3VudE9uRXhpdDogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgeyByb2xlOiBcImdyb3VwXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0LlByb3ZpZGVyLCB7IGtleTogY2hpbGQucHJvcHMuaXRlbUlkLCB2YWx1ZTogbmVzdGVkSGllcmFyY2h5VmFsdWUgfSwgY2hpbGQpKSkpO1xyXG4gICAgICAgICAgICAgICAgfSkpKSkpO1xyXG59KTtcclxuLyoqXHJcbiAqIEN1c3RvbSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBSZWFjdC5tZW1vXHJcbiAqIE9ubHkgcmUtcmVuZGVyIFRyZWVJdGVtIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlXHJcbiAqL1xyXG5mdW5jdGlvbiBhcmVQcm9wc0VxdWFsKHByZXZQcm9wcywgbmV4dFByb3BzKSB7XHJcbiAgICAvLyBDaGVjayBpZiBpdGVtSWQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5pdGVtSWQgIT09IG5leHRQcm9wcy5pdGVtSWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBsYWJlbCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsICE9PSBuZXh0UHJvcHMubGFiZWwpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBkaXNhYmxlZCBzdGF0ZSBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmlzRGlzYWJsZWQgIT09IG5leHRQcm9wcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaWNvbiBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmljb24gIT09IG5leHRQcm9wcy5pY29uKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgYWRkaXRpb25hbCBjb250ZW50IGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuYWRkaXRpb25hbENvbnRlbnQgIT09IG5leHRQcm9wcy5hZGRpdGlvbmFsQ29udGVudCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGhvdmVyIGNvbG9yIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaG92ZXJDb2xvciAhPT0gbmV4dFByb3BzLmhvdmVyQ29sb3IpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBjaGlsZHJlbiBjaGFuZ2VkIChmb3IgbmVzdGVkIHRyZWUgaXRlbXMpXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBjaGlsZHJlbiBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLmNoaWxkcmVuICE9PSBuZXh0UHJvcHMuY2hpbGRyZW4pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBzdHlsZXMgY2hhbmdlZFxyXG4gICAgLy8gVXNpbmcgdHlwZSBhc3NlcnRpb24gc2luY2Ugc3R5bGUgY29tZXMgZnJvbSBSZWFjdC5IVE1MQXR0cmlidXRlc1xyXG4gICAgaWYgKHByZXZQcm9wcy5zdHlsZSAhPT0gbmV4dFByb3BzLnN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy5sYWJlbFN0eWxlICE9PSBuZXh0UHJvcHMubGFiZWxTdHlsZSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChwcmV2UHJvcHMudHJlZUl0ZW1TdHlsZXMgIT09IG5leHRQcm9wcy50cmVlSXRlbVN0eWxlcykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIEFsbCByZWxldmFudCBwcm9wcyBhcmUgZXF1YWwsIHNraXAgcmUtcmVuZGVyXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG4vKipcclxuICogTWVtb2l6ZWQgVHJlZUl0ZW0gY29tcG9uZW50XHJcbiAqIE9ubHkgcmUtcmVuZGVycyB3aGVuIHJlbGV2YW50IHByb3BzIGNoYW5nZSwgaW1wcm92aW5nIHBlcmZvcm1hbmNlIGZvciBsYXJnZSB0cmVlc1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFRyZWVJdGVtID0gUmVhY3QubWVtbyhUcmVlSXRlbUNvbXBvbmVudCwgYXJlUHJvcHNFcXVhbCk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRyZWVJdGVtLmpzLm1hcCJdfQ== */"));
22879
23389
  var StyledCheckboxWrapper = /*#__PURE__*/_styled("div", {
22880
23390
  target: "e1xiryew2",
22881
23391
  label: "StyledCheckboxWrapper"
@@ -22885,7 +23395,7 @@ var StyledCheckboxWrapper = /*#__PURE__*/_styled("div", {
22885
23395
  return props.hasAdditionalContent ? 'flex' : 'inline-flex';
22886
23396
  }, ";flex-direction:column;width:", function (props) {
22887
23397
  return "calc(100% - " + props.theme.spaceScale.spacing03 + ")";
22888
- }, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnSHlDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3Q29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyB1c2VJc0ludmVyc2UgfSBmcm9tICcuLi8uLi9pbnZlcnNlJztcclxuaW1wb3J0IHsgVGhlbWVDb250ZXh0IH0gZnJvbSAnLi4vLi4vdGhlbWUvVGhlbWVDb250ZXh0JztcclxuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCc7XHJcbmltcG9ydCB7IEluZGV0ZXJtaW5hdGVDaGVja2JveCwgSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLCB9IGZyb20gJy4uL0luZGV0ZXJtaW5hdGVDaGVja2JveCc7XHJcbmltcG9ydCB7IFRyYW5zaXRpb24gfSBmcm9tICcuLi9UcmFuc2l0aW9uJztcclxuaW1wb3J0IHsgY2FsY3VsYXRlT2Zmc2V0LCBnZXRUcmVlSXRlbUxhYmVsQ29sb3IsIGdldFRyZWVJdGVtV3JhcHBlckN1cnNvciwgVHJlZU5vZGVUeXBlLCB9IGZyb20gJy4vdXRpbHMnO1xyXG5pbXBvcnQgeyB1c2VGb2N1c0xvY2sgfSBmcm9tICcuLi8uLi9ob29rcy91c2VGb2N1c0xvY2snO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmNvbnN0IFN0eWxlZFRyZWVJdGVtID0gc3R5bGVkLmxpIGBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMTAwXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsNzAwfTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGVUeXBlLCBwcm9wcy5ub2RlVHlwZSl9O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6ICR7cHJvcHMgPT4gY2FsY3VsYXRlT2Zmc2V0KHByb3BzLm5vZGVUeXBlLCBwcm9wcy5kZXB0aCl9O1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAmID4gKjpmaXJzdC1jaGlsZCB7XG4gICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgIG91dGxpbmU6IDJweCBzb2xpZFxuICAgICAgICAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXNJbnZlcnNlXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5mb2N1c307XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUpfTtcbiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIHRydWUpfTtcbiAgICBwYWRkaW5nLWJsb2NrLWVuZDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1ibG9jay1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG5cbiAgICAke3Byb3BzID0+IHByb3BzLnNlbGVjdGVkICYmXHJcbiAgICBjc3MgYFxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMuaXNJbnZlcnNlXHJcbiAgICAgICAgPyBwcm9wcy50aGVtZS5jb2xvcnMudGVydGlhcnk1MDBcclxuICAgICAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5wcmltYXJ5NTAwfTtcbiAgICAgICAgICBibG9jay1zaXplOiAxMDAlO1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIGlubGluZS1zaXplOiAke3Byb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAyfTtcbiAgICAgICAgICBpbnNldC1ibG9jay1zdGFydDogMDtcbiAgICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgICAgIH1cbiAgICAgIGB9XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IGdldEhvdmVyQmFja2dyb3VuZCh7XHJcbiAgICBpc0Rpc2FibGVkOiBwcm9wcy5pc0Rpc2FibGVkLFxyXG4gICAgaG92ZXJDb2xvcjogcHJvcHMuaG92ZXJDb2xvcixcclxuICAgIGlzSW52ZXJzZTogcHJvcHMuaXNJbnZlcnNlLFxyXG4gICAgdGhlbWU6IHByb3BzLnRoZW1lLFxyXG59KX07XG4gICAgfVxuICB9XG5gO1xyXG5mdW5jdGlvbiBnZXRIb3ZlckJhY2tncm91bmQoeyBpc0Rpc2FibGVkLCBob3ZlckNvbG9yLCBpc0ludmVyc2UsIHRoZW1lIH0pIHtcclxuICAgIGlmIChpc0Rpc2FibGVkKVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICBpZiAoaG92ZXJDb2xvcilcclxuICAgICAgICByZXR1cm4gaG92ZXJDb2xvcjtcclxuICAgIGNvbnN0IHRyYW5zcGFyZW5jeSA9IGlzSW52ZXJzZSA/IDAuOCA6IDAuOTU7XHJcbiAgICByZXR1cm4gdHJhbnNwYXJlbnRpemUodHJhbnNwYXJlbmN5LCB0aGVtZS5jb2xvcnMubmV1dHJhbDkwMCk7XHJcbn1cclxuY29uc3QgSWNvbldyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGNvbG9yOiAke3Byb3BzID0+IGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIG1hcmdpbi1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM307XG4gIG1hcmdpbi1sZWZ0OiAwO1xuXG4gIHN2ZyB7XG4gICAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaWNvblNpemVzLm1lZGl1bX1weDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB9XG5gO1xyXG5jb25zdCBTdHlsZWRMYWJlbFdyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICB3aWR0aDogMTAwJTtcbmA7XHJcbmNvbnN0IFN0eWxlZEV4cGFuZFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5jb2xvciB8fFxyXG4gICAgZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgd2lkdGg6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG4gIGhlaWdodDogJHsoeyBzaXplLCB0aGVtZSB9KSA9PiBzaXplICE9PSB1bmRlZmluZWQgPyBgJHtzaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXgsIGxhYmVsLCBsYWJlbFN0eWxlLCBzdHlsZSwgdGVzdElkLCB0b3BMZXZlbCwgdHJlZUl0ZW1TdHlsZXMsIC4uLnJlc3QgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XHJcbiAgICBjb25zdCBpc0ludmVyc2UgPSB1c2VJc0ludmVyc2UoKTtcclxuICAgIGNvbnN0IHsgZXhwYW5kSWNvblN0eWxlcywgaGFuZGxlRXhwYW5kZWRDaGFuZ2UsIGhhc0ljb25zLCBpdGVtVG9Gb2N1cywgaXNUb3BMZXZlbFNlbGVjdGFibGUsIHNlbGVjdGFibGUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNvbnRleHRWYWx1ZSwgaGFuZGxlQ2xpY2ssIGhhbmRsZUtleURvd24gfSA9IHVzZVRyZWVJdGVtKHByb3BzLCBmb3J3YXJkZWRSZWYpO1xyXG4gICAgY29uc3QgeyBpc0Rpc2FibGVkIH0gPSBjb250ZXh0VmFsdWU7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHBhcmVudERlcHRoLCByZWYsIHNlbGVjdGVkSXRlbXMsIH0gPSBjb250ZXh0VmFsdWU7XHJcbiAgICBjb25zdCBub2RlVHlwZSA9IGhhc093blRyZWVJdGVtcyA/IFRyZWVOb2RlVHlwZS5icmFuY2ggOiBUcmVlTm9kZVR5cGUubGVhZjtcclxuICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5zaW5nbGVcclxuICAgICAgICA/IHNlbGVjdGVkSXRlbXM/LlswXT8uaXRlbUlkID09PSBpdGVtSWRcclxuICAgICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBhcmlhQ2hlY2tlZFZhbHVlID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLm11bHRpXHJcbiAgICAgICAgPyBjaGVja2VkU3RhdHVzID09PSBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMuaW5kZXRlcm1pbmF0ZVxyXG4gICAgICAgICAgICA/ICdtaXhlZCdcclxuICAgICAgICAgICAgOiBjaGVja2VkU3RhdHVzID09PSBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMuY2hlY2tlZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IFtpc0luc2lkZVRyZWVJdGVtLCBzZXRJc0luc2lkZVRyZWVJdGVtXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xyXG4gICAgY29uc3QgZm9jdXNUcmFwRWxlbWVudCA9IHVzZUZvY3VzTG9jayhpc0luc2lkZVRyZWVJdGVtKTtcclxuICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHMgPSAnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIGFbaHJlZl0sIFt0YWJpbmRleF06bm90KFt0YWJpbmRleD1cIi0xXCJdKSc7XHJcbiAgICBjb25zdCBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzID0gKGNvbnRhaW5lciwgc2VsZWN0b3IpID0+IHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShjb250YWluZXIucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpLmZpbHRlcihlbCA9PiAhZWwuaGFzQXR0cmlidXRlKCd0YWJpbmRleCcpIHx8XHJcbiAgICAgICAgICAgIChlbC50YWJJbmRleCAhPT0gdW5kZWZpbmVkICYmIGVsLnRhYkluZGV4ID49IDApKTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgbGFiZWwgYW5kIGFkZGl0aW9uYWwgY29udGVudCBvZiBhIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBZb3UgY2FuIG5hdmlnYXRlIHRocm91Z2ggaW50ZXJhY3RpdmUgZWxlbWVudHMgdXNpbmcgdGhlIGBUYWJgIGtleSwgYWN0aXZhdGUgdGhlbSB3aXRoIGBFbnRlcmAgb3IgYFNwYWNlYCxcclxuICAgICAqIGFuZCBleGl0IG91dHNpZGUgYW5kIGZvY3VzIHRoZSB3aG9sZSB0cmVlIGl0ZW0gd2l0aCBgRXNjYXBlYC5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3QgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24gPSAoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0LCBzaGlmdEtleSB9ID0gZXZlbnQ7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSB0YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaXNFbnRlciA9IGtleSA9PT0gJ0VudGVyJztcclxuICAgICAgICBjb25zdCBpc1NwYWNlID0ga2V5ID09PSAnICc7XHJcbiAgICAgICAgY29uc3QgaXNFc2NhcGUgPSBrZXkgPT09ICdFc2NhcGUnO1xyXG4gICAgICAgIGNvbnN0IGlzVGFiID0ga2V5ID09PSAnVGFiJztcclxuICAgICAgICBjb25zdCBpc0FjdGl2YXRpb25LZXkgPSBpc0VudGVyIHx8IGlzU3BhY2U7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdChpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAvLyBJZiB0aGUga2V5IGlzIGBUYWJgLCB3ZSBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzVGFiICYmIGlzSW5zaWRlVHJlZUl0ZW0pIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICAvLyBGaWx0ZXIgbGlzdCBvZiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGljaCBhcmUgb25seSBpbmNsdWRlZCBmb3IgY3VycmVudCB0cmVlIGl0ZW1cclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0LmZpbHRlcihlbCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0VHJlZUl0ZW0gPSBlbC5jbG9zZXN0KCdbcm9sZT1cInRyZWVpdGVtXCJdJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdFRyZWVJdGVtID09PSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5pbmRleE9mKGN1cnJlbnRFbGVtZW50KTtcclxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gc2hpZnRLZXkgPyAtMSA6IDE7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGNvbnN0IG5leHRJbmRleCA9IChjdXJyZW50SW5kZXggKyBkaXJlY3Rpb24gKyB0b3RhbCkgJSB0b3RhbDtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFRvRm9jdXMgPSBjdXJyZW50VHJlZUl0ZW1JbnRlcmFjdGl2ZUVsZW1lbnRzW25leHRJbmRleF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBlbGVtZW50VG9Gb2N1cy5mb2N1cygpLCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFByZXNzaW5nIGBFbnRlcmAgb3IgYFNwYWNlYCBvbiBhbiBpbnRlcmFjdGl2ZSBlbGVtZW50IHdpbGwgdHJpZ2dlciBpdHMgY2xpY2sgZXZlbnRcclxuICAgICAgICBpZiAoaXNBY3RpdmF0aW9uS2V5ICYmIGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTW92ZXMgZm9jdXMgb3V0c2lkZSB0aGUgdHJlZSBpdGVtIGFuZCBmb2N1c2VzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmIHdoZW4gYEVzY2FwZWAgaXMgcHJlc3NlZFxyXG4gICAgICAgIGlmIChpc0VzY2FwZSkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbShmYWxzZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRyZWVJdGVtTm9kZSA9IHRyZWVJdGVtUmVmLmN1cnJlbnQ7XHJcbiAgICAgICAgICAgIGlmICh0cmVlSXRlbU5vZGUpIHtcclxuICAgICAgICAgICAgICAgIHRyZWVJdGVtTm9kZS5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaGFuZGxlT25DbGljayA9IChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoJ2J1dHRvbiwgW3JvbGU9XCJidXR0b25cIl0sIGFbaHJlZl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbcm9sZT1cIm1lbnVpdGVtXCJdJyk7XHJcbiAgICAgICAgLy8gUHJldmVudGluZyBzZWxlY3RpbmcgdGhlIGl0ZW0gd2hlbiBjbGlja2luZyBvbiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGVuIGBzZWxlY3RhYmxlYCBpcyBgc2luZ2xlYFxyXG4gICAgICAgIGlmIChpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5zaW5nbGUpIHtcclxuICAgICAgICAgICAgaGFuZGxlQ2xpY2soZXZlbnQsIGl0ZW1JZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gbm9kZVR5cGUgPT09IFRyZWVOb2RlVHlwZS5icmFuY2ggPyAoUmVhY3QuY3JlYXRlRWxlbWVudChGb2xkZXJJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChBcnRpY2xlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUgfSkpO1xyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkTGFiZWxXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHN0eWxlOiBsYWJlbFN0eWxlLCBpZDogYCR7aXRlbUlkfS1sYWJlbGAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tbGFiZWxgIH0sXHJcbiAgICAgICAgaGFzSWNvbnMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbldyYXBwZXIsIHsgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1pY29uYCB9LCBpY29uIHx8IGRlZmF1bHRJY29uKSksXHJcbiAgICAgICAgbGFiZWwpKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBhZGRpdGlvbmFsQ29udGVudCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEFkZGl0aW9uYWxDb250ZW50V3JhcHBlciwgeyB0aGVtZTogdGhlbWUsIGlkOiBgJHtpdGVtSWR9LWFkZGl0aW9uYWxjb250ZW50d3JhcHBlcmAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkID8/IGl0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCB9LCBhZGRpdGlvbmFsQ29udGVudCkpIDogbnVsbDtcclxuICAgIC8vIFByb3BzIHNoYXJlZCBieSBDaGVja2JveCBhbmQgSW5kZXRlcm1pbmF0ZUNoZWNrYm94XHJcbiAgICBjb25zdCBjaGVja2JveFByb3BzID0ge1xyXG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxyXG4gICAgICAgIGhpZGVGb2N1czogdHJ1ZSxcclxuICAgICAgICBpZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICAgICAgaW5wdXRTdHlsZTogeyBtYXJnaW5SaWdodDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDMgfSxcclxuICAgICAgICBsYWJlbFN0eWxlOiB7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDAsXHJcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBsYWJlbFRleHQ6IGxhYmVsVGV4dCxcclxuICAgICAgICBvbkNoYW5nZTogY2hlY2tib3hDaGFuZ2VIYW5kbGVyLFxyXG4gICAgICAgIHRhYkluZGV4OiAtMSxcclxuICAgICAgICB0ZXN0SWQ6IGAke2l0ZW1JZH0tY2hlY2tib3hgLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IG9uRXhwYW5kZWRDbGlja2VkID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBoYW5kbGVFeHBhbmRlZENoYW5nZShldmVudCwgaXRlbUlkKTtcclxuICAgIH07XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVG9Gb2N1cyA9PT0gaXRlbUlkID8gMCA6IC0xO1xyXG4gICAgfSwgW2lzRGlzYWJsZWQsIGl0ZW1Ub0ZvY3VzLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IHNob3VsZFNob3dDaGVja2JveCA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSAmJlxyXG4gICAgICAgIChpc1RvcExldmVsU2VsZWN0YWJsZSAhPT0gZmFsc2UgfHwgIXRvcExldmVsKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogUHJlc3NpbmcgYEN0cmwgKyBFbnRlcmAgb3IgYENvbW1hbmQgKyBFbnRlcmAgZm9jdXNlcyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudCB3aXRoaW4gdGhlIHRyZWUgaXRlbVxyXG4gICAgICogYW5kIGxvY2tzIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBmb2N1cyBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaXQgaGFuZGxlcyBrZXkgZXZlbnRzIGZvciBpbnRlcmFjdGlvbiBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBJdCBhbHNvIGhhbmRsZXMgdGhlIG90aGVyIGtleXMgdG8gdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsT3JDb21tYW5kID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5O1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybEVudGVyID0gaXNDdHJsT3JDb21tYW5kICYmIGlzRW50ZXI7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBDdHJsICsgRW50ZXIgb3IgQ29tbWFuZCArIEVudGVyLCBmb2N1cyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudFxyXG4gICAgICAgIC8vIGFuZCBsb2NrIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzQ3RybEVudGVyICYmIHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3RbMF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHZhbGlkIENTUyBzZWxlY3RvcnMgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuLCBwZXJpb2RzIGluIGl0ZW1JZClcclxuICAgICAgICBjb25zdCBzYWZlSXRlbUlkID0gQ1NTLmVzY2FwZShpdGVtSWQpO1xyXG4gICAgICAgIGNvbnN0IGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50ID0gdGFyZ2V0LmNsb3Nlc3QoYCMke3NhZmVJdGVtSWR9LWxhYmVsLCAjJHtzYWZlSXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgKTtcclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBoYW5kbGUga2V5IGV2ZW50cyBmb3IgdGhvc2UgYXJlYXNcclxuICAgICAgICBpZiAoaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYsIGhhbmRsZSBrZXkgZG93biBmb3IgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgaGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyZWVJdGVtQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogY29udGV4dFZhbHVlIH0sXHJcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHN0eWxlOiB0cmVlSXRlbVN0eWxlcyB9LFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZFRyZWVJdGVtLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IFwiYXJpYS1leHBhbmRlZFwiOiBoYXNPd25UcmVlSXRlbXMgPyBleHBhbmRlZCA6IG51bGwsIFwiYXJpYS1zZWxlY3RlZFwiOiBzZWxlY3RlZEl0ZW0sIFwiYXJpYS1jaGVja2VkXCI6IHNob3VsZFNob3dDaGVja2JveCA/IGFyaWFDaGVja2VkVmFsdWUgOiBudWxsLCBcImRhdGEtdGVzdGlkXCI6IHRlc3RJZCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzT3duVHJlZUl0ZW1zOiBoYXNPd25UcmVlSXRlbXMsIGlkOiBpdGVtSWQsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBub2RlVHlwZTogbm9kZVR5cGUsIHJvbGU6IFwidHJlZWl0ZW1cIiwgc2VsZWN0YWJsZVR5cGU6IHNlbGVjdGFibGUsIHNlbGVjdGVkOiBzZWxlY3RlZEl0ZW0sIHRoZW1lOiB0aGVtZSwgdGFiSW5kZXg6IHRhYkluZGV4LCBvbktleURvd246IG9uS2V5RG93bkhhbmRsZXIsIHJlZjogdHJlZUl0ZW1SZWYsIGhvdmVyQ29sb3I6IGhvdmVyQ29sb3IgfSksXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEl0ZW1XcmFwcGVyLCB7IFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkID8/IGl0ZW1JZH0taXRlbXdyYXBwZXJgLCBkZXB0aDogaXRlbURlcHRoLCBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgaGFzQ3VzdG9tSWNvblNpemU6ICEhZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSwgaWQ6IGAke2l0ZW1JZH0taXRlbXdyYXBwZXJgLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgbm9kZVR5cGU6IG5vZGVUeXBlLCBzZWxlY3RhYmxlOiBzZWxlY3RhYmxlLCBzdHlsZTogc3R5bGUsIHRoZW1lOiB0aGVtZSwgcmVmOiBtZXJnZVJlZnMocmVmLCBmb2N1c1RyYXBFbGVtZW50KSwgb25DbGljazogaGFuZGxlT25DbGljayB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRFeHBhbmRXcmFwcGVyLCB7IFwiYXJpYS1oaWRkZW5cIjogQm9vbGVhbighZXhwYW5kZWQpLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplLCBjb2xvcjogZXhwYW5kSWNvblN0eWxlcz8uY29sb3IsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZXhwYW5kYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG9uQ2xpY2s6IGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRXhwYW5kZWRDbGlja2VkKGV2ZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhlbWU6IHRoZW1lIH0sIGV4cGFuZGVkID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRXhwYW5kTW9yZUljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZXZyb25SaWdodEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSkpLFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3VsZFNob3dDaGVja2JveCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZENoZWNrYm94V3JhcHBlciwgeyBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgdGhlbWU6IHRoZW1lIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEluZGV0ZXJtaW5hdGVDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBzdGF0dXM6IGNoZWNrZWRTdGF0dXMgfSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IGNoZWNrZWQ6IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4oY2hlY2tlZFN0YXR1cykgfSkpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpKSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZD8udHlwZSA9PT0gVHJlZUl0ZW0gPyAoUmVhY3QuY3JlYXRlRWxlbWVudChUcmFuc2l0aW9uLCB7IGlzT3BlbjogZXhwYW5kZWQsIHVubW91bnRPbkV4aXQ6IHRydWUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInVsXCIsIHsgcm9sZTogXCJncm91cFwiIH0sIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLnByb3BzLml0ZW1JZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudERlcHRoLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSkpKSA6IChjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB9KSkpKSk7XHJcbn0pO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1UcmVlSXRlbS5qcy5tYXAiXX0= */"));
23398
+ }, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtSHlDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSAnLi4vQ2hlY2tib3gnO1xyXG5pbXBvcnQgeyBJbmRldGVybWluYXRlQ2hlY2tib3gsIEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cywgfSBmcm9tICcuLi9JbmRldGVybWluYXRlQ2hlY2tib3gnO1xyXG5pbXBvcnQgeyBUcmFuc2l0aW9uIH0gZnJvbSAnLi4vVHJhbnNpdGlvbic7XHJcbmNvbnN0IFN0eWxlZFRyZWVJdGVtID0gc3R5bGVkLmxpIGBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMTAwXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsNzAwfTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGVUeXBlLCBwcm9wcy5ub2RlVHlwZSl9O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6ICR7cHJvcHMgPT4gY2FsY3VsYXRlT2Zmc2V0KHByb3BzLm5vZGVUeXBlLCBwcm9wcy5kZXB0aCl9O1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAmID4gKjpmaXJzdC1jaGlsZCB7XG4gICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgIG91dGxpbmU6IDJweCBzb2xpZFxuICAgICAgICAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXNJbnZlcnNlXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5mb2N1c307XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUpfTtcbiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIHRydWUpfTtcbiAgICBwYWRkaW5nLWJsb2NrLWVuZDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1ibG9jay1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG5cbiAgICAke3Byb3BzID0+IHByb3BzLnNlbGVjdGVkICYmXHJcbiAgICBjc3MgYFxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMuaXNJbnZlcnNlXHJcbiAgICAgICAgPyBwcm9wcy50aGVtZS5jb2xvcnMudGVydGlhcnk1MDBcclxuICAgICAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5wcmltYXJ5NTAwfTtcbiAgICAgICAgICBibG9jay1zaXplOiAxMDAlO1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIGlubGluZS1zaXplOiAke3Byb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAyfTtcbiAgICAgICAgICBpbnNldC1ibG9jay1zdGFydDogMDtcbiAgICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgICAgIH1cbiAgICAgIGB9XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IGdldEhvdmVyQmFja2dyb3VuZCh7XHJcbiAgICBpc0Rpc2FibGVkOiBwcm9wcy5pc0Rpc2FibGVkLFxyXG4gICAgaG92ZXJDb2xvcjogcHJvcHMuaG92ZXJDb2xvcixcclxuICAgIGlzSW52ZXJzZTogcHJvcHMuaXNJbnZlcnNlLFxyXG4gICAgdGhlbWU6IHByb3BzLnRoZW1lLFxyXG59KX07XG4gICAgfVxuICB9XG5gO1xyXG5mdW5jdGlvbiBnZXRIb3ZlckJhY2tncm91bmQoeyBpc0Rpc2FibGVkLCBob3ZlckNvbG9yLCBpc0ludmVyc2UsIHRoZW1lIH0pIHtcclxuICAgIGlmIChpc0Rpc2FibGVkKVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICBpZiAoaG92ZXJDb2xvcilcclxuICAgICAgICByZXR1cm4gaG92ZXJDb2xvcjtcclxuICAgIGNvbnN0IHRyYW5zcGFyZW5jeSA9IGlzSW52ZXJzZSA/IDAuOCA6IDAuOTU7XHJcbiAgICByZXR1cm4gdHJhbnNwYXJlbnRpemUodHJhbnNwYXJlbmN5LCB0aGVtZS5jb2xvcnMubmV1dHJhbDkwMCk7XHJcbn1cclxuY29uc3QgSWNvbldyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGNvbG9yOiAke3Byb3BzID0+IGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIG1hcmdpbi1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM307XG4gIG1hcmdpbi1sZWZ0OiAwO1xuXG4gIHN2ZyB7XG4gICAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaWNvblNpemVzLm1lZGl1bX1weDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB9XG5gO1xyXG5jb25zdCBTdHlsZWRMYWJlbFdyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICB3aWR0aDogMTAwJTtcbmA7XHJcbmNvbnN0IFN0eWxlZEV4cGFuZFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5jb2xvciB8fFxyXG4gICAgZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgd2lkdGg6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG4gIGhlaWdodDogJHsoeyBzaXplLCB0aGVtZSB9KSA9PiBzaXplICE9PSB1bmRlZmluZWQgPyBgJHtzaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5jb25zdCBUcmVlSXRlbUNvbXBvbmVudCA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpID0+IHtcclxuICAgIGNvbnN0IHsgYWRkaXRpb25hbENvbnRlbnQsIGNoaWxkcmVuLCBob3ZlckNvbG9yLCBpY29uLCBpbmRleDogaW5kZXhQcm9wLCBsYWJlbCwgbGFiZWxTdHlsZSwgc3R5bGUsIHRlc3RJZCwgdG9wTGV2ZWw6IHRvcExldmVsUHJvcCwgdHJlZUl0ZW1TdHlsZXMsIC4uLnJlc3QgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XHJcbiAgICBjb25zdCBpc0ludmVyc2UgPSB1c2VJc0ludmVyc2UoKTtcclxuICAgIC8vIFJlYWQgaGllcmFyY2h5IGluZm9ybWF0aW9uIGZyb20gY29udGV4dCAocmVkdWNlcyBjbG9uZUVsZW1lbnQgb3ZlcmhlYWQpXHJcbiAgICBjb25zdCBoaWVyYXJjaHlDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChUcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQpO1xyXG4gICAgLy8gVXNlIGNvbnRleHQgdmFsdWVzIGlmIHByb3BzIGFyZSBub3QgcHJvdmlkZWQgKGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KVxyXG4gICAgY29uc3QgaW5kZXggPSBpbmRleFByb3AgIT09IHVuZGVmaW5lZCA/IGluZGV4UHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaW5kZXg7XHJcbiAgICBjb25zdCB0b3BMZXZlbCA9IHRvcExldmVsUHJvcCAhPT0gdW5kZWZpbmVkID8gdG9wTGV2ZWxQcm9wIDogaGllcmFyY2h5Q29udGV4dC5pc1RvcExldmVsO1xyXG4gICAgLy8gQ29uc3VtZSBzcGxpdCBjb250ZXh0cyBmb3IgcmVkdWNlZCByZS1yZW5kZXIgc2NvcGVcclxuICAgIGNvbnN0IHsgaXRlbVRvRm9jdXMgfSA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0KTtcclxuICAgIGNvbnN0IHsgaGFuZGxlRXhwYW5kZWRDaGFuZ2UgfSA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZVZpZXdFeHBhbnNpb25Db250ZXh0KTtcclxuICAgIGNvbnN0IHsgZXhwYW5kSWNvblN0eWxlcywgaGFzSWNvbnMsIGlzVG9wTGV2ZWxTZWxlY3RhYmxlLCBzZWxlY3RhYmxlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgY2hlY2tib3hDaGFuZ2VIYW5kbGVyLCBjaGVja2VkU3RhdHVzLCBleHBhbmRlZCwgaGFzT3duVHJlZUl0ZW1zLCBpdGVtRGVwdGgsIGl0ZW1JZCwgcmVmLCBzZWxlY3RlZEl0ZW1zLCB9ID0gY29udGV4dFZhbHVlO1xyXG4gICAgY29uc3Qgbm9kZVR5cGUgPSBoYXNPd25UcmVlSXRlbXMgPyBUcmVlTm9kZVR5cGUuYnJhbmNoIDogVHJlZU5vZGVUeXBlLmxlYWY7XHJcbiAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUuc2luZ2xlXHJcbiAgICAgICAgPyBzZWxlY3RlZEl0ZW1zPy5bMF0/Lml0ZW1JZCA9PT0gaXRlbUlkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgYXJpYUNoZWNrZWRWYWx1ZSA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aVxyXG4gICAgICAgID8gY2hlY2tlZFN0YXR1cyA9PT0gSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLmluZGV0ZXJtaW5hdGVcclxuICAgICAgICAgICAgPyAnbWl4ZWQnXHJcbiAgICAgICAgICAgIDogY2hlY2tlZFN0YXR1cyA9PT0gSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLmNoZWNrZWRcclxuICAgICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBbaXNJbnNpZGVUcmVlSXRlbSwgc2V0SXNJbnNpZGVUcmVlSXRlbV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XHJcbiAgICBjb25zdCB0cmVlSXRlbVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcclxuICAgIGNvbnN0IGZvY3VzVHJhcEVsZW1lbnQgPSB1c2VGb2N1c0xvY2soaXNJbnNpZGVUcmVlSXRlbSk7XHJcbiAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzID0gJ2J1dHRvbiwgW3JvbGU9XCJidXR0b25cIl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBhW2hyZWZdLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9XCItMVwiXSknO1xyXG4gICAgY29uc3QgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyA9IFJlYWN0LnVzZUNhbGxiYWNrKChjb250YWluZXIsIHNlbGVjdG9yKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKS5maWx0ZXIoZWwgPT4gIWVsLmhhc0F0dHJpYnV0ZSgndGFiaW5kZXgnKSB8fFxyXG4gICAgICAgICAgICAoZWwudGFiSW5kZXggIT09IHVuZGVmaW5lZCAmJiBlbC50YWJJbmRleCA+PSAwKSk7XHJcbiAgICB9LCBbXSk7XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgbGFiZWwgYW5kIGFkZGl0aW9uYWwgY29udGVudCBvZiBhIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBZb3UgY2FuIG5hdmlnYXRlIHRocm91Z2ggaW50ZXJhY3RpdmUgZWxlbWVudHMgdXNpbmcgdGhlIGBUYWJgIGtleSwgYWN0aXZhdGUgdGhlbSB3aXRoIGBFbnRlcmAgb3IgYFNwYWNlYCxcclxuICAgICAqIGFuZCBleGl0IG91dHNpZGUgYW5kIGZvY3VzIHRoZSB3aG9sZSB0cmVlIGl0ZW0gd2l0aCBgRXNjYXBlYC5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3QgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24gPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0LCBzaGlmdEtleSB9ID0gZXZlbnQ7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSB0YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaXNFbnRlciA9IGtleSA9PT0gJ0VudGVyJztcclxuICAgICAgICBjb25zdCBpc1NwYWNlID0ga2V5ID09PSAnICc7XHJcbiAgICAgICAgY29uc3QgaXNFc2NhcGUgPSBrZXkgPT09ICdFc2NhcGUnO1xyXG4gICAgICAgIGNvbnN0IGlzVGFiID0ga2V5ID09PSAnVGFiJztcclxuICAgICAgICBjb25zdCBpc0FjdGl2YXRpb25LZXkgPSBpc0VudGVyIHx8IGlzU3BhY2U7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdChpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAvLyBJZiB0aGUga2V5IGlzIGBUYWJgLCB3ZSBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzVGFiICYmIGlzSW5zaWRlVHJlZUl0ZW0pIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICAvLyBGaWx0ZXIgbGlzdCBvZiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGljaCBhcmUgb25seSBpbmNsdWRlZCBmb3IgY3VycmVudCB0cmVlIGl0ZW1cclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0LmZpbHRlcihlbCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0VHJlZUl0ZW0gPSBlbC5jbG9zZXN0KCdbcm9sZT1cInRyZWVpdGVtXCJdJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdFRyZWVJdGVtID09PSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5pbmRleE9mKGN1cnJlbnRFbGVtZW50KTtcclxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gc2hpZnRLZXkgPyAtMSA6IDE7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGNvbnN0IG5leHRJbmRleCA9IChjdXJyZW50SW5kZXggKyBkaXJlY3Rpb24gKyB0b3RhbCkgJSB0b3RhbDtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFRvRm9jdXMgPSBjdXJyZW50VHJlZUl0ZW1JbnRlcmFjdGl2ZUVsZW1lbnRzW25leHRJbmRleF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBlbGVtZW50VG9Gb2N1cy5mb2N1cygpLCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFByZXNzaW5nIGBFbnRlcmAgb3IgYFNwYWNlYCBvbiBhbiBpbnRlcmFjdGl2ZSBlbGVtZW50IHdpbGwgdHJpZ2dlciBpdHMgY2xpY2sgZXZlbnRcclxuICAgICAgICBpZiAoaXNBY3RpdmF0aW9uS2V5ICYmIGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTW92ZXMgZm9jdXMgb3V0c2lkZSB0aGUgdHJlZSBpdGVtIGFuZCBmb2N1c2VzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmIHdoZW4gYEVzY2FwZWAgaXMgcHJlc3NlZFxyXG4gICAgICAgIGlmIChpc0VzY2FwZSkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbShmYWxzZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRyZWVJdGVtTm9kZSA9IHRyZWVJdGVtUmVmLmN1cnJlbnQ7XHJcbiAgICAgICAgICAgIGlmICh0cmVlSXRlbU5vZGUpIHtcclxuICAgICAgICAgICAgICAgIHRyZWVJdGVtTm9kZS5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbZ2V0SW50ZXJhY3RpdmVFbGVtZW50cywgaW50ZXJhY3RpdmVFbGVtZW50cywgaXNJbnNpZGVUcmVlSXRlbV0pO1xyXG4gICAgY29uc3QgaGFuZGxlT25DbGljayA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoJ2J1dHRvbiwgW3JvbGU9XCJidXR0b25cIl0sIGFbaHJlZl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbcm9sZT1cIm1lbnVpdGVtXCJdJyk7XHJcbiAgICAgICAgLy8gUHJldmVudGluZyBzZWxlY3RpbmcgdGhlIGl0ZW0gd2hlbiBjbGlja2luZyBvbiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGVuIGBzZWxlY3RhYmxlYCBpcyBgc2luZ2xlYFxyXG4gICAgICAgIGlmIChpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5zaW5nbGUpIHtcclxuICAgICAgICAgICAgaGFuZGxlQ2xpY2soZXZlbnQsIGl0ZW1JZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIHNlbGVjdGFibGUsIGhhbmRsZUNsaWNrLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gbm9kZVR5cGUgPT09IFRyZWVOb2RlVHlwZS5icmFuY2ggPyAoUmVhY3QuY3JlYXRlRWxlbWVudChGb2xkZXJJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChBcnRpY2xlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUgfSkpO1xyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkTGFiZWxXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHN0eWxlOiBsYWJlbFN0eWxlLCBpZDogYCR7aXRlbUlkfS1sYWJlbGAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tbGFiZWxgIH0sXHJcbiAgICAgICAgaGFzSWNvbnMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbldyYXBwZXIsIHsgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1pY29uYCB9LCBpY29uIHx8IGRlZmF1bHRJY29uKSksXHJcbiAgICAgICAgbGFiZWwpKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBhZGRpdGlvbmFsQ29udGVudCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEFkZGl0aW9uYWxDb250ZW50V3JhcHBlciwgeyB0aGVtZTogdGhlbWUsIGlkOiBgJHtpdGVtSWR9LWFkZGl0aW9uYWxjb250ZW50d3JhcHBlcmAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkID8/IGl0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCB9LCBhZGRpdGlvbmFsQ29udGVudCkpIDogbnVsbDtcclxuICAgIC8vIE1lbW9pemUgaW5saW5lIHN0eWxlIG9iamVjdHMgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSByZS1yZW5kZXJzXHJcbiAgICBjb25zdCBjaGVja2JveElucHV0U3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7IG1hcmdpblJpZ2h0OiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMyB9KSwgW3RoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzXSk7XHJcbiAgICBjb25zdCBjaGVja2JveExhYmVsU3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgcGFkZGluZzogMCxcclxuICAgICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgfSksIFtdKTtcclxuICAgIC8vIFByb3BzIHNoYXJlZCBieSBDaGVja2JveCBhbmQgSW5kZXRlcm1pbmF0ZUNoZWNrYm94XHJcbiAgICBjb25zdCBjaGVja2JveFByb3BzID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xyXG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxyXG4gICAgICAgIGhpZGVGb2N1czogdHJ1ZSxcclxuICAgICAgICBpZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICAgICAgaW5wdXRTdHlsZTogY2hlY2tib3hJbnB1dFN0eWxlLFxyXG4gICAgICAgIGxhYmVsU3R5bGU6IGNoZWNrYm94TGFiZWxTdHlsZSxcclxuICAgICAgICBsYWJlbFRleHQ6IGxhYmVsVGV4dCxcclxuICAgICAgICBvbkNoYW5nZTogY2hlY2tib3hDaGFuZ2VIYW5kbGVyLFxyXG4gICAgICAgIHRhYkluZGV4OiAtMSxcclxuICAgICAgICB0ZXN0SWQ6IGAke2l0ZW1JZH0tY2hlY2tib3hgLFxyXG4gICAgfSksIFtcclxuICAgICAgICBpc0Rpc2FibGVkLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dCxcclxuICAgICAgICBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IG9uRXhwYW5kZWRDbGlja2VkID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBoYW5kbGVFeHBhbmRlZENoYW5nZShldmVudCwgaXRlbUlkKTtcclxuICAgIH0sIFtoYW5kbGVFeHBhbmRlZENoYW5nZSwgaXRlbUlkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVFeHBhbmRDbGljayA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmICghaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVG9Gb2N1cyA9PT0gaXRlbUlkID8gMCA6IC0xO1xyXG4gICAgfSwgW2lzRGlzYWJsZWQsIGl0ZW1Ub0ZvY3VzLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IHNob3VsZFNob3dDaGVja2JveCA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSAmJlxyXG4gICAgICAgIChpc1RvcExldmVsU2VsZWN0YWJsZSAhPT0gZmFsc2UgfHwgIXRvcExldmVsKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogUHJlc3NpbmcgYEN0cmwgKyBFbnRlcmAgb3IgYENvbW1hbmQgKyBFbnRlcmAgZm9jdXNlcyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudCB3aXRoaW4gdGhlIHRyZWUgaXRlbVxyXG4gICAgICogYW5kIGxvY2tzIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBmb2N1cyBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaXQgaGFuZGxlcyBrZXkgZXZlbnRzIGZvciBpbnRlcmFjdGlvbiBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBJdCBhbHNvIGhhbmRsZXMgdGhlIG90aGVyIGtleXMgdG8gdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsT3JDb21tYW5kID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5O1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybEVudGVyID0gaXNDdHJsT3JDb21tYW5kICYmIGlzRW50ZXI7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBDdHJsICsgRW50ZXIgb3IgQ29tbWFuZCArIEVudGVyLCBmb2N1cyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudFxyXG4gICAgICAgIC8vIGFuZCBsb2NrIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzQ3RybEVudGVyICYmIHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3RbMF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHZhbGlkIENTUyBzZWxlY3RvcnMgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuLCBwZXJpb2RzIGluIGl0ZW1JZClcclxuICAgICAgICBjb25zdCBzYWZlSXRlbUlkID0gQ1NTLmVzY2FwZShpdGVtSWQpO1xyXG4gICAgICAgIGNvbnN0IGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50ID0gdGFyZ2V0LmNsb3Nlc3QoYCMke3NhZmVJdGVtSWR9LWxhYmVsLCAjJHtzYWZlSXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgKTtcclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBoYW5kbGUga2V5IGV2ZW50cyBmb3IgdGhvc2UgYXJlYXNcclxuICAgICAgICBpZiAoaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYsIGhhbmRsZSBrZXkgZG93biBmb3IgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgaGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbXHJcbiAgICAgICAgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnRzLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICBoYW5kbGVMYWJlbEFuZEFkZGl0aW9uYWxDb250ZW50S2V5RG93bixcclxuICAgICAgICBoYW5kbGVLZXlEb3duLFxyXG4gICAgXSk7XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb250ZXh0VmFsdWUgfSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IHRyZWVJdGVtU3R5bGVzIH0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkVHJlZUl0ZW0sIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgXCJhcmlhLWV4cGFuZGVkXCI6IGhhc093blRyZWVJdGVtcyA/IGV4cGFuZGVkIDogbnVsbCwgXCJhcmlhLXNlbGVjdGVkXCI6IHNlbGVjdGVkSXRlbSwgXCJhcmlhLWNoZWNrZWRcIjogc2hvdWxkU2hvd0NoZWNrYm94ID8gYXJpYUNoZWNrZWRWYWx1ZSA6IG51bGwsIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLCBkZXB0aDogaXRlbURlcHRoLCBoYXNPd25UcmVlSXRlbXM6IGhhc093blRyZWVJdGVtcywgaWQ6IGl0ZW1JZCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG5vZGVUeXBlOiBub2RlVHlwZSwgcm9sZTogXCJ0cmVlaXRlbVwiLCBzZWxlY3RhYmxlVHlwZTogc2VsZWN0YWJsZSwgc2VsZWN0ZWQ6IHNlbGVjdGVkSXRlbSwgdGhlbWU6IHRoZW1lLCB0YWJJbmRleDogdGFiSW5kZXgsIG9uS2V5RG93bjogb25LZXlEb3duSGFuZGxlciwgcmVmOiB0cmVlSXRlbVJlZiwgaG92ZXJDb2xvcjogaG92ZXJDb2xvciB9KSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkSXRlbVdyYXBwZXIsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1pdGVtd3JhcHBlcmAsIGRlcHRoOiBpdGVtRGVwdGgsIGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCBoYXNDdXN0b21JY29uU2l6ZTogISFleHBhbmRJY29uU3R5bGVzPy5zaXplLCBpZDogYCR7aXRlbUlkfS1pdGVtd3JhcHBlcmAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBub2RlVHlwZTogbm9kZVR5cGUsIHNlbGVjdGFibGU6IHNlbGVjdGFibGUsIHN0eWxlOiBzdHlsZSwgdGhlbWU6IHRoZW1lLCByZWY6IG1lcmdlUmVmcyhyZWYsIGZvY3VzVHJhcEVsZW1lbnQpLCBvbkNsaWNrOiBoYW5kbGVPbkNsaWNrIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEV4cGFuZFdyYXBwZXIsIHsgXCJhcmlhLWhpZGRlblwiOiBCb29sZWFuKCFleHBhbmRlZCksIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUsIGNvbG9yOiBleHBhbmRJY29uU3R5bGVzPy5jb2xvciwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1leHBhbmRgLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgb25DbGljazogaGFuZGxlRXhwYW5kQ2xpY2ssIHRoZW1lOiB0aGVtZSB9LCBleHBhbmRlZCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEV4cGFuZE1vcmVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChDaGV2cm9uUmlnaHRJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSB9KSkpKSxcclxuICAgICAgICAgICAgICAgICAgICBzaG91bGRTaG93Q2hlY2tib3ggPyAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRDaGVja2JveFdyYXBwZXIsIHsgaGFzQWRkaXRpb25hbENvbnRlbnQ6ICEhYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lOiB0aGVtZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChJbmRldGVybWluYXRlQ2hlY2tib3gsIE9iamVjdC5hc3NpZ24oe30sIGNoZWNrYm94UHJvcHMsIHsgc3RhdHVzOiBjaGVja2VkU3RhdHVzIH0pKSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBjaGVja2VkOiBjaGVja2VkU3RhdHVzVG9Cb29sZWFuKGNoZWNrZWRTdGF0dXMpIH0pKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbFRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQpKSksXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sIChjaGlsZCwgY2hpbGRJbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZD8udHlwZSAhPT0gVHJlZUl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyBQYXNzIGhpZXJhcmNoeSBpbmZvIHRocm91Z2ggY29udGV4dCBpbnN0ZWFkIG9mIGNsb25lRWxlbWVudFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5lc3RlZEhpZXJhcmNoeVZhbHVlID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXB0aDogaXRlbURlcHRoICsgMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3BMZXZlbDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBjaGlsZEluZGV4LFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyYW5zaXRpb24sIHsgaXNPcGVuOiBleHBhbmRlZCwgdW5tb3VudE9uRXhpdDogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgeyByb2xlOiBcImdyb3VwXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0LlByb3ZpZGVyLCB7IGtleTogY2hpbGQucHJvcHMuaXRlbUlkLCB2YWx1ZTogbmVzdGVkSGllcmFyY2h5VmFsdWUgfSwgY2hpbGQpKSkpO1xyXG4gICAgICAgICAgICAgICAgfSkpKSkpO1xyXG59KTtcclxuLyoqXHJcbiAqIEN1c3RvbSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBSZWFjdC5tZW1vXHJcbiAqIE9ubHkgcmUtcmVuZGVyIFRyZWVJdGVtIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlXHJcbiAqL1xyXG5mdW5jdGlvbiBhcmVQcm9wc0VxdWFsKHByZXZQcm9wcywgbmV4dFByb3BzKSB7XHJcbiAgICAvLyBDaGVjayBpZiBpdGVtSWQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5pdGVtSWQgIT09IG5leHRQcm9wcy5pdGVtSWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBsYWJlbCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsICE9PSBuZXh0UHJvcHMubGFiZWwpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBkaXNhYmxlZCBzdGF0ZSBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmlzRGlzYWJsZWQgIT09IG5leHRQcm9wcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaWNvbiBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmljb24gIT09IG5leHRQcm9wcy5pY29uKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgYWRkaXRpb25hbCBjb250ZW50IGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuYWRkaXRpb25hbENvbnRlbnQgIT09IG5leHRQcm9wcy5hZGRpdGlvbmFsQ29udGVudCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGhvdmVyIGNvbG9yIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaG92ZXJDb2xvciAhPT0gbmV4dFByb3BzLmhvdmVyQ29sb3IpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBjaGlsZHJlbiBjaGFuZ2VkIChmb3IgbmVzdGVkIHRyZWUgaXRlbXMpXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBjaGlsZHJlbiBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLmNoaWxkcmVuICE9PSBuZXh0UHJvcHMuY2hpbGRyZW4pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBzdHlsZXMgY2hhbmdlZFxyXG4gICAgLy8gVXNpbmcgdHlwZSBhc3NlcnRpb24gc2luY2Ugc3R5bGUgY29tZXMgZnJvbSBSZWFjdC5IVE1MQXR0cmlidXRlc1xyXG4gICAgaWYgKHByZXZQcm9wcy5zdHlsZSAhPT0gbmV4dFByb3BzLnN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy5sYWJlbFN0eWxlICE9PSBuZXh0UHJvcHMubGFiZWxTdHlsZSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChwcmV2UHJvcHMudHJlZUl0ZW1TdHlsZXMgIT09IG5leHRQcm9wcy50cmVlSXRlbVN0eWxlcykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIEFsbCByZWxldmFudCBwcm9wcyBhcmUgZXF1YWwsIHNraXAgcmUtcmVuZGVyXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG4vKipcclxuICogTWVtb2l6ZWQgVHJlZUl0ZW0gY29tcG9uZW50XHJcbiAqIE9ubHkgcmUtcmVuZGVycyB3aGVuIHJlbGV2YW50IHByb3BzIGNoYW5nZSwgaW1wcm92aW5nIHBlcmZvcm1hbmNlIGZvciBsYXJnZSB0cmVlc1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFRyZWVJdGVtID0gUmVhY3QubWVtbyhUcmVlSXRlbUNvbXBvbmVudCwgYXJlUHJvcHNFcXVhbCk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRyZWVJdGVtLmpzLm1hcCJdfQ== */"));
22889
23399
  var StyledItemWrapper = /*#__PURE__*/_styled("div", {
22890
23400
  target: "e1xiryew1",
22891
23401
  label: "StyledItemWrapper"
@@ -22895,36 +23405,52 @@ var StyledItemWrapper = /*#__PURE__*/_styled("div", {
22895
23405
  return props.hasCustomIconSize ? 'center' : 'flex-start';
22896
23406
  }, ";cursor:", function (props) {
22897
23407
  return getTreeItemWrapperCursor(props.isDisabled, props.selectable, props.nodeType);
22898
- }, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1SHFDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3Q29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyB1c2VJc0ludmVyc2UgfSBmcm9tICcuLi8uLi9pbnZlcnNlJztcclxuaW1wb3J0IHsgVGhlbWVDb250ZXh0IH0gZnJvbSAnLi4vLi4vdGhlbWUvVGhlbWVDb250ZXh0JztcclxuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCc7XHJcbmltcG9ydCB7IEluZGV0ZXJtaW5hdGVDaGVja2JveCwgSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLCB9IGZyb20gJy4uL0luZGV0ZXJtaW5hdGVDaGVja2JveCc7XHJcbmltcG9ydCB7IFRyYW5zaXRpb24gfSBmcm9tICcuLi9UcmFuc2l0aW9uJztcclxuaW1wb3J0IHsgY2FsY3VsYXRlT2Zmc2V0LCBnZXRUcmVlSXRlbUxhYmVsQ29sb3IsIGdldFRyZWVJdGVtV3JhcHBlckN1cnNvciwgVHJlZU5vZGVUeXBlLCB9IGZyb20gJy4vdXRpbHMnO1xyXG5pbXBvcnQgeyB1c2VGb2N1c0xvY2sgfSBmcm9tICcuLi8uLi9ob29rcy91c2VGb2N1c0xvY2snO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmNvbnN0IFN0eWxlZFRyZWVJdGVtID0gc3R5bGVkLmxpIGBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMTAwXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsNzAwfTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGVUeXBlLCBwcm9wcy5ub2RlVHlwZSl9O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6ICR7cHJvcHMgPT4gY2FsY3VsYXRlT2Zmc2V0KHByb3BzLm5vZGVUeXBlLCBwcm9wcy5kZXB0aCl9O1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAmID4gKjpmaXJzdC1jaGlsZCB7XG4gICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgIG91dGxpbmU6IDJweCBzb2xpZFxuICAgICAgICAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXNJbnZlcnNlXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5mb2N1c307XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUpfTtcbiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIHRydWUpfTtcbiAgICBwYWRkaW5nLWJsb2NrLWVuZDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1ibG9jay1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG5cbiAgICAke3Byb3BzID0+IHByb3BzLnNlbGVjdGVkICYmXHJcbiAgICBjc3MgYFxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMuaXNJbnZlcnNlXHJcbiAgICAgICAgPyBwcm9wcy50aGVtZS5jb2xvcnMudGVydGlhcnk1MDBcclxuICAgICAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5wcmltYXJ5NTAwfTtcbiAgICAgICAgICBibG9jay1zaXplOiAxMDAlO1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIGlubGluZS1zaXplOiAke3Byb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAyfTtcbiAgICAgICAgICBpbnNldC1ibG9jay1zdGFydDogMDtcbiAgICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgICAgIH1cbiAgICAgIGB9XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IGdldEhvdmVyQmFja2dyb3VuZCh7XHJcbiAgICBpc0Rpc2FibGVkOiBwcm9wcy5pc0Rpc2FibGVkLFxyXG4gICAgaG92ZXJDb2xvcjogcHJvcHMuaG92ZXJDb2xvcixcclxuICAgIGlzSW52ZXJzZTogcHJvcHMuaXNJbnZlcnNlLFxyXG4gICAgdGhlbWU6IHByb3BzLnRoZW1lLFxyXG59KX07XG4gICAgfVxuICB9XG5gO1xyXG5mdW5jdGlvbiBnZXRIb3ZlckJhY2tncm91bmQoeyBpc0Rpc2FibGVkLCBob3ZlckNvbG9yLCBpc0ludmVyc2UsIHRoZW1lIH0pIHtcclxuICAgIGlmIChpc0Rpc2FibGVkKVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICBpZiAoaG92ZXJDb2xvcilcclxuICAgICAgICByZXR1cm4gaG92ZXJDb2xvcjtcclxuICAgIGNvbnN0IHRyYW5zcGFyZW5jeSA9IGlzSW52ZXJzZSA/IDAuOCA6IDAuOTU7XHJcbiAgICByZXR1cm4gdHJhbnNwYXJlbnRpemUodHJhbnNwYXJlbmN5LCB0aGVtZS5jb2xvcnMubmV1dHJhbDkwMCk7XHJcbn1cclxuY29uc3QgSWNvbldyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGNvbG9yOiAke3Byb3BzID0+IGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIG1hcmdpbi1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM307XG4gIG1hcmdpbi1sZWZ0OiAwO1xuXG4gIHN2ZyB7XG4gICAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaWNvblNpemVzLm1lZGl1bX1weDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB9XG5gO1xyXG5jb25zdCBTdHlsZWRMYWJlbFdyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICB3aWR0aDogMTAwJTtcbmA7XHJcbmNvbnN0IFN0eWxlZEV4cGFuZFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5jb2xvciB8fFxyXG4gICAgZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgd2lkdGg6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG4gIGhlaWdodDogJHsoeyBzaXplLCB0aGVtZSB9KSA9PiBzaXplICE9PSB1bmRlZmluZWQgPyBgJHtzaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXgsIGxhYmVsLCBsYWJlbFN0eWxlLCBzdHlsZSwgdGVzdElkLCB0b3BMZXZlbCwgdHJlZUl0ZW1TdHlsZXMsIC4uLnJlc3QgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XHJcbiAgICBjb25zdCBpc0ludmVyc2UgPSB1c2VJc0ludmVyc2UoKTtcclxuICAgIGNvbnN0IHsgZXhwYW5kSWNvblN0eWxlcywgaGFuZGxlRXhwYW5kZWRDaGFuZ2UsIGhhc0ljb25zLCBpdGVtVG9Gb2N1cywgaXNUb3BMZXZlbFNlbGVjdGFibGUsIHNlbGVjdGFibGUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNvbnRleHRWYWx1ZSwgaGFuZGxlQ2xpY2ssIGhhbmRsZUtleURvd24gfSA9IHVzZVRyZWVJdGVtKHByb3BzLCBmb3J3YXJkZWRSZWYpO1xyXG4gICAgY29uc3QgeyBpc0Rpc2FibGVkIH0gPSBjb250ZXh0VmFsdWU7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHBhcmVudERlcHRoLCByZWYsIHNlbGVjdGVkSXRlbXMsIH0gPSBjb250ZXh0VmFsdWU7XHJcbiAgICBjb25zdCBub2RlVHlwZSA9IGhhc093blRyZWVJdGVtcyA/IFRyZWVOb2RlVHlwZS5icmFuY2ggOiBUcmVlTm9kZVR5cGUubGVhZjtcclxuICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5zaW5nbGVcclxuICAgICAgICA/IHNlbGVjdGVkSXRlbXM/LlswXT8uaXRlbUlkID09PSBpdGVtSWRcclxuICAgICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBhcmlhQ2hlY2tlZFZhbHVlID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLm11bHRpXHJcbiAgICAgICAgPyBjaGVja2VkU3RhdHVzID09PSBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMuaW5kZXRlcm1pbmF0ZVxyXG4gICAgICAgICAgICA/ICdtaXhlZCdcclxuICAgICAgICAgICAgOiBjaGVja2VkU3RhdHVzID09PSBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMuY2hlY2tlZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IFtpc0luc2lkZVRyZWVJdGVtLCBzZXRJc0luc2lkZVRyZWVJdGVtXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xyXG4gICAgY29uc3QgZm9jdXNUcmFwRWxlbWVudCA9IHVzZUZvY3VzTG9jayhpc0luc2lkZVRyZWVJdGVtKTtcclxuICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHMgPSAnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIGFbaHJlZl0sIFt0YWJpbmRleF06bm90KFt0YWJpbmRleD1cIi0xXCJdKSc7XHJcbiAgICBjb25zdCBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzID0gKGNvbnRhaW5lciwgc2VsZWN0b3IpID0+IHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShjb250YWluZXIucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpLmZpbHRlcihlbCA9PiAhZWwuaGFzQXR0cmlidXRlKCd0YWJpbmRleCcpIHx8XHJcbiAgICAgICAgICAgIChlbC50YWJJbmRleCAhPT0gdW5kZWZpbmVkICYmIGVsLnRhYkluZGV4ID49IDApKTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgbGFiZWwgYW5kIGFkZGl0aW9uYWwgY29udGVudCBvZiBhIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBZb3UgY2FuIG5hdmlnYXRlIHRocm91Z2ggaW50ZXJhY3RpdmUgZWxlbWVudHMgdXNpbmcgdGhlIGBUYWJgIGtleSwgYWN0aXZhdGUgdGhlbSB3aXRoIGBFbnRlcmAgb3IgYFNwYWNlYCxcclxuICAgICAqIGFuZCBleGl0IG91dHNpZGUgYW5kIGZvY3VzIHRoZSB3aG9sZSB0cmVlIGl0ZW0gd2l0aCBgRXNjYXBlYC5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3QgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24gPSAoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0LCBzaGlmdEtleSB9ID0gZXZlbnQ7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSB0YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaXNFbnRlciA9IGtleSA9PT0gJ0VudGVyJztcclxuICAgICAgICBjb25zdCBpc1NwYWNlID0ga2V5ID09PSAnICc7XHJcbiAgICAgICAgY29uc3QgaXNFc2NhcGUgPSBrZXkgPT09ICdFc2NhcGUnO1xyXG4gICAgICAgIGNvbnN0IGlzVGFiID0ga2V5ID09PSAnVGFiJztcclxuICAgICAgICBjb25zdCBpc0FjdGl2YXRpb25LZXkgPSBpc0VudGVyIHx8IGlzU3BhY2U7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdChpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAvLyBJZiB0aGUga2V5IGlzIGBUYWJgLCB3ZSBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzVGFiICYmIGlzSW5zaWRlVHJlZUl0ZW0pIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICAvLyBGaWx0ZXIgbGlzdCBvZiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGljaCBhcmUgb25seSBpbmNsdWRlZCBmb3IgY3VycmVudCB0cmVlIGl0ZW1cclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0LmZpbHRlcihlbCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0VHJlZUl0ZW0gPSBlbC5jbG9zZXN0KCdbcm9sZT1cInRyZWVpdGVtXCJdJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdFRyZWVJdGVtID09PSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5pbmRleE9mKGN1cnJlbnRFbGVtZW50KTtcclxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gc2hpZnRLZXkgPyAtMSA6IDE7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGNvbnN0IG5leHRJbmRleCA9IChjdXJyZW50SW5kZXggKyBkaXJlY3Rpb24gKyB0b3RhbCkgJSB0b3RhbDtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFRvRm9jdXMgPSBjdXJyZW50VHJlZUl0ZW1JbnRlcmFjdGl2ZUVsZW1lbnRzW25leHRJbmRleF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBlbGVtZW50VG9Gb2N1cy5mb2N1cygpLCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFByZXNzaW5nIGBFbnRlcmAgb3IgYFNwYWNlYCBvbiBhbiBpbnRlcmFjdGl2ZSBlbGVtZW50IHdpbGwgdHJpZ2dlciBpdHMgY2xpY2sgZXZlbnRcclxuICAgICAgICBpZiAoaXNBY3RpdmF0aW9uS2V5ICYmIGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTW92ZXMgZm9jdXMgb3V0c2lkZSB0aGUgdHJlZSBpdGVtIGFuZCBmb2N1c2VzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmIHdoZW4gYEVzY2FwZWAgaXMgcHJlc3NlZFxyXG4gICAgICAgIGlmIChpc0VzY2FwZSkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbShmYWxzZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRyZWVJdGVtTm9kZSA9IHRyZWVJdGVtUmVmLmN1cnJlbnQ7XHJcbiAgICAgICAgICAgIGlmICh0cmVlSXRlbU5vZGUpIHtcclxuICAgICAgICAgICAgICAgIHRyZWVJdGVtTm9kZS5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaGFuZGxlT25DbGljayA9IChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoJ2J1dHRvbiwgW3JvbGU9XCJidXR0b25cIl0sIGFbaHJlZl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbcm9sZT1cIm1lbnVpdGVtXCJdJyk7XHJcbiAgICAgICAgLy8gUHJldmVudGluZyBzZWxlY3RpbmcgdGhlIGl0ZW0gd2hlbiBjbGlja2luZyBvbiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGVuIGBzZWxlY3RhYmxlYCBpcyBgc2luZ2xlYFxyXG4gICAgICAgIGlmIChpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5zaW5nbGUpIHtcclxuICAgICAgICAgICAgaGFuZGxlQ2xpY2soZXZlbnQsIGl0ZW1JZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gbm9kZVR5cGUgPT09IFRyZWVOb2RlVHlwZS5icmFuY2ggPyAoUmVhY3QuY3JlYXRlRWxlbWVudChGb2xkZXJJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChBcnRpY2xlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUgfSkpO1xyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkTGFiZWxXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHN0eWxlOiBsYWJlbFN0eWxlLCBpZDogYCR7aXRlbUlkfS1sYWJlbGAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tbGFiZWxgIH0sXHJcbiAgICAgICAgaGFzSWNvbnMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbldyYXBwZXIsIHsgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1pY29uYCB9LCBpY29uIHx8IGRlZmF1bHRJY29uKSksXHJcbiAgICAgICAgbGFiZWwpKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBhZGRpdGlvbmFsQ29udGVudCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEFkZGl0aW9uYWxDb250ZW50V3JhcHBlciwgeyB0aGVtZTogdGhlbWUsIGlkOiBgJHtpdGVtSWR9LWFkZGl0aW9uYWxjb250ZW50d3JhcHBlcmAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkID8/IGl0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCB9LCBhZGRpdGlvbmFsQ29udGVudCkpIDogbnVsbDtcclxuICAgIC8vIFByb3BzIHNoYXJlZCBieSBDaGVja2JveCBhbmQgSW5kZXRlcm1pbmF0ZUNoZWNrYm94XHJcbiAgICBjb25zdCBjaGVja2JveFByb3BzID0ge1xyXG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxyXG4gICAgICAgIGhpZGVGb2N1czogdHJ1ZSxcclxuICAgICAgICBpZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICAgICAgaW5wdXRTdHlsZTogeyBtYXJnaW5SaWdodDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDMgfSxcclxuICAgICAgICBsYWJlbFN0eWxlOiB7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDAsXHJcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBsYWJlbFRleHQ6IGxhYmVsVGV4dCxcclxuICAgICAgICBvbkNoYW5nZTogY2hlY2tib3hDaGFuZ2VIYW5kbGVyLFxyXG4gICAgICAgIHRhYkluZGV4OiAtMSxcclxuICAgICAgICB0ZXN0SWQ6IGAke2l0ZW1JZH0tY2hlY2tib3hgLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IG9uRXhwYW5kZWRDbGlja2VkID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBoYW5kbGVFeHBhbmRlZENoYW5nZShldmVudCwgaXRlbUlkKTtcclxuICAgIH07XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVG9Gb2N1cyA9PT0gaXRlbUlkID8gMCA6IC0xO1xyXG4gICAgfSwgW2lzRGlzYWJsZWQsIGl0ZW1Ub0ZvY3VzLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IHNob3VsZFNob3dDaGVja2JveCA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSAmJlxyXG4gICAgICAgIChpc1RvcExldmVsU2VsZWN0YWJsZSAhPT0gZmFsc2UgfHwgIXRvcExldmVsKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogUHJlc3NpbmcgYEN0cmwgKyBFbnRlcmAgb3IgYENvbW1hbmQgKyBFbnRlcmAgZm9jdXNlcyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudCB3aXRoaW4gdGhlIHRyZWUgaXRlbVxyXG4gICAgICogYW5kIGxvY2tzIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBmb2N1cyBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaXQgaGFuZGxlcyBrZXkgZXZlbnRzIGZvciBpbnRlcmFjdGlvbiBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBJdCBhbHNvIGhhbmRsZXMgdGhlIG90aGVyIGtleXMgdG8gdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsT3JDb21tYW5kID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5O1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybEVudGVyID0gaXNDdHJsT3JDb21tYW5kICYmIGlzRW50ZXI7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBDdHJsICsgRW50ZXIgb3IgQ29tbWFuZCArIEVudGVyLCBmb2N1cyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudFxyXG4gICAgICAgIC8vIGFuZCBsb2NrIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzQ3RybEVudGVyICYmIHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3RbMF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHZhbGlkIENTUyBzZWxlY3RvcnMgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuLCBwZXJpb2RzIGluIGl0ZW1JZClcclxuICAgICAgICBjb25zdCBzYWZlSXRlbUlkID0gQ1NTLmVzY2FwZShpdGVtSWQpO1xyXG4gICAgICAgIGNvbnN0IGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50ID0gdGFyZ2V0LmNsb3Nlc3QoYCMke3NhZmVJdGVtSWR9LWxhYmVsLCAjJHtzYWZlSXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgKTtcclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBoYW5kbGUga2V5IGV2ZW50cyBmb3IgdGhvc2UgYXJlYXNcclxuICAgICAgICBpZiAoaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYsIGhhbmRsZSBrZXkgZG93biBmb3IgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgaGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyZWVJdGVtQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogY29udGV4dFZhbHVlIH0sXHJcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHN0eWxlOiB0cmVlSXRlbVN0eWxlcyB9LFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZFRyZWVJdGVtLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IFwiYXJpYS1leHBhbmRlZFwiOiBoYXNPd25UcmVlSXRlbXMgPyBleHBhbmRlZCA6IG51bGwsIFwiYXJpYS1zZWxlY3RlZFwiOiBzZWxlY3RlZEl0ZW0sIFwiYXJpYS1jaGVja2VkXCI6IHNob3VsZFNob3dDaGVja2JveCA/IGFyaWFDaGVja2VkVmFsdWUgOiBudWxsLCBcImRhdGEtdGVzdGlkXCI6IHRlc3RJZCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzT3duVHJlZUl0ZW1zOiBoYXNPd25UcmVlSXRlbXMsIGlkOiBpdGVtSWQsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBub2RlVHlwZTogbm9kZVR5cGUsIHJvbGU6IFwidHJlZWl0ZW1cIiwgc2VsZWN0YWJsZVR5cGU6IHNlbGVjdGFibGUsIHNlbGVjdGVkOiBzZWxlY3RlZEl0ZW0sIHRoZW1lOiB0aGVtZSwgdGFiSW5kZXg6IHRhYkluZGV4LCBvbktleURvd246IG9uS2V5RG93bkhhbmRsZXIsIHJlZjogdHJlZUl0ZW1SZWYsIGhvdmVyQ29sb3I6IGhvdmVyQ29sb3IgfSksXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEl0ZW1XcmFwcGVyLCB7IFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkID8/IGl0ZW1JZH0taXRlbXdyYXBwZXJgLCBkZXB0aDogaXRlbURlcHRoLCBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgaGFzQ3VzdG9tSWNvblNpemU6ICEhZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSwgaWQ6IGAke2l0ZW1JZH0taXRlbXdyYXBwZXJgLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgbm9kZVR5cGU6IG5vZGVUeXBlLCBzZWxlY3RhYmxlOiBzZWxlY3RhYmxlLCBzdHlsZTogc3R5bGUsIHRoZW1lOiB0aGVtZSwgcmVmOiBtZXJnZVJlZnMocmVmLCBmb2N1c1RyYXBFbGVtZW50KSwgb25DbGljazogaGFuZGxlT25DbGljayB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRFeHBhbmRXcmFwcGVyLCB7IFwiYXJpYS1oaWRkZW5cIjogQm9vbGVhbighZXhwYW5kZWQpLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplLCBjb2xvcjogZXhwYW5kSWNvblN0eWxlcz8uY29sb3IsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZXhwYW5kYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG9uQ2xpY2s6IGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRXhwYW5kZWRDbGlja2VkKGV2ZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhlbWU6IHRoZW1lIH0sIGV4cGFuZGVkID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRXhwYW5kTW9yZUljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZXZyb25SaWdodEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSkpLFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3VsZFNob3dDaGVja2JveCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZENoZWNrYm94V3JhcHBlciwgeyBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgdGhlbWU6IHRoZW1lIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEluZGV0ZXJtaW5hdGVDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBzdGF0dXM6IGNoZWNrZWRTdGF0dXMgfSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IGNoZWNrZWQ6IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4oY2hlY2tlZFN0YXR1cykgfSkpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpKSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZD8udHlwZSA9PT0gVHJlZUl0ZW0gPyAoUmVhY3QuY3JlYXRlRWxlbWVudChUcmFuc2l0aW9uLCB7IGlzT3BlbjogZXhwYW5kZWQsIHVubW91bnRPbkV4aXQ6IHRydWUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInVsXCIsIHsgcm9sZTogXCJncm91cFwiIH0sIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLnByb3BzLml0ZW1JZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudERlcHRoLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSkpKSA6IChjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB9KSkpKSk7XHJcbn0pO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1UcmVlSXRlbS5qcy5tYXAiXX0= */"));
23408
+ }, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwSHFDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSAnLi4vQ2hlY2tib3gnO1xyXG5pbXBvcnQgeyBJbmRldGVybWluYXRlQ2hlY2tib3gsIEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cywgfSBmcm9tICcuLi9JbmRldGVybWluYXRlQ2hlY2tib3gnO1xyXG5pbXBvcnQgeyBUcmFuc2l0aW9uIH0gZnJvbSAnLi4vVHJhbnNpdGlvbic7XHJcbmNvbnN0IFN0eWxlZFRyZWVJdGVtID0gc3R5bGVkLmxpIGBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMTAwXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsNzAwfTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGVUeXBlLCBwcm9wcy5ub2RlVHlwZSl9O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6ICR7cHJvcHMgPT4gY2FsY3VsYXRlT2Zmc2V0KHByb3BzLm5vZGVUeXBlLCBwcm9wcy5kZXB0aCl9O1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAmID4gKjpmaXJzdC1jaGlsZCB7XG4gICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgIG91dGxpbmU6IDJweCBzb2xpZFxuICAgICAgICAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXNJbnZlcnNlXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5mb2N1c307XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUpfTtcbiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIHRydWUpfTtcbiAgICBwYWRkaW5nLWJsb2NrLWVuZDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1ibG9jay1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG5cbiAgICAke3Byb3BzID0+IHByb3BzLnNlbGVjdGVkICYmXHJcbiAgICBjc3MgYFxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMuaXNJbnZlcnNlXHJcbiAgICAgICAgPyBwcm9wcy50aGVtZS5jb2xvcnMudGVydGlhcnk1MDBcclxuICAgICAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5wcmltYXJ5NTAwfTtcbiAgICAgICAgICBibG9jay1zaXplOiAxMDAlO1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIGlubGluZS1zaXplOiAke3Byb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAyfTtcbiAgICAgICAgICBpbnNldC1ibG9jay1zdGFydDogMDtcbiAgICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgICAgIH1cbiAgICAgIGB9XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IGdldEhvdmVyQmFja2dyb3VuZCh7XHJcbiAgICBpc0Rpc2FibGVkOiBwcm9wcy5pc0Rpc2FibGVkLFxyXG4gICAgaG92ZXJDb2xvcjogcHJvcHMuaG92ZXJDb2xvcixcclxuICAgIGlzSW52ZXJzZTogcHJvcHMuaXNJbnZlcnNlLFxyXG4gICAgdGhlbWU6IHByb3BzLnRoZW1lLFxyXG59KX07XG4gICAgfVxuICB9XG5gO1xyXG5mdW5jdGlvbiBnZXRIb3ZlckJhY2tncm91bmQoeyBpc0Rpc2FibGVkLCBob3ZlckNvbG9yLCBpc0ludmVyc2UsIHRoZW1lIH0pIHtcclxuICAgIGlmIChpc0Rpc2FibGVkKVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICBpZiAoaG92ZXJDb2xvcilcclxuICAgICAgICByZXR1cm4gaG92ZXJDb2xvcjtcclxuICAgIGNvbnN0IHRyYW5zcGFyZW5jeSA9IGlzSW52ZXJzZSA/IDAuOCA6IDAuOTU7XHJcbiAgICByZXR1cm4gdHJhbnNwYXJlbnRpemUodHJhbnNwYXJlbmN5LCB0aGVtZS5jb2xvcnMubmV1dHJhbDkwMCk7XHJcbn1cclxuY29uc3QgSWNvbldyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGNvbG9yOiAke3Byb3BzID0+IGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIG1hcmdpbi1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM307XG4gIG1hcmdpbi1sZWZ0OiAwO1xuXG4gIHN2ZyB7XG4gICAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaWNvblNpemVzLm1lZGl1bX1weDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB9XG5gO1xyXG5jb25zdCBTdHlsZWRMYWJlbFdyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICB3aWR0aDogMTAwJTtcbmA7XHJcbmNvbnN0IFN0eWxlZEV4cGFuZFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5jb2xvciB8fFxyXG4gICAgZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgd2lkdGg6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG4gIGhlaWdodDogJHsoeyBzaXplLCB0aGVtZSB9KSA9PiBzaXplICE9PSB1bmRlZmluZWQgPyBgJHtzaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5jb25zdCBUcmVlSXRlbUNvbXBvbmVudCA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpID0+IHtcclxuICAgIGNvbnN0IHsgYWRkaXRpb25hbENvbnRlbnQsIGNoaWxkcmVuLCBob3ZlckNvbG9yLCBpY29uLCBpbmRleDogaW5kZXhQcm9wLCBsYWJlbCwgbGFiZWxTdHlsZSwgc3R5bGUsIHRlc3RJZCwgdG9wTGV2ZWw6IHRvcExldmVsUHJvcCwgdHJlZUl0ZW1TdHlsZXMsIC4uLnJlc3QgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XHJcbiAgICBjb25zdCBpc0ludmVyc2UgPSB1c2VJc0ludmVyc2UoKTtcclxuICAgIC8vIFJlYWQgaGllcmFyY2h5IGluZm9ybWF0aW9uIGZyb20gY29udGV4dCAocmVkdWNlcyBjbG9uZUVsZW1lbnQgb3ZlcmhlYWQpXHJcbiAgICBjb25zdCBoaWVyYXJjaHlDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChUcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQpO1xyXG4gICAgLy8gVXNlIGNvbnRleHQgdmFsdWVzIGlmIHByb3BzIGFyZSBub3QgcHJvdmlkZWQgKGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KVxyXG4gICAgY29uc3QgaW5kZXggPSBpbmRleFByb3AgIT09IHVuZGVmaW5lZCA/IGluZGV4UHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaW5kZXg7XHJcbiAgICBjb25zdCB0b3BMZXZlbCA9IHRvcExldmVsUHJvcCAhPT0gdW5kZWZpbmVkID8gdG9wTGV2ZWxQcm9wIDogaGllcmFyY2h5Q29udGV4dC5pc1RvcExldmVsO1xyXG4gICAgLy8gQ29uc3VtZSBzcGxpdCBjb250ZXh0cyBmb3IgcmVkdWNlZCByZS1yZW5kZXIgc2NvcGVcclxuICAgIGNvbnN0IHsgaXRlbVRvRm9jdXMgfSA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0KTtcclxuICAgIGNvbnN0IHsgaGFuZGxlRXhwYW5kZWRDaGFuZ2UgfSA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZVZpZXdFeHBhbnNpb25Db250ZXh0KTtcclxuICAgIGNvbnN0IHsgZXhwYW5kSWNvblN0eWxlcywgaGFzSWNvbnMsIGlzVG9wTGV2ZWxTZWxlY3RhYmxlLCBzZWxlY3RhYmxlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgY2hlY2tib3hDaGFuZ2VIYW5kbGVyLCBjaGVja2VkU3RhdHVzLCBleHBhbmRlZCwgaGFzT3duVHJlZUl0ZW1zLCBpdGVtRGVwdGgsIGl0ZW1JZCwgcmVmLCBzZWxlY3RlZEl0ZW1zLCB9ID0gY29udGV4dFZhbHVlO1xyXG4gICAgY29uc3Qgbm9kZVR5cGUgPSBoYXNPd25UcmVlSXRlbXMgPyBUcmVlTm9kZVR5cGUuYnJhbmNoIDogVHJlZU5vZGVUeXBlLmxlYWY7XHJcbiAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUuc2luZ2xlXHJcbiAgICAgICAgPyBzZWxlY3RlZEl0ZW1zPy5bMF0/Lml0ZW1JZCA9PT0gaXRlbUlkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgYXJpYUNoZWNrZWRWYWx1ZSA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aVxyXG4gICAgICAgID8gY2hlY2tlZFN0YXR1cyA9PT0gSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLmluZGV0ZXJtaW5hdGVcclxuICAgICAgICAgICAgPyAnbWl4ZWQnXHJcbiAgICAgICAgICAgIDogY2hlY2tlZFN0YXR1cyA9PT0gSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLmNoZWNrZWRcclxuICAgICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBbaXNJbnNpZGVUcmVlSXRlbSwgc2V0SXNJbnNpZGVUcmVlSXRlbV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XHJcbiAgICBjb25zdCB0cmVlSXRlbVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcclxuICAgIGNvbnN0IGZvY3VzVHJhcEVsZW1lbnQgPSB1c2VGb2N1c0xvY2soaXNJbnNpZGVUcmVlSXRlbSk7XHJcbiAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzID0gJ2J1dHRvbiwgW3JvbGU9XCJidXR0b25cIl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBhW2hyZWZdLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9XCItMVwiXSknO1xyXG4gICAgY29uc3QgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyA9IFJlYWN0LnVzZUNhbGxiYWNrKChjb250YWluZXIsIHNlbGVjdG9yKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKS5maWx0ZXIoZWwgPT4gIWVsLmhhc0F0dHJpYnV0ZSgndGFiaW5kZXgnKSB8fFxyXG4gICAgICAgICAgICAoZWwudGFiSW5kZXggIT09IHVuZGVmaW5lZCAmJiBlbC50YWJJbmRleCA+PSAwKSk7XHJcbiAgICB9LCBbXSk7XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgbGFiZWwgYW5kIGFkZGl0aW9uYWwgY29udGVudCBvZiBhIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBZb3UgY2FuIG5hdmlnYXRlIHRocm91Z2ggaW50ZXJhY3RpdmUgZWxlbWVudHMgdXNpbmcgdGhlIGBUYWJgIGtleSwgYWN0aXZhdGUgdGhlbSB3aXRoIGBFbnRlcmAgb3IgYFNwYWNlYCxcclxuICAgICAqIGFuZCBleGl0IG91dHNpZGUgYW5kIGZvY3VzIHRoZSB3aG9sZSB0cmVlIGl0ZW0gd2l0aCBgRXNjYXBlYC5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3QgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24gPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0LCBzaGlmdEtleSB9ID0gZXZlbnQ7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSB0YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaXNFbnRlciA9IGtleSA9PT0gJ0VudGVyJztcclxuICAgICAgICBjb25zdCBpc1NwYWNlID0ga2V5ID09PSAnICc7XHJcbiAgICAgICAgY29uc3QgaXNFc2NhcGUgPSBrZXkgPT09ICdFc2NhcGUnO1xyXG4gICAgICAgIGNvbnN0IGlzVGFiID0ga2V5ID09PSAnVGFiJztcclxuICAgICAgICBjb25zdCBpc0FjdGl2YXRpb25LZXkgPSBpc0VudGVyIHx8IGlzU3BhY2U7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdChpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAvLyBJZiB0aGUga2V5IGlzIGBUYWJgLCB3ZSBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzVGFiICYmIGlzSW5zaWRlVHJlZUl0ZW0pIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICAvLyBGaWx0ZXIgbGlzdCBvZiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGljaCBhcmUgb25seSBpbmNsdWRlZCBmb3IgY3VycmVudCB0cmVlIGl0ZW1cclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0LmZpbHRlcihlbCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0VHJlZUl0ZW0gPSBlbC5jbG9zZXN0KCdbcm9sZT1cInRyZWVpdGVtXCJdJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdFRyZWVJdGVtID09PSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5pbmRleE9mKGN1cnJlbnRFbGVtZW50KTtcclxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gc2hpZnRLZXkgPyAtMSA6IDE7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGNvbnN0IG5leHRJbmRleCA9IChjdXJyZW50SW5kZXggKyBkaXJlY3Rpb24gKyB0b3RhbCkgJSB0b3RhbDtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFRvRm9jdXMgPSBjdXJyZW50VHJlZUl0ZW1JbnRlcmFjdGl2ZUVsZW1lbnRzW25leHRJbmRleF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBlbGVtZW50VG9Gb2N1cy5mb2N1cygpLCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFByZXNzaW5nIGBFbnRlcmAgb3IgYFNwYWNlYCBvbiBhbiBpbnRlcmFjdGl2ZSBlbGVtZW50IHdpbGwgdHJpZ2dlciBpdHMgY2xpY2sgZXZlbnRcclxuICAgICAgICBpZiAoaXNBY3RpdmF0aW9uS2V5ICYmIGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTW92ZXMgZm9jdXMgb3V0c2lkZSB0aGUgdHJlZSBpdGVtIGFuZCBmb2N1c2VzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmIHdoZW4gYEVzY2FwZWAgaXMgcHJlc3NlZFxyXG4gICAgICAgIGlmIChpc0VzY2FwZSkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbShmYWxzZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRyZWVJdGVtTm9kZSA9IHRyZWVJdGVtUmVmLmN1cnJlbnQ7XHJcbiAgICAgICAgICAgIGlmICh0cmVlSXRlbU5vZGUpIHtcclxuICAgICAgICAgICAgICAgIHRyZWVJdGVtTm9kZS5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbZ2V0SW50ZXJhY3RpdmVFbGVtZW50cywgaW50ZXJhY3RpdmVFbGVtZW50cywgaXNJbnNpZGVUcmVlSXRlbV0pO1xyXG4gICAgY29uc3QgaGFuZGxlT25DbGljayA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoJ2J1dHRvbiwgW3JvbGU9XCJidXR0b25cIl0sIGFbaHJlZl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbcm9sZT1cIm1lbnVpdGVtXCJdJyk7XHJcbiAgICAgICAgLy8gUHJldmVudGluZyBzZWxlY3RpbmcgdGhlIGl0ZW0gd2hlbiBjbGlja2luZyBvbiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGVuIGBzZWxlY3RhYmxlYCBpcyBgc2luZ2xlYFxyXG4gICAgICAgIGlmIChpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5zaW5nbGUpIHtcclxuICAgICAgICAgICAgaGFuZGxlQ2xpY2soZXZlbnQsIGl0ZW1JZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIHNlbGVjdGFibGUsIGhhbmRsZUNsaWNrLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gbm9kZVR5cGUgPT09IFRyZWVOb2RlVHlwZS5icmFuY2ggPyAoUmVhY3QuY3JlYXRlRWxlbWVudChGb2xkZXJJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChBcnRpY2xlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUgfSkpO1xyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkTGFiZWxXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHN0eWxlOiBsYWJlbFN0eWxlLCBpZDogYCR7aXRlbUlkfS1sYWJlbGAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tbGFiZWxgIH0sXHJcbiAgICAgICAgaGFzSWNvbnMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbldyYXBwZXIsIHsgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1pY29uYCB9LCBpY29uIHx8IGRlZmF1bHRJY29uKSksXHJcbiAgICAgICAgbGFiZWwpKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBhZGRpdGlvbmFsQ29udGVudCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEFkZGl0aW9uYWxDb250ZW50V3JhcHBlciwgeyB0aGVtZTogdGhlbWUsIGlkOiBgJHtpdGVtSWR9LWFkZGl0aW9uYWxjb250ZW50d3JhcHBlcmAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkID8/IGl0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCB9LCBhZGRpdGlvbmFsQ29udGVudCkpIDogbnVsbDtcclxuICAgIC8vIE1lbW9pemUgaW5saW5lIHN0eWxlIG9iamVjdHMgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSByZS1yZW5kZXJzXHJcbiAgICBjb25zdCBjaGVja2JveElucHV0U3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7IG1hcmdpblJpZ2h0OiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMyB9KSwgW3RoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzXSk7XHJcbiAgICBjb25zdCBjaGVja2JveExhYmVsU3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgcGFkZGluZzogMCxcclxuICAgICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgfSksIFtdKTtcclxuICAgIC8vIFByb3BzIHNoYXJlZCBieSBDaGVja2JveCBhbmQgSW5kZXRlcm1pbmF0ZUNoZWNrYm94XHJcbiAgICBjb25zdCBjaGVja2JveFByb3BzID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xyXG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxyXG4gICAgICAgIGhpZGVGb2N1czogdHJ1ZSxcclxuICAgICAgICBpZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICAgICAgaW5wdXRTdHlsZTogY2hlY2tib3hJbnB1dFN0eWxlLFxyXG4gICAgICAgIGxhYmVsU3R5bGU6IGNoZWNrYm94TGFiZWxTdHlsZSxcclxuICAgICAgICBsYWJlbFRleHQ6IGxhYmVsVGV4dCxcclxuICAgICAgICBvbkNoYW5nZTogY2hlY2tib3hDaGFuZ2VIYW5kbGVyLFxyXG4gICAgICAgIHRhYkluZGV4OiAtMSxcclxuICAgICAgICB0ZXN0SWQ6IGAke2l0ZW1JZH0tY2hlY2tib3hgLFxyXG4gICAgfSksIFtcclxuICAgICAgICBpc0Rpc2FibGVkLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dCxcclxuICAgICAgICBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IG9uRXhwYW5kZWRDbGlja2VkID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBoYW5kbGVFeHBhbmRlZENoYW5nZShldmVudCwgaXRlbUlkKTtcclxuICAgIH0sIFtoYW5kbGVFeHBhbmRlZENoYW5nZSwgaXRlbUlkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVFeHBhbmRDbGljayA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmICghaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVG9Gb2N1cyA9PT0gaXRlbUlkID8gMCA6IC0xO1xyXG4gICAgfSwgW2lzRGlzYWJsZWQsIGl0ZW1Ub0ZvY3VzLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IHNob3VsZFNob3dDaGVja2JveCA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSAmJlxyXG4gICAgICAgIChpc1RvcExldmVsU2VsZWN0YWJsZSAhPT0gZmFsc2UgfHwgIXRvcExldmVsKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogUHJlc3NpbmcgYEN0cmwgKyBFbnRlcmAgb3IgYENvbW1hbmQgKyBFbnRlcmAgZm9jdXNlcyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudCB3aXRoaW4gdGhlIHRyZWUgaXRlbVxyXG4gICAgICogYW5kIGxvY2tzIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBmb2N1cyBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaXQgaGFuZGxlcyBrZXkgZXZlbnRzIGZvciBpbnRlcmFjdGlvbiBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBJdCBhbHNvIGhhbmRsZXMgdGhlIG90aGVyIGtleXMgdG8gdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsT3JDb21tYW5kID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5O1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybEVudGVyID0gaXNDdHJsT3JDb21tYW5kICYmIGlzRW50ZXI7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBDdHJsICsgRW50ZXIgb3IgQ29tbWFuZCArIEVudGVyLCBmb2N1cyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudFxyXG4gICAgICAgIC8vIGFuZCBsb2NrIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzQ3RybEVudGVyICYmIHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3RbMF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHZhbGlkIENTUyBzZWxlY3RvcnMgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuLCBwZXJpb2RzIGluIGl0ZW1JZClcclxuICAgICAgICBjb25zdCBzYWZlSXRlbUlkID0gQ1NTLmVzY2FwZShpdGVtSWQpO1xyXG4gICAgICAgIGNvbnN0IGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50ID0gdGFyZ2V0LmNsb3Nlc3QoYCMke3NhZmVJdGVtSWR9LWxhYmVsLCAjJHtzYWZlSXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgKTtcclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBoYW5kbGUga2V5IGV2ZW50cyBmb3IgdGhvc2UgYXJlYXNcclxuICAgICAgICBpZiAoaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYsIGhhbmRsZSBrZXkgZG93biBmb3IgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgaGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbXHJcbiAgICAgICAgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnRzLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICBoYW5kbGVMYWJlbEFuZEFkZGl0aW9uYWxDb250ZW50S2V5RG93bixcclxuICAgICAgICBoYW5kbGVLZXlEb3duLFxyXG4gICAgXSk7XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb250ZXh0VmFsdWUgfSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IHRyZWVJdGVtU3R5bGVzIH0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkVHJlZUl0ZW0sIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgXCJhcmlhLWV4cGFuZGVkXCI6IGhhc093blRyZWVJdGVtcyA/IGV4cGFuZGVkIDogbnVsbCwgXCJhcmlhLXNlbGVjdGVkXCI6IHNlbGVjdGVkSXRlbSwgXCJhcmlhLWNoZWNrZWRcIjogc2hvdWxkU2hvd0NoZWNrYm94ID8gYXJpYUNoZWNrZWRWYWx1ZSA6IG51bGwsIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLCBkZXB0aDogaXRlbURlcHRoLCBoYXNPd25UcmVlSXRlbXM6IGhhc093blRyZWVJdGVtcywgaWQ6IGl0ZW1JZCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG5vZGVUeXBlOiBub2RlVHlwZSwgcm9sZTogXCJ0cmVlaXRlbVwiLCBzZWxlY3RhYmxlVHlwZTogc2VsZWN0YWJsZSwgc2VsZWN0ZWQ6IHNlbGVjdGVkSXRlbSwgdGhlbWU6IHRoZW1lLCB0YWJJbmRleDogdGFiSW5kZXgsIG9uS2V5RG93bjogb25LZXlEb3duSGFuZGxlciwgcmVmOiB0cmVlSXRlbVJlZiwgaG92ZXJDb2xvcjogaG92ZXJDb2xvciB9KSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkSXRlbVdyYXBwZXIsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1pdGVtd3JhcHBlcmAsIGRlcHRoOiBpdGVtRGVwdGgsIGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCBoYXNDdXN0b21JY29uU2l6ZTogISFleHBhbmRJY29uU3R5bGVzPy5zaXplLCBpZDogYCR7aXRlbUlkfS1pdGVtd3JhcHBlcmAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBub2RlVHlwZTogbm9kZVR5cGUsIHNlbGVjdGFibGU6IHNlbGVjdGFibGUsIHN0eWxlOiBzdHlsZSwgdGhlbWU6IHRoZW1lLCByZWY6IG1lcmdlUmVmcyhyZWYsIGZvY3VzVHJhcEVsZW1lbnQpLCBvbkNsaWNrOiBoYW5kbGVPbkNsaWNrIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEV4cGFuZFdyYXBwZXIsIHsgXCJhcmlhLWhpZGRlblwiOiBCb29sZWFuKCFleHBhbmRlZCksIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUsIGNvbG9yOiBleHBhbmRJY29uU3R5bGVzPy5jb2xvciwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1leHBhbmRgLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgb25DbGljazogaGFuZGxlRXhwYW5kQ2xpY2ssIHRoZW1lOiB0aGVtZSB9LCBleHBhbmRlZCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEV4cGFuZE1vcmVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChDaGV2cm9uUmlnaHRJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSB9KSkpKSxcclxuICAgICAgICAgICAgICAgICAgICBzaG91bGRTaG93Q2hlY2tib3ggPyAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRDaGVja2JveFdyYXBwZXIsIHsgaGFzQWRkaXRpb25hbENvbnRlbnQ6ICEhYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lOiB0aGVtZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChJbmRldGVybWluYXRlQ2hlY2tib3gsIE9iamVjdC5hc3NpZ24oe30sIGNoZWNrYm94UHJvcHMsIHsgc3RhdHVzOiBjaGVja2VkU3RhdHVzIH0pKSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBjaGVja2VkOiBjaGVja2VkU3RhdHVzVG9Cb29sZWFuKGNoZWNrZWRTdGF0dXMpIH0pKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbFRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQpKSksXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sIChjaGlsZCwgY2hpbGRJbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZD8udHlwZSAhPT0gVHJlZUl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyBQYXNzIGhpZXJhcmNoeSBpbmZvIHRocm91Z2ggY29udGV4dCBpbnN0ZWFkIG9mIGNsb25lRWxlbWVudFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5lc3RlZEhpZXJhcmNoeVZhbHVlID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXB0aDogaXRlbURlcHRoICsgMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3BMZXZlbDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBjaGlsZEluZGV4LFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyYW5zaXRpb24sIHsgaXNPcGVuOiBleHBhbmRlZCwgdW5tb3VudE9uRXhpdDogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgeyByb2xlOiBcImdyb3VwXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0LlByb3ZpZGVyLCB7IGtleTogY2hpbGQucHJvcHMuaXRlbUlkLCB2YWx1ZTogbmVzdGVkSGllcmFyY2h5VmFsdWUgfSwgY2hpbGQpKSkpO1xyXG4gICAgICAgICAgICAgICAgfSkpKSkpO1xyXG59KTtcclxuLyoqXHJcbiAqIEN1c3RvbSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBSZWFjdC5tZW1vXHJcbiAqIE9ubHkgcmUtcmVuZGVyIFRyZWVJdGVtIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlXHJcbiAqL1xyXG5mdW5jdGlvbiBhcmVQcm9wc0VxdWFsKHByZXZQcm9wcywgbmV4dFByb3BzKSB7XHJcbiAgICAvLyBDaGVjayBpZiBpdGVtSWQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5pdGVtSWQgIT09IG5leHRQcm9wcy5pdGVtSWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBsYWJlbCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsICE9PSBuZXh0UHJvcHMubGFiZWwpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBkaXNhYmxlZCBzdGF0ZSBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmlzRGlzYWJsZWQgIT09IG5leHRQcm9wcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaWNvbiBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmljb24gIT09IG5leHRQcm9wcy5pY29uKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgYWRkaXRpb25hbCBjb250ZW50IGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuYWRkaXRpb25hbENvbnRlbnQgIT09IG5leHRQcm9wcy5hZGRpdGlvbmFsQ29udGVudCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGhvdmVyIGNvbG9yIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaG92ZXJDb2xvciAhPT0gbmV4dFByb3BzLmhvdmVyQ29sb3IpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBjaGlsZHJlbiBjaGFuZ2VkIChmb3IgbmVzdGVkIHRyZWUgaXRlbXMpXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBjaGlsZHJlbiBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLmNoaWxkcmVuICE9PSBuZXh0UHJvcHMuY2hpbGRyZW4pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBzdHlsZXMgY2hhbmdlZFxyXG4gICAgLy8gVXNpbmcgdHlwZSBhc3NlcnRpb24gc2luY2Ugc3R5bGUgY29tZXMgZnJvbSBSZWFjdC5IVE1MQXR0cmlidXRlc1xyXG4gICAgaWYgKHByZXZQcm9wcy5zdHlsZSAhPT0gbmV4dFByb3BzLnN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy5sYWJlbFN0eWxlICE9PSBuZXh0UHJvcHMubGFiZWxTdHlsZSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChwcmV2UHJvcHMudHJlZUl0ZW1TdHlsZXMgIT09IG5leHRQcm9wcy50cmVlSXRlbVN0eWxlcykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIEFsbCByZWxldmFudCBwcm9wcyBhcmUgZXF1YWwsIHNraXAgcmUtcmVuZGVyXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG4vKipcclxuICogTWVtb2l6ZWQgVHJlZUl0ZW0gY29tcG9uZW50XHJcbiAqIE9ubHkgcmUtcmVuZGVycyB3aGVuIHJlbGV2YW50IHByb3BzIGNoYW5nZSwgaW1wcm92aW5nIHBlcmZvcm1hbmNlIGZvciBsYXJnZSB0cmVlc1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFRyZWVJdGVtID0gUmVhY3QubWVtbyhUcmVlSXRlbUNvbXBvbmVudCwgYXJlUHJvcHNFcXVhbCk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRyZWVJdGVtLmpzLm1hcCJdfQ== */"));
22899
23409
  var AdditionalContentWrapper$1 = /*#__PURE__*/_styled("div", {
22900
23410
  target: "e1xiryew0",
22901
23411
  label: "AdditionalContentWrapper"
22902
23412
  })("margin-bottom:", function (props) {
22903
23413
  return props.theme.spaceScale.spacing05;
22904
- }, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE2SDRDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3Q29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyB1c2VJc0ludmVyc2UgfSBmcm9tICcuLi8uLi9pbnZlcnNlJztcclxuaW1wb3J0IHsgVGhlbWVDb250ZXh0IH0gZnJvbSAnLi4vLi4vdGhlbWUvVGhlbWVDb250ZXh0JztcclxuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCc7XHJcbmltcG9ydCB7IEluZGV0ZXJtaW5hdGVDaGVja2JveCwgSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLCB9IGZyb20gJy4uL0luZGV0ZXJtaW5hdGVDaGVja2JveCc7XHJcbmltcG9ydCB7IFRyYW5zaXRpb24gfSBmcm9tICcuLi9UcmFuc2l0aW9uJztcclxuaW1wb3J0IHsgY2FsY3VsYXRlT2Zmc2V0LCBnZXRUcmVlSXRlbUxhYmVsQ29sb3IsIGdldFRyZWVJdGVtV3JhcHBlckN1cnNvciwgVHJlZU5vZGVUeXBlLCB9IGZyb20gJy4vdXRpbHMnO1xyXG5pbXBvcnQgeyB1c2VGb2N1c0xvY2sgfSBmcm9tICcuLi8uLi9ob29rcy91c2VGb2N1c0xvY2snO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmNvbnN0IFN0eWxlZFRyZWVJdGVtID0gc3R5bGVkLmxpIGBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMTAwXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsNzAwfTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGVUeXBlLCBwcm9wcy5ub2RlVHlwZSl9O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6ICR7cHJvcHMgPT4gY2FsY3VsYXRlT2Zmc2V0KHByb3BzLm5vZGVUeXBlLCBwcm9wcy5kZXB0aCl9O1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAmID4gKjpmaXJzdC1jaGlsZCB7XG4gICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgIG91dGxpbmU6IDJweCBzb2xpZFxuICAgICAgICAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXNJbnZlcnNlXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5mb2N1c307XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUpfTtcbiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIHRydWUpfTtcbiAgICBwYWRkaW5nLWJsb2NrLWVuZDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1ibG9jay1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG5cbiAgICAke3Byb3BzID0+IHByb3BzLnNlbGVjdGVkICYmXHJcbiAgICBjc3MgYFxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMuaXNJbnZlcnNlXHJcbiAgICAgICAgPyBwcm9wcy50aGVtZS5jb2xvcnMudGVydGlhcnk1MDBcclxuICAgICAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5wcmltYXJ5NTAwfTtcbiAgICAgICAgICBibG9jay1zaXplOiAxMDAlO1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIGlubGluZS1zaXplOiAke3Byb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAyfTtcbiAgICAgICAgICBpbnNldC1ibG9jay1zdGFydDogMDtcbiAgICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgICAgIH1cbiAgICAgIGB9XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IGdldEhvdmVyQmFja2dyb3VuZCh7XHJcbiAgICBpc0Rpc2FibGVkOiBwcm9wcy5pc0Rpc2FibGVkLFxyXG4gICAgaG92ZXJDb2xvcjogcHJvcHMuaG92ZXJDb2xvcixcclxuICAgIGlzSW52ZXJzZTogcHJvcHMuaXNJbnZlcnNlLFxyXG4gICAgdGhlbWU6IHByb3BzLnRoZW1lLFxyXG59KX07XG4gICAgfVxuICB9XG5gO1xyXG5mdW5jdGlvbiBnZXRIb3ZlckJhY2tncm91bmQoeyBpc0Rpc2FibGVkLCBob3ZlckNvbG9yLCBpc0ludmVyc2UsIHRoZW1lIH0pIHtcclxuICAgIGlmIChpc0Rpc2FibGVkKVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICBpZiAoaG92ZXJDb2xvcilcclxuICAgICAgICByZXR1cm4gaG92ZXJDb2xvcjtcclxuICAgIGNvbnN0IHRyYW5zcGFyZW5jeSA9IGlzSW52ZXJzZSA/IDAuOCA6IDAuOTU7XHJcbiAgICByZXR1cm4gdHJhbnNwYXJlbnRpemUodHJhbnNwYXJlbmN5LCB0aGVtZS5jb2xvcnMubmV1dHJhbDkwMCk7XHJcbn1cclxuY29uc3QgSWNvbldyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGNvbG9yOiAke3Byb3BzID0+IGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIG1hcmdpbi1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM307XG4gIG1hcmdpbi1sZWZ0OiAwO1xuXG4gIHN2ZyB7XG4gICAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaWNvblNpemVzLm1lZGl1bX1weDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB9XG5gO1xyXG5jb25zdCBTdHlsZWRMYWJlbFdyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICB3aWR0aDogMTAwJTtcbmA7XHJcbmNvbnN0IFN0eWxlZEV4cGFuZFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5jb2xvciB8fFxyXG4gICAgZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgd2lkdGg6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG4gIGhlaWdodDogJHsoeyBzaXplLCB0aGVtZSB9KSA9PiBzaXplICE9PSB1bmRlZmluZWQgPyBgJHtzaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXgsIGxhYmVsLCBsYWJlbFN0eWxlLCBzdHlsZSwgdGVzdElkLCB0b3BMZXZlbCwgdHJlZUl0ZW1TdHlsZXMsIC4uLnJlc3QgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XHJcbiAgICBjb25zdCBpc0ludmVyc2UgPSB1c2VJc0ludmVyc2UoKTtcclxuICAgIGNvbnN0IHsgZXhwYW5kSWNvblN0eWxlcywgaGFuZGxlRXhwYW5kZWRDaGFuZ2UsIGhhc0ljb25zLCBpdGVtVG9Gb2N1cywgaXNUb3BMZXZlbFNlbGVjdGFibGUsIHNlbGVjdGFibGUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNvbnRleHRWYWx1ZSwgaGFuZGxlQ2xpY2ssIGhhbmRsZUtleURvd24gfSA9IHVzZVRyZWVJdGVtKHByb3BzLCBmb3J3YXJkZWRSZWYpO1xyXG4gICAgY29uc3QgeyBpc0Rpc2FibGVkIH0gPSBjb250ZXh0VmFsdWU7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHBhcmVudERlcHRoLCByZWYsIHNlbGVjdGVkSXRlbXMsIH0gPSBjb250ZXh0VmFsdWU7XHJcbiAgICBjb25zdCBub2RlVHlwZSA9IGhhc093blRyZWVJdGVtcyA/IFRyZWVOb2RlVHlwZS5icmFuY2ggOiBUcmVlTm9kZVR5cGUubGVhZjtcclxuICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5zaW5nbGVcclxuICAgICAgICA/IHNlbGVjdGVkSXRlbXM/LlswXT8uaXRlbUlkID09PSBpdGVtSWRcclxuICAgICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBhcmlhQ2hlY2tlZFZhbHVlID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLm11bHRpXHJcbiAgICAgICAgPyBjaGVja2VkU3RhdHVzID09PSBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMuaW5kZXRlcm1pbmF0ZVxyXG4gICAgICAgICAgICA/ICdtaXhlZCdcclxuICAgICAgICAgICAgOiBjaGVja2VkU3RhdHVzID09PSBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMuY2hlY2tlZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IFtpc0luc2lkZVRyZWVJdGVtLCBzZXRJc0luc2lkZVRyZWVJdGVtXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xyXG4gICAgY29uc3QgZm9jdXNUcmFwRWxlbWVudCA9IHVzZUZvY3VzTG9jayhpc0luc2lkZVRyZWVJdGVtKTtcclxuICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHMgPSAnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIGFbaHJlZl0sIFt0YWJpbmRleF06bm90KFt0YWJpbmRleD1cIi0xXCJdKSc7XHJcbiAgICBjb25zdCBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzID0gKGNvbnRhaW5lciwgc2VsZWN0b3IpID0+IHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShjb250YWluZXIucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpLmZpbHRlcihlbCA9PiAhZWwuaGFzQXR0cmlidXRlKCd0YWJpbmRleCcpIHx8XHJcbiAgICAgICAgICAgIChlbC50YWJJbmRleCAhPT0gdW5kZWZpbmVkICYmIGVsLnRhYkluZGV4ID49IDApKTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgbGFiZWwgYW5kIGFkZGl0aW9uYWwgY29udGVudCBvZiBhIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBZb3UgY2FuIG5hdmlnYXRlIHRocm91Z2ggaW50ZXJhY3RpdmUgZWxlbWVudHMgdXNpbmcgdGhlIGBUYWJgIGtleSwgYWN0aXZhdGUgdGhlbSB3aXRoIGBFbnRlcmAgb3IgYFNwYWNlYCxcclxuICAgICAqIGFuZCBleGl0IG91dHNpZGUgYW5kIGZvY3VzIHRoZSB3aG9sZSB0cmVlIGl0ZW0gd2l0aCBgRXNjYXBlYC5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3QgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24gPSAoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0LCBzaGlmdEtleSB9ID0gZXZlbnQ7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSB0YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaXNFbnRlciA9IGtleSA9PT0gJ0VudGVyJztcclxuICAgICAgICBjb25zdCBpc1NwYWNlID0ga2V5ID09PSAnICc7XHJcbiAgICAgICAgY29uc3QgaXNFc2NhcGUgPSBrZXkgPT09ICdFc2NhcGUnO1xyXG4gICAgICAgIGNvbnN0IGlzVGFiID0ga2V5ID09PSAnVGFiJztcclxuICAgICAgICBjb25zdCBpc0FjdGl2YXRpb25LZXkgPSBpc0VudGVyIHx8IGlzU3BhY2U7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdChpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAvLyBJZiB0aGUga2V5IGlzIGBUYWJgLCB3ZSBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzVGFiICYmIGlzSW5zaWRlVHJlZUl0ZW0pIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICAvLyBGaWx0ZXIgbGlzdCBvZiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGljaCBhcmUgb25seSBpbmNsdWRlZCBmb3IgY3VycmVudCB0cmVlIGl0ZW1cclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0LmZpbHRlcihlbCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0VHJlZUl0ZW0gPSBlbC5jbG9zZXN0KCdbcm9sZT1cInRyZWVpdGVtXCJdJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdFRyZWVJdGVtID09PSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5pbmRleE9mKGN1cnJlbnRFbGVtZW50KTtcclxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gc2hpZnRLZXkgPyAtMSA6IDE7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGNvbnN0IG5leHRJbmRleCA9IChjdXJyZW50SW5kZXggKyBkaXJlY3Rpb24gKyB0b3RhbCkgJSB0b3RhbDtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFRvRm9jdXMgPSBjdXJyZW50VHJlZUl0ZW1JbnRlcmFjdGl2ZUVsZW1lbnRzW25leHRJbmRleF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBlbGVtZW50VG9Gb2N1cy5mb2N1cygpLCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFByZXNzaW5nIGBFbnRlcmAgb3IgYFNwYWNlYCBvbiBhbiBpbnRlcmFjdGl2ZSBlbGVtZW50IHdpbGwgdHJpZ2dlciBpdHMgY2xpY2sgZXZlbnRcclxuICAgICAgICBpZiAoaXNBY3RpdmF0aW9uS2V5ICYmIGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTW92ZXMgZm9jdXMgb3V0c2lkZSB0aGUgdHJlZSBpdGVtIGFuZCBmb2N1c2VzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmIHdoZW4gYEVzY2FwZWAgaXMgcHJlc3NlZFxyXG4gICAgICAgIGlmIChpc0VzY2FwZSkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbShmYWxzZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRyZWVJdGVtTm9kZSA9IHRyZWVJdGVtUmVmLmN1cnJlbnQ7XHJcbiAgICAgICAgICAgIGlmICh0cmVlSXRlbU5vZGUpIHtcclxuICAgICAgICAgICAgICAgIHRyZWVJdGVtTm9kZS5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaGFuZGxlT25DbGljayA9IChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoJ2J1dHRvbiwgW3JvbGU9XCJidXR0b25cIl0sIGFbaHJlZl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbcm9sZT1cIm1lbnVpdGVtXCJdJyk7XHJcbiAgICAgICAgLy8gUHJldmVudGluZyBzZWxlY3RpbmcgdGhlIGl0ZW0gd2hlbiBjbGlja2luZyBvbiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGVuIGBzZWxlY3RhYmxlYCBpcyBgc2luZ2xlYFxyXG4gICAgICAgIGlmIChpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5zaW5nbGUpIHtcclxuICAgICAgICAgICAgaGFuZGxlQ2xpY2soZXZlbnQsIGl0ZW1JZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gbm9kZVR5cGUgPT09IFRyZWVOb2RlVHlwZS5icmFuY2ggPyAoUmVhY3QuY3JlYXRlRWxlbWVudChGb2xkZXJJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChBcnRpY2xlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUgfSkpO1xyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkTGFiZWxXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHN0eWxlOiBsYWJlbFN0eWxlLCBpZDogYCR7aXRlbUlkfS1sYWJlbGAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tbGFiZWxgIH0sXHJcbiAgICAgICAgaGFzSWNvbnMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbldyYXBwZXIsIHsgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1pY29uYCB9LCBpY29uIHx8IGRlZmF1bHRJY29uKSksXHJcbiAgICAgICAgbGFiZWwpKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBhZGRpdGlvbmFsQ29udGVudCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEFkZGl0aW9uYWxDb250ZW50V3JhcHBlciwgeyB0aGVtZTogdGhlbWUsIGlkOiBgJHtpdGVtSWR9LWFkZGl0aW9uYWxjb250ZW50d3JhcHBlcmAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkID8/IGl0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCB9LCBhZGRpdGlvbmFsQ29udGVudCkpIDogbnVsbDtcclxuICAgIC8vIFByb3BzIHNoYXJlZCBieSBDaGVja2JveCBhbmQgSW5kZXRlcm1pbmF0ZUNoZWNrYm94XHJcbiAgICBjb25zdCBjaGVja2JveFByb3BzID0ge1xyXG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxyXG4gICAgICAgIGhpZGVGb2N1czogdHJ1ZSxcclxuICAgICAgICBpZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICAgICAgaW5wdXRTdHlsZTogeyBtYXJnaW5SaWdodDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDMgfSxcclxuICAgICAgICBsYWJlbFN0eWxlOiB7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDAsXHJcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBsYWJlbFRleHQ6IGxhYmVsVGV4dCxcclxuICAgICAgICBvbkNoYW5nZTogY2hlY2tib3hDaGFuZ2VIYW5kbGVyLFxyXG4gICAgICAgIHRhYkluZGV4OiAtMSxcclxuICAgICAgICB0ZXN0SWQ6IGAke2l0ZW1JZH0tY2hlY2tib3hgLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IG9uRXhwYW5kZWRDbGlja2VkID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBoYW5kbGVFeHBhbmRlZENoYW5nZShldmVudCwgaXRlbUlkKTtcclxuICAgIH07XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVG9Gb2N1cyA9PT0gaXRlbUlkID8gMCA6IC0xO1xyXG4gICAgfSwgW2lzRGlzYWJsZWQsIGl0ZW1Ub0ZvY3VzLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IHNob3VsZFNob3dDaGVja2JveCA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSAmJlxyXG4gICAgICAgIChpc1RvcExldmVsU2VsZWN0YWJsZSAhPT0gZmFsc2UgfHwgIXRvcExldmVsKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogUHJlc3NpbmcgYEN0cmwgKyBFbnRlcmAgb3IgYENvbW1hbmQgKyBFbnRlcmAgZm9jdXNlcyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudCB3aXRoaW4gdGhlIHRyZWUgaXRlbVxyXG4gICAgICogYW5kIGxvY2tzIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBmb2N1cyBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaXQgaGFuZGxlcyBrZXkgZXZlbnRzIGZvciBpbnRlcmFjdGlvbiBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBJdCBhbHNvIGhhbmRsZXMgdGhlIG90aGVyIGtleXMgdG8gdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsT3JDb21tYW5kID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5O1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybEVudGVyID0gaXNDdHJsT3JDb21tYW5kICYmIGlzRW50ZXI7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBDdHJsICsgRW50ZXIgb3IgQ29tbWFuZCArIEVudGVyLCBmb2N1cyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudFxyXG4gICAgICAgIC8vIGFuZCBsb2NrIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzQ3RybEVudGVyICYmIHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3RbMF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHZhbGlkIENTUyBzZWxlY3RvcnMgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuLCBwZXJpb2RzIGluIGl0ZW1JZClcclxuICAgICAgICBjb25zdCBzYWZlSXRlbUlkID0gQ1NTLmVzY2FwZShpdGVtSWQpO1xyXG4gICAgICAgIGNvbnN0IGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50ID0gdGFyZ2V0LmNsb3Nlc3QoYCMke3NhZmVJdGVtSWR9LWxhYmVsLCAjJHtzYWZlSXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgKTtcclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBoYW5kbGUga2V5IGV2ZW50cyBmb3IgdGhvc2UgYXJlYXNcclxuICAgICAgICBpZiAoaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYsIGhhbmRsZSBrZXkgZG93biBmb3IgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgaGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyZWVJdGVtQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogY29udGV4dFZhbHVlIH0sXHJcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHN0eWxlOiB0cmVlSXRlbVN0eWxlcyB9LFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZFRyZWVJdGVtLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IFwiYXJpYS1leHBhbmRlZFwiOiBoYXNPd25UcmVlSXRlbXMgPyBleHBhbmRlZCA6IG51bGwsIFwiYXJpYS1zZWxlY3RlZFwiOiBzZWxlY3RlZEl0ZW0sIFwiYXJpYS1jaGVja2VkXCI6IHNob3VsZFNob3dDaGVja2JveCA/IGFyaWFDaGVja2VkVmFsdWUgOiBudWxsLCBcImRhdGEtdGVzdGlkXCI6IHRlc3RJZCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzT3duVHJlZUl0ZW1zOiBoYXNPd25UcmVlSXRlbXMsIGlkOiBpdGVtSWQsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBub2RlVHlwZTogbm9kZVR5cGUsIHJvbGU6IFwidHJlZWl0ZW1cIiwgc2VsZWN0YWJsZVR5cGU6IHNlbGVjdGFibGUsIHNlbGVjdGVkOiBzZWxlY3RlZEl0ZW0sIHRoZW1lOiB0aGVtZSwgdGFiSW5kZXg6IHRhYkluZGV4LCBvbktleURvd246IG9uS2V5RG93bkhhbmRsZXIsIHJlZjogdHJlZUl0ZW1SZWYsIGhvdmVyQ29sb3I6IGhvdmVyQ29sb3IgfSksXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEl0ZW1XcmFwcGVyLCB7IFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkID8/IGl0ZW1JZH0taXRlbXdyYXBwZXJgLCBkZXB0aDogaXRlbURlcHRoLCBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgaGFzQ3VzdG9tSWNvblNpemU6ICEhZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSwgaWQ6IGAke2l0ZW1JZH0taXRlbXdyYXBwZXJgLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgbm9kZVR5cGU6IG5vZGVUeXBlLCBzZWxlY3RhYmxlOiBzZWxlY3RhYmxlLCBzdHlsZTogc3R5bGUsIHRoZW1lOiB0aGVtZSwgcmVmOiBtZXJnZVJlZnMocmVmLCBmb2N1c1RyYXBFbGVtZW50KSwgb25DbGljazogaGFuZGxlT25DbGljayB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRFeHBhbmRXcmFwcGVyLCB7IFwiYXJpYS1oaWRkZW5cIjogQm9vbGVhbighZXhwYW5kZWQpLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplLCBjb2xvcjogZXhwYW5kSWNvblN0eWxlcz8uY29sb3IsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZXhwYW5kYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG9uQ2xpY2s6IGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRXhwYW5kZWRDbGlja2VkKGV2ZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhlbWU6IHRoZW1lIH0sIGV4cGFuZGVkID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRXhwYW5kTW9yZUljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZXZyb25SaWdodEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSkpLFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3VsZFNob3dDaGVja2JveCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZENoZWNrYm94V3JhcHBlciwgeyBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgdGhlbWU6IHRoZW1lIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEluZGV0ZXJtaW5hdGVDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBzdGF0dXM6IGNoZWNrZWRTdGF0dXMgfSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IGNoZWNrZWQ6IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4oY2hlY2tlZFN0YXR1cykgfSkpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpKSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZD8udHlwZSA9PT0gVHJlZUl0ZW0gPyAoUmVhY3QuY3JlYXRlRWxlbWVudChUcmFuc2l0aW9uLCB7IGlzT3BlbjogZXhwYW5kZWQsIHVubW91bnRPbkV4aXQ6IHRydWUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInVsXCIsIHsgcm9sZTogXCJncm91cFwiIH0sIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLnByb3BzLml0ZW1JZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudERlcHRoLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSkpKSA6IChjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB9KSkpKSk7XHJcbn0pO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1UcmVlSXRlbS5qcy5tYXAiXX0= */"));
22905
- var TreeItem = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
23414
+ }, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnSTRDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSAnLi4vQ2hlY2tib3gnO1xyXG5pbXBvcnQgeyBJbmRldGVybWluYXRlQ2hlY2tib3gsIEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cywgfSBmcm9tICcuLi9JbmRldGVybWluYXRlQ2hlY2tib3gnO1xyXG5pbXBvcnQgeyBUcmFuc2l0aW9uIH0gZnJvbSAnLi4vVHJhbnNpdGlvbic7XHJcbmNvbnN0IFN0eWxlZFRyZWVJdGVtID0gc3R5bGVkLmxpIGBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMTAwXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsNzAwfTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGVUeXBlLCBwcm9wcy5ub2RlVHlwZSl9O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6ICR7cHJvcHMgPT4gY2FsY3VsYXRlT2Zmc2V0KHByb3BzLm5vZGVUeXBlLCBwcm9wcy5kZXB0aCl9O1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAmID4gKjpmaXJzdC1jaGlsZCB7XG4gICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgIG91dGxpbmU6IDJweCBzb2xpZFxuICAgICAgICAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXNJbnZlcnNlXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5mb2N1c307XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUpfTtcbiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIHRydWUpfTtcbiAgICBwYWRkaW5nLWJsb2NrLWVuZDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1ibG9jay1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG5cbiAgICAke3Byb3BzID0+IHByb3BzLnNlbGVjdGVkICYmXHJcbiAgICBjc3MgYFxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMuaXNJbnZlcnNlXHJcbiAgICAgICAgPyBwcm9wcy50aGVtZS5jb2xvcnMudGVydGlhcnk1MDBcclxuICAgICAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5wcmltYXJ5NTAwfTtcbiAgICAgICAgICBibG9jay1zaXplOiAxMDAlO1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIGlubGluZS1zaXplOiAke3Byb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAyfTtcbiAgICAgICAgICBpbnNldC1ibG9jay1zdGFydDogMDtcbiAgICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgICAgIH1cbiAgICAgIGB9XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IGdldEhvdmVyQmFja2dyb3VuZCh7XHJcbiAgICBpc0Rpc2FibGVkOiBwcm9wcy5pc0Rpc2FibGVkLFxyXG4gICAgaG92ZXJDb2xvcjogcHJvcHMuaG92ZXJDb2xvcixcclxuICAgIGlzSW52ZXJzZTogcHJvcHMuaXNJbnZlcnNlLFxyXG4gICAgdGhlbWU6IHByb3BzLnRoZW1lLFxyXG59KX07XG4gICAgfVxuICB9XG5gO1xyXG5mdW5jdGlvbiBnZXRIb3ZlckJhY2tncm91bmQoeyBpc0Rpc2FibGVkLCBob3ZlckNvbG9yLCBpc0ludmVyc2UsIHRoZW1lIH0pIHtcclxuICAgIGlmIChpc0Rpc2FibGVkKVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICBpZiAoaG92ZXJDb2xvcilcclxuICAgICAgICByZXR1cm4gaG92ZXJDb2xvcjtcclxuICAgIGNvbnN0IHRyYW5zcGFyZW5jeSA9IGlzSW52ZXJzZSA/IDAuOCA6IDAuOTU7XHJcbiAgICByZXR1cm4gdHJhbnNwYXJlbnRpemUodHJhbnNwYXJlbmN5LCB0aGVtZS5jb2xvcnMubmV1dHJhbDkwMCk7XHJcbn1cclxuY29uc3QgSWNvbldyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGNvbG9yOiAke3Byb3BzID0+IGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIG1hcmdpbi1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM307XG4gIG1hcmdpbi1sZWZ0OiAwO1xuXG4gIHN2ZyB7XG4gICAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaWNvblNpemVzLm1lZGl1bX1weDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB9XG5gO1xyXG5jb25zdCBTdHlsZWRMYWJlbFdyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICB3aWR0aDogMTAwJTtcbmA7XHJcbmNvbnN0IFN0eWxlZEV4cGFuZFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5jb2xvciB8fFxyXG4gICAgZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgd2lkdGg6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG4gIGhlaWdodDogJHsoeyBzaXplLCB0aGVtZSB9KSA9PiBzaXplICE9PSB1bmRlZmluZWQgPyBgJHtzaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5jb25zdCBUcmVlSXRlbUNvbXBvbmVudCA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpID0+IHtcclxuICAgIGNvbnN0IHsgYWRkaXRpb25hbENvbnRlbnQsIGNoaWxkcmVuLCBob3ZlckNvbG9yLCBpY29uLCBpbmRleDogaW5kZXhQcm9wLCBsYWJlbCwgbGFiZWxTdHlsZSwgc3R5bGUsIHRlc3RJZCwgdG9wTGV2ZWw6IHRvcExldmVsUHJvcCwgdHJlZUl0ZW1TdHlsZXMsIC4uLnJlc3QgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XHJcbiAgICBjb25zdCBpc0ludmVyc2UgPSB1c2VJc0ludmVyc2UoKTtcclxuICAgIC8vIFJlYWQgaGllcmFyY2h5IGluZm9ybWF0aW9uIGZyb20gY29udGV4dCAocmVkdWNlcyBjbG9uZUVsZW1lbnQgb3ZlcmhlYWQpXHJcbiAgICBjb25zdCBoaWVyYXJjaHlDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChUcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQpO1xyXG4gICAgLy8gVXNlIGNvbnRleHQgdmFsdWVzIGlmIHByb3BzIGFyZSBub3QgcHJvdmlkZWQgKGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KVxyXG4gICAgY29uc3QgaW5kZXggPSBpbmRleFByb3AgIT09IHVuZGVmaW5lZCA/IGluZGV4UHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaW5kZXg7XHJcbiAgICBjb25zdCB0b3BMZXZlbCA9IHRvcExldmVsUHJvcCAhPT0gdW5kZWZpbmVkID8gdG9wTGV2ZWxQcm9wIDogaGllcmFyY2h5Q29udGV4dC5pc1RvcExldmVsO1xyXG4gICAgLy8gQ29uc3VtZSBzcGxpdCBjb250ZXh0cyBmb3IgcmVkdWNlZCByZS1yZW5kZXIgc2NvcGVcclxuICAgIGNvbnN0IHsgaXRlbVRvRm9jdXMgfSA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0KTtcclxuICAgIGNvbnN0IHsgaGFuZGxlRXhwYW5kZWRDaGFuZ2UgfSA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZVZpZXdFeHBhbnNpb25Db250ZXh0KTtcclxuICAgIGNvbnN0IHsgZXhwYW5kSWNvblN0eWxlcywgaGFzSWNvbnMsIGlzVG9wTGV2ZWxTZWxlY3RhYmxlLCBzZWxlY3RhYmxlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgY2hlY2tib3hDaGFuZ2VIYW5kbGVyLCBjaGVja2VkU3RhdHVzLCBleHBhbmRlZCwgaGFzT3duVHJlZUl0ZW1zLCBpdGVtRGVwdGgsIGl0ZW1JZCwgcmVmLCBzZWxlY3RlZEl0ZW1zLCB9ID0gY29udGV4dFZhbHVlO1xyXG4gICAgY29uc3Qgbm9kZVR5cGUgPSBoYXNPd25UcmVlSXRlbXMgPyBUcmVlTm9kZVR5cGUuYnJhbmNoIDogVHJlZU5vZGVUeXBlLmxlYWY7XHJcbiAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUuc2luZ2xlXHJcbiAgICAgICAgPyBzZWxlY3RlZEl0ZW1zPy5bMF0/Lml0ZW1JZCA9PT0gaXRlbUlkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgYXJpYUNoZWNrZWRWYWx1ZSA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aVxyXG4gICAgICAgID8gY2hlY2tlZFN0YXR1cyA9PT0gSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLmluZGV0ZXJtaW5hdGVcclxuICAgICAgICAgICAgPyAnbWl4ZWQnXHJcbiAgICAgICAgICAgIDogY2hlY2tlZFN0YXR1cyA9PT0gSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLmNoZWNrZWRcclxuICAgICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBbaXNJbnNpZGVUcmVlSXRlbSwgc2V0SXNJbnNpZGVUcmVlSXRlbV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XHJcbiAgICBjb25zdCB0cmVlSXRlbVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcclxuICAgIGNvbnN0IGZvY3VzVHJhcEVsZW1lbnQgPSB1c2VGb2N1c0xvY2soaXNJbnNpZGVUcmVlSXRlbSk7XHJcbiAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzID0gJ2J1dHRvbiwgW3JvbGU9XCJidXR0b25cIl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBhW2hyZWZdLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9XCItMVwiXSknO1xyXG4gICAgY29uc3QgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyA9IFJlYWN0LnVzZUNhbGxiYWNrKChjb250YWluZXIsIHNlbGVjdG9yKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKS5maWx0ZXIoZWwgPT4gIWVsLmhhc0F0dHJpYnV0ZSgndGFiaW5kZXgnKSB8fFxyXG4gICAgICAgICAgICAoZWwudGFiSW5kZXggIT09IHVuZGVmaW5lZCAmJiBlbC50YWJJbmRleCA+PSAwKSk7XHJcbiAgICB9LCBbXSk7XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgbGFiZWwgYW5kIGFkZGl0aW9uYWwgY29udGVudCBvZiBhIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBZb3UgY2FuIG5hdmlnYXRlIHRocm91Z2ggaW50ZXJhY3RpdmUgZWxlbWVudHMgdXNpbmcgdGhlIGBUYWJgIGtleSwgYWN0aXZhdGUgdGhlbSB3aXRoIGBFbnRlcmAgb3IgYFNwYWNlYCxcclxuICAgICAqIGFuZCBleGl0IG91dHNpZGUgYW5kIGZvY3VzIHRoZSB3aG9sZSB0cmVlIGl0ZW0gd2l0aCBgRXNjYXBlYC5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3QgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24gPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0LCBzaGlmdEtleSB9ID0gZXZlbnQ7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSB0YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaXNFbnRlciA9IGtleSA9PT0gJ0VudGVyJztcclxuICAgICAgICBjb25zdCBpc1NwYWNlID0ga2V5ID09PSAnICc7XHJcbiAgICAgICAgY29uc3QgaXNFc2NhcGUgPSBrZXkgPT09ICdFc2NhcGUnO1xyXG4gICAgICAgIGNvbnN0IGlzVGFiID0ga2V5ID09PSAnVGFiJztcclxuICAgICAgICBjb25zdCBpc0FjdGl2YXRpb25LZXkgPSBpc0VudGVyIHx8IGlzU3BhY2U7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdChpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAvLyBJZiB0aGUga2V5IGlzIGBUYWJgLCB3ZSBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzVGFiICYmIGlzSW5zaWRlVHJlZUl0ZW0pIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICAvLyBGaWx0ZXIgbGlzdCBvZiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGljaCBhcmUgb25seSBpbmNsdWRlZCBmb3IgY3VycmVudCB0cmVlIGl0ZW1cclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0LmZpbHRlcihlbCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0VHJlZUl0ZW0gPSBlbC5jbG9zZXN0KCdbcm9sZT1cInRyZWVpdGVtXCJdJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdFRyZWVJdGVtID09PSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5pbmRleE9mKGN1cnJlbnRFbGVtZW50KTtcclxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gc2hpZnRLZXkgPyAtMSA6IDE7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGNvbnN0IG5leHRJbmRleCA9IChjdXJyZW50SW5kZXggKyBkaXJlY3Rpb24gKyB0b3RhbCkgJSB0b3RhbDtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFRvRm9jdXMgPSBjdXJyZW50VHJlZUl0ZW1JbnRlcmFjdGl2ZUVsZW1lbnRzW25leHRJbmRleF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBlbGVtZW50VG9Gb2N1cy5mb2N1cygpLCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFByZXNzaW5nIGBFbnRlcmAgb3IgYFNwYWNlYCBvbiBhbiBpbnRlcmFjdGl2ZSBlbGVtZW50IHdpbGwgdHJpZ2dlciBpdHMgY2xpY2sgZXZlbnRcclxuICAgICAgICBpZiAoaXNBY3RpdmF0aW9uS2V5ICYmIGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTW92ZXMgZm9jdXMgb3V0c2lkZSB0aGUgdHJlZSBpdGVtIGFuZCBmb2N1c2VzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmIHdoZW4gYEVzY2FwZWAgaXMgcHJlc3NlZFxyXG4gICAgICAgIGlmIChpc0VzY2FwZSkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbShmYWxzZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRyZWVJdGVtTm9kZSA9IHRyZWVJdGVtUmVmLmN1cnJlbnQ7XHJcbiAgICAgICAgICAgIGlmICh0cmVlSXRlbU5vZGUpIHtcclxuICAgICAgICAgICAgICAgIHRyZWVJdGVtTm9kZS5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbZ2V0SW50ZXJhY3RpdmVFbGVtZW50cywgaW50ZXJhY3RpdmVFbGVtZW50cywgaXNJbnNpZGVUcmVlSXRlbV0pO1xyXG4gICAgY29uc3QgaGFuZGxlT25DbGljayA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoJ2J1dHRvbiwgW3JvbGU9XCJidXR0b25cIl0sIGFbaHJlZl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbcm9sZT1cIm1lbnVpdGVtXCJdJyk7XHJcbiAgICAgICAgLy8gUHJldmVudGluZyBzZWxlY3RpbmcgdGhlIGl0ZW0gd2hlbiBjbGlja2luZyBvbiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGVuIGBzZWxlY3RhYmxlYCBpcyBgc2luZ2xlYFxyXG4gICAgICAgIGlmIChpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5zaW5nbGUpIHtcclxuICAgICAgICAgICAgaGFuZGxlQ2xpY2soZXZlbnQsIGl0ZW1JZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIHNlbGVjdGFibGUsIGhhbmRsZUNsaWNrLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gbm9kZVR5cGUgPT09IFRyZWVOb2RlVHlwZS5icmFuY2ggPyAoUmVhY3QuY3JlYXRlRWxlbWVudChGb2xkZXJJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChBcnRpY2xlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUgfSkpO1xyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkTGFiZWxXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHN0eWxlOiBsYWJlbFN0eWxlLCBpZDogYCR7aXRlbUlkfS1sYWJlbGAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tbGFiZWxgIH0sXHJcbiAgICAgICAgaGFzSWNvbnMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbldyYXBwZXIsIHsgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHRoZW1lOiB0aGVtZSwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1pY29uYCB9LCBpY29uIHx8IGRlZmF1bHRJY29uKSksXHJcbiAgICAgICAgbGFiZWwpKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBhZGRpdGlvbmFsQ29udGVudCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEFkZGl0aW9uYWxDb250ZW50V3JhcHBlciwgeyB0aGVtZTogdGhlbWUsIGlkOiBgJHtpdGVtSWR9LWFkZGl0aW9uYWxjb250ZW50d3JhcHBlcmAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkID8/IGl0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCB9LCBhZGRpdGlvbmFsQ29udGVudCkpIDogbnVsbDtcclxuICAgIC8vIE1lbW9pemUgaW5saW5lIHN0eWxlIG9iamVjdHMgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSByZS1yZW5kZXJzXHJcbiAgICBjb25zdCBjaGVja2JveElucHV0U3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7IG1hcmdpblJpZ2h0OiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMyB9KSwgW3RoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzXSk7XHJcbiAgICBjb25zdCBjaGVja2JveExhYmVsU3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgcGFkZGluZzogMCxcclxuICAgICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgfSksIFtdKTtcclxuICAgIC8vIFByb3BzIHNoYXJlZCBieSBDaGVja2JveCBhbmQgSW5kZXRlcm1pbmF0ZUNoZWNrYm94XHJcbiAgICBjb25zdCBjaGVja2JveFByb3BzID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xyXG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxyXG4gICAgICAgIGhpZGVGb2N1czogdHJ1ZSxcclxuICAgICAgICBpZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICAgICAgaW5wdXRTdHlsZTogY2hlY2tib3hJbnB1dFN0eWxlLFxyXG4gICAgICAgIGxhYmVsU3R5bGU6IGNoZWNrYm94TGFiZWxTdHlsZSxcclxuICAgICAgICBsYWJlbFRleHQ6IGxhYmVsVGV4dCxcclxuICAgICAgICBvbkNoYW5nZTogY2hlY2tib3hDaGFuZ2VIYW5kbGVyLFxyXG4gICAgICAgIHRhYkluZGV4OiAtMSxcclxuICAgICAgICB0ZXN0SWQ6IGAke2l0ZW1JZH0tY2hlY2tib3hgLFxyXG4gICAgfSksIFtcclxuICAgICAgICBpc0Rpc2FibGVkLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dCxcclxuICAgICAgICBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IG9uRXhwYW5kZWRDbGlja2VkID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBoYW5kbGVFeHBhbmRlZENoYW5nZShldmVudCwgaXRlbUlkKTtcclxuICAgIH0sIFtoYW5kbGVFeHBhbmRlZENoYW5nZSwgaXRlbUlkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVFeHBhbmRDbGljayA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmICghaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVG9Gb2N1cyA9PT0gaXRlbUlkID8gMCA6IC0xO1xyXG4gICAgfSwgW2lzRGlzYWJsZWQsIGl0ZW1Ub0ZvY3VzLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IHNob3VsZFNob3dDaGVja2JveCA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSAmJlxyXG4gICAgICAgIChpc1RvcExldmVsU2VsZWN0YWJsZSAhPT0gZmFsc2UgfHwgIXRvcExldmVsKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogUHJlc3NpbmcgYEN0cmwgKyBFbnRlcmAgb3IgYENvbW1hbmQgKyBFbnRlcmAgZm9jdXNlcyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudCB3aXRoaW4gdGhlIHRyZWUgaXRlbVxyXG4gICAgICogYW5kIGxvY2tzIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBmb2N1cyBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaXQgaGFuZGxlcyBrZXkgZXZlbnRzIGZvciBpbnRlcmFjdGlvbiBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBJdCBhbHNvIGhhbmRsZXMgdGhlIG90aGVyIGtleXMgdG8gdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsT3JDb21tYW5kID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5O1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybEVudGVyID0gaXNDdHJsT3JDb21tYW5kICYmIGlzRW50ZXI7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBDdHJsICsgRW50ZXIgb3IgQ29tbWFuZCArIEVudGVyLCBmb2N1cyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudFxyXG4gICAgICAgIC8vIGFuZCBsb2NrIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzQ3RybEVudGVyICYmIHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3RbMF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHZhbGlkIENTUyBzZWxlY3RvcnMgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuLCBwZXJpb2RzIGluIGl0ZW1JZClcclxuICAgICAgICBjb25zdCBzYWZlSXRlbUlkID0gQ1NTLmVzY2FwZShpdGVtSWQpO1xyXG4gICAgICAgIGNvbnN0IGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50ID0gdGFyZ2V0LmNsb3Nlc3QoYCMke3NhZmVJdGVtSWR9LWxhYmVsLCAjJHtzYWZlSXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgKTtcclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBoYW5kbGUga2V5IGV2ZW50cyBmb3IgdGhvc2UgYXJlYXNcclxuICAgICAgICBpZiAoaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYsIGhhbmRsZSBrZXkgZG93biBmb3IgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgaGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbXHJcbiAgICAgICAgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnRzLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICBoYW5kbGVMYWJlbEFuZEFkZGl0aW9uYWxDb250ZW50S2V5RG93bixcclxuICAgICAgICBoYW5kbGVLZXlEb3duLFxyXG4gICAgXSk7XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb250ZXh0VmFsdWUgfSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IHRyZWVJdGVtU3R5bGVzIH0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkVHJlZUl0ZW0sIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgXCJhcmlhLWV4cGFuZGVkXCI6IGhhc093blRyZWVJdGVtcyA/IGV4cGFuZGVkIDogbnVsbCwgXCJhcmlhLXNlbGVjdGVkXCI6IHNlbGVjdGVkSXRlbSwgXCJhcmlhLWNoZWNrZWRcIjogc2hvdWxkU2hvd0NoZWNrYm94ID8gYXJpYUNoZWNrZWRWYWx1ZSA6IG51bGwsIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLCBkZXB0aDogaXRlbURlcHRoLCBoYXNPd25UcmVlSXRlbXM6IGhhc093blRyZWVJdGVtcywgaWQ6IGl0ZW1JZCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG5vZGVUeXBlOiBub2RlVHlwZSwgcm9sZTogXCJ0cmVlaXRlbVwiLCBzZWxlY3RhYmxlVHlwZTogc2VsZWN0YWJsZSwgc2VsZWN0ZWQ6IHNlbGVjdGVkSXRlbSwgdGhlbWU6IHRoZW1lLCB0YWJJbmRleDogdGFiSW5kZXgsIG9uS2V5RG93bjogb25LZXlEb3duSGFuZGxlciwgcmVmOiB0cmVlSXRlbVJlZiwgaG92ZXJDb2xvcjogaG92ZXJDb2xvciB9KSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkSXRlbVdyYXBwZXIsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1pdGVtd3JhcHBlcmAsIGRlcHRoOiBpdGVtRGVwdGgsIGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCBoYXNDdXN0b21JY29uU2l6ZTogISFleHBhbmRJY29uU3R5bGVzPy5zaXplLCBpZDogYCR7aXRlbUlkfS1pdGVtd3JhcHBlcmAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBub2RlVHlwZTogbm9kZVR5cGUsIHNlbGVjdGFibGU6IHNlbGVjdGFibGUsIHN0eWxlOiBzdHlsZSwgdGhlbWU6IHRoZW1lLCByZWY6IG1lcmdlUmVmcyhyZWYsIGZvY3VzVHJhcEVsZW1lbnQpLCBvbkNsaWNrOiBoYW5kbGVPbkNsaWNrIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEV4cGFuZFdyYXBwZXIsIHsgXCJhcmlhLWhpZGRlblwiOiBCb29sZWFuKCFleHBhbmRlZCksIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUsIGNvbG9yOiBleHBhbmRJY29uU3R5bGVzPy5jb2xvciwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1leHBhbmRgLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgb25DbGljazogaGFuZGxlRXhwYW5kQ2xpY2ssIHRoZW1lOiB0aGVtZSB9LCBleHBhbmRlZCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEV4cGFuZE1vcmVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChDaGV2cm9uUmlnaHRJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSB9KSkpKSxcclxuICAgICAgICAgICAgICAgICAgICBzaG91bGRTaG93Q2hlY2tib3ggPyAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRDaGVja2JveFdyYXBwZXIsIHsgaGFzQWRkaXRpb25hbENvbnRlbnQ6ICEhYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lOiB0aGVtZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChJbmRldGVybWluYXRlQ2hlY2tib3gsIE9iamVjdC5hc3NpZ24oe30sIGNoZWNrYm94UHJvcHMsIHsgc3RhdHVzOiBjaGVja2VkU3RhdHVzIH0pKSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBjaGVja2VkOiBjaGVja2VkU3RhdHVzVG9Cb29sZWFuKGNoZWNrZWRTdGF0dXMpIH0pKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbFRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQpKSksXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sIChjaGlsZCwgY2hpbGRJbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZD8udHlwZSAhPT0gVHJlZUl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyBQYXNzIGhpZXJhcmNoeSBpbmZvIHRocm91Z2ggY29udGV4dCBpbnN0ZWFkIG9mIGNsb25lRWxlbWVudFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5lc3RlZEhpZXJhcmNoeVZhbHVlID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXB0aDogaXRlbURlcHRoICsgMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3BMZXZlbDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBjaGlsZEluZGV4LFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyYW5zaXRpb24sIHsgaXNPcGVuOiBleHBhbmRlZCwgdW5tb3VudE9uRXhpdDogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgeyByb2xlOiBcImdyb3VwXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0LlByb3ZpZGVyLCB7IGtleTogY2hpbGQucHJvcHMuaXRlbUlkLCB2YWx1ZTogbmVzdGVkSGllcmFyY2h5VmFsdWUgfSwgY2hpbGQpKSkpO1xyXG4gICAgICAgICAgICAgICAgfSkpKSkpO1xyXG59KTtcclxuLyoqXHJcbiAqIEN1c3RvbSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBSZWFjdC5tZW1vXHJcbiAqIE9ubHkgcmUtcmVuZGVyIFRyZWVJdGVtIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlXHJcbiAqL1xyXG5mdW5jdGlvbiBhcmVQcm9wc0VxdWFsKHByZXZQcm9wcywgbmV4dFByb3BzKSB7XHJcbiAgICAvLyBDaGVjayBpZiBpdGVtSWQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5pdGVtSWQgIT09IG5leHRQcm9wcy5pdGVtSWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBsYWJlbCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsICE9PSBuZXh0UHJvcHMubGFiZWwpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBkaXNhYmxlZCBzdGF0ZSBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmlzRGlzYWJsZWQgIT09IG5leHRQcm9wcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaWNvbiBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmljb24gIT09IG5leHRQcm9wcy5pY29uKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgYWRkaXRpb25hbCBjb250ZW50IGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuYWRkaXRpb25hbENvbnRlbnQgIT09IG5leHRQcm9wcy5hZGRpdGlvbmFsQ29udGVudCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGhvdmVyIGNvbG9yIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaG92ZXJDb2xvciAhPT0gbmV4dFByb3BzLmhvdmVyQ29sb3IpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBjaGlsZHJlbiBjaGFuZ2VkIChmb3IgbmVzdGVkIHRyZWUgaXRlbXMpXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBjaGlsZHJlbiBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLmNoaWxkcmVuICE9PSBuZXh0UHJvcHMuY2hpbGRyZW4pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBzdHlsZXMgY2hhbmdlZFxyXG4gICAgLy8gVXNpbmcgdHlwZSBhc3NlcnRpb24gc2luY2Ugc3R5bGUgY29tZXMgZnJvbSBSZWFjdC5IVE1MQXR0cmlidXRlc1xyXG4gICAgaWYgKHByZXZQcm9wcy5zdHlsZSAhPT0gbmV4dFByb3BzLnN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy5sYWJlbFN0eWxlICE9PSBuZXh0UHJvcHMubGFiZWxTdHlsZSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChwcmV2UHJvcHMudHJlZUl0ZW1TdHlsZXMgIT09IG5leHRQcm9wcy50cmVlSXRlbVN0eWxlcykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIEFsbCByZWxldmFudCBwcm9wcyBhcmUgZXF1YWwsIHNraXAgcmUtcmVuZGVyXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG4vKipcclxuICogTWVtb2l6ZWQgVHJlZUl0ZW0gY29tcG9uZW50XHJcbiAqIE9ubHkgcmUtcmVuZGVycyB3aGVuIHJlbGV2YW50IHByb3BzIGNoYW5nZSwgaW1wcm92aW5nIHBlcmZvcm1hbmNlIGZvciBsYXJnZSB0cmVlc1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFRyZWVJdGVtID0gUmVhY3QubWVtbyhUcmVlSXRlbUNvbXBvbmVudCwgYXJlUHJvcHNFcXVhbCk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRyZWVJdGVtLmpzLm1hcCJdfQ== */"));
23415
+ var TreeItemComponent = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
22906
23416
  var _selectedItems$;
22907
23417
  var additionalContent = props.additionalContent,
22908
23418
  children = props.children,
22909
23419
  hoverColor = props.hoverColor,
22910
23420
  icon = props.icon,
23421
+ indexProp = props.index,
22911
23422
  label = props.label,
22912
23423
  labelStyle = props.labelStyle,
22913
23424
  style = props.style,
22914
23425
  testId = props.testId,
22915
- topLevel = props.topLevel,
23426
+ topLevelProp = props.topLevel,
22916
23427
  treeItemStyles = props.treeItemStyles,
22917
23428
  rest = _objectWithoutPropertiesLoose(props, _excluded$1L);
22918
23429
  var theme = useContext(ThemeContext);
22919
23430
  var isInverse = useIsInverse();
22920
- var _React$useContext = useContext(TreeViewContext),
22921
- expandIconStyles = _React$useContext.expandIconStyles,
22922
- handleExpandedChange = _React$useContext.handleExpandedChange,
22923
- hasIcons = _React$useContext.hasIcons,
22924
- itemToFocus = _React$useContext.itemToFocus,
22925
- isTopLevelSelectable = _React$useContext.isTopLevelSelectable,
22926
- selectable = _React$useContext.selectable;
22927
- var _useTreeItem = useTreeItem(props, forwardedRef),
23431
+ // Read hierarchy information from context (reduces cloneElement overhead)
23432
+ var hierarchyContext = useContext(TreeItemHierarchyContext);
23433
+ // Use context values if props are not provided (for backward compatibility)
23434
+ var index = indexProp !== undefined ? indexProp : hierarchyContext.index;
23435
+ var topLevel = topLevelProp !== undefined ? topLevelProp : hierarchyContext.isTopLevel;
23436
+ // Consume split contexts for reduced re-render scope
23437
+ var _React$useContext = useContext(TreeViewSelectionContext),
23438
+ itemToFocus = _React$useContext.itemToFocus;
23439
+ var _React$useContext2 = useContext(TreeViewExpansionContext),
23440
+ handleExpandedChange = _React$useContext2.handleExpandedChange;
23441
+ var _React$useContext3 = useContext(TreeViewConfigContext),
23442
+ expandIconStyles = _React$useContext3.expandIconStyles,
23443
+ hasIcons = _React$useContext3.hasIcons,
23444
+ isTopLevelSelectable = _React$useContext3.isTopLevelSelectable,
23445
+ selectable = _React$useContext3.selectable;
23446
+ // Pass the resolved values to useTreeItem
23447
+ var propsWithHierarchy = _extends({}, props, {
23448
+ index: index,
23449
+ topLevel: topLevel,
23450
+ itemDepth: hierarchyContext.depth,
23451
+ parentDepth: hierarchyContext.parentDepth
23452
+ });
23453
+ var _useTreeItem = useTreeItem(propsWithHierarchy, forwardedRef),
22928
23454
  contextValue = _useTreeItem.contextValue,
22929
23455
  handleClick = _useTreeItem.handleClick,
22930
23456
  handleKeyDown = _useTreeItem.handleKeyDown;
@@ -22935,7 +23461,6 @@ var TreeItem = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
22935
23461
  hasOwnTreeItems = contextValue.hasOwnTreeItems,
22936
23462
  itemDepth = contextValue.itemDepth,
22937
23463
  itemId = contextValue.itemId,
22938
- parentDepth = contextValue.parentDepth,
22939
23464
  ref = contextValue.ref,
22940
23465
  selectedItems = contextValue.selectedItems;
22941
23466
  var nodeType = hasOwnTreeItems ? TreeNodeType.branch : TreeNodeType.leaf;
@@ -22947,18 +23472,18 @@ var TreeItem = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
22947
23472
  var treeItemRef = useRef(null);
22948
23473
  var focusTrapElement = useFocusLock(isInsideTreeItem);
22949
23474
  var interactiveElements = 'button, [role="button"], input, select, textarea, a[href], [tabindex]:not([tabindex="-1"])';
22950
- var getInteractiveElements = function getInteractiveElements(container, selector) {
23475
+ var getInteractiveElements = useCallback(function (container, selector) {
22951
23476
  return Array.from(container.querySelectorAll(selector)).filter(function (el) {
22952
23477
  return !el.hasAttribute('tabindex') || el.tabIndex !== undefined && el.tabIndex >= 0;
22953
23478
  });
22954
- };
23479
+ }, []);
22955
23480
  /**
22956
23481
  * This function allows for keyboard navigation within the label and additional content of a tree item.
22957
23482
  *
22958
23483
  * You can navigate through interactive elements using the `Tab` key, activate them with `Enter` or `Space`,
22959
23484
  * and exit outside and focus the whole tree item with `Escape`.
22960
23485
  * **/
22961
- var handleLabelAndAdditionalContentKeyDown = function handleLabelAndAdditionalContentKeyDown(event) {
23486
+ var handleLabelAndAdditionalContentKeyDown = useCallback(function (event) {
22962
23487
  var key = event.key,
22963
23488
  target = event.target,
22964
23489
  currentTarget = event.currentTarget,
@@ -23007,8 +23532,8 @@ var TreeItem = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
23007
23532
  }
23008
23533
  return;
23009
23534
  }
23010
- };
23011
- var handleOnClick = function handleOnClick(event) {
23535
+ }, [getInteractiveElements, interactiveElements, isInsideTreeItem]);
23536
+ var handleOnClick = useCallback(function (event) {
23012
23537
  if (isDisabled) {
23013
23538
  event.stopPropagation();
23014
23539
  return;
@@ -23023,7 +23548,7 @@ var TreeItem = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
23023
23548
  if (selectable === TreeViewSelectable.single) {
23024
23549
  handleClick(event, itemId);
23025
23550
  }
23026
- };
23551
+ }, [isDisabled, selectable, handleClick, itemId]);
23027
23552
  var defaultIcon = nodeType === TreeNodeType.branch ? createElement(FolderIcon, {
23028
23553
  "aria-hidden": true
23029
23554
  }) : createElement(ArticleIcon, {
@@ -23047,27 +23572,41 @@ var TreeItem = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
23047
23572
  id: itemId + "-additionalcontentwrapper",
23048
23573
  "data-testid": (testId != null ? testId : itemId) + "-additionalcontentwrapper"
23049
23574
  }, additionalContent) : null;
23050
- // Props shared by Checkbox and IndeterminateCheckbox
23051
- var checkboxProps = {
23052
- disabled: isDisabled,
23053
- hideFocus: true,
23054
- id: itemId + "-checkbox",
23055
- inputStyle: {
23575
+ // Memoize inline style objects to prevent unnecessary re-renders
23576
+ var checkboxInputStyle = useMemo(function () {
23577
+ return {
23056
23578
  marginRight: theme.spaceScale.spacing03
23057
- },
23058
- labelStyle: {
23579
+ };
23580
+ }, [theme.spaceScale.spacing03]);
23581
+ var checkboxLabelStyle = useMemo(function () {
23582
+ return {
23059
23583
  padding: 0,
23060
23584
  width: '100%'
23061
- },
23062
- labelText: labelText,
23063
- onChange: checkboxChangeHandler,
23064
- tabIndex: -1,
23065
- testId: itemId + "-checkbox"
23066
- };
23067
- var onExpandedClicked = function onExpandedClicked(event) {
23585
+ };
23586
+ }, []);
23587
+ // Props shared by Checkbox and IndeterminateCheckbox
23588
+ var checkboxProps = useMemo(function () {
23589
+ return {
23590
+ disabled: isDisabled,
23591
+ hideFocus: true,
23592
+ id: itemId + "-checkbox",
23593
+ inputStyle: checkboxInputStyle,
23594
+ labelStyle: checkboxLabelStyle,
23595
+ labelText: labelText,
23596
+ onChange: checkboxChangeHandler,
23597
+ tabIndex: -1,
23598
+ testId: itemId + "-checkbox"
23599
+ };
23600
+ }, [isDisabled, itemId, checkboxInputStyle, checkboxLabelStyle, labelText, checkboxChangeHandler]);
23601
+ var onExpandedClicked = useCallback(function (event) {
23068
23602
  event.preventDefault();
23069
23603
  handleExpandedChange(event, itemId);
23070
- };
23604
+ }, [handleExpandedChange, itemId]);
23605
+ var handleExpandClick = useCallback(function (event) {
23606
+ if (!isDisabled) {
23607
+ onExpandedClicked(event);
23608
+ }
23609
+ }, [isDisabled, onExpandedClicked]);
23071
23610
  var tabIndex = useMemo(function () {
23072
23611
  if (isDisabled) {
23073
23612
  return undefined;
@@ -23085,7 +23624,7 @@ var TreeItem = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
23085
23624
  *
23086
23625
  * It also handles the other keys to trigger the click event on the tree item.
23087
23626
  * **/
23088
- var onKeyDownHandler = function onKeyDownHandler(event) {
23627
+ var onKeyDownHandler = useCallback(function (event) {
23089
23628
  var key = event.key,
23090
23629
  target = event.target,
23091
23630
  currentTarget = event.currentTarget;
@@ -23118,7 +23657,7 @@ var TreeItem = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
23118
23657
  handleKeyDown(event);
23119
23658
  return;
23120
23659
  }
23121
- };
23660
+ }, [getInteractiveElements, interactiveElements, itemId, handleLabelAndAdditionalContentKeyDown, handleKeyDown]);
23122
23661
  return createElement(TreeItemContext.Provider, {
23123
23662
  value: contextValue
23124
23663
  }, createElement("div", {
@@ -23163,11 +23702,7 @@ var TreeItem = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
23163
23702
  "data-testid": (testId || itemId) + "-expand",
23164
23703
  isDisabled: isDisabled,
23165
23704
  isInverse: isInverse,
23166
- onClick: function onClick(event) {
23167
- if (!isDisabled) {
23168
- onExpandedClicked(event);
23169
- }
23170
- },
23705
+ onClick: handleExpandClick,
23171
23706
  theme: theme
23172
23707
  }, expanded ? createElement(ExpandMoreIcon, {
23173
23708
  "aria-hidden": true,
@@ -23182,21 +23717,303 @@ var TreeItem = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
23182
23717
  status: checkedStatus
23183
23718
  })) : createElement(Checkbox, Object.assign({}, checkboxProps, {
23184
23719
  checked: checkedStatusToBoolean(checkedStatus)
23185
- })), treeItemAdditionalContent) : createElement(Fragment, null, labelText, treeItemAdditionalContent)), Children.map(children, function (child, index) {
23186
- return (child == null ? void 0 : child.type) === TreeItem ? createElement(Transition, {
23720
+ })), treeItemAdditionalContent) : createElement(Fragment, null, labelText, treeItemAdditionalContent)), Children.map(children, function (child, childIndex) {
23721
+ if ((child == null ? void 0 : child.type) !== TreeItem) {
23722
+ return child;
23723
+ }
23724
+ // Pass hierarchy info through context instead of cloneElement
23725
+ var nestedHierarchyValue = {
23726
+ depth: itemDepth + 1,
23727
+ parentDepth: itemDepth,
23728
+ isTopLevel: false,
23729
+ index: childIndex
23730
+ };
23731
+ return createElement(Transition, {
23187
23732
  isOpen: expanded,
23188
23733
  unmountOnExit: true
23189
23734
  }, createElement("ul", {
23190
23735
  role: "group"
23191
- }, cloneElement(child, {
23192
- index: index,
23736
+ }, createElement(TreeItemHierarchyContext.Provider, {
23193
23737
  key: child.props.itemId,
23194
- itemDepth: itemDepth,
23195
- parentDepth: parentDepth,
23196
- topLevel: false
23197
- }))) : child;
23738
+ value: nestedHierarchyValue
23739
+ }, child)));
23198
23740
  }))));
23199
23741
  });
23742
+ /**
23743
+ * Custom comparison function for React.memo
23744
+ * Only re-render TreeItem when relevant props change
23745
+ */
23746
+ function arePropsEqual(prevProps, nextProps) {
23747
+ // Check if itemId changed
23748
+ if (prevProps.itemId !== nextProps.itemId) {
23749
+ return false;
23750
+ }
23751
+ // Check if label changed
23752
+ if (prevProps.label !== nextProps.label) {
23753
+ return false;
23754
+ }
23755
+ // Check if disabled state changed
23756
+ if (prevProps.isDisabled !== nextProps.isDisabled) {
23757
+ return false;
23758
+ }
23759
+ // Check if icon changed
23760
+ if (prevProps.icon !== nextProps.icon) {
23761
+ return false;
23762
+ }
23763
+ // Check if additional content changed
23764
+ if (prevProps.additionalContent !== nextProps.additionalContent) {
23765
+ return false;
23766
+ }
23767
+ // Check if hover color changed
23768
+ if (prevProps.hoverColor !== nextProps.hoverColor) {
23769
+ return false;
23770
+ }
23771
+ // Check if children changed (for nested tree items)
23772
+ // Using type assertion since children comes from React.HTMLAttributes
23773
+ if (prevProps.children !== nextProps.children) {
23774
+ return false;
23775
+ }
23776
+ // Check if styles changed
23777
+ // Using type assertion since style comes from React.HTMLAttributes
23778
+ if (prevProps.style !== nextProps.style) {
23779
+ return false;
23780
+ }
23781
+ if (prevProps.labelStyle !== nextProps.labelStyle) {
23782
+ return false;
23783
+ }
23784
+ if (prevProps.treeItemStyles !== nextProps.treeItemStyles) {
23785
+ return false;
23786
+ }
23787
+ // All relevant props are equal, skip re-render
23788
+ return true;
23789
+ }
23790
+ /**
23791
+ * Memoized TreeItem component
23792
+ * Only re-renders when relevant props change, improving performance for large trees
23793
+ */
23794
+ var TreeItem = /*#__PURE__*/memo(TreeItemComponent, arePropsEqual);
23795
+
23796
+ /**
23797
+ * TreeView Reducer
23798
+ * Pure function that handles all state transitions
23799
+ *
23800
+ * State Transitions:
23801
+ * - SELECT_ITEM: Updates item selection based on selectable mode (single/multi)
23802
+ * - SELECT_ALL: Selects all items in multi-select mode
23803
+ * - CLEAR_ALL: Clears all selections
23804
+ * - TOGGLE_EXPAND: Toggles expansion state of one or more items
23805
+ * - EXPAND_ALL: Expands all expandable items
23806
+ * - COLLAPSE_ALL: Collapses all items
23807
+ * - SET_ITEMS: Replaces entire items array (used for initialization and updates)
23808
+ * - ADD_ITEM: Adds a new item to the tree
23809
+ * - UPDATE_ITEMS_DISABLED_STATE: Updates disabled state of items
23810
+ * - TRIGGER_ITEMS_UPDATE: Flags that items need updating (for showAll)
23811
+ * - COMPLETE_ITEMS_UPDATE: Clears the update flag
23812
+ */
23813
+ function treeViewReducer(state, action) {
23814
+ switch (action.type) {
23815
+ case 'SELECT_ITEM':
23816
+ {
23817
+ var _action$payload = action.payload,
23818
+ itemId = _action$payload.itemId,
23819
+ checkedStatus = _action$payload.checkedStatus,
23820
+ selectable = _action$payload.selectable,
23821
+ checkChildren = _action$payload.checkChildren,
23822
+ checkParents = _action$payload.checkParents,
23823
+ isTopLevelSelectable = _action$payload.isTopLevelSelectable;
23824
+ // Find the item to check if it's disabled or non-selectable
23825
+ var item = state.items.find(function (item) {
23826
+ return item.itemId === itemId;
23827
+ });
23828
+ if (item != null && item.isDisabled) {
23829
+ return state;
23830
+ }
23831
+ if (!isTopLevelSelectable && !(item != null && item.parentId) && selectable === 'multi') {
23832
+ return state;
23833
+ }
23834
+ var newItems;
23835
+ if (selectable === 'single') {
23836
+ newItems = selectSingle({
23837
+ items: state.items,
23838
+ itemId: itemId,
23839
+ checkedStatus: checkedStatus != null ? checkedStatus : IndeterminateCheckboxStatus.checked
23840
+ });
23841
+ } else if (selectable === 'multi') {
23842
+ newItems = toggleMulti({
23843
+ items: state.items,
23844
+ itemId: itemId,
23845
+ checkedStatus: checkedStatus,
23846
+ checkChildren: checkChildren,
23847
+ checkParents: checkParents,
23848
+ isTopLevelSelectable: isTopLevelSelectable
23849
+ });
23850
+ } else {
23851
+ return state;
23852
+ }
23853
+ // Only return new state if items actually changed
23854
+ if (newItems === state.items) {
23855
+ return state;
23856
+ }
23857
+ return _extends({}, state, {
23858
+ items: newItems
23859
+ });
23860
+ }
23861
+ case 'SELECT_ALL':
23862
+ {
23863
+ var _action$payload2 = action.payload,
23864
+ _checkChildren = _action$payload2.checkChildren,
23865
+ _checkParents = _action$payload2.checkParents,
23866
+ _isTopLevelSelectable = _action$payload2.isTopLevelSelectable;
23867
+ var _newItems = toggleAllMulti({
23868
+ items: state.items,
23869
+ checkedStatus: IndeterminateCheckboxStatus.checked,
23870
+ checkChildren: _checkChildren,
23871
+ checkParents: _checkParents,
23872
+ isTopLevelSelectable: _isTopLevelSelectable
23873
+ });
23874
+ return _extends({}, state, {
23875
+ items: _newItems
23876
+ });
23877
+ }
23878
+ case 'CLEAR_ALL':
23879
+ {
23880
+ var _action$payload3 = action.payload,
23881
+ _checkChildren2 = _action$payload3.checkChildren,
23882
+ _checkParents2 = _action$payload3.checkParents,
23883
+ _isTopLevelSelectable2 = _action$payload3.isTopLevelSelectable;
23884
+ var _newItems2 = toggleAllMulti({
23885
+ items: state.items,
23886
+ checkedStatus: IndeterminateCheckboxStatus.unchecked,
23887
+ checkChildren: _checkChildren2,
23888
+ checkParents: _checkParents2,
23889
+ isTopLevelSelectable: _isTopLevelSelectable2
23890
+ });
23891
+ return _extends({}, state, {
23892
+ items: _newItems2
23893
+ });
23894
+ }
23895
+ case 'TOGGLE_EXPAND':
23896
+ {
23897
+ var _itemId = action.payload.itemId;
23898
+ var updatedExpandedSet = new Set(state.expandedSet);
23899
+ if (Array.isArray(_itemId)) {
23900
+ _itemId.forEach(function (id) {
23901
+ return updatedExpandedSet.add(id);
23902
+ });
23903
+ } else if (_itemId === '') {
23904
+ updatedExpandedSet.clear();
23905
+ } else if (updatedExpandedSet.has(_itemId)) {
23906
+ updatedExpandedSet["delete"](_itemId);
23907
+ } else {
23908
+ updatedExpandedSet.add(_itemId);
23909
+ }
23910
+ return _extends({}, state, {
23911
+ expandedSet: updatedExpandedSet
23912
+ });
23913
+ }
23914
+ case 'EXPAND_ALL':
23915
+ {
23916
+ var expandableIds = action.payload.expandableIds;
23917
+ var _updatedExpandedSet = new Set(state.expandedSet);
23918
+ expandableIds.forEach(function (id) {
23919
+ return _updatedExpandedSet.add(id);
23920
+ });
23921
+ return _extends({}, state, {
23922
+ expandedSet: _updatedExpandedSet
23923
+ });
23924
+ }
23925
+ case 'COLLAPSE_ALL':
23926
+ {
23927
+ return _extends({}, state, {
23928
+ expandedSet: new Set()
23929
+ });
23930
+ }
23931
+ case 'SET_ITEMS':
23932
+ {
23933
+ var items = action.payload.items;
23934
+ // Only return new state if items actually changed
23935
+ if (items === state.items) {
23936
+ return state;
23937
+ }
23938
+ return _extends({}, state, {
23939
+ items: items
23940
+ });
23941
+ }
23942
+ case 'ADD_ITEM':
23943
+ {
23944
+ var _action$payload4 = action.payload,
23945
+ newItem = _action$payload4.newItem,
23946
+ _checkParents3 = _action$payload4.checkParents,
23947
+ _selectable = _action$payload4.selectable;
23948
+ var _newItems3 = state.items.map(function (item) {
23949
+ if (item.itemId === newItem.parentId) {
23950
+ item.hasOwnTreeItems = true;
23951
+ if (_checkParents3) {
23952
+ if (item.checkedStatus === IndeterminateCheckboxStatus.checked && newItem.checkedStatus !== IndeterminateCheckboxStatus.checked) {
23953
+ item.checkedStatus = IndeterminateCheckboxStatus.indeterminate;
23954
+ } else if (item.checkedStatus === IndeterminateCheckboxStatus.indeterminate && newItem.checkedStatus === IndeterminateCheckboxStatus.checked) {
23955
+ var allChildrenChecked = [].concat(state.items, [newItem]).filter(function (child) {
23956
+ return child.parentId === item.itemId;
23957
+ }).every(function (child) {
23958
+ return child.checkedStatus === IndeterminateCheckboxStatus.checked;
23959
+ });
23960
+ if (allChildrenChecked) {
23961
+ item.checkedStatus = IndeterminateCheckboxStatus.checked;
23962
+ }
23963
+ }
23964
+ }
23965
+ }
23966
+ return item;
23967
+ });
23968
+ if (newItem.checkedStatus === IndeterminateCheckboxStatus.checked && _selectable === 'single') {
23969
+ _newItems3.forEach(function (item) {
23970
+ item.checkedStatus = IndeterminateCheckboxStatus.unchecked;
23971
+ });
23972
+ }
23973
+ return _extends({}, state, {
23974
+ items: [].concat(_newItems3, [newItem])
23975
+ });
23976
+ }
23977
+ case 'UPDATE_ITEMS_DISABLED_STATE':
23978
+ {
23979
+ var updatedItems = action.payload.updatedItems;
23980
+ var hasChanges = false;
23981
+ var _newItems4 = state.items.map(function (prevItem) {
23982
+ var itemWithUpdatedDisabledState = updatedItems.find(function (item) {
23983
+ return item.itemId === prevItem.itemId;
23984
+ });
23985
+ if ((itemWithUpdatedDisabledState == null ? void 0 : itemWithUpdatedDisabledState.isDisabled) === (prevItem == null ? void 0 : prevItem.isDisabled)) {
23986
+ return prevItem;
23987
+ }
23988
+ hasChanges = true;
23989
+ return _extends({}, prevItem, {
23990
+ isDisabled: itemWithUpdatedDisabledState == null ? void 0 : itemWithUpdatedDisabledState.isDisabled
23991
+ });
23992
+ });
23993
+ // Only return new state if something actually changed
23994
+ if (!hasChanges) {
23995
+ return state;
23996
+ }
23997
+ return _extends({}, state, {
23998
+ items: _newItems4
23999
+ });
24000
+ }
24001
+ case 'TRIGGER_ITEMS_UPDATE':
24002
+ {
24003
+ return _extends({}, state, {
24004
+ itemsNeedUpdate: true
24005
+ });
24006
+ }
24007
+ case 'COMPLETE_ITEMS_UPDATE':
24008
+ {
24009
+ return _extends({}, state, {
24010
+ itemsNeedUpdate: false
24011
+ });
24012
+ }
24013
+ default:
24014
+ return state;
24015
+ }
24016
+ }
23200
24017
 
23201
24018
  function useTreeView(props) {
23202
24019
  var _props$selectable = props.selectable,
@@ -23216,8 +24033,9 @@ function useTreeView(props) {
23216
24033
  isTopLevelSelectable = _props$isTopLevelSele === void 0 ? true : _props$isTopLevelSele,
23217
24034
  expandIconStyles = props.expandIconStyles;
23218
24035
  var hasPreselectedItems = Boolean(preselectedItems);
23219
- var _React$useState = useState(function () {
23220
- return getInitialItems({
24036
+ // Initialize state with useReducer instead of multiple useState calls
24037
+ var _React$useReducer = useReducer(treeViewReducer, {
24038
+ items: getInitialItems({
23221
24039
  children: children,
23222
24040
  preselectedItems: preselectedItems,
23223
24041
  checkParents: checkParents,
@@ -23225,11 +24043,16 @@ function useTreeView(props) {
23225
24043
  selectable: selectable,
23226
24044
  isDisabled: isDisabled,
23227
24045
  isTopLevelSelectable: isTopLevelSelectable
23228
- });
24046
+ }),
24047
+ expandedSet: new Set(),
24048
+ itemsNeedUpdate: null
23229
24049
  }),
23230
- items = _React$useState[0],
23231
- setItems = _React$useState[1];
23232
- var _React$useState2 = useState(function () {
24050
+ state = _React$useReducer[0],
24051
+ dispatch = _React$useReducer[1];
24052
+ var items = state.items,
24053
+ expandedSet = state.expandedSet,
24054
+ itemsNeedUpdate = state.itemsNeedUpdate;
24055
+ var _React$useState = useState(function () {
23233
24056
  var initialItems = getInitialItems({
23234
24057
  children: children,
23235
24058
  preselectedItems: preselectedItems,
@@ -23243,7 +24066,7 @@ function useTreeView(props) {
23243
24066
  return item.icon;
23244
24067
  });
23245
24068
  }),
23246
- hasIcons = _React$useState2[0];
24069
+ hasIcons = _React$useState[0];
23247
24070
  var selectedItems = useMemo(function () {
23248
24071
  return items.filter(function (item) {
23249
24072
  return item.checkedStatus === IndeterminateCheckboxStatus.checked;
@@ -23278,23 +24101,29 @@ function useTreeView(props) {
23278
24101
  var prevPreselectedItemsRef = useRef(preselectedItems);
23279
24102
  var prevChildrenRef = useRef(children);
23280
24103
  var initializationRef = useRef(true);
23281
- // Used for showAll button
23282
- var _React$useState3 = useState(null),
23283
- itemsNeedUpdate = _React$useState3[0],
23284
- setItemsNeedUpdate = _React$useState3[1];
24104
+ var onSelectedItemChangeRef = useRef(onSelectedItemChange);
24105
+ // itemsNeedUpdate is now part of the reducer state
24106
+ useEffect(function () {
24107
+ onSelectedItemChangeRef.current = onSelectedItemChange;
24108
+ }, [onSelectedItemChange]);
23285
24109
  useEffect(function () {
23286
24110
  if (isEqualArrays(prevPreselectedItemsRef.current, preselectedItems)) {
23287
24111
  return;
23288
24112
  }
23289
- setItems(getInitialItems({
23290
- children: children,
23291
- preselectedItems: preselectedItems,
23292
- checkParents: checkParents,
23293
- checkChildren: checkChildren,
23294
- selectable: selectable,
23295
- isDisabled: isDisabled,
23296
- isTopLevelSelectable: isTopLevelSelectable
23297
- }));
24113
+ dispatch({
24114
+ type: 'SET_ITEMS',
24115
+ payload: {
24116
+ items: getInitialItems({
24117
+ children: children,
24118
+ preselectedItems: preselectedItems,
24119
+ checkParents: checkParents,
24120
+ checkChildren: checkChildren,
24121
+ selectable: selectable,
24122
+ isDisabled: isDisabled,
24123
+ isTopLevelSelectable: isTopLevelSelectable
24124
+ })
24125
+ }
24126
+ });
23298
24127
  prevPreselectedItemsRef.current = preselectedItems;
23299
24128
  }, [preselectedItems, checkParents, checkChildren, selectable, isDisabled, children, isTopLevelSelectable]);
23300
24129
  useEffect(function () {
@@ -23311,20 +24140,13 @@ function useTreeView(props) {
23311
24140
  isTopLevelSelectable: isTopLevelSelectable,
23312
24141
  items: items
23313
24142
  });
23314
- setItems(function (prevItems) {
23315
- return prevItems.map(function (prevItem) {
23316
- var itemWithUpdatedDisabledState = itemsWithUpdatedDisabledState.find(function (item) {
23317
- return item.itemId === prevItem.itemId;
23318
- });
23319
- if ((itemWithUpdatedDisabledState == null ? void 0 : itemWithUpdatedDisabledState.isDisabled) === (prevItem == null ? void 0 : prevItem.isDisabled)) {
23320
- return prevItem;
23321
- }
23322
- return _extends({}, prevItem, {
23323
- isDisabled: itemWithUpdatedDisabledState == null ? void 0 : itemWithUpdatedDisabledState.isDisabled
23324
- });
23325
- });
24143
+ dispatch({
24144
+ type: 'UPDATE_ITEMS_DISABLED_STATE',
24145
+ payload: {
24146
+ updatedItems: itemsWithUpdatedDisabledState
24147
+ }
23326
24148
  });
23327
- }, [checkChildren, checkParents, children, isDisabled, isTopLevelSelectable, preselectedItems, selectable]);
24149
+ }, [checkChildren, checkParents, children, isDisabled, isTopLevelSelectable, preselectedItems, selectable, items]);
23328
24150
  useEffect(function () {
23329
24151
  var isInitialization = initializationRef.current;
23330
24152
  initializationRef.current = false;
@@ -23349,120 +24171,110 @@ function useTreeView(props) {
23349
24171
  return;
23350
24172
  }
23351
24173
  prevSelectedItemsRef.current = nextSelectedItems;
23352
- onSelectedItemChange && onSelectedItemChange(nextSelectedItems);
23353
- }, [items, selectable, hasPreselectedItems, onSelectedItemChange]);
24174
+ onSelectedItemChangeRef.current && onSelectedItemChangeRef.current(nextSelectedItems);
24175
+ }, [items, selectable, hasPreselectedItems]);
23354
24176
  var selectItem = useCallback(function (_ref3) {
23355
24177
  var itemId = _ref3.itemId,
23356
24178
  checkedStatus = _ref3.checkedStatus;
23357
24179
  if (selectable === TreeViewSelectable.off) {
23358
24180
  return;
23359
24181
  }
23360
- var item = items.find(function (item) {
23361
- return item.itemId === itemId;
23362
- });
23363
- if (item != null && item.isDisabled) {
23364
- return;
23365
- }
23366
- if (!isTopLevelSelectable && !(item != null && item.parentId) && selectable === TreeViewSelectable.multi) {
23367
- return;
23368
- }
23369
- setItems(function (prevItems) {
23370
- if (selectable === TreeViewSelectable.single) {
23371
- return selectSingle({
23372
- items: prevItems,
23373
- itemId: itemId,
23374
- checkedStatus: checkedStatus != null ? checkedStatus : IndeterminateCheckboxStatus.checked
23375
- });
23376
- }
23377
- if (selectable === TreeViewSelectable.multi) {
23378
- return toggleMulti({
23379
- items: prevItems,
23380
- itemId: itemId,
23381
- checkedStatus: checkedStatus,
23382
- checkChildren: checkChildren,
23383
- checkParents: checkParents,
23384
- isTopLevelSelectable: isTopLevelSelectable
23385
- });
24182
+ dispatch({
24183
+ type: 'SELECT_ITEM',
24184
+ payload: {
24185
+ itemId: itemId,
24186
+ checkedStatus: checkedStatus,
24187
+ selectable: selectable,
24188
+ checkChildren: checkChildren,
24189
+ checkParents: checkParents,
24190
+ isTopLevelSelectable: isTopLevelSelectable
23386
24191
  }
23387
- return prevItems;
23388
24192
  });
23389
- }, [selectable, checkChildren, checkParents, items, isTopLevelSelectable]);
24193
+ }, [selectable, checkChildren, checkParents, isTopLevelSelectable]);
23390
24194
  var showMore = useCallback(function (fromSelectAll) {
23391
24195
  if (fromSelectAll === void 0) {
23392
24196
  fromSelectAll = false;
23393
24197
  }
23394
24198
  if (fromSelectAll) {
23395
- setItems(function () {
23396
- return toggleAllMulti({
23397
- items: items,
23398
- checkedStatus: IndeterminateCheckboxStatus.checked,
24199
+ dispatch({
24200
+ type: 'SELECT_ALL',
24201
+ payload: {
23399
24202
  checkChildren: checkChildren,
23400
24203
  checkParents: checkParents,
23401
24204
  isTopLevelSelectable: isTopLevelSelectable
23402
- });
24205
+ }
23403
24206
  });
23404
24207
  } else {
23405
- setItemsNeedUpdate(true);
24208
+ dispatch({
24209
+ type: 'TRIGGER_ITEMS_UPDATE'
24210
+ });
23406
24211
  }
23407
- }, [items, checkChildren, checkParents, isTopLevelSelectable]);
24212
+ }, [checkChildren, checkParents, isTopLevelSelectable]);
23408
24213
  var showLess = useCallback(function () {
23409
- setItems(getInitialItems({
23410
- children: children,
23411
- preselectedItems: selectedItems,
23412
- checkParents: checkParents,
23413
- checkChildren: checkChildren,
23414
- selectable: selectable,
23415
- isDisabled: isDisabled,
23416
- isTopLevelSelectable: isTopLevelSelectable
23417
- }));
24214
+ dispatch({
24215
+ type: 'SET_ITEMS',
24216
+ payload: {
24217
+ items: getInitialItems({
24218
+ children: children,
24219
+ preselectedItems: selectedItems,
24220
+ checkParents: checkParents,
24221
+ checkChildren: checkChildren,
24222
+ selectable: selectable,
24223
+ isDisabled: isDisabled,
24224
+ isTopLevelSelectable: isTopLevelSelectable
24225
+ })
24226
+ }
24227
+ });
23418
24228
  }, [children, selectedItems, checkParents, checkChildren, selectable, isDisabled, isTopLevelSelectable]);
23419
24229
  var selectAll = useCallback(function () {
23420
24230
  if ([TreeViewSelectable.single, TreeViewSelectable.off].includes(selectable) || isDisabled) {
23421
24231
  return;
23422
24232
  }
23423
- setItems(function () {
23424
- return toggleAllMulti({
23425
- items: items,
23426
- checkedStatus: IndeterminateCheckboxStatus.checked,
24233
+ dispatch({
24234
+ type: 'SELECT_ALL',
24235
+ payload: {
23427
24236
  checkChildren: checkChildren,
23428
24237
  checkParents: checkParents,
23429
24238
  isTopLevelSelectable: isTopLevelSelectable
23430
- });
24239
+ }
23431
24240
  });
23432
- }, [selectable, isDisabled, items, checkChildren, checkParents, isTopLevelSelectable]);
24241
+ }, [selectable, isDisabled, checkChildren, checkParents, isTopLevelSelectable]);
23433
24242
  var clearAll = useCallback(function () {
23434
24243
  if (isDisabled) {
23435
24244
  return;
23436
24245
  }
23437
- setItems(function () {
23438
- return toggleAllMulti({
23439
- items: items,
23440
- checkedStatus: IndeterminateCheckboxStatus.unchecked,
24246
+ dispatch({
24247
+ type: 'CLEAR_ALL',
24248
+ payload: {
23441
24249
  checkChildren: checkChildren,
23442
24250
  checkParents: checkParents,
23443
24251
  isTopLevelSelectable: isTopLevelSelectable
23444
- });
24252
+ }
23445
24253
  });
23446
- }, [isDisabled, items, checkChildren, checkParents, isTopLevelSelectable]);
24254
+ }, [isDisabled, checkChildren, checkParents, isTopLevelSelectable]);
23447
24255
  var handleExpandedChange = useCallback(function (event, itemId) {
23448
- setExpandedSet(function (prevExpandedSet) {
23449
- var updatedExpandedSet = new Set(prevExpandedSet);
23450
- if (Array.isArray(itemId)) {
23451
- itemId.forEach(function (id) {
23452
- return updatedExpandedSet.add(id);
23453
- });
23454
- } else if (itemId === '') {
23455
- updatedExpandedSet.clear();
23456
- } else if (updatedExpandedSet.has(itemId)) {
23457
- updatedExpandedSet["delete"](itemId);
23458
- } else {
23459
- updatedExpandedSet.add(itemId);
24256
+ dispatch({
24257
+ type: 'TOGGLE_EXPAND',
24258
+ payload: {
24259
+ itemId: itemId
23460
24260
  }
23461
- var expandedItemsArray = Array.from(updatedExpandedSet);
23462
- onExpandedChange && typeof onExpandedChange === 'function' && onExpandedChange(event, expandedItemsArray);
23463
- return updatedExpandedSet;
23464
24261
  });
23465
- }, [onExpandedChange]);
24262
+ // Calculate the new expanded set for the callback
24263
+ var updatedExpandedSet = new Set(expandedSet);
24264
+ if (Array.isArray(itemId)) {
24265
+ itemId.forEach(function (id) {
24266
+ return updatedExpandedSet.add(id);
24267
+ });
24268
+ } else if (itemId === '') {
24269
+ updatedExpandedSet.clear();
24270
+ } else if (updatedExpandedSet.has(itemId)) {
24271
+ updatedExpandedSet["delete"](itemId);
24272
+ } else {
24273
+ updatedExpandedSet.add(itemId);
24274
+ }
24275
+ var expandedItemsArray = Array.from(updatedExpandedSet);
24276
+ onExpandedChange && typeof onExpandedChange === 'function' && onExpandedChange(event, expandedItemsArray);
24277
+ }, [onExpandedChange, expandedSet]);
23466
24278
  var expandAll = useCallback(function () {
23467
24279
  var expandableIds = items.reduce(function (ids, item) {
23468
24280
  if (item.hasOwnTreeItems) {
@@ -23470,53 +24282,50 @@ function useTreeView(props) {
23470
24282
  }
23471
24283
  return ids;
23472
24284
  }, []);
24285
+ dispatch({
24286
+ type: 'EXPAND_ALL',
24287
+ payload: {
24288
+ expandableIds: expandableIds
24289
+ }
24290
+ });
23473
24291
  var syntheticEvent = {};
23474
- handleExpandedChange(syntheticEvent, expandableIds);
23475
- }, [handleExpandedChange, items]);
24292
+ onExpandedChange && typeof onExpandedChange === 'function' && onExpandedChange(syntheticEvent, expandableIds);
24293
+ }, [items, onExpandedChange]);
23476
24294
  var collapseAll = useCallback(function () {
24295
+ dispatch({
24296
+ type: 'COLLAPSE_ALL'
24297
+ });
23477
24298
  var syntheticEvent = {};
23478
- handleExpandedChange(syntheticEvent, '');
23479
- }, [handleExpandedChange]);
24299
+ onExpandedChange && typeof onExpandedChange === 'function' && onExpandedChange(syntheticEvent, []);
24300
+ }, [onExpandedChange]);
23480
24301
  var addItem = useCallback(function (newItem) {
23481
- var newItems = items.map(function (item) {
23482
- if (item.itemId === newItem.parentId) {
23483
- item.hasOwnTreeItems = true;
23484
- if (checkParents) {
23485
- if (item.checkedStatus === IndeterminateCheckboxStatus.checked && newItem.checkedStatus !== IndeterminateCheckboxStatus.checked) {
23486
- item.checkedStatus = IndeterminateCheckboxStatus.indeterminate;
23487
- } else if (item.checkedStatus === IndeterminateCheckboxStatus.indeterminate && newItem.checkedStatus === IndeterminateCheckboxStatus.checked) {
23488
- var allChildrenChecked = [].concat(items, [newItem]).filter(function (child) {
23489
- return child.parentId === item.itemId;
23490
- }).every(function (child) {
23491
- return child.checkedStatus === IndeterminateCheckboxStatus.checked;
23492
- });
23493
- if (allChildrenChecked) {
23494
- item.checkedStatus = IndeterminateCheckboxStatus.checked;
23495
- }
23496
- }
23497
- }
24302
+ dispatch({
24303
+ type: 'ADD_ITEM',
24304
+ payload: {
24305
+ newItem: newItem,
24306
+ checkParents: checkParents,
24307
+ selectable: selectable
23498
24308
  }
23499
- return item;
23500
24309
  });
23501
- if (newItem.checkedStatus === IndeterminateCheckboxStatus.checked && selectable === TreeViewSelectable.single) {
23502
- newItems.forEach(function (item) {
23503
- item.checkedStatus = IndeterminateCheckboxStatus.unchecked;
23504
- });
23505
- }
23506
- var updatedItems = [].concat(newItems, [newItem]);
24310
+ // If the item has a parent, we need to reinitialize items to handle checkChildren logic
23507
24311
  if (newItem.parentId) {
23508
- setItems(getInitialItems({
23509
- children: children,
23510
- preselectedItems: selectedItems,
23511
- checkParents: checkParents,
23512
- checkChildren: false,
23513
- selectable: selectable,
23514
- isDisabled: isDisabled,
23515
- isTopLevelSelectable: isTopLevelSelectable,
23516
- items: updatedItems
23517
- }));
23518
- } else {
23519
- setItems(updatedItems);
24312
+ // We need to get the updated items after ADD_ITEM dispatch
24313
+ // This is a limitation of the current approach - we'll handle it in the next effect
24314
+ dispatch({
24315
+ type: 'SET_ITEMS',
24316
+ payload: {
24317
+ items: getInitialItems({
24318
+ children: children,
24319
+ preselectedItems: selectedItems,
24320
+ checkParents: checkParents,
24321
+ checkChildren: false,
24322
+ selectable: selectable,
24323
+ isDisabled: isDisabled,
24324
+ isTopLevelSelectable: isTopLevelSelectable,
24325
+ items: [].concat(items, [newItem])
24326
+ })
24327
+ }
24328
+ });
23520
24329
  }
23521
24330
  }, [checkParents, children, isDisabled, isTopLevelSelectable, items, selectable, selectedItems]);
23522
24331
  useEffect(function () {
@@ -23535,112 +24344,259 @@ function useTreeView(props) {
23535
24344
  }, [selectItem, selectAll, clearAll, showMore, showLess, expandAll, collapseAll, addItem, apiRef]);
23536
24345
  useEffect(function () {
23537
24346
  if (itemsNeedUpdate) {
23538
- setItems(getInitialItems({
23539
- children: children,
23540
- preselectedItems: selectedItems,
23541
- checkParents: checkParents,
23542
- checkChildren: checkChildren,
23543
- selectable: selectable,
23544
- isDisabled: isDisabled,
23545
- isTopLevelSelectable: isTopLevelSelectable
23546
- }));
24347
+ dispatch({
24348
+ type: 'SET_ITEMS',
24349
+ payload: {
24350
+ items: getInitialItems({
24351
+ children: children,
24352
+ preselectedItems: selectedItems,
24353
+ checkParents: checkParents,
24354
+ checkChildren: checkChildren,
24355
+ selectable: selectable,
24356
+ isDisabled: isDisabled,
24357
+ isTopLevelSelectable: isTopLevelSelectable
24358
+ })
24359
+ }
24360
+ });
23547
24361
  prevChildrenRef.current = children;
23548
- setItemsNeedUpdate(false);
24362
+ dispatch({
24363
+ type: 'COMPLETE_ITEMS_UPDATE'
24364
+ });
23549
24365
  }
23550
24366
  }, [itemsNeedUpdate, children, selectedItems, checkParents, checkChildren, selectable, isDisabled, isTopLevelSelectable]);
23551
24367
  var _useDescendants = useDescendants(),
23552
24368
  treeItemRefArray = _useDescendants[0],
23553
24369
  registerTreeItem = _useDescendants[1];
23554
- var _React$useState4 = useState(new Set(initialExpandedItems)),
23555
- expandedSet = _React$useState4[0],
23556
- setExpandedSet = _React$useState4[1];
23557
- var contextValue = {
23558
- hasIcons: hasIcons,
23559
- itemToFocus: itemToFocus,
23560
- onSelectedItemChange: onSelectedItemChange,
23561
- onExpandedChange: onExpandedChange,
23562
- selectable: selectable,
23563
- selectedItems: selectedItems,
23564
- initialExpandedItems: initialExpandedItems,
23565
- treeItemRefArray: treeItemRefArray,
23566
- registerTreeItem: registerTreeItem,
23567
- checkChildren: checkChildren,
23568
- checkParents: checkParents,
23569
- items: items,
23570
- selectItem: selectItem,
23571
- handleExpandedChange: handleExpandedChange,
23572
- expandedSet: expandedSet,
23573
- expandIconStyles: expandIconStyles,
23574
- isTopLevelSelectable: isTopLevelSelectable
23575
- };
24370
+ // Initialize expandedSet with initialExpandedItems
24371
+ useEffect(function () {
24372
+ if (initialExpandedItems && initialExpandedItems.length > 0) {
24373
+ dispatch({
24374
+ type: 'EXPAND_ALL',
24375
+ payload: {
24376
+ expandableIds: initialExpandedItems
24377
+ }
24378
+ });
24379
+ }
24380
+ // eslint-disable-next-line react-hooks/exhaustive-deps
24381
+ }, []); // Only run on mount
24382
+ // Split context values for reduced re-render scope
24383
+ var selectionContextValue = useMemo(function () {
24384
+ return {
24385
+ items: items,
24386
+ selectedItems: selectedItems,
24387
+ selectItem: selectItem,
24388
+ onSelectedItemChange: onSelectedItemChange,
24389
+ selectable: selectable,
24390
+ itemToFocus: itemToFocus
24391
+ };
24392
+ }, [items, selectedItems, selectItem, onSelectedItemChange, selectable, itemToFocus]);
24393
+ var expansionContextValue = useMemo(function () {
24394
+ return {
24395
+ expandedSet: expandedSet,
24396
+ handleExpandedChange: handleExpandedChange,
24397
+ onExpandedChange: onExpandedChange,
24398
+ initialExpandedItems: initialExpandedItems
24399
+ };
24400
+ }, [expandedSet, handleExpandedChange, onExpandedChange, initialExpandedItems]);
24401
+ var configContextValue = useMemo(function () {
24402
+ return {
24403
+ hasIcons: hasIcons,
24404
+ selectable: selectable,
24405
+ checkParents: checkParents,
24406
+ checkChildren: checkChildren,
24407
+ isTopLevelSelectable: isTopLevelSelectable,
24408
+ expandIconStyles: expandIconStyles,
24409
+ registerTreeItem: registerTreeItem,
24410
+ treeItemRefArray: treeItemRefArray
24411
+ };
24412
+ }, [hasIcons, selectable, checkParents, checkChildren, isTopLevelSelectable, expandIconStyles, registerTreeItem, treeItemRefArray]);
23576
24413
  return {
23577
- contextValue: contextValue
24414
+ selectionContextValue: selectionContextValue,
24415
+ expansionContextValue: expansionContextValue,
24416
+ configContextValue: configContextValue
23578
24417
  };
23579
24418
  }
23580
24419
 
23581
- var _excluded$1M = ["ariaLabel", "ariaLabelledBy", "children", "isInverse", "onExpandedChange", "onSelectedItemChange", "selectable", "testId", "apiRef"];
24420
+ var _excluded$1M = ["ariaLabel", "ariaLabelledBy", "children", "isInverse", "onExpandedChange", "onSelectedItemChange", "selectable", "testId", "apiRef", "enableVirtualization", "estimateSize", "overscan"];
24421
+ function _EMOTION_STRINGIFIED_CSS_ERROR__$H() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
23582
24422
  var StyledTreeView = /*#__PURE__*/_styled("ul", {
23583
- target: "e1tyeayj0",
24423
+ target: "e1tyeayj2",
23584
24424
  label: "StyledTreeView"
23585
24425
  })("padding:0;margin:0;color:", function (props) {
23586
24426
  return props.isInverse ? props.theme.colors.neutral100 : props.theme.colors.neutral;
23587
- }, ";ul{padding:0;margin:0;li{margin:0;}}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVWaWV3LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTaUMiLCJmaWxlIjoiVHJlZVZpZXcudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtIH0gZnJvbSAnLi9UcmVlSXRlbSc7XHJcbmltcG9ydCB7IFRyZWVWaWV3Q29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IHVzZVRyZWVJdGVtIH0gZnJvbSAnLi91c2VUcmVlSXRlbSc7XHJcbmltcG9ydCB7IHVzZVRyZWVWaWV3IH0gZnJvbSAnLi91c2VUcmVlVmlldyc7XHJcbmltcG9ydCB7IEludmVyc2VDb250ZXh0LCB1c2VJc0ludmVyc2UgfSBmcm9tICcuLi8uLi9pbnZlcnNlJztcclxuaW1wb3J0IHsgVGhlbWVDb250ZXh0IH0gZnJvbSAnLi4vLi4vdGhlbWUvVGhlbWVDb250ZXh0JztcclxuY29uc3QgU3R5bGVkVHJlZVZpZXcgPSBzdHlsZWQudWwgYFxuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMFxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbH07XG4gIHVsIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBsaSB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuICB9XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZVZpZXcgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFyaWFMYWJlbCwgYXJpYUxhYmVsbGVkQnksIGNoaWxkcmVuLCBpc0ludmVyc2U6IGlzSW52ZXJzZVByb3AsIG9uRXhwYW5kZWRDaGFuZ2UsIG9uU2VsZWN0ZWRJdGVtQ2hhbmdlLCBzZWxlY3RhYmxlLCB0ZXN0SWQsIGFwaVJlZiwgLi4ucmVzdCB9ID0gcHJvcHM7XHJcbiAgICBjb25zdCB0aGVtZSA9IFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KTtcclxuICAgIGNvbnN0IGlzSW52ZXJzZSA9IHVzZUlzSW52ZXJzZShpc0ludmVyc2VQcm9wKTtcclxuICAgIGNvbnN0IHsgY29udGV4dFZhbHVlIH0gPSB1c2VUcmVlVmlldyhwcm9wcyk7XHJcbiAgICB1c2VUcmVlSXRlbSh7IGxhYmVsOiBhcmlhTGFiZWwsIGl0ZW1JZDogJycgfSwgcmVmKTtcclxuICAgIGxldCB0cmVlSXRlbUluZGV4ID0gMDtcclxuICAgIGNvbnN0IGludmVyc2VDb250ZXh0VmFsdWUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7IGlzSW52ZXJzZSB9KSwgW2lzSW52ZXJzZV0pO1xyXG4gICAgY29uc3QgcHJvY2Vzc2VkQ2hpbGRyZW4gPSBSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sIGNoaWxkID0+IHtcclxuICAgICAgICBpZiAoIVJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IFRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRyZWVJdGVtQ2hpbGQgPSBjaGlsZDtcclxuICAgICAgICAgICAgY29uc3QgdHJlZUl0ZW1Qcm9wcyA9IHtcclxuICAgICAgICAgICAgICAgIGluZGV4OiB0cmVlSXRlbUluZGV4LFxyXG4gICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IDAsXHJcbiAgICAgICAgICAgICAgICBpdGVtRGVwdGg6IDAsXHJcbiAgICAgICAgICAgICAgICB0b3BMZXZlbDogdHJ1ZSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc2VkSXRlbSA9IFJlYWN0LmNsb25lRWxlbWVudCh0cmVlSXRlbUNoaWxkLCB7XHJcbiAgICAgICAgICAgICAgICAuLi50cmVlSXRlbVByb3BzLFxyXG4gICAgICAgICAgICAgICAga2V5OiBgdHJlZS1pdGVtLSR7dHJlZUl0ZW1JbmRleH1gLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdHJlZUl0ZW1JbmRleCsrO1xyXG4gICAgICAgICAgICByZXR1cm4gcHJvY2Vzc2VkSXRlbTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChJbnZlcnNlQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogaW52ZXJzZUNvbnRleHRWYWx1ZSB9LFxyXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZVZpZXdDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb250ZXh0VmFsdWUgfSxcclxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRUcmVlVmlldywgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwgeyBcImFyaWEtbGFiZWxcIjogYXJpYUxhYmVsLCBcImFyaWEtbGFiZWxsZWRieVwiOiBhcmlhTGFiZWxsZWRCeSwgXCJhcmlhLW11bHRpc2VsZWN0YWJsZVwiOiBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGksIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgcmVmOiByZWYsIHJvbGU6IFwidHJlZVwiLCB0aGVtZTogdGhlbWUgfSksIHByb2Nlc3NlZENoaWxkcmVuKSkpKTtcclxufSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRyZWVWaWV3LmpzLm1hcCJdfQ== */"));
23588
- var TreeView = /*#__PURE__*/forwardRef(function (props, ref) {
24427
+ }, ";position:", function (props) {
24428
+ return props.isVirtualized ? 'relative' : 'static';
24429
+ }, ";ul{padding:0;margin:0;li{margin:0;}}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVWaWV3LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFhaUMiLCJmaWxlIjoiVHJlZVZpZXcudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHVzZVZpcnR1YWwgfSBmcm9tICdyZWFjdC12aXJ0dWFsJztcclxuaW1wb3J0IHsgVHJlZUl0ZW0gfSBmcm9tICcuL1RyZWVJdGVtJztcclxuaW1wb3J0IHsgVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0IH0gZnJvbSAnLi9UcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0NvbmZpZ0NvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3Q29uZmlnQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdFeHBhbnNpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld1NlbGVjdGlvbkNvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld1NlbGVjdGFibGUgfSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgdXNlVHJlZUl0ZW0gfSBmcm9tICcuL3VzZVRyZWVJdGVtJztcclxuaW1wb3J0IHsgdXNlVHJlZVZpZXcgfSBmcm9tICcuL3VzZVRyZWVWaWV3JztcclxuaW1wb3J0IHsgSW52ZXJzZUNvbnRleHQsIHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5jb25zdCBTdHlsZWRUcmVlVmlldyA9IHN0eWxlZC51bCBgXG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMTAwXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsfTtcbiAgcG9zaXRpb246ICR7cHJvcHMgPT4gKHByb3BzLmlzVmlydHVhbGl6ZWQgPyAncmVsYXRpdmUnIDogJ3N0YXRpYycpfTtcbiAgdWwge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpIHtcbiAgICAgIG1hcmdpbjogMDtcbiAgICB9XG4gIH1cbmA7XHJcbmNvbnN0IFZpcnR1YWxDb250YWluZXIgPSBzdHlsZWQuZGl2IGBcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XHJcbmNvbnN0IFZpcnR1YWxJdGVtID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLmhlaWdodH1weDtcbiAgdHJhbnNmb3JtOiAke3Byb3BzID0+IHByb3BzLnRyYW5zZm9ybX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZVZpZXcgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFyaWFMYWJlbCwgYXJpYUxhYmVsbGVkQnksIGNoaWxkcmVuLCBpc0ludmVyc2U6IGlzSW52ZXJzZVByb3AsIG9uRXhwYW5kZWRDaGFuZ2UsIG9uU2VsZWN0ZWRJdGVtQ2hhbmdlLCBzZWxlY3RhYmxlLCB0ZXN0SWQsIGFwaVJlZiwgZW5hYmxlVmlydHVhbGl6YXRpb24gPSBmYWxzZSwgZXN0aW1hdGVTaXplID0gNDAsIG92ZXJzY2FuID0gNSwgLi4ucmVzdCB9ID0gcHJvcHM7XHJcbiAgICBjb25zdCB0aGVtZSA9IFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KTtcclxuICAgIGNvbnN0IGlzSW52ZXJzZSA9IHVzZUlzSW52ZXJzZShpc0ludmVyc2VQcm9wKTtcclxuICAgIGNvbnN0IHsgc2VsZWN0aW9uQ29udGV4dFZhbHVlLCBleHBhbnNpb25Db250ZXh0VmFsdWUsIGNvbmZpZ0NvbnRleHRWYWx1ZSB9ID0gdXNlVHJlZVZpZXcocHJvcHMpO1xyXG4gICAgdXNlVHJlZUl0ZW0oeyBsYWJlbDogYXJpYUxhYmVsLCBpdGVtSWQ6ICcnIH0sIHJlZik7XHJcbiAgICBjb25zdCBpbnZlcnNlQ29udGV4dFZhbHVlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoeyBpc0ludmVyc2UgfSksIFtpc0ludmVyc2VdKTtcclxuICAgIGNvbnN0IHBhcmVudFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcclxuICAgIC8vIEZsYXR0ZW4gdHJlZSBzdHJ1Y3R1cmUgZm9yIHZpcnR1YWxpemF0aW9uXHJcbiAgICBjb25zdCBmbGF0dGVuZWRJdGVtcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmICghZW5hYmxlVmlydHVhbGl6YXRpb24pXHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICBjb25zdCBpdGVtcyA9IFtdO1xyXG4gICAgICAgIGNvbnN0IGZsYXR0ZW4gPSAoY2hpbGRyZW5Ub0ZsYXR0ZW4sIGRlcHRoID0gMCwgcGFyZW50SW5kZXggPSAwKSA9PiB7XHJcbiAgICAgICAgICAgIFJlYWN0LkNoaWxkcmVuLmZvckVhY2goY2hpbGRyZW5Ub0ZsYXR0ZW4sIChjaGlsZCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGQpIHx8IGNoaWxkLnR5cGUgIT09IFRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUtleSA9IGB0cmVlLWl0ZW0tJHtkZXB0aH0tJHtpbmRleH0tJHtpdGVtcy5sZW5ndGh9YDtcclxuICAgICAgICAgICAgICAgIC8vIENsb25lIHRoZSBjaGlsZCB3aXRob3V0IGl0cyBjaGlsZHJlbiB0byBwcmV2ZW50IGRvdWJsZSByZW5kZXJpbmdcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkV2l0aG91dE5lc3RlZCA9IFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLmNoaWxkLnByb3BzLFxyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZDogY2hpbGRXaXRob3V0TmVzdGVkLFxyXG4gICAgICAgICAgICAgICAgICAgIGRlcHRoLFxyXG4gICAgICAgICAgICAgICAgICAgIGluZGV4LFxyXG4gICAgICAgICAgICAgICAgICAgIGtleTogaXRlbUtleSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgaXRlbSBoYXMgY2hpbGRyZW4gYW5kIGlzIGV4cGFuZGVkXHJcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtSWQgPSBjaGlsZC5wcm9wcy5pdGVtSWQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpc0V4cGFuZGVkID0gZXhwYW5zaW9uQ29udGV4dFZhbHVlLmV4cGFuZGVkU2V0Py5oYXMoaXRlbUlkKTtcclxuICAgICAgICAgICAgICAgIGlmIChpc0V4cGFuZGVkICYmIGNoaWxkLnByb3BzLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZmxhdHRlbihjaGlsZC5wcm9wcy5jaGlsZHJlbiwgZGVwdGggKyAxLCBpbmRleCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgZmxhdHRlbihjaGlsZHJlbik7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xyXG4gICAgfSwgW2NoaWxkcmVuLCBlbmFibGVWaXJ0dWFsaXphdGlvbiwgZXhwYW5zaW9uQ29udGV4dFZhbHVlLmV4cGFuZGVkU2V0XSk7XHJcbiAgICAvLyBTZXR1cCB2aXJ0dWFsaXplclxyXG4gICAgY29uc3Qgcm93VmlydHVhbGl6ZXIgPSB1c2VWaXJ0dWFsKHtcclxuICAgICAgICBzaXplOiBmbGF0dGVuZWRJdGVtcy5sZW5ndGgsXHJcbiAgICAgICAgcGFyZW50UmVmLFxyXG4gICAgICAgIGVzdGltYXRlU2l6ZTogUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4gZXN0aW1hdGVTaXplLCBbZXN0aW1hdGVTaXplXSksXHJcbiAgICAgICAgb3ZlcnNjYW4sXHJcbiAgICB9KTtcclxuICAgIC8vIFByb2Nlc3MgY2hpbGRyZW4gd2l0aG91dCBjbG9uZUVsZW1lbnQgLSB1c2UgY29udGV4dCBpbnN0ZWFkXHJcbiAgICBjb25zdCBwcm9jZXNzZWRDaGlsZHJlbiA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChlbmFibGVWaXJ0dWFsaXphdGlvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDsgLy8gSGFuZGxlZCBieSB2aXJ0dWFsaXplciBiZWxvd1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdHJlZUl0ZW1JbmRleCA9IDA7XHJcbiAgICAgICAgcmV0dXJuIFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgY2hpbGQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIVJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IFRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0cmVlSXRlbUluZGV4Kys7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBoaWVyYXJjaHlWYWx1ZSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBkZXB0aDogMCxcclxuICAgICAgICAgICAgICAgICAgICBwYXJlbnREZXB0aDogMCxcclxuICAgICAgICAgICAgICAgICAgICBpc1RvcExldmVsOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIGluZGV4OiBjdXJyZW50SW5kZXgsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgLy8gV3JhcCBpbiBjb250ZXh0IHByb3ZpZGVyIGluc3RlYWQgb2YgY2xvbmluZ1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dC5Qcm92aWRlciwgeyBrZXk6IGB0cmVlLWl0ZW0tJHtjdXJyZW50SW5kZXh9YCwgdmFsdWU6IGhpZXJhcmNoeVZhbHVlIH0sIGNoaWxkKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9LCBbY2hpbGRyZW4sIGVuYWJsZVZpcnR1YWxpemF0aW9uXSk7XHJcbiAgICBjb25zdCB2aXJ0dWFsSXRlbXMgPSBlbmFibGVWaXJ0dWFsaXphdGlvblxyXG4gICAgICAgID8gcm93VmlydHVhbGl6ZXIudmlydHVhbEl0ZW1zXHJcbiAgICAgICAgOiBbXTtcclxuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChJbnZlcnNlQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogaW52ZXJzZUNvbnRleHRWYWx1ZSB9LFxyXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBzZWxlY3Rpb25Db250ZXh0VmFsdWUgfSxcclxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IGV4cGFuc2lvbkNvbnRleHRWYWx1ZSB9LFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUcmVlVmlld0NvbmZpZ0NvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IGNvbmZpZ0NvbnRleHRWYWx1ZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkVHJlZVZpZXcsIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgXCJhcmlhLWxhYmVsXCI6IGFyaWFMYWJlbCwgXCJhcmlhLWxhYmVsbGVkYnlcIjogYXJpYUxhYmVsbGVkQnksIFwiYXJpYS1tdWx0aXNlbGVjdGFibGVcIjogc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLm11bHRpLCBcImRhdGEtdGVzdGlkXCI6IHRlc3RJZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIGlzVmlydHVhbGl6ZWQ6IGVuYWJsZVZpcnR1YWxpemF0aW9uLCByZWY6IG1lcmdlZFJlZnMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWYobWVyZ2VkUmVmcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZWYpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWYuY3VycmVudCA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZFJlZnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRSZWYuY3VycmVudCA9IG1lcmdlZFJlZnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHJvbGU6IFwidHJlZVwiLCB0aGVtZTogdGhlbWUsIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5yZXN0LnN0eWxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKGVuYWJsZVZpcnR1YWxpemF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGhlaWdodDogJzQwMHB4Jywgb3ZlcmZsb3c6ICdhdXRvJyB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gfSksIGVuYWJsZVZpcnR1YWxpemF0aW9uID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVmlydHVhbENvbnRhaW5lciwgeyBzdHlsZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBgJHtyb3dWaXJ0dWFsaXplci50b3RhbFNpemV9cHhgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IH0sIHZpcnR1YWxJdGVtcy5tYXAodmlydHVhbEl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gZmxhdHRlbmVkSXRlbXNbdmlydHVhbEl0ZW0uaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoaWVyYXJjaHlWYWx1ZSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoOiBpdGVtLmRlcHRoLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IE1hdGgubWF4KDAsIGl0ZW0uZGVwdGggLSAxKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVG9wTGV2ZWw6IGl0ZW0uZGVwdGggPT09IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaXRlbS5pbmRleCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFZpcnR1YWxJdGVtLCB7IGtleTogaXRlbS5rZXksIGhlaWdodDogdmlydHVhbEl0ZW0uc2l6ZSwgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWSgke3ZpcnR1YWxJdGVtLnN0YXJ0fXB4KWAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBoaWVyYXJjaHlWYWx1ZSB9LCBpdGVtLmNoaWxkKSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pKSkgOiAocHJvY2Vzc2VkQ2hpbGRyZW4pKSkpKSkpO1xyXG59KTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VHJlZVZpZXcuanMubWFwIl19 */"));
24430
+ var VirtualContainer = /*#__PURE__*/_styled("div", {
24431
+ target: "e1tyeayj1",
24432
+ label: "VirtualContainer"
24433
+ })(process.env.NODE_ENV === "production" ? {
24434
+ name: "n48rgu",
24435
+ styles: "width:100%;position:relative"
24436
+ } : {
24437
+ name: "n48rgu",
24438
+ styles: "width:100%;position:relative/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVWaWV3LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE0Qm9DIiwiZmlsZSI6IlRyZWVWaWV3LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xyXG5pbXBvcnQgeyB1c2VWaXJ0dWFsIH0gZnJvbSAncmVhY3QtdmlydHVhbCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtIH0gZnJvbSAnLi9UcmVlSXRlbSc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IHVzZVRyZWVJdGVtIH0gZnJvbSAnLi91c2VUcmVlSXRlbSc7XHJcbmltcG9ydCB7IHVzZVRyZWVWaWV3IH0gZnJvbSAnLi91c2VUcmVlVmlldyc7XHJcbmltcG9ydCB7IEludmVyc2VDb250ZXh0LCB1c2VJc0ludmVyc2UgfSBmcm9tICcuLi8uLi9pbnZlcnNlJztcclxuaW1wb3J0IHsgVGhlbWVDb250ZXh0IH0gZnJvbSAnLi4vLi4vdGhlbWUvVGhlbWVDb250ZXh0JztcclxuY29uc3QgU3R5bGVkVHJlZVZpZXcgPSBzdHlsZWQudWwgYFxuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMFxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbH07XG4gIHBvc2l0aW9uOiAke3Byb3BzID0+IChwcm9wcy5pc1ZpcnR1YWxpemVkID8gJ3JlbGF0aXZlJyA6ICdzdGF0aWMnKX07XG4gIHVsIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBsaSB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuICB9XG5gO1xyXG5jb25zdCBWaXJ0dWFsQ29udGFpbmVyID0gc3R5bGVkLmRpdiBgXG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5gO1xyXG5jb25zdCBWaXJ0dWFsSXRlbSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy5oZWlnaHR9cHg7XG4gIHRyYW5zZm9ybTogJHtwcm9wcyA9PiBwcm9wcy50cmFuc2Zvcm19O1xuYDtcclxuZXhwb3J0IGNvbnN0IFRyZWVWaWV3ID0gUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4ge1xyXG4gICAgY29uc3QgeyBhcmlhTGFiZWwsIGFyaWFMYWJlbGxlZEJ5LCBjaGlsZHJlbiwgaXNJbnZlcnNlOiBpc0ludmVyc2VQcm9wLCBvbkV4cGFuZGVkQ2hhbmdlLCBvblNlbGVjdGVkSXRlbUNoYW5nZSwgc2VsZWN0YWJsZSwgdGVzdElkLCBhcGlSZWYsIGVuYWJsZVZpcnR1YWxpemF0aW9uID0gZmFsc2UsIGVzdGltYXRlU2l6ZSA9IDQwLCBvdmVyc2NhbiA9IDUsIC4uLnJlc3QgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XHJcbiAgICBjb25zdCBpc0ludmVyc2UgPSB1c2VJc0ludmVyc2UoaXNJbnZlcnNlUHJvcCk7XHJcbiAgICBjb25zdCB7IHNlbGVjdGlvbkNvbnRleHRWYWx1ZSwgZXhwYW5zaW9uQ29udGV4dFZhbHVlLCBjb25maWdDb250ZXh0VmFsdWUgfSA9IHVzZVRyZWVWaWV3KHByb3BzKTtcclxuICAgIHVzZVRyZWVJdGVtKHsgbGFiZWw6IGFyaWFMYWJlbCwgaXRlbUlkOiAnJyB9LCByZWYpO1xyXG4gICAgY29uc3QgaW52ZXJzZUNvbnRleHRWYWx1ZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHsgaXNJbnZlcnNlIH0pLCBbaXNJbnZlcnNlXSk7XHJcbiAgICBjb25zdCBwYXJlbnRSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XHJcbiAgICAvLyBGbGF0dGVuIHRyZWUgc3RydWN0dXJlIGZvciB2aXJ0dWFsaXphdGlvblxyXG4gICAgY29uc3QgZmxhdHRlbmVkSXRlbXMgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcclxuICAgICAgICBpZiAoIWVuYWJsZVZpcnR1YWxpemF0aW9uKVxyXG4gICAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgY29uc3QgaXRlbXMgPSBbXTtcclxuICAgICAgICBjb25zdCBmbGF0dGVuID0gKGNoaWxkcmVuVG9GbGF0dGVuLCBkZXB0aCA9IDAsIHBhcmVudEluZGV4ID0gMCkgPT4ge1xyXG4gICAgICAgICAgICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuVG9GbGF0dGVuLCAoY2hpbGQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIVJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSB8fCBjaGlsZC50eXBlICE9PSBUcmVlSXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1LZXkgPSBgdHJlZS1pdGVtLSR7ZGVwdGh9LSR7aW5kZXh9LSR7aXRlbXMubGVuZ3RofWA7XHJcbiAgICAgICAgICAgICAgICAvLyBDbG9uZSB0aGUgY2hpbGQgd2l0aG91dCBpdHMgY2hpbGRyZW4gdG8gcHJldmVudCBkb3VibGUgcmVuZGVyaW5nXHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZFdpdGhvdXROZXN0ZWQgPSBSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGQsIHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5jaGlsZC5wcm9wcyxcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogbnVsbCxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQ6IGNoaWxkV2l0aG91dE5lc3RlZCxcclxuICAgICAgICAgICAgICAgICAgICBkZXB0aCxcclxuICAgICAgICAgICAgICAgICAgICBpbmRleCxcclxuICAgICAgICAgICAgICAgICAgICBrZXk6IGl0ZW1LZXksXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIGl0ZW0gaGFzIGNoaWxkcmVuIGFuZCBpcyBleHBhbmRlZFxyXG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUlkID0gY2hpbGQucHJvcHMuaXRlbUlkO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaXNFeHBhbmRlZCA9IGV4cGFuc2lvbkNvbnRleHRWYWx1ZS5leHBhbmRlZFNldD8uaGFzKGl0ZW1JZCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNFeHBhbmRlZCAmJiBjaGlsZC5wcm9wcy5jaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgICAgIGZsYXR0ZW4oY2hpbGQucHJvcHMuY2hpbGRyZW4sIGRlcHRoICsgMSwgaW5kZXgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGZsYXR0ZW4oY2hpbGRyZW4pO1xyXG4gICAgICAgIHJldHVybiBpdGVtcztcclxuICAgIH0sIFtjaGlsZHJlbiwgZW5hYmxlVmlydHVhbGl6YXRpb24sIGV4cGFuc2lvbkNvbnRleHRWYWx1ZS5leHBhbmRlZFNldF0pO1xyXG4gICAgLy8gU2V0dXAgdmlydHVhbGl6ZXJcclxuICAgIGNvbnN0IHJvd1ZpcnR1YWxpemVyID0gdXNlVmlydHVhbCh7XHJcbiAgICAgICAgc2l6ZTogZmxhdHRlbmVkSXRlbXMubGVuZ3RoLFxyXG4gICAgICAgIHBhcmVudFJlZixcclxuICAgICAgICBlc3RpbWF0ZVNpemU6IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IGVzdGltYXRlU2l6ZSwgW2VzdGltYXRlU2l6ZV0pLFxyXG4gICAgICAgIG92ZXJzY2FuLFxyXG4gICAgfSk7XHJcbiAgICAvLyBQcm9jZXNzIGNoaWxkcmVuIHdpdGhvdXQgY2xvbmVFbGVtZW50IC0gdXNlIGNvbnRleHQgaW5zdGVhZFxyXG4gICAgY29uc3QgcHJvY2Vzc2VkQ2hpbGRyZW4gPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcclxuICAgICAgICBpZiAoZW5hYmxlVmlydHVhbGl6YXRpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7IC8vIEhhbmRsZWQgYnkgdmlydHVhbGl6ZXIgYmVsb3dcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHRyZWVJdGVtSW5kZXggPSAwO1xyXG4gICAgICAgIHJldHVybiBSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sIGNoaWxkID0+IHtcclxuICAgICAgICAgICAgaWYgKCFSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjaGlsZC50eXBlID09PSBUcmVlSXRlbSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdHJlZUl0ZW1JbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaGllcmFyY2h5VmFsdWUgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVwdGg6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgaXNUb3BMZXZlbDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBpbmRleDogY3VycmVudEluZGV4LFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIC8vIFdyYXAgaW4gY29udGV4dCBwcm92aWRlciBpbnN0ZWFkIG9mIGNsb25pbmdcclxuICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChUcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQuUHJvdmlkZXIsIHsga2V5OiBgdHJlZS1pdGVtLSR7Y3VycmVudEluZGV4fWAsIHZhbHVlOiBoaWVyYXJjaHlWYWx1ZSB9LCBjaGlsZCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSwgW2NoaWxkcmVuLCBlbmFibGVWaXJ0dWFsaXphdGlvbl0pO1xyXG4gICAgY29uc3QgdmlydHVhbEl0ZW1zID0gZW5hYmxlVmlydHVhbGl6YXRpb25cclxuICAgICAgICA/IHJvd1ZpcnR1YWxpemVyLnZpcnR1YWxJdGVtc1xyXG4gICAgICAgIDogW107XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW52ZXJzZUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IGludmVyc2VDb250ZXh0VmFsdWUgfSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogc2VsZWN0aW9uQ29udGV4dFZhbHVlIH0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZVZpZXdFeHBhbnNpb25Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBleHBhbnNpb25Db250ZXh0VmFsdWUgfSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZVZpZXdDb25maWdDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb25maWdDb250ZXh0VmFsdWUgfSxcclxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZFRyZWVWaWV3LCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IFwiYXJpYS1sYWJlbFwiOiBhcmlhTGFiZWwsIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGFyaWFMYWJlbGxlZEJ5LCBcImFyaWEtbXVsdGlzZWxlY3RhYmxlXCI6IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSwgXCJkYXRhLXRlc3RpZFwiOiB0ZXN0SWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBpc1ZpcnR1YWxpemVkOiBlbmFibGVWaXJ0dWFsaXphdGlvbiwgcmVmOiBtZXJnZWRSZWZzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmKG1lcmdlZFJlZnMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVmKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmLmN1cnJlbnQgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRSZWZzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50UmVmLmN1cnJlbnQgPSBtZXJnZWRSZWZzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCByb2xlOiBcInRyZWVcIiwgdGhlbWU6IHRoZW1lLCBzdHlsZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmVzdC5zdHlsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihlbmFibGVWaXJ0dWFsaXphdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBoZWlnaHQ6ICc0MDBweCcsIG92ZXJmbG93OiAnYXV0bycgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IH0pLCBlbmFibGVWaXJ0dWFsaXphdGlvbiA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFZpcnR1YWxDb250YWluZXIsIHsgc3R5bGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogYCR7cm93VmlydHVhbGl6ZXIudG90YWxTaXplfXB4YCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSB9LCB2aXJ0dWFsSXRlbXMubWFwKHZpcnR1YWxJdGVtID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IGZsYXR0ZW5lZEl0ZW1zW3ZpcnR1YWxJdGVtLmluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGllcmFyY2h5VmFsdWUgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aDogaXRlbS5kZXB0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudERlcHRoOiBNYXRoLm1heCgwLCBpdGVtLmRlcHRoIC0gMSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1RvcExldmVsOiBpdGVtLmRlcHRoID09PSAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGl0ZW0uaW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChWaXJ0dWFsSXRlbSwgeyBrZXk6IGl0ZW0ua2V5LCBoZWlnaHQ6IHZpcnR1YWxJdGVtLnNpemUsIHRyYW5zZm9ybTogYHRyYW5zbGF0ZVkoJHt2aXJ0dWFsSXRlbS5zdGFydH1weClgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogaGllcmFyY2h5VmFsdWUgfSwgaXRlbS5jaGlsZCkpKTtcclxuICAgICAgICAgICAgICAgICAgICB9KSkpIDogKHByb2Nlc3NlZENoaWxkcmVuKSkpKSkpKTtcclxufSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRyZWVWaWV3LmpzLm1hcCJdfQ== */",
24439
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__$H
24440
+ });
24441
+ var VirtualItem = /*#__PURE__*/_styled("div", {
24442
+ target: "e1tyeayj0",
24443
+ label: "VirtualItem"
24444
+ })("position:absolute;top:0;left:0;width:100%;height:", function (props) {
24445
+ return props.height;
24446
+ }, "px;transform:", function (props) {
24447
+ return props.transform;
24448
+ }, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVWaWV3LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQytCIiwiZmlsZSI6IlRyZWVWaWV3LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xyXG5pbXBvcnQgeyB1c2VWaXJ0dWFsIH0gZnJvbSAncmVhY3QtdmlydHVhbCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtIH0gZnJvbSAnLi9UcmVlSXRlbSc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IHVzZVRyZWVJdGVtIH0gZnJvbSAnLi91c2VUcmVlSXRlbSc7XHJcbmltcG9ydCB7IHVzZVRyZWVWaWV3IH0gZnJvbSAnLi91c2VUcmVlVmlldyc7XHJcbmltcG9ydCB7IEludmVyc2VDb250ZXh0LCB1c2VJc0ludmVyc2UgfSBmcm9tICcuLi8uLi9pbnZlcnNlJztcclxuaW1wb3J0IHsgVGhlbWVDb250ZXh0IH0gZnJvbSAnLi4vLi4vdGhlbWUvVGhlbWVDb250ZXh0JztcclxuY29uc3QgU3R5bGVkVHJlZVZpZXcgPSBzdHlsZWQudWwgYFxuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMFxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbH07XG4gIHBvc2l0aW9uOiAke3Byb3BzID0+IChwcm9wcy5pc1ZpcnR1YWxpemVkID8gJ3JlbGF0aXZlJyA6ICdzdGF0aWMnKX07XG4gIHVsIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBsaSB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuICB9XG5gO1xyXG5jb25zdCBWaXJ0dWFsQ29udGFpbmVyID0gc3R5bGVkLmRpdiBgXG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5gO1xyXG5jb25zdCBWaXJ0dWFsSXRlbSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy5oZWlnaHR9cHg7XG4gIHRyYW5zZm9ybTogJHtwcm9wcyA9PiBwcm9wcy50cmFuc2Zvcm19O1xuYDtcclxuZXhwb3J0IGNvbnN0IFRyZWVWaWV3ID0gUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4ge1xyXG4gICAgY29uc3QgeyBhcmlhTGFiZWwsIGFyaWFMYWJlbGxlZEJ5LCBjaGlsZHJlbiwgaXNJbnZlcnNlOiBpc0ludmVyc2VQcm9wLCBvbkV4cGFuZGVkQ2hhbmdlLCBvblNlbGVjdGVkSXRlbUNoYW5nZSwgc2VsZWN0YWJsZSwgdGVzdElkLCBhcGlSZWYsIGVuYWJsZVZpcnR1YWxpemF0aW9uID0gZmFsc2UsIGVzdGltYXRlU2l6ZSA9IDQwLCBvdmVyc2NhbiA9IDUsIC4uLnJlc3QgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XHJcbiAgICBjb25zdCBpc0ludmVyc2UgPSB1c2VJc0ludmVyc2UoaXNJbnZlcnNlUHJvcCk7XHJcbiAgICBjb25zdCB7IHNlbGVjdGlvbkNvbnRleHRWYWx1ZSwgZXhwYW5zaW9uQ29udGV4dFZhbHVlLCBjb25maWdDb250ZXh0VmFsdWUgfSA9IHVzZVRyZWVWaWV3KHByb3BzKTtcclxuICAgIHVzZVRyZWVJdGVtKHsgbGFiZWw6IGFyaWFMYWJlbCwgaXRlbUlkOiAnJyB9LCByZWYpO1xyXG4gICAgY29uc3QgaW52ZXJzZUNvbnRleHRWYWx1ZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHsgaXNJbnZlcnNlIH0pLCBbaXNJbnZlcnNlXSk7XHJcbiAgICBjb25zdCBwYXJlbnRSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XHJcbiAgICAvLyBGbGF0dGVuIHRyZWUgc3RydWN0dXJlIGZvciB2aXJ0dWFsaXphdGlvblxyXG4gICAgY29uc3QgZmxhdHRlbmVkSXRlbXMgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcclxuICAgICAgICBpZiAoIWVuYWJsZVZpcnR1YWxpemF0aW9uKVxyXG4gICAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgY29uc3QgaXRlbXMgPSBbXTtcclxuICAgICAgICBjb25zdCBmbGF0dGVuID0gKGNoaWxkcmVuVG9GbGF0dGVuLCBkZXB0aCA9IDAsIHBhcmVudEluZGV4ID0gMCkgPT4ge1xyXG4gICAgICAgICAgICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuVG9GbGF0dGVuLCAoY2hpbGQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIVJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSB8fCBjaGlsZC50eXBlICE9PSBUcmVlSXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1LZXkgPSBgdHJlZS1pdGVtLSR7ZGVwdGh9LSR7aW5kZXh9LSR7aXRlbXMubGVuZ3RofWA7XHJcbiAgICAgICAgICAgICAgICAvLyBDbG9uZSB0aGUgY2hpbGQgd2l0aG91dCBpdHMgY2hpbGRyZW4gdG8gcHJldmVudCBkb3VibGUgcmVuZGVyaW5nXHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZFdpdGhvdXROZXN0ZWQgPSBSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGQsIHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5jaGlsZC5wcm9wcyxcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogbnVsbCxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQ6IGNoaWxkV2l0aG91dE5lc3RlZCxcclxuICAgICAgICAgICAgICAgICAgICBkZXB0aCxcclxuICAgICAgICAgICAgICAgICAgICBpbmRleCxcclxuICAgICAgICAgICAgICAgICAgICBrZXk6IGl0ZW1LZXksXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIGl0ZW0gaGFzIGNoaWxkcmVuIGFuZCBpcyBleHBhbmRlZFxyXG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUlkID0gY2hpbGQucHJvcHMuaXRlbUlkO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaXNFeHBhbmRlZCA9IGV4cGFuc2lvbkNvbnRleHRWYWx1ZS5leHBhbmRlZFNldD8uaGFzKGl0ZW1JZCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNFeHBhbmRlZCAmJiBjaGlsZC5wcm9wcy5jaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgICAgIGZsYXR0ZW4oY2hpbGQucHJvcHMuY2hpbGRyZW4sIGRlcHRoICsgMSwgaW5kZXgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGZsYXR0ZW4oY2hpbGRyZW4pO1xyXG4gICAgICAgIHJldHVybiBpdGVtcztcclxuICAgIH0sIFtjaGlsZHJlbiwgZW5hYmxlVmlydHVhbGl6YXRpb24sIGV4cGFuc2lvbkNvbnRleHRWYWx1ZS5leHBhbmRlZFNldF0pO1xyXG4gICAgLy8gU2V0dXAgdmlydHVhbGl6ZXJcclxuICAgIGNvbnN0IHJvd1ZpcnR1YWxpemVyID0gdXNlVmlydHVhbCh7XHJcbiAgICAgICAgc2l6ZTogZmxhdHRlbmVkSXRlbXMubGVuZ3RoLFxyXG4gICAgICAgIHBhcmVudFJlZixcclxuICAgICAgICBlc3RpbWF0ZVNpemU6IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IGVzdGltYXRlU2l6ZSwgW2VzdGltYXRlU2l6ZV0pLFxyXG4gICAgICAgIG92ZXJzY2FuLFxyXG4gICAgfSk7XHJcbiAgICAvLyBQcm9jZXNzIGNoaWxkcmVuIHdpdGhvdXQgY2xvbmVFbGVtZW50IC0gdXNlIGNvbnRleHQgaW5zdGVhZFxyXG4gICAgY29uc3QgcHJvY2Vzc2VkQ2hpbGRyZW4gPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcclxuICAgICAgICBpZiAoZW5hYmxlVmlydHVhbGl6YXRpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7IC8vIEhhbmRsZWQgYnkgdmlydHVhbGl6ZXIgYmVsb3dcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHRyZWVJdGVtSW5kZXggPSAwO1xyXG4gICAgICAgIHJldHVybiBSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sIGNoaWxkID0+IHtcclxuICAgICAgICAgICAgaWYgKCFSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjaGlsZC50eXBlID09PSBUcmVlSXRlbSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdHJlZUl0ZW1JbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaGllcmFyY2h5VmFsdWUgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVwdGg6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgaXNUb3BMZXZlbDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBpbmRleDogY3VycmVudEluZGV4LFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIC8vIFdyYXAgaW4gY29udGV4dCBwcm92aWRlciBpbnN0ZWFkIG9mIGNsb25pbmdcclxuICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChUcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQuUHJvdmlkZXIsIHsga2V5OiBgdHJlZS1pdGVtLSR7Y3VycmVudEluZGV4fWAsIHZhbHVlOiBoaWVyYXJjaHlWYWx1ZSB9LCBjaGlsZCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSwgW2NoaWxkcmVuLCBlbmFibGVWaXJ0dWFsaXphdGlvbl0pO1xyXG4gICAgY29uc3QgdmlydHVhbEl0ZW1zID0gZW5hYmxlVmlydHVhbGl6YXRpb25cclxuICAgICAgICA/IHJvd1ZpcnR1YWxpemVyLnZpcnR1YWxJdGVtc1xyXG4gICAgICAgIDogW107XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW52ZXJzZUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IGludmVyc2VDb250ZXh0VmFsdWUgfSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogc2VsZWN0aW9uQ29udGV4dFZhbHVlIH0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZVZpZXdFeHBhbnNpb25Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBleHBhbnNpb25Db250ZXh0VmFsdWUgfSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZVZpZXdDb25maWdDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb25maWdDb250ZXh0VmFsdWUgfSxcclxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZFRyZWVWaWV3LCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IFwiYXJpYS1sYWJlbFwiOiBhcmlhTGFiZWwsIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGFyaWFMYWJlbGxlZEJ5LCBcImFyaWEtbXVsdGlzZWxlY3RhYmxlXCI6IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSwgXCJkYXRhLXRlc3RpZFwiOiB0ZXN0SWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBpc1ZpcnR1YWxpemVkOiBlbmFibGVWaXJ0dWFsaXphdGlvbiwgcmVmOiBtZXJnZWRSZWZzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmKG1lcmdlZFJlZnMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVmKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmLmN1cnJlbnQgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRSZWZzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50UmVmLmN1cnJlbnQgPSBtZXJnZWRSZWZzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCByb2xlOiBcInRyZWVcIiwgdGhlbWU6IHRoZW1lLCBzdHlsZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmVzdC5zdHlsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihlbmFibGVWaXJ0dWFsaXphdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBoZWlnaHQ6ICc0MDBweCcsIG92ZXJmbG93OiAnYXV0bycgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IH0pLCBlbmFibGVWaXJ0dWFsaXphdGlvbiA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFZpcnR1YWxDb250YWluZXIsIHsgc3R5bGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogYCR7cm93VmlydHVhbGl6ZXIudG90YWxTaXplfXB4YCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSB9LCB2aXJ0dWFsSXRlbXMubWFwKHZpcnR1YWxJdGVtID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IGZsYXR0ZW5lZEl0ZW1zW3ZpcnR1YWxJdGVtLmluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGllcmFyY2h5VmFsdWUgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aDogaXRlbS5kZXB0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudERlcHRoOiBNYXRoLm1heCgwLCBpdGVtLmRlcHRoIC0gMSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1RvcExldmVsOiBpdGVtLmRlcHRoID09PSAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGl0ZW0uaW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChWaXJ0dWFsSXRlbSwgeyBrZXk6IGl0ZW0ua2V5LCBoZWlnaHQ6IHZpcnR1YWxJdGVtLnNpemUsIHRyYW5zZm9ybTogYHRyYW5zbGF0ZVkoJHt2aXJ0dWFsSXRlbS5zdGFydH1weClgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogaGllcmFyY2h5VmFsdWUgfSwgaXRlbS5jaGlsZCkpKTtcclxuICAgICAgICAgICAgICAgICAgICB9KSkpIDogKHByb2Nlc3NlZENoaWxkcmVuKSkpKSkpKTtcclxufSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRyZWVWaWV3LmpzLm1hcCJdfQ== */"));
24449
+ var TreeView = /*#__PURE__*/forwardRef(function (props, _ref) {
23589
24450
  var ariaLabel = props.ariaLabel,
23590
24451
  ariaLabelledBy = props.ariaLabelledBy,
23591
24452
  children = props.children,
23592
24453
  isInverseProp = props.isInverse,
23593
24454
  selectable = props.selectable,
23594
24455
  testId = props.testId,
24456
+ _props$enableVirtuali = props.enableVirtualization,
24457
+ enableVirtualization = _props$enableVirtuali === void 0 ? false : _props$enableVirtuali,
24458
+ _props$estimateSize = props.estimateSize,
24459
+ estimateSize = _props$estimateSize === void 0 ? 40 : _props$estimateSize,
24460
+ _props$overscan = props.overscan,
24461
+ overscan = _props$overscan === void 0 ? 5 : _props$overscan,
23595
24462
  rest = _objectWithoutPropertiesLoose(props, _excluded$1M);
23596
24463
  var theme = useContext(ThemeContext);
23597
24464
  var isInverse = useIsInverse(isInverseProp);
23598
24465
  var _useTreeView = useTreeView(props),
23599
- contextValue = _useTreeView.contextValue;
24466
+ selectionContextValue = _useTreeView.selectionContextValue,
24467
+ expansionContextValue = _useTreeView.expansionContextValue,
24468
+ configContextValue = _useTreeView.configContextValue;
23600
24469
  useTreeItem({
23601
24470
  label: ariaLabel,
23602
24471
  itemId: ''
23603
- }, ref);
23604
- var treeItemIndex = 0;
24472
+ }, _ref);
23605
24473
  var inverseContextValue = useMemo(function () {
23606
24474
  return {
23607
24475
  isInverse: isInverse
23608
24476
  };
23609
24477
  }, [isInverse]);
23610
- var processedChildren = Children.map(children, function (child) {
23611
- if (!isValidElement(child)) {
23612
- return null;
23613
- }
23614
- if (child.type === TreeItem) {
23615
- var treeItemChild = child;
23616
- var treeItemProps = {
23617
- index: treeItemIndex,
23618
- parentDepth: 0,
23619
- itemDepth: 0,
23620
- topLevel: true
23621
- };
23622
- var processedItem = cloneElement(treeItemChild, _extends({}, treeItemProps, {
23623
- key: "tree-item-" + treeItemIndex
23624
- }));
23625
- treeItemIndex++;
23626
- return processedItem;
23627
- }
23628
- return null;
24478
+ var parentRef = useRef(null);
24479
+ // Flatten tree structure for virtualization
24480
+ var flattenedItems = useMemo(function () {
24481
+ if (!enableVirtualization) return [];
24482
+ var items = [];
24483
+ var _flatten = function flatten(childrenToFlatten, depth, parentIndex) {
24484
+ if (depth === void 0) {
24485
+ depth = 0;
24486
+ }
24487
+ Children.forEach(childrenToFlatten, function (child, index) {
24488
+ var _expansionContextValu;
24489
+ if (!isValidElement(child) || child.type !== TreeItem) {
24490
+ return;
24491
+ }
24492
+ var itemKey = "tree-item-" + depth + "-" + index + "-" + items.length;
24493
+ // Clone the child without its children to prevent double rendering
24494
+ var childWithoutNested = cloneElement(child, _extends({}, child.props, {
24495
+ children: null
24496
+ }));
24497
+ items.push({
24498
+ child: childWithoutNested,
24499
+ depth: depth,
24500
+ index: index,
24501
+ key: itemKey
24502
+ });
24503
+ // Check if item has children and is expanded
24504
+ var itemId = child.props.itemId;
24505
+ var isExpanded = (_expansionContextValu = expansionContextValue.expandedSet) == null ? void 0 : _expansionContextValu.has(itemId);
24506
+ if (isExpanded && child.props.children) {
24507
+ _flatten(child.props.children, depth + 1);
24508
+ }
24509
+ });
24510
+ };
24511
+ _flatten(children);
24512
+ return items;
24513
+ }, [children, enableVirtualization, expansionContextValue.expandedSet]);
24514
+ // Setup virtualizer
24515
+ var rowVirtualizer = useVirtual({
24516
+ size: flattenedItems.length,
24517
+ parentRef: parentRef,
24518
+ estimateSize: useCallback(function () {
24519
+ return estimateSize;
24520
+ }, [estimateSize]),
24521
+ overscan: overscan
23629
24522
  });
24523
+ // Process children without cloneElement - use context instead
24524
+ var processedChildren = useMemo(function () {
24525
+ if (enableVirtualization) {
24526
+ return null; // Handled by virtualizer below
24527
+ }
24528
+ var treeItemIndex = 0;
24529
+ return Children.map(children, function (child) {
24530
+ if (!isValidElement(child)) {
24531
+ return null;
24532
+ }
24533
+ if (child.type === TreeItem) {
24534
+ var currentIndex = treeItemIndex++;
24535
+ var hierarchyValue = {
24536
+ depth: 0,
24537
+ parentDepth: 0,
24538
+ isTopLevel: true,
24539
+ index: currentIndex
24540
+ };
24541
+ // Wrap in context provider instead of cloning
24542
+ return createElement(TreeItemHierarchyContext.Provider, {
24543
+ key: "tree-item-" + currentIndex,
24544
+ value: hierarchyValue
24545
+ }, child);
24546
+ }
24547
+ return null;
24548
+ });
24549
+ }, [children, enableVirtualization]);
24550
+ var virtualItems = enableVirtualization ? rowVirtualizer.virtualItems : [];
23630
24551
  return createElement(InverseContext.Provider, {
23631
24552
  value: inverseContextValue
23632
- }, createElement(TreeViewContext.Provider, {
23633
- value: contextValue
24553
+ }, createElement(TreeViewSelectionContext.Provider, {
24554
+ value: selectionContextValue
24555
+ }, createElement(TreeViewExpansionContext.Provider, {
24556
+ value: expansionContextValue
24557
+ }, createElement(TreeViewConfigContext.Provider, {
24558
+ value: configContextValue
23634
24559
  }, createElement(StyledTreeView, Object.assign({}, rest, {
23635
24560
  "aria-label": ariaLabel,
23636
24561
  "aria-labelledby": ariaLabelledBy,
23637
24562
  "aria-multiselectable": selectable === TreeViewSelectable.multi,
23638
24563
  "data-testid": testId,
23639
24564
  isInverse: isInverse,
23640
- ref: ref,
24565
+ isVirtualized: enableVirtualization,
24566
+ ref: function ref(mergedRefs) {
24567
+ if (typeof _ref === 'function') {
24568
+ _ref(mergedRefs);
24569
+ } else if (_ref) {
24570
+ _ref.current = mergedRefs;
24571
+ }
24572
+ parentRef.current = mergedRefs;
24573
+ },
23641
24574
  role: "tree",
23642
- theme: theme
23643
- }), processedChildren)));
24575
+ theme: theme,
24576
+ style: _extends({}, rest.style, enableVirtualization ? {
24577
+ height: '400px',
24578
+ overflow: 'auto'
24579
+ } : {})
24580
+ }), enableVirtualization ? createElement(VirtualContainer, {
24581
+ style: {
24582
+ height: rowVirtualizer.totalSize + "px"
24583
+ }
24584
+ }, virtualItems.map(function (virtualItem) {
24585
+ var item = flattenedItems[virtualItem.index];
24586
+ var hierarchyValue = {
24587
+ depth: item.depth,
24588
+ parentDepth: Math.max(0, item.depth - 1),
24589
+ isTopLevel: item.depth === 0,
24590
+ index: item.index
24591
+ };
24592
+ return createElement(VirtualItem, {
24593
+ key: item.key,
24594
+ height: virtualItem.size,
24595
+ transform: "translateY(" + virtualItem.start + "px)"
24596
+ }, createElement(TreeItemHierarchyContext.Provider, {
24597
+ value: hierarchyValue
24598
+ }, item.child));
24599
+ })) : processedChildren)))));
23644
24600
  });
23645
24601
 
23646
24602
  var _excluded$1N = ["children", "enforced", "exclusive", "id", "isInverse", "noSpace", "onChange", "size", "value", "testId"];
@@ -23850,5 +24806,5 @@ var ToggleButton = /*#__PURE__*/forwardRef(function (props, ref) {
23850
24806
  }), createElement(Fragment, null, children)) : createElement(StyledToggleButtonText, Object.assign({}, sharedToggleButtonProps), children));
23851
24807
  });
23852
24808
 
23853
- export { AIButton, AIButtonShape, AIButtonSize, AIButtonTextTransform, AIButtonType, AIButtonVariant, Accordion, AccordionButton, AccordionContext, AccordionIconPosition, AccordionItem, AccordionItemContext, AccordionPanel, Alert, AlertVariant, Announce, AppBar, AppBarPosition, Badge, BadgeColor, BadgeVariant, Banner, BlockQuote, BlockQuoteItem, Breadcrumb, BreadcrumbItem, Breakpoint, BreakpointScreenSize, BreakpointsContainer, Button, ButtonColor, ButtonGroup, ButtonGroupAlignment, ButtonGroupContext, ButtonGroupOrientation, ButtonIconPosition, ButtonShape, ButtonSize, ButtonTextTransform, ButtonType, ButtonVariant, Card, CardAlignment, CardBody, CardCalloutType, CardHeading, CharacterCounter, Checkbox, CheckboxTextPosition, Combobox, ComboboxStateChangeTypes, Container$1 as Container, CustomTab, Datagrid, DatePicker, DateTimePicker, DefinitionList, DefinitionListItem, DefinitionListType, Drawer, DrawerPosition, Dropdown, DropdownAlignment, DropdownButton, DropdownContent, DropdownDivider, DropdownDropDirection, DropdownExpandableMenuButton, DropdownExpandableMenuGroup, DropdownExpandableMenuItem, DropdownExpandableMenuListItem, DropdownExpandableMenuPanel, DropdownHeader, DropdownMenuGroup, DropdownMenuItem, DropdownMenuNavItem, DropdownSplitButton, EnumTooltipPosition, Flex, FlexAlignContent, FlexAlignItems, FlexBehavior, FlexDirection, FlexJustify, FlexWrap, Form, FormFieldContainer, FormGroup, GlobalStyles, Grid, GridAlignContent, GridAlignItems, GridAutoFlow, GridDisplay, GridItem, GridItemAlignSelf, GridItemJustifySelf, GridJustifyContent, GridJustifyItems, Heading, HideAtBreakpoint, HideAtBreakpointDisplayType, Hyperlink, HyperlinkIconPosition, I18nContext, IconAlignment, IconButton, IconSizes, IndeterminateCheckbox, IndeterminateCheckboxStatus, Input, InputBase, InputIconPosition, InputMessage, InputSize, InputType, InverseContext, Label, LabelPosition, List$1 as List, ListItem, LoadingIndicator, LoadingIndicatorType, Modal, ModalSize, MultipleSelectionStateChangeTypes, NativeSelect, NavTab, NavTabs, PageButtonSize, Pagination, PaginationType, Paragraph, PasswordInput, Popover, PopoverAlignment, PopoverContent, PopoverFooter, PopoverHeader, PopoverPosition, PopoverTrigger, ProgressBar, ProgressBarColor, ProgressRing, Radio, RadioGroup, RadioTextPosition, ResponsiveStepperContainer, Search, Select$1 as Select, SelectStateChangeTypes, SkipLink, SkipLinkContent, Spacer, SpacerAxis, Spinner, Step, Stepper, StepperLayout, StepperOrientation, StyledTooltip, Tab, TabPanel, TabPanelsContainer, TabScrollSpyPanel, Table, TableBody, TableCell, TableCellAlign, TableContext, TableDensity, TableHead, TableHeaderCell, TableHeaderCellScope, TablePagination, TableRow, TableRowColor, TableSortDirection, Tabs, TabsAlignment, TabsBorderPosition, TabsContainer, TabsIconPosition, TabsOrientation, TabsScrollSpyContainer, TabsTextTransform, Tag, TagColor, TagSize, Textarea, ThemeContext, TimePicker, Toast, ToastsContainer, Toggle, ToggleButton, ToggleButtonGroup, ToggleButtonGroupContext, ToggleButtonStyles, ToggleTextPosition, Tooltip, TooltipArrow, TooltipPosition, Transition, TreeItem, TreeNodeType, TreeView, TreeViewSelectable, TypographyColor, TypographyContextVariant, TypographyVisualStyle, VisuallyHidden, blockQuoteStyles, calculateOffset, checkedStatusToBoolean, defaultI18n, filterNullEntries, _getChildrenIds as getChildrenIds, getChildrenItemIds, getChildrenItemIdsFlat, getDateFromString, getIconSizes, getInitialExpandedIds, getInitialItems, getListAlignment, getTreeItemLabelColor, getTreeItemWrapperCursor, inDateRange, isEqualArrays, isSelectedItemsChanged, magma, olListType, selectSingle, setBackgroundColor, setIconWidth, toggleAllMulti, toggleMulti, ulListType, useAccordion, useAccordionButton, useAccordionItem, useDataPagination, useDescendants, useDeviceDetect, useFocusLock, useForceUpdate, useGenerateId, useIsInverse, useMediaQuery, usePagination, useTreeItem, useTreeView };
24809
+ export { AIButton, AIButtonShape, AIButtonSize, AIButtonTextTransform, AIButtonType, AIButtonVariant, Accordion, AccordionButton, AccordionContext, AccordionIconPosition, AccordionItem, AccordionItemContext, AccordionPanel, Alert, AlertVariant, Announce, AppBar, AppBarPosition, Badge, BadgeColor, BadgeVariant, Banner, BlockQuote, BlockQuoteItem, Breadcrumb, BreadcrumbItem, Breakpoint, BreakpointScreenSize, BreakpointsContainer, Button, ButtonColor, ButtonGroup, ButtonGroupAlignment, ButtonGroupContext, ButtonGroupOrientation, ButtonIconPosition, ButtonShape, ButtonSize, ButtonTextTransform, ButtonType, ButtonVariant, Card, CardAlignment, CardBody, CardCalloutType, CardHeading, CharacterCounter, Checkbox, CheckboxTextPosition, Combobox, ComboboxStateChangeTypes, Container$1 as Container, CustomTab, Datagrid, DatePicker, DateTimePicker, DefinitionList, DefinitionListItem, DefinitionListType, Drawer, DrawerPosition, Dropdown, DropdownAlignment, DropdownButton, DropdownContent, DropdownDivider, DropdownDropDirection, DropdownExpandableMenuButton, DropdownExpandableMenuGroup, DropdownExpandableMenuItem, DropdownExpandableMenuListItem, DropdownExpandableMenuPanel, DropdownHeader, DropdownMenuGroup, DropdownMenuItem, DropdownMenuNavItem, DropdownSplitButton, EnumTooltipPosition, Flex, FlexAlignContent, FlexAlignItems, FlexBehavior, FlexDirection, FlexJustify, FlexWrap, Form, FormFieldContainer, FormGroup, GlobalStyles, Grid, GridAlignContent, GridAlignItems, GridAutoFlow, GridDisplay, GridItem, GridItemAlignSelf, GridItemJustifySelf, GridJustifyContent, GridJustifyItems, Heading, HideAtBreakpoint, HideAtBreakpointDisplayType, Hyperlink, HyperlinkIconPosition, I18nContext, IconAlignment, IconButton, IconSizes, IndeterminateCheckbox, IndeterminateCheckboxStatus, Input, InputBase, InputIconPosition, InputMessage, InputSize, InputType, InverseContext, Label, LabelPosition, List$1 as List, ListItem, LoadingIndicator, LoadingIndicatorType, Modal, ModalSize, MultipleSelectionStateChangeTypes, NativeSelect, NavTab, NavTabs, PageButtonSize, Pagination, PaginationType, Paragraph, PasswordInput, Popover, PopoverAlignment, PopoverContent, PopoverFooter, PopoverHeader, PopoverPosition, PopoverTrigger, ProgressBar, ProgressBarColor, ProgressRing, Radio, RadioGroup, RadioTextPosition, ResponsiveStepperContainer, Search, Select$1 as Select, SelectStateChangeTypes, SkipLink, SkipLinkContent, Spacer, SpacerAxis, Spinner, Step, Stepper, StepperLayout, StepperOrientation, StyledTooltip, Tab, TabPanel, TabPanelsContainer, TabScrollSpyPanel, Table, TableBody, TableCell, TableCellAlign, TableContext, TableDensity, TableHead, TableHeaderCell, TableHeaderCellScope, TablePagination, TableRow, TableRowColor, TableSortDirection, Tabs, TabsAlignment, TabsBorderPosition, TabsContainer, TabsIconPosition, TabsOrientation, TabsScrollSpyContainer, TabsTextTransform, Tag, TagColor, TagSize, Textarea, ThemeContext, TimePicker, Toast, ToastsContainer, Toggle, ToggleButton, ToggleButtonGroup, ToggleButtonGroupContext, ToggleButtonStyles, ToggleTextPosition, Tooltip, TooltipArrow, TooltipPosition, Transition, TreeItem, TreeNodeType, TreeView, TreeViewConfigContext, TreeViewExpansionContext, TreeViewSelectable, TreeViewSelectionContext, TypographyColor, TypographyContextVariant, TypographyVisualStyle, VisuallyHidden, blockQuoteStyles, calculateOffset, checkedStatusToBoolean, defaultI18n, filterNullEntries, getChildrenIds, getChildrenItemIds, getChildrenItemIdsFlat, getDateFromString, getIconSizes, getInitialExpandedIds, getInitialItems, getListAlignment, getTreeItemLabelColor, getTreeItemWrapperCursor, inDateRange, isEqualArrays, isSelectedItemsChanged, magma, olListType, selectSingle, setBackgroundColor, setIconWidth, toggleAllMulti, toggleMulti, ulListType, useAccordion, useAccordionButton, useAccordionItem, useDataPagination, useDescendants, useDeviceDetect, useFocusLock, useForceUpdate, useGenerateId, useIsInverse, useMediaQuery, usePagination, useTreeItem, useTreeView };
23854
24810
  //# sourceMappingURL=index.js.map