Bug 1533767 - [release-129] Sync 129. r=jlast
authorFlorens Verschelde <florens@fvsch.com>
Mon, 11 Mar 2019 15:54:34 +0000
changeset 463515 e5897543e5e6d850ab5953c523de8eaa5be9a300
parent 463514 551105fd7f8137dc15533b35eb304ed32829de7f
child 463516 7592f919079fdfe09a47bb0e4d4754ea239effec
push id35686
push userbtara@mozilla.com
push dateTue, 12 Mar 2019 09:50:48 +0000
treeherdermozilla-central@7196b821847c [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjlast
bugs1533767
milestone67.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1533767 - [release-129] Sync 129. r=jlast Bug 1533767 - [release-129] Fix 8026 - Prevent breakpoint label from triggering checkbox focus (#8044). r=dwalsh Bug 1533767 - [release-129] Update dependency devtools-launchpad to ^0.0.150 (#8046). r=dwalsh Bug 1533767 - [release-129] Fixes Regex for React Libraries (#8010). r=dwalsh Bug 1533767 - [release-129] Ensuring long strings get re-rendered when their loaded properties are updated (#7874) (#8053). r=dwalsh Bug 1533767 - [release-129] Update Getting Setup Docs (#8065). r=dwalsh Bug 1533767 - [release-129] Fix 7799 - Restore pretty print shim to tab context menu (#8037). r=dwalsh Bug 1533767 - [release-129] Unify array creation style in SecondaryPanes getStartItems and getEndItems (#8050). r=dwalsh Bug 1533767 - [release-129] Add focus-within for showing breakpoint's delete button (#8029). r=dwalsh Bug 1533767 - [release-129] Fix #7840 - Remove blackboxed text to prevent overflow (#8052). r=dwalsh Bug 1533767 - [release-129] [Preview] Open node from the object inspector in popups (#8069). r=dwalsh Bug 1533767 - [release-129] Fix #7952 - Remove debug line check for token hovering (#8070). r=dwalsh Bug 1533767 - [release-129] #7993 Fix callstack frame-group icon and avoid global selectors (#8078). r=dwalsh Bug 1533767 - [release-129] Use O(N) algorithm in getUniqueIdentifiers. (#8085). r=dwalsh Bug 1533767 - [release-129] Fix #8081 - Dropdown label and icon style (#8082). r=dwalsh Bug 1533767 - [release-129] Fix #8084 - Vue.js icon missing in Frames (#8086). r=dwalsh Bug 1533767 - [release-129] Fix #7956 - Show falsy values in preview (#8072). r=dwalsh Bug 1533767 - [release-129] Fix #8040 - Correct Accordion header spacing and restore thin plus.svg icon (#8087). r=dwalsh Bug 1533767 - [release-129] fix: make search input more responsive (#8079). r=dwalsh Bug 1533767 - [release-129] Update link in contributing.md (#8095). r=dwalsh Differential Revision: https://phabricator.services.mozilla.com/D22759
devtools/client/debugger/new/dist/debugger.css
devtools/client/debugger/new/dist/parser-worker.js
devtools/client/debugger/new/dist/pretty-print-worker.js
devtools/client/debugger/new/dist/search-worker.js
devtools/client/debugger/new/dist/vendors.js
devtools/client/debugger/new/images/plus.svg
devtools/client/debugger/new/packages/devtools-components/src/tests/__snapshots__/tree.js.snap
devtools/client/debugger/new/packages/devtools-components/src/tests/tree.js
devtools/client/debugger/new/packages/devtools-components/src/tree.js
devtools/client/debugger/new/packages/devtools-reps/package.json
devtools/client/debugger/new/packages/devtools-reps/src/object-inspector/components/ObjectInspector.js
devtools/client/debugger/new/packages/devtools-reps/src/object-inspector/tests/component/should-item-update.js
devtools/client/debugger/new/src/actions/preview.js
devtools/client/debugger/new/src/components/Editor/DebugLine.js
devtools/client/debugger/new/src/components/Editor/Footer.css
devtools/client/debugger/new/src/components/Editor/Footer.js
devtools/client/debugger/new/src/components/Editor/Preview/Popup.js
devtools/client/debugger/new/src/components/Editor/Preview/index.js
devtools/client/debugger/new/src/components/Editor/Tab.js
devtools/client/debugger/new/src/components/Editor/Tabs.js
devtools/client/debugger/new/src/components/SecondaryPanes/Breakpoints/Breakpoint.js
devtools/client/debugger/new/src/components/SecondaryPanes/Breakpoints/Breakpoints.css
devtools/client/debugger/new/src/components/SecondaryPanes/Breakpoints/tests/Breakpoint.spec.js
devtools/client/debugger/new/src/components/SecondaryPanes/Breakpoints/tests/__snapshots__/Breakpoint.spec.js.snap
devtools/client/debugger/new/src/components/SecondaryPanes/Frames/Frames.css
devtools/client/debugger/new/src/components/SecondaryPanes/Frames/Group.css
devtools/client/debugger/new/src/components/SecondaryPanes/index.js
devtools/client/debugger/new/src/components/shared/AccessibleImage.css
devtools/client/debugger/new/src/components/shared/Accordion.css
devtools/client/debugger/new/src/components/shared/Accordion.js
devtools/client/debugger/new/src/components/shared/Dropdown.css
devtools/client/debugger/new/src/components/shared/SearchInput.css
devtools/client/debugger/new/src/components/shared/SourceIcon.css
devtools/client/debugger/new/src/components/shared/Svg.css
devtools/client/debugger/new/src/components/shared/tests/__snapshots__/Accordion.spec.js.snap
devtools/client/debugger/new/src/utils/pause/frames/getLibraryFromUrl.js
devtools/client/debugger/new/src/utils/pause/frames/tests/getLibraryFromUrl.spec.js
devtools/client/debugger/new/src/workers/parser/getSymbols.js
devtools/client/debugger/new/src/workers/parser/utils/helpers.js
devtools/client/debugger/new/test/mochitest/browser.ini
devtools/client/debugger/new/test/mochitest/browser_dbg-debug-line.js
devtools/client/debugger/new/test/mochitest/browser_dbg-inspector-integration.js
devtools/client/debugger/new/test/mochitest/browser_dbg-preview.js
devtools/client/debugger/new/test/mochitest/helpers.js
devtools/client/locales/en-US/debugger.properties
devtools/client/shared/components/Accordion.css
devtools/client/shared/components/reps/reps.js
devtools/client/shared/source-map/index.js
devtools/client/shared/source-map/worker.js
--- a/devtools/client/debugger/new/dist/debugger.css
+++ b/devtools/client/debugger/new/dist/debugger.css
@@ -1053,16 +1053,22 @@ html[dir="rtl"] .managed-tree .tree .nod
   width: 16px;
   height: 16px;
   vertical-align: middle;
   /* use background-color for the icon color, and mask-image for its shape */
   background-color: var(--theme-icon-color);
   mask-size: contain;
   mask-repeat: no-repeat;
   mask-position: center;
+  /* multicolor icons use background-image */
+  background-position: center;
+  background-repeat: no-repeat;
+  background-size: contain;
+  /* do not let images shrink when used as flex children */
+  flex-shrink: 0;
 }
 
 /* Expand arrow icon */
 .img.arrow {
   width: 10px;
   height: 10px;
   mask-image: url("resource://devtools/client/debugger/new/images/arrow.svg");
   /* we may override the width/height in specific contexts to make the
@@ -1393,17 +1399,17 @@ html[dir="ltr"] .toggle-button.end:not(.
   margin-inline-end: 6px;
   animation: search-loader-rotate 0.5s linear infinite;
 }
 
 .search-field input {
   align-self: stretch;
   flex-grow: 1;
   height: 24px;
-  min-width: 40px;
+  width: 40px;
   border: none;
   padding: 4px;
   padding-inline-start: 28px;
   line-height: 16px;
   font-family: inherit;
   font-size: inherit;
   color: var(--theme-body-color);
   background-color: transparent;
@@ -1874,20 +1880,16 @@ menuseparator {
 
 /**
  * Variant of AccessibleImage used in sources list and tabs.
  * Define the different source type / framework / library icons here.
  */
 
 .source-icon {
   margin-inline-end: 4px;
-  /* multicolor icons use background-image */
-  background-position: center;
-  background-repeat: no-repeat;
-  background-size: contain;
 }
 
 /* Icons for frameworks and libs */
 
 .img.aframe {
   background-image: url("resource://devtools/client/debugger/new/images/sources/aframe.svg");
   background-color: transparent !important;
 }
@@ -2006,17 +2008,19 @@ menuseparator {
 .img.typescript {
   mask-image: url("resource://devtools/client/debugger/new/images/sources/typescript.svg");
 }
 
 .img.underscore {
   mask-image: url("resource://devtools/client/debugger/new/images/sources/underscore.svg");
 }
 
-.img.vue {
+/* We use both 'Vue' and 'VueJS' when identifying frameworks */
+.img.vue,
+.img.vuejs {
   background-image: url("resource://devtools/client/debugger/new/images/sources/vuejs.svg");
   background-color: transparent !important;
 }
 
 .img.webpack {
   background-image: url("resource://devtools/client/debugger/new/images/sources/webpack.svg");
   background-color: transparent !important;
 }
@@ -2315,17 +2319,16 @@ menuseparator {
   width: 20px;
   margin: 0 4px;
 }
 
 .source-footer > .commands > .blackboxed > .img.blackBox {
   background-color: var(--theme-icon-checked-color);
 }
 
-.source-footer .blackbox-summary,
 .source-footer .mapped-source,
 .source-footer .cursor-position {
   color: var(--theme-body-color);
   padding-right: 2.5px;
 }
 
 .source-footer .mapped-source {
   white-space: nowrap;
@@ -3092,16 +3095,17 @@ debug-expression-error {
 .breakpoints-exceptions {
   padding-bottom: 0.5em;
   padding-top: 0.5em;
   user-select: none;
 }
 
 .breakpoints-list .breakpoint {
   min-height: var(--breakpoint-expression-height);
+  overflow: hidden;
 }
 
 .breakpoints-exceptions-caught {
   padding: 0 1em 0.5em 3em;
   margin-top: -0.25em;
 }
 
 html[dir="rtl"] .breakpoints-exceptions-caught {
@@ -3218,30 +3222,22 @@ html .breakpoints-list .breakpoint.pause
   flex: 0 1 content;
   order: 3;
 }
 
 .breakpoint .close-btn {
   inset-inline-end: 15px;
   inset-inline-start: auto;
   position: absolute;
-  top: 8px;
-  display: none;
-}
-
-.breakpoint:hover .close-btn {
-  display: flex;
-}
-
-.breakpoint .close {
-  visibility: hidden;
-}
-
-.breakpoint:hover .close {
-  visibility: visible;
+  top: -100px; /*For hiding button outside of row until hovered or focused*/
+}
+
+.breakpoint:hover .close-btn,
+.breakpoint .close-btn:focus {
+  top: calc(50% - 8px);
 }
 
 .CodeMirror.cm-s-mozilla-breakpoint {
   cursor: pointer;
 }
 
 .CodeMirror.cm-s-mozilla-breakpoint .CodeMirror-lines {
   padding: 0;
@@ -3393,48 +3389,49 @@ html .breakpoints-list .breakpoint.pause
 
 .input-expression:not(:placeholder-shown) {
   font-family: var(--monospace-font-family);
 }
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
-.frames [role="list"] .frames-group .group,
-.frames [role="list"] .frames-group .group .location {
+.frames-group .group,
+.frames-group .group .location {
   font-weight: 500;
   cursor: default;
   /*
    * direction:rtl is set in Frames.css to overflow the location text from the
    * start. Here we need to reset it in order to display the framework icon
    * after the framework name.
    */
   direction: ltr;
 }
 
-.frames [role="list"] .frames-group.expanded .group,
-.frames [role="list"] .frames-group.expanded .group .location {
+.frames-group.expanded .group,
+.frames-group.expanded .group .location {
   color: var(--theme-highlight-blue);
 }
 
-.frames [role="list"] .frames-group .frames-list [role="listitem"] {
-  padding-left: 30px;
-}
-
-.frames [role="list"] .frames-group .frames-list {
+.frames-group .frames-list [role="listitem"] {
+  padding-inline-start: 30px;
+}
+
+.frames-group .frames-list {
   border-top: 1px solid var(--theme-splitter-color);
   border-bottom: 1px solid var(--theme-splitter-color);
 }
 
-.frames [role="list"] .frames-group.expanded .badge {
+.frames-group.expanded .badge {
   color: var(--theme-highlight-blue);
 }
 
-.group-description-name {
-  padding-left: 5px;
+.frames-group .img.arrow {
+  margin-inline-start: -1px;
+  margin-inline-end: 4px;
 }
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 .badge {
   --size: 17px;
   --radius: calc(var(--size) / 2);
@@ -3562,52 +3559,54 @@ html .breakpoints-list .breakpoint.pause
   fill: white;
 }
 
 :root.theme-light .frames [role="list"] [role="listitem"].selected .location,
 :root.theme-dark .frames [role="list"] [role="listitem"].selected .location {
   color: white;
 }
 
-.show-more-container {
+.frames .show-more-container {
   display: flex;
   min-height: 24px;
   padding: 4px 0;
 }
 
-.show-more {
+.frames .show-more {
   text-align: center;
   padding: 8px 0px;
   margin: 7px 10px 7px 7px;
   border: 1px solid var(--theme-splitter-color);
   background-color: var(--theme-tab-toolbar-background);
   width: 100%;
   font-size: inherit;
   color: inherit;
 }
 
-.show-more:hover {
+.frames .show-more:hover {
   background-color: var(--theme-toolbar-background-hover);
 }
 
-.annotation-logo {
-  mask-size: 100%;
-  display: inline-block;
-  width: 12px;
-}
-
-:root.theme-dark .annotation-logo:not(.angular) svg path {
-  fill: var(--theme-highlight-blue);
+.frames .img.annotation-logo {
+  margin-inline-end: 4px;
+  background-color: currentColor;
+}
+
+/*
+ * We also show the library icon in locations, which are forced to RTL.
+ */
+.frames .location .img.annotation-logo {
+  margin-inline-start: 4px;
 }
 
 /* Some elements are added to the DOM only to be printed into the clipboard
    when the user copy some elements. We don't want those elements to mess with
    the layout so we put them outside of the screen
 */
-.clipboard-only {
+.frames .clipboard-only {
   position: absolute;
   left: -9999px;
 }
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 .workers-list * {
@@ -3657,100 +3656,92 @@ html .breakpoints-list .breakpoint.pause
   background: white;
 }
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 :root {
   --accordion-header-background: var(--theme-toolbar-background);
-  --disclosure-arrow: #b2b2b2;
 }
 
 :root.theme-dark {
   --accordion-header-background: #222225;
-  --disclosure-arrow: #7f7f81;
 }
 
 .accordion {
   background-color: var(--theme-sidebar-background);
   width: 100%;
   list-style-type: none;
   padding: 0px;
   margin-top: 0px;
 }
 
 .accordion ._header {
   background-color: var(--accordion-header-background);
   border-bottom: 1px solid var(--theme-splitter-color);
   display: flex;
   font-size: 12px;
-  padding: 4px;
-  transition: all 0.25s ease;
+  line-height: calc(16 / 12);
+  padding: 4px 6px;
   width: 100%;
-  height: 24px;
   align-items: center;
   margin: 0px;
   font-weight: normal;
-
+  cursor: default;
   -webkit-user-select: none;
   -moz-user-select: none;
-  -ms-user-select: none;
-  -o-user-select: none;
   user-select: none;
-  cursor: default;
 }
 
 .accordion ._header:hover {
   background-color: var(--theme-toolbar-background-hover);
 }
 
-.accordion ._header button svg,
-.accordion ._header:hover button svg {
-  fill: currentColor;
+.accordion ._header .arrow {
+  margin-inline-end: 4px;
+}
+
+.accordion ._header .header-label {
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.accordion ._header .header-buttons {
+  display: flex;
+  margin-inline-start: auto;
+}
+
+.accordion ._header .header-buttons button {
+  color: var(--theme-body-color);
+  border: none;
+  background: none;
+  padding: 0;
+  margin: 0 2px;
+  width: 16px;
   height: 16px;
 }
 
+.accordion ._header .header-buttons button::-moz-focus-inner {
+  border: none;
+}
+
+.accordion ._header .header-buttons button .img {
+  display: block;
+}
+
 .accordion ._content {
   border-bottom: 1px solid var(--theme-splitter-color);
   font-size: 12px;
 }
 
 .accordion div:last-child ._content {
   border-bottom: none;
 }
-
-.accordion ._header .header-buttons {
-  display: flex;
-  margin-left: auto;
-  padding-right: 5px;
-}
-
-.accordion .header-buttons .add-button {
-  font-size: 180%;
-  text-align: center;
-  line-height: 16px;
-}
-
-.accordion .header-buttons button {
-  color: var(--theme-body-color);
-  border: none;
-  background: none;
-  padding: 0;
-  width: 16px;
-  height: 16px;
-}
-
-.accordion .header-buttons button::-moz-focus-inner {
-  border: none;
-}
-
-.accordion .arrow svg {
-  fill: var(--disclosure-arrow);
-}
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 .command-bar {
   flex: 0 0 29px;
   border-bottom: 1px solid var(--theme-splitter-color);
   display: flex;
@@ -4385,23 +4376,30 @@ html .welcomebox .toggle-button-end.coll
 
 .dropdown {
   background: var(--theme-body-background);
   border: 1px solid var(--theme-splitter-color);
   border-radius: 4px;
   box-shadow: 0 4px 4px 0 var(--search-overlays-semitransparent);
   max-height: 300px;
   position: absolute;
-  inset-inline-end: 2px;
   top: 24px;
   width: 150px;
   z-index: 1000;
   overflow: auto;
 }
 
+[dir="ltr"] .dropdown {
+  right: 2px;
+}
+
+[dir="rtl"] .dropdown {
+  left: 2px;
+}
+
 .dropdown-block {
   position: relative;
   align-self: center;
   height: 100%;
 }
 
 /* cover the reserved space at the end of .source-tabs */
 .source-tabs + .dropdown-block {
@@ -4419,52 +4417,46 @@ html .welcomebox .toggle-button-end.coll
   width: 28px;
 }
 
 .dropdown-button .img {
   display: block;
 }
 
 .dropdown ul {
+  margin: 0;
+  padding: 4px 0;
   list-style: none;
-  line-height: 2em;
-  font-size: 1em;
-  margin: 0;
-  padding: 0;
 }
 
 .dropdown li {
   display: flex;
   align-items: center;
-  padding: 5px 8px;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
+  padding: 6px 8px;
   font-size: 12px;
   line-height: calc(16 / 12);
   transition: all 0.25s ease;
 }
 
-.dropdown li:first-child {
-  margin-top: 4px;
-}
-
-.dropdown li:last-child {
-  margin-bottom: 4px;
-}
-
 .dropdown li:hover {
   background-color: var(--search-overlays-semitransparent);
 }
 
 .dropdown-icon {
   margin-inline-end: 4px;
   mask-size: 13px 13px;
 }
 
+.dropdown-label {
+  display: block;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
 .dropdown-icon.prettyPrint,
 .dropdown-icon.blackBox {
   background-color: var(--theme-highlight-blue);
 }
 
 .dropdown-mask {
   position: fixed;
   width: 100%;
--- a/devtools/client/debugger/new/dist/parser-worker.js
+++ b/devtools/client/debugger/new/dist/parser-worker.js
@@ -65,17 +65,17 @@ return /******/ (function(modules) { // 
 /******/
 /******/ 	// Object.prototype.hasOwnProperty.call
 /******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
 /******/
 /******/ 	// __webpack_public_path__
 /******/ 	__webpack_require__.p = "/assets/build";
 /******/
 /******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(__webpack_require__.s = 549);
+/******/ 	return __webpack_require__(__webpack_require__.s = 550);
 /******/ })
 /************************************************************************/
 /******/ ([
 /* 0 */,
 /* 1 */,
 /* 2 */,
 /* 3 */,
 /* 4 */,
@@ -459,190 +459,190 @@ Object.defineProperty(exports, "validate
 Object.defineProperty(exports, "buildMatchMemberExpression", {
   enumerable: true,
   get: function () {
     return _buildMatchMemberExpression.default;
   }
 });
 exports.react = void 0;
 
-var _isReactComponent = _interopRequireDefault(__webpack_require__(551));
-
-var _isCompatTag = _interopRequireDefault(__webpack_require__(552));
-
-var _buildChildren = _interopRequireDefault(__webpack_require__(553));
-
-var _assertNode = _interopRequireDefault(__webpack_require__(625));
-
-var _generated = __webpack_require__(626);
+var _isReactComponent = _interopRequireDefault(__webpack_require__(552));
+
+var _isCompatTag = _interopRequireDefault(__webpack_require__(553));
+
+var _buildChildren = _interopRequireDefault(__webpack_require__(554));
+
+var _assertNode = _interopRequireDefault(__webpack_require__(626));
+
+var _generated = __webpack_require__(627);
 
 Object.keys(_generated).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _generated[key];
     }
   });
 });
 
-var _createTypeAnnotationBasedOnTypeof = _interopRequireDefault(__webpack_require__(627));
-
-var _createUnionTypeAnnotation = _interopRequireDefault(__webpack_require__(628));
-
-var _generated2 = __webpack_require__(40);
+var _createTypeAnnotationBasedOnTypeof = _interopRequireDefault(__webpack_require__(628));
+
+var _createUnionTypeAnnotation = _interopRequireDefault(__webpack_require__(629));
+
+var _generated2 = __webpack_require__(39);
 
 Object.keys(_generated2).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _generated2[key];
     }
   });
 });
 
-var _cloneNode = _interopRequireDefault(__webpack_require__(116));
-
-var _clone = _interopRequireDefault(__webpack_require__(328));
-
-var _cloneDeep = _interopRequireDefault(__webpack_require__(629));
-
-var _cloneWithoutLoc = _interopRequireDefault(__webpack_require__(630));
-
-var _addComment = _interopRequireDefault(__webpack_require__(631));
-
-var _addComments = _interopRequireDefault(__webpack_require__(329));
-
-var _inheritInnerComments = _interopRequireDefault(__webpack_require__(330));
-
-var _inheritLeadingComments = _interopRequireDefault(__webpack_require__(333));
-
-var _inheritsComments = _interopRequireDefault(__webpack_require__(334));
-
-var _inheritTrailingComments = _interopRequireDefault(__webpack_require__(335));
-
-var _removeComments = _interopRequireDefault(__webpack_require__(643));
-
-var _generated3 = __webpack_require__(644);
+var _cloneNode = _interopRequireDefault(__webpack_require__(115));
+
+var _clone = _interopRequireDefault(__webpack_require__(330));
+
+var _cloneDeep = _interopRequireDefault(__webpack_require__(630));
+
+var _cloneWithoutLoc = _interopRequireDefault(__webpack_require__(631));
+
+var _addComment = _interopRequireDefault(__webpack_require__(632));
+
+var _addComments = _interopRequireDefault(__webpack_require__(331));
+
+var _inheritInnerComments = _interopRequireDefault(__webpack_require__(332));
+
+var _inheritLeadingComments = _interopRequireDefault(__webpack_require__(335));
+
+var _inheritsComments = _interopRequireDefault(__webpack_require__(336));
+
+var _inheritTrailingComments = _interopRequireDefault(__webpack_require__(337));
+
+var _removeComments = _interopRequireDefault(__webpack_require__(644));
+
+var _generated3 = __webpack_require__(645);
 
 Object.keys(_generated3).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _generated3[key];
     }
   });
 });
 
-var _constants = __webpack_require__(65);
+var _constants = __webpack_require__(66);
 
 Object.keys(_constants).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _constants[key];
     }
   });
 });
 
-var _ensureBlock = _interopRequireDefault(__webpack_require__(645));
-
-var _toBindingIdentifierName = _interopRequireDefault(__webpack_require__(646));
-
-var _toBlock = _interopRequireDefault(__webpack_require__(336));
-
-var _toComputedKey = _interopRequireDefault(__webpack_require__(647));
-
-var _toExpression = _interopRequireDefault(__webpack_require__(648));
-
-var _toIdentifier = _interopRequireDefault(__webpack_require__(337));
-
-var _toKeyAlias = _interopRequireDefault(__webpack_require__(649));
-
-var _toSequenceExpression = _interopRequireDefault(__webpack_require__(650));
-
-var _toStatement = _interopRequireDefault(__webpack_require__(652));
-
-var _valueToNode = _interopRequireDefault(__webpack_require__(653));
+var _ensureBlock = _interopRequireDefault(__webpack_require__(646));
+
+var _toBindingIdentifierName = _interopRequireDefault(__webpack_require__(647));
+
+var _toBlock = _interopRequireDefault(__webpack_require__(338));
+
+var _toComputedKey = _interopRequireDefault(__webpack_require__(648));
+
+var _toExpression = _interopRequireDefault(__webpack_require__(649));
+
+var _toIdentifier = _interopRequireDefault(__webpack_require__(339));
+
+var _toKeyAlias = _interopRequireDefault(__webpack_require__(650));
+
+var _toSequenceExpression = _interopRequireDefault(__webpack_require__(651));
+
+var _toStatement = _interopRequireDefault(__webpack_require__(653));
+
+var _valueToNode = _interopRequireDefault(__webpack_require__(654));
 
 var _definitions = __webpack_require__(44);
 
 Object.keys(_definitions).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _definitions[key];
     }
   });
 });
 
-var _appendToMemberExpression = _interopRequireDefault(__webpack_require__(657));
-
-var _inherits = _interopRequireDefault(__webpack_require__(658));
-
-var _prependToMemberExpression = _interopRequireDefault(__webpack_require__(659));
-
-var _removeProperties = _interopRequireDefault(__webpack_require__(340));
-
-var _removePropertiesDeep = _interopRequireDefault(__webpack_require__(338));
-
-var _removeTypeDuplicates = _interopRequireDefault(__webpack_require__(327));
-
-var _getBindingIdentifiers = _interopRequireDefault(__webpack_require__(146));
-
-var _getOuterBindingIdentifiers = _interopRequireDefault(__webpack_require__(660));
-
-var _traverse = _interopRequireDefault(__webpack_require__(661));
-
-var _traverseFast = _interopRequireDefault(__webpack_require__(339));
+var _appendToMemberExpression = _interopRequireDefault(__webpack_require__(658));
+
+var _inherits = _interopRequireDefault(__webpack_require__(659));
+
+var _prependToMemberExpression = _interopRequireDefault(__webpack_require__(660));
+
+var _removeProperties = _interopRequireDefault(__webpack_require__(342));
+
+var _removePropertiesDeep = _interopRequireDefault(__webpack_require__(340));
+
+var _removeTypeDuplicates = _interopRequireDefault(__webpack_require__(329));
+
+var _getBindingIdentifiers = _interopRequireDefault(__webpack_require__(145));
+
+var _getOuterBindingIdentifiers = _interopRequireDefault(__webpack_require__(661));
+
+var _traverse = _interopRequireDefault(__webpack_require__(662));
+
+var _traverseFast = _interopRequireDefault(__webpack_require__(341));
 
 var _shallowEqual = _interopRequireDefault(__webpack_require__(239));
 
 var _is = _interopRequireDefault(__webpack_require__(251));
 
-var _isBinding = _interopRequireDefault(__webpack_require__(662));
-
-var _isBlockScoped = _interopRequireDefault(__webpack_require__(663));
-
-var _isImmutable = _interopRequireDefault(__webpack_require__(664));
-
-var _isLet = _interopRequireDefault(__webpack_require__(341));
-
-var _isNode = _interopRequireDefault(__webpack_require__(326));
-
-var _isNodesEquivalent = _interopRequireDefault(__webpack_require__(665));
-
-var _isReferenced = _interopRequireDefault(__webpack_require__(666));
-
-var _isScope = _interopRequireDefault(__webpack_require__(667));
-
-var _isSpecifierDefault = _interopRequireDefault(__webpack_require__(668));
+var _isBinding = _interopRequireDefault(__webpack_require__(663));
+
+var _isBlockScoped = _interopRequireDefault(__webpack_require__(664));
+
+var _isImmutable = _interopRequireDefault(__webpack_require__(665));
+
+var _isLet = _interopRequireDefault(__webpack_require__(343));
+
+var _isNode = _interopRequireDefault(__webpack_require__(328));
+
+var _isNodesEquivalent = _interopRequireDefault(__webpack_require__(666));
+
+var _isReferenced = _interopRequireDefault(__webpack_require__(667));
+
+var _isScope = _interopRequireDefault(__webpack_require__(668));
+
+var _isSpecifierDefault = _interopRequireDefault(__webpack_require__(669));
 
 var _isType = _interopRequireDefault(__webpack_require__(252));
 
-var _isValidES3Identifier = _interopRequireDefault(__webpack_require__(669));
-
-var _isValidIdentifier = _interopRequireDefault(__webpack_require__(115));
-
-var _isVar = _interopRequireDefault(__webpack_require__(670));
-
-var _matchesPattern = _interopRequireDefault(__webpack_require__(308));
-
-var _validate = _interopRequireDefault(__webpack_require__(325));
-
-var _buildMatchMemberExpression = _interopRequireDefault(__webpack_require__(307));
+var _isValidES3Identifier = _interopRequireDefault(__webpack_require__(670));
+
+var _isValidIdentifier = _interopRequireDefault(__webpack_require__(114));
+
+var _isVar = _interopRequireDefault(__webpack_require__(671));
+
+var _matchesPattern = _interopRequireDefault(__webpack_require__(310));
+
+var _validate = _interopRequireDefault(__webpack_require__(327));
+
+var _buildMatchMemberExpression = _interopRequireDefault(__webpack_require__(309));
 
 var _generated4 = __webpack_require__(19);
 
 Object.keys(_generated4).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
   Object.defineProperty(exports, key, {
     enumerable: true,
@@ -4845,17 +4845,17 @@ function isSpreadProperty(node, opts) {
   return false;
 }
 
 /***/ }),
 /* 20 */,
 /* 21 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var freeGlobal = __webpack_require__(70);
+var freeGlobal = __webpack_require__(71);
 
 /** Detect free variable `self`. */
 var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
 
 /** Used as a reference to the global object. */
 var root = freeGlobal || freeSelf || Function('return this')();
 
 module.exports = root;
@@ -5211,18 +5211,17 @@ function baseGetTag(value) {
 
 module.exports = baseGetTag;
 
 
 /***/ }),
 /* 36 */,
 /* 37 */,
 /* 38 */,
-/* 39 */,
-/* 40 */
+/* 39 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -5439,17 +5438,17 @@ exports.tSTypeAnnotation = exports.tsTyp
 exports.tSTypeParameterInstantiation = exports.tsTypeParameterInstantiation = exports.TSTypeParameterInstantiation = TSTypeParameterInstantiation;
 exports.tSTypeParameterDeclaration = exports.tsTypeParameterDeclaration = exports.TSTypeParameterDeclaration = TSTypeParameterDeclaration;
 exports.tSTypeParameter = exports.tsTypeParameter = exports.TSTypeParameter = TSTypeParameter;
 exports.numberLiteral = exports.NumberLiteral = NumberLiteral;
 exports.regexLiteral = exports.RegexLiteral = RegexLiteral;
 exports.restProperty = exports.RestProperty = RestProperty;
 exports.spreadProperty = exports.SpreadProperty = SpreadProperty;
 
-var _builder = _interopRequireDefault(__webpack_require__(555));
+var _builder = _interopRequireDefault(__webpack_require__(556));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function ArrayExpression(...args) {
   return (0, _builder.default)("ArrayExpression", ...args);
 }
 
 function AssignmentExpression(...args) {
@@ -6316,17 +6315,17 @@ function RestProperty(...args) {
 }
 
 function SpreadProperty(...args) {
   console.trace("The node type SpreadProperty has been renamed to SpreadElement");
   return SpreadProperty("SpreadProperty", ...args);
 }
 
 /***/ }),
-/* 41 */
+/* 40 */
 /***/ (function(module, exports) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
@@ -6739,17 +6738,17 @@ function compareByGeneratedPositionsInfl
   }
 
   return strcmp(mappingA.name, mappingB.name);
 }
 exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
 
 
 /***/ }),
-/* 42 */
+/* 41 */
 /***/ (function(module, exports) {
 
 module.exports = function(module) {
 	if(!module.webpackPolyfill) {
 		module.deprecate = function() {};
 		module.paths = [];
 		// module.parent = undefined by default
 		if(!module.children) module.children = [];
@@ -6767,16 +6766,17 @@ module.exports = function(module) {
 		});
 		module.webpackPolyfill = 1;
 	}
 	return module;
 };
 
 
 /***/ }),
+/* 42 */,
 /* 43 */,
 /* 44 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
@@ -6816,39 +6816,39 @@ Object.defineProperty(exports, "DEPRECAT
   enumerable: true,
   get: function () {
     return _utils.DEPRECATED_KEYS;
   }
 });
 exports.TYPES = void 0;
 
 function _toFastProperties() {
-  const data = _interopRequireDefault(__webpack_require__(616));
+  const data = _interopRequireDefault(__webpack_require__(617));
 
   _toFastProperties = function () {
     return data;
   };
 
   return data;
 }
 
 __webpack_require__(250);
 
 __webpack_require__(253);
 
-__webpack_require__(620);
-
 __webpack_require__(621);
 
 __webpack_require__(622);
 
 __webpack_require__(623);
 
 __webpack_require__(624);
 
+__webpack_require__(625);
+
 var _utils = __webpack_require__(56);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 (0, _toFastProperties().default)(_utils.VISITOR_KEYS);
 (0, _toFastProperties().default)(_utils.ALIAS_KEYS);
 (0, _toFastProperties().default)(_utils.FLIPPED_ALIAS_KEYS);
 (0, _toFastProperties().default)(_utils.NODE_FIELDS);
@@ -6875,33 +6875,33 @@ exports.parse = parse;
 exports.parseConsoleScript = parseConsoleScript;
 exports.parseScript = parseScript;
 exports.getAst = getAst;
 exports.clearASTs = clearASTs;
 exports.traverseAst = traverseAst;
 exports.hasNode = hasNode;
 exports.replaceNode = replaceNode;
 
-var _parseScriptTags = __webpack_require__(671);
+var _parseScriptTags = __webpack_require__(672);
 
 var _parseScriptTags2 = _interopRequireDefault(_parseScriptTags);
 
-var _parser = __webpack_require__(675);
+var _parser = __webpack_require__(676);
 
 var babelParser = _interopRequireWildcard(_parser);
 
 var _types = __webpack_require__(12);
 
 var t = _interopRequireWildcard(_types);
 
-var _isEmpty = __webpack_require__(343);
+var _isEmpty = __webpack_require__(345);
 
 var _isEmpty2 = _interopRequireDefault(_isEmpty);
 
-var _sources = __webpack_require__(344);
+var _sources = __webpack_require__(346);
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 let ASTs = new Map(); /* This Source Code Form is subject to the terms of the Mozilla Public
                        * License, v. 2.0. If a copy of the MPL was not distributed with this
                        * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
@@ -7377,21 +7377,22 @@ const store = {};
 /***/ }),
 /* 57 */,
 /* 58 */,
 /* 59 */,
 /* 60 */,
 /* 61 */,
 /* 62 */,
 /* 63 */,
