Bug 1479116 - Update Debugger Frontend v76. r=dwalsh
authorJason Laster <jason.laster.11@gmail.com>
Fri, 27 Jul 2018 17:45:59 -0400
changeset 429275 bae6ef2c3f2214cb1dbdfa5351a327b349559965
parent 429243 1161111168cfbcbac5e92bdab486269cfda505b8
child 429276 d22981772dd995a492b5fdb67c887d55d24654db
push id34359
push usershindli@mozilla.com
push dateTue, 31 Jul 2018 09:53:19 +0000
treeherdermozilla-central@5a49a2ff0ee0 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdwalsh
bugs1479116
milestone63.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 1479116 - Update Debugger Frontend v76. r=dwalsh MozReview-Commit-ID: AvrEObOYdeN
devtools/client/debugger/new/README.mozilla
devtools/client/debugger/new/dist/debugger.css
devtools/client/debugger/new/src/actions/breakpoints/addBreakpoint.js
devtools/client/debugger/new/src/actions/breakpoints/index.js
devtools/client/debugger/new/src/actions/file-search.js
devtools/client/debugger/new/src/actions/pause/commands.js
devtools/client/debugger/new/src/actions/sources/blackbox.js
devtools/client/debugger/new/src/actions/sources/prettyPrint.js
devtools/client/debugger/new/src/actions/ui.js
devtools/client/debugger/new/src/components/PrimaryPanes/SourcesTree.js
devtools/client/debugger/new/src/components/ProjectSearch.js
devtools/client/debugger/new/src/components/shared/ManagedTree.js
devtools/client/debugger/new/src/components/shared/Popover.js
devtools/client/debugger/new/src/reducers/file-search.js
devtools/client/debugger/new/src/reducers/project-text-search.js
devtools/client/debugger/new/src/reducers/ui.js
devtools/client/debugger/new/src/utils/dbg.js
devtools/client/debugger/new/src/utils/pause/mapScopes/getApplicableBindingsForOriginalPosition.js
devtools/client/debugger/new/src/utils/pause/mapScopes/index.js
devtools/client/debugger/new/src/utils/source.js
devtools/client/debugger/new/src/utils/sources-tree/updateTree.js
devtools/client/debugger/new/src/utils/telemetry.js
devtools/client/debugger/new/test/mochitest/browser.ini
devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemapped-breakpoint-console.js
devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemapped-preview.js
devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemapped-scopes.js
devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemapped-stepping.js
devtools/client/debugger/new/test/mochitest/browser_dbg-tabs-pretty-print.js
devtools/client/debugger/new/test/mochitest/examples/doc-sourcemapped.html
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/.rpt2_cache/120bf459f95b8b447674b99c6fe5d040b99b6a97/types/cache/f67752e2d3a8fd18a75558156ccfd8c764b544a1
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/README.md
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/build.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/rollup-babel6/index.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/rollup-babel6/package.json
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/rollup-babel6/yarn.lock
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/rollup/index.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/rollup/package.json
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/rollup/yarn.lock
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/webpack3-babel6/index.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/webpack3-babel6/package.json
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/webpack3-babel6/yarn.lock
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/webpack3/index.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/webpack3/package.json
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/webpack3/yarn.lock
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-bindings-with-flow/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-bindings-with-flow/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-classes/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-classes/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-classes/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-commonjs/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-commonjs/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-commonjs/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-eval-maps/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-eval-maps/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-eval-maps/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-flowtype-bindings/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-flowtype-bindings/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-for-loops/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-for-loops/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-for-loops/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-for-of/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-for-of/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-for-of/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-functions/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-functions/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-functions/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-lex-and-nonlex/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-lex-and-nonlex/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-lex-and-nonlex/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-line-start-bindings-es6/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-line-start-bindings-es6/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-line-start-bindings-es6/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-cjs/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-cjs/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-cjs/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-cjs/src/mod1.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-cjs/src/mod10.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-cjs/src/mod11.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-cjs/src/mod12.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-cjs/src/mod2.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-cjs/src/mod3.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-cjs/src/mod4.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-cjs/src/mod5.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-cjs/src/mod6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-cjs/src/mod7.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-cjs/src/mod8.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-cjs/src/mod9.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-cjs/src/optimized-out.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack-es6/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack-es6/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack-es6/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack-es6/src/mod1.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack-es6/src/mod10.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack-es6/src/mod11.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack-es6/src/mod12.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack-es6/src/mod2.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack-es6/src/mod3.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack-es6/src/mod4.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack-es6/src/mod5.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack-es6/src/mod6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack-es6/src/mod7.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack-es6/src/mod8.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack-es6/src/mod9.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack-es6/src/optimized-out.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack/src/mod1.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack/src/mod10.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack/src/mod11.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack/src/mod12.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack/src/mod2.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack/src/mod3.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack/src/mod4.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack/src/mod5.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack/src/mod6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack/src/mod7.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack/src/mod8.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack/src/mod9.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-modules-webpack/src/optimized-out.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-out-of-order-declarations-cjs/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-out-of-order-declarations-cjs/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-out-of-order-declarations-cjs/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-out-of-order-declarations-cjs/src/mod.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-shadowed-vars/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-shadowed-vars/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-shadowed-vars/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-step-over-for-of-array-closure/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-step-over-for-of-array-closure/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-step-over-for-of-array-closure/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-step-over-for-of-array/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-step-over-for-of-array/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-step-over-for-of-array/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-step-over-for-of-closure/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-step-over-for-of-closure/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-step-over-for-of-closure/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-step-over-for-of/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-step-over-for-of/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-step-over-for-of/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-step-over-function-params/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-step-over-function-params/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-step-over-function-params/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-step-over-regenerator-await/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-step-over-regenerator-await/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-step-over-regenerator-await/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-switches/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-switches/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-switches/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-this-arguments-bindings/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-this-arguments-bindings/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-this-arguments-bindings/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-try-catches/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-try-catches/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-try-catches/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-type-module/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-type-module/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-type-module/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-type-script/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-type-script/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/babel-type-script/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/classes/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-cjs/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-cjs/src/mod1.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-cjs/src/mod10.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-cjs/src/mod11.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-cjs/src/mod12.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-cjs/src/mod2.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-cjs/src/mod3.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-cjs/src/mod4.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-cjs/src/mod5.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-cjs/src/mod6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-cjs/src/mod7.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-cjs/src/mod8.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-cjs/src/mod9.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-cjs/src/optimized-out.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-es6/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-es6/src/mod1.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-es6/src/mod10.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-es6/src/mod11.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-es6/src/mod12.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-es6/src/mod2.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-es6/src/mod3.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-es6/src/mod4.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-es6/src/mod5.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-es6/src/mod6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-es6/src/mod7.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-es6/src/mod8.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-es6/src/mod9.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules-es6/src/optimized-out.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules/src/mod1.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules/src/mod10.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules/src/mod11.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules/src/mod12.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules/src/mod2.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules/src/mod3.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules/src/mod4.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules/src/mod5.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules/src/mod6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules/src/mod7.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules/src/mod8.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules/src/mod9.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/esmodules/src/optimized-out.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/eval-maps/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/for-loops/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/for-of/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/functions/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/lex-and-nonlex/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/line-start-bindings-es6/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/modules-cjs/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/out-of-order-declarations-cjs/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/out-of-order-declarations-cjs/src/mod.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-babel-classes/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-babel-classes/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-babel-classes/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-babel-lex-and-nonlex/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-babel-lex-and-nonlex/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-babel-lex-and-nonlex/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-babel-modules/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-babel-modules/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-babel-modules/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-babel-modules/src/mod1.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-babel-modules/src/mod10.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-babel-modules/src/mod11.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-babel-modules/src/mod12.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-babel-modules/src/mod2.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-babel-modules/src/mod3.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-babel-modules/src/mod4.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-babel-modules/src/mod5.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-babel-modules/src/mod6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-babel-modules/src/mod7.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-babel-modules/src/mod8.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-babel-modules/src/mod9.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-babel-modules/src/optimized-out.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-modules/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-modules/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-modules/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-modules/src/mod1.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-modules/src/mod10.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-modules/src/mod11.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-modules/src/mod12.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-modules/src/mod2.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-modules/src/mod3.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-modules/src/mod4.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-modules/src/mod5.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-modules/src/mod6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-modules/src/mod7.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-modules/src/mod8.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-modules/src/mod9.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/rollup-modules/src/optimized-out.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/shadowed-vars/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/step-over-for-of-array-closure/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/step-over-for-of-array/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/step-over-for-of-closure/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/step-over-for-of/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/step-over-function-params/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/step-over-regenerator-await/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/switches/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/this-arguments-bindings/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/try-catches/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/type-module/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/type-script-cjs/input.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/typescript-classes/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/typescript-classes/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/webpack-functions/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/webpack-functions/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/webpack-line-mappings/output.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/fixtures/webpack-line-mappings/output.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/babel-bindings-with-flow.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/babel-bindings-with-flow.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/babel-flowtype-bindings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/babel-flowtype-bindings.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/classes.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/classes.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/esmodules-es6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/esmodules-es6.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/esmodules.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/esmodules.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/eval-maps.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/eval-maps.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/for-loops.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/for-loops.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/for-of.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/for-of.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/functions.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/functions.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/lex-and-nonlex.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/lex-and-nonlex.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/line-start-bindings-es6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/line-start-bindings-es6.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/shadowed-vars.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/shadowed-vars.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/step-over-for-of-array-closure.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/step-over-for-of-array-closure.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/step-over-for-of-array.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/step-over-for-of-array.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/step-over-for-of-closure.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/step-over-for-of-closure.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/step-over-for-of.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/step-over-for-of.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/step-over-function-params.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/step-over-function-params.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/step-over-regenerator-await.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/step-over-regenerator-await.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/switches.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/switches.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/this-arguments-bindings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/this-arguments-bindings.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/try-catches.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/try-catches.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/type-module.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/type-module.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/webpack-functions.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/webpack-functions.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/webpack-line-mappings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup-babel6/webpack-line-mappings.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/classes.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/classes.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/esmodules-es6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/esmodules-es6.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/esmodules.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/esmodules.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/eval-maps.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/eval-maps.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/for-loops.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/for-loops.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/for-of.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/for-of.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/functions.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/functions.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/lex-and-nonlex.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/lex-and-nonlex.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/line-start-bindings-es6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/line-start-bindings-es6.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/shadowed-vars.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/shadowed-vars.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/step-over-for-of-array-closure.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/step-over-for-of-array-closure.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/step-over-for-of-array.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/step-over-for-of-array.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/step-over-for-of-closure.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/step-over-for-of-closure.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/step-over-for-of.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/step-over-for-of.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/step-over-function-params.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/step-over-function-params.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/step-over-regenerator-await.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/step-over-regenerator-await.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/switches.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/switches.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/this-arguments-bindings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/this-arguments-bindings.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/try-catches.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/try-catches.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/type-module.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/type-module.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/typescript-classes.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/typescript-classes.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/webpack-functions.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/webpack-functions.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/webpack-line-mappings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/rollup/webpack-line-mappings.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/babel-bindings-with-flow.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/babel-bindings-with-flow.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/babel-flowtype-bindings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/babel-flowtype-bindings.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/classes.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/classes.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/esmodules-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/esmodules-cjs.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/esmodules-es6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/esmodules-es6.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/esmodules.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/esmodules.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/eval-maps.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/eval-maps.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/for-loops.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/for-loops.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/for-of.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/for-of.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/functions.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/functions.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/lex-and-nonlex.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/lex-and-nonlex.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/line-start-bindings-es6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/line-start-bindings-es6.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/modules-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/modules-cjs.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/out-of-order-declarations-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/out-of-order-declarations-cjs.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/shadowed-vars.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/shadowed-vars.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/step-over-for-of-array-closure.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/step-over-for-of-array-closure.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/step-over-for-of-array.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/step-over-for-of-array.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/step-over-for-of-closure.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/step-over-for-of-closure.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/step-over-for-of.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/step-over-for-of.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/step-over-function-params.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/step-over-function-params.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/step-over-regenerator-await.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/step-over-regenerator-await.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/switches.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/switches.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/this-arguments-bindings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/this-arguments-bindings.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/try-catches.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/try-catches.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/type-module.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/type-module.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/type-script-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/type-script-cjs.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/typescript-classes.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/typescript-classes.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/webpack-functions.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/webpack-functions.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/webpack-line-mappings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3-babel6/webpack-line-mappings.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/classes.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/classes.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/esmodules-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/esmodules-cjs.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/esmodules-es6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/esmodules-es6.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/esmodules.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/esmodules.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/eval-maps.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/eval-maps.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/for-loops.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/for-loops.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/for-of.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/for-of.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/functions.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/functions.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/lex-and-nonlex.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/lex-and-nonlex.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/line-start-bindings-es6.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/line-start-bindings-es6.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/modules-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/modules-cjs.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/out-of-order-declarations-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/out-of-order-declarations-cjs.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/shadowed-vars.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/shadowed-vars.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/step-over-for-of-array-closure.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/step-over-for-of-array-closure.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/step-over-for-of-array.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/step-over-for-of-array.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/step-over-for-of-closure.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/step-over-for-of-closure.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/step-over-for-of.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/step-over-for-of.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/step-over-function-params.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/step-over-function-params.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/step-over-regenerator-await.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/step-over-regenerator-await.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/switches.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/switches.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/this-arguments-bindings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/this-arguments-bindings.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/try-catches.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/try-catches.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/type-module.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/type-module.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/type-script-cjs.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/type-script-cjs.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/typescript-classes.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/typescript-classes.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/webpack-functions.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/webpack-functions.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/webpack-line-mappings.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/output/webpack3/webpack-line-mappings.js.map
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/package.json
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/polyfill-bundle.js
devtools/client/debugger/new/test/mochitest/examples/sourcemapped/yarn.lock
devtools/client/debugger/new/test/mochitest/helpers.js
devtools/client/shared/components/reps/reps.css
devtools/client/shared/components/reps/reps.js
--- a/devtools/client/debugger/new/README.mozilla
+++ b/devtools/client/debugger/new/README.mozilla
@@ -1,13 +1,13 @@
 This is the debugger.html project output.
 See https://github.com/devtools-html/debugger.html
 
-Version 75
+Version 76
 
-Comparison: https://github.com/devtools-html/debugger.html/compare/release-74...release-75
+Comparison: https://github.com/devtools-html/debugger.html/compare/release-75...release-76
 
 Packages:
 - babel-plugin-transform-es2015-modules-commonjs @6.26.2
 - babel-preset-react @6.24.1
 - react @16.4.1
 - react-dom @16.4.1
 - webpack @3.11.0
--- a/devtools/client/debugger/new/dist/debugger.css
+++ b/devtools/client/debugger/new/dist/debugger.css
@@ -1191,19 +1191,19 @@ html .toggle-button.end.vertical svg {
   flex-grow: 1;
   display: flex;
   flex-direction: column;
   overflow-y: hidden;
   height: 100%;
 }
 
 .project-text-search .result {
-  display: flex;
+  display: contents;
   cursor: default;
-  padding: 4px 0 4px 30px;
+  padding: 4px 0 4px 5px;
   line-height: 16px;
   font-size: 10px;
   width: 100%;
 }
 
 .project-text-search .matches-summary {
   margin-left: 5px;
 }