-/* 64 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseIsNative = __webpack_require__(568),
-    getValue = __webpack_require__(571);
+/* 64 */,
+/* 65 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIsNative = __webpack_require__(569),
+    getValue = __webpack_require__(572);
 
 /**
  * Gets the native function at `key` of `object`.
  *
  * @private
  * @param {Object} object The object to query.
  * @param {string} key The key of the method to get.
  * @returns {*} Returns the function if it's native, else `undefined`.
@@ -7400,17 +7401,17 @@ function getNative(object, key) {
   var value = getValue(object, key);
   return baseIsNative(value) ? value : undefined;
 }
 
 module.exports = getNative;
 
 
 /***/ }),
-/* 65 */
+/* 66 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -7453,20 +7454,20 @@ const INHERIT_KEYS = {
 };
 exports.INHERIT_KEYS = INHERIT_KEYS;
 const BLOCK_SCOPED_SYMBOL = Symbol.for("var used to be block scoped");
 exports.BLOCK_SCOPED_SYMBOL = BLOCK_SCOPED_SYMBOL;
 const NOT_LOCAL_BINDING = Symbol.for("should not be considered a local binding");
 exports.NOT_LOCAL_BINDING = NOT_LOCAL_BINDING;
 
 /***/ }),
-/* 66 */,
 /* 67 */,
 /* 68 */,
-/* 69 */
+/* 69 */,
+/* 70 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseToString = __webpack_require__(83);
 
 /**
  * Converts `value` to a string. An empty string is returned for `null`
  * and `undefined` values. The sign of `-0` is preserved.
  *
@@ -7490,28 +7491,27 @@ var baseToString = __webpack_require__(8
 function toString(value) {
   return value == null ? '' : baseToString(value);
 }
 
 module.exports = toString;
 
 
 /***/ }),
-/* 70 */
+/* 71 */
 /***/ (function(module, exports, __webpack_require__) {
 
 /* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */
 var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
 
 module.exports = freeGlobal;
 
 /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(27)))
 
 /***/ }),
-/* 71 */,
 /* 72 */,
 /* 73 */,
 /* 74 */,
 /* 75 */,
 /* 76 */,
 /* 77 */,
 /* 78 */,
 /* 79 */,
@@ -7689,27 +7689,26 @@ module.exports = objectToString;
 /* 105 */,
 /* 106 */,
 /* 107 */,
 /* 108 */,
 /* 109 */,
 /* 110 */,
 /* 111 */,
 /* 112 */,
-/* 113 */,
-/* 114 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var DataView = __webpack_require__(601),
+/* 113 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var DataView = __webpack_require__(602),
     Map = __webpack_require__(241),
-    Promise = __webpack_require__(602),
-    Set = __webpack_require__(322),
-    WeakMap = __webpack_require__(603),
+    Promise = __webpack_require__(603),
+    Set = __webpack_require__(324),
+    WeakMap = __webpack_require__(604),
     baseGetTag = __webpack_require__(35),
-    toSource = __webpack_require__(310);
+    toSource = __webpack_require__(312);
 
 /** `Object#toString` result references. */
 var mapTag = '[object Map]',
     objectTag = '[object Object]',
     promiseTag = '[object Promise]',
     setTag = '[object Set]',
     weakMapTag = '[object WeakMap]';
 
@@ -7754,29 +7753,29 @@ if ((DataView && getTag(new DataView(new
     return result;
   };
 }
 
 module.exports = getTag;
 
 
 /***/ }),
-/* 115 */
+/* 114 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = isValidIdentifier;
 
 function _esutils() {
-  const data = _interopRequireDefault(__webpack_require__(617));
+  const data = _interopRequireDefault(__webpack_require__(618));
 
   _esutils = function () {
     return data;
   };
 
   return data;
 }
 
@@ -7788,17 +7787,17 @@ function isValidIdentifier(name) {
   } else if (name === "await") {
     return false;
   } else {
     return _esutils().default.keyword.isIdentifierNameES6(name);
   }
 }
 
 /***/ }),
-/* 116 */
+/* 115 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -7864,29 +7863,29 @@ function cloneNode(node, deep = true) {
   if (has(node, "extra")) {
     newNode.extra = Object.assign({}, node.extra);
   }
 
   return newNode;
 }
 
 /***/ }),
-/* 117 */
+/* 116 */
 /***/ (function(module, exports, __webpack_require__) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 
-var base64VLQ = __webpack_require__(118);
-var util = __webpack_require__(41);
-var ArraySet = __webpack_require__(119).ArraySet;
+var base64VLQ = __webpack_require__(117);
+var util = __webpack_require__(40);
+var ArraySet = __webpack_require__(118).ArraySet;
 var MappingList = __webpack_require__(259).MappingList;
 
 /**
  * An instance of the SourceMapGenerator represents a source map which is
  * being built incrementally. You may pass an object with the following
  * properties:
  *
  *   - file: The filename of the generated source.
@@ -8286,17 +8285,17 @@ SourceMapGenerator.prototype.toString =
   function SourceMapGenerator_toString() {
     return JSON.stringify(this.toJSON());
   };
 
 exports.SourceMapGenerator = SourceMapGenerator;
 
 
 /***/ }),
-/* 118 */
+/* 117 */
 /***/ (function(module, exports, __webpack_require__) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  *
@@ -8432,27 +8431,27 @@ exports.decode = function base64VLQ_deco
   } while (continuation);
 
   aOutParam.value = fromVLQSigned(result);
   aOutParam.rest = aIndex;
 };
 
 
 /***/ }),
-/* 119 */
+/* 118 */
 /***/ (function(module, exports, __webpack_require__) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 
-var util = __webpack_require__(41);
+var util = __webpack_require__(40);
 var has = Object.prototype.hasOwnProperty;
 var hasNativeMap = typeof Map !== "undefined";
 
 /**
  * A data structure which is a combination of an array and a set. Adding a new
  * member is O(1), testing for membership is O(1), and finding the index of an
  * element is O(1). Removing elements from the set is not supported. Only
  * strings are supported for membership.
@@ -8559,38 +8558,38 @@ ArraySet.prototype.at = function ArraySe
 ArraySet.prototype.toArray = function ArraySet_toArray() {
   return this._array.slice();
 };
 
 exports.ArraySet = ArraySet;
 
 
 /***/ }),
+/* 119 */,
 /* 120 */,
 /* 121 */,
 /* 122 */,
 /* 123 */,
 /* 124 */,
 /* 125 */,
 /* 126 */,
 /* 127 */,
 /* 128 */,
 /* 129 */,
 /* 130 */,
 /* 131 */,
 /* 132 */,
-/* 133 */,
-/* 134 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var listCacheClear = __webpack_require__(558),
-    listCacheDelete = __webpack_require__(559),
-    listCacheGet = __webpack_require__(560),
-    listCacheHas = __webpack_require__(561),
-    listCacheSet = __webpack_require__(562);
+/* 133 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var listCacheClear = __webpack_require__(559),
+    listCacheDelete = __webpack_require__(560),
+    listCacheGet = __webpack_require__(561),
+    listCacheHas = __webpack_require__(562),
+    listCacheSet = __webpack_require__(563);
 
 /**
  * Creates an list cache object.
  *
  * @private
  * @constructor
  * @param {Array} [entries] The key-value pairs to cache.
  */
@@ -8611,20 +8610,20 @@ ListCache.prototype['delete'] = listCach
 ListCache.prototype.get = listCacheGet;
 ListCache.prototype.has = listCacheHas;
 ListCache.prototype.set = listCacheSet;
 
 module.exports = ListCache;
 
 
 /***/ }),
-/* 135 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var eq = __webpack_require__(136);
+/* 134 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var eq = __webpack_require__(135);
 
 /**
  * Gets the index at which the `key` is found in `array` of key-value pairs.
  *
  * @private
  * @param {Array} array The array to inspect.
  * @param {*} key The key to search for.
  * @returns {number} Returns the index of the matched value, else `-1`.
@@ -8638,17 +8637,17 @@ function assocIndexOf(array, key) {
   }
   return -1;
 }
 
 module.exports = assocIndexOf;
 
 
 /***/ }),
-/* 136 */
+/* 135 */
 /***/ (function(module, exports) {
 
 /**
  * Performs a
  * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
  * comparison between two values to determine if they are equivalent.
  *
  * @static
@@ -8681,32 +8680,32 @@ module.exports = assocIndexOf;
 function eq(value, other) {
   return value === other || (value !== value && other !== other);
 }
 
 module.exports = eq;
 
 
 /***/ }),
-/* 137 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getNative = __webpack_require__(64);
+/* 136 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getNative = __webpack_require__(65);
 
 /* Built-in method references that are verified to be native. */
 var nativeCreate = getNative(Object, 'create');
 
 module.exports = nativeCreate;
 
 
 /***/ }),
-/* 138 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var isKeyable = __webpack_require__(580);
+/* 137 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isKeyable = __webpack_require__(581);
 
 /**
  * Gets the data for `map`.
  *
  * @private
  * @param {Object} map The map to query.
  * @param {string} key The reference key.
  * @returns {*} Returns the map data.
@@ -8717,21 +8716,21 @@ function getMapData(map, key) {
     ? data[typeof key == 'string' ? 'string' : 'hash']
     : data.map;
 }
 
 module.exports = getMapData;
 
 
 /***/ }),
-/* 139 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var assignValue = __webpack_require__(311),
-    baseAssignValue = __webpack_require__(312);
+/* 138 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var assignValue = __webpack_require__(313),
+    baseAssignValue = __webpack_require__(314);
 
 /**
  * Copies properties of `source` to `object`.
  *
  * @private
  * @param {Object} source The object to copy properties from.
  * @param {Array} props The property identifiers to copy.
  * @param {Object} [object={}] The object to copy properties to.
@@ -8763,22 +8762,22 @@ function copyObject(source, props, objec
   }
   return object;
 }
 
 module.exports = copyObject;
 
 
 /***/ }),
-/* 140 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var arrayLikeKeys = __webpack_require__(313),
-    baseKeys = __webpack_require__(314),
-    isArrayLike = __webpack_require__(145);
+/* 139 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayLikeKeys = __webpack_require__(315),
+    baseKeys = __webpack_require__(316),
+    isArrayLike = __webpack_require__(144);
 
 /**
  * Creates an array of the own enumerable property names of `object`.
  *
  * **Note:** Non-object values are coerced to objects. See the
  * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
  * for more details.
  *
@@ -8806,21 +8805,21 @@ var arrayLikeKeys = __webpack_require__(
 function keys(object) {
   return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
 }
 
 module.exports = keys;
 
 
 /***/ }),
-/* 141 */
+/* 140 */
 /***/ (function(module, exports, __webpack_require__) {
 
 /* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(21),
-    stubFalse = __webpack_require__(589);
+    stubFalse = __webpack_require__(590);
 
 /** Detect free variable `exports`. */
 var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
 
 /** Detect free variable `module`. */
 var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
 
 /** Detect the popular CommonJS extension `module.exports`. */
@@ -8848,20 +8847,20 @@ var nativeIsBuffer = Buffer ? Buffer.isB
  *
  * _.isBuffer(new Uint8Array(2));
  * // => false
  */
 var isBuffer = nativeIsBuffer || stubFalse;
 
 module.exports = isBuffer;
 
-/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(42)(module)))
-
-/***/ }),
-/* 142 */
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(41)(module)))
+
+/***/ }),
+/* 141 */
 /***/ (function(module, exports) {
 
 /**
  * The base implementation of `_.unary` without support for storing metadata.
  *
  * @private
  * @param {Function} func The function to cap arguments for.
  * @returns {Function} Returns the new capped function.
@@ -8871,20 +8870,20 @@ function baseUnary(func) {
     return func(value);
   };
 }
 
 module.exports = baseUnary;
 
 
 /***/ }),
-/* 143 */
-/***/ (function(module, exports, __webpack_require__) {
-
-/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(70);
+/* 142 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(71);
 
 /** Detect free variable `exports`. */
 var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
 
 /** Detect free variable `module`. */
 var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
 
 /** Detect the popular CommonJS extension `module.exports`. */
@@ -8905,20 +8904,20 @@ var nodeUtil = (function() {
 
     // Legacy `process.binding('util')` for Node.js < 10.
     return freeProcess && freeProcess.binding && freeProcess.binding('util');
   } catch (e) {}
 }());
 
 module.exports = nodeUtil;
 
-/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(42)(module)))
-
-/***/ }),
-/* 144 */
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(41)(module)))
+
+/***/ }),
+/* 143 */
 /***/ (function(module, exports) {
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
 /**
  * Checks if `value` is likely a prototype object.
  *
@@ -8932,20 +8931,20 @@ function isPrototype(value) {
 
   return value === proto;
 }
 
 module.exports = isPrototype;
 
 
 /***/ }),
-/* 145 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var isFunction = __webpack_require__(309),
+/* 144 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isFunction = __webpack_require__(311),
     isLength = __webpack_require__(246);
 
 /**
  * Checks if `value` is array-like. A value is considered array-like if it's
  * not a function and has a `value.length` that's an integer greater than or
  * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
  *
  * @static
@@ -8971,17 +8970,17 @@ var isFunction = __webpack_require__(309
 function isArrayLike(value) {
   return value != null && isLength(value.length) && !isFunction(value);
 }
 
 module.exports = isArrayLike;
 
 
 /***/ }),
-/* 146 */
+/* 145 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -9080,17 +9079,17 @@ getBindingIdentifiers.keys = {
   AssignmentPattern: ["left"],
   ArrayPattern: ["elements"],
   ObjectPattern: ["properties"],
   VariableDeclaration: ["declarations"],
   VariableDeclarator: ["id"]
 };
 
 /***/ }),
-/* 147 */
+/* 146 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -9102,25 +9101,24 @@ exports.getObjectExpressionValue = getOb
 exports.getCode = getCode;
 exports.getComments = getComments;
 exports.getSpecifiers = getSpecifiers;
 exports.isComputedExpression = isComputedExpression;
 exports.getMemberExpression = getMemberExpression;
 exports.getVariables = getVariables;
 exports.getPatternIdentifiers = getPatternIdentifiers;
 exports.isTopLevel = isTopLevel;
-exports.nodeHasSameLocation = nodeHasSameLocation;
-exports.sameLocation = sameLocation;
+exports.nodeLocationKey = nodeLocationKey;
 exports.getFunctionParameterNames = getFunctionParameterNames;
 
 var _types = __webpack_require__(12);
 
 var t = _interopRequireWildcard(_types);
 
-var _generator = __webpack_require__(148);
+var _generator = __webpack_require__(147);
 
 var _generator2 = _interopRequireDefault(_generator);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
@@ -9268,22 +9266,19 @@ function getIdentifiers(items) {
 }
 
 // Top Level checks the number of "body" nodes in the ancestor chain
 // if the node is top-level, then it shoul only have one body.
 function isTopLevel(ancestors) {
   return ancestors.filter(ancestor => ancestor.key == "body").length == 1;
 }
 
-function nodeHasSameLocation(a, b) {
-  return sameLocation(a.location, b.location);
-}
-
-function sameLocation(a, b) {
-  return a.start.line == b.start.line && a.start.column == b.start.column && a.end.line == b.end.line && a.end.column == b.end.column;
+function nodeLocationKey(a) {
+  const { start, end } = a.location;
+  return `${start.line}:${start.column}:${end.line}:${end.column}`;
 }
 
 function getFunctionParameterNames(path) {
   if (path.node.params != null) {
     return path.node.params.map(param => {
       if (param.type !== "AssignmentPattern") {
         return param.name;
       }
@@ -9301,31 +9296,31 @@ function getFunctionParameterNames(path)
         return `${param.left.name} = null`;
       }
     });
   }
   return [];
 }
 
 /***/ }),
-/* 148 */
+/* 147 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = _default;
 exports.CodeGenerator = void 0;
 
-var _sourceMap = _interopRequireDefault(__webpack_require__(676));
-
-var _printer = _interopRequireDefault(__webpack_require__(677));
+var _sourceMap = _interopRequireDefault(__webpack_require__(677));
+
+var _printer = _interopRequireDefault(__webpack_require__(678));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 class Generator extends _printer.default {
   constructor(ast, opts = {}, code) {
     const format = normalizeOptions(code, opts);
     const map = opts.sourceMaps ? new _sourceMap.default(opts, code) : null;
     super(format, map);
@@ -9399,20 +9394,20 @@ class CodeGenerator {
 exports.CodeGenerator = CodeGenerator;
 
 function _default(ast, opts, code) {
   const gen = new Generator(ast, opts, code);
   return gen.generate();
 }
 
 /***/ }),
-/* 149 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var toFinite = __webpack_require__(679);
+/* 148 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var toFinite = __webpack_require__(680);
 
 /**
  * Converts `value` to an integer.
  *
  * **Note:** This method is loosely based on
  * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
  *
  * @static
@@ -9441,17 +9436,17 @@ function toInteger(value) {
 
   return result === result ? (remainder ? result - remainder : result) : 0;
 }
 
 module.exports = toInteger;
 
 
 /***/ }),
-/* 150 */
+/* 149 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 /* WEBPACK VAR INJECTION */(function(global) {/*!
  * The buffer module from node.js, for the browser.
  *
  * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
  * @license  MIT
@@ -11238,17 +11233,17 @@ function blitBuffer (src, dst, offset, l
 
 function isnan (val) {
   return val !== val // eslint-disable-line no-self-compare
 }
 
 /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(27)))
 
 /***/ }),
-/* 151 */
+/* 150 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var isSymbol = __webpack_require__(51);
 
 /** Used as references for various `Number` constants. */
 var INFINITY = 1 / 0;
 
 /**
@@ -11265,16 +11260,17 @@ function toKey(value) {
   var result = (value + '');
   return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
 }
 
 module.exports = toKey;
 
 
 /***/ }),
+/* 151 */,
 /* 152 */,
 /* 153 */,
 /* 154 */,
 /* 155 */,
 /* 156 */,
 /* 157 */,
 /* 158 */,
 /* 159 */,
@@ -11367,44 +11363,47 @@ Object.defineProperty(exports, "__esModu
 });
 exports.clearSymbols = clearSymbols;
 exports.getSymbols = getSymbols;
 
 var _types = __webpack_require__(12);
 
 var t = _interopRequireWildcard(_types);
 
-var _simplePath = __webpack_require__(342);
+var _simplePath = __webpack_require__(344);
 
 var _simplePath2 = _interopRequireDefault(_simplePath);
 
 var _ast = __webpack_require__(49);
 
-var _helpers = __webpack_require__(147);
-
-var _inferClassName = __webpack_require__(699);
-
-var _getFunctionName = __webpack_require__(347);
+var _helpers = __webpack_require__(146);
+
+var _inferClassName = __webpack_require__(700);
+
+var _getFunctionName = __webpack_require__(349);
 
 var _getFunctionName2 = _interopRequireDefault(_getFunctionName);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 let symbolDeclarations = new Map();
 
 function getUniqueIdentifiers(identifiers) {
   const newIdentifiers = [];
+  const locationKeys = new Set();
   for (const newId of identifiers) {
-    if (!newIdentifiers.find(id => (0, _helpers.nodeHasSameLocation)(id, newId))) {
+    const key = (0, _helpers.nodeLocationKey)(newId);
+    if (!locationKeys.has(key)) {
+      locationKeys.add(key);
       newIdentifiers.push(newId);
     }
   }
 
   return newIdentifiers;
 }
 
 /* eslint-disable complexity */
@@ -11785,22 +11784,22 @@ function shallowEqual(actual, expected) 
 
   return true;
 }
 
 /***/ }),
 /* 240 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var ListCache = __webpack_require__(134),
-    stackClear = __webpack_require__(563),
-    stackDelete = __webpack_require__(564),
-    stackGet = __webpack_require__(565),
-    stackHas = __webpack_require__(566),
-    stackSet = __webpack_require__(567);
+var ListCache = __webpack_require__(133),
+    stackClear = __webpack_require__(564),
+    stackDelete = __webpack_require__(565),
+    stackGet = __webpack_require__(566),
+    stackHas = __webpack_require__(567),
+    stackSet = __webpack_require__(568);
 
 /**
  * Creates a stack cache object to store key-value pairs.
  *
  * @private
  * @constructor
  * @param {Array} [entries] The key-value pairs to cache.
  */
@@ -11818,34 +11817,34 @@ Stack.prototype.set = stackSet;
 
 module.exports = Stack;
 
 
 /***/ }),
 /* 241 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var getNative = __webpack_require__(64),
+var getNative = __webpack_require__(65),
     root = __webpack_require__(21);
 
 /* Built-in method references that are verified to be native. */
 var Map = getNative(root, 'Map');
 
 module.exports = Map;
 
 
 /***/ }),
 /* 242 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var mapCacheClear = __webpack_require__(572),
-    mapCacheDelete = __webpack_require__(579),
-    mapCacheGet = __webpack_require__(581),
-    mapCacheHas = __webpack_require__(582),
-    mapCacheSet = __webpack_require__(583);
+var mapCacheClear = __webpack_require__(573),
+    mapCacheDelete = __webpack_require__(580),
+    mapCacheGet = __webpack_require__(582),
+    mapCacheHas = __webpack_require__(583),
+    mapCacheSet = __webpack_require__(584);
 
 /**
  * Creates a map cache object to store key-value pairs.
  *
  * @private
  * @constructor
  * @param {Array} [entries] The key-value pairs to cache.
  */
@@ -11869,17 +11868,17 @@ MapCache.prototype.set = mapCacheSet;
 
 module.exports = MapCache;
 
 
 /***/ }),
 /* 243 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseIsArguments = __webpack_require__(588),
+var baseIsArguments = __webpack_require__(589),
     isObjectLike = __webpack_require__(29);
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
 /** Used to check objects for own properties. */
 var hasOwnProperty = objectProto.hasOwnProperty;
 
@@ -11942,19 +11941,19 @@ function isIndex(value, length) {
 
 module.exports = isIndex;
 
 
 /***/ }),
 /* 245 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseIsTypedArray = __webpack_require__(590),
-    baseUnary = __webpack_require__(142),
-    nodeUtil = __webpack_require__(143);
+var baseIsTypedArray = __webpack_require__(591),
+    baseUnary = __webpack_require__(141),
+    nodeUtil = __webpack_require__(142);
 
 /* Node.js helper references. */
 var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
 
 /**
  * Checks if `value` is classified as a typed array.
  *
  * @static
@@ -12016,18 +12015,18 @@ function isLength(value) {
 
 module.exports = isLength;
 
 
 /***/ }),
 /* 247 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var arrayFilter = __webpack_require__(598),
-    stubArray = __webpack_require__(317);
+var arrayFilter = __webpack_require__(599),
+    stubArray = __webpack_require__(319);
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
 /** Built-in value references. */
 var propertyIsEnumerable = objectProto.propertyIsEnumerable;
 
 /* Built-in method references for those with the same name as other `lodash` methods. */
@@ -12052,29 +12051,29 @@ var getSymbols = !nativeGetSymbols ? stu
 
 module.exports = getSymbols;
 
 
 /***/ }),
 /* 248 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var overArg = __webpack_require__(315);
+var overArg = __webpack_require__(317);
 
 /** Built-in value references. */
 var getPrototype = overArg(Object.getPrototypeOf, Object);
 
 module.exports = getPrototype;
 
 
 /***/ }),
 /* 249 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Uint8Array = __webpack_require__(323);
+var Uint8Array = __webpack_require__(325);
 
 /**
  * Creates a clone of `arrayBuffer`.
  *
  * @private
  * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
  * @returns {ArrayBuffer} Returns the cloned array buffer.
  */
@@ -12094,19 +12093,19 @@ module.exports = cloneArrayBuffer;
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.patternLikeCommon = exports.functionDeclarationCommon = exports.functionTypeAnnotationCommon = exports.functionCommon = void 0;
 
-var _isValidIdentifier = _interopRequireDefault(__webpack_require__(115));
-
-var _constants = __webpack_require__(65);
+var _isValidIdentifier = _interopRequireDefault(__webpack_require__(114));
+
+var _constants = __webpack_require__(66);
 
 var _utils = _interopRequireWildcard(__webpack_require__(56));
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 (0, _utils.default)("ArrayExpression", {
@@ -13268,17 +13267,17 @@ exports.classMethodOrDeclareMethodCommon
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = inherit;
 
 function _uniq() {
-  const data = _interopRequireDefault(__webpack_require__(632));
+  const data = _interopRequireDefault(__webpack_require__(633));
 
   _uniq = function () {
     return data;
   };
 
   return data;
 }
 
@@ -13348,17 +13347,17 @@ module.exports = setToArray;
 /* 257 */
 /***/ (function(module, exports, __webpack_require__) {
 
 /*
  * Copyright 2009-2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE.txt or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
-exports.SourceMapGenerator = __webpack_require__(117).SourceMapGenerator;
+exports.SourceMapGenerator = __webpack_require__(116).SourceMapGenerator;
 exports.SourceMapConsumer = __webpack_require__(260).SourceMapConsumer;
 exports.SourceNode = __webpack_require__(263).SourceNode;
 
 
 /***/ }),
 /* 258 */
 /***/ (function(module, exports) {
 
@@ -13437,17 +13436,17 @@ exports.decode = function (charCode) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2014 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 
-var util = __webpack_require__(41);
+var util = __webpack_require__(40);
 
 /**
  * Determine whether mappingB is after mappingA with respect to generated
  * position.
  */
 function generatedPositionAfter(mappingA, mappingB) {
   // Optimized for most common case
   var lineA = mappingA.generatedLine;
@@ -13522,20 +13521,20 @@ exports.MappingList = MappingList;
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 
-var util = __webpack_require__(41);
+var util = __webpack_require__(40);
 var binarySearch = __webpack_require__(261);
-var ArraySet = __webpack_require__(119).ArraySet;
-var base64VLQ = __webpack_require__(118);
+var ArraySet = __webpack_require__(118).ArraySet;
+var base64VLQ = __webpack_require__(117);
 var quickSort = __webpack_require__(262).quickSort;
 
 function SourceMapConsumer(aSourceMap) {
   var sourceMap = aSourceMap;
   if (typeof aSourceMap === 'string') {
     sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
   }
 
@@ -14847,18 +14846,18 @@ exports.quickSort = function (ary, compa
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 
-var SourceMapGenerator = __webpack_require__(117).SourceMapGenerator;
-var util = __webpack_require__(41);
+var SourceMapGenerator = __webpack_require__(116).SourceMapGenerator;
+var util = __webpack_require__(40);
 
 // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
 // operating systems these days (capturing the result).
 var REGEX_NEWLINE = /(\r?\n)/;
 
 // Newline character code for charCodeAt() comparisons
 var NEWLINE_CODE = 10;
 
@@ -15289,17 +15288,17 @@ function t() {
   t = function () {
     return data;
   };
 
   return data;
 }
 
 function _jsesc() {
-  const data = _interopRequireDefault(__webpack_require__(694));
+  const data = _interopRequireDefault(__webpack_require__(695));
 
   _jsesc = function () {
     return data;
   };
 
   return data;
 }
 
@@ -15772,38 +15771,40 @@ module.exports = isKey;
 /* 299 */,
 /* 300 */,
 /* 301 */,
 /* 302 */,
 /* 303 */,
 /* 304 */,
 /* 305 */,
 /* 306 */,
-/* 307 */
+/* 307 */,
+/* 308 */,
+/* 309 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = buildMatchMemberExpression;
 
-var _matchesPattern = _interopRequireDefault(__webpack_require__(308));
+var _matchesPattern = _interopRequireDefault(__webpack_require__(310));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function buildMatchMemberExpression(match, allowPartial) {
   const parts = match.split(".");
   return member => (0, _matchesPattern.default)(member, parts, allowPartial);
 }
 
 /***/ }),
-/* 308 */
+/* 310 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -15839,17 +15840,17 @@ function matchesPattern(member, match, a
 
     if (parts[i] !== value) return false;
   }
 
   return true;
 }
 
 /***/ }),
-/* 309 */
+/* 311 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseGetTag = __webpack_require__(35),
     isObject = __webpack_require__(55);
 
 /** `Object#toString` result references. */
 var asyncTag = '[object AsyncFunction]',
     funcTag = '[object Function]',
@@ -15882,17 +15883,17 @@ function isFunction(value) {
   var tag = baseGetTag(value);
   return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
 }
 
 module.exports = isFunction;
 
 
 /***/ }),
-/* 310 */
+/* 312 */
 /***/ (function(module, exports) {
 
 /** Used for built-in method references. */
 var funcProto = Function.prototype;
 
 /** Used to resolve the decompiled source of functions. */
 var funcToString = funcProto.toString;
 
@@ -15914,21 +15915,21 @@ function toSource(func) {
   }
   return '';
 }
 
 module.exports = toSource;
 
 
 /***/ }),
-/* 311 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseAssignValue = __webpack_require__(312),
-    eq = __webpack_require__(136);
+/* 313 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseAssignValue = __webpack_require__(314),
+    eq = __webpack_require__(135);
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
 /** Used to check objects for own properties. */
 var hasOwnProperty = objectProto.hasOwnProperty;
 
 /**
@@ -15948,20 +15949,20 @@ function assignValue(object, key, value)
     baseAssignValue(object, key, value);
   }
 }
 
 module.exports = assignValue;
 
 
 /***/ }),
-/* 312 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var defineProperty = __webpack_require__(585);
+/* 314 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var defineProperty = __webpack_require__(586);
 
 /**
  * The base implementation of `assignValue` and `assignMergeValue` without
  * value checks.
  *
  * @private
  * @param {Object} object The object to modify.
  * @param {string} key The key of the property to assign.
@@ -15979,23 +15980,23 @@ function baseAssignValue(object, key, va
     object[key] = value;
   }
 }
 
 module.exports = baseAssignValue;
 
 
 /***/ }),
-/* 313 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseTimes = __webpack_require__(587),
+/* 315 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseTimes = __webpack_require__(588),
     isArguments = __webpack_require__(243),
     isArray = __webpack_require__(22),
-    isBuffer = __webpack_require__(141),
+    isBuffer = __webpack_require__(140),
     isIndex = __webpack_require__(244),
     isTypedArray = __webpack_require__(245);
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
 /** Used to check objects for own properties. */
 var hasOwnProperty = objectProto.hasOwnProperty;
@@ -16034,21 +16035,21 @@ function arrayLikeKeys(value, inherited)
   }
   return result;
 }
 
 module.exports = arrayLikeKeys;
 
 
 /***/ }),
-/* 314 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var isPrototype = __webpack_require__(144),
-    nativeKeys = __webpack_require__(591);
+/* 316 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isPrototype = __webpack_require__(143),
+    nativeKeys = __webpack_require__(592);
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
 /** Used to check objects for own properties. */
 var hasOwnProperty = objectProto.hasOwnProperty;
 
 /**
@@ -16070,17 +16071,17 @@ function baseKeys(object) {
   }
   return result;
 }
 
 module.exports = baseKeys;
 
 
 /***/ }),
-/* 315 */
+/* 317 */
 /***/ (function(module, exports) {
 
 /**
  * Creates a unary function that invokes `func` with its argument transformed.
  *
  * @private
  * @param {Function} func The function to wrap.
  * @param {Function} transform The argument transform.
@@ -16091,22 +16092,22 @@ function overArg(func, transform) {
     return func(transform(arg));
   };
 }
 
 module.exports = overArg;
 
 
 /***/ }),
-/* 316 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var arrayLikeKeys = __webpack_require__(313),
-    baseKeysIn = __webpack_require__(593),
-    isArrayLike = __webpack_require__(145);
+/* 318 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayLikeKeys = __webpack_require__(315),
+    baseKeysIn = __webpack_require__(594),
+    isArrayLike = __webpack_require__(144);
 
 /**
  * Creates an array of the own and inherited enumerable property names of `object`.
  *
  * **Note:** Non-object values are coerced to objects.
  *
  * @static
  * @memberOf _
@@ -16129,17 +16130,17 @@ var arrayLikeKeys = __webpack_require__(
 function keysIn(object) {
   return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
 }
 
 module.exports = keysIn;
 
 
 /***/ }),
-/* 317 */
+/* 319 */
 /***/ (function(module, exports) {
 
 /**
  * This method returns a new empty array.
  *
  * @static
  * @memberOf _
  * @since 4.13.0
@@ -16158,23 +16159,23 @@ module.exports = keysIn;
 function stubArray() {
   return [];
 }
 
 module.exports = stubArray;
 
 
 /***/ }),
-/* 318 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var arrayPush = __webpack_require__(319),
+/* 320 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayPush = __webpack_require__(321),
     getPrototype = __webpack_require__(248),
     getSymbols = __webpack_require__(247),
-    stubArray = __webpack_require__(317);
+    stubArray = __webpack_require__(319);
 
 /* Built-in method references for those with the same name as other `lodash` methods. */
 var nativeGetSymbols = Object.getOwnPropertySymbols;
 
 /**
  * Creates an array of the own and inherited enumerable symbols of `object`.
  *
  * @private
@@ -16189,17 +16190,17 @@ var getSymbolsIn = !nativeGetSymbols ? s
   }
   return result;
 };
 
 module.exports = getSymbolsIn;
 
 
 /***/ }),
-/* 319 */
+/* 321 */
 /***/ (function(module, exports) {
 
 /**
  * Appends the elements of `values` to `array`.
  *
  * @private
  * @param {Array} array The array to modify.
  * @param {Array} values The values to append.
@@ -16215,42 +16216,42 @@ function arrayPush(array, values) {
   }
   return array;
 }
 
 module.exports = arrayPush;
 
 
 /***/ }),
-/* 320 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseGetAllKeys = __webpack_require__(321),
+/* 322 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseGetAllKeys = __webpack_require__(323),
     getSymbols = __webpack_require__(247),
-    keys = __webpack_require__(140);
+    keys = __webpack_require__(139);
 
 /**
  * Creates an array of own enumerable property names and symbols of `object`.
  *
  * @private
  * @param {Object} object The object to query.
  * @returns {Array} Returns the array of property names and symbols.
  */
 function getAllKeys(object) {
   return baseGetAllKeys(object, keys, getSymbols);
 }
 
 module.exports = getAllKeys;
 
 
 /***/ }),
-/* 321 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var arrayPush = __webpack_require__(319),
+/* 323 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayPush = __webpack_require__(321),
     isArray = __webpack_require__(22);
 
 /**
  * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
  * `keysFunc` and `symbolsFunc` to get the enumerable property names and
  * symbols of `object`.
  *
  * @private
@@ -16263,42 +16264,42 @@ function baseGetAllKeys(object, keysFunc
   var result = keysFunc(object);
   return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
 }
 
 module.exports = baseGetAllKeys;
 
 
 /***/ }),
-/* 322 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getNative = __webpack_require__(64),
+/* 324 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getNative = __webpack_require__(65),
     root = __webpack_require__(21);
 
 /* Built-in method references that are verified to be native. */
 var Set = getNative(root, 'Set');
 
 module.exports = Set;
 
 
 /***/ }),
-/* 323 */
+/* 325 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var root = __webpack_require__(21);
 
 /** Built-in value references. */
 var Uint8Array = root.Uint8Array;
 
 module.exports = Uint8Array;
 
 
 /***/ }),
-/* 324 */
+/* 326 */
 /***/ (function(module, exports) {
 
 /*
   Copyright (C) 2013-2014 Yusuke Suzuki <utatane.tea@gmail.com>
   Copyright (C) 2014 Ivan Nikulin <ifaaan@gmail.com>
 
   Redistribution and use in source and binary forms, with or without
   modification, are permitted provided that the following conditions are met:
@@ -16429,17 +16430,17 @@ module.exports = Uint8Array;
         isIdentifierStartES6: isIdentifierStartES6,
         isIdentifierPartES6: isIdentifierPartES6
     };
 }());
 /* vim: set sw=4 ts=4 et tw=80 : */
 
 
 /***/ }),
-/* 325 */
+/* 327 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -16453,17 +16454,17 @@ function validate(node, key, val) {
   if (!fields) return;
   const field = fields[key];
   if (!field || !field.validate) return;
   if (field.optional && val == null) return;
   field.validate(node, key, val);
 }
 
 /***/ }),
-/* 326 */
+/* 328 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -16471,17 +16472,17 @@ exports.default = isNode;
 
 var _definitions = __webpack_require__(44);
 
 function isNode(node) {
   return !!(node && _definitions.VISITOR_KEYS[node.type]);
 }
 
 /***/ }),
-/* 327 */
+/* 329 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -16551,37 +16552,37 @@ function removeTypeDuplicates(nodes) {
   for (const name in generics) {
     types.push(generics[name]);
   }
 
   return types;
 }
 
 /***/ }),
-/* 328 */
+/* 330 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = clone;
 
-var _cloneNode = _interopRequireDefault(__webpack_require__(116));
+var _cloneNode = _interopRequireDefault(__webpack_require__(115));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function clone(node) {
   return (0, _cloneNode.default)(node, false);
 }
 
 /***/ }),
-/* 329 */
+/* 331 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -16600,17 +16601,17 @@ function addComments(node, type, comment
   } else {
     node[key] = comments;
   }
 
   return node;
 }
 
 /***/ }),
-/* 330 */
+/* 332 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -16620,22 +16621,22 @@ var _inherit = _interopRequireDefault(__
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function inheritInnerComments(child, parent) {
   (0, _inherit.default)("innerComments", child, parent);
 }
 
 /***/ }),
-/* 331 */
+/* 333 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var MapCache = __webpack_require__(242),
-    setCacheAdd = __webpack_require__(634),
-    setCacheHas = __webpack_require__(635);
+    setCacheAdd = __webpack_require__(635),
+    setCacheHas = __webpack_require__(636);
 
 /**
  *
  * Creates an array cache object to store unique values.
  *
  * @private
  * @constructor
  * @param {Array} [values] The values to cache.
@@ -16653,17 +16654,17 @@ function SetCache(values) {
 // Add methods to `SetCache`.
 SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
 SetCache.prototype.has = setCacheHas;
 
 module.exports = SetCache;
 
 
 /***/ }),
-/* 332 */
+/* 334 */
 /***/ (function(module, exports) {
 
 /**
  * Checks if a `cache` value for `key` exists.
  *
  * @private
  * @param {Object} cache The cache to query.
  * @param {string} key The key of the entry to check.
@@ -16672,17 +16673,17 @@ module.exports = SetCache;
 function cacheHas(cache, key) {
   return cache.has(key);
 }
 
 module.exports = cacheHas;
 
 
 /***/ }),
-/* 333 */
+/* 335 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -16692,44 +16693,44 @@ var _inherit = _interopRequireDefault(__
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function inheritLeadingComments(child, parent) {
   (0, _inherit.default)("leadingComments", child, parent);
 }
 
 /***/ }),
-/* 334 */
+/* 336 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = inheritsComments;
 
-var _inheritTrailingComments = _interopRequireDefault(__webpack_require__(335));
-
-var _inheritLeadingComments = _interopRequireDefault(__webpack_require__(333));
-
-var _inheritInnerComments = _interopRequireDefault(__webpack_require__(330));
+var _inheritTrailingComments = _interopRequireDefault(__webpack_require__(337));
+
+var _inheritLeadingComments = _interopRequireDefault(__webpack_require__(335));
+
+var _inheritInnerComments = _interopRequireDefault(__webpack_require__(332));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function inheritsComments(child, parent) {
   (0, _inheritTrailingComments.default)(child, parent);
   (0, _inheritLeadingComments.default)(child, parent);
   (0, _inheritInnerComments.default)(child, parent);
   return child;
 }
 
 /***/ }),
-/* 335 */
+/* 337 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -16739,30 +16740,30 @@ var _inherit = _interopRequireDefault(__
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function inheritTrailingComments(child, parent) {
   (0, _inherit.default)("trailingComments", child, parent);
 }
 
 /***/ }),
-/* 336 */
+/* 338 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = toBlock;
 
 var _generated = __webpack_require__(19);
 
-var _generated2 = __webpack_require__(40);
+var _generated2 = __webpack_require__(39);
 
 function toBlock(node, parent) {
   if ((0, _generated.isBlockStatement)(node)) {
     return node;
   }
 
   let blockNodes = [];
 
@@ -16779,28 +16780,28 @@ function toBlock(node, parent) {
 
     blockNodes = [node];
   }
 
   return (0, _generated2.blockStatement)(blockNodes);
 }
 
 /***/ }),
-/* 337 */
+/* 339 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = toIdentifier;
 
-var _isValidIdentifier = _interopRequireDefault(__webpack_require__(115));
+var _isValidIdentifier = _interopRequireDefault(__webpack_require__(114));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function toIdentifier(name) {
   name = name + "";
   name = name.replace(/[^a-zA-Z0-9$_]/g, "-");
   name = name.replace(/^[-0-9]+/, "");
   name = name.replace(/[-\s]+(.)?/g, function (match, c) {
@@ -16810,40 +16811,40 @@ function toIdentifier(name) {
   if (!(0, _isValidIdentifier.default)(name)) {
     name = `_${name}`;
   }
 
   return name || "_";
 }
 
 /***/ }),
-/* 338 */
+/* 340 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = removePropertiesDeep;
 
-var _traverseFast = _interopRequireDefault(__webpack_require__(339));
-
-var _removeProperties = _interopRequireDefault(__webpack_require__(340));
+var _traverseFast = _interopRequireDefault(__webpack_require__(341));
+
+var _removeProperties = _interopRequireDefault(__webpack_require__(342));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function removePropertiesDeep(tree, opts) {
   (0, _traverseFast.default)(tree, _removeProperties.default, opts);
   return tree;
 }
 
 /***/ }),
-/* 339 */
+/* 341 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -16867,28 +16868,28 @@ function traverseFast(node, enter, opts)
       }
     } else {
       traverseFast(subNode, enter, opts);
     }
   }
 }
 
 /***/ }),
-/* 340 */
+/* 342 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = removeProperties;
 
-var _constants = __webpack_require__(65);
+var _constants = __webpack_require__(66);
 
 const CLEAR_KEYS = ["tokens", "start", "end", "loc", "raw", "rawValue"];
 
 const CLEAR_KEYS_PLUS_COMMENTS = _constants.COMMENT_KEYS.concat(["comments"]).concat(CLEAR_KEYS);
 
 function removeProperties(node, opts = {}) {
   const map = opts.preserveComments ? CLEAR_KEYS : CLEAR_KEYS_PLUS_COMMENTS;
 
@@ -16903,37 +16904,37 @@ function removeProperties(node, opts = {
   const symbols = Object.getOwnPropertySymbols(node);
 
   for (const sym of symbols) {
     node[sym] = null;
   }
 }
 
 /***/ }),
-/* 341 */
+/* 343 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = isLet;
 
 var _generated = __webpack_require__(19);
 
-var _constants = __webpack_require__(65);
+var _constants = __webpack_require__(66);
 
 function isLet(node) {
   return (0, _generated.isVariableDeclaration)(node) && (node.kind !== "var" || node[_constants.BLOCK_SCOPED_SYMBOL]);
 }
 
 /***/ }),
-/* 342 */
+/* 344 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -17072,26 +17073,26 @@ class SimplePath {
       return null;
     }
 
     return new SimplePath(this._ancestors.slice(0, -1).concat([{ node, key, index: siblingIndex }]));
   }
 }
 
 /***/ }),
-/* 343 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseKeys = __webpack_require__(314),
-    getTag = __webpack_require__(114),
+/* 345 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseKeys = __webpack_require__(316),
+    getTag = __webpack_require__(113),
     isArguments = __webpack_require__(243),
     isArray = __webpack_require__(22),
-    isArrayLike = __webpack_require__(145),
-    isBuffer = __webpack_require__(141),
-    isPrototype = __webpack_require__(144),
+    isArrayLike = __webpack_require__(144),
+    isBuffer = __webpack_require__(140),
+    isPrototype = __webpack_require__(143),
     isTypedArray = __webpack_require__(245);
 
 /** `Object#toString` result references. */
 var mapTag = '[object Map]',
     setTag = '[object Set]';
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
@@ -17155,17 +17156,17 @@ function isEmpty(value) {
   }
   return true;
 }
 
 module.exports = isEmpty;
 
 
 /***/ }),
-/* 344 */
+/* 346 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -17195,33 +17196,33 @@ function getSource(sourceId) {
   return cachedSources.get(sourceId);
 }
 
 function clearSources() {
   cachedSources = new Map();
 }
 
 /***/ }),
-/* 345 */
+/* 347 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.needsWhitespace = needsWhitespace;
 exports.needsWhitespaceBefore = needsWhitespaceBefore;
 exports.needsWhitespaceAfter = needsWhitespaceAfter;
 exports.needsParens = needsParens;
 
-var whitespace = _interopRequireWildcard(__webpack_require__(686));
-
-var parens = _interopRequireWildcard(__webpack_require__(687));
+var whitespace = _interopRequireWildcard(__webpack_require__(687));
+
+var parens = _interopRequireWildcard(__webpack_require__(688));
 
 function t() {
   const data = _interopRequireWildcard(__webpack_require__(12));
 
   t = function () {
     return data;
   };
 
@@ -17318,17 +17319,17 @@ function needsParens(node, parent, print
   if (t().isNewExpression(parent) && parent.callee === node) {
     if (isOrHasCallExpression(node)) return true;
   }
 
   return find(expandedParens, node, parent, printStack);
 }
 
 /***/ }),
-/* 346 */
+/* 348 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -17538,17 +17539,17 @@ function ImportNamespaceSpecifier(node) 
   this.token("*");
   this.space();
   this.word("as");
   this.space();
   this.print(node.local, node);
 }
 
 /***/ }),
-/* 347 */
+/* 349 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -17625,30 +17626,30 @@ function getFunctionName(node, parent) {
   }
 
   return "anonymous";
 } /* This Source Code Form is subject to the terms of the Mozilla Public
    * License, v. 2.0. If a copy of the MPL was not distributed with this
    * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 /***/ }),
-/* 348 */
+/* 350 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.buildScopeList = undefined;
 exports.default = getScopes;
 exports.clearScopes = clearScopes;
 
-var _visitor = __webpack_require__(700);
+var _visitor = __webpack_require__(701);
 
 let parsedScopesCache = new Map(); /* This Source Code Form is subject to the terms of the Mozilla Public
                                     * License, v. 2.0. If a copy of the MPL was not distributed with this
                                     * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 function getScopes(location) {
   const { sourceId } = location;
   let parsedScopes = parsedScopesCache.get(sourceId);
@@ -17701,20 +17702,20 @@ function findScopes(scopes, location) {
 function compareLocations(a, b) {
   // According to type of Location.column can be undefined, if will not be the
   // case here, ignoring flow error.
   // $FlowIgnore
   return a.line == b.line ? a.column - b.column : a.line - b.line;
 }
 
 /***/ }),
-/* 349 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseGet = __webpack_require__(350);
+/* 351 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseGet = __webpack_require__(352);
 
 /**
  * Gets the value at `path` of `object`. If the resolved value is
  * `undefined`, the `defaultValue` is returned in its place.
  *
  * @static
  * @memberOf _
  * @since 3.7.0
@@ -17740,21 +17741,21 @@ function get(object, path, defaultValue)
   var result = object == null ? undefined : baseGet(object, path);
   return result === undefined ? defaultValue : result;
 }
 
 module.exports = get;
 
 
 /***/ }),
-/* 350 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var castPath = __webpack_require__(351),
-    toKey = __webpack_require__(151);
+/* 352 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var castPath = __webpack_require__(353),
+    toKey = __webpack_require__(150);
 
 /**
  * The base implementation of `_.get` without support for default values.
  *
  * @private
  * @param {Object} object The object to query.
  * @param {Array|string} path The path of the property to get.
  * @returns {*} Returns the resolved value.
@@ -17770,23 +17771,23 @@ function baseGet(object, path) {
   }
   return (index && index == length) ? object : undefined;
 }
 
 module.exports = baseGet;
 
 
 /***/ }),
-/* 351 */
+/* 353 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var isArray = __webpack_require__(22),
     isKey = __webpack_require__(268),
-    stringToPath = __webpack_require__(702),
-    toString = __webpack_require__(69);
+    stringToPath = __webpack_require__(703),
+    toString = __webpack_require__(70);
 
 /**
  * Casts `value` to a path array if it's not one.
  *
  * @private
  * @param {*} value The value to inspect.
  * @param {Object} [object] The object to query keys on.
  * @returns {Array} Returns the cast property path array.
@@ -17797,24 +17798,24 @@ function castPath(value, object) {
   }
   return isKey(value, object) ? [value] : stringToPath(toString(value));
 }
 
 module.exports = castPath;
 
 
 /***/ }),
-/* 352 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseMatches = __webpack_require__(706),
-    baseMatchesProperty = __webpack_require__(714),
-    identity = __webpack_require__(718),
+/* 354 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseMatches = __webpack_require__(707),
+    baseMatchesProperty = __webpack_require__(715),
+    identity = __webpack_require__(719),
     isArray = __webpack_require__(22),
-    property = __webpack_require__(719);
+    property = __webpack_require__(720);
 
 /**
  * The base implementation of `_.iteratee`.
  *
  * @private
  * @param {*} [value=_.identity] The value to convert to an iteratee.
  * @returns {Function} Returns the iteratee.
  */
@@ -17834,20 +17835,20 @@ function baseIteratee(value) {
   }
   return property(value);
 }
 
 module.exports = baseIteratee;
 
 
 /***/ }),
-/* 353 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseIsEqualDeep = __webpack_require__(708),
+/* 355 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIsEqualDeep = __webpack_require__(709),
     isObjectLike = __webpack_require__(29);
 
 /**
  * The base implementation of `_.isEqual` which supports partial comparisons
  * and tracks traversed objects.
  *
  * @private
  * @param {*} value The value to compare.
@@ -17868,22 +17869,22 @@ function baseIsEqual(value, other, bitma
   }
   return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
 }
 
 module.exports = baseIsEqual;
 
 
 /***/ }),
-/* 354 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var SetCache = __webpack_require__(331),
-    arraySome = __webpack_require__(709),
-    cacheHas = __webpack_require__(332);
+/* 356 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var SetCache = __webpack_require__(333),
+    arraySome = __webpack_require__(710),
+    cacheHas = __webpack_require__(334);
 
 /** Used to compose bitmasks for value comparisons. */
 var COMPARE_PARTIAL_FLAG = 1,
     COMPARE_UNORDERED_FLAG = 2;
 
 /**
  * A specialized version of `baseIsEqualDeep` for arrays with support for
  * partial deep comparisons.
@@ -17957,17 +17958,17 @@ function equalArrays(array, other, bitma
   stack['delete'](other);
   return result;
 }
 
 module.exports = equalArrays;
 
 
 /***/ }),
-/* 355 */
+/* 357 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var isObject = __webpack_require__(55);
 
 /**
  * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
  *
  * @private
@@ -17978,17 +17979,17 @@ var isObject = __webpack_require__(55);
 function isStrictComparable(value) {
   return value === value && !isObject(value);
 }
 
 module.exports = isStrictComparable;
 
 
 /***/ }),
-/* 356 */
+/* 358 */
 /***/ (function(module, exports) {
 
 /**
  * A specialized version of `matchesProperty` for source values suitable
  * for strict equality comparisons, i.e. `===`.
  *
  * @private
  * @param {string} key The key of the property to get.
@@ -18004,17 +18005,17 @@ function matchesStrictComparable(key, sr
       (srcValue !== undefined || (key in Object(object)));
   };
 }
 
 module.exports = matchesStrictComparable;
 
 
 /***/ }),
-/* 357 */
+/* 359 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -18049,18 +18050,16 @@ function containsLocation(a, b) {
   return containsPosition(a, b.start) && containsPosition(a, b.end);
 }
 
 function nodeContainsPosition(node, position) {
   return containsPosition(node.loc, position);
 }
 
 /***/ }),
-/* 358 */,
-/* 359 */,
 /* 360 */,
 /* 361 */,
 /* 362 */,
 /* 363 */,
 /* 364 */,
 /* 365 */,
 /* 366 */,
 /* 367 */,
@@ -18240,50 +18239,51 @@ function nodeContainsPosition(node, posi
 /* 541 */,
 /* 542 */,
 /* 543 */,
 /* 544 */,
 /* 545 */,
 /* 546 */,
 /* 547 */,
 /* 548 */,
-/* 549 */
-/***/ (function(module, exports, __webpack_require__) {
-
-module.exports = __webpack_require__(550);
-
-
-/***/ }),
+/* 549 */,
 /* 550 */
 /***/ (function(module, exports, __webpack_require__) {
 
+module.exports = __webpack_require__(551);
+
+
+/***/ }),
+/* 551 */
+/***/ (function(module, exports, __webpack_require__) {
+
 "use strict";
 
 
 var _getSymbols = __webpack_require__(238);
 
 var _ast = __webpack_require__(49);
 
-var _getScopes = __webpack_require__(348);
+var _getScopes = __webpack_require__(350);
 
 var _getScopes2 = _interopRequireDefault(_getScopes);
 
-var _sources = __webpack_require__(344);
-
-var _findOutOfScopeLocations = __webpack_require__(701);
+var _sources = __webpack_require__(346);
+
+var _findOutOfScopeLocations = __webpack_require__(702);
 
 var _findOutOfScopeLocations2 = _interopRequireDefault(_findOutOfScopeLocations);
 
-var _steps = __webpack_require__(723);
-
-var _validate = __webpack_require__(725);
-
-var _frameworks = __webpack_require__(726);
-
-var _mapExpression = __webpack_require__(727);
+var _steps = __webpack_require__(724);
+
+var _validate = __webpack_require__(726);
+
+var _frameworks = __webpack_require__(727);
+
+var _mapExpression = __webpack_require__(728);
 
 var _mapExpression2 = _interopRequireDefault(_mapExpression);
 
 var _devtoolsUtils = __webpack_require__(16);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
@@ -18304,66 +18304,66 @@ self.onmessage = workerHandler({
   clearSources: _sources.clearSources,
   getNextStep: _steps.getNextStep,
   hasSyntaxError: _validate.hasSyntaxError,
   getFramework: _frameworks.getFramework,
   mapExpression: _mapExpression2.default
 });
 
 /***/ }),
-/* 551 */
+/* 552 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = void 0;
 
-var _buildMatchMemberExpression = _interopRequireDefault(__webpack_require__(307));
+var _buildMatchMemberExpression = _interopRequireDefault(__webpack_require__(309));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 const isReactComponent = (0, _buildMatchMemberExpression.default)("React.Component");
 var _default = isReactComponent;
 exports.default = _default;
 
 /***/ }),
-/* 552 */
+/* 553 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = isCompatTag;
 
 function isCompatTag(tagName) {
   return !!tagName && /^[a-z]/.test(tagName);
 }
 
 /***/ }),
-/* 553 */
+/* 554 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = buildChildren;
 
 var _generated = __webpack_require__(19);
 
-var _cleanJSXElementLiteralChild = _interopRequireDefault(__webpack_require__(554));
+var _cleanJSXElementLiteralChild = _interopRequireDefault(__webpack_require__(555));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function buildChildren(node) {
   const elements = [];
 
   for (let i = 0; i < node.children.length; i++) {
     let child = node.children[i];
@@ -18377,28 +18377,28 @@ function buildChildren(node) {
     if ((0, _generated.isJSXEmptyExpression)(child)) continue;
     elements.push(child);
   }
 
   return elements;
 }
 
 /***/ }),
-/* 554 */
+/* 555 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = cleanJSXElementLiteralChild;
 
-var _generated = __webpack_require__(40);
+var _generated = __webpack_require__(39);
 
 function cleanJSXElementLiteralChild(child, args) {
   const lines = child.value.split(/\r\n|\n|\r/);
   let lastNonEmptyLine = 0;
 
   for (let i = 0; i < lines.length; i++) {
     if (lines[i].match(/[^ \t]/)) {
       lastNonEmptyLine = i;
@@ -18430,40 +18430,40 @@ function cleanJSXElementLiteralChild(chi
       str += trimmedLine;
     }
   }
 
   if (str) args.push((0, _generated.stringLiteral)(str));
 }
 
 /***/ }),
-/* 555 */
+/* 556 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = builder;
 
 function _clone() {
-  const data = _interopRequireDefault(__webpack_require__(556));
+  const data = _interopRequireDefault(__webpack_require__(557));
 
   _clone = function () {
     return data;
   };
 
   return data;
 }
 
 var _definitions = __webpack_require__(44);
 
-var _validate = _interopRequireDefault(__webpack_require__(325));
+var _validate = _interopRequireDefault(__webpack_require__(327));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function builder(type, ...args) {
   const keys = _definitions.BUILDER_KEYS[type];
   const countArgs = args.length;
 
   if (countArgs > keys.length) {
@@ -18486,20 +18486,20 @@ function builder(type, ...args) {
   for (const key in node) {
     (0, _validate.default)(node, key, node[key]);
   }
 
   return node;
 }
 
 /***/ }),
-/* 556 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseClone = __webpack_require__(557);
+/* 557 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseClone = __webpack_require__(558);
 
 /** Used to compose bitmasks for cloning. */
 var CLONE_SYMBOLS_FLAG = 4;
 
 /**
  * Creates a shallow clone of `value`.
  *
  * **Note:** This method is loosely based on the
@@ -18528,40 +18528,40 @@ var CLONE_SYMBOLS_FLAG = 4;
 function clone(value) {
   return baseClone(value, CLONE_SYMBOLS_FLAG);
 }
 
 module.exports = clone;
 
 
 /***/ }),
-/* 557 */
+/* 558 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var Stack = __webpack_require__(240),
-    arrayEach = __webpack_require__(584),
-    assignValue = __webpack_require__(311),
-    baseAssign = __webpack_require__(586),
-    baseAssignIn = __webpack_require__(592),
-    cloneBuffer = __webpack_require__(595),
-    copyArray = __webpack_require__(596),
-    copySymbols = __webpack_require__(597),
-    copySymbolsIn = __webpack_require__(599),
-    getAllKeys = __webpack_require__(320),
-    getAllKeysIn = __webpack_require__(600),
-    getTag = __webpack_require__(114),
-    initCloneArray = __webpack_require__(604),
-    initCloneByTag = __webpack_require__(605),
-    initCloneObject = __webpack_require__(610),
+    arrayEach = __webpack_require__(585),
+    assignValue = __webpack_require__(313),
+    baseAssign = __webpack_require__(587),
+    baseAssignIn = __webpack_require__(593),
+    cloneBuffer = __webpack_require__(596),
+    copyArray = __webpack_require__(597),
+    copySymbols = __webpack_require__(598),
+    copySymbolsIn = __webpack_require__(600),
+    getAllKeys = __webpack_require__(322),
+    getAllKeysIn = __webpack_require__(601),
+    getTag = __webpack_require__(113),
+    initCloneArray = __webpack_require__(605),
+    initCloneByTag = __webpack_require__(606),
+    initCloneObject = __webpack_require__(611),
     isArray = __webpack_require__(22),
-    isBuffer = __webpack_require__(141),
-    isMap = __webpack_require__(612),
+    isBuffer = __webpack_require__(140),
+    isMap = __webpack_require__(613),
     isObject = __webpack_require__(55),
-    isSet = __webpack_require__(614),
-    keys = __webpack_require__(140);
+    isSet = __webpack_require__(615),
+    keys = __webpack_require__(139);
 
 /** Used to compose bitmasks for cloning. */
 var CLONE_DEEP_FLAG = 1,
     CLONE_FLAT_FLAG = 2,
     CLONE_SYMBOLS_FLAG = 4;
 
 /** `Object#toString` result references. */
 var argsTag = '[object Arguments]',
@@ -18705,17 +18705,17 @@ function baseClone(value, bitmask, custo
   });
   return result;
 }
 
 module.exports = baseClone;
 
 
 /***/ }),
-/* 558 */
+/* 559 */
 /***/ (function(module, exports) {
 
 /**
  * Removes all key-value entries from the list cache.
  *
  * @private
  * @name clear
  * @memberOf ListCache
@@ -18724,20 +18724,20 @@ function listCacheClear() {
   this.__data__ = [];
   this.size = 0;
 }
 
 module.exports = listCacheClear;
 
 
 /***/ }),
-/* 559 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var assocIndexOf = __webpack_require__(135);
+/* 560 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var assocIndexOf = __webpack_require__(134);
 
 /** Used for built-in method references. */
 var arrayProto = Array.prototype;
 
 /** Built-in value references. */
 var splice = arrayProto.splice;
 
 /**
@@ -18765,20 +18765,20 @@ function listCacheDelete(key) {
   --this.size;
   return true;
 }
 
 module.exports = listCacheDelete;
 
 
 /***/ }),
-/* 560 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var assocIndexOf = __webpack_require__(135);
+/* 561 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var assocIndexOf = __webpack_require__(134);
 
 /**
  * Gets the list cache value for `key`.
  *
  * @private
  * @name get
  * @memberOf ListCache
  * @param {string} key The key of the value to get.
@@ -18790,20 +18790,20 @@ function listCacheGet(key) {
 
   return index < 0 ? undefined : data[index][1];
 }
 
 module.exports = listCacheGet;
 
 
 /***/ }),
-/* 561 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var assocIndexOf = __webpack_require__(135);
+/* 562 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var assocIndexOf = __webpack_require__(134);
 
 /**
  * Checks if a list cache value for `key` exists.
  *
  * @private
  * @name has
  * @memberOf ListCache
  * @param {string} key The key of the entry to check.
@@ -18812,20 +18812,20 @@ var assocIndexOf = __webpack_require__(1
 function listCacheHas(key) {
   return assocIndexOf(this.__data__, key) > -1;
 }
 
 module.exports = listCacheHas;
 
 
 /***/ }),
-/* 562 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var assocIndexOf = __webpack_require__(135);
+/* 563 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var assocIndexOf = __webpack_require__(134);
 
 /**
  * Sets the list cache `key` to `value`.
  *
  * @private
  * @name set
  * @memberOf ListCache
  * @param {string} key The key of the value to set.
@@ -18844,20 +18844,20 @@ function listCacheSet(key, value) {
   }
   return this;
 }
 
 module.exports = listCacheSet;
 
 
 /***/ }),
-/* 563 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var ListCache = __webpack_require__(134);
+/* 564 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var ListCache = __webpack_require__(133);
 
 /**
  * Removes all key-value entries from the stack.
  *
  * @private
  * @name clear
  * @memberOf Stack
  */
@@ -18865,17 +18865,17 @@ function stackClear() {
   this.__data__ = new ListCache;
   this.size = 0;
 }
 
 module.exports = stackClear;
 
 
 /***/ }),
-/* 564 */
+/* 565 */
 /***/ (function(module, exports) {
 
 /**
  * Removes `key` and its value from the stack.
  *
  * @private
  * @name delete
  * @memberOf Stack
@@ -18889,17 +18889,17 @@ function stackDelete(key) {
   this.size = data.size;
   return result;
 }
 
 module.exports = stackDelete;
 
 
 /***/ }),
-/* 565 */
+/* 566 */
 /***/ (function(module, exports) {
 
 /**
  * Gets the stack value for `key`.
  *
  * @private
  * @name get
  * @memberOf Stack
@@ -18909,17 +18909,17 @@ module.exports = stackDelete;
 function stackGet(key) {
   return this.__data__.get(key);
 }
 
 module.exports = stackGet;
 
 
 /***/ }),
-/* 566 */
+/* 567 */
 /***/ (function(module, exports) {
 
 /**
  * Checks if a stack value for `key` exists.
  *
  * @private
  * @name has
  * @memberOf Stack
@@ -18929,20 +18929,20 @@ module.exports = stackGet;
 function stackHas(key) {
   return this.__data__.has(key);
 }
 
 module.exports = stackHas;
 
 
 /***/ }),
-/* 567 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var ListCache = __webpack_require__(134),
+/* 568 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var ListCache = __webpack_require__(133),
     Map = __webpack_require__(241),
     MapCache = __webpack_require__(242);
 
 /** Used as the size to enable large array optimizations. */
 var LARGE_ARRAY_SIZE = 200;
 
 /**
  * Sets the stack `key` to `value`.
@@ -18969,23 +18969,23 @@ function stackSet(key, value) {
   this.size = data.size;
   return this;
 }
 
 module.exports = stackSet;
 
 
 /***/ }),
-/* 568 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var isFunction = __webpack_require__(309),
-    isMasked = __webpack_require__(569),
+/* 569 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isFunction = __webpack_require__(311),
+    isMasked = __webpack_require__(570),
     isObject = __webpack_require__(55),
-    toSource = __webpack_require__(310);
+    toSource = __webpack_require__(312);
 
 /**
  * Used to match `RegExp`
  * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
  */
 var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
 
 /** Used to detect host constructors (Safari). */
@@ -19022,20 +19022,20 @@ function baseIsNative(value) {
   var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
   return pattern.test(toSource(value));
 }
 
 module.exports = baseIsNative;
 
 
 /***/ }),
-/* 569 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var coreJsData = __webpack_require__(570);
+/* 570 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var coreJsData = __webpack_require__(571);
 
 /** Used to detect methods masquerading as native. */
 var maskSrcKey = (function() {
   var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
   return uid ? ('Symbol(src)_1.' + uid) : '';
 }());
 
 /**
@@ -19048,29 +19048,29 @@ var maskSrcKey = (function() {
 function isMasked(func) {
   return !!maskSrcKey && (maskSrcKey in func);
 }
 
 module.exports = isMasked;
 
 
 /***/ }),
-/* 570 */
+/* 571 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var root = __webpack_require__(21);
 
 /** Used to detect overreaching core-js shims. */
 var coreJsData = root['__core-js_shared__'];
 
 module.exports = coreJsData;
 
 
 /***/ }),
-/* 571 */
+/* 572 */
 /***/ (function(module, exports) {
 
 /**
  * Gets the value at `key` of `object`.
  *
  * @private
  * @param {Object} [object] The object to query.
  * @param {string} key The key of the property to get.
@@ -19079,21 +19079,21 @@ module.exports = coreJsData;
 function getValue(object, key) {
   return object == null ? undefined : object[key];
 }
 
 module.exports = getValue;
 
 
 /***/ }),
-/* 572 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var Hash = __webpack_require__(573),
-    ListCache = __webpack_require__(134),
+/* 573 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Hash = __webpack_require__(574),
+    ListCache = __webpack_require__(133),
     Map = __webpack_require__(241);
 
 /**
  * Removes all key-value entries from the map.
  *
  * @private
  * @name clear
  * @memberOf MapCache
@@ -19106,24 +19106,24 @@ function mapCacheClear() {
     'string': new Hash
   };
 }
 
 module.exports = mapCacheClear;
 
 
 /***/ }),
-/* 573 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var hashClear = __webpack_require__(574),
-    hashDelete = __webpack_require__(575),
-    hashGet = __webpack_require__(576),
-    hashHas = __webpack_require__(577),
-    hashSet = __webpack_require__(578);
+/* 574 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var hashClear = __webpack_require__(575),
+    hashDelete = __webpack_require__(576),
+    hashGet = __webpack_require__(577),
+    hashHas = __webpack_require__(578),
+    hashSet = __webpack_require__(579);
 
 /**
  * Creates a hash object.
  *
  * @private
  * @constructor
  * @param {Array} [entries] The key-value pairs to cache.
  */
@@ -19144,20 +19144,20 @@ Hash.prototype['delete'] = hashDelete;
 Hash.prototype.get = hashGet;
 Hash.prototype.has = hashHas;
 Hash.prototype.set = hashSet;
 
 module.exports = Hash;
 
 
 /***/ }),
-/* 574 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var nativeCreate = __webpack_require__(137);
+/* 575 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var nativeCreate = __webpack_require__(136);
 
 /**
  * Removes all key-value entries from the hash.
  *
  * @private
  * @name clear
  * @memberOf Hash
  */
@@ -19165,17 +19165,17 @@ function hashClear() {
   this.__data__ = nativeCreate ? nativeCreate(null) : {};
   this.size = 0;
 }
 
 module.exports = hashClear;
 
 
 /***/ }),
-/* 575 */
+/* 576 */
 /***/ (function(module, exports) {
 
 /**
  * Removes `key` and its value from the hash.
  *
  * @private
  * @name delete
  * @memberOf Hash
@@ -19188,20 +19188,20 @@ function hashDelete(key) {
   this.size -= result ? 1 : 0;
   return result;
 }
 
 module.exports = hashDelete;
 
 
 /***/ }),
-/* 576 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var nativeCreate = __webpack_require__(137);
+/* 577 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var nativeCreate = __webpack_require__(136);
 
 /** Used to stand-in for `undefined` hash values. */
 var HASH_UNDEFINED = '__lodash_hash_undefined__';
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
 /** Used to check objects for own properties. */
@@ -19224,20 +19224,20 @@ function hashGet(key) {
   }
   return hasOwnProperty.call(data, key) ? data[key] : undefined;
 }
 
 module.exports = hashGet;
 
 
 /***/ }),
-/* 577 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var nativeCreate = __webpack_require__(137);
+/* 578 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var nativeCreate = __webpack_require__(136);
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
 /** Used to check objects for own properties. */
 var hasOwnProperty = objectProto.hasOwnProperty;
 
 /**
@@ -19253,20 +19253,20 @@ function hashHas(key) {
   var data = this.__data__;
   return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
 }
 
 module.exports = hashHas;
 
 
 /***/ }),
-/* 578 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var nativeCreate = __webpack_require__(137);
+/* 579 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var nativeCreate = __webpack_require__(136);
 
 /** Used to stand-in for `undefined` hash values. */
 var HASH_UNDEFINED = '__lodash_hash_undefined__';
 
 /**
  * Sets the hash `key` to `value`.
  *
  * @private
@@ -19282,20 +19282,20 @@ function hashSet(key, value) {
   data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
   return this;
 }
 
 module.exports = hashSet;
 
 
 /***/ }),
-/* 579 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getMapData = __webpack_require__(138);
+/* 580 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getMapData = __webpack_require__(137);
 
 /**
  * Removes `key` and its value from the map.
  *
  * @private
  * @name delete
  * @memberOf MapCache
  * @param {string} key The key of the value to remove.
@@ -19306,17 +19306,17 @@ function mapCacheDelete(key) {
   this.size -= result ? 1 : 0;
   return result;
 }
 
 module.exports = mapCacheDelete;
 
 
 /***/ }),
-/* 580 */
+/* 581 */
 /***/ (function(module, exports) {
 
 /**
  * Checks if `value` is suitable for use as unique object key.
  *
  * @private
  * @param {*} value The value to check.
  * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
@@ -19327,20 +19327,20 @@ function isKeyable(value) {
     ? (value !== '__proto__')
     : (value === null);
 }
 
 module.exports = isKeyable;
 
 
 /***/ }),
-/* 581 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getMapData = __webpack_require__(138);
+/* 582 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getMapData = __webpack_require__(137);
 
 /**
  * Gets the map value for `key`.
  *
  * @private
  * @name get
  * @memberOf MapCache
  * @param {string} key The key of the value to get.
@@ -19349,20 +19349,20 @@ var getMapData = __webpack_require__(138
 function mapCacheGet(key) {
   return getMapData(this, key).get(key);
 }
 
 module.exports = mapCacheGet;
 
 
 /***/ }),
-/* 582 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getMapData = __webpack_require__(138);
+/* 583 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getMapData = __webpack_require__(137);
 
 /**
  * Checks if a map value for `key` exists.
  *
  * @private
  * @name has
  * @memberOf MapCache
  * @param {string} key The key of the entry to check.
@@ -19371,20 +19371,20 @@ var getMapData = __webpack_require__(138
 function mapCacheHas(key) {
   return getMapData(this, key).has(key);
 }
 
 module.exports = mapCacheHas;
 
 
 /***/ }),
-/* 583 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getMapData = __webpack_require__(138);
+/* 584 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getMapData = __webpack_require__(137);
 
 /**
  * Sets the map `key` to `value`.
  *
  * @private
  * @name set
  * @memberOf MapCache
  * @param {string} key The key of the value to set.
@@ -19399,17 +19399,17 @@ function mapCacheSet(key, value) {
   this.size += data.size == size ? 0 : 1;
   return this;
 }
 
 module.exports = mapCacheSet;
 
 
 /***/ }),
-/* 584 */
+/* 585 */
 /***/ (function(module, exports) {
 
 /**
  * A specialized version of `_.forEach` for arrays without support for
  * iteratee shorthands.
  *
  * @private
  * @param {Array} [array] The array to iterate over.
@@ -19427,38 +19427,38 @@ function arrayEach(array, iteratee) {
   }
   return array;
 }
 
 module.exports = arrayEach;
 
 
 /***/ }),
-/* 585 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getNative = __webpack_require__(64);
+/* 586 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getNative = __webpack_require__(65);
 
 var defineProperty = (function() {
   try {
     var func = getNative(Object, 'defineProperty');
     func({}, '', {});
     return func;
   } catch (e) {}
 }());
 
 module.exports = defineProperty;
 
 
 /***/ }),
-/* 586 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var copyObject = __webpack_require__(139),
-    keys = __webpack_require__(140);
+/* 587 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var copyObject = __webpack_require__(138),
+    keys = __webpack_require__(139);
 
 /**
  * The base implementation of `_.assign` without support for multiple sources
  * or `customizer` functions.
  *
  * @private
  * @param {Object} object The destination object.
  * @param {Object} source The source object.
@@ -19467,17 +19467,17 @@ var copyObject = __webpack_require__(139
 function baseAssign(object, source) {
   return object && copyObject(source, keys(source), object);
 }
 
 module.exports = baseAssign;
 
 
 /***/ }),
-/* 587 */
+/* 588 */
 /***/ (function(module, exports) {
 
 /**
  * The base implementation of `_.times` without support for iteratee shorthands
  * or max array length checks.
  *
  * @private
  * @param {number} n The number of times to invoke `iteratee`.
@@ -19493,17 +19493,17 @@ function baseTimes(n, iteratee) {
   }
   return result;
 }
 
 module.exports = baseTimes;
 
 
 /***/ }),
-/* 588 */
+/* 589 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseGetTag = __webpack_require__(35),
     isObjectLike = __webpack_require__(29);
 
 /** `Object#toString` result references. */
 var argsTag = '[object Arguments]';
 
@@ -19517,17 +19517,17 @@ var argsTag = '[object Arguments]';
 function baseIsArguments(value) {
   return isObjectLike(value) && baseGetTag(value) == argsTag;
 }
 
 module.exports = baseIsArguments;
 
 
 /***/ }),
-/* 589 */
+/* 590 */
 /***/ (function(module, exports) {
 
 /**
  * This method returns `false`.
  *
  * @static
  * @memberOf _
  * @since 4.13.0
@@ -19541,17 +19541,17 @@ module.exports = baseIsArguments;
 function stubFalse() {
   return false;
 }
 
 module.exports = stubFalse;
 
 
 /***/ }),
-/* 590 */
+/* 591 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseGetTag = __webpack_require__(35),
     isLength = __webpack_require__(246),
     isObjectLike = __webpack_require__(29);
 
 /** `Object#toString` result references. */
 var argsTag = '[object Arguments]',
@@ -19607,33 +19607,33 @@ function baseIsTypedArray(value) {
   return isObjectLike(value) &&
     isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
 }
 
 module.exports = baseIsTypedArray;
 
 
 /***/ }),
-/* 591 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var overArg = __webpack_require__(315);
+/* 592 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var overArg = __webpack_require__(317);
 
 /* Built-in method references for those with the same name as other `lodash` methods. */
 var nativeKeys = overArg(Object.keys, Object);
 
 module.exports = nativeKeys;
 
 
 /***/ }),
-/* 592 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var copyObject = __webpack_require__(139),
-    keysIn = __webpack_require__(316);
+/* 593 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var copyObject = __webpack_require__(138),
+    keysIn = __webpack_require__(318);
 
 /**
  * The base implementation of `_.assignIn` without support for multiple sources
  * or `customizer` functions.
  *
  * @private
  * @param {Object} object The destination object.
  * @param {Object} source The source object.
@@ -19642,22 +19642,22 @@ var copyObject = __webpack_require__(139
 function baseAssignIn(object, source) {
   return object && copyObject(source, keysIn(source), object);
 }
 
 module.exports = baseAssignIn;
 
 
 /***/ }),
-/* 593 */
+/* 594 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var isObject = __webpack_require__(55),
-    isPrototype = __webpack_require__(144),
-    nativeKeysIn = __webpack_require__(594);
+    isPrototype = __webpack_require__(143),
+    nativeKeysIn = __webpack_require__(595);
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
 /** Used to check objects for own properties. */
 var hasOwnProperty = objectProto.hasOwnProperty;
 
 /**
@@ -19681,17 +19681,17 @@ function baseKeysIn(object) {
   }
   return result;
 }
 
 module.exports = baseKeysIn;
 
 
 /***/ }),
-/* 594 */
+/* 595 */
 /***/ (function(module, exports) {
 
 /**
  * This function is like
  * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
  * except that it includes inherited enumerable properties.
  *
  * @private
@@ -19707,17 +19707,17 @@ function nativeKeysIn(object) {
   }
   return result;
 }
 
 module.exports = nativeKeysIn;
 
 
 /***/ }),
-/* 595 */
+/* 596 */
 /***/ (function(module, exports, __webpack_require__) {
 
 /* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(21);
 
 /** Detect free variable `exports`. */
 var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
 
 /** Detect free variable `module`. */
@@ -19746,20 +19746,20 @@ function cloneBuffer(buffer, isDeep) {
       result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
 
   buffer.copy(result);
   return result;
 }
 
 module.exports = cloneBuffer;
 
-/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(42)(module)))
-
-/***/ }),
-/* 596 */
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(41)(module)))
+
+/***/ }),
+/* 597 */
 /***/ (function(module, exports) {
 
 /**
  * Copies the values of `source` to `array`.
  *
  * @private
  * @param {Array} source The array to copy values from.
  * @param {Array} [array=[]] The array to copy values to.
@@ -19775,20 +19775,20 @@ function copyArray(source, array) {
   }
   return array;
 }
 
 module.exports = copyArray;
 
 
 /***/ }),
-/* 597 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var copyObject = __webpack_require__(139),
+/* 598 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var copyObject = __webpack_require__(138),
     getSymbols = __webpack_require__(247);
 
 /**
  * Copies own symbols of `source` to `object`.
  *
  * @private
  * @param {Object} source The object to copy symbols from.
  * @param {Object} [object={}] The object to copy symbols to.
@@ -19797,17 +19797,17 @@ var copyObject = __webpack_require__(139
 function copySymbols(source, object) {
   return copyObject(source, getSymbols(source), object);
 }
 
 module.exports = copySymbols;
 
 
 /***/ }),
-/* 598 */
+/* 599 */
 /***/ (function(module, exports) {
 
 /**
  * A specialized version of `_.filter` for arrays without support for
  * iteratee shorthands.
  *
  * @private
  * @param {Array} [array] The array to iterate over.
@@ -19828,21 +19828,21 @@ function arrayFilter(array, predicate) {
   }
   return result;
 }
 
 module.exports = arrayFilter;
 
 
 /***/ }),
-/* 599 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var copyObject = __webpack_require__(139),
-    getSymbolsIn = __webpack_require__(318);
+/* 600 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var copyObject = __webpack_require__(138),
+    getSymbolsIn = __webpack_require__(320);
 
 /**
  * Copies own and inherited symbols of `source` to `object`.
  *
  * @private
  * @param {Object} source The object to copy symbols from.
  * @param {Object} [object={}] The object to copy symbols to.
  * @returns {Object} Returns `object`.
@@ -19850,22 +19850,22 @@ var copyObject = __webpack_require__(139
 function copySymbolsIn(source, object) {
   return copyObject(source, getSymbolsIn(source), object);
 }
 
 module.exports = copySymbolsIn;
 
 
 /***/ }),
-/* 600 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseGetAllKeys = __webpack_require__(321),
-    getSymbolsIn = __webpack_require__(318),
-    keysIn = __webpack_require__(316);
+/* 601 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseGetAllKeys = __webpack_require__(323),
+    getSymbolsIn = __webpack_require__(320),
+    keysIn = __webpack_require__(318);
 
 /**
  * Creates an array of own and inherited enumerable property names and
  * symbols of `object`.
  *
  * @private
  * @param {Object} object The object to query.
  * @returns {Array} Returns the array of property names and symbols.
@@ -19873,56 +19873,56 @@ var baseGetAllKeys = __webpack_require__
 function getAllKeysIn(object) {
   return baseGetAllKeys(object, keysIn, getSymbolsIn);
 }
 
 module.exports = getAllKeysIn;
 
 
 /***/ }),
-/* 601 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getNative = __webpack_require__(64),
+/* 602 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getNative = __webpack_require__(65),
     root = __webpack_require__(21);
 
 /* Built-in method references that are verified to be native. */
 var DataView = getNative(root, 'DataView');
 
 module.exports = DataView;
 
 
 /***/ }),
-/* 602 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getNative = __webpack_require__(64),
+/* 603 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getNative = __webpack_require__(65),
     root = __webpack_require__(21);
 
 /* Built-in method references that are verified to be native. */
 var Promise = getNative(root, 'Promise');
 
 module.exports = Promise;
 
 
 /***/ }),
-/* 603 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getNative = __webpack_require__(64),
+/* 604 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getNative = __webpack_require__(65),
     root = __webpack_require__(21);
 
 /* Built-in method references that are verified to be native. */
 var WeakMap = getNative(root, 'WeakMap');
 
 module.exports = WeakMap;
 
 
 /***/ }),
-/* 604 */
+/* 605 */
 /***/ (function(module, exports) {
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
 /** Used to check objects for own properties. */
 var hasOwnProperty = objectProto.hasOwnProperty;
 
@@ -19944,24 +19944,24 @@ function initCloneArray(array) {
   }
   return result;
 }
 
 module.exports = initCloneArray;
 
 
 /***/ }),
-/* 605 */
+/* 606 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var cloneArrayBuffer = __webpack_require__(249),
-    cloneDataView = __webpack_require__(606),
-    cloneRegExp = __webpack_require__(607),
-    cloneSymbol = __webpack_require__(608),
-    cloneTypedArray = __webpack_require__(609);
+    cloneDataView = __webpack_require__(607),
+    cloneRegExp = __webpack_require__(608),
+    cloneSymbol = __webpack_require__(609),
+    cloneTypedArray = __webpack_require__(610);
 
 /** `Object#toString` result references. */
 var boolTag = '[object Boolean]',
     dateTag = '[object Date]',
     mapTag = '[object Map]',
     numberTag = '[object Number]',
     regexpTag = '[object RegExp]',
     setTag = '[object Set]',
@@ -20027,17 +20027,17 @@ function initCloneByTag(object, tag, isD
       return cloneSymbol(object);
   }
 }
 
 module.exports = initCloneByTag;
 
 
 /***/ }),
-/* 606 */
+/* 607 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var cloneArrayBuffer = __webpack_require__(249);
 
 /**
  * Creates a clone of `dataView`.
  *
  * @private
@@ -20049,17 +20049,17 @@ function cloneDataView(dataView, isDeep)
   var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
   return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
 }
 
 module.exports = cloneDataView;
 
 
 /***/ }),
-/* 607 */
+/* 608 */
 /***/ (function(module, exports) {
 
 /** Used to match `RegExp` flags from their coerced string values. */
 var reFlags = /\w*$/;
 
 /**
  * Creates a clone of `regexp`.
  *
@@ -20072,17 +20072,17 @@ function cloneRegExp(regexp) {
   result.lastIndex = regexp.lastIndex;
   return result;
 }
 
 module.exports = cloneRegExp;
 
 
 /***/ }),
-/* 608 */
+/* 609 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var Symbol = __webpack_require__(28);
 
 /** Used to convert symbols to primitives and strings. */
 var symbolProto = Symbol ? Symbol.prototype : undefined,
     symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
 
@@ -20096,17 +20096,17 @@ var symbolProto = Symbol ? Symbol.protot
 function cloneSymbol(symbol) {
   return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
 }
 
 module.exports = cloneSymbol;
 
 
 /***/ }),
-/* 609 */
+/* 610 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var cloneArrayBuffer = __webpack_require__(249);
 
 /**
  * Creates a clone of `typedArray`.
  *
  * @private
@@ -20118,22 +20118,22 @@ function cloneTypedArray(typedArray, isD
   var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
   return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
 }
 
 module.exports = cloneTypedArray;
 
 
 /***/ }),
-/* 610 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseCreate = __webpack_require__(611),
+/* 611 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseCreate = __webpack_require__(612),
     getPrototype = __webpack_require__(248),
-    isPrototype = __webpack_require__(144);
+    isPrototype = __webpack_require__(143);
 
 /**
  * Initializes an object clone.
  *
  * @private
  * @param {Object} object The object to clone.
  * @returns {Object} Returns the initialized clone.
  */
@@ -20142,17 +20142,17 @@ function initCloneObject(object) {
     ? baseCreate(getPrototype(object))
     : {};
 }
 
 module.exports = initCloneObject;
 
 
 /***/ }),
-/* 611 */
+/* 612 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var isObject = __webpack_require__(55);
 
 /** Built-in value references. */
 var objectCreate = Object.create;
 
 /**
@@ -20178,22 +20178,22 @@ var baseCreate = (function() {
     return result;
   };
 }());
 
 module.exports = baseCreate;
 
 
 /***/ }),
-/* 612 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseIsMap = __webpack_require__(613),
-    baseUnary = __webpack_require__(142),
-    nodeUtil = __webpack_require__(143);
+/* 613 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIsMap = __webpack_require__(614),
+    baseUnary = __webpack_require__(141),
+    nodeUtil = __webpack_require__(142);
 
 /* Node.js helper references. */
 var nodeIsMap = nodeUtil && nodeUtil.isMap;
 
 /**
  * Checks if `value` is classified as a `Map` object.
  *
  * @static
@@ -20211,20 +20211,20 @@ var nodeIsMap = nodeUtil && nodeUtil.isM
  * // => false
  */
 var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
 
 module.exports = isMap;
 
 
 /***/ }),
-/* 613 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getTag = __webpack_require__(114),
+/* 614 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getTag = __webpack_require__(113),
     isObjectLike = __webpack_require__(29);
 
 /** `Object#toString` result references. */
 var mapTag = '[object Map]';
 
 /**
  * The base implementation of `_.isMap` without Node.js optimizations.
  *
@@ -20235,22 +20235,22 @@ var mapTag = '[object Map]';
 function baseIsMap(value) {
   return isObjectLike(value) && getTag(value) == mapTag;
 }
 
 module.exports = baseIsMap;
 
 
 /***/ }),
-/* 614 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseIsSet = __webpack_require__(615),
-    baseUnary = __webpack_require__(142),
-    nodeUtil = __webpack_require__(143);
+/* 615 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIsSet = __webpack_require__(616),
+    baseUnary = __webpack_require__(141),
+    nodeUtil = __webpack_require__(142);
 
 /* Node.js helper references. */
 var nodeIsSet = nodeUtil && nodeUtil.isSet;
 
 /**
  * Checks if `value` is classified as a `Set` object.
  *
  * @static
@@ -20268,20 +20268,20 @@ var nodeIsSet = nodeUtil && nodeUtil.isS
  * // => false
  */
 var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
 
 module.exports = isSet;
 
 
 /***/ }),
-/* 615 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getTag = __webpack_require__(114),
+/* 616 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getTag = __webpack_require__(113),
     isObjectLike = __webpack_require__(29);
 
 /** `Object#toString` result references. */
 var setTag = '[object Set]';
 
 /**
  * The base implementation of `_.isSet` without Node.js optimizations.
  *
@@ -20292,17 +20292,17 @@ var setTag = '[object Set]';
 function baseIsSet(value) {
   return isObjectLike(value) && getTag(value) == setTag;
 }
 
 module.exports = baseIsSet;
 
 
 /***/ }),
-/* 616 */
+/* 617 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 let fastProto = null;
 
 // Creates an object with permanently fast properties in V8. See Toon Verwaest's
@@ -20326,17 +20326,17 @@ function FastObject(o) {
 FastObject();
 
 module.exports = function toFastproperties(o) {
 	return FastObject(o);
 };
 
 
 /***/ }),
-/* 617 */
+/* 618 */
 /***/ (function(module, exports, __webpack_require__) {
 
 /*
   Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>
 
   Redistribution and use in source and binary forms, with or without
   modification, are permitted provided that the following conditions are met:
 
@@ -20357,25 +20357,25 @@ module.exports = function toFastproperti
   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
 
 (function () {
     'use strict';
 
-    exports.ast = __webpack_require__(618);
-    exports.code = __webpack_require__(324);
-    exports.keyword = __webpack_require__(619);
+    exports.ast = __webpack_require__(619);
+    exports.code = __webpack_require__(326);
+    exports.keyword = __webpack_require__(620);
 }());
 /* vim: set sw=4 ts=4 et tw=80 : */
 
 
 /***/ }),
-/* 618 */
+/* 619 */
 /***/ (function(module, exports) {
 
 /*
   Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>
 
   Redistribution and use in source and binary forms, with or without
   modification, are permitted provided that the following conditions are met:
 
@@ -20515,17 +20515,17 @@ module.exports = function toFastproperti
 
         trailingStatement: trailingStatement
     };
 }());
 /* vim: set sw=4 ts=4 et tw=80 : */
 
 
 /***/ }),
-/* 619 */
+/* 620 */
 /***/ (function(module, exports, __webpack_require__) {
 
 /*
   Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>
 
   Redistribution and use in source and binary forms, with or without
   modification, are permitted provided that the following conditions are met:
 
@@ -20545,17 +20545,17 @@ module.exports = function toFastproperti
   ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
 (function () {
     'use strict';
 
-    var code = __webpack_require__(324);
+    var code = __webpack_require__(326);
 
     function isStrictModeReservedWordES6(id) {
         switch (id) {
         case 'implements':
         case 'interface':
         case 'package':
         case 'private':
         case 'protected':
@@ -20686,17 +20686,17 @@ module.exports = function toFastproperti
         isIdentifierES5: isIdentifierES5,
         isIdentifierES6: isIdentifierES6
     };
 }());
 /* vim: set sw=4 ts=4 et tw=80 : */
 
 
 /***/ }),
-/* 620 */
+/* 621 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 var _utils = _interopRequireWildcard(__webpack_require__(56));
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
@@ -21077,17 +21077,17 @@ defineInterfaceishType("InterfaceDeclara
     kind: (0, _utils.validate)((0, _utils.assertOneOf)("minus", "plus"))
   }
 });
 (0, _utils.default)("VoidTypeAnnotation", {
   aliases: ["Flow", "FlowType", "FlowBaseAnnotation"]
 });
 
 /***/ }),
-/* 621 */
+/* 622 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 var _utils = _interopRequireWildcard(__webpack_require__(56));
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
@@ -21243,17 +21243,17 @@ function _interopRequireWildcard(obj) { 
 (0, _utils.default)("JSXOpeningFragment", {
   aliases: ["JSX", "Immutable"]
 });
 (0, _utils.default)("JSXClosingFragment", {
   aliases: ["JSX", "Immutable"]
 });
 
 /***/ }),
-/* 622 */
+/* 623 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 var _utils = _interopRequireWildcard(__webpack_require__(56));
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
@@ -21267,17 +21267,17 @@ function _interopRequireWildcard(obj) { 
   fields: {
     expression: {
       validate: (0, _utils.assertNodeType)("Expression")
     }
   }
 });
 
 /***/ }),
-/* 623 */
+/* 624 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 var _utils = _interopRequireWildcard(__webpack_require__(56));
 
 var _es = __webpack_require__(253);
@@ -21443,17 +21443,17 @@ function _interopRequireWildcard(obj) { 
     value: {
       validate: (0, _utils.assertValueType)("string")
     }
   },
   aliases: ["Expression", "Pureish", "Literal", "Immutable"]
 });
 
 /***/ }),
-/* 624 */
+/* 625 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 var _utils = _interopRequireWildcard(__webpack_require__(56));
 
 var _core = __webpack_require__(250);
@@ -21837,40 +21837,40 @@ const unionOrIntersection = {
     default: {
       validate: (0, _utils.assertNodeType)("TSType"),
       optional: true
     }
   }
 });
 
 /***/ }),
-/* 625 */
+/* 626 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = assertNode;
 
-var _isNode = _interopRequireDefault(__webpack_require__(326));
+var _isNode = _interopRequireDefault(__webpack_require__(328));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function assertNode(node) {
   if (!(0, _isNode.default)(node)) {
     const type = node && node.type || JSON.stringify(node);
     throw new TypeError(`Not a valid node of type "${type}"`);
   }
 }
 
 /***/ }),
-/* 626 */
+/* 627 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -23180,28 +23180,28 @@ function assertRestProperty(node, opts) 
 }
 
 function assertSpreadProperty(node, opts) {
   console.trace("The node type SpreadProperty has been renamed to SpreadElement");
   assert("SpreadProperty", node, opts);
 }
 
 /***/ }),
-/* 627 */
+/* 628 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = createTypeAnnotationBasedOnTypeof;
 
-var _generated = __webpack_require__(40);
+var _generated = __webpack_require__(39);
 
 function createTypeAnnotationBasedOnTypeof(type) {
   if (type === "string") {
     return (0, _generated.stringTypeAnnotation)();
   } else if (type === "number") {
     return (0, _generated.numberTypeAnnotation)();
   } else if (type === "undefined") {
     return (0, _generated.voidTypeAnnotation)();
@@ -23214,113 +23214,113 @@ function createTypeAnnotationBasedOnType
   } else if (type === "symbol") {
     return (0, _generated.genericTypeAnnotation)((0, _generated.identifier)("Symbol"));
   } else {
     throw new Error("Invalid typeof value");
   }
 }
 
 /***/ }),
-/* 628 */
+/* 629 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = createUnionTypeAnnotation;
 
-var _generated = __webpack_require__(40);
-
-var _removeTypeDuplicates = _interopRequireDefault(__webpack_require__(327));
+var _generated = __webpack_require__(39);
+
+var _removeTypeDuplicates = _interopRequireDefault(__webpack_require__(329));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function createUnionTypeAnnotation(types) {
   const flattened = (0, _removeTypeDuplicates.default)(types);
 
   if (flattened.length === 1) {
     return flattened[0];
   } else {
     return (0, _generated.unionTypeAnnotation)(flattened);
   }
 }
 
 /***/ }),
-/* 629 */
+/* 630 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = cloneDeep;
 
-var _cloneNode = _interopRequireDefault(__webpack_require__(116));
+var _cloneNode = _interopRequireDefault(__webpack_require__(115));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function cloneDeep(node) {
   return (0, _cloneNode.default)(node);
 }
 
 /***/ }),
-/* 630 */
+/* 631 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = cloneWithoutLoc;
 
-var _clone = _interopRequireDefault(__webpack_require__(328));
+var _clone = _interopRequireDefault(__webpack_require__(330));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function cloneWithoutLoc(node) {
   const newNode = (0, _clone.default)(node);
   newNode.loc = null;
   return newNode;
 }
 
 /***/ }),
-/* 631 */
+/* 632 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = addComment;
 
-var _addComments = _interopRequireDefault(__webpack_require__(329));
+var _addComments = _interopRequireDefault(__webpack_require__(331));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function addComment(node, type, content, line) {
   return (0, _addComments.default)(node, type, [{
     type: line ? "CommentLine" : "CommentBlock",
     value: content
   }]);
 }
 
 /***/ }),
-/* 632 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseUniq = __webpack_require__(633);
+/* 633 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseUniq = __webpack_require__(634);
 
 /**
  * Creates a duplicate-free version of an array, using
  * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
  * for equality comparisons, in which only the first occurrence of each element
  * is kept. The order of result values is determined by the order they occur
  * in the array.
  *
@@ -23338,24 +23338,24 @@ var baseUniq = __webpack_require__(633);
 function uniq(array) {
   return (array && array.length) ? baseUniq(array) : [];
 }
 
 module.exports = uniq;
 
 
 /***/ }),
-/* 633 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var SetCache = __webpack_require__(331),
-    arrayIncludes = __webpack_require__(636),
-    arrayIncludesWith = __webpack_require__(640),
-    cacheHas = __webpack_require__(332),
-    createSet = __webpack_require__(641),
+/* 634 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var SetCache = __webpack_require__(333),
+    arrayIncludes = __webpack_require__(637),
+    arrayIncludesWith = __webpack_require__(641),
+    cacheHas = __webpack_require__(334),
+    createSet = __webpack_require__(642),
     setToArray = __webpack_require__(256);
 
 /** Used as the size to enable large array optimizations. */
 var LARGE_ARRAY_SIZE = 200;
 
 /**
  * The base implementation of `_.uniqBy` without support for iteratee shorthands.
  *
@@ -23416,17 +23416,17 @@ function baseUniq(array, iteratee, compa
   }
   return result;
 }
 
 module.exports = baseUniq;
 
 
 /***/ }),
-/* 634 */
+/* 635 */
 /***/ (function(module, exports) {
 
 /** Used to stand-in for `undefined` hash values. */
 var HASH_UNDEFINED = '__lodash_hash_undefined__';
 
 /**
  * Adds `value` to the array cache.
  *
@@ -23441,17 +23441,17 @@ function setCacheAdd(value) {
   this.__data__.set(value, HASH_UNDEFINED);
   return this;
 }
 
 module.exports = setCacheAdd;
 
 
 /***/ }),
-/* 635 */
+/* 636 */
 /***/ (function(module, exports) {
 
 /**
  * Checks if `value` is in the array cache.
  *
  * @private
  * @name has
  * @memberOf SetCache
@@ -23461,20 +23461,20 @@ module.exports = setCacheAdd;
 function setCacheHas(value) {
   return this.__data__.has(value);
 }
 
 module.exports = setCacheHas;
 
 
 /***/ }),
-/* 636 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseIndexOf = __webpack_require__(637);
+/* 637 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIndexOf = __webpack_require__(638);
 
 /**
  * A specialized version of `_.includes` for arrays without support for
  * specifying an index to search from.
  *
  * @private
  * @param {Array} [array] The array to inspect.
  * @param {*} target The value to search for.
@@ -23484,22 +23484,22 @@ function arrayIncludes(array, value) {
   var length = array == null ? 0 : array.length;
   return !!length && baseIndexOf(array, value, 0) > -1;
 }
 
 module.exports = arrayIncludes;
 
 
 /***/ }),
-/* 637 */
+/* 638 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseFindIndex = __webpack_require__(255),
-    baseIsNaN = __webpack_require__(638),
-    strictIndexOf = __webpack_require__(639);
+    baseIsNaN = __webpack_require__(639),
+    strictIndexOf = __webpack_require__(640);
 
 /**
  * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
  *
  * @private
  * @param {Array} array The array to inspect.
  * @param {*} value The value to search for.
  * @param {number} fromIndex The index to search from.
@@ -23510,17 +23510,17 @@ function baseIndexOf(array, value, fromI
     ? strictIndexOf(array, value, fromIndex)
     : baseFindIndex(array, baseIsNaN, fromIndex);
 }
 
 module.exports = baseIndexOf;
 
 
 /***/ }),
-/* 638 */
+/* 639 */
 /***/ (function(module, exports) {
 
 /**
  * The base implementation of `_.isNaN` without support for number objects.
  *
  * @private
  * @param {*} value The value to check.
  * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
@@ -23528,17 +23528,17 @@ module.exports = baseIndexOf;
 function baseIsNaN(value) {
   return value !== value;
 }
 
 module.exports = baseIsNaN;
 
 
 /***/ }),
-/* 639 */
+/* 640 */
 /***/ (function(module, exports) {
 
 /**
  * A specialized version of `_.indexOf` which performs strict equality
  * comparisons of values, i.e. `===`.
  *
  * @private
  * @param {Array} array The array to inspect.
@@ -23557,17 +23557,17 @@ function strictIndexOf(array, value, fro
   }
   return -1;
 }
 
 module.exports = strictIndexOf;
 
 
 /***/ }),
-/* 640 */
+/* 641 */
 /***/ (function(module, exports) {
 
 /**
  * This function is like `arrayIncludes` except that it accepts a comparator.
  *
  * @private
  * @param {Array} [array] The array to inspect.
  * @param {*} target The value to search for.
@@ -23585,21 +23585,21 @@ function arrayIncludesWith(array, value,
   }
   return false;
 }
 
 module.exports = arrayIncludesWith;
 
 
 /***/ }),
-/* 641 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var Set = __webpack_require__(322),
-    noop = __webpack_require__(642),
+/* 642 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Set = __webpack_require__(324),
+    noop = __webpack_require__(643),
     setToArray = __webpack_require__(256);
 
 /** Used as references for various `Number` constants. */
 var INFINITY = 1 / 0;
 
 /**
  * Creates a set object of `values`.
  *
@@ -23610,17 +23610,17 @@ var INFINITY = 1 / 0;
 var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
   return new Set(values);
 };
 
 module.exports = createSet;
 
 
 /***/ }),
-/* 642 */
+/* 643 */
 /***/ (function(module, exports) {
 
 /**
  * This method returns `undefined`.
  *
  * @static
  * @memberOf _
  * @since 2.3.0
@@ -23633,39 +23633,39 @@ module.exports = createSet;
 function noop() {
   // No operation performed.
 }
 
 module.exports = noop;
 
 
 /***/ }),
-/* 643 */
+/* 644 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = removeComments;
 
-var _constants = __webpack_require__(65);
+var _constants = __webpack_require__(66);
 
 function removeComments(node) {
   _constants.COMMENT_KEYS.forEach(key => {
     node[key] = null;
   });
 
   return node;
 }
 
 /***/ }),
-/* 644 */
+/* 645 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -23754,80 +23754,80 @@ exports.JSX_TYPES = JSX_TYPES;
 const PRIVATE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Private"];
 exports.PRIVATE_TYPES = PRIVATE_TYPES;
 const TSTYPEELEMENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["TSTypeElement"];
 exports.TSTYPEELEMENT_TYPES = TSTYPEELEMENT_TYPES;
 const TSTYPE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["TSType"];
 exports.TSTYPE_TYPES = TSTYPE_TYPES;
 
 /***/ }),
-/* 645 */
+/* 646 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = ensureBlock;
 
-var _toBlock = _interopRequireDefault(__webpack_require__(336));
+var _toBlock = _interopRequireDefault(__webpack_require__(338));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function ensureBlock(node, key = "body") {
   return node[key] = (0, _toBlock.default)(node[key], node);
 }
 
 /***/ }),
-/* 646 */
+/* 647 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = toBindingIdentifierName;
 
-var _toIdentifier = _interopRequireDefault(__webpack_require__(337));
+var _toIdentifier = _interopRequireDefault(__webpack_require__(339));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function toBindingIdentifierName(name) {
   name = (0, _toIdentifier.default)(name);
   if (name === "eval" || name === "arguments") name = "_" + name;
   return name;
 }
 
 /***/ }),
-/* 647 */
+/* 648 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = toComputedKey;
 
 var _generated = __webpack_require__(19);
 
-var _generated2 = __webpack_require__(40);
+var _generated2 = __webpack_require__(39);
 
 function toComputedKey(node, key = node.key || node.property) {
   if (!node.computed && (0, _generated.isIdentifier)(key)) key = (0, _generated2.stringLiteral)(key.name);
   return key;
 }
 
 /***/ }),
-/* 648 */
+/* 649 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -23853,32 +23853,32 @@ function toExpression(node) {
   if (!(0, _generated.isExpression)(node)) {
     throw new Error(`cannot turn ${node.type} to an expression`);
   }
 
   return node;
 }
 
 /***/ }),
-/* 649 */
+/* 650 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = toKeyAlias;
 
 var _generated = __webpack_require__(19);
 
-var _cloneNode = _interopRequireDefault(__webpack_require__(116));
-
-var _removePropertiesDeep = _interopRequireDefault(__webpack_require__(338));
+var _cloneNode = _interopRequireDefault(__webpack_require__(115));
+
+var _removePropertiesDeep = _interopRequireDefault(__webpack_require__(340));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function toKeyAlias(node, key = node.key) {
   let alias;
 
   if (node.kind === "method") {
     return toKeyAlias.increment() + "";
@@ -23907,28 +23907,28 @@ toKeyAlias.increment = function () {
   if (toKeyAlias.uid >= Number.MAX_SAFE_INTEGER) {
     return toKeyAlias.uid = 0;
   } else {
     return toKeyAlias.uid++;
   }
 };
 
 /***/ }),
-/* 650 */
+/* 651 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = toSequenceExpression;
 
-var _gatherSequenceExpressions = _interopRequireDefault(__webpack_require__(651));
+var _gatherSequenceExpressions = _interopRequireDefault(__webpack_require__(652));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function toSequenceExpression(nodes, scope) {
   if (!nodes || !nodes.length) return;
   const declars = [];
   const result = (0, _gatherSequenceExpressions.default)(nodes, scope, declars);
   if (!result) return;
@@ -23936,34 +23936,34 @@ function toSequenceExpression(nodes, sco
   for (const declar of declars) {
     scope.push(declar);
   }
 
   return result;
 }
 
 /***/ }),
-/* 651 */
+/* 652 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = gatherSequenceExpressions;
 
-var _getBindingIdentifiers = _interopRequireDefault(__webpack_require__(146));
+var _getBindingIdentifiers = _interopRequireDefault(__webpack_require__(145));
 
 var _generated = __webpack_require__(19);
 
-var _generated2 = __webpack_require__(40);
-
-var _cloneNode = _interopRequireDefault(__webpack_require__(116));
+var _generated2 = __webpack_require__(39);
+
+var _cloneNode = _interopRequireDefault(__webpack_require__(115));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function gatherSequenceExpressions(nodes, scope, declars) {
   const exprs = [];
   let ensureLastUndefined = true;
 
   for (const node of nodes) {
@@ -24015,30 +24015,30 @@ function gatherSequenceExpressions(nodes
   if (exprs.length === 1) {
     return exprs[0];
   } else {
     return (0, _generated2.sequenceExpression)(exprs);
   }
 }
 
 /***/ }),
-/* 652 */
+/* 653 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = toStatement;
 
 var _generated = __webpack_require__(19);
 
-var _generated2 = __webpack_require__(40);
+var _generated2 = __webpack_require__(39);
 
 function toStatement(node, ignore) {
   if ((0, _generated.isStatement)(node)) {
     return node;
   }
 
   let mustHaveId = false;
   let newType;
@@ -24065,50 +24065,50 @@ function toStatement(node, ignore) {
     }
   }
 
   node.type = newType;
   return node;
 }
 
 /***/ }),
-/* 653 */
+/* 654 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = valueToNode;
 
 function _isPlainObject() {
-  const data = _interopRequireDefault(__webpack_require__(654));
+  const data = _interopRequireDefault(__webpack_require__(655));
 
   _isPlainObject = function () {
     return data;
   };
 
   return data;
 }
 
 function _isRegExp() {
-  const data = _interopRequireDefault(__webpack_require__(655));
+  const data = _interopRequireDefault(__webpack_require__(656));
 
   _isRegExp = function () {
     return data;
   };
 
   return data;
 }
 
-var _isValidIdentifier = _interopRequireDefault(__webpack_require__(115));
-
-var _generated = __webpack_require__(40);
+var _isValidIdentifier = _interopRequireDefault(__webpack_require__(114));
+
+var _generated = __webpack_require__(39);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function valueToNode(value) {
   if (value === undefined) {
     return (0, _generated.identifier)("undefined");
   }
 
@@ -24175,17 +24175,17 @@ function valueToNode(value) {
 
     return (0, _generated.objectExpression)(props);
   }
 
   throw new Error("don't know how to turn this value into a node");
 }
 
 /***/ }),
-/* 654 */
+/* 655 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseGetTag = __webpack_require__(35),
     getPrototype = __webpack_require__(248),
     isObjectLike = __webpack_require__(29);
 
 /** `Object#toString` result references. */
 var objectTag = '[object Object]';
@@ -24243,22 +24243,22 @@ function isPlainObject(value) {
   return typeof Ctor == 'function' && Ctor instanceof Ctor &&
     funcToString.call(Ctor) == objectCtorString;
 }
 
 module.exports = isPlainObject;
 
 
 /***/ }),
-/* 655 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseIsRegExp = __webpack_require__(656),
-    baseUnary = __webpack_require__(142),
-    nodeUtil = __webpack_require__(143);
+/* 656 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIsRegExp = __webpack_require__(657),
+    baseUnary = __webpack_require__(141),
+    nodeUtil = __webpack_require__(142);
 
 /* Node.js helper references. */
 var nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;
 
 /**
  * Checks if `value` is classified as a `RegExp` object.
  *
  * @static
@@ -24276,17 +24276,17 @@ var nodeIsRegExp = nodeUtil && nodeUtil.
  * // => false
  */
 var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
 
 module.exports = isRegExp;
 
 
 /***/ }),
-/* 656 */
+/* 657 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseGetTag = __webpack_require__(35),
     isObjectLike = __webpack_require__(29);
 
 /** `Object#toString` result references. */
 var regexpTag = '[object RegExp]';
 
@@ -24300,51 +24300,51 @@ var regexpTag = '[object RegExp]';
 function baseIsRegExp(value) {
   return isObjectLike(value) && baseGetTag(value) == regexpTag;
 }
 
 module.exports = baseIsRegExp;
 
 
 /***/ }),
-/* 657 */
+/* 658 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = appendToMemberExpression;
 
-var _generated = __webpack_require__(40);
+var _generated = __webpack_require__(39);
 
 function appendToMemberExpression(member, append, computed = false) {
   member.object = (0, _generated.memberExpression)(member.object, member.property, member.computed);
   member.property = append;
   member.computed = !!computed;
   return member;
 }
 
 /***/ }),
-/* 658 */
+/* 659 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = inherits;
 
-var _constants = __webpack_require__(65);
-
-var _inheritsComments = _interopRequireDefault(__webpack_require__(334));
+var _constants = __webpack_require__(66);
+
+var _inheritsComments = _interopRequireDefault(__webpack_require__(336));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function inherits(child, parent) {
   if (!child || !parent) return child;
 
   for (const key of _constants.INHERIT_KEYS.optional) {
     if (child[key] == null) {
@@ -24360,56 +24360,56 @@ function inherits(child, parent) {
     child[key] = parent[key];
   }
 
   (0, _inheritsComments.default)(child, parent);
   return child;
 }
 
 /***/ }),
-/* 659 */
+/* 660 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = prependToMemberExpression;
 
-var _generated = __webpack_require__(40);
+var _generated = __webpack_require__(39);
 
 function prependToMemberExpression(member, prepend) {
   member.object = (0, _generated.memberExpression)(prepend, member.object);
   return member;
 }
 
 /***/ }),
-/* 660 */
+/* 661 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = getOuterBindingIdentifiers;
 
-var _getBindingIdentifiers = _interopRequireDefault(__webpack_require__(146));
+var _getBindingIdentifiers = _interopRequireDefault(__webpack_require__(145));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function getOuterBindingIdentifiers(node, duplicates) {
   return (0, _getBindingIdentifiers.default)(node, duplicates, true);
 }
 
 /***/ }),
-/* 661 */
+/* 662 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -24460,28 +24460,28 @@ function traverseSimpleImpl(node, enter,
       ancestors.pop();
     }
   }
 
   if (exit) exit(node, ancestors, state);
 }
 
 /***/ }),
-/* 662 */
+/* 663 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = isBinding;
 
-var _getBindingIdentifiers = _interopRequireDefault(__webpack_require__(146));
+var _getBindingIdentifiers = _interopRequireDefault(__webpack_require__(145));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function isBinding(node, parent) {
   const keys = _getBindingIdentifiers.default.keys[parent.type];
 
   if (keys) {
     for (let i = 0; i < keys.length; i++) {
@@ -24495,39 +24495,39 @@ function isBinding(node, parent) {
       }
     }
   }
 
   return false;
 }
 
 /***/ }),
-/* 663 */
+/* 664 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = isBlockScoped;
 
 var _generated = __webpack_require__(19);
 
-var _isLet = _interopRequireDefault(__webpack_require__(341));
+var _isLet = _interopRequireDefault(__webpack_require__(343));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function isBlockScoped(node) {
   return (0, _generated.isFunctionDeclaration)(node) || (0, _generated.isClassDeclaration)(node) || (0, _isLet.default)(node);
 }
 
 /***/ }),
-/* 664 */
+/* 665 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -24549,17 +24549,17 @@ function isImmutable(node) {
       return false;
     }
   }
 
   return false;
 }
 
 /***/ }),
-/* 665 */
+/* 666 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -24616,17 +24616,17 @@ function isNodesEquivalent(a, b) {
       return false;
     }
   }
 
   return true;
 }
 
 /***/ }),
-/* 666 */
+/* 667 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -24712,17 +24712,17 @@ function isReferenced(node, parent) {
     case "ObjectTypeProperty":
       return parent.key !== node;
   }
 
   return true;
 }
 
 /***/ }),
-/* 667 */
+/* 668 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -24742,17 +24742,17 @@ function isScope(node, parent) {
   })) {
     return false;
   }
 
   return (0, _generated.isScopable)(node);
 }
 
 /***/ }),
-/* 668 */
+/* 669 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -24762,80 +24762,80 @@ var _generated = __webpack_require__(19)
 
 function isSpecifierDefault(specifier) {
   return (0, _generated.isImportDefaultSpecifier)(specifier) || (0, _generated.isIdentifier)(specifier.imported || specifier.exported, {
     name: "default"
   });
 }
 
 /***/ }),
-/* 669 */
+/* 670 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = isValidES3Identifier;
 
-var _isValidIdentifier = _interopRequireDefault(__webpack_require__(115));
+var _isValidIdentifier = _interopRequireDefault(__webpack_require__(114));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 const RESERVED_WORDS_ES3_ONLY = new Set(["abstract", "boolean", "byte", "char", "double", "enum", "final", "float", "goto", "implements", "int", "interface", "long", "native", "package", "private", "protected", "public", "short", "static", "synchronized", "throws", "transient", "volatile"]);
 
 function isValidES3Identifier(name) {
   return (0, _isValidIdentifier.default)(name) && !RESERVED_WORDS_ES3_ONLY.has(name);
 }
 
 /***/ }),
-/* 670 */
+/* 671 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = isVar;
 
 var _generated = __webpack_require__(19);
 
-var _constants = __webpack_require__(65);
+var _constants = __webpack_require__(66);
 
 function isVar(node) {
   return (0, _generated.isVariableDeclaration)(node, {
     kind: "var"
   }) && !node[_constants.BLOCK_SCOPED_SYMBOL];
 }
 
 /***/ }),
-/* 671 */
+/* 672 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.parseScriptTags = exports.parseScripts = exports.parseScript = exports.getCandidateScriptLocations = exports.generateWhitespace = exports.extractScriptTags = undefined;
 
 var _types = __webpack_require__(12);
 
 var types = _interopRequireWildcard(_types);
 
-var _babylon = __webpack_require__(672);
+var _babylon = __webpack_require__(673);
 
 var babylon = _interopRequireWildcard(_babylon);
 
-var _customParse = __webpack_require__(673);
+var _customParse = __webpack_require__(674);
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
 function parseScript(_ref) {
   var source = _ref.source,
       line = _ref.line;
 
   // remove empty or only whitespace scripts
@@ -24881,17 +24881,17 @@ exports.default = parseScriptTags;
 exports.extractScriptTags = extractScriptTags;
 exports.generateWhitespace = _customParse.generateWhitespace;
 exports.getCandidateScriptLocations = _customParse.getCandidateScriptLocations;
 exports.parseScript = parseScript;
 exports.parseScripts = parseScripts;
 exports.parseScriptTags = parseScriptTags;
 
 /***/ }),
-/* 672 */
+/* 673 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, '__esModule', { value: true });
 
 function _AwaitValue(value) {
@@ -35055,32 +35055,32 @@ function getParserClass(pluginsFromOptio
 }
 
 exports.parse = parse;
 exports.parseExpression = parseExpression;
 exports.tokTypes = types;
 
 
 /***/ }),
-/* 673 */
+/* 674 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.parseScriptTags = exports.parseScripts = exports.getCandidateScriptLocations = exports.generateWhitespace = undefined;
 
 var _types = __webpack_require__(12);
 
 var types = _interopRequireWildcard(_types);
 
-var _parseScriptFragment = __webpack_require__(674);
+var _parseScriptFragment = __webpack_require__(675);
 
 var _parseScriptFragment2 = _interopRequireDefault(_parseScriptFragment);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
 function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
@@ -35199,17 +35199,17 @@ function parseScriptTags(source, parser)
 
 exports.default = parseScriptTags;
 exports.generateWhitespace = generateWhitespace;
 exports.getCandidateScriptLocations = getCandidateScriptLocations;
 exports.parseScripts = parseScripts;
 exports.parseScriptTags = parseScriptTags;
 
 /***/ }),
-/* 674 */
+/* 675 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -35357,17 +35357,17 @@ function parseFragment(str) {
 
   return null;
 }
 
 exports.default = parseFragment;
 exports.parseFragment = parseFragment;
 
 /***/ }),
-/* 675 */
+/* 676 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, '__esModule', { value: true });
 
 function _AwaitValue(value) {
@@ -45825,17 +45825,17 @@ function getParserClass(pluginsFromOptio
 }
 
 exports.parse = parse;
 exports.parseExpression = parseExpression;
 exports.tokTypes = types;
 
 
 /***/ }),
-/* 676 */
+/* 677 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -45912,62 +45912,62 @@ class SourceMap {
     });
   }
 
 }
 
 exports.default = SourceMap;
 
 /***/ }),
-/* 677 */
+/* 678 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = void 0;
 
 function _isInteger() {
-  const data = _interopRequireDefault(__webpack_require__(678));
+  const data = _interopRequireDefault(__webpack_require__(679));
 
   _isInteger = function () {
     return data;
   };
 
   return data;
 }
 
 function _repeat() {
-  const data = _interopRequireDefault(__webpack_require__(681));
+  const data = _interopRequireDefault(__webpack_require__(682));
 
   _repeat = function () {
     return data;
   };
 
   return data;
 }
 
-var _buffer = _interopRequireDefault(__webpack_require__(684));
-
-var n = _interopRequireWildcard(__webpack_require__(345));
+var _buffer = _interopRequireDefault(__webpack_require__(685));
+
+var n = _interopRequireWildcard(__webpack_require__(347));
 
 function t() {
   const data = _interopRequireWildcard(__webpack_require__(12));
 
   t = function () {
     return data;
   };
 
   return data;
 }
 
-var generatorFunctions = _interopRequireWildcard(__webpack_require__(688));
+var generatorFunctions = _interopRequireWildcard(__webpack_require__(689));
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 const SCIENTIFIC_NOTATION = /e/i;
 const ZERO_DECIMAL_INTEGER = /\.0+$/;
 const NON_DECIMAL_LITERAL = /^0[box]/;
@@ -46419,20 +46419,20 @@ exports.default = Printer;
 Object.assign(Printer.prototype, generatorFunctions);
 
 function commaSeparator() {
   this.token(",");
   this.space();
 }
 
 /***/ }),
-/* 678 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var toInteger = __webpack_require__(149);
+/* 679 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var toInteger = __webpack_require__(148);
 
 /**
  * Checks if `value` is an integer.
  *
  * **Note:** This method is based on
  * [`Number.isInteger`](https://mdn.io/Number/isInteger).
  *
  * @static
@@ -46458,20 +46458,20 @@ var toInteger = __webpack_require__(149)
 function isInteger(value) {
   return typeof value == 'number' && value == toInteger(value);
 }
 
 module.exports = isInteger;
 
 
 /***/ }),
-/* 679 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var toNumber = __webpack_require__(680);
+/* 680 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var toNumber = __webpack_require__(681);
 
 /** Used as references for various `Number` constants. */
 var INFINITY = 1 / 0,
     MAX_INTEGER = 1.7976931348623157e+308;
 
 /**
  * Converts `value` to a finite number.
  *
@@ -46506,17 +46506,17 @@ function toFinite(value) {
   }
   return value === value ? value : 0;
 }
 
 module.exports = toFinite;
 
 
 /***/ }),
-/* 680 */
+/* 681 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var isObject = __webpack_require__(55),
     isSymbol = __webpack_require__(51);
 
 /** Used as references for various `Number` constants. */
 var NAN = 0 / 0;
 
@@ -46578,23 +46578,23 @@ function toNumber(value) {
     ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
     : (reIsBadHex.test(value) ? NAN : +value);
 }
 
 module.exports = toNumber;
 
 
 /***/ }),
-/* 681 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseRepeat = __webpack_require__(682),
-    isIterateeCall = __webpack_require__(683),
-    toInteger = __webpack_require__(149),
-    toString = __webpack_require__(69);
+/* 682 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseRepeat = __webpack_require__(683),
+    isIterateeCall = __webpack_require__(684),
+    toInteger = __webpack_require__(148),
+    toString = __webpack_require__(70);
 
 /**
  * Repeats the given string `n` times.
  *
  * @static
  * @memberOf _
  * @since 3.0.0
  * @category String
@@ -46621,17 +46621,17 @@ function repeat(string, n, guard) {
   }
   return baseRepeat(toString(string), n);
 }
 
 module.exports = repeat;
 
 
 /***/ }),
-/* 682 */
+/* 683 */
 /***/ (function(module, exports) {
 
 /** Used as references for various `Number` constants. */
 var MAX_SAFE_INTEGER = 9007199254740991;
 
 /* Built-in method references for those with the same name as other `lodash` methods. */
 var nativeFloor = Math.floor;
 
@@ -46662,21 +46662,21 @@ function baseRepeat(string, n) {
 
   return result;
 }
 
 module.exports = baseRepeat;
 
 
 /***/ }),
-/* 683 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var eq = __webpack_require__(136),
-    isArrayLike = __webpack_require__(145),
+/* 684 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var eq = __webpack_require__(135),
+    isArrayLike = __webpack_require__(144),
     isIndex = __webpack_require__(244),
     isObject = __webpack_require__(55);
 
 /**
  * Checks if the given arguments are from an iteratee call.
  *
  * @private
  * @param {*} value The potential iteratee value argument.
@@ -46698,29 +46698,29 @@ function isIterateeCall(value, index, ob
   }
   return false;
 }
 
 module.exports = isIterateeCall;
 
 
 /***/ }),
-/* 684 */
+/* 685 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = void 0;
 
 function _trimRight() {
-  const data = _interopRequireDefault(__webpack_require__(685));
+  const data = _interopRequireDefault(__webpack_require__(686));
 
   _trimRight = function () {
     return data;
   };
 
   return data;
 }
 
@@ -46961,34 +46961,34 @@ class Buffer {
     return this._position.line + count;
   }
 
 }
 
 exports.default = Buffer;
 
 /***/ }),
-/* 685 */
+/* 686 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 module.exports = function (str) {
 	var tail = str.length;
 
 	while (/[\s\uFEFF\u00A0]/.test(str[tail - 1])) {
 		tail--;
 	}
 
 	return str.slice(0, tail);
 };
 
 
 /***/ }),
-/* 686 */
+/* 687 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -47176,17 +47176,17 @@ exports.list = list;
   [type].concat(t().FLIPPED_ALIAS_KEYS[type] || []).forEach(function (type) {
     nodes[type] = function () {
       return amounts;
     };
   });
 });
 
 /***/ }),
-/* 687 */
+/* 688 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -47420,87 +47420,87 @@ function isFirstInStatement(printStack, 
       return false;
     }
   }
 
   return false;
 }
 
 /***/ }),
-/* 688 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-var _templateLiterals = __webpack_require__(689);
+/* 689 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _templateLiterals = __webpack_require__(690);
 
 Object.keys(_templateLiterals).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _templateLiterals[key];
     }
   });
 });
 
-var _expressions = __webpack_require__(690);
+var _expressions = __webpack_require__(691);
 
 Object.keys(_expressions).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _expressions[key];
     }
   });
 });
 
-var _statements = __webpack_require__(691);
+var _statements = __webpack_require__(692);
 
 Object.keys(_statements).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _statements[key];
     }
   });
 });
 
-var _classes = __webpack_require__(692);
+var _classes = __webpack_require__(693);
 
 Object.keys(_classes).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _classes[key];
     }
   });
 });
 
-var _methods = __webpack_require__(693);
+var _methods = __webpack_require__(694);
 
 Object.keys(_methods).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _methods[key];
     }
   });
 });
 
-var _modules = __webpack_require__(346);
+var _modules = __webpack_require__(348);
 
 Object.keys(_modules).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _modules[key];
     }
@@ -47514,66 +47514,66 @@ Object.keys(_types).forEach(function (ke
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _types[key];
     }
   });
 });
 
-var _flow = __webpack_require__(695);
+var _flow = __webpack_require__(696);
 
 Object.keys(_flow).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _flow[key];
     }
   });
 });
 
-var _base = __webpack_require__(696);
+var _base = __webpack_require__(697);
 
 Object.keys(_base).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _base[key];
     }
   });
 });
 
-var _jsx = __webpack_require__(697);
+var _jsx = __webpack_require__(698);
 
 Object.keys(_jsx).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _jsx[key];
     }
   });
 });
 
-var _typescript = __webpack_require__(698);
+var _typescript = __webpack_require__(699);
 
 Object.keys(_typescript).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _typescript[key];
     }
   });
 });
 
 /***/ }),
-/* 689 */
+/* 690 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -47602,17 +47602,17 @@ function TemplateLiteral(node) {
 
     if (i + 1 < quasis.length) {
       this.print(node.expressions[i], node);
     }
   }
 }
 
 /***/ }),
-/* 690 */
+/* 691 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -47645,17 +47645,17 @@ function t() {
 
   t = function () {
     return data;
   };
 
   return data;
 }
 
-var n = _interopRequireWildcard(__webpack_require__(345));
+var n = _interopRequireWildcard(__webpack_require__(347));
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
 
 function UnaryExpression(node) {
   if (node.operator === "void" || node.operator === "delete" || node.operator === "typeof") {
     this.word(node.operator);
     this.space();
   } else {
@@ -47900,17 +47900,17 @@ function MetaProperty(node) {
 }
 
 function PrivateName(node) {
   this.token("#");
   this.print(node.id, node);
 }
 
 /***/ }),
-/* 691 */
+/* 692 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -48225,17 +48225,17 @@ function VariableDeclarator(node) {
     this.space();
     this.token("=");
     this.space();
     this.print(node.init, node);
   }
 }
 
 /***/ }),
-/* 692 */
+/* 693 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -48412,17 +48412,17 @@ function _classMethodHead(node) {
     this.word("static");
     this.space();
   }
 
   this._methodHead(node);
 }
 
 /***/ }),
-/* 693 */
+/* 694 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -48569,17 +48569,17 @@ function ArrowFunctionExpression(node) {
   this.print(node.body, node);
 }
 
 function hasTypes(node, param) {
   return node.typeParameters || node.returnType || param.typeAnnotation || param.optional || param.trailingComments;
 }
 
 /***/ }),
-/* 694 */
+/* 695 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 /* WEBPACK VAR INJECTION */(function(Buffer) {
 
 const object = {};
 const hasOwnProperty = object.hasOwnProperty;
 const forOwn = (object, callback) => {
@@ -48903,20 +48903,20 @@ const jsesc = (argument, options) => {
 	}
 	return result;
 };
 
 jsesc.version = '2.5.1';
 
 module.exports = jsesc;
 
-/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(150).Buffer))
-
-/***/ }),
-/* 695 */
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(149).Buffer))
+
+/***/ }),
+/* 696 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -48988,17 +48988,17 @@ function t() {
 
   t = function () {
     return data;
   };
 
   return data;
 }
 
-var _modules = __webpack_require__(346);
+var _modules = __webpack_require__(348);
 
 var _types2 = __webpack_require__(264);
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
 
 function AnyTypeAnnotation() {
   this.word("any");
 }
@@ -49540,17 +49540,17 @@ function Variance(node) {
   }
 }
 
 function VoidTypeAnnotation() {
   this.word("void");
 }
 
 /***/ }),
-/* 696 */
+/* 697 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -49615,17 +49615,17 @@ function Directive(node) {
   this.semicolon();
 }
 
 function InterpreterDirective(node) {
   this.token(`#!${node.value}\n`);
 }
 
 /***/ }),
-/* 697 */
+/* 698 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -49766,17 +49766,17 @@ function JSXOpeningFragment() {
 }
 
 function JSXClosingFragment() {
   this.token("</");
   this.token(">");
 }
 
 /***/ }),
-/* 698 */
+/* 699 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -50448,17 +50448,17 @@ function tsPrintSignatureDeclarationBase
 
   this._parameters(parameters, node);
 
   this.token(")");
   this.print(node.typeAnnotation, node);
 }
 
 /***/ }),
-/* 699 */
+/* 700 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -50547,37 +50547,37 @@ function inferClassName(path) {
   if (assignment) {
     return fromPrototype(assignment);
   }
 
   return null;
 }
 
 /***/ }),
-/* 700 */
+/* 701 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.parseSourceScopes = parseSourceScopes;
 exports.buildScopeList = buildScopeList;
 
-var _isEmpty = __webpack_require__(343);
+var _isEmpty = __webpack_require__(345);
 
 var _isEmpty2 = _interopRequireDefault(_isEmpty);
 
 var _types = __webpack_require__(12);
 
 var t = _interopRequireWildcard(_types);
 
-var _getFunctionName = __webpack_require__(347);
+var _getFunctionName = __webpack_require__(349);
 
 var _getFunctionName2 = _interopRequireDefault(_getFunctionName);
 
 var _ast = __webpack_require__(49);
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -51292,39 +51292,39 @@ function stripModuleScope(rootScope) {
   });
   rootLexicalScope.children = moduleScope.children;
   rootLexicalScope.children.forEach(child => {
     child.parent = rootLexicalScope;
   });
 }
 
 /***/ }),
-/* 701 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-var _get = __webpack_require__(349);
+/* 702 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _get = __webpack_require__(351);
 
 var _get2 = _interopRequireDefault(_get);
 
-var _findIndex = __webpack_require__(705);
+var _findIndex = __webpack_require__(706);
 
 var _findIndex2 = _interopRequireDefault(_findIndex);
 
-var _findLastIndex = __webpack_require__(722);
+var _findLastIndex = __webpack_require__(723);
 
 var _findLastIndex2 = _interopRequireDefault(_findLastIndex);
 
-var _contains = __webpack_require__(357);
+var _contains = __webpack_require__(359);
 
 var _getSymbols = __webpack_require__(238);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
@@ -51430,20 +51430,20 @@ function findOutOfScopeLocations(sourceI
   // we will mis-judge in-scope inner locations as out of scope.
   locations = removeInnerLocations(locations, position).filter(loc => !(0, _contains.containsPosition)(loc, position));
   return removeOverlaps(locations);
 }
 
 exports.default = findOutOfScopeLocations;
 
 /***/ }),
-/* 702 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var memoizeCapped = __webpack_require__(703);
+/* 703 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var memoizeCapped = __webpack_require__(704);
 
 /** Used to match property names within property paths. */
 var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
 
 /** Used to match backslashes in property paths. */
 var reEscapeChar = /\\(\\)?/g;
 
 /**
@@ -51463,20 +51463,20 @@ var stringToPath = memoizeCapped(functio
   });
   return result;
 });
 
 module.exports = stringToPath;
 
 
 /***/ }),
-/* 703 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var memoize = __webpack_require__(704);
+/* 704 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var memoize = __webpack_require__(705);
 
 /** Used as the maximum memoize cache size. */
 var MAX_MEMOIZE_SIZE = 500;
 
 /**
  * A specialized version of `_.memoize` which clears the memoized function's
  * cache when it exceeds `MAX_MEMOIZE_SIZE`.
  *
@@ -51495,17 +51495,17 @@ function memoizeCapped(func) {
   var cache = result.cache;
   return result;
 }
 
 module.exports = memoizeCapped;
 
 
 /***/ }),
-/* 704 */
+/* 705 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var MapCache = __webpack_require__(242);
 
 /** Error message constants. */
 var FUNC_ERROR_TEXT = 'Expected a function';
 
 /**
@@ -51574,22 +51574,22 @@ function memoize(func, resolver) {
 
 // Expose `MapCache`.
 memoize.Cache = MapCache;
 
 module.exports = memoize;
 
 
 /***/ }),
-/* 705 */
+/* 706 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseFindIndex = __webpack_require__(255),
-    baseIteratee = __webpack_require__(352),
-    toInteger = __webpack_require__(149);
+    baseIteratee = __webpack_require__(354),
+    toInteger = __webpack_require__(148);
 
 /* Built-in method references for those with the same name as other `lodash` methods. */
 var nativeMax = Math.max;
 
 /**
  * This method is like `_.find` except that it returns the index of the first
  * element `predicate` returns truthy for instead of the element itself.
  *
@@ -51635,22 +51635,22 @@ function findIndex(array, predicate, fro
   }
   return baseFindIndex(array, baseIteratee(predicate, 3), index);
 }
 
 module.exports = findIndex;
 
 
 /***/ }),
-/* 706 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseIsMatch = __webpack_require__(707),
-    getMatchData = __webpack_require__(713),
-    matchesStrictComparable = __webpack_require__(356);
+/* 707 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIsMatch = __webpack_require__(708),
+    getMatchData = __webpack_require__(714),
+    matchesStrictComparable = __webpack_require__(358);
 
 /**
  * The base implementation of `_.matches` which doesn't clone `source`.
  *
  * @private
  * @param {Object} source The object of property values to match.
  * @returns {Function} Returns the new spec function.
  */
@@ -51663,21 +51663,21 @@ function baseMatches(source) {
     return object === source || baseIsMatch(object, source, matchData);
   };
 }
 
 module.exports = baseMatches;
 
 
 /***/ }),
-/* 707 */
+/* 708 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var Stack = __webpack_require__(240),
-    baseIsEqual = __webpack_require__(353);
+    baseIsEqual = __webpack_require__(355);
 
 /** Used to compose bitmasks for value comparisons. */
 var COMPARE_PARTIAL_FLAG = 1,
     COMPARE_UNORDERED_FLAG = 2;
 
 /**
  * The base implementation of `_.isMatch` without support for iteratee shorthands.
  *
@@ -51731,26 +51731,26 @@ function baseIsMatch(object, source, mat
   }
   return true;
 }
 
 module.exports = baseIsMatch;
 
 
 /***/ }),
-/* 708 */
+/* 709 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var Stack = __webpack_require__(240),
-    equalArrays = __webpack_require__(354),
-    equalByTag = __webpack_require__(710),
-    equalObjects = __webpack_require__(712),
-    getTag = __webpack_require__(114),
+    equalArrays = __webpack_require__(356),
+    equalByTag = __webpack_require__(711),
+    equalObjects = __webpack_require__(713),
+    getTag = __webpack_require__(113),
     isArray = __webpack_require__(22),
-    isBuffer = __webpack_require__(141),
+    isBuffer = __webpack_require__(140),
     isTypedArray = __webpack_require__(245);
 
 /** Used to compose bitmasks for value comparisons. */
 var COMPARE_PARTIAL_FLAG = 1;
 
 /** `Object#toString` result references. */
 var argsTag = '[object Arguments]',
     arrayTag = '[object Array]',
@@ -51820,17 +51820,17 @@ function baseIsEqualDeep(object, other, 
   stack || (stack = new Stack);
   return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
 }
 
 module.exports = baseIsEqualDeep;
 
 
 /***/ }),
-/* 709 */
+/* 710 */
 /***/ (function(module, exports) {
 
 /**
  * A specialized version of `_.some` for arrays without support for iteratee
  * shorthands.
  *
  * @private
  * @param {Array} [array] The array to iterate over.
@@ -51849,24 +51849,24 @@ function arraySome(array, predicate) {
   }
   return false;
 }
 
 module.exports = arraySome;
 
 
 /***/ }),
-/* 710 */
+/* 711 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var Symbol = __webpack_require__(28),
-    Uint8Array = __webpack_require__(323),
-    eq = __webpack_require__(136),
-    equalArrays = __webpack_require__(354),
-    mapToArray = __webpack_require__(711),
+    Uint8Array = __webpack_require__(325),
+    eq = __webpack_require__(135),
+    equalArrays = __webpack_require__(356),
+    mapToArray = __webpack_require__(712),
     setToArray = __webpack_require__(256);
 
 /** Used to compose bitmasks for value comparisons. */
 var COMPARE_PARTIAL_FLAG = 1,
     COMPARE_UNORDERED_FLAG = 2;
 
 /** `Object#toString` result references. */
 var boolTag = '[object Boolean]',
@@ -51967,17 +51967,17 @@ function equalByTag(object, other, tag, 
   }
   return false;
 }
 
 module.exports = equalByTag;
 
 
 /***/ }),
-/* 711 */
+/* 712 */
 /***/ (function(module, exports) {
 
 /**
  * Converts `map` to its key-value pairs.
  *
  * @private
  * @param {Object} map The map to convert.
  * @returns {Array} Returns the key-value pairs.
@@ -51991,20 +51991,20 @@ function mapToArray(map) {
   });
   return result;
 }
 
 module.exports = mapToArray;
 
 
 /***/ }),
-/* 712 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getAllKeys = __webpack_require__(320);
+/* 713 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getAllKeys = __webpack_require__(322);
 
 /** Used to compose bitmasks for value comparisons. */
 var COMPARE_PARTIAL_FLAG = 1;
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
 /** Used to check objects for own properties. */
@@ -52086,21 +52086,21 @@ function equalObjects(object, other, bit
   stack['delete'](other);
   return result;
 }
 
 module.exports = equalObjects;
 
 
 /***/ }),
-/* 713 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var isStrictComparable = __webpack_require__(355),
-    keys = __webpack_require__(140);
+/* 714 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isStrictComparable = __webpack_require__(357),
+    keys = __webpack_require__(139);
 
 /**
  * Gets the property names, values, and compare flags of `object`.
  *
  * @private
  * @param {Object} object The object to query.
  * @returns {Array} Returns the match data of `object`.
  */
@@ -52116,26 +52116,26 @@ function getMatchData(object) {
   }
   return result;
 }
 
 module.exports = getMatchData;
 
 
 /***/ }),
-/* 714 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseIsEqual = __webpack_require__(353),
-    get = __webpack_require__(349),
-    hasIn = __webpack_require__(715),
+/* 715 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIsEqual = __webpack_require__(355),
+    get = __webpack_require__(351),
+    hasIn = __webpack_require__(716),
     isKey = __webpack_require__(268),
-    isStrictComparable = __webpack_require__(355),
-    matchesStrictComparable = __webpack_require__(356),
-    toKey = __webpack_require__(151);
+    isStrictComparable = __webpack_require__(357),
+    matchesStrictComparable = __webpack_require__(358),
+    toKey = __webpack_require__(150);
 
 /** Used to compose bitmasks for value comparisons. */
 var COMPARE_PARTIAL_FLAG = 1,
     COMPARE_UNORDERED_FLAG = 2;
 
 /**
  * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
  *
@@ -52155,21 +52155,21 @@ function baseMatchesProperty(path, srcVa
       : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
   };
 }
 
 module.exports = baseMatchesProperty;
 
 
 /***/ }),
-/* 715 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseHasIn = __webpack_require__(716),
-    hasPath = __webpack_require__(717);
+/* 716 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseHasIn = __webpack_require__(717),
+    hasPath = __webpack_require__(718);
 
 /**
  * Checks if `path` is a direct or inherited property of `object`.
  *
  * @static
  * @memberOf _
  * @since 4.0.0
  * @category Object
@@ -52195,17 +52195,17 @@ var baseHasIn = __webpack_require__(716)
 function hasIn(object, path) {
   return object != null && hasPath(object, path, baseHasIn);
 }
 
 module.exports = hasIn;
 
 
 /***/ }),
-/* 716 */
+/* 717 */
 /***/ (function(module, exports) {
 
 /**
  * The base implementation of `_.hasIn` without support for deep paths.
  *
  * @private
  * @param {Object} [object] The object to query.
  * @param {Array|string} key The key to check.
@@ -52214,25 +52214,25 @@ module.exports = hasIn;
 function baseHasIn(object, key) {
   return object != null && key in Object(object);
 }
 
 module.exports = baseHasIn;
 
 
 /***/ }),
-/* 717 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var castPath = __webpack_require__(351),
+/* 718 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var castPath = __webpack_require__(353),
     isArguments = __webpack_require__(243),
     isArray = __webpack_require__(22),
     isIndex = __webpack_require__(244),
     isLength = __webpack_require__(246),
-    toKey = __webpack_require__(151);
+    toKey = __webpack_require__(150);
 
 /**
  * Checks if `path` exists on `object`.
  *
  * @private
  * @param {Object} object The object to query.
  * @param {Array|string} path The path to check.
  * @param {Function} hasFunc The function to check properties.
@@ -52259,17 +52259,17 @@ function hasPath(object, path, hasFunc) 
   return !!length && isLength(length) && isIndex(key, length) &&
     (isArray(object) || isArguments(object));
 }
 
 module.exports = hasPath;
 
 
 /***/ }),
-/* 718 */
+/* 719 */
 /***/ (function(module, exports) {
 
 /**
  * This method returns the first argument it receives.
  *
  * @static
  * @since 0.1.0
  * @memberOf _
@@ -52286,23 +52286,23 @@ module.exports = hasPath;
 function identity(value) {
   return value;
 }
 
 module.exports = identity;
 
 
 /***/ }),
-/* 719 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseProperty = __webpack_require__(720),
-    basePropertyDeep = __webpack_require__(721),
+/* 720 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseProperty = __webpack_require__(721),
+    basePropertyDeep = __webpack_require__(722),
     isKey = __webpack_require__(268),
-    toKey = __webpack_require__(151);
+    toKey = __webpack_require__(150);
 
 /**
  * Creates a function that returns the value at `path` of a given object.
  *
  * @static
  * @memberOf _
  * @since 2.4.0
  * @category Util
@@ -52324,17 +52324,17 @@ var baseProperty = __webpack_require__(7
 function property(path) {
   return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
 }
 
 module.exports = property;
 
 
 /***/ }),
-/* 720 */
+/* 721 */
 /***/ (function(module, exports) {
 
 /**
  * The base implementation of `_.property` without support for deep paths.
  *
  * @private
  * @param {string} key The key of the property to get.
  * @returns {Function} Returns the new accessor function.
@@ -52344,20 +52344,20 @@ function baseProperty(key) {
     return object == null ? undefined : object[key];
   };
 }
 
 module.exports = baseProperty;
 
 
 /***/ }),
-/* 721 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseGet = __webpack_require__(350);
+/* 722 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseGet = __webpack_require__(352);
 
 /**
  * A specialized version of `baseProperty` which supports deep paths.
  *
  * @private
  * @param {Array|string} path The path of the property to get.
  * @returns {Function} Returns the new accessor function.
  */
@@ -52366,22 +52366,22 @@ function basePropertyDeep(path) {
     return baseGet(object, path);
   };
 }
 
 module.exports = basePropertyDeep;
 
 
 /***/ }),
-/* 722 */
+/* 723 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseFindIndex = __webpack_require__(255),
-    baseIteratee = __webpack_require__(352),
-    toInteger = __webpack_require__(149);
+    baseIteratee = __webpack_require__(354),
+    toInteger = __webpack_require__(148);
 
 /* Built-in method references for those with the same name as other `lodash` methods. */
 var nativeMax = Math.max,
     nativeMin = Math.min;
 
 /**
  * This method is like `_.findIndex` except that it iterates over elements
  * of `collection` from right to left.
@@ -52431,34 +52431,34 @@ function findLastIndex(array, predicate,
   }
   return baseFindIndex(array, baseIteratee(predicate, 3), index, true);
 }
 
 module.exports = findLastIndex;
 
 
 /***/ }),
-/* 723 */
+/* 724 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.getNextStep = getNextStep;
 
 var _types = __webpack_require__(12);
 
 var t = _interopRequireWildcard(_types);
 
-var _closest = __webpack_require__(724);
-
-var _helpers = __webpack_require__(147);
+var _closest = __webpack_require__(725);
+
+var _helpers = __webpack_require__(146);
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
 function getNextStep(sourceId, pausedPosition) {
   const currentExpression = getSteppableExpression(sourceId, pausedPosition);
   if (!currentExpression) {
     return null;
   }
@@ -52498,34 +52498,34 @@ function _getNextStep(statement, sourceI
       sourceId: sourceId
     };
   }
 
   return null;
 }
 
 /***/ }),
-/* 724 */
+/* 725 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.getClosestPath = getClosestPath;
 
-var _simplePath = __webpack_require__(342);
+var _simplePath = __webpack_require__(344);
 
 var _simplePath2 = _interopRequireDefault(_simplePath);
 
 var _ast = __webpack_require__(49);
 
-var _contains = __webpack_require__(357);
+var _contains = __webpack_require__(359);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function getClosestPath(sourceId, location) {
   let closestPath = null;
 
   (0, _ast.traverseAst)(sourceId, {
     enter(node, ancestors) {
@@ -52544,17 +52544,17 @@ function getClosestPath(sourceId, locati
   }
 
   return closestPath;
 } /* This Source Code Form is subject to the terms of the Mozilla Public
    * License, v. 2.0. If a copy of the MPL was not distributed with this
    * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 /***/ }),
-/* 725 */
+/* 726 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -52569,17 +52569,17 @@ function hasSyntaxError(input) {
   } catch (e) {
     return `${e.name} : ${e.message}`;
   }
 } /* This Source Code Form is subject to the terms of the Mozilla Public
    * License, v. 2.0. If a copy of the MPL was not distributed with this
    * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 /***/ }),
-/* 726 */
+/* 727 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -52640,38 +52640,38 @@ const isAngularComponent = sourceSymbols
 // Vue
 
 const isVueComponent = sourceSymbols => {
   const { identifiers } = sourceSymbols;
   return identifiers.some(identifier => identifier.name == "Vue");
 };
 
 /***/ }),
-/* 727 */
+/* 728 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = mapExpression;
 
 var _ast = __webpack_require__(49);
 
-var _mapOriginalExpression = __webpack_require__(728);
+var _mapOriginalExpression = __webpack_require__(729);
 
 var _mapOriginalExpression2 = _interopRequireDefault(_mapOriginalExpression);
 
-var _mapBindings = __webpack_require__(729);
+var _mapBindings = __webpack_require__(730);
 
 var _mapBindings2 = _interopRequireDefault(_mapBindings);
 
-var _mapAwaitExpression = __webpack_require__(730);
+var _mapAwaitExpression = __webpack_require__(731);
 
 var _mapAwaitExpression2 = _interopRequireDefault(_mapAwaitExpression);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
@@ -52708,32 +52708,32 @@ function mapExpression(expression, mappi
 
   return {
     expression,
     mapped
   };
 }
 
 /***/ }),
-/* 728 */
+/* 729 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = mapOriginalExpression;
 
 var _ast = __webpack_require__(49);
 
-var _getScopes = __webpack_require__(348);
-
-var _generator = __webpack_require__(148);
+var _getScopes = __webpack_require__(350);
+
+var _generator = __webpack_require__(147);
 
 var _generator2 = _interopRequireDefault(_generator);
 
 var _types = __webpack_require__(12);
 
 var t = _interopRequireWildcard(_types);
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
@@ -52832,32 +52832,32 @@ function mapOriginalExpression(expressio
   if (shouldUpdate) {
     return (0, _generator2.default)(ast).code;
   }
 
   return expression;
 }
 
 /***/ }),
-/* 729 */
+/* 730 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = mapExpressionBindings;
 
 var _ast = __webpack_require__(49);
 
-var _helpers = __webpack_require__(147);
-
-var _generator = __webpack_require__(148);
+var _helpers = __webpack_require__(146);
+
+var _generator = __webpack_require__(147);
 
 var _generator2 = _interopRequireDefault(_generator);
 
 var _types = __webpack_require__(12);
 
 var t = _interopRequireWildcard(_types);
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
@@ -52960,38 +52960,38 @@ function mapExpressionBindings(expressio
   if (!shouldUpdate || !isMapped) {
     return expression;
   }
 
   return (0, _generator2.default)(ast).code;
 }
 
 /***/ }),
-/* 730 */
+/* 731 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = mapTopLevelAwait;
 
-var _generator = __webpack_require__(148);
+var _generator = __webpack_require__(147);
 
 var _generator2 = _interopRequireDefault(_generator);
 
 var _types = __webpack_require__(12);
 
 var t = _interopRequireWildcard(_types);
 
 var _ast = __webpack_require__(49);
 
-var _helpers = __webpack_require__(147);
+var _helpers = __webpack_require__(146);
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
--- a/devtools/client/debugger/new/dist/pretty-print-worker.js
+++ b/devtools/client/debugger/new/dist/pretty-print-worker.js
@@ -65,34 +65,34 @@ return /******/ (function(modules) { // 
 /******/
 /******/ 	// Object.prototype.hasOwnProperty.call
 /******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
 /******/
 /******/ 	// __webpack_public_path__
 /******/ 	__webpack_require__.p = "/assets/build";
 /******/
 /******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(__webpack_require__.s = 731);
+/******/ 	return __webpack_require__(__webpack_require__.s = 732);
 /******/ })
 /************************************************************************/
 /******/ ({
 
-/***/ 117:
+/***/ 116:
 /***/ (function(module, exports, __webpack_require__) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 
-var base64VLQ = __webpack_require__(118);
-var util = __webpack_require__(41);
-var ArraySet = __webpack_require__(119).ArraySet;
+var base64VLQ = __webpack_require__(117);
+var util = __webpack_require__(40);
+var ArraySet = __webpack_require__(118).ArraySet;
 var MappingList = __webpack_require__(259).MappingList;
 
 /**
  * An instance of the SourceMapGenerator represents a source map which is
  * being built incrementally. You may pass an object with the following
  * properties:
  *
  *   - file: The filename of the generated source.
@@ -493,17 +493,17 @@ SourceMapGenerator.prototype.toString =
     return JSON.stringify(this.toJSON());
   };
 
 exports.SourceMapGenerator = SourceMapGenerator;
 
 
 /***/ }),
 
-/***/ 118:
+/***/ 117:
 /***/ (function(module, exports, __webpack_require__) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  *
@@ -640,27 +640,27 @@ exports.decode = function base64VLQ_deco
 
   aOutParam.value = fromVLQSigned(result);
   aOutParam.rest = aIndex;
 };
 
 
 /***/ }),
 
-/***/ 119:
+/***/ 118:
 /***/ (function(module, exports, __webpack_require__) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 
-var util = __webpack_require__(41);
+var util = __webpack_require__(40);
 var has = Object.prototype.hasOwnProperty;
 var hasNativeMap = typeof Map !== "undefined";
 
 /**
  * A data structure which is a combination of an array and a set. Adding a new
  * member is O(1), testing for membership is O(1), and finding the index of an
  * element is O(1). Removing elements from the set is not supported. Only
  * strings are supported for membership.
@@ -821,17 +821,17 @@ module.exports = networkRequest;
 /***/ 257:
 /***/ (function(module, exports, __webpack_require__) {
 
 /*
  * Copyright 2009-2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE.txt or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
-exports.SourceMapGenerator = __webpack_require__(117).SourceMapGenerator;
+exports.SourceMapGenerator = __webpack_require__(116).SourceMapGenerator;
 exports.SourceMapConsumer = __webpack_require__(260).SourceMapConsumer;
 exports.SourceNode = __webpack_require__(263).SourceNode;
 
 
 /***/ }),
 
 /***/ 258:
 /***/ (function(module, exports) {
@@ -912,17 +912,17 @@ exports.decode = function (charCode) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2014 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 
-var util = __webpack_require__(41);
+var util = __webpack_require__(40);
 
 /**
  * Determine whether mappingB is after mappingA with respect to generated
  * position.
  */
 function generatedPositionAfter(mappingA, mappingB) {
   // Optimized for most common case
   var lineA = mappingA.generatedLine;
@@ -1176,20 +1176,20 @@ module.exports = {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 
-var util = __webpack_require__(41);
+var util = __webpack_require__(40);
 var binarySearch = __webpack_require__(261);
-var ArraySet = __webpack_require__(119).ArraySet;
-var base64VLQ = __webpack_require__(118);
+var ArraySet = __webpack_require__(118).ArraySet;
+var base64VLQ = __webpack_require__(117);
 var quickSort = __webpack_require__(262).quickSort;
 
 function SourceMapConsumer(aSourceMap) {
   var sourceMap = aSourceMap;
   if (typeof aSourceMap === 'string') {
     sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
   }
 
@@ -2504,18 +2504,18 @@ exports.quickSort = function (ary, compa
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 
-var SourceMapGenerator = __webpack_require__(117).SourceMapGenerator;
-var util = __webpack_require__(41);
+var SourceMapGenerator = __webpack_require__(116).SourceMapGenerator;
+var util = __webpack_require__(40);
 
 // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
 // operating systems these days (capturing the result).
 var REGEX_NEWLINE = /(\r?\n)/;
 
 // Newline character code for charCodeAt() comparisons
 var NEWLINE_CODE = 10;
 
@@ -2914,17 +2914,17 @@ SourceNode.prototype.toStringWithSourceM
   return { code: generated.code, map: map };
 };
 
 exports.SourceNode = SourceNode;
 
 
 /***/ }),
 
-/***/ 41:
+/***/ 40:
 /***/ (function(module, exports) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
@@ -3338,31 +3338,31 @@ function compareByGeneratedPositionsInfl
 
   return strcmp(mappingA.name, mappingB.name);
 }
 exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
 
 
 /***/ }),
 
-/***/ 731:
+/***/ 732:
 /***/ (function(module, exports, __webpack_require__) {
 
-module.exports = __webpack_require__(732);
+module.exports = __webpack_require__(733);
 
 
 /***/ }),
 
-/***/ 732:
+/***/ 733:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var _prettyFast = __webpack_require__(733);
+var _prettyFast = __webpack_require__(734);
 
 var _prettyFast2 = _interopRequireDefault(_prettyFast);
 
 var _devtoolsUtils = __webpack_require__(16);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
@@ -3402,17 +3402,17 @@ function invertMappings(mappings) {
     return mapping;
   });
 }
 
 self.onmessage = workerHandler({ prettyPrint });
 
 /***/ }),
 
-/***/ 733:
+/***/ 734:
 /***/ (function(module, exports, __webpack_require__) {
 
 var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/* -*- indent-tabs-mode: nil; js-indent-level: 2; fill-column: 80 -*- */
 /*
  * Copyright 2013 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE.md or:
  * http://opensource.org/licenses/BSD-2-Clause
  */
@@ -3428,17 +3428,17 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WE
   } else if (typeof exports === "object") {
     module.exports = factory();
   } else {
     root.prettyFast = factory();
   }
 }(this, function () {
   "use strict";
 
-  var acorn = this.acorn || __webpack_require__(734);
+  var acorn = this.acorn || __webpack_require__(735);
   var sourceMap = this.sourceMap || __webpack_require__(257);
   var SourceNode = sourceMap.SourceNode;
 
   // If any of these tokens are seen before a "[" token, we know that "[" token
   // is the start of an array literal, rather than a property access.
   //
   // The only exception is "}", which would need to be disambiguated by
   // parsing. The majority of the time, an open bracket following a closing
@@ -4294,17 +4294,17 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WE
     return result.toStringWithSourceMap({ file: options.url });
   };
 
 }.bind(this)));
 
 
 /***/ }),
 
-/***/ 734:
+/***/ 735:
 /***/ (function(module, exports, __webpack_require__) {
 
 (function (global, factory) {
 	 true ? factory(exports) :
 	typeof define === 'function' && define.amd ? define(['exports'], factory) :
 	(factory((global.acorn = global.acorn || {})));
 }(this, (function (exports) { 'use strict';
 
--- a/devtools/client/debugger/new/dist/search-worker.js
+++ b/devtools/client/debugger/new/dist/search-worker.js
@@ -2,17 +2,17 @@
 	if(typeof exports === 'object' && typeof module === 'object')
 		module.exports = factory(require("devtools/shared/flags"));
 	else if(typeof define === 'function' && define.amd)
 		define(["devtools/shared/flags"], factory);
 	else {
 		var a = typeof exports === 'object' ? factory(require("devtools/shared/flags")) : factory(root["devtools/shared/flags"]);
 		for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
 	}
-})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_71__) {
+})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_72__) {
 return /******/ (function(modules) { // webpackBootstrap
 /******/ 	// The module cache
 /******/ 	var installedModules = {};
 /******/
 /******/ 	// The require function
 /******/ 	function __webpack_require__(moduleId) {
 /******/
 /******/ 		// Check if module is in cache
@@ -65,17 +65,17 @@ return /******/ (function(modules) { // 
 /******/
 /******/ 	// Object.prototype.hasOwnProperty.call
 /******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
 /******/
 /******/ 	// __webpack_public_path__
 /******/ 	__webpack_require__.p = "/assets/build";
 /******/
 /******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(__webpack_require__.s = 735);
+/******/ 	return __webpack_require__(__webpack_require__.s = 736);
 /******/ })
 /************************************************************************/
 /******/ ({
 
 /***/ 16:
 /***/ (function(module, exports, __webpack_require__) {
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
@@ -87,28 +87,28 @@ const workerUtils = __webpack_require__(
 
 module.exports = {
   networkRequest,
   workerUtils
 };
 
 /***/ }),
 
-/***/ 165:
+/***/ 164:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = buildQuery;
 
-var _escapeRegExp = __webpack_require__(166);
+var _escapeRegExp = __webpack_require__(165);
 
 var _escapeRegExp2 = _interopRequireDefault(_escapeRegExp);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /**
  * Ignore doing outline matches for less than 3 whitespaces
  *
@@ -167,20 +167,20 @@ function buildQuery(originalQuery, modif
     return new RegExp(query, flags);
   }
 
   return new RegExp(query);
 }
 
 /***/ }),
 
-/***/ 166:
+/***/ 165:
 /***/ (function(module, exports, __webpack_require__) {
 
-var toString = __webpack_require__(69);
+var toString = __webpack_require__(70);
 
 /**
  * Used to match `RegExp`
  * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
  */
 var reRegExpChar = /[\\^$.*+?()[\]{}|]/g,
     reHasRegExpChar = RegExp(reRegExpChar.source);
 
@@ -209,17 +209,17 @@ function escapeRegExp(string) {
 module.exports = escapeRegExp;
 
 
 /***/ }),
 
 /***/ 21:
 /***/ (function(module, exports, __webpack_require__) {
 
-var freeGlobal = __webpack_require__(70);
+var freeGlobal = __webpack_require__(71);
 
 /** Detect free variable `self`. */
 var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
 
 /** Used as a reference to the global object. */
 var root = freeGlobal || freeSelf || Function('return this')();
 
 module.exports = root;
@@ -548,17 +548,17 @@ module.exports = isObjectLike;
 
 "use strict";
 /* WEBPACK VAR INJECTION */(function(process) {
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
-const flag = __webpack_require__(71);
+const flag = __webpack_require__(72);
 
 function isBrowser() {
   return typeof window == "object";
 }
 
 function isNode() {
   return process && process.release && process.release.name == 'node';
 }
@@ -625,32 +625,32 @@ function baseGetTag(value) {
     : objectToString(value);
 }
 
 module.exports = baseGetTag;
 
 
 /***/ }),
 
-/***/ 358:
+/***/ 360:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = getMatches;
 
 var _assert = __webpack_require__(57);
 
 var _assert2 = _interopRequireDefault(_assert);
 
-var _buildQuery = __webpack_require__(165);
+var _buildQuery = __webpack_require__(164);
 
 var _buildQuery2 = _interopRequireDefault(_buildQuery);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
@@ -934,17 +934,17 @@ function assert(condition, message) {
     throw new Error(`Assertion failure: ${message}`);
   }
 } /* This Source Code Form is subject to the terms of the Mozilla Public
    * License, v. 2.0. If a copy of the MPL was not distributed with this
    * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 /***/ }),
 
-/***/ 69:
+/***/ 70:
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseToString = __webpack_require__(83);
 
 /**
  * Converts `value` to a string. An empty string is returned for `null`
  * and `undefined` values. The sign of `-0` is preserved.
  *
@@ -969,79 +969,79 @@ function toString(value) {
   return value == null ? '' : baseToString(value);
 }
 
 module.exports = toString;
 
 
 /***/ }),
 
-/***/ 70:
+/***/ 71:
 /***/ (function(module, exports, __webpack_require__) {
 
 /* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */
 var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
 
 module.exports = freeGlobal;
 
 /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(27)))
 
 /***/ }),
 
-/***/ 71:
+/***/ 72:
 /***/ (function(module, exports) {
 
-module.exports = __WEBPACK_EXTERNAL_MODULE_71__;
-
-/***/ }),
-
-/***/ 735:
-/***/ (function(module, exports, __webpack_require__) {
-
-module.exports = __webpack_require__(736);
-
+module.exports = __WEBPACK_EXTERNAL_MODULE_72__;
 
 /***/ }),
 
 /***/ 736:
 /***/ (function(module, exports, __webpack_require__) {
 
+module.exports = __webpack_require__(737);
+
+
+/***/ }),
+
+/***/ 737:
+/***/ (function(module, exports, __webpack_require__) {
+
 "use strict";
 
 
-var _getMatches = __webpack_require__(358);
+var _getMatches = __webpack_require__(360);
 
 var _getMatches2 = _interopRequireDefault(_getMatches);
 
-var _projectSearch = __webpack_require__(737);
+var _projectSearch = __webpack_require__(738);
 
 var _devtoolsUtils = __webpack_require__(16);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 const { workerHandler } = _devtoolsUtils.workerUtils; /* This Source Code Form is subject to the terms of the Mozilla Public
                                                        * License, v. 2.0. If a copy of the MPL was not distributed with this
                                                        * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 self.onmessage = workerHandler({ getMatches: _getMatches2.default, findSourceMatches: _projectSearch.findSourceMatches });
 
 /***/ }),
 
-/***/ 737:
+/***/ 738:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.findSourceMatches = findSourceMatches;
 
-var _getMatches = __webpack_require__(358);
+var _getMatches = __webpack_require__(360);
 
 var _getMatches2 = _interopRequireDefault(_getMatches);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function findSourceMatches(source, queryText) {
   const { id, loadedState, text } = source;
   if (loadedState != "loaded" || typeof text != "string" || queryText == "") {
--- a/devtools/client/debugger/new/dist/vendors.js
+++ b/devtools/client/debugger/new/dist/vendors.js
@@ -2,17 +2,17 @@
 	if(typeof exports === 'object' && typeof module === 'object')
 		module.exports = factory(require("devtools/client/shared/vendor/react-prop-types"), require("devtools/client/shared/vendor/react"), require("devtools/client/shared/vendor/react-dom-factories"), require("devtools/client/shared/vendor/lodash"), require("Services"), require("devtools/client/shared/vendor/react-dom"), require("devtools/shared/flags"));
 	else if(typeof define === 'function' && define.amd)
 		define(["devtools/client/shared/vendor/react-prop-types", "devtools/client/shared/vendor/react", "devtools/client/shared/vendor/react-dom-factories", "devtools/client/shared/vendor/lodash", "Services", "devtools/client/shared/vendor/react-dom", "devtools/shared/flags"], factory);
 	else {
 		var a = typeof exports === 'object' ? factory(require("devtools/client/shared/vendor/react-prop-types"), require("devtools/client/shared/vendor/react"), require("devtools/client/shared/vendor/react-dom-factories"), require("devtools/client/shared/vendor/lodash"), require("Services"), require("devtools/client/shared/vendor/react-dom"), require("devtools/shared/flags")) : factory(root["devtools/client/shared/vendor/react-prop-types"], root["devtools/client/shared/vendor/react"], root["devtools/client/shared/vendor/react-dom-factories"], root["devtools/client/shared/vendor/lodash"], root["Services"], root["devtools/client/shared/vendor/react-dom"], root["devtools/shared/flags"]);
 		for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
 	}
-})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_0__, __WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_10__, __WEBPACK_EXTERNAL_MODULE_20__, __WEBPACK_EXTERNAL_MODULE_24__, __WEBPACK_EXTERNAL_MODULE_71__) {
+})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_0__, __WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_10__, __WEBPACK_EXTERNAL_MODULE_20__, __WEBPACK_EXTERNAL_MODULE_24__, __WEBPACK_EXTERNAL_MODULE_72__) {
 return /******/ (function(modules) { // webpackBootstrap
 /******/ 	// The module cache
 /******/ 	var installedModules = {};
 /******/
 /******/ 	// The require function
 /******/ 	function __webpack_require__(moduleId) {
 /******/
 /******/ 		// Check if module is in cache
@@ -65,17 +65,17 @@ return /******/ (function(modules) { // 
 /******/
 /******/ 	// Object.prototype.hasOwnProperty.call
 /******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
 /******/
 /******/ 	// __webpack_public_path__
 /******/ 	__webpack_require__.p = "/assets/build";
 /******/
 /******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(__webpack_require__.s = 762);
+/******/ 	return __webpack_require__(__webpack_require__.s = 763);
 /******/ })
 /************************************************************************/
 /******/ ({
 
 /***/ 0:
 /***/ (function(module, exports) {
 
 module.exports = __WEBPACK_EXTERNAL_MODULE_0__;
@@ -91,17 +91,17 @@ module.exports = __WEBPACK_EXTERNAL_MODU
 
 /***/ 10:
 /***/ (function(module, exports) {
 
 module.exports = __WEBPACK_EXTERNAL_MODULE_10__;
 
 /***/ }),
 
-/***/ 101:
+/***/ 100:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -119,17 +119,17 @@ var _propTypes = __webpack_require__(0);
 var _propTypes2 = _interopRequireDefault(_propTypes);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 const { Component, createFactory } = _react2.default; /* This Source Code Form is subject to the terms of the Mozilla Public
                                                        * License, v. 2.0. If a copy of the MPL was not distributed with this
                                                        * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
-__webpack_require__(102);
+__webpack_require__(101);
 
 // depth
 const AUTO_EXPAND_DEPTH = 0;
 
 // Simplied selector targetting elements that can receive the focus,
 // full version at https://stackoverflow.com/questions/1599660.
 const FOCUSABLE_SELECTOR = ["a[href]:not([tabindex='-1'])", "button:not([disabled]):not([tabindex='-1'])", "iframe:not([tabindex='-1'])", "input:not([disabled]):not([tabindex='-1'])", "select:not([disabled]):not([tabindex='-1'])", "textarea:not([disabled]):not([tabindex='-1'])", "[tabindex]:not([tabindex='-1'])"].join(", ");
 
@@ -170,16 +170,17 @@ class TreeNode extends Component {
       index: _propTypes2.default.number.isRequired,
       depth: _propTypes2.default.number.isRequired,
       focused: _propTypes2.default.bool.isRequired,
       active: _propTypes2.default.bool.isRequired,
       expanded: _propTypes2.default.bool.isRequired,
       item: _propTypes2.default.any.isRequired,
       isExpandable: _propTypes2.default.bool.isRequired,
       onClick: _propTypes2.default.func,
+      shouldItemUpdate: _propTypes2.default.func,
       renderItem: _propTypes2.default.func.isRequired
     };
   }
 
   constructor(props) {
     super(props);
 
     this.treeNodeRef = _react2.default.createRef();
@@ -198,17 +199,17 @@ class TreeNode extends Component {
         elms[0].focus();
       }
     } else {
       elms.forEach(elm => elm.setAttribute("tabindex", "-1"));
     }
   }
 
   shouldComponentUpdate(nextProps) {
-    return this.props.item !== nextProps.item || this.props.focused !== nextProps.focused || this.props.expanded !== nextProps.expanded;
+    return this.props.item !== nextProps.item || this.props.shouldItemUpdate && this.props.shouldItemUpdate(this.props.item, nextProps.item) || this.props.focused !== nextProps.focused || this.props.expanded !== nextProps.expanded;
   }
 
   /**
    * Get a list of all elements that are focusable with a keyboard inside the
    * tree node.
    */
   getFocusableElements() {
     return this.treeNodeRef.current ? Array.from(this.treeNodeRef.current.querySelectorAll(FOCUSABLE_SELECTOR)) : [];
@@ -425,16 +426,27 @@ class Tree extends Component {
       // Type: getChildren(item: Item) -> [Item]
       //
       // Example:
       //
       //     // This item's children are stored in its `children` property.
       //     getChildren: item => item.children
       getChildren: _propTypes2.default.func.isRequired,
 
+      // A function to check if the tree node for the item should be updated.
+      //
+      // Type: shouldItemUpdate(prevItem: Item, nextItem: Item) -> Boolean
+      //
+      // Example:
+      //
+      //     // This item should be updated if it's type is a long string
+      //     shouldItemUpdate: (prevItem, nextItem) =>
+      //       nextItem.type === "longstring"
+      shouldItemUpdate: _propTypes2.default.func,
+
       // A function which takes an item and ArrowExpander component instance and
       // returns a component, or text, or anything else that React considers
       // renderable.
       //
       // Type: renderItem(item: Item,
       //                  depth: Number,
       //                  isFocused: Boolean,
       //                  arrow: ReactComponent,
@@ -994,16 +1006,17 @@ class Tree extends Component {
         // We make a key unique depending on whether the tree node is in active
         // or inactive state to make sure that it is actually replaced and the
         // tabbable state is reset.
         key: `${key}-${active === item ? "active" : "inactive"}`,
         id: key,
         index: i,
         item,
         depth,
+        shouldItemUpdate: this.props.shouldItemUpdate,
         renderItem: this.props.renderItem,
         focused: focused === item,
         active: active === item,
         expanded: this.props.isExpanded(item),
         isExpandable: this._nodeIsExpandable(item),
         onExpand: this._onExpand,
         onCollapse: this._onCollapse,
         onClick: e => {
@@ -1057,24 +1070,24 @@ class Tree extends Component {
     }, nodes);
   }
 }
 
 exports.default = Tree;
 
 /***/ }),
 
-/***/ 102:
+/***/ 101:
 /***/ (function(module, exports) {
 
 // removed by extract-text-webpack-plugin
 
 /***/ }),
 
-/***/ 109:
+/***/ 108:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -1084,17 +1097,17 @@ var _createClass = function () { functio
 var _propTypes = __webpack_require__(0);
 
 var _propTypes2 = _interopRequireDefault(_propTypes);
 
 var _react = __webpack_require__(1);
 
 var _react2 = _interopRequireDefault(_react);
 
-var _tab = __webpack_require__(110);
+var _tab = __webpack_require__(109);
 
 var _tab2 = _interopRequireDefault(_tab);
 
 var _tabList = __webpack_require__(224);
 
 var _tabList2 = _interopRequireDefault(_tabList);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -1228,17 +1241,17 @@ TabList.defaultProps = {
   children: null,
   className: _tabList2.default.container,
   onActivateTab: function onActivateTab() {},
   vertical: false
 };
 
 /***/ }),
 
-/***/ 110:
+/***/ 109:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -1300,17 +1313,17 @@ Tab.defaultProps = {
   active: false,
   className: _tab2.default.container,
   onActivate: undefined,
   tabRef: undefined
 };
 
 /***/ }),
 
-/***/ 111:
+/***/ 110:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -1356,23 +1369,23 @@ TabPanels.propTypes = {
 TabPanels.defaultProps = {
   accessibleId: undefined,
   activeIndex: 0,
   className: null
 };
 
 /***/ }),
 
-/***/ 112:
+/***/ 111:
 /***/ (function(module, exports, __webpack_require__) {
 
 (function() {
   var Query, coreChars, countDir, getCharCodes, getExtension, opt_char_re, truncatedUpperCase, _ref;
 
-  _ref = __webpack_require__(63), countDir = _ref.countDir, getExtension = _ref.getExtension;
+  _ref = __webpack_require__(64), countDir = _ref.countDir, getExtension = _ref.getExtension;
 
   module.exports = Query = (function() {
     function Query(query, _arg) {
       var optCharRegEx, pathSeparator, _ref1;
       _ref1 = _arg != null ? _arg : {}, optCharRegEx = _ref1.optCharRegEx, pathSeparator = _ref1.pathSeparator;
       if (!(query && query.length)) {
         return null;
       }
@@ -1420,40 +1433,40 @@ TabPanels.defaultProps = {
     return charCodes;
   };
 
 }).call(this);
 
 
 /***/ }),
 
-/***/ 131:
+/***/ 130:
 /***/ (function(module, exports, __webpack_require__) {
 
 const SplitBox = __webpack_require__(216);
 
 module.exports = SplitBox;
 
 /***/ }),
 
-/***/ 132:
+/***/ 131:
 /***/ (function(module, exports, __webpack_require__) {
 
 /* WEBPACK VAR INJECTION */(function(process) {(function() {
   var Query, defaultPathSeparator, filter, matcher, parseOptions, pathScorer, preparedQueryCache, scorer;
 
   filter = __webpack_require__(228);
 
   matcher = __webpack_require__(229);
 
   scorer = __webpack_require__(48);
 
-  pathScorer = __webpack_require__(63);
-
-  Query = __webpack_require__(112);
+  pathScorer = __webpack_require__(64);
+
+  Query = __webpack_require__(111);
 
   preparedQueryCache = null;
 
   defaultPathSeparator = (typeof process !== "undefined" && process !== null ? process.platform : void 0) === "win32" ? '\\' : '/';
 
   module.exports = {
     filter: function(candidates, query, options) {
       if (options == null) {
@@ -1548,17 +1561,17 @@ module.exports = SplitBox;
   };
 
 }).call(this);
 
 /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(52)))
 
 /***/ }),
 
-/***/ 133:
+/***/ 132:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -1574,17 +1587,17 @@ exports.default = _Svg2.default; /* This
                                   * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 /**
  * This file maps the SVG React Components in the images directory.
  */
 
 /***/ }),
 
-/***/ 155:
+/***/ 154:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 var _devtoolsServices = __webpack_require__(20);
 
 var _devtoolsServices2 = _interopRequireDefault(_devtoolsServices);
@@ -1810,17 +1823,17 @@ Menu.sendActionToFirstResponder = () => 
 Menu.buildFromTemplate = () => {
   throw Error("Not implemented");
 };
 
 module.exports = Menu;
 
 /***/ }),
 
-/***/ 156:
+/***/ 155:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
@@ -1848,17 +1861,17 @@ p.defer = function defer() {
     promise: promise
   };
 };
 
 module.exports = p;
 
 /***/ }),
 
-/***/ 157:
+/***/ 156:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
@@ -1921,17 +1934,17 @@ function MenuItem({
   this.visible = visible;
   this.accelerator = accelerator;
 }
 
 module.exports = MenuItem;
 
 /***/ }),
 
-/***/ 158:
+/***/ 157:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
@@ -2110,17 +2123,17 @@ function makeObserver(self, cache, prefs
     }
   };
 }
 
 exports.PrefsHelper = PrefsHelper;
 
 /***/ }),
 
-/***/ 159:
+/***/ 158:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
@@ -2358,34 +2371,17 @@ KeyShortcuts.prototype = {
   off(key, listener) {
     this.eventEmitter.off(key, listener);
   }
 };
 module.exports = KeyShortcuts;
 
 /***/ }),
 
-/***/ 16:
-/***/ (function(module, exports, __webpack_require__) {
-
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-const networkRequest = __webpack_require__(25);
-const workerUtils = __webpack_require__(26);
-
-module.exports = {
-  networkRequest,
-  workerUtils
-};
-
-/***/ }),
-
-/***/ 160:
+/***/ 159:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 
@@ -2396,17 +2392,34 @@ module.exports = {
  * Based on nsIMarkupDocumentViewer.fullZoom API
  * https://developer.mozilla.org/en-US/Firefox/Releases/3/Full_page_zoom
  */
 
 exports.register = function (window) {};
 
 /***/ }),
 
-/***/ 161:
+/***/ 16:
+/***/ (function(module, exports, __webpack_require__) {
+
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const networkRequest = __webpack_require__(25);
+const workerUtils = __webpack_require__(26);
+
+module.exports = {
+  networkRequest,
+  workerUtils
+};
+
+/***/ }),
+
+/***/ 160:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 /**
  *
  * Adapted from https://github.com/mozilla-b2g/gaia/blob/f09993563fb5fec4393eb71816ce76cb00463190/shared/js/async_storage.js
  * (converted to use Promises instead of callbacks).
  *
@@ -2589,17 +2602,17 @@ exports.getItem = getItem;
 exports.setItem = setItem;
 exports.removeItem = removeItem;
 exports.clear = clear;
 exports.length = length;
 exports.key = key;
 
 /***/ }),
 
-/***/ 162:
+/***/ 161:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
@@ -2906,17 +2919,17 @@ module.exports = {
   isContentScheme,
   isWASM,
   isDataScheme,
   getSourceMappedFile
 };
 
 /***/ }),
 
-/***/ 163:
+/***/ 162:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
@@ -3246,17 +3259,17 @@ class Telemetry {
    */
   toolClosed(id, sessionId, obj) {}
 }
 
 module.exports = Telemetry;
 
 /***/ }),
 
-/***/ 164:
+/***/ 163:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 // This file is a chrome-API-free version of the module
@@ -3266,17 +3279,17 @@ module.exports = Telemetry;
 // should implement the similar functionalities on its own.
 //
 // Please keep in mind that if the feature in this file has changed, don't
 // forget to also change that accordingly in
 // devtools/client/shared/unicode-url.js in the mozilla-central repository.
 
 
 
-const punycode = __webpack_require__(68);
+const punycode = __webpack_require__(69);
 
 /**
  * Gets a readble Unicode hostname from a hostname.
  *
  * If the `hostname` is a readable ASCII hostname, such as example.org, then
  * this function will simply return the original `hostname`.
  *
  * If the `hostname` is a Punycode hostname representing a Unicode domain name,
@@ -4594,35 +4607,35 @@ module.exports = Draggable;
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 
-var _tabList = __webpack_require__(109);
+var _tabList = __webpack_require__(108);
 
 Object.defineProperty(exports, 'TabList', {
   enumerable: true,
   get: function get() {
     return _interopRequireDefault(_tabList).default;
   }
 });
 
-var _tabPanels = __webpack_require__(111);
+var _tabPanels = __webpack_require__(110);
 
 Object.defineProperty(exports, 'TabPanels', {
   enumerable: true,
   get: function get() {
     return _interopRequireDefault(_tabPanels).default;
   }
 });
 
-var _tab = __webpack_require__(110);
+var _tab = __webpack_require__(109);
 
 Object.defineProperty(exports, 'Tab', {
   enumerable: true,
   get: function get() {
     return _interopRequireDefault(_tab).default;
   }
 });
 
@@ -4692,21 +4705,21 @@ var _propTypes2 = _interopRequireDefault
 var _react = __webpack_require__(1);
 
 var _react2 = _interopRequireDefault(_react);
 
 var _uniqueId = __webpack_require__(226);
 
 var _uniqueId2 = _interopRequireDefault(_uniqueId);
 
-var _tabList = __webpack_require__(109);
+var _tabList = __webpack_require__(108);
 
 var _tabList2 = _interopRequireDefault(_tabList);
 
-var _tabPanels = __webpack_require__(111);
+var _tabPanels = __webpack_require__(110);
 
 var _tabPanels2 = _interopRequireDefault(_tabPanels);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
 function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
@@ -4807,19 +4820,19 @@ function uniqueId() {
 /***/ 228:
 /***/ (function(module, exports, __webpack_require__) {
 
 (function() {
   var Query, pathScorer, pluckCandidates, scorer, sortCandidates;
 
   scorer = __webpack_require__(48);
 
-  pathScorer = __webpack_require__(63);
-
-  Query = __webpack_require__(112);
+  pathScorer = __webpack_require__(64);
+
+  Query = __webpack_require__(111);
 
   pluckCandidates = function(a) {
     return a.candidate;
   };
 
   sortCandidates = function(a, b) {
     return b.score - a.score;
   };
@@ -5550,17 +5563,17 @@ module.exports = g;
 
 "use strict";
 /* WEBPACK VAR INJECTION */(function(process) {
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
-const flag = __webpack_require__(71);
+const flag = __webpack_require__(72);
 
 function isBrowser() {
   return typeof window == "object";
 }
 
 function isNode() {
   return process && process.release && process.release.name == 'node';
 }
@@ -5886,26 +5899,26 @@ module.exports = {
 
 "use strict";
 
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-const Menu = __webpack_require__(155);
-const MenuItem = __webpack_require__(157);
-const { PrefsHelper } = __webpack_require__(158);
-const KeyShortcuts = __webpack_require__(159);
-const { ZoomKeys } = __webpack_require__(160);
+const Menu = __webpack_require__(154);
+const MenuItem = __webpack_require__(156);
+const { PrefsHelper } = __webpack_require__(157);
+const KeyShortcuts = __webpack_require__(158);
+const { ZoomKeys } = __webpack_require__(159);
 const EventEmitter = __webpack_require__(46);
-const asyncStorage = __webpack_require__(161);
-const SourceUtils = __webpack_require__(162);
-const Telemetry = __webpack_require__(163);
-const { getUnicodeHostname, getUnicodeUrlPath, getUnicodeUrl } = __webpack_require__(164);
+const asyncStorage = __webpack_require__(160);
+const SourceUtils = __webpack_require__(161);
+const Telemetry = __webpack_require__(162);
+const { getUnicodeHostname, getUnicodeUrlPath, getUnicodeUrl } = __webpack_require__(163);
 
 module.exports = {
   KeyShortcuts,
   Menu,
   MenuItem,
   PrefsHelper,
   ZoomKeys,
   asyncStorage,
@@ -5914,17 +5927,17 @@ module.exports = {
   Telemetry,
   getUnicodeHostname,
   getUnicodeUrlPath,
   getUnicodeUrl
 };
 
 /***/ }),
 
-/***/ 42:
+/***/ 41:
 /***/ (function(module, exports) {
 
 module.exports = function(module) {
 	if(!module.webpackPolyfill) {
 		module.deprecate = function() {};
 		module.paths = [];
 		// module.parent = undefined by default
 		if(!module.children) module.children = [];
@@ -5956,17 +5969,17 @@ module.exports = function(module) {
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 var EventEmitter = function EventEmitter() {};
 module.exports = EventEmitter;
 
-const promise = __webpack_require__(156);
+const promise = __webpack_require__(155);
 
 /**
  * Decorate an object with event emitter functionality.
  *
  * @param Object aObjectToDecorate
  *        Bind all public methods of EventEmitter to
  *        the aObjectToDecorate object.
  */
@@ -6660,17 +6673,17 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBP
 	} else {
 		window.classNames = classNames;
 	}
 }());
 
 
 /***/ }),
 
-/***/ 63:
+/***/ 64:
 /***/ (function(module, exports, __webpack_require__) {
 
 (function() {
   var computeScore, countDir, file_coeff, getExtension, getExtensionScore, isMatch, scorePath, scoreSize, tau_depth, _ref;
 
   _ref = __webpack_require__(48), isMatch = _ref.isMatch, computeScore = _ref.computeScore, scoreSize = _ref.scoreSize;
 
   tau_depth = 20;
@@ -6777,17 +6790,17 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBP
     return matched / m;
   };
 
 }).call(this);
 
 
 /***/ }),
 
-/***/ 68:
+/***/ 69:
 /***/ (function(module, exports, __webpack_require__) {
 
 /* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/punycode v1.4.1 by @mathias */
 ;(function(root) {
 
 	/** Detect free variables */
 	var freeExports = typeof exports == 'object' && exports &&
 		!exports.nodeType && exports;
@@ -7313,71 +7326,71 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBP
 		}
 	} else {
 		// in Rhino or a web browser
 		root.punycode = punycode;
 	}
 
 }(this));
 
-/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(42)(module), __webpack_require__(27)))
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(41)(module), __webpack_require__(27)))
 
 /***/ }),
 
-/***/ 71:
+/***/ 72:
 /***/ (function(module, exports) {
 
-module.exports = __WEBPACK_EXTERNAL_MODULE_71__;
+module.exports = __WEBPACK_EXTERNAL_MODULE_72__;
 
 /***/ }),
 
-/***/ 73:
+/***/ 74:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var _tree = __webpack_require__(101);
+var _tree = __webpack_require__(100);
 
 var _tree2 = _interopRequireDefault(_tree);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 module.exports = {
   Tree: _tree2.default
 }; /* This Source Code Form is subject to the terms of the Mozilla Public
     * License, v. 2.0. If a copy of the MPL was not distributed with this
     * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /***/ }),
 
-/***/ 762:
+/***/ 763:
 /***/ (function(module, exports, __webpack_require__) {
 
-module.exports = __webpack_require__(763);
+module.exports = __webpack_require__(764);
 
 
 /***/ }),
 
-/***/ 763:
+/***/ 764:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.vendored = undefined;
 
-var _devtoolsComponents = __webpack_require__(73);
+var _devtoolsComponents = __webpack_require__(74);
 
 var devtoolsComponents = _interopRequireWildcard(_devtoolsComponents);
 
-var _devtoolsConfig = __webpack_require__(764);
+var _devtoolsConfig = __webpack_require__(765);
 
 var devtoolsConfig = _interopRequireWildcard(_devtoolsConfig);
 
 var _devtoolsContextmenu = __webpack_require__(33);
 
 var devtoolsContextmenu = _interopRequireWildcard(_devtoolsContextmenu);
 
 var _devtoolsEnvironment = __webpack_require__(30);
@@ -7387,17 +7400,17 @@ var devtoolsEnvironment = _interopRequir
 var _devtoolsModules = __webpack_require__(34);
 
 var devtoolsModules = _interopRequireWildcard(_devtoolsModules);
 
 var _devtoolsUtils = __webpack_require__(16);
 
 var devtoolsUtils = _interopRequireWildcard(_devtoolsUtils);
 
-var _fuzzaldrinPlus = __webpack_require__(132);
+var _fuzzaldrinPlus = __webpack_require__(131);
 
 var fuzzaldrinPlus = _interopRequireWildcard(_fuzzaldrinPlus);
 
 var _Transition = __webpack_require__(213);
 
 var transition = _interopRequireWildcard(_Transition);
 
 var _tabs = __webpack_require__(221);
@@ -7407,25 +7420,25 @@ var reactAriaComponentsTabs = _interopRe
 var _reselect = __webpack_require__(31);
 
 var reselect = _interopRequireWildcard(_reselect);
 
 var _classnames = __webpack_require__(6);
 
 var _classnames2 = _interopRequireDefault(_classnames);
 
-var _devtoolsSplitter = __webpack_require__(131);
+var _devtoolsSplitter = __webpack_require__(130);
 
 var _devtoolsSplitter2 = _interopRequireDefault(_devtoolsSplitter);
 
 var _lodashMove = __webpack_require__(173);
 
 var _lodashMove2 = _interopRequireDefault(_lodashMove);
 
-var _Svg = __webpack_require__(133);
+var _Svg = __webpack_require__(132);
 
 var _Svg2 = _interopRequireDefault(_Svg);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
 // We cannot directly export literals containing special characters
@@ -7469,45 +7482,45 @@ const vendored = exports.vendored = {
   // Svg is required via relative paths, so the key is not imported path.
   // See .babel/transform-mc.js
   Svg: _Svg2.default
 };
 // $FlowIgnore
 
 /***/ }),
 
-/***/ 764:
+/***/ 765:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-const feature = __webpack_require__(765);
+const feature = __webpack_require__(766);
 
 module.exports = feature;
 
 /***/ }),
 
-/***/ 765:
+/***/ 766:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const { get: pick, set: put } = __webpack_require__(10);
-const fs = __webpack_require__(766);
-const path = __webpack_require__(767);
+const fs = __webpack_require__(767);
+const path = __webpack_require__(768);
 
 let config;
 /**
  * Gets a config value for a given key
  * e.g "chrome.webSocketPort"
  */
 function getValue(key) {
   return pick(config, key);
@@ -7537,24 +7550,24 @@ module.exports = {
   setValue,
   getConfig,
   setConfig,
   updateLocalConfig
 };
 
 /***/ }),
 
-/***/ 766:
+/***/ 767:
 /***/ (function(module, exports) {
 
 
 
 /***/ }),
 
-/***/ 767:
+/***/ 768:
 /***/ (function(module, exports, __webpack_require__) {
 
 /* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors.
 //
 // Permission is hereby granted, free of charge, to any person obtaining a
 // copy of this software and associated documentation files (the
 // "Software"), to deal in the Software without restriction, including
 // without limitation the rights to use, copy, modify, merge, publish,
--- a/devtools/client/debugger/new/images/plus.svg
+++ b/devtools/client/debugger/new/images/plus.svg
@@ -1,6 +1,6 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16">
-  <path d="M14 7H9V2a1 1 0 0 0-2 0v5H2a1 1 0 1 0 0 2h5v5a1 1 0 0 0 2 0V9h5a1 1 0 0 0 0-2z"/>
+  <path d="M8.5 8.5V14a.5.5 0 1 1-1 0V8.5H2a.5.5 0 0 1 0-1h5.5V2a.5.5 0 0 1 1 0v5.5H14a.5.5 0 1 1 0 1H8.5z"/>
 </svg>
--- a/devtools/client/debugger/new/packages/devtools-components/src/tests/__snapshots__/tree.js.snap
+++ b/devtools/client/debugger/new/packages/devtools-components/src/tests/__snapshots__/tree.js.snap
@@ -261,16 +261,30 @@ exports[`Tree active item - renders as e
 |  ▼ D
 |  |    J
 ▼ M
 |  ▼ N
 |  |    O
 "
 `;
 
+exports[`Tree calls shouldItemUpdate when provided 1`] = `
+"
+▶︎ A
+▶︎ M
+"
+`;
+
+exports[`Tree calls shouldItemUpdate when provided 2`] = `
+"
+▶︎ A
+▶︎ M
+"
+`;
+
 exports[`Tree ignores key strokes when pressing modifiers 1`] = `
 "
 ▼ A
 |  ▼ B
 |  |  ▼ E
 |  |  |    K
 |  |  |    [L]
 |  |    F
--- a/devtools/client/debugger/new/packages/devtools-components/src/tests/tree.js
+++ b/devtools/client/debugger/new/packages/devtools-components/src/tests/tree.js
@@ -198,16 +198,40 @@ describe("Tree", () => {
 
   it("renders as expected when passed autoDepth:1", () => {
     const wrapper = mountTree({
       autoExpandDepth: 1
     });
     expect(formatTree(wrapper)).toMatchSnapshot();
   });
 
+  it("calls shouldItemUpdate when provided", () => {
+    const shouldItemUpdate = jest.fn((prev, next) => true);
+    const wrapper = mountTree({
+      shouldItemUpdate
+    });
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(shouldItemUpdate.mock.calls).toHaveLength(0);
+
+    wrapper
+      .find("Tree")
+      .first()
+      .instance()
+      .forceUpdate();
+    expect(formatTree(wrapper)).toMatchSnapshot();
+    expect(shouldItemUpdate.mock.calls).toHaveLength(2);
+
+    expect(shouldItemUpdate.mock.calls[0][0]).toBe("A");
+    expect(shouldItemUpdate.mock.calls[0][1]).toBe("A");
+    expect(shouldItemUpdate.mock.results[0].value).toBe(true);
+    expect(shouldItemUpdate.mock.calls[1][0]).toBe("M");
+    expect(shouldItemUpdate.mock.calls[1][1]).toBe("M");
+    expect(shouldItemUpdate.mock.results[1].value).toBe(true);
+  });
+
   it("active item - renders as expected when clicking away", () => {
     const wrapper = mountTree({
       expanded: new Set("ABCDEFGHIJKLMNO".split("")),
       focused: "G",
       active: "G"
     });
     expect(formatTree(wrapper)).toMatchSnapshot();
     expect(wrapper.find(".active").prop("id")).toBe("key-G");
--- a/devtools/client/debugger/new/packages/devtools-components/src/tree.js
+++ b/devtools/client/debugger/new/packages/devtools-components/src/tree.js
@@ -61,16 +61,17 @@ class TreeNode extends Component {
       index: PropTypes.number.isRequired,
       depth: PropTypes.number.isRequired,
       focused: PropTypes.bool.isRequired,
       active: PropTypes.bool.isRequired,
       expanded: PropTypes.bool.isRequired,
       item: PropTypes.any.isRequired,
       isExpandable: PropTypes.bool.isRequired,
       onClick: PropTypes.func,
+      shouldItemUpdate: PropTypes.func,
       renderItem: PropTypes.func.isRequired
     };
   }
 
   constructor(props) {
     super(props);
 
     this.treeNodeRef = React.createRef();
@@ -91,16 +92,18 @@ class TreeNode extends Component {
     } else {
       elms.forEach(elm => elm.setAttribute("tabindex", "-1"));
     }
   }
 
   shouldComponentUpdate(nextProps) {
     return (
       this.props.item !== nextProps.item ||
+      (this.props.shouldItemUpdate &&
+        this.props.shouldItemUpdate(this.props.item, nextProps.item)) ||
       this.props.focused !== nextProps.focused ||
       this.props.expanded !== nextProps.expanded
     );
   }
 
   /**
    * Get a list of all elements that are focusable with a keyboard inside the
    * tree node.
@@ -333,16 +336,27 @@ class Tree extends Component {
       // Type: getChildren(item: Item) -> [Item]
       //
       // Example:
       //
       //     // This item's children are stored in its `children` property.
       //     getChildren: item => item.children
       getChildren: PropTypes.func.isRequired,
 
+      // A function to check if the tree node for the item should be updated.
+      //
+      // Type: shouldItemUpdate(prevItem: Item, nextItem: Item) -> Boolean
+      //
+      // Example:
+      //
+      //     // This item should be updated if it's type is a long string
+      //     shouldItemUpdate: (prevItem, nextItem) =>
+      //       nextItem.type === "longstring"
+      shouldItemUpdate: PropTypes.func,
+
       // A function which takes an item and ArrowExpander component instance and
       // returns a component, or text, or anything else that React considers
       // renderable.
       //
       // Type: renderItem(item: Item,
       //                  depth: Number,
       //                  isFocused: Boolean,
       //                  arrow: ReactComponent,
@@ -924,16 +938,17 @@ class Tree extends Component {
         // We make a key unique depending on whether the tree node is in active
         // or inactive state to make sure that it is actually replaced and the
         // tabbable state is reset.
         key: `${key}-${active === item ? "active" : "inactive"}`,
         id: key,
         index: i,
         item,
         depth,
+        shouldItemUpdate: this.props.shouldItemUpdate,
         renderItem: this.props.renderItem,
         focused: focused === item,
         active: active === item,
         expanded: this.props.isExpanded(item),
         isExpandable: this._nodeIsExpandable(item),
         onExpand: this._onExpand,
         onCollapse: this._onCollapse,
         onClick: e => {
--- a/devtools/client/debugger/new/packages/devtools-reps/package.json
+++ b/devtools/client/debugger/new/packages/devtools-reps/package.json
@@ -33,17 +33,17 @@
     "redux": "^3.7.2"
   },
   "devDependencies": {
     "@sucrase/webpack-object-rest-spread-plugin": "^1.0.0",
     "babel-plugin-syntax-object-rest-spread": "^6.13.0",
     "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0",
     "babel-preset-react": "^6.24.1",
     "devtools-config": "^0.0.16",
-    "devtools-launchpad": "^0.0.149",
+    "devtools-launchpad": "^0.0.150",
     "devtools-license-check": "^0.7.0",
     "devtools-modules": "~1.1.0",
     "devtools-services": "^0.0.1",
     "enzyme": "^3.3.0",
     "enzyme-adapter-react-16": "^1.1.1",
     "enzyme-to-json": "^3.3.1",
     "eslint": "^5.0.0",
     "eslint-plugin-mozilla": "1.1.1",
--- a/devtools/client/debugger/new/packages/devtools-reps/src/object-inspector/components/ObjectInspector.js
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/object-inspector/components/ObjectInspector.js
@@ -19,16 +19,17 @@ const ObjectInspectorItem = createFactor
 const classnames = require("classnames");
 
 const Utils = require("../utils");
 const { renderRep, shouldRenderRootsInReps } = Utils;
 const {
   getChildrenWithEvaluations,
   getActor,
   getParent,
+  getValue,
   nodeIsPrimitive,
   nodeHasGetter,
   nodeHasSetter
 } = Utils.node;
 
 import type { CachedNodes, Props } from "../types";
 
 type DefaultProps = {
@@ -73,16 +74,17 @@ class ObjectInspector extends Component<
 
     self.getItemChildren = this.getItemChildren.bind(this);
     self.isNodeExpandable = this.isNodeExpandable.bind(this);
     self.setExpanded = this.setExpanded.bind(this);
     self.focusItem = this.focusItem.bind(this);
     self.activateItem = this.activateItem.bind(this);
     self.getRoots = this.getRoots.bind(this);
     self.getNodeKey = this.getNodeKey.bind(this);
+    self.shouldItemUpdate = this.shouldItemUpdate.bind(this);
   }
 
   componentWillMount() {
     this.roots = this.props.roots;
     this.focusedItem = this.props.focusedItem;
     this.activeItem = this.props.activeItem;
   }
 
@@ -231,16 +233,23 @@ class ObjectInspector extends Component<
       this.forceUpdate();
 
       if (onActivate) {
         onActivate(item);
       }
     }
   }
 
+  shouldItemUpdate(prevItem: Node, nextItem: Node) {
+    const value = getValue(nextItem);
+    // Long string should always update because fullText loading will not
+    // trigger item re-render.
+    return value && value.type === "longString";
+  }
+
   render() {
     const {
       autoExpandAll = true,
       autoExpandDepth = 1,
       focusable = true,
       disableWrap = false,
       expandedPaths,
       inline
@@ -266,16 +275,17 @@ class ObjectInspector extends Component<
       getChildren: this.getItemChildren,
       getKey: this.getNodeKey,
 
       onExpand: item => this.setExpanded(item, true),
       onCollapse: item => this.setExpanded(item, false),
       onFocus: focusable ? this.focusItem : null,
       onActivate: focusable ? this.activateItem : null,
 
+      shouldItemUpdate: this.shouldItemUpdate,
       renderItem: (item, depth, focused, arrow, expanded) =>
         ObjectInspectorItem({
           ...this.props,
           item,
           depth,
           focused,
           arrow,
           expanded,
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/packages/devtools-reps/src/object-inspector/tests/component/should-item-update.js
@@ -0,0 +1,92 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
+
+/* global jest */
+
+const { mountObjectInspector } = require("../test-utils");
+const ObjectClient = require("../__mocks__/object-client");
+const LongStringClient = require("../__mocks__/long-string-client");
+
+const repsPath = "../../../reps";
+const longStringStubs = require(`${repsPath}/stubs/long-string`);
+const gripStubs = require(`${repsPath}/stubs/grip`);
+
+function mount(stub) {
+  const root = {
+    path: "root",
+    contents: {
+      value: stub
+    }
+  };
+
+  const { wrapper } = mountObjectInspector({
+    client: {
+      createObjectClient: grip => ObjectClient(grip),
+      createLongStringClient: grip => LongStringClient(grip)
+    },
+    props: {
+      roots: [root]
+    }
+  });
+
+  return { wrapper, root };
+}
+
+describe("shouldItemUpdate", () => {
+  it("for longStrings", () => {
+    shouldItemUpdateCheck(longStringStubs.get("testUnloadedFullText"), true, 2);
+  });
+
+  it("for basic object", () => {
+    shouldItemUpdateCheck(gripStubs.get("testBasic"), false, 1);
+  });
+});
+
+function shouldItemUpdateCheck(
+  stub,
+  shouldItemUpdateResult,
+  renderCallsLength
+) {
+  const { root, wrapper } = mount(stub);
+
+  const shouldItemUpdateSpy = getShouldItemUpdateSpy(wrapper);
+  const treeNodeRenderSpy = getTreeNodeRenderSpy(wrapper);
+
+  updateObjectInspectorTree(wrapper);
+
+  checkShouldItemUpdate(shouldItemUpdateSpy, root, shouldItemUpdateResult);
+  expect(treeNodeRenderSpy.mock.calls).toHaveLength(renderCallsLength);
+}
+
+function checkShouldItemUpdate(spy, item, result) {
+  expect(spy.mock.calls).toHaveLength(1);
+  expect(spy.mock.calls[0][0]).toBe(item);
+  expect(spy.mock.calls[0][1]).toBe(item);
+  expect(spy.mock.results[0].value).toBe(result);
+}
+
+function getInstance(wrapper, selector) {
+  return wrapper
+    .find(selector)
+    .first()
+    .instance();
+}
+
+function getShouldItemUpdateSpy(wrapper) {
+  return jest.spyOn(
+    getInstance(wrapper, "ObjectInspector"),
+    "shouldItemUpdate"
+  );
+}
+
+function getTreeNodeRenderSpy(wrapper) {
+  return jest.spyOn(getInstance(wrapper, "TreeNode"), "render");
+}
+
+function updateObjectInspectorTree(wrapper) {
+  // Update the ObjectInspector first to propagate its updated options to the
+  // Tree component.
+  getInstance(wrapper, "ObjectInspector").forceUpdate();
+  getInstance(wrapper, "Tree").forceUpdate();
+}
--- a/devtools/client/debugger/new/src/actions/preview.js
+++ b/devtools/client/debugger/new/src/actions/preview.js
@@ -99,17 +99,21 @@ export function setPreview(
           return;
         }
 
         const { result } = await client.evaluateInFrame(expression, {
           frameId: selectedFrame.id,
           thread: selectedFrame.thread
         });
 
-        if (!result) {
+        // Error case occurs for a token that follows an errored evaluation
+        // https://github.com/firefox-devtools/debugger/pull/8056
+        // Accommodating for null allows us to show preview for falsy values
+        // line "", false, null, Nan, and more
+        if (result === null) {
           return;
         }
 
         return {
           expression,
           result,
           location,
           tokenPos,
--- a/devtools/client/debugger/new/src/components/Editor/DebugLine.js
+++ b/devtools/client/debugger/new/src/components/Editor/DebugLine.js
@@ -50,16 +50,21 @@ export class DebugLine extends Component
     endOperation();
   }
 
   componentDidMount() {
     const { why, frame, source } = this.props;
     this.setDebugLine(why, frame, source);
   }
 
+  componentWillUnmount() {
+    const { why, frame, source } = this.props;
+    this.clearDebugLine(why, frame, source);
+  }
+
   setDebugLine(why: Why, frame: Frame, source: Source) {
     if (!isDocumentReady(source, frame)) {
       return;
     }
     const sourceId = frame.location.sourceId;
     const doc = getDocument(sourceId);
 
     let { line, column } = toEditorPosition(frame.location);
--- a/devtools/client/debugger/new/src/components/Editor/Footer.css
+++ b/devtools/client/debugger/new/src/components/Editor/Footer.css
@@ -56,17 +56,16 @@
   width: 20px;
   margin: 0 4px;
 }
 
 .source-footer > .commands > .blackboxed > .img.blackBox {
   background-color: var(--theme-icon-checked-color);
 }
 
-.source-footer .blackbox-summary,
 .source-footer .mapped-source,
 .source-footer .cursor-position {
   color: var(--theme-body-color);
   padding-right: 2.5px;
 }
 
 .source-footer .mapped-source {
   white-space: nowrap;
--- a/devtools/client/debugger/new/src/components/Editor/Footer.js
+++ b/devtools/client/debugger/new/src/components/Editor/Footer.js
@@ -128,30 +128,16 @@ class SourceFooter extends PureComponent
         title={tooltip}
         aria-label={tooltip}
       >
         <AccessibleImage className="blackBox" />
       </button>
     );
   }
 
-  blackBoxSummary() {
-    const { selectedSource } = this.props;
-
-    if (!selectedSource || !selectedSource.isBlackBoxed) {
-      return;
-    }
-
-    return (
-      <span className="blackbox-summary" key="blackbox-summary">
-        {L10N.getStr("sourceFooter.blackboxed")}
-      </span>
-    );
-  }
-
   renderToggleButton() {
     if (this.props.horizontal) {
       return;
     }
 
     return (
       <PaneToggleButton
         position="end"
@@ -159,21 +145,19 @@ class SourceFooter extends PureComponent
         collapsed={this.props.endPanelCollapsed}
         horizontal={this.props.horizontal}
         handleClick={(this.props.togglePaneCollapse: any)}
       />
     );
   }
 
   renderCommands() {
-    const commands = [
-      this.prettyPrintButton(),
-      this.blackBoxButton(),
-      this.blackBoxSummary()
-    ].filter(Boolean);
+    const commands = [this.prettyPrintButton(), this.blackBoxButton()].filter(
+      Boolean
+    );
 
     return commands.length ? <div className="commands">{commands}</div> : null;
   }
 
   renderSourceSummary() {
     const { mappedSource, jumpToMappedLocation, selectedSource } = this.props;
 
     if (!mappedSource || !isOriginal(selectedSource)) {
--- a/devtools/client/debugger/new/src/components/Editor/Preview/Popup.js
+++ b/devtools/client/debugger/new/src/components/Editor/Preview/Popup.js
@@ -313,30 +313,31 @@ export class Popup extends Component<Pro
       >
         {this.renderPreview()}
       </Popover>
     );
   }
 }
 
 const mapStateToProps = state => ({
-  popupObjectProperties: getAllPopupObjectProperties(state),
-  openElementInInspector: actions.openElementInInspectorCommand
+  popupObjectProperties: getAllPopupObjectProperties(state)
 });
 
 const {
   addExpression,
   selectSourceURL,
   setPopupObjectProperties,
-  openLink
+  openLink,
+  openElementInInspectorCommand
 } = actions;
 
 const mapDispatchToProps = {
   addExpression,
   selectSourceURL,
   setPopupObjectProperties,
-  openLink
+  openLink,
+  openElementInInspector: openElementInInspectorCommand
 };
 
 export default connect(
   mapStateToProps,
   mapDispatchToProps
 )(Popup);
--- a/devtools/client/debugger/new/src/components/Editor/Preview/index.js
+++ b/devtools/client/debugger/new/src/components/Editor/Preview/index.js
@@ -36,19 +36,17 @@ type State = {
 function inPopup(e) {
   const { relatedTarget } = e;
 
   if (!relatedTarget) {
     return true;
   }
 
   const pop =
-    relatedTarget.closest(".tooltip") ||
-    relatedTarget.closest(".popover") ||
-    relatedTarget.classList.contains("debug-expression");
+    relatedTarget.closest(".tooltip") || relatedTarget.closest(".popover");
 
   return pop;
 }
 
 function getElementFromPos(pos: DOMRect) {
   // We need to use element*s*AtPoint because the tooltip overlays
   // the token and thus an undesirable element may be returned
   const elementsAtPoint = [
--- a/devtools/client/debugger/new/src/components/Editor/Tab.js
+++ b/devtools/client/debugger/new/src/components/Editor/Tab.js
@@ -21,17 +21,16 @@ import {
   getDisplayPath,
   getFileURL,
   getRawSourceURL,
   getSourceQueryString,
   getTruncatedFileName,
   isPretty,
   shouldBlackbox
 } from "../../utils/source";
-import { shouldShowPrettyPrint } from "../../utils/editor";
 import { copyToTheClipboard } from "../../utils/clipboard";
 import { getTabMenuItems } from "../../utils/tabs";
 
 import {
   getSelectedSource,
   getActiveSearch,
   getSourcesForTabs,
   getHasSiblingOfSameName
@@ -130,38 +129,35 @@ class Tab extends PureComponent<Props> {
         }
       },
       {
         item: {
           ...tabMenuItems.showSource,
           disabled: !selectedSource.url,
           click: () => showSource(tab)
         }
-      }
-    ];
-
-    items.push(
+      },
       {
         item: {
           ...tabMenuItems.toggleBlackBox,
           label: source.isBlackBoxed
             ? L10N.getStr("sourceFooter.unblackbox")
             : L10N.getStr("sourceFooter.blackbox"),
           disabled: !shouldBlackbox(source),
           click: () => toggleBlackBox(source)
         }
       },
       {
         item: {
           ...tabMenuItems.prettyPrint,
           click: () => togglePrettyPrint(tab),
-          disabled: !shouldShowPrettyPrint(source)
+          disabled: isPretty(sourceTab)
         }
       }
-    );
+    ];
 
     showMenu(e, buildMenu(items));
   }
 
   isProjectSearchEnabled() {
     return this.props.activeSearch === "project";
   }
 
--- a/devtools/client/debugger/new/src/components/Editor/Tabs.js
+++ b/devtools/client/debugger/new/src/components/Editor/Tabs.js
@@ -139,17 +139,17 @@ class Tabs extends PureComponent<Props, 
     const filename = getFilename(source);
 
     const onClick = () => selectSource(source.id);
     return (
       <li key={source.id} onClick={onClick}>
         <AccessibleImage
           className={`dropdown-icon ${this.getIconClass(source)}`}
         />
-        {filename}
+        <span className="dropdown-label">{filename}</span>
       </li>
     );
   };
 
   renderTabs() {
     const { tabSources } = this.props;
     if (!tabSources) {
       return;
--- a/devtools/client/debugger/new/src/components/SecondaryPanes/Breakpoints/Breakpoint.js
+++ b/devtools/client/debugger/new/src/components/SecondaryPanes/Breakpoints/Breakpoint.js
@@ -144,16 +144,17 @@ class Breakpoint extends PureComponent<P
     (text, editor) => `${text} - ${editor.CodeMirror ? "editor" : ""}`
   );
 
   /* eslint-disable react/no-danger */
   render() {
     const { breakpoint } = this.props;
     const text = this.getBreakpointText();
     const editor = getEditor();
+    const labelId = `${breakpoint.id}-label`;
     return (
       <div
         className={classnames({
           breakpoint,
           paused: this.isCurrentlyPausedAtBreakpoint(),
           disabled: breakpoint.disabled,
           "is-conditional": !!breakpoint.options.condition,
           "is-log": !!breakpoint.options.logValue
@@ -164,25 +165,26 @@ class Breakpoint extends PureComponent<P
       >
         <input
           id={breakpoint.id}
           type="checkbox"
           className="breakpoint-checkbox"
           checked={!breakpoint.disabled}
           onChange={this.handleBreakpointCheckbox}
           onClick={ev => ev.stopPropagation()}
+          aria-labelledby={labelId}
         />
-        <label
-          htmlFor={breakpoint.id}
+        <span
+          id={labelId}
           className="breakpoint-label cm-s-mozilla devtools-monospace"
           onClick={this.selectBreakpoint}
           title={text}
         >
           <span dangerouslySetInnerHTML={this.highlightText(text, editor)} />
-        </label>
+        </span>
         <div className="breakpoint-line-close">
           <div className="breakpoint-line devtools-monospace">
             {this.getBreakpointLocation()}
           </div>
           <CloseButton
             handleClick={e => this.removeBreakpoint(e)}
             tooltip={L10N.getStr("breakpoints.removeBreakpointTooltip")}
           />
--- a/devtools/client/debugger/new/src/components/SecondaryPanes/Breakpoints/Breakpoints.css
+++ b/devtools/client/debugger/new/src/components/SecondaryPanes/Breakpoints/Breakpoints.css
@@ -51,16 +51,17 @@
 .breakpoints-exceptions {
   padding-bottom: 0.5em;
   padding-top: 0.5em;
   user-select: none;
 }
 
 .breakpoints-list .breakpoint {
   min-height: var(--breakpoint-expression-height);
+  overflow: hidden;
 }
 
 .breakpoints-exceptions-caught {
   padding: 0 1em 0.5em 3em;
   margin-top: -0.25em;
 }
 
 html[dir="rtl"] .breakpoints-exceptions-caught {
@@ -177,30 +178,22 @@ html .breakpoints-list .breakpoint.pause
   flex: 0 1 content;
   order: 3;
 }
 
 .breakpoint .close-btn {
   inset-inline-end: 15px;
   inset-inline-start: auto;
   position: absolute;
-  top: 8px;
-  display: none;
+  top: -100px; /*For hiding button outside of row until hovered or focused*/
 }
 
-.breakpoint:hover .close-btn {
-  display: flex;
-}
-
-.breakpoint .close {
-  visibility: hidden;
-}
-
-.breakpoint:hover .close {
-  visibility: visible;
+.breakpoint:hover .close-btn,
+.breakpoint .close-btn:focus {
+  top: calc(50% - 8px);
 }
 
 .CodeMirror.cm-s-mozilla-breakpoint {
   cursor: pointer;
 }
 
 .CodeMirror.cm-s-mozilla-breakpoint .CodeMirror-lines {
   padding: 0;
--- a/devtools/client/debugger/new/src/components/SecondaryPanes/Breakpoints/tests/Breakpoint.spec.js
+++ b/devtools/client/debugger/new/src/components/SecondaryPanes/Breakpoints/tests/Breakpoint.spec.js
@@ -62,17 +62,18 @@ function render(overrides = {}, breakpoi
 }
 
 function makeBreakpoint(overrides = {}) {
   return {
     location,
     generatedLocation,
     disabled: false,
     options: {},
-    ...overrides
+    ...overrides,
+    id: 1
   };
 }
 
 function generateDefaults(overrides = {}, breakpointOverrides = {}) {
   const source = makeSource("foo");
   const breakpoint = makeBreakpoint(breakpointOverrides);
   const selectedSource = makeSource("foo");
   return {
--- a/devtools/client/debugger/new/src/components/SecondaryPanes/Breakpoints/tests/__snapshots__/Breakpoint.spec.js.snap
+++ b/devtools/client/debugger/new/src/components/SecondaryPanes/Breakpoints/tests/__snapshots__/Breakpoint.spec.js.snap
@@ -3,34 +3,37 @@
 exports[`Breakpoint disabled 1`] = `
 <div
   className="breakpoint disabled"
   onClick={[Function]}
   onContextMenu={[Function]}
   onDoubleClick={[Function]}
 >
   <input
+    aria-labelledby="1-label"
     checked={false}
     className="breakpoint-checkbox"
+    id={1}
     onChange={[Function]}
     onClick={[Function]}
     type="checkbox"
   />
-  <label
+  <span
     className="breakpoint-label cm-s-mozilla devtools-monospace"
+    id="1-label"
     onClick={[Function]}
   >
     <span
       dangerouslySetInnerHTML={
         Object {
           "__html": "",
         }
       }
     />
-  </label>
+  </span>
   <div
     className="breakpoint-line-close"
   >
     <div
       className="breakpoint-line devtools-monospace"
     >
       53:73
     </div>
@@ -45,34 +48,37 @@ exports[`Breakpoint disabled 1`] = `
 exports[`Breakpoint paused at a different 1`] = `
 <div
   className="breakpoint"
   onClick={[Function]}
   onContextMenu={[Function]}
   onDoubleClick={[Function]}
 >
   <input
+    aria-labelledby="1-label"
     checked={true}
     className="breakpoint-checkbox"
+    id={1}
     onChange={[Function]}
     onClick={[Function]}
     type="checkbox"
   />
-  <label
+  <span
     className="breakpoint-label cm-s-mozilla devtools-monospace"
+    id="1-label"
     onClick={[Function]}
   >
     <span
       dangerouslySetInnerHTML={
         Object {
           "__html": "",
         }
       }
     />
-  </label>
+  </span>
   <div
     className="breakpoint-line-close"
   >
     <div
       className="breakpoint-line devtools-monospace"
     >
       53:73
     </div>
@@ -87,34 +93,37 @@ exports[`Breakpoint paused at a differen
 exports[`Breakpoint paused at a generatedLocation 1`] = `
 <div
   className="breakpoint paused"
   onClick={[Function]}
   onContextMenu={[Function]}
   onDoubleClick={[Function]}
 >
   <input
+    aria-labelledby="1-label"
     checked={true}
     className="breakpoint-checkbox"
+    id={1}
     onChange={[Function]}
     onClick={[Function]}
     type="checkbox"
   />
-  <label
+  <span
     className="breakpoint-label cm-s-mozilla devtools-monospace"
+    id="1-label"
     onClick={[Function]}
   >
     <span
       dangerouslySetInnerHTML={
         Object {
           "__html": "",
         }
       }
     />
-  </label>
+  </span>
   <div
     className="breakpoint-line-close"
   >
     <div
       className="breakpoint-line devtools-monospace"
     >
       53:73
     </div>
@@ -129,34 +138,37 @@ exports[`Breakpoint paused at a generate
 exports[`Breakpoint paused at an original location 1`] = `
 <div
   className="breakpoint paused"
   onClick={[Function]}
   onContextMenu={[Function]}
   onDoubleClick={[Function]}
 >
   <input
+    aria-labelledby="1-label"
     checked={true}
     className="breakpoint-checkbox"
+    id={1}
     onChange={[Function]}
     onClick={[Function]}
     type="checkbox"
   />
-  <label
+  <span
     className="breakpoint-label cm-s-mozilla devtools-monospace"
+    id="1-label"
     onClick={[Function]}
   >
     <span
       dangerouslySetInnerHTML={
         Object {
           "__html": "",
         }
       }
     />
-  </label>
+  </span>
   <div
     className="breakpoint-line-close"
   >
     <div
       className="breakpoint-line devtools-monospace"
     >
       5:7
     </div>
@@ -171,34 +183,37 @@ exports[`Breakpoint paused at an origina
 exports[`Breakpoint simple 1`] = `
 <div
   className="breakpoint"
   onClick={[Function]}
   onContextMenu={[Function]}
   onDoubleClick={[Function]}
 >
   <input
+    aria-labelledby="1-label"
     checked={true}
     className="breakpoint-checkbox"
+    id={1}
     onChange={[Function]}
     onClick={[Function]}
     type="checkbox"
   />
-  <label
+  <span
     className="breakpoint-label cm-s-mozilla devtools-monospace"
+    id="1-label"
     onClick={[Function]}
   >
     <span
       dangerouslySetInnerHTML={
         Object {
           "__html": "",
         }
       }
     />
-  </label>
+  </span>
   <div
     className="breakpoint-line-close"
   >
     <div
       className="breakpoint-line devtools-monospace"
     >
       53:73
     </div>
--- a/devtools/client/debugger/new/src/components/SecondaryPanes/Frames/Frames.css
+++ b/devtools/client/debugger/new/src/components/SecondaryPanes/Frames/Frames.css
@@ -76,47 +76,49 @@
   fill: white;
 }
 
 :root.theme-light .frames [role="list"] [role="listitem"].selected .location,
 :root.theme-dark .frames [role="list"] [role="listitem"].selected .location {
   color: white;
 }
 
-.show-more-container {
+.frames .show-more-container {
   display: flex;
   min-height: 24px;
   padding: 4px 0;
 }
 
-.show-more {
+.frames .show-more {
   text-align: center;
   padding: 8px 0px;
   margin: 7px 10px 7px 7px;
   border: 1px solid var(--theme-splitter-color);
   background-color: var(--theme-tab-toolbar-background);
   width: 100%;
   font-size: inherit;
   color: inherit;
 }
 
-.show-more:hover {
+.frames .show-more:hover {
   background-color: var(--theme-toolbar-background-hover);
 }
 
-.annotation-logo {
-  mask-size: 100%;
-  display: inline-block;
-  width: 12px;
+.frames .img.annotation-logo {
+  margin-inline-end: 4px;
+  background-color: currentColor;
 }
 
-:root.theme-dark .annotation-logo:not(.angular) svg path {
-  fill: var(--theme-highlight-blue);
+/*
+ * We also show the library icon in locations, which are forced to RTL.
+ */
+.frames .location .img.annotation-logo {
+  margin-inline-start: 4px;
 }
 
 /* Some elements are added to the DOM only to be printed into the clipboard
    when the user copy some elements. We don't want those elements to mess with
    the layout so we put them outside of the screen
 */
-.clipboard-only {
+.frames .clipboard-only {
   position: absolute;
   left: -9999px;
 }
--- a/devtools/client/debugger/new/src/components/SecondaryPanes/Frames/Group.css
+++ b/devtools/client/debugger/new/src/components/SecondaryPanes/Frames/Group.css
@@ -1,37 +1,38 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
-.frames [role="list"] .frames-group .group,
-.frames [role="list"] .frames-group .group .location {
+.frames-group .group,
+.frames-group .group .location {
   font-weight: 500;
   cursor: default;
   /*
    * direction:rtl is set in Frames.css to overflow the location text from the
    * start. Here we need to reset it in order to display the framework icon
    * after the framework name.
    */
   direction: ltr;
 }
 
-.frames [role="list"] .frames-group.expanded .group,
-.frames [role="list"] .frames-group.expanded .group .location {
+.frames-group.expanded .group,
+.frames-group.expanded .group .location {
   color: var(--theme-highlight-blue);
 }
 
-.frames [role="list"] .frames-group .frames-list [role="listitem"] {
-  padding-left: 30px;
+.frames-group .frames-list [role="listitem"] {
+  padding-inline-start: 30px;
 }
 
-.frames [role="list"] .frames-group .frames-list {
+.frames-group .frames-list {
   border-top: 1px solid var(--theme-splitter-color);
   border-bottom: 1px solid var(--theme-splitter-color);
 }
 
-.frames [role="list"] .frames-group.expanded .badge {
+.frames-group.expanded .badge {
   color: var(--theme-highlight-blue);
 }
 
-.group-description-name {
-  padding-left: 5px;
+.frames-group .img.arrow {
+  margin-inline-start: -1px;
+  margin-inline-end: 4px;
 }
--- a/devtools/client/debugger/new/src/components/SecondaryPanes/index.js
+++ b/devtools/client/debugger/new/src/components/SecondaryPanes/index.js
@@ -295,92 +295,87 @@ class SecondaryPanes extends Component<P
       ),
       opened: prefs.breakpointsVisible,
       onToggle: opened => {
         prefs.breakpointsVisible = opened;
       }
     };
   }
 
-  getEventListenersItem() {
+  getEventListenersItem(): AccordionPaneItem {
     return {
       header: L10N.getStr("eventListenersHeader"),
       className: "event-listeners-pane",
       buttons: [],
       component: <EventListeners />,
       opened: prefs.eventListenersVisible,
       onToggle: opened => {
         prefs.eventListenersVisible = opened;
       }
     };
   }
 
-  getStartItems() {
-    const { workers } = this.props;
+  getStartItems(): AccordionPaneItem[] {
+    const items: AccordionPaneItem[] = [];
 
-    const items: Array<AccordionPaneItem> = [];
     if (this.props.horizontal) {
-      if (features.workers && workers.length > 0) {
+      if (features.workers && this.props.workers.length > 0) {
         items.push(this.getWorkersItem());
       }
 
       items.push(this.getWatchItem());
     }
 
     items.push(this.getBreakpointsItem());
 
     if (this.props.hasFrames) {
       items.push(this.getCallStackItem());
-
       if (this.props.horizontal) {
         items.push(this.getScopeItem());
       }
     }
 
     if (features.xhrBreakpoints) {
       items.push(this.getXHRItem());
     }
 
     if (features.eventListenersBreakpoints) {
       items.push(this.getEventListenersItem());
     }
 
-    return items.filter(item => item);
+    return items;
   }
 
-  renderHorizontalLayout() {
-    return <Accordion items={this.getItems()} />;
-  }
-
-  getEndItems() {
-    const { workers } = this.props;
-
-    let items: Array<AccordionPaneItem> = [];
-
+  getEndItems(): AccordionPaneItem[] {
     if (this.props.horizontal) {
       return [];
     }
 
-    if (features.workers && workers.length > 0) {
+    const items: AccordionPaneItem[] = [];
+    if (features.workers && this.props.workers.length > 0) {
       items.push(this.getWorkersItem());
     }
 
     items.push(this.getWatchItem());
 
     if (this.props.hasFrames) {
-      items = [...items, this.getScopeItem()];
+      items.push(this.getScopeItem());
     }
 
     return items;
   }
 
-  getItems() {
+  getItems(): AccordionPaneItem[] {
     return [...this.getStartItems(), ...this.getEndItems()];
   }
 
+  renderHorizontalLayout() {
+    return <Accordion items={this.getItems()} />;
+  }
+
   renderVerticalLayout() {
     return (
       <SplitBox
         initialSize="300px"
         minSize={10}
         maxSize="50%"
         splitterSize={1}
         startPanel={<Accordion items={this.getStartItems()} />}
--- a/devtools/client/debugger/new/src/components/shared/AccessibleImage.css
+++ b/devtools/client/debugger/new/src/components/shared/AccessibleImage.css
@@ -7,16 +7,22 @@
   width: 16px;
   height: 16px;
   vertical-align: middle;
   /* use background-color for the icon color, and mask-image for its shape */
   background-color: var(--theme-icon-color);
   mask-size: contain;
   mask-repeat: no-repeat;
   mask-position: center;
+  /* multicolor icons use background-image */
+  background-position: center;
+  background-repeat: no-repeat;
+  background-size: contain;
+  /* do not let images shrink when used as flex children */
+  flex-shrink: 0;
 }
 
 /* Expand arrow icon */
 .img.arrow {
   width: 10px;
   height: 10px;
   mask-image: url(/images/arrow.svg);
   /* we may override the width/height in specific contexts to make the
--- a/devtools/client/debugger/new/src/components/shared/Accordion.css
+++ b/devtools/client/debugger/new/src/components/shared/Accordion.css
@@ -1,90 +1,82 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 :root {
   --accordion-header-background: var(--theme-toolbar-background);
-  --disclosure-arrow: #b2b2b2;
 }
 
 :root.theme-dark {
   --accordion-header-background: #222225;
-  --disclosure-arrow: #7f7f81;
 }
 
 .accordion {
   background-color: var(--theme-sidebar-background);
   width: 100%;
   list-style-type: none;
   padding: 0px;
   margin-top: 0px;
 }
 
 .accordion ._header {
   background-color: var(--accordion-header-background);
   border-bottom: 1px solid var(--theme-splitter-color);
   display: flex;
   font-size: 12px;
-  padding: 4px;
-  transition: all 0.25s ease;
+  line-height: calc(16 / 12);
+  padding: 4px 6px;
   width: 100%;
-  height: 24px;
   align-items: center;
   margin: 0px;
   font-weight: normal;
-
+  cursor: default;
   -webkit-user-select: none;
   -moz-user-select: none;
-  -ms-user-select: none;
-  -o-user-select: none;
   user-select: none;
-  cursor: default;
 }
 
 .accordion ._header:hover {
   background-color: var(--theme-toolbar-background-hover);
 }
 
-.accordion ._header button svg,
-.accordion ._header:hover button svg {
-  fill: currentColor;
+.accordion ._header .arrow {
+  margin-inline-end: 4px;
+}
+
+.accordion ._header .header-label {
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.accordion ._header .header-buttons {
+  display: flex;
+  margin-inline-start: auto;
+}
+
+.accordion ._header .header-buttons button {
+  color: var(--theme-body-color);
+  border: none;
+  background: none;
+  padding: 0;
+  margin: 0 2px;
+  width: 16px;
   height: 16px;
 }
 
+.accordion ._header .header-buttons button::-moz-focus-inner {
+  border: none;
+}
+
+.accordion ._header .header-buttons button .img {
+  display: block;
+}
+
 .accordion ._content {
   border-bottom: 1px solid var(--theme-splitter-color);
   font-size: 12px;
 }
 
 .accordion div:last-child ._content {
   border-bottom: none;
 }
-
-.accordion ._header .header-buttons {
-  display: flex;
-  margin-left: auto;
-  padding-right: 5px;
-}
-
-.accordion .header-buttons .add-button {
-  font-size: 180%;
-  text-align: center;
-  line-height: 16px;
-}
-
-.accordion .header-buttons button {
-  color: var(--theme-body-color);
-  border: none;
-  background: none;
-  padding: 0;
-  width: 16px;
-  height: 16px;
-}
-
-.accordion .header-buttons button::-moz-focus-inner {
-  border: none;
-}
-
-.accordion .arrow svg {
-  fill: var(--disclosure-arrow);
-}
--- a/devtools/client/debugger/new/src/components/shared/Accordion.js
+++ b/devtools/client/debugger/new/src/components/shared/Accordion.js
@@ -65,17 +65,17 @@ class Accordion extends Component<Props,
       <li className={item.className} key={i}>
         <h2
           className="_header"
           tabIndex="0"
           onKeyDown={e => this.onHandleHeaderKeyDown(e, i)}
           onClick={() => this.handleHeaderClick(i)}
         >
           <AccessibleImage className={`arrow ${opened ? "expanded" : ""}`} />
-          {item.header}
+          <span className="header-label">{item.header}</span>
           {item.buttons ? (
             <div className="header-buttons" tabIndex="-1">
               {item.buttons}
             </div>
           ) : null}
         </h2>
         {opened && (
           <div className="_content">
--- a/devtools/client/debugger/new/src/components/shared/Dropdown.css
+++ b/devtools/client/debugger/new/src/components/shared/Dropdown.css
@@ -4,23 +4,30 @@
 
 .dropdown {
   background: var(--theme-body-background);
   border: 1px solid var(--theme-splitter-color);
   border-radius: 4px;
   box-shadow: 0 4px 4px 0 var(--search-overlays-semitransparent);
   max-height: 300px;
   position: absolute;
-  inset-inline-end: 2px;
   top: 24px;
   width: 150px;
   z-index: 1000;
   overflow: auto;
 }
 
+[dir="ltr"] .dropdown {
+  right: 2px;
+}
+
+[dir="rtl"] .dropdown {
+  left: 2px;
+}
+
 .dropdown-block {
   position: relative;
   align-self: center;
   height: 100%;
 }
 
 /* cover the reserved space at the end of .source-tabs */
 .source-tabs + .dropdown-block {
@@ -38,52 +45,46 @@
   width: 28px;
 }
 
 .dropdown-button .img {
   display: block;
 }
 
 .dropdown ul {
+  margin: 0;
+  padding: 4px 0;
   list-style: none;
-  line-height: 2em;
-  font-size: 1em;
-  margin: 0;
-  padding: 0;
 }
 
 .dropdown li {
   display: flex;
   align-items: center;
-  padding: 5px 8px;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
+  padding: 6px 8px;
   font-size: 12px;
   line-height: calc(16 / 12);
   transition: all 0.25s ease;
 }
 
-.dropdown li:first-child {
-  margin-top: 4px;
-}
-
-.dropdown li:last-child {
-  margin-bottom: 4px;
-}
-
 .dropdown li:hover {
   background-color: var(--search-overlays-semitransparent);
 }
 
 .dropdown-icon {
   margin-inline-end: 4px;
   mask-size: 13px 13px;
 }
 
+.dropdown-label {
+  display: block;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
 .dropdown-icon.prettyPrint,
 .dropdown-icon.blackBox {
   background-color: var(--theme-highlight-blue);
 }
 
 .dropdown-mask {
   position: fixed;
   width: 100%;
--- a/devtools/client/debugger/new/src/components/shared/SearchInput.css
+++ b/devtools/client/debugger/new/src/components/shared/SearchInput.css
@@ -52,17 +52,17 @@
   margin-inline-end: 6px;
   animation: search-loader-rotate 0.5s linear infinite;
 }
 
 .search-field input {
   align-self: stretch;
   flex-grow: 1;
   height: 24px;
-  min-width: 40px;
+  width: 40px;
   border: none;
   padding: 4px;
   padding-inline-start: 28px;
   line-height: 16px;
   font-family: inherit;
   font-size: inherit;
   color: var(--theme-body-color);
   background-color: transparent;
--- a/devtools/client/debugger/new/src/components/shared/SourceIcon.css
+++ b/devtools/client/debugger/new/src/components/shared/SourceIcon.css
@@ -4,20 +4,16 @@
 
 /**
  * Variant of AccessibleImage used in sources list and tabs.
  * Define the different source type / framework / library icons here.
  */
 
 .source-icon {
   margin-inline-end: 4px;
-  /* multicolor icons use background-image */
-  background-position: center;
-  background-repeat: no-repeat;
-  background-size: contain;
 }
 
 /* Icons for frameworks and libs */
 
 .img.aframe {
   background-image: url(/images/sources/aframe.svg);
   background-color: transparent !important;
 }
@@ -136,17 +132,19 @@
 .img.typescript {
   mask-image: url(/images/sources/typescript.svg);
 }
 
 .img.underscore {
   mask-image: url(/images/sources/underscore.svg);
 }
 
-.img.vue {
+/* We use both 'Vue' and 'VueJS' when identifying frameworks */
+.img.vue,
+.img.vuejs {
   background-image: url(/images/sources/vuejs.svg);
   background-color: transparent !important;
 }
 
 .img.webpack {
   background-image: url(/images/sources/webpack.svg);
   background-color: transparent !important;
 }
deleted file mode 100644
--- a/devtools/client/debugger/new/src/components/shared/Svg.css
+++ /dev/null
@@ -1,402 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
-
-.arrow,
-.worker,
-.refresh,
-.shortcut,
-.add-button {
-  fill: var(--theme-splitter-color);
-}
-
-.img.folder,
-.img.domain,
-.img.file,
-.img.extension,
-.img.worker {
-  background-color: var(--theme-comment);
-}
-
-.worker,
-.file,
-.folder,
-.sources-list .source-icon,
-.extension {
-  position: relative;
-  top: 2px;
-}
-
-.domain,
-.worker,
-.refresh,
-.add-button {
-  position: relative;
-  top: 1px;
-}
-
-.worker svg,
-.refresh svg,
-.shortcut svg,
-.add-button svg {
-  width: 15px;
-}
-
-.img.domain,
-.img.folder {
-  width: 15px;
-  height: 15px;
-}
-
-.img.extension,
-.img.worker {
-  width: 13px;
-  height: 13px;
-  margin-inline-start: 2px;
-}
-
-.img.result-item-icon {
-  height: 18px;
-  width: 18px;
-}
-
-.img.domain {
-  mask: url(/images/domain.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.folder {
-  mask: url(/images/folder.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.coffeescript {
-  mask: url(/images/coffeescript.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.javascript {
-  mask: url(/images/javascript.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.tab {
-  mask: url(/images/tab.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.react {
-  mask: url(/images/react.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.aframe {
-  background-image: url(/images/aframe.svg);
-  background-size: 15px 15px;
-}
-
-.img.babel {
-  mask: url(/images/babel.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.backbone {
-  mask: url(/images/backbone.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.choo {
-  mask: url(/images/choo.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.dojo {
-  background-image: url(/images/dojo.svg);
-}
-
-.img.ember {
-  background-image: url(/images/ember.svg);
-}
-
-.img.immutable {
-  mask: url(/images/immutable.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.jquery {
-  mask: url(/images/jquery.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.lodash {
-  mask: url(/images/lodash.svg) no-repeat;
-  mask-size: 100%;
-}
-
-span.img.marko {
-  background-image: url(/images/marko.svg);
-  background-size: contain;
-  background-repeat: no-repeat;
-  background-position: center center;
-}
-
-.img.mobx {
-  background-image: url(/images/mobx.svg);
-}
-
-.img.next-circle {
-  mask: url(/images/next-circle.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.next {
-  mask: url(/images/next.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.nextjs {
-  background-image: url(/images/nextjs.svg);
-}
-
-.img.nuxtjs {
-  background-image: url(/images/nuxtjs.svg);
-}
-
-.img.preact {
-  background-image: url(/images/preact.svg);
-}
-
-.img.pug {
-  background-image: url(/images/pug.svg);
-}
-
-.img.redux {
-  mask: url(/images/redux.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.rxjs {
-  background-image: url(/images/rxjs.svg);
-}
-
-.img.sencha-extjs {
-  background-image: url(/images/sencha-extjs.svg);
-}
-
-.img.underscore {
-  mask: url(/images/underscore.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.webpack {
-  background-image: url(/images/webpack.svg);
-  background-repeat: no-repeat;
-}
-
-.img.vue {
-  background: url(/images/vuejs.svg) 1px 1px no-repeat;
-  background-size: 15px;
-}
-
-.img.typescript {
-  mask: url(/images/typescript.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.extension {
-  mask: url(/images/extension.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.pane-collapse {
-  mask: url(/images/pane-collapse.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.pane-expand {
-  mask: url(/images/pane-expand.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.file {
-  mask: url(/images/file.svg) no-repeat;
-  mask-size: 100%;
-  width: 13px;
-  height: 13px;
-}
-
-.img.worker {
-  mask: url(/images/worker.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.plus {
-  mask: url(/images/plus.svg) no-repeat;
-  mask-size: 100%;
-  height: 16px;
-  width: 16px;
-}
-
-.img.magnifying-glass {
-  mask: url(/images/magnifying-glass.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.case-match {
-  mask: url(/images/case-match.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.regex-match {
-  mask: url(/images/regex-match.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.whole-word-match {
-  mask: url(/images/whole-word-match.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.breadcrumb {
-  mask: url(/images/breadcrumbs-divider.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.home {
-  mask: url(/images/home.svg) no-repeat;
-  mask-size: 100%;
-}
-
-.img.angular {
-  background-image: url(/images/angular.svg);
-  background-repeat: no-repeat;
-}
-
-.img.angular,
-.img.webpack,
-.img.vue,
-.img.aframe,
-.img.dojo,
-.img.ember,
-.img.marko,
-.img.mobx,
-.img.nextjs,
-.img.nuxtjs,
-.img.preact,
-.img.pug,
-.img.rxjs,
-.img.sencha-extjs {
-  background-size: 15px 15px;
-  background-color: transparent;
-  width: 15px;
-  height: 15px;
-  position: relative;
-}
-
-.sources-list .img.angular,
-.sources-list .img.webpack,
-.sources-list .img.vue,
-.sources-list .img.aframe,
-.sources-list .img.dojo,
-.sources-list .img.ember,
-.sources-list .img.marko,
-.sources-list .img.mobx,
-.sources-list .img.nextjs,
-.sources-list .img.nuxtjs,
-.sources-list .img.preact,
-.sources-list .img.pug,
-.sources-list .img.rxjs,
-.sources-list .img.sencha-extjs {
-  top: 3px;
-}
-
-.img.domain,
-.img.folder,
-.img.file,
-.sources-list .img.source-icon,
-.img.extension,
-.img.worker {
-  mask-size: 100%;
-  margin-inline-end: 5px;
-  display: inline-block;
-}
-
-.img.result-item-icon {
-  mask-size: 100%;
-  margin-inline-end: 15px;
-  margin-inline-start: 5px;
-  display: inline-block;
-}
-
-.img.refresh,
-.img.shortcut,
-.img.worker,
-.img.arrow {
-  margin-inline-end: 5px;
-}
-
-.img.refresh {
-  mask: url(/images/reload.svg);
-  mask-size: 100%;
-}
-
-.img.arrow {
-  mask: url(/images/arrow.svg);
-  margin-inline-end: 4px;
-  width: 10px;
-  height: 10px;
-  padding-top: 9px;
-  background: var(--disclosure-arrow);
-  mask-size: 100%;
-  display: inline-block;
-  transform: rotate(-90deg);
-  transition: transform 0.18s ease;
-}
-
-/* overrides tree component */
-.tree-node button.arrow {
-  background: none;
-  mask: url(/images/arrow.svg);
-  background: var(--disclosure-arrow);
-  mask-size: 100%;
-}
-
-html[dir="rtl"] .img.arrow {
-  transform: rotate(90deg);
-}
-
-.arrow {
-  transition: transform 0.125s ease;
-  height: 10px;
-  width: 10px;
-  transform: rotate(-90deg);
-  vertical-align: -1px;
-}
-
-html[dir="rtl"] .arrow,
-.arrow:dir(rtl),
-.arrow:-moz-locale-dir(rtl) {
-  transform: rotate(90deg);
-}
-
-.arrow.expanded {
-  transform: rotate(0deg);
-}
-
-.arrow.hidden {
-  visibility: hidden;
-}
-
-.angular,
-.webpack {
-  opacity: 0.8;
-}
-
-.theme-dark .angular,
-.theme-dark .webpack {
-  opacity: 0.5;
-}
-
-.source-icon svg {
-  fill: var(--theme-comment);
-}
--- a/devtools/client/debugger/new/src/components/shared/tests/__snapshots__/Accordion.spec.js.snap
+++ b/devtools/client/debugger/new/src/components/shared/tests/__snapshots__/Accordion.spec.js.snap
@@ -12,17 +12,21 @@ exports[`Accordion basic render 1`] = `
       className="_header"
       onClick={[Function]}
       onKeyDown={[Function]}
       tabIndex="0"
     >
       <AccessibleImage
         className="arrow expanded"
       />
-      Test Accordion Item 1
+      <span
+        className="header-label"
+      >
+        Test Accordion Item 1
+      </span>
     </h2>
     <div
       className="_content"
     >
       <div />
     </div>
   </li>
   <li
@@ -33,17 +37,21 @@ exports[`Accordion basic render 1`] = `
       className="_header"
       onClick={[Function]}
       onKeyDown={[Function]}
       tabIndex="0"
     >
       <AccessibleImage
         className="arrow "
       />
-      Test Accordion Item 2
+      <span
+        className="header-label"
+      >
+        Test Accordion Item 2
+      </span>
       <div
         className="header-buttons"
         tabIndex="-1"
       >
         <button />
       </div>
     </h2>
   </li>
@@ -55,17 +63,21 @@ exports[`Accordion basic render 1`] = `
       className="_header"
       onClick={[Function]}
       onKeyDown={[Function]}
       tabIndex="0"
     >
       <AccessibleImage
         className="arrow expanded"
       />
-      Test Accordion Item 3
+      <span
+        className="header-label"
+      >
+        Test Accordion Item 3
+      </span>
     </h2>
     <div
       className="_content"
     >
       <div />
     </div>
   </li>
 </ul>
--- a/devtools/client/debugger/new/src/utils/pause/frames/getLibraryFromUrl.js
+++ b/devtools/client/debugger/new/src/utils/pause/frames/getLibraryFromUrl.js
@@ -17,17 +17,17 @@ const libraryMap = [
     pattern: /jquery/i
   },
   {
     label: "Preact",
     pattern: /preact/i
   },
   {
     label: "React",
-    pattern: /(node_modules\/react)|(react(\.[a-z]+)*\.js$)/i
+    pattern: /(node_modules\/(?:react|react-dom)\/)|(react(\.[a-z]+)*\.js$)/
   },
   {
     label: "Immutable",
     pattern: /immutable/i
   },
   {
     label: "Webpack",
     pattern: /webpack\/bootstrap/i
--- a/devtools/client/debugger/new/src/utils/pause/frames/tests/getLibraryFromUrl.spec.js
+++ b/devtools/client/debugger/new/src/utils/pause/frames/tests/getLibraryFromUrl.spec.js
@@ -40,17 +40,18 @@ describe("getLibraryFromUrl", () => {
   });
 
   describe("When React is in the URL", () => {
     it("should not return React if it is not part of the filename", () => {
       const notReactUrlList = [
         "https://react.js.com/test.js",
         "https://debugger-example.com/test.js",
         "https://debugger-react-example.com/test.js",
-        "https://debugger-react-example.com/react/test.js"
+        "https://debugger-react-example.com/react/test.js",
+        "https://debugger-example.com/react-contextmenu.js"
       ];
       notReactUrlList.forEach(notReactUrl => {
         const frame = makeMockFrameWithURL(notReactUrl);
         expect(getLibraryFromUrl(frame)).toBeNull();
       });
     });
     it("should return React if it is part of the filename", () => {
       const reactUrlList = [
--- a/devtools/client/debugger/new/src/workers/parser/getSymbols.js
+++ b/devtools/client/debugger/new/src/workers/parser/getSymbols.js
@@ -12,17 +12,17 @@ import {
   isFunction,
   isObjectShorthand,
   isComputedExpression,
   getObjectExpressionValue,
   getPatternIdentifiers,
   getComments,
   getSpecifiers,
   getCode,
-  nodeHasSameLocation,
+  nodeLocationKey,
   getFunctionParameterNames
 } from "./utils/helpers";
 
 import { inferClassName } from "./utils/inferClassName";
 import getFunctionName from "./utils/getFunctionName";
 
 import type { SimplePath, Node, TraversalAncestors } from "./utils/simple-path";
 
@@ -82,18 +82,21 @@ export type SymbolDeclarations = {|
   hasTypes: boolean,
   loading: false
 |};
 
 let symbolDeclarations: Map<string, SymbolDeclarations> = new Map();
 
 function getUniqueIdentifiers(identifiers) {
   const newIdentifiers = [];
+  const locationKeys = new Set();
   for (const newId of identifiers) {
-    if (!newIdentifiers.find(id => nodeHasSameLocation(id, newId))) {
+    const key = nodeLocationKey(newId);
+    if (!locationKeys.has(key)) {
+      locationKeys.add(key);
       newIdentifiers.push(newId);
     }
   }
 
   return newIdentifiers;
 }
 
 /* eslint-disable complexity */
--- a/devtools/client/debugger/new/src/workers/parser/utils/helpers.js
+++ b/devtools/client/debugger/new/src/workers/parser/utils/helpers.js
@@ -2,17 +2,16 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 // @flow
 
 import * as t from "@babel/types";
 import type { Node } from "@babel/types";
 import type { SimplePath } from "./simple-path";
-import type { AstLocation } from "../types";
 import generate from "@babel/generator";
 
 export function isFunction(node: Node) {
   return (
     t.isFunction(node) ||
     t.isArrowFunctionExpression(node) ||
     t.isObjectMethod(node) ||
     t.isClassMethod(node)
@@ -173,27 +172,19 @@ function getIdentifiers(items) {
 }
 
 // Top Level checks the number of "body" nodes in the ancestor chain
 // if the node is top-level, then it shoul only have one body.
 export function isTopLevel(ancestors: Node[]) {
   return ancestors.filter(ancestor => ancestor.key == "body").length == 1;
 }
 
-export function nodeHasSameLocation(a: Node, b: Node) {
-  return sameLocation(a.location, b.location);
-}
-
-export function sameLocation(a: AstLocation, b: AstLocation) {
-  return (
-    a.start.line == b.start.line &&
-    a.start.column == b.start.column &&
-    a.end.line == b.end.line &&
-    a.end.column == b.end.column
-  );
+export function nodeLocationKey(a: Node) {
+  const { start, end } = a.location;
+  return `${start.line}:${start.column}:${end.line}:${end.column}`;
 }
 
 export function getFunctionParameterNames(path: SimplePath): string[] {
   if (path.node.params != null) {
     return path.node.params.map(param => {
       if (param.type !== "AssignmentPattern") {
         return param.name;
       }
--- a/devtools/client/debugger/new/test/mochitest/browser.ini
+++ b/devtools/client/debugger/new/test/mochitest/browser.ini
@@ -690,16 +690,17 @@ skip-if = (verify && !debug && (os == 'l
 [browser_dbg-chrome-debugging.js]
 [browser_dbg-console.js]
 [browser_dbg-console-async.js]
 [browser_dbg-console-eval.js]
 [browser_dbg-console-link.js]
 [browser_dbg-console-map-bindings.js]
 [browser_dbg-content-script-sources.js]
 skip-if = (os == "win" && ccov) # Bug 1424154
+[browser_dbg-debug-line.js]
 [browser_dbg-debugger-buttons.js]
 [browser_dbg-editor-gutter.js]
 [browser_dbg-editor-select.js]
 [browser_dbg-editor-highlight.js]
 [browser_dbg-ember-quickstart.js]
 [browser_dbg-expressions.js]
 [browser_dbg-expressions-error.js]
 [browser_dbg-expressions-focus.js]
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/test/mochitest/browser_dbg-debug-line.js
@@ -0,0 +1,39 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
+
+// Test ensures zombie debug lines do not persist
+// https://github.com/firefox-devtools/debugger/issues/7755
+add_task(async function() {
+  // Load test files
+  const dbg = await initDebugger("doc-sources.html");
+  await waitForSources(dbg, "simple1.js", "simple2.js");
+
+  // Add breakpoint to debug-line-2
+  await selectSource(dbg, "simple2.js");
+  await addBreakpoint(dbg, "simple2.js", 5);
+
+  // Trigger the breakpoint ane ensure we're paused
+  invokeInTab("main");
+  await waitForPaused(dbg);
+
+  // Scroll element into view
+  findElement(dbg, "frame", 2).focus();
+
+  // Click the call stack to get to debugger-line-1
+  await clickElement(dbg, "frame", 2);
+  await waitForSelectedSource(dbg, "simple1.js");
+
+  // Resume, which ends all pausing and would trigger the problem
+  resume(dbg);
+
+  // Select the source that had the initial debug line
+  await selectSource(dbg, "simple2.js");
+
+  info("Ensuring there's no zombie debug line");
+  is(
+    findAllElements(dbg, "debugLine").length,
+    0,
+    "Debug line no longer exists!"
+  );
+});
\ No newline at end of file
--- a/devtools/client/debugger/new/test/mochitest/browser_dbg-inspector-integration.js
+++ b/devtools/client/debugger/new/test/mochitest/browser_dbg-inspector-integration.js
@@ -1,27 +1,47 @@
-/* Any copyright is dedicated to the Public Domain.