@@ -1216,19 +1216,30 @@ html .toggle-button.end.vertical svg {
   background-color: var(--theme-selection-background);
   color: white;
   padding: 1px 4px;
   margin: 0 2px 0 2px;
   border-radius: 2px;
 }
 
 .project-text-search .result .line-number {
-  margin-right: 1em;
-  width: 2em;
-  margin-left: 0.8em;
+  padding-left: 5px;
+  min-width: 33px;
+  width: 100%;
+  text-align: right;
+  grid-column: 1/2;
+}
+
+.project-text-search .result .line-value {
+  grid-column: 2/3;
+  padding-left: 5px;
+}
+
+.project-text-search .tree-indent {
+  display: none;
 }
 
 .project-text-search .no-result-msg {
   color: var(--theme-body-color-inactive);
   font-size: 24px;
   padding: 4px 15px;
   max-width: 100%;
   overflow-wrap: break-word;
@@ -1236,16 +1247,17 @@ html .toggle-button.end.vertical svg {
 }
 
 .project-text-search .file-result {
   font-weight: bold;
   line-height: 20px;
   cursor: default;
   padding: 2px 0 2px 5px;
   font-size: 12px;
+  grid-column: 1/3;
 }
 
 .project-text-search .file-result .arrow {
   margin: 2px 0 2px 0;
 }
 
 .project-text-search .line-match {
   display: "flex";
@@ -1264,27 +1276,34 @@ html .toggle-button.end.vertical svg {
 
 .project-text-search .managed-tree {
   overflow-y: auto;
   height: 100%;
 }
 
 .project-text-search .managed-tree .tree {
   height: 100%;
+  display: grid;
+  grid-template-columns: auto 1fr;
+}
+
+.project-text-search .managed-tree .tree .tree-node {
+  display: contents;
 }
 
 /* Focus values */
 
 .project-text-search .file-result.focused,
-.project-text-search .result.focused {
+.project-text-search .result.focused .line-value {
   background-color: var(--theme-selection-background);
 }
 
 .project-text-search .result.focused .line-number {
   font-weight: bolder;
+  background-color: var(--theme-selection-background);
 }
 
 .project-text-search .result.focused .query-match {
   background-color: #ffffff;
   color: #000000;
 }
 .container {
   background-color: lightgrey;
@@ -2108,22 +2127,16 @@ menuseparator {
 }
 
 .objectBox-stackTrace-grid {
   display: inline-grid;
   grid-template-columns: auto auto;
   margin-top: 3px;
 }
 
-.objectBox-stackTrace-fn::before {
-  content: "\3BB"; /* The "lambda" symbol */
-  display: inline-block;
-  margin: 0 0.3em;
-}
-
 .objectBox-stackTrace-fn {
   color: var(--console-output-color);
   padding-inline-start: 17px;
   white-space: nowrap;
   overflow: hidden;
   text-overflow: ellipsis;
   margin-inline-end: 5px;
 }
@@ -4025,22 +4038,29 @@ html[dir="rtl"] .object-node {
 }
 
 .shortcutLabel {
   text-align: left;
   padding-left: 10px;
 }
 
 .shortcutFunction {
-  flex: 1;
+  margin: 0 auto;
   color: var(--theme-comment);
+  display: table;
 }
 
 .shortcutFunction p {
-  display: flex;
+  display: table-row;
+}
+
+.shortcutFunction .shortcutKey,
+.shortcutFunction .shortcutLabel {
+  padding: 10px 5px;
+  display: table-cell;
 }
 
 html .welcomebox .toggle-button-end.collapsed {
   bottom: 1px;
 }
 /* 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/src/actions/breakpoints/addBreakpoint.js
+++ b/devtools/client/debugger/new/src/actions/breakpoints/addBreakpoint.js
@@ -12,16 +12,18 @@ var _breakpoint = require("../../utils/b
 var _promise = require("../utils/middleware/promise");
 
 var _selectors = require("../../selectors/index");
 
 var _sourceMaps = require("../../utils/source-maps");
 
 var _source = require("../../utils/source");
 
+var _telemetry = require("../../utils/telemetry");
+
 /* 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/>. */
 async function addBreakpointPromise(getState, client, sourceMaps, breakpoint) {
   const state = getState();
   const source = (0, _selectors.getSource)(state, breakpoint.location.sourceId);
   const location = { ...breakpoint.location,
     sourceUrl: source.url
@@ -144,15 +146,16 @@ function addBreakpoint(location, {
     hidden
   });
   return ({
     dispatch,
     getState,
     sourceMaps,
     client
   }) => {
+    (0, _telemetry.recordEvent)("add_breakpoint");
     return dispatch({
       type: "ADD_BREAKPOINT",
       breakpoint,
       [_promise.PROMISE]: addBreakpointPromise(getState, client, sourceMaps, breakpoint)
     });
   };
 }
\ No newline at end of file
--- a/devtools/client/debugger/new/src/actions/breakpoints/index.js
+++ b/devtools/client/debugger/new/src/actions/breakpoints/index.js
@@ -28,16 +28,18 @@ var _addBreakpoint = require("./addBreak
 var _remapLocations = require("./remapLocations");
 
 var _remapLocations2 = _interopRequireDefault(_remapLocations);
 
 var _syncBreakpoint = require("./syncBreakpoint");
 
 var _ast = require("../../reducers/ast");
 
+var _telemetry = require("../../utils/telemetry");
+
 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/>. */
 
 /**
  * Redux actions for breakpoints
@@ -55,21 +57,22 @@ function removeBreakpoint(location) {
     dispatch,
     getState,
     client
   }) => {
     const bp = (0, _selectors.getBreakpoint)(getState(), location);
 
     if (!bp || bp.loading) {
       return;
-    } // If the breakpoint is already disabled, we don't need to communicate
+    }
+
+    (0, _telemetry.recordEvent)("remove_breakpoint"); // If the breakpoint is already disabled, we don't need to communicate
     // with the server. We just need to dispatch an action
     // simulating a successful server request
 
-
     if (bp.disabled) {
       return dispatch({
         type: "REMOVE_BREAKPOINT",
         breakpoint: bp,
         status: "done"
       });
     }
 
@@ -327,21 +330,17 @@ function toggleBreakpointsAtLine(line, c
 
     if (!line || !selectedSource) {
       return;
     }
 
     const bps = (0, _selectors.getBreakpointsAtLine)(state, line);
     const isEmptyLine = (0, _ast.isEmptyLineInSource)(state, line, selectedSource.id);
 
-    if (isEmptyLine) {
-      return;
-    }
-
-    if (bps.size === 0) {
+    if (bps.size === 0 && !isEmptyLine) {
       return dispatch((0, _addBreakpoint.addBreakpoint)({
         sourceId: selectedSource.id,
         sourceUrl: selectedSource.url,
         line,
         column
       }));
     }
 
--- a/devtools/client/debugger/new/src/actions/file-search.js
+++ b/devtools/client/debugger/new/src/actions/file-search.js
@@ -10,16 +10,18 @@ exports.toggleFileSearchModifier = toggl
 exports.updateSearchResults = updateSearchResults;
 exports.searchContents = searchContents;
 exports.searchContentsForHighlight = searchContentsForHighlight;
 exports.traverseResults = traverseResults;
 exports.closeFileSearch = closeFileSearch;
 
 var _editor = require("../utils/editor/index");
 
+var _wasm = require("../utils/wasm");
+
 var _search = require("../workers/search/index");
 
 var _selectors = require("../selectors/index");
 
 var _ui = require("./ui");
 
 /* 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
@@ -101,17 +103,19 @@ function searchContents(query, editor) {
 
     if (!query) {
       (0, _editor.clearSearch)(ctx.cm, query);
       return;
     }
 
     const _modifiers = modifiers.toJS();
 
-    const matches = await (0, _search.getMatches)(query, selectedSource.text, _modifiers);
+    const sourceId = selectedSource.id;
+    const text = (0, _wasm.isWasm)(sourceId) ? (0, _wasm.renderWasmText)(sourceId, selectedSource.text).join("\n") : selectedSource.text;
+    const matches = await (0, _search.getMatches)(query, text, _modifiers);
     const res = (0, _editor.find)(ctx, query, true, _modifiers);
 
     if (!res) {
       return;
     }
 
     const {
       ch,
@@ -184,19 +188,18 @@ function traverseResults(rev, editor) {
   };
 }
 
 function closeFileSearch(editor) {
   return ({
     getState,
     dispatch
   }) => {
-    const query = (0, _selectors.getFileSearchQuery)(getState());
-
     if (editor) {
+      const query = (0, _selectors.getFileSearchQuery)(getState());
       const ctx = {
         ed: editor,
         cm: editor.codeMirror
       };
       (0, _editor.removeOverlay)(ctx, query);
     }
 
     dispatch(setFileSearchQuery(""));
--- a/devtools/client/debugger/new/src/actions/pause/commands.js
+++ b/devtools/client/debugger/new/src/actions/pause/commands.js
@@ -19,16 +19,18 @@ var _selectors = require("../../selector
 var _promise = require("../utils/middleware/promise");
 
 var _parser = require("../../workers/parser/index");
 
 var _breakpoints = require("../breakpoints/index");
 
 var _prefs = require("../../utils/prefs");
 
+var _telemetry = require("../../utils/telemetry");
+
 /* -*- indent-tabs-mode: nil; js-indent-level: 2; js-indent-level: 2 -*- */
 
 /* 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/>. */
 
 /**
  * Debugger commands like stepOver, stepIn, stepUp
@@ -112,16 +114,17 @@ function stepOut() {
 
 
 function resume() {
   return ({
     dispatch,
     getState
   }) => {
     if ((0, _selectors.isPaused)(getState())) {
+      (0, _telemetry.recordEvent)("continue");
       return dispatch(command("resume"));
     }
   };
 }
 /**
  * rewind
  * @memberof actions/pause
  * @static
--- a/devtools/client/debugger/new/src/actions/sources/blackbox.js
+++ b/devtools/client/debugger/new/src/actions/sources/blackbox.js
@@ -1,15 +1,17 @@
 "use strict";
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.toggleBlackBox = toggleBlackBox;
 
+var _telemetry = require("../../utils/telemetry");
+
 var _promise = require("../utils/middleware/promise");
 
 /* 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/>. */
 
 /**
  * Redux actions for the sources state
@@ -21,15 +23,20 @@ function toggleBlackBox(source) {
     getState,
     client,
     sourceMaps
   }) => {
     const {
       isBlackBoxed,
       id
     } = source;
+
+    if (!isBlackBoxed) {
+      (0, _telemetry.recordEvent)("blackbox");
+    }
+
     return dispatch({
       type: "BLACKBOX",
       source,
       [_promise.PROMISE]: client.blackBox(id, isBlackBoxed)
     });
   };
 }
\ No newline at end of file
--- a/devtools/client/debugger/new/src/actions/sources/prettyPrint.js
+++ b/devtools/client/debugger/new/src/actions/sources/prettyPrint.js
@@ -5,16 +5,18 @@ Object.defineProperty(exports, "__esModu
 });
 exports.createPrettySource = createPrettySource;
 exports.togglePrettyPrint = togglePrettyPrint;
 
 var _assert = require("../../utils/assert");
 
 var _assert2 = _interopRequireDefault(_assert);
 
+var _telemetry = require("../../utils/telemetry");
+
 var _breakpoints = require("../breakpoints/index");
 
 var _ast = require("../ast");
 
 var _prettyPrint = require("../../workers/pretty-print/index");
 
 var _parser = require("../../workers/parser/index");
 
@@ -97,16 +99,20 @@ function togglePrettyPrint(sourceId) {
     sourceMaps
   }) => {
     const source = (0, _selectors.getSource)(getState(), sourceId);
 
     if (!source) {
       return {};
     }
 
+    if (!source.isPrettyPrinted) {
+      (0, _telemetry.recordEvent)("pretty_print");
+    }
+
     if (!(0, _source.isLoaded)(source)) {
       await dispatch((0, _loadSourceText.loadSourceText)(source));
     }
 
     (0, _assert2.default)(sourceMaps.isGeneratedId(sourceId), "Pretty-printing only allowed on generated sources");
     const selectedLocation = (0, _selectors.getSelectedLocation)(getState());
     const url = (0, _source.getPrettySourceURL)(source.url);
     const prettySource = (0, _selectors.getSourceByURL)(getState(), url);
--- a/devtools/client/debugger/new/src/actions/ui.js
+++ b/devtools/client/debugger/new/src/actions/ui.js
@@ -17,19 +17,19 @@ exports.clearHighlightLineRange = clearH
 exports.openConditionalPanel = openConditionalPanel;
 exports.closeConditionalPanel = closeConditionalPanel;
 exports.clearProjectDirectoryRoot = clearProjectDirectoryRoot;
 exports.setProjectDirectoryRoot = setProjectDirectoryRoot;
 exports.setOrientation = setOrientation;
 
 var _selectors = require("../selectors/index");
 
-var _ui = require("../reducers/ui");
+var _select = require("../actions/sources/select");
 
-var _source = require("../utils/source");
+var _ui = require("../reducers/ui");
 
 var _editor = require("../utils/editor/index");
 
 var _fileSearch = require("./file-search");
 
 /* 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/>. */
@@ -129,21 +129,22 @@ function showSource(sourceId) {
         position: "start",
         paneCollapsed: false
       });
     }
 
     dispatch(setPrimaryPaneTab("sources"));
     dispatch({
       type: "SHOW_SOURCE",
-      sourceUrl: ""
+      source: null
     });
+    dispatch((0, _select.selectSource)(source.id));
     dispatch({
       type: "SHOW_SOURCE",
-      sourceUrl: (0, _source.getRawSourceURL)(source.url)
+      source
     });
   };
 }
 
 function togglePaneCollapse(position, paneCollapsed) {
   return ({
     dispatch,
     getState
--- a/devtools/client/debugger/new/src/components/PrimaryPanes/SourcesTree.js
+++ b/devtools/client/debugger/new/src/components/PrimaryPanes/SourcesTree.js
@@ -11,36 +11,38 @@ var _react2 = _interopRequireDefault(_re
 var _classnames = require("devtools/client/debugger/new/dist/vendors").vendored["classnames"];
 
 var _classnames2 = _interopRequireDefault(_classnames);
 
 var _reactRedux = require("devtools/client/shared/vendor/react-redux");
 
 var _selectors = require("../../selectors/index");
 
+var _sources = require("../../reducers/sources");
+
 var _actions = require("../../actions/index");
 
 var _actions2 = _interopRequireDefault(_actions);
 
-var _source = require("../../utils/source");
-
 var _SourcesTreeItem = require("./SourcesTreeItem");
 
 var _SourcesTreeItem2 = _interopRequireDefault(_SourcesTreeItem);
 
 var _ManagedTree = require("../shared/ManagedTree");
 
 var _ManagedTree2 = _interopRequireDefault(_ManagedTree);
 
 var _Svg = require("devtools/client/debugger/new/dist/vendors").vendored["Svg"];
 
 var _Svg2 = _interopRequireDefault(_Svg);
 
 var _sourcesTree = require("../../utils/sources-tree/index");
 
+var _source = require("../../utils/source");
+
 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/>. */
 // Dependencies
 // Selectors
 // Actions
@@ -83,31 +85,20 @@ class SourcesTree extends _react.Compone
       return this.setState((0, _sourcesTree.createTree)({
         sources: nextProps.sources,
         debuggeeUrl: nextProps.debuggeeUrl,
         projectRoot: nextProps.projectRoot
       }));
     }
 
     if (nextProps.shownSource && nextProps.shownSource != shownSource) {
-      const matchingSources = Object.keys(sources).filter(sourceId => {
-        return (0, _source.getRawSourceURL)(sources[sourceId].url) === nextProps.shownSource;
+      const listItems = (0, _sourcesTree.getDirectories)(nextProps.shownSource, sourceTree);
+      return this.setState({
+        listItems
       });
-
-      if (matchingSources.length) {
-        const listItems = (0, _sourcesTree.getDirectories)(sources[matchingSources[0]], sourceTree);
-
-        if (listItems && listItems.length) {
-          this.selectItem(listItems[0]);
-        }
-
-        return this.setState({
-          listItems
-        });
-      }
     }
 
     if (nextProps.selectedSource && nextProps.selectedSource != selectedSource) {
       const highlightItems = (0, _sourcesTree.getDirectories)(nextProps.selectedSource, sourceTree);
       this.setState({
         highlightItems
       });
     } // NOTE: do not run this every time a source is clicked,
@@ -245,19 +236,17 @@ class SourcesTree extends _react.Compone
 var _initialiseProps = function () {
   this.focusItem = item => {
     this.setState({
       focusedItem: item
     });
   };
 
   this.selectItem = item => {
-    if (!(0, _sourcesTree.isDirectory)(item) && // This second check isn't strictly necessary, but it ensures that Flow
-    // knows that we are doing the correct thing.
-    !Array.isArray(item.contents)) {
+    if (item.type == "source" && !Array.isArray(item.contents)) {
       this.props.selectSource(item.contents.id);
     }
   };
 
   this.getPath = item => {
     const path = `${item.path}/${item.name}`;
 
     if ((0, _sourcesTree.isDirectory)(item)) {
@@ -331,20 +320,30 @@ var _initialiseProps = function () {
       debuggeeUrl: debuggeeUrl,
       projectRoot: projectRoot,
       clearProjectDirectoryRoot: this.props.clearProjectDirectoryRoot,
       setProjectDirectoryRoot: this.props.setProjectDirectoryRoot
     });
   };
 };
 
+function getSourceForTree(state, source) {
+  if (!source || !source.isPrettyPrinted) {
+    return source;
+  }
+
+  return (0, _sources.getSourceByURL)(state, (0, _source.getRawSourceURL)(source.url));
+}
+
 const mapStateToProps = state => {
+  const selectedSource = (0, _selectors.getSelectedSource)(state);
+  const shownSource = (0, _selectors.getShownSource)(state);
   return {
-    shownSource: (0, _selectors.getShownSource)(state),
-    selectedSource: (0, _selectors.getSelectedSource)(state),
+    shownSource: getSourceForTree(state, shownSource),
+    selectedSource: getSourceForTree(state, selectedSource),
     debuggeeUrl: (0, _selectors.getDebuggeeUrl)(state),
     expanded: (0, _selectors.getExpandedState)(state),
     projectRoot: (0, _selectors.getProjectDirectoryRoot)(state),
     sources: (0, _selectors.getRelativeSources)(state),
     sourceCount: (0, _selectors.getSourceCount)(state)
   };
 };
 
--- a/devtools/client/debugger/new/src/components/ProjectSearch.js
+++ b/devtools/client/debugger/new/src/components/ProjectSearch.js
@@ -263,16 +263,25 @@ class ProjectSearch extends _react.Compo
   componentWillUnmount() {
     const {
       shortcuts
     } = this.context;
     shortcuts.off(L10N.getStr("projectTextSearch.key"), this.toggleProjectTextSearch);
     shortcuts.off("Enter", this.onEnterPress);
   }
 
+  componentDidUpdate(prevProps) {
+    // If the query changes in redux, also change it in the UI
+    if (prevProps.query !== this.props.query) {
+      this.setState({
+        inputValue: this.props.query
+      });
+    }
+  }
+
   shouldShowErrorEmoji() {
     return !this.getResultCount() && this.props.status === _projectTextSearch.statusType.done;
   }
 
   renderInput() {
     return _react2.default.createElement(_SearchInput2.default, {
       query: this.state.inputValue,
       count: this.getResultCount(),
--- a/devtools/client/debugger/new/src/components/shared/ManagedTree.js
+++ b/devtools/client/debugger/new/src/components/shared/ManagedTree.js
@@ -86,17 +86,17 @@ class ManagedTree extends _react.Compone
 
   componentWillReceiveProps(nextProps) {
     const {
       listItems,
       highlightItems,
       focused
     } = this.props;
 
-    if (nextProps.listItems && nextProps.listItems != listItems && nextProps.listItems.length) {
+    if (nextProps.listItems && nextProps.listItems != listItems) {
       this.expandListItems(nextProps.listItems);
     }
 
     if (nextProps.highlightItems && nextProps.highlightItems != highlightItems && nextProps.highlightItems.length) {
       this.highlightItem(nextProps.highlightItems);
     }
 
     if (nextProps.focused && nextProps.focused !== focused) {
--- a/devtools/client/debugger/new/src/components/shared/Popover.js
+++ b/devtools/client/debugger/new/src/components/shared/Popover.js
@@ -73,17 +73,17 @@ class Popover extends _react.Component {
     const coords = type == "popover" ? this.getPopoverCoords() : this.getTooltipCoords();
 
     if (coords) {
       this.setState({
         coords
       });
     }
 
-    this.props.onPopoverCoords(this.state.coords);
+    this.props.onPopoverCoords(coords);
   }
 
   calculateLeft(target, editor, popover, orientation) {
     const estimatedLeft = target.left;
     const estimatedRight = estimatedLeft + popover.width;
     const isOverflowingRight = estimatedRight > editor.right;
 
     if (orientation === "right") {
--- a/devtools/client/debugger/new/src/reducers/file-search.js
+++ b/devtools/client/debugger/new/src/reducers/file-search.js
@@ -19,24 +19,25 @@ function _interopRequireDefault(obj) { r
 /* 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/>. */
 
 /**
  * File Search reducer
  * @module reducers/fileSearch
  */
+const emptySearchResults = Object.freeze({
+  matches: Object.freeze([]),
+  matchIndex: -1,
+  index: -1,
+  count: 0
+});
 const createFileSearchState = exports.createFileSearchState = (0, _makeRecord2.default)({
   query: "",
-  searchResults: {
-    matches: [],
-    matchIndex: -1,
-    index: -1,
-    count: 0
-  },
+  searchResults: emptySearchResults,
   modifiers: (0, _makeRecord2.default)({
     caseSensitive: _prefs.prefs.fileSearchCaseSensitive,
     wholeWord: _prefs.prefs.fileSearchWholeWord,
     regexMatch: _prefs.prefs.fileSearchRegexMatch
   })()
 });
 
 function update(state = createFileSearchState(), action) {
@@ -65,16 +66,21 @@ function update(state = createFileSearch
 
         if (action.modifier == "regexMatch") {
           _prefs.prefs.fileSearchRegexMatch = actionVal;
         }
 
         return state.setIn(["modifiers", action.modifier], actionVal);
       }
 
+    case "NAVIGATE":
+      {
+        return state.set("query", "").set("searchResults", emptySearchResults);
+      }
+
     default:
       {
         return state;
       }
   }
 } // NOTE: we'd like to have the app state fully typed
 // https://github.com/devtools-html/debugger.html/blob/master/src/reducers/sources.js#L179-L185
 
--- a/devtools/client/debugger/new/src/reducers/project-text-search.js
+++ b/devtools/client/debugger/new/src/reducers/project-text-search.js
@@ -70,16 +70,17 @@ function update(state = initialProjectTe
 
     case "CLEAR_SEARCH_RESULTS":
       return state.merge({
         results: state.get("results").clear()
       });
 
     case "CLEAR_SEARCH":
     case "CLOSE_PROJECT_SEARCH":
+    case "NAVIGATE":
       return state.merge({
         query: "",
         results: state.get("results").clear(),
         status: statusType.initial
       });
   }
 
   return state;
--- a/devtools/client/debugger/new/src/reducers/ui.js
+++ b/devtools/client/debugger/new/src/reducers/ui.js
@@ -30,17 +30,17 @@ function _interopRequireDefault(obj) { r
 /**
  * UI reducer
  * @module reducers/ui
  */
 const createUIState = exports.createUIState = (0, _makeRecord2.default)({
   selectedPrimaryPaneTab: "sources",
   activeSearch: null,
   contextMenu: {},
-  shownSource: "",
+  shownSource: null,
   projectDirectoryRoot: _prefs.prefs.projectDirectoryRoot,
   startPanelCollapsed: _prefs.prefs.startPanelCollapsed,
   endPanelCollapsed: _prefs.prefs.endPanelCollapsed,
   frameworkGroupingOn: _prefs.prefs.frameworkGroupingOn,
   highlightedLineRange: undefined,
   conditionalPanelLine: null,
   orientation: "horizontal"
 });
@@ -65,17 +65,17 @@ function update(state = createUIState(),
 
     case "SET_ORIENTATION":
       {
         return state.set("orientation", action.orientation);
       }
 
     case "SHOW_SOURCE":
       {
-        return state.set("shownSource", action.sourceUrl);
+        return state.set("shownSource", action.source);
       }
 
     case "TOGGLE_PANE":
       {
         if (action.position == "start") {
           _prefs.prefs.startPanelCollapsed = action.paneCollapsed;
           return state.set("startPanelCollapsed", action.paneCollapsed);
         }
@@ -123,16 +123,21 @@ function update(state = createUIState(),
       {
         if (state.get("activeSearch") === "project") {
           return state.set("activeSearch", null);
         }
 
         return state;
       }
 
+    case "NAVIGATE":
+      {
+        return state.set("activeSearch", null).set("highlightedLineRange", {});
+      }
+
     default:
       {
         return state;
       }
   }
 } // NOTE: we'd like to have the app state fully typed
 // https://github.com/devtools-html/debugger.html/blob/master/src/reducers/sources.js#L179-L185
 
--- a/devtools/client/debugger/new/src/utils/dbg.js
+++ b/devtools/client/debugger/new/src/utils/dbg.js
@@ -76,21 +76,24 @@ function setupHelper(obj) {
     helpers: {
       findSource: url => findSource(dbg, url),
       evaluate: (expression, cbk) => evaluate(dbg, expression, cbk),
       sendPacketToThread: (packet, cbk) => sendPacketToThread(dbg, packet, cbk),
       sendPacket: (packet, cbk) => sendPacket(dbg, packet, cbk)
     },
     formatters: {
       pausePoints: url => _formatPausePoints(dbg, url)
+    },
+    _telemetry: {
+      events: {}
     }
   };
   window.dbg = dbg;
 
-  if ((0, _devtoolsEnvironment.isDevelopment)()) {
+  if ((0, _devtoolsEnvironment.isDevelopment)() && !(0, _devtoolsEnvironment.isTesting)()) {
     console.group("Development Notes");
     const baseUrl = "https://devtools-html.github.io/debugger.html";
     const localDevelopmentUrl = `${baseUrl}/docs/dbg.html`;
     console.log("Debugging Tips", localDevelopmentUrl);
     console.log("dbg", window.dbg);
     console.groupEnd();
   }
 }
\ No newline at end of file
--- a/devtools/client/debugger/new/src/utils/pause/mapScopes/getApplicableBindingsForOriginalPosition.js
+++ b/devtools/client/debugger/new/src/utils/pause/mapScopes/getApplicableBindingsForOriginalPosition.js
@@ -28,48 +28,28 @@ async function originalRangeStartsInside
   return (0, _positionCmp.positionCmp)(startPosition, endPosition) !== 0;
 }
 
 async function getApplicableBindingsForOriginalPosition(generatedAstBindings, source, {
   start,
   end
 }, bindingType, locationType, sourceMaps) {
   const ranges = await sourceMaps.getGeneratedRanges(start, source);
-  const resultRanges = ranges.reduce((acc, mapRange) => {
-    // Some tooling creates ranges that map a line as a whole, which is useful
-    // for step-debugging, but can easily lead to finding the wrong binding.
-    // To avoid these false-positives, we entirely ignore ranges that cover
-    // full lines.
-    if (locationType === "ref" && mapRange.columnStart === 0 && mapRange.columnEnd === Infinity) {
-      return acc;
+  const resultRanges = ranges.map(mapRange => ({
+    start: {
+      line: mapRange.line,
+      column: mapRange.columnStart
+    },
+    end: {
+      line: mapRange.line,
+      // SourceMapConsumer's 'lastColumn' is inclusive, so we add 1 to make
+      // it exclusive like all other locations.
+      column: mapRange.columnEnd + 1
     }
-
-    const range = {
-      start: {
-        line: mapRange.line,
-        column: mapRange.columnStart
-      },
-      end: {
-        line: mapRange.line,
-        // SourceMapConsumer's 'lastColumn' is inclusive, so we add 1 to make
-        // it exclusive like all other locations.
-        column: mapRange.columnEnd + 1
-      }
-    };
-    const previous = acc[acc.length - 1];
-
-    if (previous && (previous.end.line === range.start.line && previous.end.column === range.start.column || previous.end.line + 1 === range.start.line && previous.end.column === Infinity && range.start.column === 0)) {
-      previous.end.line = range.end.line;
-      previous.end.column = range.end.column;
-    } else {
-      acc.push(range);
-    }
-
-    return acc;
-  }, []); // When searching for imports, we expand the range to up to the next available
+  })); // When searching for imports, we expand the range to up to the next available
   // mapping to allow for import declarations that are composed of multiple
   // variable statements, where the later ones are entirely unmapped.
   // Babel 6 produces imports in this style, e.g.
   //
   // var _mod = require("mod"); // mapped from import statement
   // var _mod2 = interop(_mod); // entirely unmapped
 
   if (bindingType === "import" && locationType !== "ref") {
--- a/devtools/client/debugger/new/src/utils/pause/mapScopes/index.js
+++ b/devtools/client/debugger/new/src/utils/pause/mapScopes/index.js
@@ -232,16 +232,26 @@ async function findGeneratedBinding(sour
 
   const loadApplicableBindings = async (pos, locationType) => {
     let applicableBindings = await (0, _getApplicableBindingsForOriginalPosition.getApplicableBindingsForOriginalPosition)(generatedAstBindings, source, pos, originalBinding.type, locationType, sourceMaps);
 
     if (applicableBindings.length > 0) {
       hadApplicableBindings = true;
     }
 
+    if (locationType === "ref") {
+      // Some tooling creates ranges that map a line as a whole, which is useful
+      // for step-debugging, but can easily lead to finding the wrong binding.
+      // To avoid these false-positives, we entirely ignore bindings matched
+      // by ranges that cover full lines.
+      applicableBindings = applicableBindings.filter(({
+        range
+      }) => !(range.start.column === 0 && range.end.column === Infinity));
+    }
+
     if (locationType !== "ref" && !(await (0, _getApplicableBindingsForOriginalPosition.originalRangeStartsInside)(source, pos, sourceMaps))) {
       applicableBindings = [];
     }
 
     return applicableBindings;
   };
 
   const {
--- a/devtools/client/debugger/new/src/utils/source.js
+++ b/devtools/client/debugger/new/src/utils/source.js
@@ -39,16 +39,18 @@ var _utils = require("./utils");
 var _text = require("../utils/text");
 
 var _url = require("devtools/client/debugger/new/dist/vendors").vendored["url"];
 
 var _devtoolsModules = require("devtools/client/debugger/new/dist/vendors").vendored["devtools-modules"];
 
 var _sourcesTree = require("./sources-tree/index");
 
+var _prefs = require("./prefs");
+
 const sourceTypes = exports.sourceTypes = {
   coffee: "coffeescript",
   js: "javascript",
   jsx: "react",
   ts: "typescript"
 };
 /**
  * Trims the query part or reference identifier of a url string, if necessary.
@@ -62,28 +64,17 @@ function trimUrlQuery(url) {
   const q1 = url.indexOf("?");
   const q2 = url.indexOf("&");
   const q3 = url.indexOf("#");
   const q = Math.min(q1 != -1 ? q1 : length, q2 != -1 ? q2 : length, q3 != -1 ? q3 : length);
   return url.slice(0, q);
 }
 
 function shouldPrettyPrint(source) {
-  if (!source) {
-    return false;
-  }
-
-  const _isPretty = isPretty(source);
-
-  const _isJavaScript = isJavaScript(source);
-
-  const isOriginal = (0, _devtoolsSourceMap.isOriginalId)(source.id);
-  const hasSourceMap = source.sourceMapURL;
-
-  if (_isPretty || isOriginal || hasSourceMap || !_isJavaScript) {
+  if (!source || isPretty(source) || !isJavaScript(source) || (0, _devtoolsSourceMap.isOriginalId)(source.id) || source.sourceMapURL || !_prefs.prefs.clientSourceMapsEnabled) {
     return false;
   }
 
   return true;
 }
 /**
  * Returns true if the specified url and/or content type are specific to
  * javascript files.
--- a/devtools/client/debugger/new/src/utils/sources-tree/updateTree.js
+++ b/devtools/client/debugger/new/src/utils/sources-tree/updateTree.js
@@ -38,12 +38,12 @@ function updateTree({
   for (const source of newSet) {
     (0, _addToTree.addToTree)(uncollapsedTree, source, debuggeeHost, projectRoot);
   }
 
   const newSourceTree = (0, _collapseTree.collapseTree)(uncollapsedTree);
   return {
     uncollapsedTree,
     sourceTree: newSourceTree,
-    parentMap: (0, _utils.createParentMap)(sourceTree),
+    parentMap: (0, _utils.createParentMap)(newSourceTree),
     focusedItem: null
   };
 }
\ No newline at end of file
--- a/devtools/client/debugger/new/src/utils/telemetry.js
+++ b/devtools/client/debugger/new/src/utils/telemetry.js
@@ -4,16 +4,18 @@ Object.defineProperty(exports, "__esModu
   value: true
 });
 exports.recordEvent = recordEvent;
 
 var _telemetry = require("devtools/client/shared/telemetry");
 
 var _telemetry2 = _interopRequireDefault(_telemetry);
 
+var _devtoolsEnvironment = require("devtools/client/debugger/new/dist/vendors").vendored["devtools-environment"];
+
 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/>. */
 
 /**
  * Usage:
@@ -58,20 +60,34 @@ const telemetry = new _telemetry2.defaul
 /**
  * @memberof utils/telemetry
  * @static
  */
 
 function recordEvent(eventName, fields = {}) {
   let sessionId = -1;
 
-  if (typeof window === "object" && window.parent.frameElement) {
+  if (typeof window !== "object") {
+    return;
+  }
+
+  if (window.parent.frameElement) {
     sessionId = window.parent.frameElement.getAttribute("session_id");
   }
   /* eslint-disable camelcase */
 
 
   telemetry.recordEvent("devtools.main", eventName, "debugger", null, {
     session_id: sessionId,
     ...fields
   });
   /* eslint-enable camelcase */
+
+  if (!(0, _devtoolsEnvironment.isFirefoxPanel)() && window.dbg) {
+    const events = window.dbg._telemetry.events;
+
+    if (!events[eventName]) {
+      events[eventName] = [];
+    }
+
+    events[eventName].push(fields);
+  }
 }
\ No newline at end of file
--- a/devtools/client/debugger/new/test/mochitest/browser.ini
+++ b/devtools/client/debugger/new/test/mochitest/browser.ini
@@ -3,83 +3,223 @@ tags = devtools
 subsuite = devtools
 skip-if = (os == 'linux' && debug && bits == 32)
 support-files =
   head.js
   helpers.js
   !/devtools/client/commandline/test/helpers.js
   !/devtools/client/shared/test/shared-head.js
   !/devtools/client/shared/test/telemetry-test-helpers.js
+  ## START-SOURCEMAPPED-FIXTURES - Generated by examples/sourcemapped/build.js
   examples/sourcemapped/polyfill-bundle.js
-  examples/sourcemapped/fixtures/typescript-classes/output.js
-  examples/sourcemapped/fixtures/typescript-classes/output.js.map
-  examples/sourcemapped/fixtures/rollup-babel-classes/output.js
-  examples/sourcemapped/fixtures/rollup-babel-classes/output.js.map
-  examples/sourcemapped/fixtures/rollup-babel-lex-and-nonlex/output.js
-  examples/sourcemapped/fixtures/rollup-babel-lex-and-nonlex/output.js.map
-  examples/sourcemapped/fixtures/rollup-babel-modules/output.js
-  examples/sourcemapped/fixtures/rollup-babel-modules/output.js.map
-  examples/sourcemapped/fixtures/rollup-modules/output.js
-  examples/sourcemapped/fixtures/rollup-modules/output.js.map
-  examples/sourcemapped/fixtures/babel-bindings-with-flow/output.js
-  examples/sourcemapped/fixtures/babel-bindings-with-flow/output.js.map
-  examples/sourcemapped/fixtures/babel-eval-maps/output.js
-  examples/sourcemapped/fixtures/babel-eval-maps/output.js.map
-  examples/sourcemapped/fixtures/babel-for-of/output.js
-  examples/sourcemapped/fixtures/babel-for-of/output.js.map
-  examples/sourcemapped/fixtures/babel-line-start-bindings-es6/output.js
-  examples/sourcemapped/fixtures/babel-line-start-bindings-es6/output.js.map
-  examples/sourcemapped/fixtures/babel-shadowed-vars/output.js
-  examples/sourcemapped/fixtures/babel-shadowed-vars/output.js.map
-  examples/sourcemapped/fixtures/babel-this-arguments-bindings/output.js
-  examples/sourcemapped/fixtures/babel-this-arguments-bindings/output.js.map
-  examples/sourcemapped/fixtures/babel-modules-cjs/output.js
-  examples/sourcemapped/fixtures/babel-modules-cjs/output.js.map
-  examples/sourcemapped/fixtures/babel-classes/output.js
-  examples/sourcemapped/fixtures/babel-classes/output.js.map
-  examples/sourcemapped/fixtures/babel-commonjs/output.js
-  examples/sourcemapped/fixtures/babel-commonjs/output.js.map
-  examples/sourcemapped/fixtures/babel-for-loops/output.js
-  examples/sourcemapped/fixtures/babel-for-loops/output.js.map
-  examples/sourcemapped/fixtures/babel-functions/output.js
-  examples/sourcemapped/fixtures/babel-functions/output.js.map
-  examples/sourcemapped/fixtures/babel-lex-and-nonlex/output.js
-  examples/sourcemapped/fixtures/babel-lex-and-nonlex/output.js.map
-  examples/sourcemapped/fixtures/babel-type-module/output.js
-  examples/sourcemapped/fixtures/babel-type-module/output.js.map
-  examples/sourcemapped/fixtures/babel-type-script/output.js
-  examples/sourcemapped/fixtures/babel-type-script/output.js.map
-  examples/sourcemapped/fixtures/babel-out-of-order-declarations-cjs/output.js
-  examples/sourcemapped/fixtures/babel-out-of-order-declarations-cjs/output.js.map
-  examples/sourcemapped/fixtures/babel-flowtype-bindings/output.js
-  examples/sourcemapped/fixtures/babel-flowtype-bindings/output.js.map
-  examples/sourcemapped/fixtures/babel-step-over-for-of/output.js
-  examples/sourcemapped/fixtures/babel-step-over-for-of/output.js.map
-  examples/sourcemapped/fixtures/babel-step-over-for-of-closure/output.js
-  examples/sourcemapped/fixtures/babel-step-over-for-of-closure/output.js.map
-  examples/sourcemapped/fixtures/babel-step-over-for-of-array/output.js
-  examples/sourcemapped/fixtures/babel-step-over-for-of-array/output.js.map
-  examples/sourcemapped/fixtures/babel-step-over-for-of-array-closure/output.js
-  examples/sourcemapped/fixtures/babel-step-over-for-of-array-closure/output.js.map
-  examples/sourcemapped/fixtures/babel-step-over-function-params/output.js
-  examples/sourcemapped/fixtures/babel-step-over-function-params/output.js.map
-  examples/sourcemapped/fixtures/babel-step-over-regenerator-await/output.js
-  examples/sourcemapped/fixtures/babel-step-over-regenerator-await/output.js.map
-  examples/sourcemapped/fixtures/babel-switches/output.js
-  examples/sourcemapped/fixtures/babel-switches/output.js.map
-  examples/sourcemapped/fixtures/babel-try-catches/output.js
-  examples/sourcemapped/fixtures/babel-try-catches/output.js.map
-  examples/sourcemapped/fixtures/babel-modules-webpack/output.js
-  examples/sourcemapped/fixtures/babel-modules-webpack/output.js.map
-  examples/sourcemapped/fixtures/babel-modules-webpack-es6/output.js
-  examples/sourcemapped/fixtures/babel-modules-webpack-es6/output.js.map
-  examples/sourcemapped/fixtures/webpack-line-mappings/output.js
-  examples/sourcemapped/fixtures/webpack-line-mappings/output.js.map
-  examples/sourcemapped/fixtures/webpack-functions/output.js
-  examples/sourcemapped/fixtures/webpack-functions/output.js.map
+  examples/sourcemapped/output/webpack3/classes.js
+  examples/sourcemapped/output/webpack3/classes.js.map
+  examples/sourcemapped/output/webpack3/esmodules.js
+  examples/sourcemapped/output/webpack3/esmodules.js.map
+  examples/sourcemapped/output/webpack3/esmodules-cjs.js
+  examples/sourcemapped/output/webpack3/esmodules-cjs.js.map
+  examples/sourcemapped/output/webpack3/esmodules-es6.js
+  examples/sourcemapped/output/webpack3/esmodules-es6.js.map
+  examples/sourcemapped/output/webpack3/eval-maps.js
+  examples/sourcemapped/output/webpack3/eval-maps.js.map
+  examples/sourcemapped/output/webpack3/for-loops.js
+  examples/sourcemapped/output/webpack3/for-loops.js.map
+  examples/sourcemapped/output/webpack3/for-of.js
+  examples/sourcemapped/output/webpack3/for-of.js.map
+  examples/sourcemapped/output/webpack3/functions.js
+  examples/sourcemapped/output/webpack3/functions.js.map
+  examples/sourcemapped/output/webpack3/lex-and-nonlex.js
+  examples/sourcemapped/output/webpack3/lex-and-nonlex.js.map
+  examples/sourcemapped/output/webpack3/line-start-bindings-es6.js
+  examples/sourcemapped/output/webpack3/line-start-bindings-es6.js.map
+  examples/sourcemapped/output/webpack3/modules-cjs.js
+  examples/sourcemapped/output/webpack3/modules-cjs.js.map
+  examples/sourcemapped/output/webpack3/out-of-order-declarations-cjs.js
+  examples/sourcemapped/output/webpack3/out-of-order-declarations-cjs.js.map
+  examples/sourcemapped/output/webpack3/shadowed-vars.js
+  examples/sourcemapped/output/webpack3/shadowed-vars.js.map
+  examples/sourcemapped/output/webpack3/step-over-for-of.js
+  examples/sourcemapped/output/webpack3/step-over-for-of.js.map
+  examples/sourcemapped/output/webpack3/step-over-for-of-array.js
+  examples/sourcemapped/output/webpack3/step-over-for-of-array.js.map
+  examples/sourcemapped/output/webpack3/step-over-for-of-array-closure.js
+  examples/sourcemapped/output/webpack3/step-over-for-of-array-closure.js.map
+  examples/sourcemapped/output/webpack3/step-over-for-of-closure.js
+  examples/sourcemapped/output/webpack3/step-over-for-of-closure.js.map
+  examples/sourcemapped/output/webpack3/step-over-function-params.js
+  examples/sourcemapped/output/webpack3/step-over-function-params.js.map
+  examples/sourcemapped/output/webpack3/step-over-regenerator-await.js
+  examples/sourcemapped/output/webpack3/step-over-regenerator-await.js.map
+  examples/sourcemapped/output/webpack3/switches.js
+  examples/sourcemapped/output/webpack3/switches.js.map
+  examples/sourcemapped/output/webpack3/this-arguments-bindings.js
+  examples/sourcemapped/output/webpack3/this-arguments-bindings.js.map
+  examples/sourcemapped/output/webpack3/try-catches.js
+  examples/sourcemapped/output/webpack3/try-catches.js.map
+  examples/sourcemapped/output/webpack3/type-module.js
+  examples/sourcemapped/output/webpack3/type-module.js.map
+  examples/sourcemapped/output/webpack3/type-script-cjs.js
+  examples/sourcemapped/output/webpack3/type-script-cjs.js.map
+  examples/sourcemapped/output/webpack3/typescript-classes.js
+  examples/sourcemapped/output/webpack3/typescript-classes.js.map
+  examples/sourcemapped/output/webpack3/webpack-functions.js
+  examples/sourcemapped/output/webpack3/webpack-functions.js.map
+  examples/sourcemapped/output/webpack3/webpack-line-mappings.js
+  examples/sourcemapped/output/webpack3/webpack-line-mappings.js.map
+  examples/sourcemapped/output/webpack3-babel6/babel-bindings-with-flow.js
+  examples/sourcemapped/output/webpack3-babel6/babel-bindings-with-flow.js.map
+  examples/sourcemapped/output/webpack3-babel6/babel-flowtype-bindings.js
+  examples/sourcemapped/output/webpack3-babel6/babel-flowtype-bindings.js.map
+  examples/sourcemapped/output/webpack3-babel6/classes.js
+  examples/sourcemapped/output/webpack3-babel6/classes.js.map
+  examples/sourcemapped/output/webpack3-babel6/esmodules.js
+  examples/sourcemapped/output/webpack3-babel6/esmodules.js.map
+  examples/sourcemapped/output/webpack3-babel6/esmodules-cjs.js
+  examples/sourcemapped/output/webpack3-babel6/esmodules-cjs.js.map
+  examples/sourcemapped/output/webpack3-babel6/esmodules-es6.js
+  examples/sourcemapped/output/webpack3-babel6/esmodules-es6.js.map
+  examples/sourcemapped/output/webpack3-babel6/eval-maps.js
+  examples/sourcemapped/output/webpack3-babel6/eval-maps.js.map
+  examples/sourcemapped/output/webpack3-babel6/for-loops.js
+  examples/sourcemapped/output/webpack3-babel6/for-loops.js.map
+  examples/sourcemapped/output/webpack3-babel6/for-of.js
+  examples/sourcemapped/output/webpack3-babel6/for-of.js.map
+  examples/sourcemapped/output/webpack3-babel6/functions.js
+  examples/sourcemapped/output/webpack3-babel6/functions.js.map
+  examples/sourcemapped/output/webpack3-babel6/lex-and-nonlex.js
+  examples/sourcemapped/output/webpack3-babel6/lex-and-nonlex.js.map
+  examples/sourcemapped/output/webpack3-babel6/line-start-bindings-es6.js
+  examples/sourcemapped/output/webpack3-babel6/line-start-bindings-es6.js.map
+  examples/sourcemapped/output/webpack3-babel6/modules-cjs.js
+  examples/sourcemapped/output/webpack3-babel6/modules-cjs.js.map
+  examples/sourcemapped/output/webpack3-babel6/out-of-order-declarations-cjs.js
+  examples/sourcemapped/output/webpack3-babel6/out-of-order-declarations-cjs.js.map
+  examples/sourcemapped/output/webpack3-babel6/shadowed-vars.js
+  examples/sourcemapped/output/webpack3-babel6/shadowed-vars.js.map
+  examples/sourcemapped/output/webpack3-babel6/step-over-for-of.js
+  examples/sourcemapped/output/webpack3-babel6/step-over-for-of.js.map
+  examples/sourcemapped/output/webpack3-babel6/step-over-for-of-array.js
+  examples/sourcemapped/output/webpack3-babel6/step-over-for-of-array.js.map
+  examples/sourcemapped/output/webpack3-babel6/step-over-for-of-array-closure.js
+  examples/sourcemapped/output/webpack3-babel6/step-over-for-of-array-closure.js.map
+  examples/sourcemapped/output/webpack3-babel6/step-over-for-of-closure.js
+  examples/sourcemapped/output/webpack3-babel6/step-over-for-of-closure.js.map
+  examples/sourcemapped/output/webpack3-babel6/step-over-function-params.js
+  examples/sourcemapped/output/webpack3-babel6/step-over-function-params.js.map
+  examples/sourcemapped/output/webpack3-babel6/step-over-regenerator-await.js
+  examples/sourcemapped/output/webpack3-babel6/step-over-regenerator-await.js.map
+  examples/sourcemapped/output/webpack3-babel6/switches.js
+  examples/sourcemapped/output/webpack3-babel6/switches.js.map
+  examples/sourcemapped/output/webpack3-babel6/this-arguments-bindings.js
+  examples/sourcemapped/output/webpack3-babel6/this-arguments-bindings.js.map
+  examples/sourcemapped/output/webpack3-babel6/try-catches.js
+  examples/sourcemapped/output/webpack3-babel6/try-catches.js.map
+  examples/sourcemapped/output/webpack3-babel6/type-module.js
+  examples/sourcemapped/output/webpack3-babel6/type-module.js.map
+  examples/sourcemapped/output/webpack3-babel6/type-script-cjs.js
+  examples/sourcemapped/output/webpack3-babel6/type-script-cjs.js.map
+  examples/sourcemapped/output/webpack3-babel6/webpack-functions.js
+  examples/sourcemapped/output/webpack3-babel6/webpack-functions.js.map
+  examples/sourcemapped/output/webpack3-babel6/webpack-line-mappings.js
+  examples/sourcemapped/output/webpack3-babel6/webpack-line-mappings.js.map
+  examples/sourcemapped/output/rollup/classes.js
+  examples/sourcemapped/output/rollup/classes.js.map
+  examples/sourcemapped/output/rollup/esmodules.js
+  examples/sourcemapped/output/rollup/esmodules.js.map
+  examples/sourcemapped/output/rollup/esmodules-es6.js
+  examples/sourcemapped/output/rollup/esmodules-es6.js.map
+  examples/sourcemapped/output/rollup/eval-maps.js
+  examples/sourcemapped/output/rollup/eval-maps.js.map
+  examples/sourcemapped/output/rollup/for-loops.js
+  examples/sourcemapped/output/rollup/for-loops.js.map
+  examples/sourcemapped/output/rollup/for-of.js
+  examples/sourcemapped/output/rollup/for-of.js.map
+  examples/sourcemapped/output/rollup/functions.js
+  examples/sourcemapped/output/rollup/functions.js.map
+  examples/sourcemapped/output/rollup/lex-and-nonlex.js
+  examples/sourcemapped/output/rollup/lex-and-nonlex.js.map
+  examples/sourcemapped/output/rollup/line-start-bindings-es6.js
+  examples/sourcemapped/output/rollup/line-start-bindings-es6.js.map
+  examples/sourcemapped/output/rollup/shadowed-vars.js
+  examples/sourcemapped/output/rollup/shadowed-vars.js.map
+  examples/sourcemapped/output/rollup/step-over-for-of.js
+  examples/sourcemapped/output/rollup/step-over-for-of.js.map
+  examples/sourcemapped/output/rollup/step-over-for-of-array.js
+  examples/sourcemapped/output/rollup/step-over-for-of-array.js.map
+  examples/sourcemapped/output/rollup/step-over-for-of-array-closure.js
+  examples/sourcemapped/output/rollup/step-over-for-of-array-closure.js.map
+  examples/sourcemapped/output/rollup/step-over-for-of-closure.js
+  examples/sourcemapped/output/rollup/step-over-for-of-closure.js.map
+  examples/sourcemapped/output/rollup/step-over-function-params.js
+  examples/sourcemapped/output/rollup/step-over-function-params.js.map
+  examples/sourcemapped/output/rollup/step-over-regenerator-await.js
+  examples/sourcemapped/output/rollup/step-over-regenerator-await.js.map
+  examples/sourcemapped/output/rollup/switches.js
+  examples/sourcemapped/output/rollup/switches.js.map
+  examples/sourcemapped/output/rollup/this-arguments-bindings.js
+  examples/sourcemapped/output/rollup/this-arguments-bindings.js.map
+  examples/sourcemapped/output/rollup/try-catches.js
+  examples/sourcemapped/output/rollup/try-catches.js.map
+  examples/sourcemapped/output/rollup/type-module.js
+  examples/sourcemapped/output/rollup/type-module.js.map
+  examples/sourcemapped/output/rollup/typescript-classes.js
+  examples/sourcemapped/output/rollup/typescript-classes.js.map
+  examples/sourcemapped/output/rollup/webpack-functions.js
+  examples/sourcemapped/output/rollup/webpack-functions.js.map
+  examples/sourcemapped/output/rollup/webpack-line-mappings.js
+  examples/sourcemapped/output/rollup/webpack-line-mappings.js.map
+  examples/sourcemapped/output/rollup-babel6/babel-bindings-with-flow.js
+  examples/sourcemapped/output/rollup-babel6/babel-bindings-with-flow.js.map
+  examples/sourcemapped/output/rollup-babel6/babel-flowtype-bindings.js
+  examples/sourcemapped/output/rollup-babel6/babel-flowtype-bindings.js.map
+  examples/sourcemapped/output/rollup-babel6/classes.js
+  examples/sourcemapped/output/rollup-babel6/classes.js.map
+  examples/sourcemapped/output/rollup-babel6/esmodules.js
+  examples/sourcemapped/output/rollup-babel6/esmodules.js.map
+  examples/sourcemapped/output/rollup-babel6/esmodules-es6.js
+  examples/sourcemapped/output/rollup-babel6/esmodules-es6.js.map
+  examples/sourcemapped/output/rollup-babel6/eval-maps.js
+  examples/sourcemapped/output/rollup-babel6/eval-maps.js.map
+  examples/sourcemapped/output/rollup-babel6/for-loops.js
+  examples/sourcemapped/output/rollup-babel6/for-loops.js.map
+  examples/sourcemapped/output/rollup-babel6/for-of.js
+  examples/sourcemapped/output/rollup-babel6/for-of.js.map
+  examples/sourcemapped/output/rollup-babel6/functions.js
+  examples/sourcemapped/output/rollup-babel6/functions.js.map
+  examples/sourcemapped/output/rollup-babel6/lex-and-nonlex.js
+  examples/sourcemapped/output/rollup-babel6/lex-and-nonlex.js.map
+  examples/sourcemapped/output/rollup-babel6/line-start-bindings-es6.js
+  examples/sourcemapped/output/rollup-babel6/line-start-bindings-es6.js.map
+  examples/sourcemapped/output/rollup-babel6/shadowed-vars.js
+  examples/sourcemapped/output/rollup-babel6/shadowed-vars.js.map
+  examples/sourcemapped/output/rollup-babel6/step-over-for-of.js
+  examples/sourcemapped/output/rollup-babel6/step-over-for-of.js.map
+  examples/sourcemapped/output/rollup-babel6/step-over-for-of-array.js
+  examples/sourcemapped/output/rollup-babel6/step-over-for-of-array.js.map
+  examples/sourcemapped/output/rollup-babel6/step-over-for-of-array-closure.js
+  examples/sourcemapped/output/rollup-babel6/step-over-for-of-array-closure.js.map
+  examples/sourcemapped/output/rollup-babel6/step-over-for-of-closure.js
+  examples/sourcemapped/output/rollup-babel6/step-over-for-of-closure.js.map
+  examples/sourcemapped/output/rollup-babel6/step-over-function-params.js
+  examples/sourcemapped/output/rollup-babel6/step-over-function-params.js.map
+  examples/sourcemapped/output/rollup-babel6/step-over-regenerator-await.js
+  examples/sourcemapped/output/rollup-babel6/step-over-regenerator-await.js.map
+  examples/sourcemapped/output/rollup-babel6/switches.js
+  examples/sourcemapped/output/rollup-babel6/switches.js.map
+  examples/sourcemapped/output/rollup-babel6/this-arguments-bindings.js
+  examples/sourcemapped/output/rollup-babel6/this-arguments-bindings.js.map
+  examples/sourcemapped/output/rollup-babel6/try-catches.js
+  examples/sourcemapped/output/rollup-babel6/try-catches.js.map
+  examples/sourcemapped/output/rollup-babel6/type-module.js
+  examples/sourcemapped/output/rollup-babel6/type-module.js.map
+  examples/sourcemapped/output/rollup-babel6/webpack-functions.js
+  examples/sourcemapped/output/rollup-babel6/webpack-functions.js.map
+  examples/sourcemapped/output/rollup-babel6/webpack-line-mappings.js
+  examples/sourcemapped/output/rollup-babel6/webpack-line-mappings.js.map
+  ## END-SOURCEMAPPED-FIXTURES
   examples/ember/quickstart/dist/index.html
   examples/ember/quickstart/dist/assets/quickstart.css
   examples/ember/quickstart/dist/assets/quickstart.js
   examples/ember/quickstart/dist/assets/quickstart.map
   examples/ember/quickstart/dist/assets/vendor.css
   examples/ember/quickstart/dist/assets/vendor.js
   examples/ember/quickstart/dist/assets/vendor.map
   examples/sourcemaps/bundle.js
--- a/devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemapped-breakpoint-console.js
+++ b/devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemapped-breakpoint-console.js
@@ -1,16 +1,17 @@
 async function evalInConsoleAtPoint(
   dbg,
+  target,
   fixture,
   { line, column },
   statements
 ) {
-  const filename = `fixtures/${fixture}/input.js`;
-  const fnName = fixture.replace(/-([a-z])/g, (s, c) => c.toUpperCase());
+  const filename = `${target}://./${fixture}/input.`;
+  const fnName = (target + "-" + fixture).replace(/-([a-z])/g, (s, c) => c.toUpperCase());
 
   await invokeWithBreakpoint(
     dbg,
     fnName,
     filename,
     { line, column },
     async () => {
       await assertConsoleEval(dbg, statements);
@@ -36,38 +37,40 @@ async function assertConsoleEval(dbg, st
   }
 }
 
 add_task(async function() {
   await pushPref("devtools.debugger.features.map-scopes", true);
 
   const dbg = await initDebugger("doc-sourcemapped.html");
 
-  await evalInConsoleAtPoint(dbg, "babel-eval-maps", { line: 14, column: 4 }, [
+  await evalInConsoleAtPoint(dbg, "webpack3-babel6", "eval-maps", { line: 14, column: 4 }, [
     "one === 1",
     "two === 4",
     "three === 5"
   ]);
 
   await evalInConsoleAtPoint(
     dbg,
-    "babel-modules-cjs",
-    { line: 20, column: 2 },
+    "webpack3-babel6",
+    "esmodules-cjs",
+    { line: 18, column: 2 },
     [
       `aDefault === "a-default"`,
       `anAliased === "an-original"`,
       `aNamed === "a-named"`,
       `aDefault2 === "a-default2"`,
       `anAliased2 === "an-original2"`,
       `aNamed2 === "a-named2"`,
       `aDefault3 === "a-default3"`,
       `anAliased3 === "an-original3"`,
       `aNamed3 === "a-named3"`
     ]
   );
 
   await evalInConsoleAtPoint(
     dbg,
-    "babel-shadowed-vars",
+    "webpack3-babel6",
+    "shadowed-vars",
     { line: 18, column: 6 },
     [`aVar === "var3"`, `aLet === "let3"`, `aConst === "const3"`]
   );
 });
--- a/devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemapped-preview.js
+++ b/devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemapped-preview.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 // Tests for preview through Babel's compile output.
 requestLongerTimeout(3);
 
-async function breakpointPreviews(dbg, fixture, { line, column }, previews) {
-  const filename = `fixtures/${fixture}/input.js`;
-  const fnName = fixture.replace(/-([a-z])/g, (s, c) => c.toUpperCase());
+async function breakpointPreviews(dbg, target, fixture, { line, column }, previews) {
+  const filename = `${target}://./${fixture}/input.`;
+  const fnName = (target + "-" + fixture).replace(/-([a-z])/g, (s, c) => c.toUpperCase());
 
   log(`Starting ${fixture} tests`);
 
   await invokeWithBreakpoint(
     dbg,
     fnName,
     filename,
     { line, column },
@@ -19,17 +19,17 @@ async function breakpointPreviews(dbg, f
       await assertPreviews(dbg, previews);
     }
   );
 
   ok(true, `Ran tests for ${fixture} at line ${line} column ${column}`);
 }
 
 function testForOf(dbg) {
-  return breakpointPreviews(dbg, "babel-for-of", { line: 5, column: 4 }, [
+  return breakpointPreviews(dbg, "webpack3-babel6", "for-of", { line: 5, column: 4 }, [
     {
       line: 5,
       column: 7,
       expression: "doThing;",
       result: "doThing(arg)"
     },
     {
       line: 5,
@@ -44,17 +44,18 @@ function testForOf(dbg) {
       result: "doThing(arg)"
     }
   ]);
 }
 
 function testShadowing(dbg) {
   return breakpointPreviews(
     dbg,
-    "babel-shadowed-vars",
+    "webpack3-babel6",
+    "shadowed-vars",
     { line: 18, column: 6 },
     [
       // These aren't what the user would expect, but we test them anyway since
       // they reflect what this actually returns. These shadowed bindings read
       // the binding closest to the current frame's scope even though their
       // actual value is different.
       {
         line: 2,
@@ -112,76 +113,70 @@ function testShadowing(dbg) {
         expression: "_aConst2;",
         result: '"const3"'
       }
     ]
   );
 }
 
 function testImportedBindings(dbg) {
-  return breakpointPreviews(dbg, "babel-modules-cjs", { line: 20, column: 2 }, [
+  return breakpointPreviews(dbg, "webpack3-babel6", "esmodules-cjs", { line: 20, column: 2 }, [
     {
-      line: 22,
+      line: 20,
       column: 16,
       expression: "_mod2.default;",
       result: '"a-default"'
     },
     {
-      line: 23,
+      line: 21,
       column: 16,
       expression: "_mod4.original;",
       result: '"an-original"'
     },
     {
-      line: 24,
+      line: 22,
       column: 16,
       expression: "_mod3.aNamed;",
       result: '"a-named"'
     },
     {
-      line: 25,
+      line: 23,
       column: 16,
       expression: "_mod3.aNamed;",
       result: '"a-named"'
     },
     {
-      line: 26,
+      line: 24,
       column: 16,
       expression: "aNamespace;",
       fields: [["aNamed", "a-named"], ["default", "a-default"]]
     },
     {
-      line: 31,
+      line: 29,
       column: 20,
       expression: "_mod7.default;",
       result: '"a-default2"'
     },
     {
-      line: 32,
+      line: 30,
       column: 20,
       expression: "_mod9.original;",
       result: '"an-original2"'
     },
     {
-      line: 33,
+      line: 31,
       column: 20,
       expression: "_mod8.aNamed2;",
       result: '"a-named2"'
     },
     {
-      line: 34,
+      line: 32,
       column: 20,
       expression: "_mod8.aNamed2;",
       result: '"a-named2"'
-    },
-    {
-      line: 35,
-      column: 20,
-      expression: "aNamespace2;",
-      fields: [["aNamed", "a-named2"], ["default", "a-default2"]]
     }
   ]);
 }
 
 add_task(async function() {
   await pushPref("devtools.debugger.features.map-scopes", true);
   const dbg = await initDebugger("doc-sourcemapped.html");
 
--- a/devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemapped-scopes.js
+++ b/devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemapped-scopes.js
@@ -1,19 +1,19 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 // This test can be really slow on debug platforms and should be split.
-requestLongerTimeout(6);
+requestLongerTimeout(20);
 
 // Tests loading sourcemapped sources for Babel's compile output.
 
-async function breakpointScopes(dbg, fixture, { line, column }, scopes) {
-  const filename = `fixtures/${fixture}/input.`;
-  const fnName = fixture.replace(/-([a-z])/g, (s, c) => c.toUpperCase());
+async function breakpointScopes(dbg, target, fixture, { line, column }, scopes) {
+  const filename = `${target}://./${fixture}/input.`;
+  const fnName = pairToFnName(target, fixture);
 
   await invokeWithBreakpoint(
     dbg,
     fnName,
     filename,
     { line, column },
     async () => {
       await assertScopes(dbg, scopes);
@@ -23,470 +23,857 @@ async function breakpointScopes(dbg, fix
   ok(true, `Ran tests for ${fixture} at line ${line} column ${column}`);
 }
 
 add_task(async function() {
   await pushPref("devtools.debugger.features.map-scopes", true);
 
   const dbg = await initDebugger("doc-sourcemapped.html");
 
-  await breakpointScopes(dbg, "babel-bindings-with-flow", { line: 9, column: 2 }, [
-    "root",
-    ["value", '"a-named"'],
-    "Module",
-    ["aNamed", "Getter"],
-    "root()",
-  ]);
+  await testBabelBindingsWithFlow(dbg);
+  await testBabelFlowtypeBindings(dbg);
+  await testEvalMaps(dbg);
+  await testForOf(dbg);
+  await testShadowedVars(dbg);
+  await testLineStartBindingsES6(dbg);
+  await testThisArgumentsBindings(dbg);
+  await testClasses(dbg);
+  await testForLoops(dbg);
+  await testFunctions(dbg);
+  await testSwitches(dbg);
+  await testTryCatches(dbg);
+  await testLexAndNonlex(dbg);
+  await testTypescriptClasses(dbg);
+  await testTypeModule(dbg);
+  await testTypeScriptCJS(dbg);
+  await testOutOfOrderDeclarationsCJS(dbg);
+  await testCommonJS(dbg);
+  await testWebpackLineMappings(dbg);
+  await testWebpackFunctions(dbg);
+  await testESModules(dbg);
+  await testESModulesCJS(dbg);
+  await testESModulesES6(dbg);
+});
+
+function targetToFlags(target) {
+  const isRollup = target.startsWith("rollup");
+  const isWebpack = target.startsWith("webpack");
+  const hasBabel = target.includes("-babel");
+
+  // Rollup removes lots of things as dead code, so they are marked as optimized out.
+  const rollupOptimized = isRollup ? "(optimized away)" : null;
+  const webpackImportGetter = isWebpack ? "Getter" : null;
+  const maybeLineStart = hasBabel ? col => col : col => 0;
+
+  return { isRollup, isWebpack, rollupOptimized, webpackImportGetter, maybeLineStart };
+}
+function pairToFnName(target, fixture) {
+  return (target + "-" + fixture).replace(/-([a-z])/g, (s, c) => c.toUpperCase());
+}
+
+function webpackModule(target, fixture, optimizedOut) {
+  return [
+    pairToFnName(target, fixture),
+    ["__webpack_exports__", optimizedOut ? "(optimized away)" : "{\u2026}"],
+    optimizedOut ? ["__webpack_require__", "(optimized away)"] : "__webpack_require__()",
+    ["arguments", optimizedOut ? "(unavailable)" : "Arguments"],
+  ];
+}
 
-  await breakpointScopes(dbg, "typescript-classes", { line: 50, column: 2 }, [
-    "Module",
-    "AnotherThing()",
-    "AppComponent()",
-    "decoratorFactory()",
-    "def()",
-    "ExportedOther()",
-    "ExpressionClass:Foo()",
-    "fn()",
-    ["ns", "{\u2026}"],
-    "SubDecl()",
-    "SubVar:SubExpr()"
+async function testBabelBindingsWithFlow(dbg) {
+  // Flow is not available on the non-babel builds.
+  for (const target of [
+    "rollup-babel6",
+    "webpack3-babel6",
+  ]) {
+    const { webpackImportGetter } = targetToFlags(target);
+
+    await breakpointScopes(dbg, target, "babel-bindings-with-flow", { line: 9, column: 2 }, [
+      "root",
+      ["value", '"a-named"'],
+      "Module",
+      ["aNamed", webpackImportGetter || '"a-named"'],
+      "root()",
+    ]);
+  }
+}
+
+async function testBabelFlowtypeBindings(dbg) {
+  // Flow is not available on the non-babel builds.
+  for (const target of [
+    "rollup-babel6",
+    "webpack3-babel6",
+  ]) {
+    const { webpackImportGetter } = targetToFlags(target);
+
+    await breakpointScopes(
+      dbg,
+      target,
+      "babel-flowtype-bindings",
+      { line: 9, column: 2 },
+      [
+        "Module",
+        ["aConst", '"a-const"'],
+        ["Four", webpackImportGetter || '"one"'],
+        "root()"
+      ]
+    );
+  }
+}
+
+async function testEvalMaps(dbg) {
+  // At times, this test has been a bit flakey due to the inlined source map
+  // never loading. I'm not sure what causes that. If we observe flakiness in CI,
+  // we should consider disabling this test for now.
+
+  await breakpointScopes(dbg, "webpack3", "eval-maps", { line: 14, column: 0 }, [
+    "Block",
+    ["<this>", "Window"],
+    ["three", "5"],
+    ["two", "4"],
+    "Block",
+    ["three", "3"],
+    ["two", "2"],
+    "Block",
+    ["arguments", "Arguments"],
+    ["one", "1"],
+    ...webpackModule("webpack3", "eval-maps", true /* optimized out */),
+    ["module", "(optimized away)"],
+    "root",
   ]);
 
-  await breakpointScopes(dbg, "babel-eval-maps", { line: 14, column: 4 }, [
+  for (const target of [
+    "rollup",
+    "rollup-babel6",
+    "webpack3-babel6",
+  ]) {
+    const { rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
+
+    await breakpointScopes(dbg, target, "eval-maps", { line: 14, column: maybeLineStart(4) }, [
+      "Block",
+      ["three", "5"],
+      ["two", "4"],
+      "Function Body",
+      ["three", rollupOptimized || "3"],
+      ["two", rollupOptimized || "2"],
+      "root",
+      ["one", "1"],
+      "Module",
+      "root",
+    ]);
+  }
+}
+
+async function testForOf(dbg) {
+  await breakpointScopes(dbg, "webpack3", "for-of", { line: 5, column: 0 }, [
     "Block",
-    ["three", "5"],
-    ["two", "4"],
-    "Function Body",
-    ["three", "3"],
-    ["two", "2"],
-    "root",
-    ["one", "1"],
-    "Module",
-    "root()"
+    ["<this>", "Window"],
+    ["x", "1"],
+    "Block",
+    ["arguments", "Arguments"],
+    "doThing()",
+    "Block",
+    "mod",
+    ...webpackModule("webpack3", "for-of", true /* optimizedOut */),
+    "forOf",
+    "module"
   ]);
 
-  await breakpointScopes(dbg, "babel-for-of", { line: 5, column: 4 }, [
-    "For",
-    ["x", "1"],
-    "forOf",
-    "doThing()",
-    "Module",
-    "forOf",
-    "mod"
-  ]);
+  for (const target of [
+    "rollup",
+    "rollup-babel6",
+    "webpack3-babel6",
+  ]) {
+    const { rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
 
-  await breakpointScopes(dbg, "babel-shadowed-vars", { line: 18, column: 6 }, [
+    await breakpointScopes(dbg, target, "for-of", { line: 5, column: maybeLineStart(4) }, [
+      "For",
+      ["x", "1"],
+      "forOf",
+      "doThing()",
+      "Module",
+      "forOf",
+      "mod"
+    ]);
+  }
+}
+
+async function testShadowedVars(dbg) {
+  await breakpointScopes(dbg, "webpack3", "shadowed-vars", { line: 18, column: 0 }, [
     "Block",
+    ["<this>", "Window"],
     ["aConst", '"const3"'],
     ["aLet", '"let3"'],
+
     "Block",
     ["aConst", '"const2"'],
     ["aLet", '"let2"'],
-    "Outer:_Outer()",
-    "Function Body",
+    "Outer()",
+
+    "Block",
     ["aConst", '"const1"'],
     ["aLet", '"let1"'],
     "Outer()",
-    "default",
-    ["aVar", '"var3"']
+
+    "Block",
+    ["arguments", "Arguments"],
+    ["aVar", '"var3"'],
+
+    ...webpackModule("webpack3", "shadowed-vars", true /* optimizedOut */),
+    ["module", "(optimized away)"],
   ]);
 
+  for (const target of [
+    "rollup",
+    "rollup-babel6",
+    "webpack3-babel6",
+  ]) {
+    const { rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
+
+    await breakpointScopes(dbg, target, "shadowed-vars", { line: 18, column: maybeLineStart(6) }, [
+      "Block",
+      ["aConst", rollupOptimized || '"const3"'],
+      ["aLet", rollupOptimized || '"let3"'],
+      "Block",
+      ["aConst", rollupOptimized || '"const2"'],
+      ["aLet", rollupOptimized || '"let2"'],
+      rollupOptimized ? ["Outer", rollupOptimized ] : "Outer:_Outer()",
+      "Function Body",
+      ["aConst", rollupOptimized || '"const1"'],
+      ["aLet", rollupOptimized || '"let1"'],
+      rollupOptimized ? ["Outer", rollupOptimized ] : "Outer()",
+      "default",
+      ["aVar", rollupOptimized || '"var3"']
+    ]);
+  }
+}
+
+async function testLineStartBindingsES6(dbg) {
   await breakpointScopes(
     dbg,
-    "babel-line-start-bindings-es6",
-    { line: 19, column: 4 },
+    "webpack3",
+    "line-start-bindings-es6",
+    { line: 19, column: 0 },
     [
-      "Function Body",
+      "Block",
       ["<this>", "{\u2026}"],
       ["one", "1"],
       ["two", "2"],
-      "root",
+      "Block",
+      ["arguments", "Arguments"],
+
+      "Block",
       ["aFunc", "(optimized away)"],
-      "Module",
+      ["arguments", "(unavailable)"],
+
+      ...webpackModule("webpack3", "line-start-bindings-es6", true /* optimizedOut */),
+      ["module", "(optimized away)"],
       "root()"
     ]
   );
 
+  for (const target of [
+    "rollup",
+    "rollup-babel6",
+    "webpack3-babel6",
+  ]) {
+    const { rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
+
+    await breakpointScopes(
+      dbg,
+      target,
+      "line-start-bindings-es6",
+      { line: 19, column: maybeLineStart(4) },
+      [
+        "Function Body",
+        ["<this>", "{\u2026}"],
+        ["one", rollupOptimized || "1"],
+        ["two", rollupOptimized || "2"],
+        "root",
+        ["aFunc", "(optimized away)"],
+        "Module",
+        "root()"
+      ]
+    );
+  }
+}
+
+async function testThisArgumentsBindings(dbg) {
   await breakpointScopes(
     dbg,
-    "babel-this-arguments-bindings",
-    { line: 4, column: 4 },
+    "webpack3",
+    "this-arguments-bindings",
+    { line: 4, column: 0 },
     [
-      "Function Body",
+      "Block",
       ["<this>", '"this-value"'],
-      ["arrow", "undefined"],
+      ["arrow", "(uninitialized)"],
       "fn",
       ["arg", '"arg-value"'],
       ["arguments", "Arguments"],
       "root",
+      ["arguments", "Arguments"],
       "fn()",
-      "Module",
+      ...webpackModule("webpack3", "this-arguments-bindings", true /* optimizedOut */),
+      ["module", "(optimized away)"],
       "root()"
     ]
   );
 
   await breakpointScopes(
     dbg,
-    "babel-this-arguments-bindings",
-    { line: 8, column: 6 },
+    "webpack3",
+    "this-arguments-bindings",
+    { line: 8, column: 0 },
     [
-      "arrow",
+      "Block",
       ["<this>", '"this-value"'],
       ["argArrow", '"arrow-arg"'],
-      "Function Body",
-      "arrow()",
+      ["arguments", "Arguments"],
+      "Block",
+      ["arrow", "(optimized away)"],
       "fn",
       ["arg", '"arg-value"'],
       ["arguments", "Arguments"],
       "root",
+      ["arguments", "Arguments"],
       "fn()",
-      "Module",
+      ...webpackModule("webpack3", "this-arguments-bindings", true /* optimizedOut */),
+      ["module", "(optimized away)"],
       "root()"
     ]
   );
 
-  await breakpointScopes(dbg, "babel-modules-cjs", { line: 20, column: 2 }, [
-    "Module",
-    ["aDefault", '"a-default"'],
-    ["aDefault2", '"a-default2"'],
-    ["aDefault3", '"a-default3"'],
-    ["anAliased", '"an-original"'],
-    ["anAliased2", '"an-original2"'],
-    ["anAliased3", '"an-original3"'],
-    ["aNamed", '"a-named"'],
-    ["aNamed2", '"a-named2"'],
-    ["aNamed3", '"a-named3"'],
-    ["aNamespace", "{\u2026}"],
-    ["aNamespace2", "{\u2026}"],
-    ["aNamespace3", "{\u2026}"],
-    ["anotherNamed", '"a-named"'],
-    ["anotherNamed2", '"a-named2"'],
-    ["anotherNamed3", '"a-named3"'],
-    ["example", "(optimized away)"],
-    ["optimizedOut", "(optimized away)"],
+  for (const target of [
+    "rollup",
+    "rollup-babel6",
+    "webpack3-babel6",
+  ]) {
+    const { rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
+
+    await breakpointScopes(
+      dbg,
+      target,
+      "this-arguments-bindings",
+      { line: 4, column: maybeLineStart(4) },
+      [
+        "Function Body",
+        ["<this>", '"this-value"'],
+        ["arrow", target === "rollup" ? "(uninitialized)" : "undefined"],
+        "fn",
+        ["arg", '"arg-value"'],
+        ["arguments", "Arguments"],
+        "root",
+        "fn()",
+        "Module",
+        "root()"
+      ]
+    );
+
+    await breakpointScopes(
+      dbg,
+      target,
+      "this-arguments-bindings",
+      { line: 8, column: maybeLineStart(6) },
+      [
+        "arrow",
+        ["<this>", '"this-value"'],
+        ["argArrow", '"arrow-arg"'],
+        "Function Body",
+        target === "rollup" ? ["arrow", "(optimized away)"] : "arrow()",
+        "fn",
+        ["arg", '"arg-value"'],
+        ["arguments", "Arguments"],
+        "root",
+        "fn()",
+        "Module",
+        "root()"
+      ]
+    );
+  }
+}
+
+async function testClasses(dbg) {
+  await breakpointScopes(dbg, "webpack3", "classes", { line: 6, column: 0 }, [
+    "Block",
+    ["<this>", "{}"],
+    ["arguments", "Arguments"],
+    "Block",
+    ["Thing", "(optimized away)"],
+    "Block",
+    "Another()",
+    ["one", "1"],
+    "Thing()",
+    "Block",
+    ["arguments", "(unavailable)"],
+    ...webpackModule("webpack3", "classes", true /* optimizedOut */),
+    ["module", "(optimized away)"],
     "root()"
   ]);
 
-  await breakpointScopes(dbg, "babel-classes", { line: 6, column: 6 }, [
-    "Class",
+  await breakpointScopes(dbg, "webpack3", "classes", { line: 16, column: 0 }, [
+    "Block",
+    ["<this>", "{}"],
+    ["three", "3"],
+    ["two", "2"],
+    "Block",
+    ["arguments", "Arguments"],
+    "Block",
+    "Another()",
+    "Block",
+    "Another()",
+    ["one", "1"],
     "Thing()",
-    "Function Body",
-    "Another()",
-    "one",
-    "Thing()",
-    "Module",
+    "Block",
+    ["arguments", "(unavailable)"],
+    ...webpackModule("webpack3", "classes", true /* optimizedOut */),
+    ["module", "(optimized away)"],
     "root()"
   ]);
 
-  await breakpointScopes(dbg, "babel-classes", { line: 16, column: 6 }, [
-    "Function Body",
-    ["three", "3"],
-    ["two", "2"],
-    "Class",
-    "Another()",
-    "Function Body",
-    "Another()",
-    ["one", "1"],
-    "Thing()",
-    "Module",
+  for (const target of [
+    "rollup",
+    "rollup-babel6",
+    "webpack3-babel6",
+  ]) {
+    const { rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
+
+    await breakpointScopes(dbg, target, "classes", { line: 6, column: maybeLineStart(6) }, [
+      "Class",
+      target === "rollup" ? ["Thing", "(optimized away)"] : "Thing()",
+      "Function Body",
+      "Another()",
+      "one",
+      target === "rollup" ? ["Thing", "(optimized away)"] : "Thing()",
+      "Module",
+      "root()"
+    ]);
+
+    await breakpointScopes(dbg, target, "classes", { line: 16, column: maybeLineStart(6) }, [
+      "Function Body",
+      ["three", rollupOptimized || "3"],
+      ["two", rollupOptimized || "2"],
+      "Class",
+      "Another()",
+      "Function Body",
+      "Another()",
+      ["one", "1"],
+      "Thing()",
+      "Module",
+      "root()"
+    ]);
+  }
+}
+
+async function testForLoops(dbg) {
+  await breakpointScopes(dbg, "webpack3", "for-loops", { line: 5, column: 0 }, [
+    "Block",
+    ["<this>", "Window"],
+    ["i", "1"],
+    "Block",
+    ["i", "0"],
+    "Block",
+    ["arguments", "Arguments"],
+    ...webpackModule("webpack3", "for-loops", true /* optimizedOut */),
+    ["module", "(optimized away)"],
     "root()"
   ]);
-
-  await breakpointScopes(dbg, "rollup-babel-classes", { line: 6, column: 6 }, [
-    "Class",
-    "Thing()",
-    "Function Body",
-    "Another()",
-    "one",
-    "Thing()",
-    "Module",
+  await breakpointScopes(dbg, "webpack3", "for-loops", { line: 9, column: 0 }, [
+    "Block",
+    ["<this>", "Window"],
+    ["i", '"2"'],
+    "Block",
+    ["i", "0"],
+    "Block",
+    ["arguments", "Arguments"],
+    ...webpackModule("webpack3", "for-loops", true /* optimizedOut */),
+    ["module", "(optimized away)"],
+    "root()"
+  ]);
+  await breakpointScopes(dbg, "webpack3", "for-loops", { line: 13, column: 0 }, [
+    "Block",
+    ["<this>", "Window"],
+    ["i", "3"],
+    "Block",
+    ["i", "0"],
+    "Block",
+    ["arguments", "Arguments"],
+    ...webpackModule("webpack3", "for-loops", true /* optimizedOut */),
+    ["module", "(optimized away)"],
     "root()"
   ]);
 
-  await breakpointScopes(dbg, "rollup-babel-classes", { line: 16, column: 6 }, [
-    "Function Body",
-    // Rollup removes these as dead code, so they are marked as optimized out.
-    ["three", "(optimized away)"],
-    ["two", "(optimized away)"],
-    "Class",
-    "Another()",
-    "Function Body",
-    "Another()",
-    ["one", "1"],
-    "Thing()",
-    "Module",
+  for (const target of [
+    "rollup",
+    "rollup-babel6",
+    "webpack3-babel6",
+  ]) {
+    const { rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
+
+    await breakpointScopes(dbg, target, "for-loops", { line: 5, column: maybeLineStart(4) }, [
+      "For",
+      ["i", "1"],
+      "Function Body",
+      ["i", rollupOptimized || "0"],
+      "Module",
+      "root()"
+    ]);
+    await breakpointScopes(dbg, target, "for-loops", { line: 9, column: maybeLineStart(4) }, [
+      "For",
+      ["i", '"2"'],
+      "Function Body",
+      ["i", rollupOptimized || "0"],
+      "Module",
+      "root()"
+    ]);
+    await breakpointScopes(dbg, target, "for-loops", { line: 13, column: maybeLineStart(4) }, [
+      "For",
+      ["i", target === "rollup" ? "3" : rollupOptimized || "3"],
+      "Function Body",
+      ["i", rollupOptimized || "0"],
+      "Module",
+      "root()"
+    ]);
+  }
+}
+
+async function testFunctions(dbg) {
+  await breakpointScopes(dbg, "webpack3", "functions", { line: 6, column: 0 }, [
+    "Block",
+    ["<this>", "(optimized away)"],
+    ["arguments", "Arguments"],
+    ["p3", "undefined"],
+    "Block",
+    "arrow()",
+    "inner",
+    ["arguments", "Arguments"],
+    ["p2", "undefined"],
+    "Block",
+    "inner()",
+    "Block",
+    ["inner", "(optimized away)"],
+    "decl",
+    ["arguments", "Arguments"],
+    ["p1", "undefined"],
+    "root",
+    ["arguments", "Arguments"],
+    "decl()",
+    ...webpackModule("webpack3", "functions", true /* optimizedOut */),
+    ["module", "(optimized away)"],
     "root()"
   ]);
 
-  await breakpointScopes(dbg, "babel-for-loops", { line: 5, column: 4 }, [
-    "For",
-    ["i", "1"],
-    "Function Body",
-    ["i", "0"],
-    "Module",
+  for (const target of [
+    "rollup",
+    "rollup-babel6",
+    "webpack3-babel6",
+  ]) {
+    const { rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
+
+    await breakpointScopes(dbg, target, "functions", { line: 6, column: maybeLineStart(8) }, [
+      "arrow",
+      ["p3", "undefined"],
+      "Function Body",
+      "arrow()",
+      "inner",
+      ["p2", "undefined"],
+      "Function Expression",
+      "inner()",
+      "Function Body",
+      target === "rollup" ? ["inner", "(optimized away)"] : "inner()",
+      "decl",
+      ["p1", "undefined"],
+      "root",
+      "decl()",
+      "Module",
+      "root()"
+    ]);
+  }
+}
+
+async function testSwitches(dbg) {
+  await breakpointScopes(dbg, "webpack3", "switches", { line: 7, column: 0 }, [
+    "Block",
+    ["<this>", "Window"],
+    ["val", "2"],
+    "Block",
+    ["val", "1"],
+    "Block",
+    ["arguments", "Arguments"],
+    ...webpackModule("webpack3", "switches", true /* optimizedOut */),
+    ["module", "(optimized away)"],
     "root()"
   ]);
 
-  await breakpointScopes(dbg, "babel-for-loops", { line: 9, column: 4 }, [
-    "For",
-    ["i", '"2"'],
-    "Function Body",
-    ["i", "0"],
-    "Module",
+  await breakpointScopes(dbg, "webpack3", "switches", { line: 10, column: 0 }, [
+    "Block",
+    ["<this>", "Window"],
+    ["val", "3"],
+    "Block",
+    ["val", "2"],
+    "Block",
+    ["val", "1"],
+    "Block",
+    ["arguments", "Arguments"],
+    ...webpackModule("webpack3", "switches", true /* optimizedOut */),
+    ["module", "(optimized away)"],
     "root()"
   ]);
 
-  await breakpointScopes(dbg, "babel-for-loops", { line: 13, column: 4 }, [
-    "For",
-    ["i", "3"],
-    "Function Body",
-    ["i", "0"],
-    "Module",
+  for (const target of [
+    "rollup",
+    "rollup-babel6",
+    "webpack3-babel6",
+  ]) {
+    const { rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
+
+    await breakpointScopes(dbg, target, "switches", { line: 7, column: maybeLineStart(6) }, [
+      "Switch",
+      ["val", rollupOptimized || "2"],
+      "Function Body",
+      ["val", rollupOptimized || "1"],
+      "Module",
+      "root()"
+    ]);
+
+    await breakpointScopes(dbg, target, "switches", { line: 10, column: maybeLineStart(6) }, [
+      "Block",
+      ["val", rollupOptimized || "3"],
+      "Switch",
+      ["val", rollupOptimized || "2"],
+      "Function Body",
+      ["val", rollupOptimized || "1"],
+      "Module",
+      "root()"
+    ]);
+  }
+}
+
+async function testTryCatches(dbg) {
+  await breakpointScopes(dbg, "webpack3", "try-catches", { line: 8, column: 0 }, [
+    "Block",
+    ["<this>", "Window"],
+    ["two", "2"],
+    "Block",
+    ["err", '"AnError"'],
+    "Block",
+    ["one", "1"],
+    "Block",
+    ["arguments", "Arguments"],
+    ...webpackModule("webpack3", "try-catches", true /* optimizedOut */),
+    ["module", "(optimized away)"],
     "root()"
   ]);
 
-  await breakpointScopes(dbg, "babel-functions", { line: 6, column: 8 }, [
-    "arrow",
-    ["p3", "undefined"],
-    "Function Body",
-    "arrow()",
-    "inner",
-    ["p2", "undefined"],
-    "Function Expression",
-    "inner()",
-    "Function Body",
-    "inner()",
-    "decl",
-    ["p1", "undefined"],
-    "root",
-    "decl()",
-    "Module",
+  for (const target of [
+    "rollup",
+    "rollup-babel6",
+    "webpack3-babel6",
+  ]) {
+    const { rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
+
+    await breakpointScopes(dbg, target, "try-catches", { line: 8, column: maybeLineStart(4) }, [
+      "Block",
+      ["two", rollupOptimized || "2"],
+      "Catch",
+      ["err", '"AnError"'],
+      "Function Body",
+      ["one", rollupOptimized || "1"],
+      "Module",
+      "root()"
+    ]);
+  }
+}
+
+async function testLexAndNonlex(dbg) {
+  await breakpointScopes(dbg, "webpack3", "lex-and-nonlex", { line: 3, column: 0 }, [
+    "Block",
+    ["<this>", "undefined"],
+    ["arguments", "Arguments"],
+    "Block",
+    "Thing()",
+    "Block",
+    ["arguments", "(unavailable)"],
+    ["someHelper", "(optimized away)"],
+    ...webpackModule("webpack3", "lex-and-nonlex", true /* optimizedOut */),
+    ["module", "(optimized away)"],
     "root()"
   ]);
 
-  await breakpointScopes(dbg, "babel-type-module", { line: 7, column: 2 }, [
-    "Module",
+  for (const target of [
+    "rollup",
+    "rollup-babel6",
+    "webpack3-babel6",
+  ]) {
+    const { rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
+
+    await breakpointScopes(dbg, target, "lex-and-nonlex", { line: 3, column: maybeLineStart(4) }, [
+      "Function Body",
+      "Thing()",
+      "root",
+      target === "rollup" ? ["someHelper", "(optimized away)"] : "someHelper()",
+      "Module",
+      "root()"
+    ]);
+  }
+}
+
+async function testTypescriptClasses(dbg) {
+  // Typescript is not available on the Babel builds.
+  for (const target of [
+    "webpack3",
+    "rollup",
+  ]) {
+    const { isRollup, rollupOptimized } = targetToFlags(target);
+
+    await breakpointScopes(dbg, target, "typescript-classes", { line: 50, column: 2 }, [
+      "Module",
+      "AnotherThing()",
+      "AppComponent()",
+      "decoratorFactory()",
+      rollupOptimized ? ["def", rollupOptimized] : "def()",
+      rollupOptimized ? ["ExportedOther", rollupOptimized] : "ExportedOther()",
+      rollupOptimized ? ["ExpressionClass", rollupOptimized] : "ExpressionClass:Foo()",
+      "fn()",
+      // Rollup optimizes out the 'ns' reference here, but when it does, it leave a mapping
+      // pointed at a location that is super weird, so it ends up being unmapped instead
+      // be "(optimized out)".
+      ["ns", isRollup ? "(unmapped)" : "{\u2026}"],
+      "SubDecl()",
+      "SubVar:SubExpr()"
+    ]);
+  }
+}
+
+async function testTypeModule(dbg) {
+  await breakpointScopes(dbg, "webpack3", "type-module", { line: 7, column: 0 }, [
+    "Block",
+    ["<this>", "Window"],
+    ["arguments", "Arguments"],
+    "Block",
     ["alsoModuleScoped", "2"],
-    ["moduleScoped", "1"],
-    "thirdModuleScoped()"
-  ]);
-
-  await breakpointScopes(dbg, "babel-type-script", { line: 7, column: 2 }, []);
-
-  await breakpointScopes(dbg, "babel-commonjs", { line: 7, column: 2 }, [
-    "Module",
-    ["alsoModuleScoped", "2"],
+    ...webpackModule("webpack3", "type-module", true /* optimizedOut */),
+    ["module", "(optimized away)"],
     ["moduleScoped", "1"],
     "thirdModuleScoped()"
   ]);
 
-  await breakpointScopes(
-    dbg,
-    "babel-out-of-order-declarations-cjs",
-    { line: 8, column: 4 },
-    [
-      "callback",
-      "fn()",
-      ["val", "undefined"],
-      "root",
-      ["callback", "(optimized away)"],
-      ["fn", "(optimized away)"],
-      ["val", "(optimized away)"],
+  for (const target of [
+    "rollup",
+    "rollup-babel6",
+    "webpack3-babel6",
+  ]) {
+    const { rollupOptimized, webpackImportGetter, maybeLineStart } = targetToFlags(target);
+
+    await breakpointScopes(dbg, target, "type-module", { line: 7, column: maybeLineStart(2) }, [
       "Module",
+      ["alsoModuleScoped", "2"],
+      ["moduleScoped", "1"],
+      "thirdModuleScoped()"
+    ]);
+  }
+}
 
-      // This value is currently optimized away, which isn't 100% accurate.
-      // Because import declarations is the last thing in the file, our current
-      // logic doesn't cover _both_ 'var' statements that it generates,
-      // making us use the first, optimized-out binding. Given that imports
-      // are almost never the last thing in a file though, this is probably not
-      // a huge deal for now.
-      ["aDefault", "(optimized away)"],
-      ["root", "(optimized away)"],
-      ["val", "(optimized away)"]
-    ]
-  );
+async function testTypeScriptCJS(dbg) {
+  await breakpointScopes(dbg, "webpack3", "type-script-cjs", { line: 7, column: 0 }, [
+    "Block",
+    ["<this>", "Window"],
+    ["arguments", "Arguments"],
+    "Block",
+    "alsoModuleScopes",
 
-  await breakpointScopes(
-    dbg,
-    "babel-flowtype-bindings",
-    { line: 9, column: 2 },
-    [
-      "Module",
-      ["aConst", '"a-const"'],
-      ["Four", "Getter"],
-      "root()"
-    ]
-  );
-
-  await breakpointScopes(dbg, "babel-switches", { line: 7, column: 6 }, [
-    "Switch",
-    ["val", "2"],
-    "Function Body",
-    ["val", "1"],
-    "Module",
-    "root()"
+    "webpack3TypeScriptCjs",
+    ["arguments", "(unavailable)"],
+    ["exports", "(optimized away)"],
+    ["module", "(optimized away)"],
+    "moduleScoped",
+    "nonModules",
+    "thirdModuleScoped",
   ]);
 
-  await breakpointScopes(dbg, "babel-switches", { line: 10, column: 6 }, [
+  // CJS does not work on Rollup.
+  for (const target of [
+    "webpack3-babel6",
+  ]) {
+    await breakpointScopes(dbg, target, "type-script-cjs", { line: 7, column: 2 }, [
+      "Module",
+      "alsoModuleScopes",
+      "moduleScoped",
+      "nonModules",
+      "thirdModuleScoped",
+    ]);
+  }
+}
+
+async function testOutOfOrderDeclarationsCJS(dbg) {
+  // CJS does not work on Rollup.
+  for (const target of [
+    "webpack3-babel6",
+  ]) {
+    await breakpointScopes(
+      dbg,
+      target,
+      "out-of-order-declarations-cjs",
+      { line: 8, column: 4 },
+      [
+        "callback",
+        "fn()",
+        ["val", "undefined"],
+        "root",
+        ["callback", "(optimized away)"],
+        ["fn", "(optimized away)"],
+        ["val", "(optimized away)"],
+        "Module",
+
+        // This value is currently optimized away, which isn't 100% accurate.
+        // Because import declarations is the last thing in the file, our current
+        // logic doesn't cover _both_ 'var' statements that it generates,
+        // making us use the first, optimized-out binding. Given that imports
+        // are almost never the last thing in a file though, this is probably not
+        // a huge deal for now.
+        ["aDefault", "(optimized away)"],
+        ["root", "(optimized away)"],
+        ["val", "(optimized away)"]
+      ]
+    );
+  }
+}
+
+async function testCommonJS(dbg) {
+  await breakpointScopes(dbg, "webpack3", "modules-cjs", { line: 7, column: 0 }, [
     "Block",
-    ["val", "3"],
-    "Switch",
-    ["val", "2"],
-    "Function Body",
-    ["val", "1"],
-    "Module",
-    "root()"
+    ["<this>", "Window"],
+    ["arguments", "Arguments"],
+    "Block",
+    ["alsoModuleScoped", "2"],
+    "webpack3ModulesCjs",
+    ["arguments", "(unavailable)"],
+    ["exports", "(optimized away)"],
+    ["module", "(optimized away)"],
+    ["moduleScoped", "1"],
+    "thirdModuleScoped()"
   ]);
 
-  await breakpointScopes(dbg, "babel-try-catches", { line: 8, column: 4 }, [
-    "Block",
-    ["two", "2"],
-    "Catch",
-    ["err", '"AnError"'],
-    "Function Body",
-    ["one", "1"],
-    "Module",
-    "root()"
-  ]);
+  // CJS does not work on Rollup.
+  for (const target of [
+    "webpack3-babel6",
+  ]) {
+    await breakpointScopes(dbg, target, "modules-cjs", { line: 7, column: 2 }, [
+      "Module",
+      ["alsoModuleScoped", "2"],
+      ["moduleScoped", "1"],
+      "thirdModuleScoped()"
+    ]);
+  }
+}
 
-  await breakpointScopes(dbg, "babel-lex-and-nonlex", { line: 3, column: 4 }, [
-    "Function Body",
-    "Thing()",
-    "root",
-    "someHelper()",
-    "Module",
-    "root()"
-  ]);
-
-  await breakpointScopes(dbg, "rollup-babel-lex-and-nonlex", { line: 3, column: 4 }, [
-    "Function Body",
-    "Thing()",
-    "root",
-    "someHelper()",
-    "Module",
-    "root()"
-  ]);
-
+async function testWebpackLineMappings(dbg) {
   await breakpointScopes(
     dbg,
-    "rollup-babel-modules",
-    { line: 20, column: 2 },
-    [
-      // This test currently bails out because Babel does not map function calls
-      // fully and includes the () of the call in the range of the identifier.
-      // this means that Rollup, has to map locations for calls to imports,
-      // it can fail. This will be addressed in Babel eventually.
-      "root",
-      ["<this>", "Window"],
-      ["arguments", "Arguments"],
-      "rollupBabelModules",
-      ["aDefault", '"a-default"'],
-      ["aDefault2", '"a-default2"'],
-      ["aDefault3", '"a-default3"'],
-      ["aNamed", '"a-named"'],
-      ["aNamed$1", '(optimized away)'],
-      ["aNamed$2", '(optimized away)'],
-      ["aNamed2", '"a-named2"'],
-      ["aNamed3", '"a-named3"'],
-      ["aNamespace", "{\u2026}"],
-      ["aNamespace3", "{\u2026}"],
-      ["arguments", "(unavailable)"],
-      ["mod12", "(optimized away)"],
-      ["mod4", "(optimized away)"],
-      ["optimizedOut", "(optimized away)"],
-      ["original", '"an-original"'],
-      ["original$1", '"an-original2"'],
-      ["original$2", '"an-original3"'],
-      "root()"
-    ]
-  );
-
-  await breakpointScopes(
-    dbg,
-    "rollup-modules",
-    { line: 20, column: 0 },
-    [
-      "Module",
-      ["aDefault", '"a-default"'],
-      ["aDefault2", '"a-default2"'],
-      ["aDefault3", '"a-default3"'],
-      ["anAliased", '"an-original"'],
-      ["anAliased2", '"an-original2"'],
-      ["anAliased3", '"an-original3"'],
-      ["aNamed", '"a-named"'],
-      ["aNamed2", '"a-named2"'],
-      ["aNamed3", '"a-named3"'],
-      ["aNamespace", "{\u2026}"],
-      // ["aNamespace2", "{\u2026}"],
-      ["aNamespace3", "{\u2026}"],
-      ["anotherNamed", '"a-named"'],
-      ["anotherNamed2", '"a-named2"'],
-      ["anotherNamed3", '"a-named3"'],
-      ["example", "(optimized away)"],
-      ["optimizedOut", "(optimized away)"],
-      "root()"
-    ]
-  );
-
-  await breakpointScopes(
-    dbg,
-    "babel-modules-webpack",
-    { line: 20, column: 2 },
-    [
-      "Module",
-      ["aDefault", '"a-default"'],
-      ["aDefault2", '"a-default2"'],
-      ["aDefault3", '"a-default3"'],
-      ["anAliased", "Getter"],
-      ["anAliased2", "Getter"],
-      ["anAliased3", "Getter"],
-      ["aNamed", "Getter"],
-      ["aNamed2", "Getter"],
-      ["aNamed3", "Getter"],
-      ["aNamespace", "{\u2026}"],
-      ["aNamespace2", "{\u2026}"],
-      ["aNamespace3", "{\u2026}"],
-      ["anotherNamed", "Getter"],
-      ["anotherNamed2", "Getter"],
-      ["anotherNamed3", "Getter"],
-      ["example", "(optimized away)"],
-      ["optimizedOut", "(optimized away)"],
-      "root()"
-    ]
-  );
-
-  await breakpointScopes(
-    dbg,
-    "babel-modules-webpack-es6",
-    { line: 20, column: 2 },
-    [
-      "Module",
-      ["aDefault", '"a-default"'],
-      ["aDefault2", '"a-default2"'],
-      ["aDefault3", '"a-default3"'],
-      ["anAliased", '"an-original"'],
-      ["anAliased2", '"an-original2"'],
-      ["anAliased3", '"an-original3"'],
-      ["aNamed", '"a-named"'],
-      ["aNamed2", '"a-named2"'],
-      ["aNamed3", '"a-named3"'],
-      ["aNamespace", "{\u2026}"],
-      ["aNamespace2", "{\u2026}"],
-      ["aNamespace3", "{\u2026}"],
-      ["anotherNamed", '"a-named"'],
-      ["anotherNamed2", '"a-named2"'],
-      ["anotherNamed3", '"a-named3"'],
-      ["example", "(optimized away)"],
-      ["optimizedOut", "(optimized away)"],
-      "root()"
-    ]
-  );
-
-  await breakpointScopes(
-    dbg,
+    "webpack3",
     "webpack-line-mappings",
     { line: 11, column: 0 },
     [
       "Block",
       ["<this>", '"this-value"'],
       ["arg", '"arg-value"'],
       ["arguments", "Arguments"],
       ["inner", "undefined"],
@@ -494,31 +881,293 @@ add_task(async function() {
       ["someName", "(optimized away)"],
       "Block",
       ["two", "2"],
       "Block",
       ["one", "1"],
       "root",
       ["arguments", "Arguments"],
       "fn:someName()",
-      "webpackLineMappings",
+      "webpack3WebpackLineMappings",
       ["__webpack_exports__", "(optimized away)"],
       ["__WEBPACK_IMPORTED_MODULE_0__src_mod1__", "{\u2026}"],
       ["__webpack_require__", "(optimized away)"],
       ["arguments", "(unavailable)"],
       ["module", "(optimized away)"],
       "root()"
     ]
   );
+}
 
-  await breakpointScopes(dbg, "webpack-functions", { line: 4, column: 0 }, [
+async function testWebpackFunctions(dbg) {
+  await breakpointScopes(dbg, "webpack3", "webpack-functions", { line: 4, column: 0 }, [
     "Block",
     ["<this>", "{\u2026}"],
     ["arguments", "Arguments"],
     ["x", "4"],
-    "webpackFunctions",
+    "webpack3WebpackFunctions",
     ["__webpack_exports__", "(optimized away)"],
     ["__webpack_require__", "(optimized away)"],
     ["arguments", "(unavailable)"],
     ["module", "{\u2026}"],
     ["root", "(optimized away)"]
   ]);
-});
+}
+
+async function testESModules(dbg) {
+  await breakpointScopes(
+    dbg,
+    "webpack3",
+    "esmodules",
+    { line: 20, column: 0 },
+    [
+      "Block",
+      ["<this>", "Window"],
+      ["arguments", "Arguments"],
+      pairToFnName("webpack3", "esmodules"),
+      "__webpack_exports__",
+      "__WEBPACK_IMPORTED_MODULE_0__src_mod1__",
+      "__WEBPACK_IMPORTED_MODULE_1__src_mod2__",
+      "__WEBPACK_IMPORTED_MODULE_10__src_optimized_out__",
+      "__WEBPACK_IMPORTED_MODULE_2__src_mod3__",
+      "__WEBPACK_IMPORTED_MODULE_3__src_mod4__",
+      "__WEBPACK_IMPORTED_MODULE_4__src_mod5__",
+      "__WEBPACK_IMPORTED_MODULE_5__src_mod6__",
+      "__WEBPACK_IMPORTED_MODULE_6__src_mod7__",
+      "__WEBPACK_IMPORTED_MODULE_7__src_mod9__",
+      "__WEBPACK_IMPORTED_MODULE_8__src_mod10__",
+      "__WEBPACK_IMPORTED_MODULE_9__src_mod11__",
+      "__webpack_require__",
+      "arguments",
+      "example",
+      "module",
+      "root()",
+    ]
+  );
+
+  for (const target of [
+    "rollup",
+    "webpack3-babel6",
+  ]) {
+    const { webpackImportGetter, maybeLineStart } = targetToFlags(target);
+
+    await breakpointScopes(
+      dbg,
+      target,
+      "esmodules",
+      { line: 20, column: maybeLineStart(2) },
+      [
+        "Module",
+        ["aDefault", '"a-default"'],
+        ["aDefault2", '"a-default2"'],
+        ["aDefault3", '"a-default3"'],
+        ["anAliased", webpackImportGetter || '"an-original"'],
+        ["anAliased2", webpackImportGetter || '"an-original2"'],
+        ["anAliased3", webpackImportGetter || '"an-original3"'],
+        ["aNamed", webpackImportGetter || '"a-named"'],
+        ["aNamed2", webpackImportGetter || '"a-named2"'],
+        ["aNamed3", webpackImportGetter || '"a-named3"'],
+        ["aNamespace", "{\u2026}"],
+        ["anotherNamed", webpackImportGetter || '"a-named"'],
+        ["anotherNamed2", webpackImportGetter || '"a-named2"'],
+        ["anotherNamed3", webpackImportGetter || '"a-named3"'],
+        ["example", "(optimized away)"],
+        ["optimizedOut", "(optimized away)"],
+        "root()"
+      ]
+    );
+  }
+
+  // This test currently bails out because Babel does not map function calls
+  // fully and includes the () of the call in the range of the identifier.
+  // this means that Rollup, has to map locations for calls to imports,
+  // it can fail. This will be addressed in Babel eventually.
+  await breakpointScopes(
+    dbg,
+    "rollup-babel6",
+    "esmodules",
+    { line: 20, column: 2 },
+    [
+      "root",
+      ["<this>", "Window"],
+      ["arguments", "Arguments"],
+      "rollupBabel6Esmodules",
+      ["aDefault", '"a-default"'],
+      ["aDefault2", '"a-default2"'],
+      ["aDefault3", '"a-default3"'],
+      ["aNamed", '"a-named"'],
+      ["aNamed$1", '(optimized away)'],
+      ["aNamed2", '"a-named2"'],
+      ["aNamed3", '"a-named3"'],
+      ["aNamespace", "{\u2026}"],
+      ["arguments", "(unavailable)"],
+      ["mod4", "(optimized away)"],
+      ["original", '"an-original"'],
+      ["original$1", '"an-original2"'],
+      ["original$2", '"an-original3"'],
+      "root()"
+    ]
+  );
+}
+
+
+async function testESModulesCJS(dbg) {
+  await breakpointScopes(
+    dbg,
+    "webpack3",
+    "esmodules-cjs",
+    { line: 20, column: 0 },
+    [
+      "Block",
+      ["<this>", "Window"],
+      ["arguments", "Arguments"],
+      pairToFnName("webpack3", "esmodules-cjs"),
+      "__webpack_exports__",
+      "__WEBPACK_IMPORTED_MODULE_0__src_mod1__",
+      "__WEBPACK_IMPORTED_MODULE_1__src_mod2__",
+      "__WEBPACK_IMPORTED_MODULE_10__src_optimized_out__",
+      "__WEBPACK_IMPORTED_MODULE_2__src_mod3__",
+      "__WEBPACK_IMPORTED_MODULE_3__src_mod4__",
+      "__WEBPACK_IMPORTED_MODULE_4__src_mod5__",
+      "__WEBPACK_IMPORTED_MODULE_5__src_mod6__",
+      "__WEBPACK_IMPORTED_MODULE_6__src_mod7__",
+      "__WEBPACK_IMPORTED_MODULE_7__src_mod9__",
+      "__WEBPACK_IMPORTED_MODULE_8__src_mod10__",
+      "__WEBPACK_IMPORTED_MODULE_9__src_mod11__",
+      "__webpack_require__",
+      "arguments",
+      "example",
+      "module",
+      "root()",
+    ]
+  );
+
+  // CJS does not work on Rollup.
+  for (const target of [
+    "webpack3-babel6",
+  ]) {
+    await breakpointScopes(
+      dbg,
+      target,
+      "esmodules-cjs",
+      { line: 20, column: 2 },
+      [
+      "Module",
+        ["aDefault", '"a-default"'],
+        ["aDefault2", '"a-default2"'],
+        ["aDefault3", '"a-default3"'],
+        ["anAliased", '"an-original"'],
+        ["anAliased2", '"an-original2"'],
+        ["anAliased3", '"an-original3"'],
+        ["aNamed", '"a-named"'],
+        ["aNamed2", '"a-named2"'],
+        ["aNamed3", '"a-named3"'],
+        ["aNamespace", "{\u2026}"],
+        ["anotherNamed", '"a-named"'],
+        ["anotherNamed2", '"a-named2"'],
+        ["anotherNamed3", '"a-named3"'],
+        ["example", "(optimized away)"],
+        ["optimizedOut", "(optimized away)"],
+        "root()"
+      ]
+    );
+  }
+}
+
+async function testESModulesES6(dbg) {
+  await breakpointScopes(
+    dbg,
+    "webpack3",
+    "esmodules-es6",
+    { line: 20, column: 0 },
+    [
+      "Block",
+      ["<this>", "Window"],
+      ["arguments", "Arguments"],
+      pairToFnName("webpack3", "esmodules-es6"),
+      "__webpack_exports__",
+      "__WEBPACK_IMPORTED_MODULE_0__src_mod1__",
+      "__WEBPACK_IMPORTED_MODULE_1__src_mod2__",
+      "__WEBPACK_IMPORTED_MODULE_10__src_optimized_out__",
+      "__WEBPACK_IMPORTED_MODULE_2__src_mod3__",
+      "__WEBPACK_IMPORTED_MODULE_3__src_mod4__",
+      "__WEBPACK_IMPORTED_MODULE_4__src_mod5__",
+      "__WEBPACK_IMPORTED_MODULE_5__src_mod6__",
+      "__WEBPACK_IMPORTED_MODULE_6__src_mod7__",
+      "__WEBPACK_IMPORTED_MODULE_7__src_mod9__",
+      "__WEBPACK_IMPORTED_MODULE_8__src_mod10__",
+      "__WEBPACK_IMPORTED_MODULE_9__src_mod11__",
+      "__webpack_require__",
+      "arguments",
+      "example",
+      "module",
+      "root()",
+    ]
+  );
+
+  for (const target of [
+    "rollup",
+    "webpack3-babel6",
+  ]) {
+    const { maybeLineStart } = targetToFlags(target);
+
+    await breakpointScopes(
+      dbg,
+      target,
+      "esmodules-es6",
+      { line: 20, column: maybeLineStart(2) },
+      [
+        "Module",
+        ["aDefault", '"a-default"'],
+        ["aDefault2", '"a-default2"'],
+        ["aDefault3", '"a-default3"'],
+        ["anAliased", '"an-original"'],
+        ["anAliased2", '"an-original2"'],
+        ["anAliased3", '"an-original3"'],
+        ["aNamed", '"a-named"'],
+        ["aNamed2", '"a-named2"'],
+        ["aNamed3", '"a-named3"'],
+        ["aNamespace", "{\u2026}"],
+        ["anotherNamed", '"a-named"'],
+        ["anotherNamed2", '"a-named2"'],
+        ["anotherNamed3", '"a-named3"'],
+        ["example", "(optimized away)"],
+        ["optimizedOut", "(optimized away)"],
+        "root()"
+      ]
+    );
+  }
+
+  // This test currently bails out because Babel does not map function calls
+  // fully and includes the () of the call in the range of the identifier.
+  // this means that Rollup, has to map locations for calls to imports,
+  // it can fail. This will be addressed in Babel eventually.
+  await breakpointScopes(
+    dbg,
+    "rollup-babel6",
+    "esmodules-es6",
+    { line: 20, column: 2 },
+    [
+      "root",
+      ["<this>", "Window"],
+      ["arguments", "Arguments"],
+
+      "Block",
+      ["aNamed", '"a-named"'],
+      ["aNamed$1", "undefined"],
+      ["aNamed2", '"a-named2"'],
+      ["aNamed3", '"a-named3"'],
+      ["original", '"an-original"'],
+      ["original$1", '"an-original2"'],
+      ["original$2", '"an-original3"'],
+
+      "rollupBabel6EsmodulesEs6",
+      ["aDefault", '"a-default"'],
+      ["aDefault2", '"a-default2"'],
+      ["aDefault3", '"a-default3"'],
+
+      ["aNamespace", "{\u2026}"],
+      ["arguments", "(unavailable)"],
+      ["mod4", "(optimized away)"],
+      "root()"
+    ]
+  );
+}
--- a/devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemapped-stepping.js
+++ b/devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemapped-stepping.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 // Tests for stepping through Babel's compile output.
 requestLongerTimeout(4);
 
-async function breakpointSteps(dbg, fixture, { line, column }, steps) {
-  const filename = `fixtures/${fixture}/input.js`;
-  const fnName = fixture.replace(/-([a-z])/g, (s, c) => c.toUpperCase());
+async function breakpointSteps(dbg, target, fixture, { line, column }, steps) {
+  const filename = `${target}://./${fixture}/input.`;
+  const fnName = (target + "-" + fixture).replace(/-([a-z])/g, (s, c) => c.toUpperCase());
 
   await invokeWithBreakpoint(
     dbg,
     fnName,
     filename,
     { line, column },
     async source => {
       await runSteps(dbg, source, steps);
@@ -47,17 +47,18 @@ async function runSteps(dbg, source, ste
 
     assertPausedLocation(dbg);
   }
 }
 
 function testStepOverForOf(dbg) {
   return breakpointSteps(
     dbg,
-    "babel-step-over-for-of",
+    "webpack3-babel6",
+    "step-over-for-of",
     { line: 4, column: 2 },
     [
       ["stepOver", { line: 6, column: 2 }],
       ["stepOver", { line: 7, column: 4 }],
       ["stepOver", { line: 6, column: 2 }],
       ["stepOver", { line: 7, column: 4 }],
       ["stepOver", { line: 6, column: 2 }],
       ["stepOver", { line: 10, column: 2 }]
@@ -65,17 +66,18 @@ function testStepOverForOf(dbg) {
   );
 }
 
 // This codifies the current behavior, but stepping twice over the for
 // header isn't ideal.
 function testStepOverForOfArray(dbg) {
   return breakpointSteps(
     dbg,
-    "babel-step-over-for-of-array",
+    "webpack3-babel6",
+    "step-over-for-of-array",
     { line: 3, column: 2 },
     [
       ["stepOver", { line: 5, column: 2 }],
       ["stepOver", { line: 5, column: 7 }],
       ["stepOver", { line: 6, column: 4 }],
       ["stepOver", { line: 5, column: 2 }],
       ["stepOver", { line: 5, column: 7 }],
       ["stepOver", { line: 6, column: 4 }],
@@ -85,57 +87,61 @@ function testStepOverForOfArray(dbg) {
   );
 }
 
 // The closure means it isn't actually possible to step into the for body,
 // and Babel doesn't map the _loop() call, so we step past it automatically.
 function testStepOveForOfClosure(dbg) {
   return breakpointSteps(
     dbg,
-    "babel-step-over-for-of-closure",
+    "webpack3-babel6",
+    "step-over-for-of-closure",
     { line: 6, column: 2 },
     [
       ["stepOver", { line: 8, column: 2 }],
       ["stepOver", { line: 12, column: 2 }]
     ]
   );
 }
 
 // Same as the previous, not possible to step into the body. The less
 // complicated array logic makes it possible to step into the header at least,
 // but this does end up double-visiting the for head.
 function testStepOverForOfArrayClosure(dbg) {
   return breakpointSteps(
     dbg,
-    "babel-step-over-for-of-array-closure",
+    "webpack3-babel6",
+    "step-over-for-of-array-closure",
     { line: 3, column: 2 },
     [
       ["stepOver", { line: 5, column: 2 }],
       ["stepOver", { line: 5, column: 7 }],
       ["stepOver", { line: 5, column: 2 }],
       ["stepOver", { line: 5, column: 7 }],
       ["stepOver", { line: 5, column: 2 }],
       ["stepOver", { line: 9, column: 2 }]
     ]
   );
 }
 
 function testStepOverFunctionParams(dbg) {
   return breakpointSteps(
     dbg,
-    "babel-step-over-function-params",
+    "webpack3-babel6",
+    "step-over-function-params",
     { line: 6, column: 2 },
     [["stepOver", { line: 7, column: 2 }], ["stepIn", { line: 2, column: 2 }]]
   );
 }
 
 function testStepOverRegeneratorAwait(dbg) {
   return breakpointSteps(
     dbg,
-    "babel-step-over-regenerator-await",
+    "webpack3-babel6",
+    "step-over-regenerator-await",
     { line: 2, column: 2 },
     [
       // Won't work until a fix to regenerator lands and we rebuild.
       // https://github.com/facebook/regenerator/issues/342
       // ["stepOver", { line: 4, column: 2 }],
     ]
   );
 }
--- a/devtools/client/debugger/new/test/mochitest/browser_dbg-tabs-pretty-print.js
+++ b/devtools/client/debugger/new/test/mochitest/browser_dbg-tabs-pretty-print.js
@@ -10,12 +10,15 @@ add_task(async function() {
   clickElement(dbg, "prettyPrintButton");
   await waitForSource(dbg, "math.min.js:formatted");
   // Test reloading the debugger
   await waitForSelectedSource(dbg, "math.min.js:formatted");
   await reload(dbg);
 
   await waitForSelectedSource(dbg, "math.min.js:formatted");
   ok(true, "Pretty printed source is selected on reload");
-
-  const breakpointTab = findElementWithSelector(dbg, ".source-tab.active .filename");
-  is(breakpointTab.textContent, "math.min.js", ":formatted does not display in tab label");
+  
+  await selectSource(dbg, "math.min.js:formatted");
+  const source = findSource(dbg, "math.min.js:formatted");
+  dbg.actions.showSource(source.id);
+  const focusedTreeElement = findElementWithSelector(dbg, ".sources-list .focused .label");
+  is(focusedTreeElement.textContent.trim(), "math.min.js", "Pretty printed source is selected in tree");
 });
--- a/devtools/client/debugger/new/test/mochitest/examples/doc-sourcemapped.html
+++ b/devtools/client/debugger/new/test/mochitest/examples/doc-sourcemapped.html
@@ -7,78 +7,216 @@
     <meta charset="UTF-8">
     <script src="sourcemapped/polyfill-bundle.js"></script>
   </head>
   <body>
     <!-- INJECTED-START -->
     <!--
       Content generated by examples/sourcemapped/build.js.
       Run "yarn build" to update.
-    -->
-    <script src="sourcemapped/fixtures/babel-bindings-with-flow/output.js"></script>
-    <button onclick="babelBindingsWithFlow()">Run babel-bindings-with-flow</button>
-    <script src="sourcemapped/fixtures/babel-classes/output.js"></script>
-    <button onclick="babelClasses()">Run babel-classes</button>
-    <script src="sourcemapped/fixtures/babel-commonjs/output.js"></script>
-    <button onclick="babelCommonjs()">Run babel-commonjs</button>
-    <script src="sourcemapped/fixtures/babel-eval-maps/output.js"></script>
-    <button onclick="babelEvalMaps()">Run babel-eval-maps</button>
-    <script src="sourcemapped/fixtures/babel-flowtype-bindings/output.js"></script>
-    <button onclick="babelFlowtypeBindings()">Run babel-flowtype-bindings</button>
-    <script src="sourcemapped/fixtures/babel-for-loops/output.js"></script>
-    <button onclick="babelForLoops()">Run babel-for-loops</button>
-    <script src="sourcemapped/fixtures/babel-for-of/output.js"></script>
-    <button onclick="babelForOf()">Run babel-for-of</button>
-    <script src="sourcemapped/fixtures/babel-functions/output.js"></script>
-    <button onclick="babelFunctions()">Run babel-functions</button>
-    <script src="sourcemapped/fixtures/babel-lex-and-nonlex/output.js"></script>
-    <button onclick="babelLexAndNonlex()">Run babel-lex-and-nonlex</button>
-    <script src="sourcemapped/fixtures/babel-line-start-bindings-es6/output.js"></script>
-    <button onclick="babelLineStartBindingsEs6()">Run babel-line-start-bindings-es6</button>
-    <script src="sourcemapped/fixtures/babel-modules-cjs/output.js"></script>
-    <button onclick="babelModulesCjs()">Run babel-modules-cjs</button>
-    <script src="sourcemapped/fixtures/babel-modules-webpack/output.js"></script>
-    <button onclick="babelModulesWebpack()">Run babel-modules-webpack</button>
-    <script src="sourcemapped/fixtures/babel-modules-webpack-es6/output.js"></script>
-    <button onclick="babelModulesWebpackEs6()">Run babel-modules-webpack-es6</button>
-    <script src="sourcemapped/fixtures/babel-out-of-order-declarations-cjs/output.js"></script>
-    <button onclick="babelOutOfOrderDeclarationsCjs()">Run babel-out-of-order-declarations-cjs</button>
-    <script src="sourcemapped/fixtures/babel-shadowed-vars/output.js"></script>
-    <button onclick="babelShadowedVars()">Run babel-shadowed-vars</button>
-    <script src="sourcemapped/fixtures/babel-step-over-for-of/output.js"></script>
-    <button onclick="babelStepOverForOf()">Run babel-step-over-for-of</button>
-    <script src="sourcemapped/fixtures/babel-step-over-for-of-array/output.js"></script>
-    <button onclick="babelStepOverForOfArray()">Run babel-step-over-for-of-array</button>
-    <script src="sourcemapped/fixtures/babel-step-over-for-of-array-closure/output.js"></script>
-    <button onclick="babelStepOverForOfArrayClosure()">Run babel-step-over-for-of-array-closure</button>
-    <script src="sourcemapped/fixtures/babel-step-over-for-of-closure/output.js"></script>
-    <button onclick="babelStepOverForOfClosure()">Run babel-step-over-for-of-closure</button>
-    <script src="sourcemapped/fixtures/babel-step-over-function-params/output.js"></script>
-    <button onclick="babelStepOverFunctionParams()">Run babel-step-over-function-params</button>
-    <script src="sourcemapped/fixtures/babel-step-over-regenerator-await/output.js"></script>
-    <button onclick="babelStepOverRegeneratorAwait()">Run babel-step-over-regenerator-await</button>
-    <script src="sourcemapped/fixtures/babel-switches/output.js"></script>
-    <button onclick="babelSwitches()">Run babel-switches</button>
-    <script src="sourcemapped/fixtures/babel-this-arguments-bindings/output.js"></script>
-    <button onclick="babelThisArgumentsBindings()">Run babel-this-arguments-bindings</button>
-    <script src="sourcemapped/fixtures/babel-try-catches/output.js"></script>
-    <button onclick="babelTryCatches()">Run babel-try-catches</button>
-    <script src="sourcemapped/fixtures/babel-type-module/output.js"></script>
-    <button onclick="babelTypeModule()">Run babel-type-module</button>
-    <script src="sourcemapped/fixtures/babel-type-script/output.js"></script>
-    <button onclick="babelTypeScript()">Run babel-type-script</button>
-    <script src="sourcemapped/fixtures/rollup-babel-classes/output.js"></script>
-    <button onclick="rollupBabelClasses()">Run rollup-babel-classes</button>
-    <script src="sourcemapped/fixtures/rollup-babel-lex-and-nonlex/output.js"></script>
-    <button onclick="rollupBabelLexAndNonlex()">Run rollup-babel-lex-and-nonlex</button>
-    <script src="sourcemapped/fixtures/rollup-babel-modules/output.js"></script>
-    <button onclick="rollupBabelModules()">Run rollup-babel-modules</button>
-    <script src="sourcemapped/fixtures/rollup-modules/output.js"></script>
-    <button onclick="rollupModules()">Run rollup-modules</button>
-    <script src="sourcemapped/fixtures/typescript-classes/output.js"></script>
-    <button onclick="typescriptClasses()">Run typescript-classes</button>
-    <script src="sourcemapped/fixtures/webpack-functions/output.js"></script>
-    <button onclick="webpackFunctions()">Run webpack-functions</button>
-    <script src="sourcemapped/fixtures/webpack-line-mappings/output.js"></script>
-    <button onclick="webpackLineMappings()">Run webpack-line-mappings</button>
+    --><h2>webpack3</h2>
+    <script src="sourcemapped/output/webpack3/classes.js"></script>
+    <button onclick="webpack3Classes()">Run classes</button>
+    <script src="sourcemapped/output/webpack3/esmodules.js"></script>
+    <button onclick="webpack3Esmodules()">Run esmodules</button>
+    <script src="sourcemapped/output/webpack3/esmodules-cjs.js"></script>
+    <button onclick="webpack3EsmodulesCjs()">Run esmodules-cjs</button>
+    <script src="sourcemapped/output/webpack3/esmodules-es6.js"></script>
+    <button onclick="webpack3EsmodulesEs6()">Run esmodules-es6</button>
+    <script src="sourcemapped/output/webpack3/eval-maps.js"></script>
+    <button onclick="webpack3EvalMaps()">Run eval-maps</button>
+    <script src="sourcemapped/output/webpack3/for-loops.js"></script>
+    <button onclick="webpack3ForLoops()">Run for-loops</button>
+    <script src="sourcemapped/output/webpack3/for-of.js"></script>
+    <button onclick="webpack3ForOf()">Run for-of</button>
+    <script src="sourcemapped/output/webpack3/functions.js"></script>
+    <button onclick="webpack3Functions()">Run functions</button>
+    <script src="sourcemapped/output/webpack3/lex-and-nonlex.js"></script>
+    <button onclick="webpack3LexAndNonlex()">Run lex-and-nonlex</button>
+    <script src="sourcemapped/output/webpack3/line-start-bindings-es6.js"></script>
+    <button onclick="webpack3LineStartBindingsEs6()">Run line-start-bindings-es6</button>
+    <script src="sourcemapped/output/webpack3/modules-cjs.js"></script>
+    <button onclick="webpack3ModulesCjs()">Run modules-cjs</button>
+    <script src="sourcemapped/output/webpack3/out-of-order-declarations-cjs.js"></script>
+    <button onclick="webpack3OutOfOrderDeclarationsCjs()">Run out-of-order-declarations-cjs</button>
+    <script src="sourcemapped/output/webpack3/shadowed-vars.js"></script>
+    <button onclick="webpack3ShadowedVars()">Run shadowed-vars</button>
+    <script src="sourcemapped/output/webpack3/step-over-for-of.js"></script>
+    <button onclick="webpack3StepOverForOf()">Run step-over-for-of</button>
+    <script src="sourcemapped/output/webpack3/step-over-for-of-array.js"></script>
+    <button onclick="webpack3StepOverForOfArray()">Run step-over-for-of-array</button>
+    <script src="sourcemapped/output/webpack3/step-over-for-of-array-closure.js"></script>
+    <button onclick="webpack3StepOverForOfArrayClosure()">Run step-over-for-of-array-closure</button>
+    <script src="sourcemapped/output/webpack3/step-over-for-of-closure.js"></script>
+    <button onclick="webpack3StepOverForOfClosure()">Run step-over-for-of-closure</button>
+    <script src="sourcemapped/output/webpack3/step-over-function-params.js"></script>
+    <button onclick="webpack3StepOverFunctionParams()">Run step-over-function-params</button>
+    <script src="sourcemapped/output/webpack3/step-over-regenerator-await.js"></script>
+    <button onclick="webpack3StepOverRegeneratorAwait()">Run step-over-regenerator-await</button>
+    <script src="sourcemapped/output/webpack3/switches.js"></script>
+    <button onclick="webpack3Switches()">Run switches</button>
+    <script src="sourcemapped/output/webpack3/this-arguments-bindings.js"></script>
+    <button onclick="webpack3ThisArgumentsBindings()">Run this-arguments-bindings</button>
+    <script src="sourcemapped/output/webpack3/try-catches.js"></script>
+    <button onclick="webpack3TryCatches()">Run try-catches</button>
+    <script src="sourcemapped/output/webpack3/type-module.js"></script>
+    <button onclick="webpack3TypeModule()">Run type-module</button>
+    <script src="sourcemapped/output/webpack3/type-script-cjs.js"></script>
+    <button onclick="webpack3TypeScriptCjs()">Run type-script-cjs</button>
+    <script src="sourcemapped/output/webpack3/typescript-classes.js"></script>
+    <button onclick="webpack3TypescriptClasses()">Run typescript-classes</button>
+    <script src="sourcemapped/output/webpack3/webpack-functions.js"></script>
+    <button onclick="webpack3WebpackFunctions()">Run webpack-functions</button>
+    <script src="sourcemapped/output/webpack3/webpack-line-mappings.js"></script>
+    <button onclick="webpack3WebpackLineMappings()">Run webpack-line-mappings</button><h2>webpack3-babel6</h2>
+    <script src="sourcemapped/output/webpack3-babel6/babel-bindings-with-flow.js"></script>
+    <button onclick="webpack3Babel6BabelBindingsWithFlow()">Run babel-bindings-with-flow</button>
+    <script src="sourcemapped/output/webpack3-babel6/babel-flowtype-bindings.js"></script>
+    <button onclick="webpack3Babel6BabelFlowtypeBindings()">Run babel-flowtype-bindings</button>
+    <script src="sourcemapped/output/webpack3-babel6/classes.js"></script>
+    <button onclick="webpack3Babel6Classes()">Run classes</button>
+    <script src="sourcemapped/output/webpack3-babel6/esmodules.js"></script>
+    <button onclick="webpack3Babel6Esmodules()">Run esmodules</button>
+    <script src="sourcemapped/output/webpack3-babel6/esmodules-cjs.js"></script>
+    <button onclick="webpack3Babel6EsmodulesCjs()">Run esmodules-cjs</button>
+    <script src="sourcemapped/output/webpack3-babel6/esmodules-es6.js"></script>
+    <button onclick="webpack3Babel6EsmodulesEs6()">Run esmodules-es6</button>
+    <script src="sourcemapped/output/webpack3-babel6/eval-maps.js"></script>
+    <button onclick="webpack3Babel6EvalMaps()">Run eval-maps</button>
+    <script src="sourcemapped/output/webpack3-babel6/for-loops.js"></script>
+    <button onclick="webpack3Babel6ForLoops()">Run for-loops</button>
+    <script src="sourcemapped/output/webpack3-babel6/for-of.js"></script>
+    <button onclick="webpack3Babel6ForOf()">Run for-of</button>
+    <script src="sourcemapped/output/webpack3-babel6/functions.js"></script>
+    <button onclick="webpack3Babel6Functions()">Run functions</button>
+    <script src="sourcemapped/output/webpack3-babel6/lex-and-nonlex.js"></script>
+    <button onclick="webpack3Babel6LexAndNonlex()">Run lex-and-nonlex</button>
+    <script src="sourcemapped/output/webpack3-babel6/line-start-bindings-es6.js"></script>
+    <button onclick="webpack3Babel6LineStartBindingsEs6()">Run line-start-bindings-es6</button>
+    <script src="sourcemapped/output/webpack3-babel6/modules-cjs.js"></script>
+    <button onclick="webpack3Babel6ModulesCjs()">Run modules-cjs</button>
+    <script src="sourcemapped/output/webpack3-babel6/out-of-order-declarations-cjs.js"></script>
+    <button onclick="webpack3Babel6OutOfOrderDeclarationsCjs()">Run out-of-order-declarations-cjs</button>
+    <script src="sourcemapped/output/webpack3-babel6/shadowed-vars.js"></script>
+    <button onclick="webpack3Babel6ShadowedVars()">Run shadowed-vars</button>
+    <script src="sourcemapped/output/webpack3-babel6/step-over-for-of.js"></script>
+    <button onclick="webpack3Babel6StepOverForOf()">Run step-over-for-of</button>
+    <script src="sourcemapped/output/webpack3-babel6/step-over-for-of-array.js"></script>
+    <button onclick="webpack3Babel6StepOverForOfArray()">Run step-over-for-of-array</button>
+    <script src="sourcemapped/output/webpack3-babel6/step-over-for-of-array-closure.js"></script>
+    <button onclick="webpack3Babel6StepOverForOfArrayClosure()">Run step-over-for-of-array-closure</button>
+    <script src="sourcemapped/output/webpack3-babel6/step-over-for-of-closure.js"></script>
+    <button onclick="webpack3Babel6StepOverForOfClosure()">Run step-over-for-of-closure</button>
+    <script src="sourcemapped/output/webpack3-babel6/step-over-function-params.js"></script>
+    <button onclick="webpack3Babel6StepOverFunctionParams()">Run step-over-function-params</button>
+    <script src="sourcemapped/output/webpack3-babel6/step-over-regenerator-await.js"></script>
+    <button onclick="webpack3Babel6StepOverRegeneratorAwait()">Run step-over-regenerator-await</button>
+    <script src="sourcemapped/output/webpack3-babel6/switches.js"></script>
+    <button onclick="webpack3Babel6Switches()">Run switches</button>
+    <script src="sourcemapped/output/webpack3-babel6/this-arguments-bindings.js"></script>
+    <button onclick="webpack3Babel6ThisArgumentsBindings()">Run this-arguments-bindings</button>
+    <script src="sourcemapped/output/webpack3-babel6/try-catches.js"></script>
+    <button onclick="webpack3Babel6TryCatches()">Run try-catches</button>
+    <script src="sourcemapped/output/webpack3-babel6/type-module.js"></script>
+    <button onclick="webpack3Babel6TypeModule()">Run type-module</button>
+    <script src="sourcemapped/output/webpack3-babel6/type-script-cjs.js"></script>
+    <button onclick="webpack3Babel6TypeScriptCjs()">Run type-script-cjs</button>
+    <script src="sourcemapped/output/webpack3-babel6/webpack-functions.js"></script>
+    <button onclick="webpack3Babel6WebpackFunctions()">Run webpack-functions</button>
+    <script src="sourcemapped/output/webpack3-babel6/webpack-line-mappings.js"></script>
+    <button onclick="webpack3Babel6WebpackLineMappings()">Run webpack-line-mappings</button><h2>rollup</h2>
+    <script src="sourcemapped/output/rollup/classes.js"></script>
+    <button onclick="rollupClasses()">Run classes</button>
+    <script src="sourcemapped/output/rollup/esmodules.js"></script>
+    <button onclick="rollupEsmodules()">Run esmodules</button>
+    <script src="sourcemapped/output/rollup/esmodules-es6.js"></script>
+    <button onclick="rollupEsmodulesEs6()">Run esmodules-es6</button>
+    <script src="sourcemapped/output/rollup/eval-maps.js"></script>
+    <button onclick="rollupEvalMaps()">Run eval-maps</button>
+    <script src="sourcemapped/output/rollup/for-loops.js"></script>
+    <button onclick="rollupForLoops()">Run for-loops</button>
+    <script src="sourcemapped/output/rollup/for-of.js"></script>
+    <button onclick="rollupForOf()">Run for-of</button>
+    <script src="sourcemapped/output/rollup/functions.js"></script>
+    <button onclick="rollupFunctions()">Run functions</button>
+    <script src="sourcemapped/output/rollup/lex-and-nonlex.js"></script>
+    <button onclick="rollupLexAndNonlex()">Run lex-and-nonlex</button>
+    <script src="sourcemapped/output/rollup/line-start-bindings-es6.js"></script>
+    <button onclick="rollupLineStartBindingsEs6()">Run line-start-bindings-es6</button>
+    <script src="sourcemapped/output/rollup/shadowed-vars.js"></script>
+    <button onclick="rollupShadowedVars()">Run shadowed-vars</button>
+    <script src="sourcemapped/output/rollup/step-over-for-of.js"></script>
+    <button onclick="rollupStepOverForOf()">Run step-over-for-of</button>
+    <script src="sourcemapped/output/rollup/step-over-for-of-array.js"></script>
+    <button onclick="rollupStepOverForOfArray()">Run step-over-for-of-array</button>
+    <script src="sourcemapped/output/rollup/step-over-for-of-array-closure.js"></script>
+    <button onclick="rollupStepOverForOfArrayClosure()">Run step-over-for-of-array-closure</button>
+    <script src="sourcemapped/output/rollup/step-over-for-of-closure.js"></script>
+    <button onclick="rollupStepOverForOfClosure()">Run step-over-for-of-closure</button>
+    <script src="sourcemapped/output/rollup/step-over-function-params.js"></script>
+    <button onclick="rollupStepOverFunctionParams()">Run step-over-function-params</button>
+    <script src="sourcemapped/output/rollup/step-over-regenerator-await.js"></script>
+    <button onclick="rollupStepOverRegeneratorAwait()">Run step-over-regenerator-await</button>
+    <script src="sourcemapped/output/rollup/switches.js"></script>
+    <button onclick="rollupSwitches()">Run switches</button>
+    <script src="sourcemapped/output/rollup/this-arguments-bindings.js"></script>
+    <button onclick="rollupThisArgumentsBindings()">Run this-arguments-bindings</button>
+    <script src="sourcemapped/output/rollup/try-catches.js"></script>
+    <button onclick="rollupTryCatches()">Run try-catches</button>
+    <script src="sourcemapped/output/rollup/type-module.js"></script>
+    <button onclick="rollupTypeModule()">Run type-module</button>
+    <script src="sourcemapped/output/rollup/typescript-classes.js"></script>
+    <button onclick="rollupTypescriptClasses()">Run typescript-classes</button>
+    <script src="sourcemapped/output/rollup/webpack-functions.js"></script>
+    <button onclick="rollupWebpackFunctions()">Run webpack-functions</button>
+    <script src="sourcemapped/output/rollup/webpack-line-mappings.js"></script>
+    <button onclick="rollupWebpackLineMappings()">Run webpack-line-mappings</button><h2>rollup-babel6</h2>
+    <script src="sourcemapped/output/rollup-babel6/babel-bindings-with-flow.js"></script>
+    <button onclick="rollupBabel6BabelBindingsWithFlow()">Run babel-bindings-with-flow</button>
+    <script src="sourcemapped/output/rollup-babel6/babel-flowtype-bindings.js"></script>
+    <button onclick="rollupBabel6BabelFlowtypeBindings()">Run babel-flowtype-bindings</button>
+    <script src="sourcemapped/output/rollup-babel6/classes.js"></script>
+    <button onclick="rollupBabel6Classes()">Run classes</button>
+    <script src="sourcemapped/output/rollup-babel6/esmodules.js"></script>
+    <button onclick="rollupBabel6Esmodules()">Run esmodules</button>
+    <script src="sourcemapped/output/rollup-babel6/esmodules-es6.js"></script>
+    <button onclick="rollupBabel6EsmodulesEs6()">Run esmodules-es6</button>
+    <script src="sourcemapped/output/rollup-babel6/eval-maps.js"></script>
+    <button onclick="rollupBabel6EvalMaps()">Run eval-maps</button>
+    <script src="sourcemapped/output/rollup-babel6/for-loops.js"></script>
+    <button onclick="rollupBabel6ForLoops()">Run for-loops</button>
+    <script src="sourcemapped/output/rollup-babel6/for-of.js"></script>
+    <button onclick="rollupBabel6ForOf()">Run for-of</button>
+    <script src="sourcemapped/output/rollup-babel6/functions.js"></script>
+    <button onclick="rollupBabel6Functions()">Run functions</button>
+    <script src="sourcemapped/output/rollup-babel6/lex-and-nonlex.js"></script>
+    <button onclick="rollupBabel6LexAndNonlex()">Run lex-and-nonlex</button>
+    <script src="sourcemapped/output/rollup-babel6/line-start-bindings-es6.js"></script>
+    <button onclick="rollupBabel6LineStartBindingsEs6()">Run line-start-bindings-es6</button>
+    <script src="sourcemapped/output/rollup-babel6/shadowed-vars.js"></script>
+    <button onclick="rollupBabel6ShadowedVars()">Run shadowed-vars</button>
+    <script src="sourcemapped/output/rollup-babel6/step-over-for-of.js"></script>
+    <button onclick="rollupBabel6StepOverForOf()">Run step-over-for-of</button>
+    <script src="sourcemapped/output/rollup-babel6/step-over-for-of-array.js"></script>
+    <button onclick="rollupBabel6StepOverForOfArray()">Run step-over-for-of-array</button>
+    <script src="sourcemapped/output/rollup-babel6/step-over-for-of-array-closure.js"></script>
+    <button onclick="rollupBabel6StepOverForOfArrayClosure()">Run step-over-for-of-array-closure</button>
+    <script src="sourcemapped/output/rollup-babel6/step-over-for-of-closure.js"></script>
+    <button onclick="rollupBabel6StepOverForOfClosure()">Run step-over-for-of-closure</button>
+    <script src="sourcemapped/output/rollup-babel6/step-over-function-params.js"></script>
+    <button onclick="rollupBabel6StepOverFunctionParams()">Run step-over-function-params</button>
+    <script src="sourcemapped/output/rollup-babel6/step-over-regenerator-await.js"></script>
+    <button onclick="rollupBabel6StepOverRegeneratorAwait()">Run step-over-regenerator-await</button>
+    <script src="sourcemapped/output/rollup-babel6/switches.js"></script>
+    <button onclick="rollupBabel6Switches()">Run switches</button>
+    <script src="sourcemapped/output/rollup-babel6/this-arguments-bindings.js"></script>
+    <button onclick="rollupBabel6ThisArgumentsBindings()">Run this-arguments-bindings</button>
+    <script src="sourcemapped/output/rollup-babel6/try-catches.js"></script>
+    <button onclick="rollupBabel6TryCatches()">Run try-catches</button>
+    <script src="sourcemapped/output/rollup-babel6/type-module.js"></script>
+    <button onclick="rollupBabel6TypeModule()">Run type-module</button>
+    <script src="sourcemapped/output/rollup-babel6/webpack-functions.js"></script>
+    <button onclick="rollupBabel6WebpackFunctions()">Run webpack-functions</button>
+    <script src="sourcemapped/output/rollup-babel6/webpack-line-mappings.js"></script>
+    <button onclick="rollupBabel6WebpackLineMappings()">Run webpack-line-mappings</button>
     <!-- INJECTED-END -->
   </body>
 </html>
new file mode 100644
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/test/mochitest/examples/sourcemapped/README.md
@@ -0,0 +1,16 @@
+## Sourcemapped test fixtures
+
+The test fixtures in this folder are used to generate a suite of tests for sourcemapped
+files that have been passed through various tools like Babel and Typescript, and various
+bundlers like Rollup and Webpack.
+
+The fixtures follow a naming scheme where:
+
+* `babel-` means the file requires Babel in order to be consumed by a bundler.
+* `typescript-` means the file requires Typescript in order to be consumed by a bundler.
+* `-cjs` means the file is either:
+  * Written in CommonJS
+  * May be converted to CommonJS when Babel is enabled
+
+  This is used to exclude these files from processing by bundlers that expect input
+  files to be ES modules.
--- a/devtools/client/debugger/new/test/mochitest/examples/sourcemapped/build.js
+++ b/devtools/client/debugger/new/test/mochitest/examples/sourcemapped/build.js
@@ -1,150 +1,98 @@
 #!env node
 
+/* 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 util = require("util");
 const fs = require("fs");
 const path = require("path");
-const _ = require("lodash");
-const rollup = require("rollup");
-const rollupBabel = require("rollup-plugin-babel");
 const webpack = require("webpack");
 
-const fixtures = path.join(__dirname, "fixtures");
-
-const tests = fs.readdirSync(fixtures).map(name => {
-  if (name[0] === ".") return;
+const fixturesFolder = path.join(__dirname, "fixtures");
 
-  const dirname = path.relative(__dirname, path.join(fixtures, name));
+const tests = fs
+  .readdirSync(fixturesFolder)
+  .map(name => {
+    if (name[0] === ".") {
+      return;
+    }
 
-  const inputTS = path.join(dirname, "input.ts");
-  const inputJS = path.join(dirname, "input.js");
+    const inputTS = path.join(fixturesFolder, name, "input.ts");
+    const inputJS = path.join(fixturesFolder, name, "input.js");
+
+    return [name, fs.existsSync(inputTS) ? inputTS : inputJS];
+  })
+  .filter(Boolean);
 
-  return {
-    name,
-    camelName: _.camelCase(name),
-    dirname,
-    input: `./${fs.existsSync(inputTS) ? inputTS : inputJS}`,
-    output: path.join(dirname, "output.js")
-  };
-}).filter(Boolean);
+(async function() {
+  const targets = [
+    await require("./builds/webpack3")(tests, __dirname),
+    await require("./builds/webpack3-babel6")(tests, __dirname),
+    await require("./builds/rollup")(tests, __dirname),
+    await require("./builds/rollup-babel6")(tests, __dirname)
+  ];
 
-const html = path.join(__dirname, "..", "doc-sourcemapped.html");
+  await util.promisify(webpack)({
+    context: __dirname,
+    entry: "babel-polyfill",
+    output: {
+      filename: "polyfill-bundle.js"
+    },
+    plugins: [new webpack.optimize.OccurrenceOrderPlugin(true)]
+  });
 
-fs.writeFileSync(
-  html,
-  fs.readFileSync(html, "utf8").replace(
-    /\n\s*<!-- INJECTED-START[\s\S]*INJECTED-END -->\n/,
-    `
+  const examplesDir = path.join(__dirname, "..");
+  const html = path.join(examplesDir, "doc-sourcemapped.html");
+
+  fs.writeFileSync(
+    html,
+    fs.readFileSync(html, "utf8").replace(
+      /\n\s*<!-- INJECTED-START[\s\S]*INJECTED-END -->/,
+      `
     <!-- INJECTED-START -->
     <!--
       Content generated by examples/sourcemapped/build.js.
       Run "yarn build" to update.
-    -->${tests
-      .map(
-        ({ name, camelName, output }) =>
-          `\n    <script src="${path.join("sourcemapped", output)}"></script>` +
-          `\n    <button onclick="${camelName}()">Run ${name}</button>`
-      )
+    -->${targets
+      .map(({ target, fixtures }) => {
+        return `<h2>${target}</h2>${fixtures
+          .map(
+            ({ name, testFnName, scriptPath }) =>
+              `\n    <script src="${path.relative(
+                examplesDir,
+                scriptPath
+              )}"></script>` +
+              `\n    <button onclick="${testFnName}()">Run ${name}</button>`
+          )
+          .join("")}`;
+      })
       .join("")}
-    <!-- INJECTED-END -->
-`
-  )
-);
-
-function runWebpack(config) {
-  webpack(config, (err, res) => {
-    if (err) throw err;
-
-    console.log(res.toString());
-  });
-}
+    <!-- INJECTED-END -->`
+    )
+  );
 
-runWebpack({
-  context: __dirname,
-  entry: "babel-polyfill",
-  output: {
-    filename: "polyfill-bundle.js"
-  }
-});
-
-for (const { name, camelName, dirname, input, output } of tests) {
-  const rollupBuildEnabled = name.match(/rollup-/);
-  const babelEnabled = name.match(/babel-/);
-  const babelEnv = !name.match(/-es6/);
-  const babelModules = name.match(/-cjs/);
-  const evalMaps = name.match(/-eval/);
-
-  if (!babelEnabled && babelModules) {
-    throw new Error(
-      "Babel is not enabled, compiling to CommonJS is not possible in " + name
-    );
-  }
-
-  const babelOptions = babelEnabled && {
-    babelrc: false,
-    presets: babelEnv
-      ? [["env", { modules: babelModules ? "commonjs" : false }]]
-      : [],
-    plugins: [
-      "babel-plugin-transform-flow-strip-types",
-    ]
-  };
+  const mochitestRoot = path.join(__dirname, "..", "..");
+  const browserINI = path.join(mochitestRoot, "browser.ini");
 
-  if (rollupBuildEnabled) {
-    (async function() {
-      const bundle = await rollup.rollup({
-        input: "fake-bundle-root",
-        plugins: [
-          // Our input file may export more than the default, but we
-          // want to enable 'exports: "default",' so we need the root
-          // import to only have a default export.
-          {
-            resolveId: id => id === "fake-bundle-root" ? id : undefined,
-            load: id => id === "fake-bundle-root"
-              ? `import test from "${path.join(__dirname, input)}"; export default test;`
-              : undefined,
-          },
-          babelOptions && rollupBabel(babelOptions)
-        ].filter(Boolean),
-      });
-
-      await bundle.write({
-        file: output,
-        dir: dirname,
-        format: "iife",
-        name: camelName,
-        sourcemap: true,
-        exports: "default",
-      });
-    })();
-    continue;
-  }
+  const assets = targets.reduce(
+    (acc, { fixtures }) =>
+      fixtures.reduce(
+        (acc2, { assets: assetList }) => acc2.concat(assetList),
+        acc
+      ),
+    []
+  );
+  assets.unshift(path.join(__dirname, "polyfill-bundle.js"));
 
-  runWebpack({
-    context: __dirname,
-    entry: input,
-    output: {
-      path: __dirname,
-      filename: output,
-
-      libraryTarget: "var",
-      library: camelName,
-      libraryExport: "default"
-    },
-    devtool: evalMaps ? "eval-source-map" : "source-map",
-    module: {
-      loaders: [
-        babelOptions && {
-          test: /\.js$/,
-          exclude: /node_modules/,
-          loader: "babel-loader",
-          options: babelOptions,
-        },
-        {
-          test: /\.tsx?$/,
-          exclude: /node_modules/,
-          loader: "ts-loader",
-          options: {}
-        }
-      ].filter(Boolean)
-    }
-  });
-}
+  fs.writeFileSync(
+    browserINI,
+    fs.readFileSync(browserINI, "utf8").replace(
+      /\n *## START-SOURCEMAPPED-FIXTURES[\s\S]*## END-SOURCEMAPPED-FIXTURES/,
+      `
+  ## START-SOURCEMAPPED-FIXTURES - Generated by examples/sourcemapped/build.js
+  ${assets.map(asset => path.relative(mochitestRoot, asset)).join("\n  ")}
+  ## END-SOURCEMAPPED-FIXTURES`
+    )
+  );
+})();
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/rollup-babel6/index.js
@@ -0,0 +1,79 @@
+/* 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 path = require("path");
+const _ = require("lodash");
+const rollup = require("rollup");
+const rollupBabel = require("rollup-plugin-babel");
+
+const TARGET_NAME = "rollup-babel6";
+
+module.exports = exports = async function(tests, dirname) {
+  const fixtures = [];
+  for (const [name, input] of tests) {
+    if (/typescript-|-cjs/.test(name)) {
+      continue;
+    }
+
+    const testFnName = _.camelCase(`${TARGET_NAME}-${name}`);
+    const babelEnv = !name.match(/-es6/);
+
+    const scriptPath = path.join(dirname, "output", TARGET_NAME, `${name}.js`);
+
+    console.log(`Building ${TARGET_NAME} test ${name}`);
+
+    const bundle = await rollup.rollup({
+      input: "fake-bundle-root",
+      plugins: [
+        // Our input file may export more than the default, but we
+        // want to enable 'exports: "default",' so we need the root
+        // import to only have a default export.
+        {
+          resolveId: id => (id === "fake-bundle-root" ? id : undefined),
+          load: id =>
+            id === "fake-bundle-root"
+              ? `import test from "${input}"; export default test;`
+              : undefined
+        },
+        rollupBabel({
+          babelrc: false,
+          presets: [
+            babelEnv
+              ? [require.resolve("babel-preset-env"), { modules: false }]
+              : null
+          ].filter(Boolean),
+          plugins: [require.resolve("babel-plugin-transform-flow-strip-types")]
+        }),
+        {
+          ongenerate(out, data) {
+            data.map.sources = data.map.sources.map(source =>
+              source.replace(/^fixtures[\\/]/, `${TARGET_NAME}://./`)
+            );
+          }
+        }
+      ].filter(Boolean)
+    });
+
+    await bundle.write({
+      file: path.basename(scriptPath),
+      dir: path.dirname(scriptPath),
+      format: "iife",
+      name: testFnName,
+      sourcemap: true,
+      exports: "default"
+    });
+
+    fixtures.push({
+      name,
+      testFnName: testFnName,
+      scriptPath,
+      assets: [scriptPath, `${scriptPath}.map`]
+    });
+  }
+
+  return {
+    target: TARGET_NAME,
+    fixtures
+  };
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/rollup-babel6/package.json
@@ -0,0 +1,12 @@
+{
+  "name": "sourcemapped-rollup",
+  "private": true,
+  "dependencies": {
+    "babel-core": "^6.26.3",
+    "babel-plugin-transform-flow-strip-types": "^6.22.0",
+    "babel-preset-env": "^1.7.0",
+    "lodash": "^4.17.5",
+    "rollup": "^0.63.0",
+    "rollup-plugin-babel": "^3.0.7"
+  }
+}
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/new/test/mochitest/examples/sourcemapped/builds/rollup-babel6/yarn.lock
@@ -0,0 +1,755 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@types/estree@0.0.39":
+  version "0.0.39"
+  resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
+
+"@types/node@*":
+  version "10.5.3"
+  resolved "https://registry.yarnpkg.com/@types/node/-/node-10.5.3.tgz#5bcfaf088ad17894232012877669634c06b20cc5"
+
+ansi-regex@^2.0.0:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+
+ansi-styles@^2.2.1:
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+
+babel-code-frame@^6.26.0:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
+  dependencies:
+    chalk "^1.1.3"
+    esutils "^2.0.2"
+    js-tokens "^3.0.2"
+
+babel-core@^6.26.0, babel-core@^6.26.3:
+  version "6.26.3"
+  resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207"
+  dependencies:
+    babel-code-frame "^6.26.0"
+    babel-generator "^6.26.0"
+    babel-helpers "^6.24.1"
+    babel-messages "^6.23.0"
+    babel-register "^6.26.0"
+    babel-runtime "^6.26.0"
+    babel-template "^6.26.0"
+    babel-traverse "^6.26.0"
+    babel-types "^6.26.0"
+    babylon "^6.18.0"
+    convert-source-map "^1.5.1"
+    debug "^2.6.9"
+    json5 "^0.5.1"
+    lodash "^4.17.4"
+    minimatch "^3.0.4"
+    path-is-absolute "^1.0.1"
+    private "^0.1.8"
+    slash "^1.0.0"
+    source-map "^0.5.7"
+
+babel-generator@^6.26.0:
+  version "6.26.1"
+  resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90"
+  dependencies:
+    babel-messages "^6.23.0"
+    babel-runtime "^6.26.0"
+    babel-types "^6.26.0"
+    detect-indent "^4.0.0"
+    jsesc "^1.3.0"
+    lodash "^4.17.4"
+    source-map "^0.5.7"
+    trim-right "^1.0.1"
+
+babel-helper-builder-binary-assignment-operator-visitor@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664"
+  dependencies:
+    babel-helper-explode-assignable-expression "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-helper-call-delegate@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d"
+  dependencies:
+    babel-helper-hoist-variables "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-helper-define-map@^6.24.1:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f"
+  dependencies:
+    babel-helper-function-name "^6.24.1"
+    babel-runtime "^6.26.0"
+    babel-types "^6.26.0"
+    lodash "^4.17.4"
+
+babel-helper-explode-assignable-expression@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-helper-function-name@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9"
+  dependencies:
+    babel-helper-get-function-arity "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-helper-get-function-arity@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-helper-hoist-variables@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-helper-optimise-call-expression@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-helper-regex@^6.24.1:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72"
+  dependencies:
+    babel-runtime "^6.26.0"
+    babel-types "^6.26.0"
+    lodash "^4.17.4"
+
+babel-helper-remap-async-to-generator@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b"
+  dependencies:
+    babel-helper-function-name "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-helper-replace-supers@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a"
+  dependencies:
+    babel-helper-optimise-call-expression "^6.24.1"
+    babel-messages "^6.23.0"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-helpers@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+
+babel-messages@^6.23.0:
+  version "6.23.0"
+  resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-check-es2015-constants@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-syntax-async-functions@^6.8.0:
+  version "6.13.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
+
+babel-plugin-syntax-exponentiation-operator@^6.8.0:
+  version "6.13.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de"
+
+babel-plugin-syntax-flow@^6.18.0:
+  version "6.18.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d"
+
+babel-plugin-syntax-trailing-function-commas@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3"
+
+babel-plugin-transform-async-to-generator@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761"
+  dependencies:
+    babel-helper-remap-async-to-generator "^6.24.1"
+    babel-plugin-syntax-async-functions "^6.8.0"
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-arrow-functions@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-block-scoped-functions@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-block-scoping@^6.23.0:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f"
+  dependencies:
+    babel-runtime "^6.26.0"
+    babel-template "^6.26.0"
+    babel-traverse "^6.26.0"
+    babel-types "^6.26.0"
+    lodash "^4.17.4"
+
+babel-plugin-transform-es2015-classes@^6.23.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db"
+  dependencies:
+    babel-helper-define-map "^6.24.1"
+    babel-helper-function-name "^6.24.1"
+    babel-helper-optimise-call-expression "^6.24.1"
+    babel-helper-replace-supers "^6.24.1"
+    babel-messages "^6.23.0"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-computed-properties@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+
+babel-plugin-transform-es2015-destructuring@^6.23.0:
+  version "6.23.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-duplicate-keys@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-for-of@^6.23.0:
+  version "6.23.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-function-name@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"
+  dependencies:
+    babel-helper-function-name "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-literals@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154"
+  dependencies:
+    babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+
+babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1:
+  version "6.26.2"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3"
+  dependencies:
+    babel-plugin-transform-strict-mode "^6.24.1"
+    babel-runtime "^6.26.0"
+    babel-template "^6.26.0"
+    babel-types "^6.26.0"
+
+babel-plugin-transform-es2015-modules-systemjs@^6.23.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23"
+  dependencies:
+    babel-helper-hoist-variables "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+
+babel-plugin-transform-es2015-modules-umd@^6.23.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468"
+  dependencies:
+    babel-plugin-transform-es2015-modules-amd "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+
+babel-plugin-transform-es2015-object-super@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d"
+  dependencies:
+    babel-helper-replace-supers "^6.24.1"
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-parameters@^6.23.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"
+  dependencies:
+    babel-helper-call-delegate "^6.24.1"
+    babel-helper-get-function-arity "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-shorthand-properties@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-spread@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-sticky-regex@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"
+  dependencies:
+    babel-helper-regex "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-template-literals@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-typeof-symbol@^6.23.0:
+  version "6.23.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-unicode-regex@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9"
+  dependencies:
+    babel-helper-regex "^6.24.1"
+    babel-runtime "^6.22.0"
+    regexpu-core "^2.0.0"
+
+babel-plugin-transform-exponentiation-operator@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e"
+  dependencies: