Repository: mapbox/mr-ui
Pull request #80 (2019-04-18 20:58:30)

MRC Migration Guide
This PR adds the start of a mapbox react components migration guide that brings in what we learned migrating icons and popovers in studio. We'll continue to update this component-by-component as we migrate them

Closes https://github.com/mapbox/mr-ui/issues/74


Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3f20f21..42a4632 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,25 +1,5 @@
 # Changelog
 
-## 0.9.1
-- [fix] Initialize `Clipboard` in **CopyButton** after it is destroyed so it can be copied again.
-
-## 0.9.0
-- [feature] Allow **ControlText** `value` to accept a number or a string.
-- [fix] Destroy `Clipboard` after copy in **CopyButton** to prevent exaggerated scroll length in scrolled code snippets.
-
-## 0.8.0
-- [feature] Add `aria-label` to all components, test cases, and examples with buttons.
-
-## 0.7.4
-- [fix] Allow **TabList** label to accept a node.
-
-## 0.7.3
-- [feature] Allow the **CopyButton** and **Copiable** components to pass through the `focusTrapPaused` prop.
-
-## 0.7.2
-- [feature] Update `react-aria-modal` to v4.
-- [feature] Allow the **modal** component to pass through the `focusTrapPaused` prop.
-
 ## 0.7.1
 - [fix] Evaluate parentNode before removeChild in **page-loading-indicator** component.
 
diff --git a/docs/mapbox-react-components-migration-guide.md b/docs/mapbox-react-components-migration-guide.md
new file mode 100644
index 0000000..1d904ab
--- /dev/null
+++ b/docs/mapbox-react-components-migration-guide.md
@@ -0,0 +1,10 @@
+# Mapbox React Components Migration Guide
+A running document that itemizes the differences between MRC and MR-UI components to aid migrating from one to the other
+
+## Icon
+Passing nested props to the Mr-UI icon will cause `shallowEqualObjects` to throw an error. If you spread props into an icon, you should be doubly aware of this change.
+
+MRC's `themeIcon` prop has been replaced by `passthroughProps.className`.
+
+## Popover
+MRC's `themePopover` prop has been replaced by `passthroughProps.className`.
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 306e771..ea84833 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
 {
   "name": "@mapbox/mr-ui",
-  "version": "0.9.1",
+  "version": "0.7.1",
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
@@ -1333,29 +1333,6 @@
         "any-observable": "^0.3.0"
       }
     },
-    "@types/events": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz",
-      "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==",
-      "dev": true
-    },
-    "@types/glob": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz",
-      "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==",
-      "dev": true,
-      "requires": {
-        "@types/events": "*",
-        "@types/minimatch": "*",
-        "@types/node": "*"
-      }
-    },
-    "@types/minimatch": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
-      "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
-      "dev": true
-    },
     "@types/node": {
       "version": "10.12.11",
       "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.11.tgz",
@@ -1885,6 +1862,12 @@
       "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
       "dev": true
     },
+    "async": {
+      "version": "1.5.2",
+      "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+      "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+      "dev": true
+    },
     "async-each": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
@@ -3183,16 +3166,6 @@
       "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==",
       "dev": true
     },
-    "bindings": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
-      "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "file-uri-to-path": "1.0.0"
-      }
-    },
     "block-elements": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/block-elements/-/block-elements-1.2.0.tgz",
@@ -3211,6 +3184,50 @@
       "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
       "dev": true
     },
+    "body-parser": {
+      "version": "1.18.3",
+      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
+      "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=",
+      "dev": true,
+      "requires": {
+        "bytes": "3.0.0",
+        "content-type": "~1.0.4",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "http-errors": "~1.6.3",
+        "iconv-lite": "0.4.23",
+        "on-finished": "~2.3.0",
+        "qs": "6.5.2",
+        "raw-body": "2.3.3",
+        "type-is": "~1.6.16"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "iconv-lite": {
+          "version": "0.4.23",
+          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
+          "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
+          "dev": true,
+          "requires": {
+            "safer-buffer": ">= 2.1.2 < 3"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
+      }
+    },
     "bonjour": {
       "version": "3.5.0",
       "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
@@ -3983,6 +4000,55 @@
       "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
       "dev": true
     },
+    "compressible": {
+      "version": "2.0.15",
+      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz",
+      "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==",
+      "dev": true,
+      "requires": {
+        "mime-db": ">= 1.36.0 < 2"
+      },
+      "dependencies": {
+        "mime-db": {
+          "version": "1.37.0",
+          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
+          "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==",
+          "dev": true
+        }
+      }
+    },
+    "compression": {
+      "version": "1.7.3",
+      "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz",
+      "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==",
+      "dev": true,
+      "requires": {
+        "accepts": "~1.3.5",
+        "bytes": "3.0.0",
+        "compressible": "~2.0.14",
+        "debug": "2.6.9",
+        "on-headers": "~1.0.1",
+        "safe-buffer": "5.1.2",
+        "vary": "~1.1.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
+      }
+    },
     "concat-map": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -4003,7 +4069,7 @@
       "dependencies": {
         "readable-stream": {
           "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+          "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
           "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
           "dev": true,
           "requires": {
@@ -4018,7 +4084,7 @@
         },
         "string_decoder": {
           "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+          "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
           "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
           "dev": true,
           "requires": {
@@ -4027,6 +4093,12 @@
         }
       }
     },
+    "connect-history-api-fallback": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz",
+      "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=",
+      "dev": true
+    },
     "console-browserify": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
@@ -4069,6 +4141,12 @@
         "safe-buffer": "~5.1.1"
       }
     },
+    "cookie": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
+      "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
+      "dev": true
+    },
     "cookie-signature": {
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
@@ -4482,6 +4560,16 @@
       "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
       "dev": true
     },
+    "default-gateway": {
+      "version": "2.7.2",
+      "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-2.7.2.tgz",
+      "integrity": "sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ==",
+      "dev": true,
+      "requires": {
+        "execa": "^0.10.0",
+        "ip-regex": "^2.1.0"
+      }
+    },
     "default-require-extensions": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz",
@@ -4818,7 +4906,7 @@
       "dependencies": {
         "readable-stream": {
           "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+          "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
           "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
           "dev": true,
           "requires": {
@@ -4833,7 +4921,7 @@
         },
         "string_decoder": {
           "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+          "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
           "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
           "dev": true,
           "requires": {
@@ -5406,21 +5494,10 @@
       }
     },
     "eslint-utils": {
-      "version": "1.4.3",
-      "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
-      "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
-      "dev": true,
-      "requires": {
-        "eslint-visitor-keys": "^1.1.0"
-      },
-      "dependencies": {
-        "eslint-visitor-keys": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
-          "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
-          "dev": true
-        }
-      }
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz",
+      "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==",
+      "dev": true
     },
     "eslint-visitor-keys": {
       "version": "1.0.0",
@@ -5686,6 +5763,73 @@
         "jest-regex-util": "^23.3.0"
       }
     },
+    "express": {
+      "version": "4.16.4",
+      "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz",
+      "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==",
+      "dev": true,
+      "requires": {
+        "accepts": "~1.3.5",
+        "array-flatten": "1.1.1",
+        "body-parser": "1.18.3",
+        "content-disposition": "0.5.2",
+        "content-type": "~1.0.4",
+        "cookie": "0.3.1",
+        "cookie-signature": "1.0.6",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "finalhandler": "1.1.1",
+        "fresh": "0.5.2",
+        "merge-descriptors": "1.0.1",
+        "methods": "~1.1.2",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.2",
+        "path-to-regexp": "0.1.7",
+        "proxy-addr": "~2.0.4",
+        "qs": "6.5.2",
+        "range-parser": "~1.2.0",
+        "safe-buffer": "5.1.2",
+        "send": "0.16.2",
+        "serve-static": "1.13.2",
+        "setprototypeof": "1.1.0",
+        "statuses": "~1.4.0",
+        "type-is": "~1.6.16",
+        "utils-merge": "1.0.1",
+        "vary": "~1.1.2"
+      },
+      "dependencies": {
+        "array-flatten": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+          "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
+          "dev": true
+        },
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        },
+        "path-to-regexp": {
+          "version": "0.1.7",
+          "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+          "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
+          "dev": true
+        }
+      }
+    },
     "extend": {
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
@@ -5941,13 +6085,6 @@
         "schema-utils": "^1.0.0"
       }
     },
-    "file-uri-to-path": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
-      "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
-      "dev": true,
-      "optional": true
-    },
     "filename-regex": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
@@ -6014,6 +6151,38 @@
         }
       }
     },
+    "finalhandler": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
+      "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
+      "dev": true,
+      "requires": {
+        "debug": "2.6.9",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.2",
+        "statuses": "~1.4.0",
+        "unpipe": "~1.0.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
+      }
+    },
     "find-cache-dir": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz",
@@ -6087,7 +6256,7 @@
       "dependencies": {
         "readable-stream": {
           "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+          "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
           "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
           "dev": true,
           "requires": {
@@ -6102,7 +6271,7 @@
         },
         "string_decoder": {
           "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+          "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
           "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
           "dev": true,
           "requires": {
@@ -6127,27 +6296,11 @@
       }
     },
     "focus-trap-react": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/focus-trap-react/-/focus-trap-react-6.0.0.tgz",
-      "integrity": "sha512-mvEYxmP75PMx0vOqoIAmJHO/qUEvdTAdz6gLlEZyxxODnuKQdnKea2RWTYxghAPrV+ibiIq2o/GTSgQycnAjcw==",
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/focus-trap-react/-/focus-trap-react-4.0.1.tgz",
+      "integrity": "sha512-UUZKVEn5cFbF6yUnW7lbXNW0iqN617ShSqYKgxctUvWw1wuylLtyVmC0RmPQNnJ/U+zoKc/djb0tZMs0uN/0QQ==",
       "requires": {
-        "focus-trap": "^4.0.2"
-      },
-      "dependencies": {
-        "focus-trap": {
-          "version": "4.0.2",
-          "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-4.0.2.tgz",
-          "integrity": "sha512-HtLjfAK7Hp2qbBtLS6wEznID1mPT+48ZnP2nkHzgjpL4kroYHg0CdqJ5cTXk+UO5znAxF5fRUkhdyfgrhh8Lzw==",
-          "requires": {
-            "tabbable": "^3.1.2",
-            "xtend": "^4.0.1"
-          }
-        },
-        "tabbable": {
-          "version": "3.1.2",
-          "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-3.1.2.tgz",
-          "integrity": "sha512-wjB6puVXTYO0BSFtCmWQubA/KIn7Xvajw0x0l6eJUudMG/EAiJvIUnyNX6xO4NpGrJ16lbD0eUseB9WxW0vlpQ=="
-        }
+        "focus-trap": "^3.0.0"
       }
     },
     "follow-redirects": {
@@ -6247,7 +6400,7 @@
       "dependencies": {
         "readable-stream": {
           "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+          "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
           "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
           "dev": true,
           "requires": {
@@ -6262,7 +6415,7 @@
         },
         "string_decoder": {
           "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+          "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
           "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
           "dev": true,
           "requires": {
@@ -6311,7 +6464,7 @@
       "dependencies": {
         "readable-stream": {
           "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+          "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
           "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
           "dev": true,
           "requires": {
@@ -6326,7 +6479,7 @@
         },
         "string_decoder": {
           "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+          "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
           "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
           "dev": true,
           "requires": {
@@ -6361,8 +6514,7 @@
         "ansi-regex": {
           "version": "2.1.1",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "aproba": {
           "version": "1.2.0",
@@ -6383,14 +6535,12 @@
         "balanced-match": {
           "version": "1.0.0",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "brace-expansion": {
           "version": "1.1.11",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "balanced-match": "^1.0.0",
             "concat-map": "0.0.1"
@@ -6405,20 +6555,17 @@
         "code-point-at": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "concat-map": {
           "version": "0.0.1",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "console-control-strings": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "core-util-is": {
           "version": "1.0.2",
@@ -6535,8 +6682,7 @@
         "inherits": {
           "version": "2.0.3",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "ini": {
           "version": "1.3.5",
@@ -6548,7 +6694,6 @@
           "version": "1.0.0",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "number-is-nan": "^1.0.0"
           }
@@ -6563,7 +6708,6 @@
           "version": "3.0.4",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "brace-expansion": "^1.1.7"
           }
@@ -6571,14 +6715,12 @@
         "minimist": {
           "version": "0.0.8",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "minipass": {
           "version": "2.2.4",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "safe-buffer": "^5.1.1",
             "yallist": "^3.0.0"
@@ -6597,7 +6739,6 @@
           "version": "0.5.1",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "minimist": "0.0.8"
           }
@@ -6678,8 +6819,7 @@
         "number-is-nan": {
           "version": "1.0.1",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "object-assign": {
           "version": "4.1.1",
@@ -6691,7 +6831,6 @@
           "version": "1.4.0",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "wrappy": "1"
           }
@@ -6777,8 +6916,7 @@
         "safe-buffer": {
           "version": "5.1.1",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "safer-buffer": {
           "version": "2.1.2",
@@ -6814,7 +6952,6 @@
           "version": "1.0.2",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "code-point-at": "^1.0.0",
             "is-fullwidth-code-point": "^1.0.0",
@@ -6834,7 +6971,6 @@
           "version": "3.0.1",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "ansi-regex": "^2.0.0"
           }
@@ -6878,14 +7014,12 @@
         "wrappy": {
           "version": "1.0.2",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "yallist": {
           "version": "3.0.2",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         }
       }
     },
@@ -7165,18 +7299,33 @@
       "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==",
       "dev": true
     },
+    "handle-thing": {
+      "version": "1.2.5",
+      "resolved": "http://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz",
+      "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=",
+      "dev": true
+    },
     "handlebars": {
-      "version": "4.5.3",
-      "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz",
-      "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==",
+      "version": "4.0.12",
+      "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz",
+      "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==",
       "dev": true,
       "requires": {
-        "neo-async": "^2.6.0",
+        "async": "^2.5.0",
         "optimist": "^0.6.1",
         "source-map": "^0.6.1",
         "uglify-js": "^3.1.4"
       },
       "dependencies": {
+        "async": {
+          "version": "2.6.1",
+          "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
+          "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
+          "dev": true,
+          "requires": {
+            "lodash": "^4.17.10"
+          }
+        },
         "source-map": {
           "version": "0.6.1",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -7438,7 +7587,7 @@
       "dependencies": {
         "readable-stream": {
           "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+          "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
           "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
           "dev": true,
           "requires": {
@@ -7453,7 +7602,7 @@
         },
         "string_decoder": {
           "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+          "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
           "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
           "dev": true,
           "requires": {
@@ -7549,7 +7698,7 @@
       "dependencies": {
         "domelementtype": {
           "version": "1.3.0",
-          "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
+          "resolved": "http://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
           "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=",
           "dev": true
         }
@@ -7590,6 +7739,18 @@
         "requires-port": "^1.0.0"
       }
     },
+    "http-proxy-middleware": {
+      "version": "0.18.0",
+      "resolved": "http://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz",
+      "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==",
+      "dev": true,
+      "requires": {
+        "http-proxy": "^1.16.2",
+        "is-glob": "^4.0.0",
+        "lodash": "^4.17.5",
+        "micromatch": "^3.1.9"
+      }
+    },
     "http-signature": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
@@ -7875,6 +8036,16 @@
         }
       }
     },
+    "internal-ip": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-3.0.1.tgz",
+      "integrity": "sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q==",
+      "dev": true,
+      "requires": {
+        "default-gateway": "^2.6.0",
+        "ipaddr.js": "^1.5.2"
+      }
+    },
     "invariant": {
       "version": "2.2.4",
       "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
@@ -7902,18 +8073,18 @@
       "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=",
       "dev": true
     },
+    "ipaddr.js": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
+      "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=",
+      "dev": true
+    },
     "irregular-plurals": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-2.0.0.tgz",
       "integrity": "sha512-Y75zBYLkh0lJ9qxeHlMjQ7bSbyiSqNW/UOPWDmzC7cXskL1hekSITh1Oc6JV0XCWWZ9DE8VYSB71xocLk3gmGw==",
       "dev": true
     },
-    "is-absolute-url": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
-      "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
-      "dev": true
-    },
     "is-accessor-descriptor": {
       "version": "0.1.6",
       "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
@@ -10161,7 +10332,7 @@
       "dependencies": {
         "json5": {
           "version": "0.5.1",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+          "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
           "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
           "dev": true
         }
@@ -10178,9 +10349,9 @@
       }
     },
     "lodash": {
-      "version": "4.17.13",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.13.tgz",
-      "integrity": "sha512-vm3/XWXfWtRua0FkUyEHBZy8kCPjErNBT9fJx8Zvs+U6zjqPbTUOpkaoum3O5uiA8sm+yNMHXfYkTUHFoMxFNA==",
+      "version": "4.17.11",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+      "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
       "dev": true
     },
     "lodash.assign": {
@@ -10256,9 +10427,9 @@
       "dev": true
     },
     "lodash.merge": {
-      "version": "4.6.2",
-      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
-      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+      "version": "4.6.1",
+      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz",
+      "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==",
       "dev": true
     },
     "lodash.pick": {
@@ -10354,6 +10525,12 @@
         }
       }
     },
+    "loglevel": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz",
+      "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=",
+      "dev": true
+    },
     "longest-streak": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.2.tgz",
@@ -10575,7 +10752,7 @@
       "dependencies": {
         "readable-stream": {
           "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+          "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
           "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
           "dev": true,
           "requires": {
@@ -10590,7 +10767,7 @@
         },
         "string_decoder": {
           "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+          "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
           "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
           "dev": true,
           "requires": {
@@ -10639,7 +10816,7 @@
       "dependencies": {
         "readable-stream": {
           "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+          "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
           "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
           "dev": true,
           "requires": {
@@ -10654,7 +10831,7 @@
         },
         "string_decoder": {
           "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+          "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
           "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
           "dev": true,
           "requires": {
@@ -10800,9 +10977,9 @@
       }
     },
     "mixin-deep": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
-      "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
+      "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
       "dev": true,
       "requires": {
         "for-in": "^1.0.2",
@@ -10998,6 +11175,12 @@
       "integrity": "sha1-Mcur63GmeufdWn3AQuUcPHWGhQE=",
       "dev": true
     },
+    "node-forge": {
+      "version": "0.7.5",
+      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz",
+      "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==",
+      "dev": true
+    },
     "node-int64": {
       "version": "0.4.0",
       "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
@@ -11043,7 +11226,7 @@
         },
         "readable-stream": {
           "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+          "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
           "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
           "dev": true,
           "requires": {
@@ -11058,7 +11241,7 @@
           "dependencies": {
             "string_decoder": {
               "version": "1.1.1",
-              "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+              "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
               "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
               "dev": true,
               "requires": {
@@ -11379,6 +11562,12 @@
         "ee-first": "1.1.1"
       }
     },
+    "on-headers": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
+      "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=",
+      "dev": true
+    },
     "once": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -11397,6 +11586,15 @@
         "mimic-fn": "^1.0.0"
       }
     },
+    "opn": {
+      "version": "5.4.0",
+      "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz",
+      "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==",
+      "dev": true,
+      "requires": {
+        "is-wsl": "^1.1.0"
+      }
+    },
     "optimist": {
       "version": "0.6.1",
       "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
@@ -11531,15 +11729,6 @@
       "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==",
       "dev": true
     },
-    "p-retry": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz",
-      "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==",
-      "dev": true,
-      "requires": {
-        "retry": "^0.12.0"
-      }
-    },
     "p-try": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
@@ -11565,7 +11754,7 @@
       "dependencies": {
         "readable-stream": {
           "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+          "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
           "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
           "dev": true,
           "requires": {
@@ -11580,7 +11769,7 @@
         },
         "string_decoder": {
           "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+          "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
           "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
           "dev": true,
           "requires": {
@@ -11842,6 +12031,34 @@
       "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.14.6.tgz",
       "integrity": "sha512-AGwHGQBKumlk/MDfrSOf0JHhJCImdDMcGNoqKmKkU+68GFazv3CQ6q9r7Ja1sKDZmYWTckY/uLyEznheTDycnA=="
     },
+    "portfinder": {
+      "version": "1.0.19",
+      "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.19.tgz",
+      "integrity": "sha512-23aeQKW9KgHe6citUrG3r9HjeX6vls0h713TAa+CwTKZwNIr/pD2ApaxYF4Um3ZZyq4ar+Siv3+fhoHaIwSOSw==",
+      "dev": true,
+      "requires": {
+        "async": "^1.5.2",
+        "debug": "^2.2.0",
+        "mkdirp": "0.5.x"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
+      }
+    },
     "posix-character-classes": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
@@ -12103,6 +12320,16 @@
         "levenshtein-edit-distance": "^1.0.0"
       }
     },
+    "proxy-addr": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
+      "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
+      "dev": true,
+      "requires": {
+        "forwarded": "~0.1.2",
+        "ipaddr.js": "1.8.0"
+      }
+    },
     "prr": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
@@ -12289,6 +12516,29 @@
       "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
       "dev": true
     },
+    "raw-body": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
+      "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
+      "dev": true,
+      "requires": {
+        "bytes": "3.0.0",
+        "http-errors": "1.6.3",
+        "iconv-lite": "0.4.23",
+        "unpipe": "1.0.0"
+      },
+      "dependencies": {
+        "iconv-lite": {
+          "version": "0.4.23",
+          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
+          "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
+          "dev": true,
+          "requires": {
+            "safer-buffer": ">= 2.1.2 < 3"
+          }
+        }
+      }
+    },
     "rc": {
       "version": "1.2.8",
       "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
@@ -12314,11 +12564,11 @@
       }
     },
     "react-aria-modal": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/react-aria-modal/-/react-aria-modal-4.0.0.tgz",
-      "integrity": "sha512-crdEAIHc5xXi6YqZeUgRDJN1uromSehU1XSEegVPU8/okmf1tEDwnzb6ULl+PJy4aS6sb6fUiWEdMNTLAX2HBA==",
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/react-aria-modal/-/react-aria-modal-3.0.1.tgz",
+      "integrity": "sha512-H0pV5ITXe6JCQAUGoSiSncfTeGunImT8KFzLLMisuzOzsG4X7GZQJGcjk6uSwZmvwZpHL+EjMwRD+vJZx3nG8g==",
       "requires": {
-        "focus-trap-react": "^6.0.0",
+        "focus-trap-react": "^4.0.0",
         "no-scroll": "^2.1.1",
         "react-displace": "^2.3.0"
       }
@@ -12500,7 +12750,7 @@
       "dependencies": {
         "readable-stream": {
           "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+          "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
           "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
           "dev": true,
           "requires": {
@@ -12515,7 +12765,7 @@
         },
         "string_decoder": {
           "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+          "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
           "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
           "dev": true,
           "requires": {
@@ -13240,12 +13490,6 @@
       "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
       "dev": true
     },
-    "retry": {
-      "version": "0.12.0",
-      "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
-      "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
-      "dev": true
-    },
     "rimraf": {
       "version": "2.6.2",
       "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
@@ -13384,6 +13628,15 @@
       "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
       "dev": true
     },
+    "selfsigned": {
+      "version": "1.10.4",
+      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz",
+      "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==",
+      "dev": true,
+      "requires": {
+        "node-forge": "0.7.5"
+      }
+    },
     "semver": {
       "version": "5.6.0",
       "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
@@ -13396,6 +13649,50 @@
       "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
       "dev": true
     },
+    "send": {
+      "version": "0.16.2",
+      "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
+      "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
+      "dev": true,
+      "requires": {
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "destroy": "~1.0.4",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "fresh": "0.5.2",
+        "http-errors": "~1.6.2",
+        "mime": "1.4.1",
+        "ms": "2.0.0",
+        "on-finished": "~2.3.0",
+        "range-parser": "~1.2.0",
+        "statuses": "~1.4.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "mime": {
+          "version": "1.4.1",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
+          "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
+          "dev": true
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
+      }
+    },
     "serialize-javascript": {
       "version": "1.5.0",
       "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz",
@@ -13450,6 +13747,18 @@
         }
       }
     },
+    "serve-static": {
+      "version": "1.13.2",
+      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
+      "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
+      "dev": true,
+      "requires": {
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.2",
+        "send": "0.16.2"
+      }
+    },
     "set-blocking": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
@@ -13720,6 +14029,40 @@
         "uuid": "^3.0.1"
       }
     },
+    "sockjs-client": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz",
+      "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==",
+      "dev": true,
+      "requires": {
+        "debug": "^3.2.5",
+        "eventsource": "^1.0.7",
+        "faye-websocket": "~0.11.1",
+        "inherits": "^2.0.3",
+        "json3": "^3.3.2",
+        "url-parse": "^1.4.3"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.6",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "faye-websocket": {
+          "version": "0.11.1",
+          "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz",
+          "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=",
+          "dev": true,
+          "requires": {
+            "websocket-driver": ">=0.5.1"
+          }
+        }
+      }
+    },
     "sort-keys": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
@@ -13810,6 +14153,93 @@
       "integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==",
       "dev": true
     },
+    "spdy": {
+      "version": "3.4.7",
+      "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz",
+      "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=",
+      "dev": true,
+      "requires": {
+        "debug": "^2.6.8",
+        "handle-thing": "^1.2.5",
+        "http-deceiver": "^1.2.7",
+        "safe-buffer": "^5.0.1",
+        "select-hose": "^2.0.0",
+        "spdy-transport": "^2.0.18"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
+      }
+    },
+    "spdy-transport": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.1.tgz",
+      "integrity": "sha512-q7D8c148escoB3Z7ySCASadkegMmUZW8Wb/Q1u0/XBgDKMO880rLQDj8Twiew/tYi7ghemKUi/whSYOwE17f5Q==",
+      "dev": true,
+      "requires": {
+        "debug": "^2.6.8",
+        "detect-node": "^2.0.3",
+        "hpack.js": "^2.1.6",
+        "obuf": "^1.1.1",
+        "readable-stream": "^2.2.9",
+        "safe-buffer": "^5.0.1",
+        "wbuf": "^1.7.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        },
+        "readable-stream": {
+          "version": "2.3.6",
+          "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+          "dev": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.3",
+            "isarray": "~1.0.0",
+            "process-nextick-args": "~2.0.0",
+            "safe-buffer": "~5.1.1",
+            "string_decoder": "~1.1.1",
+            "util-deprecate": "~1.0.1"
+          }
+        },
+        "string_decoder": {
+          "version": "1.1.1",
+          "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+          "dev": true,
+          "requires": {
+            "safe-buffer": "~5.1.0"
+          }
+        }
+      }
+    },
     "split-string": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
@@ -13914,7 +14344,7 @@
       "dependencies": {
         "readable-stream": {
           "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+          "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
           "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
           "dev": true,
           "requires": {
@@ -13929,7 +14359,7 @@
         },
         "string_decoder": {
           "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+          "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
           "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
           "dev": true,
           "requires": {
@@ -14628,7 +15058,7 @@
       "dependencies": {
         "readable-stream": {
           "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+          "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
           "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
           "dev": true,
           "requires": {
@@ -14643,7 +15073,7 @@
         },
         "string_decoder": {
           "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+          "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
           "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
           "dev": true,
           "requires": {
@@ -14758,12 +15188,6 @@
         "x-is-function": "^1.0.4"
       }
     },
-    "toidentifier": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
-      "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
-      "dev": true
-    },
     "toposort": {
       "version": "1.0.7",
       "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz",
@@ -14870,6 +15294,16 @@
         "prelude-ls": "~1.1.2"
       }
     },
+    "type-is": {
+      "version": "1.6.16",
+      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
+      "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
+      "dev": true,
+      "requires": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.18"
+      }
+    },
     "typedarray": {
       "version": "0.0.6",
       "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
@@ -15706,1384 +16140,166 @@
         }
       }
     },
+    "webpack-dev-middleware": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz",
+      "integrity": "sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA==",
+      "dev": true,
+      "requires": {
+        "memory-fs": "~0.4.1",
+        "mime": "^2.3.1",
+        "range-parser": "^1.0.3",
+        "webpack-log": "^2.0.0"
+      }
+    },
     "webpack-dev-server": {
-      "version": "3.9.0",
-      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.9.0.tgz",
-      "integrity": "sha512-E6uQ4kRrTX9URN9s/lIbqTAztwEPdvzVrcmHE8EQ9YnuT9J8Es5Wrd8n9BKg1a0oZ5EgEke/EQFgUsp18dSTBw==",
+      "version": "3.1.10",
+      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.10.tgz",
+      "integrity": "sha512-RqOAVjfqZJtQcB0LmrzJ5y4Jp78lv9CK0MZ1YJDTaTmedMZ9PU9FLMQNrMCfVu8hHzaVLVOJKBlGEHMN10z+ww==",
       "dev": true,
       "requires": {
         "ansi-html": "0.0.7",
         "bonjour": "^3.5.0",
-        "chokidar": "^2.1.8",
-        "compression": "^1.7.4",
-        "connect-history-api-fallback": "^1.6.0",
-        "debug": "^4.1.1",
-        "del": "^4.1.1",
-        "express": "^4.17.1",
-        "html-entities": "^1.2.1",
-        "http-proxy-middleware": "0.19.1",
+        "chokidar": "^2.0.0",
+        "compression": "^1.5.2",
+        "connect-history-api-fallback": "^1.3.0",
+        "debug": "^3.1.0",
+        "del": "^3.0.0",
+        "express": "^4.16.2",
+        "html-entities": "^1.2.0",
+        "http-proxy-middleware": "~0.18.0",
         "import-local": "^2.0.0",
-        "internal-ip": "^4.3.0",
+        "internal-ip": "^3.0.1",
         "ip": "^1.1.5",
-        "is-absolute-url": "^3.0.3",
-        "killable": "^1.0.1",
-        "loglevel": "^1.6.4",
-        "opn": "^5.5.0",
-        "p-retry": "^3.0.1",
-        "portfinder": "^1.0.25",
+        "killable": "^1.0.0",
+        "loglevel": "^1.4.1",
+        "opn": "^5.1.0",
+        "portfinder": "^1.0.9",
         "schema-utils": "^1.0.0",
-        "selfsigned": "^1.10.7",
-        "semver": "^6.3.0",
-        "serve-index": "^1.9.1",
+        "selfsigned": "^1.9.1",
+        "serve-index": "^1.7.2",
         "sockjs": "0.3.19",
-        "sockjs-client": "1.4.0",
-        "spdy": "^4.0.1",
-        "strip-ansi": "^3.0.1",
-        "supports-color": "^6.1.0",
-        "url": "^0.11.0",
-        "webpack-dev-middleware": "^3.7.2",
+        "sockjs-client": "1.3.0",
+        "spdy": "^3.4.1",
+        "strip-ansi": "^3.0.0",
+        "supports-color": "^5.1.0",
+        "webpack-dev-middleware": "3.4.0",
         "webpack-log": "^2.0.0",
-        "ws": "^6.2.1",
-        "yargs": "12.0.5"
+        "yargs": "12.0.2"
       },
       "dependencies": {
-        "array-flatten": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
-          "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
           "dev": true
         },
-        "async": {
-          "version": "2.6.3",
-          "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
-          "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
+        "debug": {
+          "version": "3.2.6",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
           "dev": true,
           "requires": {
-            "lodash": "^4.17.14"
-          },
-          "dependencies": {
-            "lodash": {
-              "version": "4.17.15",
-              "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
-              "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
-              "dev": true
-            }
+            "ms": "^2.1.1"
           }
         },
-        "body-parser": {
-          "version": "1.19.0",
-          "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
-          "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
+        "decamelize": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz",
+          "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==",
           "dev": true,
           "requires": {
-            "bytes": "3.1.0",
-            "content-type": "~1.0.4",
-            "debug": "2.6.9",
-            "depd": "~1.1.2",
-            "http-errors": "1.7.2",
-            "iconv-lite": "0.4.24",
-            "on-finished": "~2.3.0",
-            "qs": "6.7.0",
-            "raw-body": "2.4.0",
-            "type-is": "~1.6.17"
-          },
-          "dependencies": {
-            "bytes": {
-              "version": "3.1.0",
-              "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
-              "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
-              "dev": true
-            },
-            "debug": {
-              "version": "2.6.9",
-              "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-              "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-              "dev": true,
-              "requires": {
-                "ms": "2.0.0"
-              }
-            }
-          }
-        },
-        "chokidar": {
-          "version": "2.1.8",
-          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
-          "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
-          "dev": true,
-          "requires": {
-            "anymatch": "^2.0.0",
-            "async-each": "^1.0.1",
-            "braces": "^2.3.2",
-            "fsevents": "^1.2.7",
-            "glob-parent": "^3.1.0",
-            "inherits": "^2.0.3",
-            "is-binary-path": "^1.0.0",
-            "is-glob": "^4.0.0",
-            "normalize-path": "^3.0.0",
-            "path-is-absolute": "^1.0.0",
-            "readdirp": "^2.2.1",
-            "upath": "^1.1.1"
-          }
-        },
-        "compressible": {
-          "version": "2.0.17",
-          "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz",
-          "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==",
-          "dev": true,
-          "requires": {
-            "mime-db": ">= 1.40.0 < 2"
-          }
-        },
-        "compression": {
-          "version": "1.7.4",
-          "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
-          "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
-          "dev": true,
-          "requires": {
-            "accepts": "~1.3.5",
-            "bytes": "3.0.0",
-            "compressible": "~2.0.16",
-            "debug": "2.6.9",
-            "on-headers": "~1.0.2",
-            "safe-buffer": "5.1.2",
-            "vary": "~1.1.2"
-          },
-          "dependencies": {
-            "debug": {
-              "version": "2.6.9",
-              "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-              "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-              "dev": true,
-              "requires": {
-                "ms": "2.0.0"
-              }
-            }
-          }
-        },
-        "connect-history-api-fallback": {
-          "version": "1.6.0",
-          "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
-          "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
-          "dev": true
-        },
-        "content-disposition": {
-          "version": "0.5.3",
-          "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
-          "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
-          "dev": true,
-          "requires": {
-            "safe-buffer": "5.1.2"
-          }
-        },
-        "cookie": {
-          "version": "0.4.0",
-          "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
-          "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
-          "dev": true
-        },
-        "cross-spawn": {
-          "version": "6.0.5",
-          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
-          "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
-          "dev": true,
-          "requires": {
-            "nice-try": "^1.0.4",
-            "path-key": "^2.0.1",
-            "semver": "^5.5.0",
-            "shebang-command": "^1.2.0",
-            "which": "^1.2.9"
-          },
-          "dependencies": {
-            "semver": {
-              "version": "5.7.1",
-              "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-              "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-              "dev": true
-            }
-          }
-        },
-        "debug": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-          "dev": true,
-          "requires": {
-            "ms": "^2.1.1"
-          },
-          "dependencies": {
-            "ms": {
-              "version": "2.1.2",
-              "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-              "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-              "dev": true
-            }
-          }
-        },
-        "default-gateway": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz",
-          "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==",
-          "dev": true,
-          "requires": {
-            "execa": "^1.0.0",
-            "ip-regex": "^2.1.0"
-          }
-        },
-        "del": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz",
-          "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
-          "dev": true,
-          "requires": {
-            "@types/glob": "^7.1.1",
-            "globby": "^6.1.0",
-            "is-path-cwd": "^2.0.0",
-            "is-path-in-cwd": "^2.0.0",
-            "p-map": "^2.0.0",
-            "pify": "^4.0.1",
-            "rimraf": "^2.6.3"
-          }
-        },
-        "execa": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
-          "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
-          "dev": true,
-          "requires": {
-            "cross-spawn": "^6.0.0",
-            "get-stream": "^4.0.0",
-            "is-stream": "^1.1.0",
-            "npm-run-path": "^2.0.0",
-            "p-finally": "^1.0.0",
-            "signal-exit": "^3.0.0",
-            "strip-eof": "^1.0.0"
-          }
-        },
-        "express": {
-          "version": "4.17.1",
-          "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
-          "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
-          "dev": true,
-          "requires": {
-            "accepts": "~1.3.7",
-            "array-flatten": "1.1.1",
-            "body-parser": "1.19.0",
-            "content-disposition": "0.5.3",
-            "content-type": "~1.0.4",
-            "cookie": "0.4.0",
-            "cookie-signature": "1.0.6",
-            "debug": "2.6.9",
-            "depd": "~1.1.2",
-            "encodeurl": "~1.0.2",
-            "escape-html": "~1.0.3",
-            "etag": "~1.8.1",
-            "finalhandler": "~1.1.2",
-            "fresh": "0.5.2",
-            "merge-descriptors": "1.0.1",
-            "methods": "~1.1.2",
-            "on-finished": "~2.3.0",
-            "parseurl": "~1.3.3",
-            "path-to-regexp": "0.1.7",
-            "proxy-addr": "~2.0.5",
-            "qs": "6.7.0",
-            "range-parser": "~1.2.1",
-            "safe-buffer": "5.1.2",
-            "send": "0.17.1",
-            "serve-static": "1.14.1",
-            "setprototypeof": "1.1.1",
-            "statuses": "~1.5.0",
-            "type-is": "~1.6.18",
-            "utils-merge": "1.0.1",
-            "vary": "~1.1.2"
-          },
-          "dependencies": {
-            "accepts": {
-              "version": "1.3.7",
-              "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
-              "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
-              "dev": true,
-              "requires": {
-                "mime-types": "~2.1.24",
-                "negotiator": "0.6.2"
-              }
-            },
-            "debug": {
-              "version": "2.6.9",
-              "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-              "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-              "dev": true,
-              "requires": {
-                "ms": "2.0.0"
-              }
-            }
-          }
-        },
-        "faye-websocket": {
-          "version": "0.11.3",
-          "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz",
-          "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==",
-          "dev": true,
-          "requires": {
-            "websocket-driver": ">=0.5.1"
-          }
-        },
-        "finalhandler": {
-          "version": "1.1.2",
-          "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
-          "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
-          "dev": true,
-          "requires": {
-            "debug": "2.6.9",
-            "encodeurl": "~1.0.2",
-            "escape-html": "~1.0.3",
-            "on-finished": "~2.3.0",
-            "parseurl": "~1.3.3",
-            "statuses": "~1.5.0",
-            "unpipe": "~1.0.0"
-          },
-          "dependencies": {
-            "debug": {
-              "version": "2.6.9",
-              "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-              "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-              "dev": true,
-              "requires": {
-                "ms": "2.0.0"
-              }
-            }
-          }
-        },
-        "fsevents": {
-          "version": "1.2.11",
-          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz",
-          "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "bindings": "^1.5.0",
-            "nan": "^2.12.1",
-            "node-pre-gyp": "*"
-          },
-          "dependencies": {
-            "abbrev": {
-              "version": "1.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "ansi-regex": {
-              "version": "2.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "aproba": {
-              "version": "1.2.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "are-we-there-yet": {
-              "version": "1.1.5",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "delegates": "^1.0.0",
-                "readable-stream": "^2.0.6"
-              }
-            },
-            "balanced-match": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "brace-expansion": {
-              "version": "1.1.11",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "balanced-match": "^1.0.0",
-                "concat-map": "0.0.1"
-              }
-            },
-            "chownr": {
-              "version": "1.1.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "code-point-at": {
-              "version": "1.1.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "concat-map": {
-              "version": "0.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "console-control-strings": {
-              "version": "1.1.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "core-util-is": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "debug": {
-              "version": "3.2.6",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "ms": "^2.1.1"
-              }
-            },
-            "deep-extend": {
-              "version": "0.6.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "delegates": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "detect-libc": {
-              "version": "1.0.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "fs-minipass": {
-              "version": "1.2.7",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "minipass": "^2.6.0"
-              }
-            },
-            "fs.realpath": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "gauge": {
-              "version": "2.7.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "aproba": "^1.0.3",
-                "console-control-strings": "^1.0.0",
-                "has-unicode": "^2.0.0",
-                "object-assign": "^4.1.0",
-                "signal-exit": "^3.0.0",
-                "string-width": "^1.0.1",
-                "strip-ansi": "^3.0.1",
-                "wide-align": "^1.1.0"
-              }
-            },
-            "glob": {
-              "version": "7.1.6",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "fs.realpath": "^1.0.0",
-                "inflight": "^1.0.4",
-                "inherits": "2",
-                "minimatch": "^3.0.4",
-                "once": "^1.3.0",
-                "path-is-absolute": "^1.0.0"
-              }
-            },
-            "has-unicode": {
-              "version": "2.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "iconv-lite": {
-              "version": "0.4.24",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "safer-buffer": ">= 2.1.2 < 3"
-              }
-            },
-            "ignore-walk": {
-              "version": "3.0.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "minimatch": "^3.0.4"
-              }
-            },
-            "inflight": {
-              "version": "1.0.6",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "once": "^1.3.0",
-                "wrappy": "1"
-              }
-            },
-            "inherits": {
-              "version": "2.0.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "ini": {
-              "version": "1.3.5",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "is-fullwidth-code-point": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "number-is-nan": "^1.0.0"
-              }
-            },
-            "isarray": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "minimatch": {
-              "version": "3.0.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "brace-expansion": "^1.1.7"
-              }
-            },
-            "minimist": {
-              "version": "0.0.8",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "minipass": {
-              "version": "2.9.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "safe-buffer": "^5.1.2",
-                "yallist": "^3.0.0"
-              }
-            },
-            "minizlib": {
-              "version": "1.3.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "minipass": "^2.9.0"
-              }
-            },
-            "mkdirp": {
-              "version": "0.5.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "minimist": "0.0.8"
-              }
-            },
-            "ms": {
-              "version": "2.1.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "needle": {
-              "version": "2.4.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "debug": "^3.2.6",
-                "iconv-lite": "^0.4.4",
-                "sax": "^1.2.4"
-              }
-            },
-            "node-pre-gyp": {
-              "version": "0.14.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "detect-libc": "^1.0.2",
-                "mkdirp": "^0.5.1",
-                "needle": "^2.2.1",
-                "nopt": "^4.0.1",
-                "npm-packlist": "^1.1.6",
-                "npmlog": "^4.0.2",
-                "rc": "^1.2.7",
-                "rimraf": "^2.6.1",
-                "semver": "^5.3.0",
-                "tar": "^4.4.2"
-              }
-            },
-            "nopt": {
-              "version": "4.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "abbrev": "1",
-                "osenv": "^0.1.4"
-              }
-            },
-            "npm-bundled": {
-              "version": "1.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "npm-normalize-package-bin": "^1.0.1"
-              }
-            },
-            "npm-normalize-package-bin": {
-              "version": "1.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "npm-packlist": {
-              "version": "1.4.7",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "ignore-walk": "^3.0.1",
-                "npm-bundled": "^1.0.1"
-              }
-            },
-            "npmlog": {
-              "version": "4.1.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "are-we-there-yet": "~1.1.2",
-                "console-control-strings": "~1.1.0",
-                "gauge": "~2.7.3",
-                "set-blocking": "~2.0.0"
-              }
-            },
-            "number-is-nan": {
-              "version": "1.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "object-assign": {
-              "version": "4.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "once": {
-              "version": "1.4.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "wrappy": "1"
-              }
-            },
-            "os-homedir": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "os-tmpdir": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "osenv": {
-              "version": "0.1.5",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "os-homedir": "^1.0.0",
-                "os-tmpdir": "^1.0.0"
-              }
-            },
-            "path-is-absolute": {
-              "version": "1.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "process-nextick-args": {
-              "version": "2.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "rc": {
-              "version": "1.2.8",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "deep-extend": "^0.6.0",
-                "ini": "~1.3.0",
-                "minimist": "^1.2.0",
-                "strip-json-comments": "~2.0.1"
-              },
-              "dependencies": {
-                "minimist": {
-                  "version": "1.2.0",
-                  "bundled": true,
-                  "dev": true,
-                  "optional": true
-                }
-              }
-            },
-            "readable-stream": {
-              "version": "2.3.6",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "core-util-is": "~1.0.0",
-                "inherits": "~2.0.3",
-                "isarray": "~1.0.0",
-                "process-nextick-args": "~2.0.0",
-                "safe-buffer": "~5.1.1",
-                "string_decoder": "~1.1.1",
-                "util-deprecate": "~1.0.1"
-              }
-            },
-            "rimraf": {
-              "version": "2.7.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "glob": "^7.1.3"
-              }
-            },
-            "safe-buffer": {
-              "version": "5.1.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "safer-buffer": {
-              "version": "2.1.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "sax": {
-              "version": "1.2.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "semver": {
-              "version": "5.7.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "set-blocking": {
-              "version": "2.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "signal-exit": {
-              "version": "3.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "string-width": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "code-point-at": "^1.0.0",
-                "is-fullwidth-code-point": "^1.0.0",
-                "strip-ansi": "^3.0.0"
-              }
-            },
-            "string_decoder": {
-              "version": "1.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "safe-buffer": "~5.1.0"
-              }
-            },
-            "strip-ansi": {
-              "version": "3.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "ansi-regex": "^2.0.0"
-              }
-            },
-            "strip-json-comments": {
-              "version": "2.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "tar": {
-              "version": "4.4.13",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "chownr": "^1.1.1",
-                "fs-minipass": "^1.2.5",
-                "minipass": "^2.8.6",
-                "minizlib": "^1.2.1",
-                "mkdirp": "^0.5.0",
-                "safe-buffer": "^5.1.2",
-                "yallist": "^3.0.3"
-              }
-            },
-            "util-deprecate": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "wide-align": {
-              "version": "1.1.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "string-width": "^1.0.2 || 2"
-              }
-            },
-            "wrappy": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "yallist": {
-              "version": "3.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            }
-          }
-        },
-        "get-stream": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
-          "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
-          "dev": true,
-          "requires": {
-            "pump": "^3.0.0"
-          }
-        },
-        "globby": {
-          "version": "6.1.0",
-          "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
-          "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
-          "dev": true,
-          "requires": {
-            "array-union": "^1.0.1",
-            "glob": "^7.0.3",
-            "object-assign": "^4.0.1",
-            "pify": "^2.0.0",
-            "pinkie-promise": "^2.0.0"
-          },
-          "dependencies": {
-            "pify": {
-              "version": "2.3.0",
-              "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-              "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
-              "dev": true
-            }
-          }
-        },
-        "handle-thing": {
-          "version": "2.0.0",
-          "resolved": "http://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz",
-          "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==",
-          "dev": true
-        },
-        "http-errors": {
-          "version": "1.7.2",
-          "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
-          "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
-          "dev": true,
-          "requires": {
-            "depd": "~1.1.2",
-            "inherits": "2.0.3",
-            "setprototypeof": "1.1.1",
-            "statuses": ">= 1.5.0 < 2",
-            "toidentifier": "1.0.0"
-          }
-        },
-        "http-proxy-middleware": {
-          "version": "0.19.1",
-          "resolved": "http://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
-          "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
-          "dev": true,
-          "requires": {
-            "http-proxy": "^1.17.0",
-            "is-glob": "^4.0.0",
-            "lodash": "^4.17.11",
-            "micromatch": "^3.1.10"
-          }
-        },
-        "internal-ip": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz",
-          "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==",
-          "dev": true,
-          "requires": {
-            "default-gateway": "^4.2.0",
-            "ipaddr.js": "^1.9.0"
-          }
-        },
-        "ipaddr.js": {
-          "version": "1.9.0",
-          "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
-          "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==",
-          "dev": true
-        },
-        "is-path-cwd": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
-          "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
-          "dev": true
-        },
-        "is-path-in-cwd": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz",
-          "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==",
-          "dev": true,
-          "requires": {
-            "is-path-inside": "^2.1.0"
-          }
-        },
-        "is-path-inside": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz",
-          "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==",
-          "dev": true,
-          "requires": {
-            "path-is-inside": "^1.0.2"
+            "xregexp": "4.0.0"
           }
         },
-        "loglevel": {
-          "version": "1.6.6",
-          "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.6.tgz",
-          "integrity": "sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ==",
-          "dev": true
-        },
-        "mime": {
-          "version": "1.6.0",
-          "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
-          "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
-          "dev": true
-        },
-        "mime-db": {
-          "version": "1.42.0",
-          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz",
-          "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==",
-          "dev": true
-        },
-        "mime-types": {
-          "version": "2.1.25",
-          "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz",
-          "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==",
+        "find-up": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
           "dev": true,
           "requires": {
-            "mime-db": "1.42.0"
+            "locate-path": "^3.0.0"
           }
         },
-        "ms": {
+        "is-fullwidth-code-point": {
           "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-          "dev": true
-        },
-        "nan": {
-          "version": "2.14.0",
-          "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
-          "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
-          "dev": true,
-          "optional": true
-        },
-        "negotiator": {
-          "version": "0.6.2",
-          "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
-          "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
-          "dev": true
-        },
-        "node-forge": {
-          "version": "0.9.0",
-          "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz",
-          "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
           "dev": true
         },
-        "normalize-path": {
+        "locate-path": {
           "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-          "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-          "dev": true
-        },
-        "on-headers": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
-          "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
-          "dev": true
-        },
-        "opn": {
-          "version": "5.5.0",
-          "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz",
-          "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==",
-          "dev": true,
-          "requires": {
-            "is-wsl": "^1.1.0"
-          }
-        },
-        "p-map": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
-          "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
-          "dev": true
-        },
-        "parseurl": {
-          "version": "1.3.3",
-          "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
-          "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
-          "dev": true
-        },
-        "path-to-regexp": {
-          "version": "0.1.7",
-          "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
-          "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
-          "dev": true
-        },
-        "pify": {
-          "version": "4.0.1",
-          "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
-          "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
-          "dev": true
-        },
-        "portfinder": {
-          "version": "1.0.25",
-          "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz",
-          "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==",
-          "dev": true,
-          "requires": {
-            "async": "^2.6.2",
-            "debug": "^3.1.1",
-            "mkdirp": "^0.5.1"
-          },
-          "dependencies": {
-            "debug": {
-              "version": "3.2.6",
-              "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
-              "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
-              "dev": true,
-              "requires": {
-                "ms": "^2.1.1"
-              }
-            },
-            "ms": {
-              "version": "2.1.2",
-              "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-              "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-              "dev": true
-            }
-          }
-        },
-        "proxy-addr": {
-          "version": "2.0.5",
-          "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
-          "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==",
-          "dev": true,
-          "requires": {
-            "forwarded": "~0.1.2",
-            "ipaddr.js": "1.9.0"
-          }
-        },
-        "qs": {
-          "version": "6.7.0",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
-          "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
-          "dev": true
-        },
-        "range-parser": {
-          "version": "1.2.1",
-          "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
-          "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
-          "dev": true
-        },
-        "raw-body": {
-          "version": "2.4.0",
-          "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
-          "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
-          "dev": true,
-          "requires": {
-            "bytes": "3.1.0",
-            "http-errors": "1.7.2",
-            "iconv-lite": "0.4.24",
-            "unpipe": "1.0.0"
-          },
-          "dependencies": {
-            "bytes": {
-              "version": "3.1.0",
-              "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
-              "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
-              "dev": true
-            }
-          }
-        },
-        "rimraf": {
-          "version": "2.7.1",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+          "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
           "dev": true,
           "requires": {
-            "glob": "^7.1.3"
+            "p-locate": "^3.0.0",
+            "path-exists": "^3.0.0"
           }
         },
-        "selfsigned": {
-          "version": "1.10.7",
-          "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz",
-          "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==",
+        "p-limit": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz",
+          "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
           "dev": true,
           "requires": {
-            "node-forge": "0.9.0"
-          }
-        },
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-          "dev": true
-        },
-        "send": {
-          "version": "0.17.1",
-          "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
-          "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
-          "dev": true,
-          "requires": {
-            "debug": "2.6.9",
-            "depd": "~1.1.2",
-            "destroy": "~1.0.4",
-            "encodeurl": "~1.0.2",
-            "escape-html": "~1.0.3",
-            "etag": "~1.8.1",
-            "fresh": "0.5.2",
-            "http-errors": "~1.7.2",
-            "mime": "1.6.0",
-            "ms": "2.1.1",
-            "on-finished": "~2.3.0",
-            "range-parser": "~1.2.1",
-            "statuses": "~1.5.0"
-          },
-          "dependencies": {
-            "debug": {
-              "version": "2.6.9",
-              "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-              "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-              "dev": true,
-              "requires": {
-                "ms": "2.0.0"
-              },
-              "dependencies": {
-                "ms": {
-                  "version": "2.0.0",
-                  "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-                  "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-                  "dev": true
-                }
-              }
-            },
-            "ms": {
-              "version": "2.1.1",
-              "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
-              "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
-              "dev": true
-            }
+            "p-try": "^2.0.0"
           }
         },
-        "serve-static": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
-          "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
+        "p-locate": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+          "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
           "dev": true,
           "requires": {
-            "encodeurl": "~1.0.2",
-            "escape-html": "~1.0.3",
-            "parseurl": "~1.3.3",
-            "send": "0.17.1"
+            "p-limit": "^2.0.0"
           }
         },
-        "setprototypeof": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
-          "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
+        "p-try": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
+          "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
           "dev": true
         },
-        "sockjs-client": {
-          "version": "1.4.0",
-          "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz",
-          "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==",
+        "string-width": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
           "dev": true,
           "requires": {
-            "debug": "^3.2.5",
-            "eventsource": "^1.0.7",
-            "faye-websocket": "~0.11.1",
-            "inherits": "^2.0.3",
-            "json3": "^3.3.2",
-            "url-parse": "^1.4.3"
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^4.0.0"
           },
           "dependencies": {
-            "debug": {
-              "version": "3.2.6",
-              "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
-              "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+            "strip-ansi": {
+              "version": "4.0.0",
+              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+              "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
               "dev": true,
               "requires": {
-                "ms": "^2.1.1"
+                "ansi-regex": "^3.0.0"
               }
-            },
-            "ms": {
-              "version": "2.1.2",
-              "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-              "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-              "dev": true
-            }
-          }
-        },
-        "spdy": {
-          "version": "4.0.1",
-          "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz",
-          "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==",
-          "dev": true,
-          "requires": {
-            "debug": "^4.1.0",
-            "handle-thing": "^2.0.0",
-            "http-deceiver": "^1.2.7",
-            "select-hose": "^2.0.0",
-            "spdy-transport": "^3.0.0"
-          }
-        },
-        "spdy-transport": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz",
-          "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
-          "dev": true,
-          "requires": {
-            "debug": "^4.1.0",
-            "detect-node": "^2.0.4",
-            "hpack.js": "^2.1.6",
-            "obuf": "^1.1.2",
-            "readable-stream": "^3.0.6",
-            "wbuf": "^1.7.3"
-          }
-        },
-        "statuses": {
-          "version": "1.5.0",
-          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
-          "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
-          "dev": true
-        },
-        "supports-color": {
-          "version": "6.1.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^3.0.0"
-          }
-        },
-        "type-is": {
-          "version": "1.6.18",
-          "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
-          "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
-          "dev": true,
-          "requires": {
-            "media-typer": "0.3.0",
-            "mime-types": "~2.1.24"
-          }
-        },
-        "upath": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
-          "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
-          "dev": true
-        },
-        "webpack-dev-middleware": {
-          "version": "3.7.2",
-          "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz",
-          "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==",
-          "dev": true,
-          "requires": {
-            "memory-fs": "^0.4.1",
-            "mime": "^2.4.4",
-            "mkdirp": "^0.5.1",
-            "range-parser": "^1.2.1",
-            "webpack-log": "^2.0.0"
-          },
-          "dependencies": {
-            "mime": {
-              "version": "2.4.4",
-              "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
-              "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==",
-              "dev": true
             }
           }
         },
-        "ws": {
-          "version": "6.2.1",
-          "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
-          "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
+        "yargs": {
+          "version": "12.0.2",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz",
+          "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==",
           "dev": true,
           "requires": {
-            "async-limiter": "~1.0.0"
+            "cliui": "^4.0.0",
+            "decamelize": "^2.0.0",
+            "find-up": "^3.0.0",
+            "get-caller-file": "^1.0.1",
+            "os-locale": "^3.0.0",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^1.0.1",
+            "set-blocking": "^2.0.0",
+            "string-width": "^2.0.0",
+            "which-module": "^2.0.0",
+            "y18n": "^3.2.1 || ^4.0.0",
+            "yargs-parser": "^10.1.0"
           }
         }
       }
@@ -17288,6 +16504,12 @@
       "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
       "dev": true
     },
+    "xregexp": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz",
+      "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==",
+      "dev": true
+    },
     "xtend": {
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
diff --git a/package.json b/package.json
index 73bade6..513d534 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
 {
   "private": true,
   "name": "@mapbox/mr-ui",
-  "version": "0.9.1",
+  "version": "0.7.1",
   "description": "UI components for Mapbox projects",
   "main": "index.js",
   "scripts": {
@@ -49,7 +49,7 @@
     "hoverintent": "^2.0.0",
     "os-key": "^1.0.0",
     "prefix": "^1.0.0",
-    "react-aria-modal": "^4.0.0",
+    "react-aria-modal": "^3.0.0",
     "react-datepicker": "^0.60.2",
     "react-displace": "^2.3.0",
     "react-submittable": "^2.0.0",
@@ -93,7 +93,7 @@
     "husky": "^0.14.3",
     "jest": "^23.4.1",
     "lint-staged": "^7.2.0",
-    "lodash": "^4.17.13",
+    "lodash": "^4.17.10",
     "make-dir": "^1.3.0",
     "moment": "^2.22.2",
     "pify": "^3.0.0",
diff --git a/src/components/accordion-item/accordion-item.js b/src/components/accordion-item/accordion-item.js
index 53cabdf..3d5f633 100644
--- a/src/components/accordion-item/accordion-item.js
+++ b/src/components/accordion-item/accordion-item.js
@@ -63,7 +63,6 @@ export default class AccordionItem extends React.Component {
     return (
       <div className={themeItem}>
         <button
-          aria-label="Toggle"
           className={buttonClasses}
           disabled={disabled}
           data-test={id}
diff --git a/src/components/button/examples/button-a.js b/src/components/button/examples/button-a.js
index 5d5671b..05b672e 100644
--- a/src/components/button/examples/button-a.js
+++ b/src/components/button/examples/button-a.js
@@ -9,30 +9,30 @@ export default class Example extends React.Component {
     return (
       <div>
         <div className="my6">
-          <Button onClick={noop} passthroughProps={{ 'aria-label': 'Primary' }}>Primary</Button>
+          <Button onClick={noop}>Primary</Button>
         </div>
         <div className="my6">
-          <Button variant="secondary" onClick={noop} passthroughProps={{ 'aria-label': 'Primary' }}>
+          <Button variant="secondary" onClick={noop}>
             Secondary
           </Button>
         </div>
         <div className="my6">
-          <Button variant="discouraging" onClick={noop} passthroughProps={{ 'aria-label': 'Discouraging' }}>
+          <Button variant="discouraging" onClick={noop}>
             Discouraging
           </Button>
         </div>
         <div className="my6">
-          <Button variant="destructive" onClick={noop} passthroughProps={{ 'aria-label': 'Destructive' }}>
+          <Button variant="destructive" onClick={noop}>
             Destructive
           </Button>
         </div>
         <div className="my6">
-          <Button variant="appPrimary" onClick={noop} passthroughProps={{ 'aria-label': 'AppPrimary' }}>
+          <Button variant="appPrimary" onClick={noop}>
             AppPrimary
           </Button>
         </div>
         <div className="my6">
-          <Button variant="appSecondary" onClick={noop} passthroughProps={{ 'aria-label': 'AppSecondary' }}>
+          <Button variant="appSecondary" onClick={noop}>
             AppSecondary
           </Button>
         </div>
diff --git a/src/components/button/examples/button-b.js b/src/components/button/examples/button-b.js
index 76bc787..bfe5505 100644
--- a/src/components/button/examples/button-b.js
+++ b/src/components/button/examples/button-b.js
@@ -8,7 +8,7 @@ import IconText from '../../icon-text';
 export default class Example extends React.Component {
   render() {
     return (
-      <Button onClick={() => {}} width="large" outline={true} color="purple" passthroughProps={{ 'aria-label': 'Save your map' }}>
+      <Button onClick={() => {}} width="large" outline={true} color="purple">
         <IconText iconBefore="floppy">Save your map</IconText>
       </Button>
     );
diff --git a/src/components/button/examples/button-d.js b/src/components/button/examples/button-d.js
index 62c2750..26ea970 100644
--- a/src/components/button/examples/button-d.js
+++ b/src/components/button/examples/button-d.js
@@ -13,17 +13,17 @@ export default class Example extends React.Component {
       <div>
         <div className="mb24 flex-parent">
           <div className="flex-child w120 mr12">
-            <Button size="medium" width="full" onClick={noop} passthroughProps={{ 'aria-label': 'Click door button' }}>
+            <Button size="medium" width="full" onClick={noop}>
               Door
             </Button>
           </div>
           <div className="flex-child w120 mr12">
-            <Button size="medium" width="full" onClick={noop} passthroughProps={{ 'aria-label': 'Click dog button' }}>
+            <Button size="medium" width="full" onClick={noop}>
               Dog
             </Button>
           </div>
           <div className="flex-child w120 mr12">
-            <Button size="medium" width="full" onClick={noop} passthroughProps={{ 'aria-label': 'Click dash button' }}>
+            <Button size="medium" width="full" onClick={noop}>
               Dash
             </Button>
           </div>
@@ -35,7 +35,6 @@ export default class Example extends React.Component {
               size="medium"
               width="full"
               onClick={noop}
-              passthroughProps={{ 'aria-label': 'Click button A' }}
             >
               A
             </Button>
@@ -46,7 +45,6 @@ export default class Example extends React.Component {
               size="medium"
               width="full"
               onClick={noop}
-              passthroughProps={{ 'aria-label': 'Click button B' }}
             >
               B
             </Button>
@@ -57,7 +55,6 @@ export default class Example extends React.Component {
               size="medium"
               width="full"
               onClick={noop}
-              passthroughProps={{ 'aria-label': 'Click button C' }}
             >
               C
             </Button>
diff --git a/src/components/code-snippet/examples/code-snippet-example-basic.js b/src/components/code-snippet/examples/code-snippet-example-basic.js
deleted file mode 100644
index 429db58..0000000
--- a/src/components/code-snippet/examples/code-snippet-example-basic.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-Basic.
-*/
-import React from 'react';
-import CodeSnippet from '../code-snippet';
-
-export default class Example extends React.Component {
-  render() {
-    return (
-      <CodeSnippet
-        code={`dependencies {
-          compile('com.mapbox.mapboxsdk:mapbox-android-sdk:5.0.2@aar') {
-            transitive=true
-          }
-        }`}
-      />
-    );
-  }
-}
diff --git a/src/components/code-snippet/examples/code-snippet-example-options.js b/src/components/code-snippet/examples/code-snippet-example-options.js
deleted file mode 100644
index 24fd61e..0000000
--- a/src/components/code-snippet/examples/code-snippet-example-options.js
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
-Set maxHeight and onCopy
-*/
-import React from 'react';
-import CodeSnippet from '../code-snippet';
-
-export default class Example extends React.Component {
-  render() {
-    return (
-      <CodeSnippet
-        maxHeight={300}
-        onCopy={() => console.log('Copy!')}
-        code={`package com.mapbox.mapboxandroiddemo.examples.basics;
-
-import android.os.Bundle;
-
-import com.mapbox.mapboxandroiddemo.R;
-import com.mapbox.mapboxsdk.Mapbox;
-import com.mapbox.mapboxsdk.maps.MapView;
-import com.mapbox.mapboxsdk.maps.MapboxMap;
-import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;
-import com.mapbox.mapboxsdk.maps.Style;
-
-import androidx.annotation.NonNull;
-import androidx.appcompat.app.AppCompatActivity;
-
-
-/**
- * The most basic example of adding a map to an activity.
- */
-public class SimpleMapViewActivity extends AppCompatActivity {
-
-  private MapView mapView;
-
-  @Override
-  protected void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-
-    // Mapbox access token is configured here. This needs to be called either in your application
-    // object or in the same activity which contains the mapview.
-    Mapbox.getInstance(this, getString(R.string.access_token));
-
-    // This contains the MapView in XML and needs to be called after the access token is configured.
-    setContentView(R.layout.activity_basic_simple_mapview);
-
-    mapView = findViewById(R.id.mapView);
-    mapView.onCreate(savedInstanceState);
-    mapView.getMapAsync(new OnMapReadyCallback() {
-      @Override
-      public void onMapReady(@NonNull MapboxMap mapboxMap) {
-        mapboxMap.setStyle(Style.MAPBOX_STREETS, new Style.OnStyleLoaded() {
-          @Override
-          public void onStyleLoaded(@NonNull Style style) {
-
-            // Map is set up and the style has loaded. Now you can add data or make other map adjustments.
-
-          }
-        });
-      }
-    });
-  }
-
-  // Add the mapView lifecycle to the activity's lifecycle methods
-  @Override
-  public void onResume() {
-    super.onResume();
-    mapView.onResume();
-  }
-
-  @Override
-  protected void onStart() {
-    super.onStart();
-    mapView.onStart();
-  }
-
-  @Override
-  protected void onStop() {
-    super.onStop();
-    mapView.onStop();
-  }
-
-  @Override
-  public void onPause() {
-    super.onPause();
-    mapView.onPause();
-  }
-
-  @Override
-  public void onLowMemory() {
-    super.onLowMemory();
-    mapView.onLowMemory();
-  }
-
-  @Override
-  protected void onDestroy() {
-    super.onDestroy();
-    mapView.onDestroy();
-  }
-
-  @Override
-  protected void onSaveInstanceState(Bundle outState) {
-    super.onSaveInstanceState(outState);
-    mapView.onSaveInstanceState(outState);
-  }
-}
-`}
-      />
-    );
-  }
-}
diff --git a/src/components/control-alert/control-alert.js b/src/components/control-alert/control-alert.js
index 5e13c1d..43b620c 100644
--- a/src/components/control-alert/control-alert.js
+++ b/src/components/control-alert/control-alert.js
@@ -54,7 +54,6 @@ export default class ControlAlert extends React.Component {
     return (
       <Tooltip content="Dismiss" block={true}>
         <button
-          aria-label="Dismiss"
           className="bg-transparent color-gray-dark color-blue-on-hover px0 py0"
           data-test="alert-dismiss"
           onClick={this.onButtonClick}
diff --git a/src/components/control-alert/examples/control-alert-example-options.js b/src/components/control-alert/examples/control-alert-example-options.js
index 2c6ddde..13f5a6d 100644
--- a/src/components/control-alert/examples/control-alert-example-options.js
+++ b/src/components/control-alert/examples/control-alert-example-options.js
@@ -29,7 +29,6 @@ export default class Example extends React.Component {
     return (
       <div className="flex-parent flex-parent--end-main mr18 mb18">
         <button
-          aria-label="Show alert again"
           className="color-gray-dark color-blue-on-hover flex-child"
           onClick={this.toggleAlert}
           type="button"
diff --git a/src/components/control-card/control-card.js b/src/components/control-card/control-card.js
index f7116a7..b4dafb3 100644
--- a/src/components/control-card/control-card.js
+++ b/src/components/control-card/control-card.js
@@ -67,7 +67,6 @@ export default class ControlCard extends React.Component {
       <div className="absolute top right mt18 mr18">
         <Tooltip content={toolTipMessage} block={true}>
           <button
-            aria-label={toolTipMessage}
             type="button"
             className="bg-transparent color-gray-dark color-blue-on-hover px0 py0"
             onClick={onButtonClick}
diff --git a/src/components/control-card/examples/control-card-example-options.js b/src/components/control-card/examples/control-card-example-options.js
index 40d9812..62b550a 100644
--- a/src/components/control-card/examples/control-card-example-options.js
+++ b/src/components/control-card/examples/control-card-example-options.js
@@ -29,7 +29,6 @@ export default class Example extends React.Component {
     return (
       <div className="flex-parent flex-parent--end-main mr18 mb18">
         <button
-          aria-label="Show card"
           className="color-gray-dark color-blue-on-hover flex-child"
           onClick={this.toggleCard}
           type="button"
diff --git a/src/components/control-file/control-file.js b/src/components/control-file/control-file.js
index 3872cdf..cf0c820 100644
--- a/src/components/control-file/control-file.js
+++ b/src/components/control-file/control-file.js
@@ -177,7 +177,6 @@ export default class ControlFile extends React.Component {
             <div className="flex-child">
               <Tooltip content="Clear" block={true}>
                 <button
-                  aria-label="Clear"
                   type="button"
                   className={`block link link--gray relative bg-transparent py0 ${themeControlFileClear}`}
                   onClick={this.onClear}
diff --git a/src/components/control-text/control-text.js b/src/components/control-text/control-text.js
index 9a3d7f9..75b3b91 100644
--- a/src/components/control-text/control-text.js
+++ b/src/components/control-text/control-text.js
@@ -44,7 +44,7 @@ export default class ControlText extends React.Component {
      */
     onChange: PropTypes.func.isRequired,
     /** The control's value. Can be an empty string to indicate no value. */
-    value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+    value: PropTypes.string,
     /** Type attribute to override the existing default of 'text' */
     type: PropTypes.string,
     /** Label for the control. */
diff --git a/src/components/copiable/copiable.js b/src/components/copiable/copiable.js
index 8df3749..ca2ee66 100644
--- a/src/components/copiable/copiable.js
+++ b/src/components/copiable/copiable.js
@@ -97,11 +97,7 @@ export default class Copiable extends React.Component {
 
     return (
       <div className="absolute top right px6 py6">
-        <CopyButton
-          text={props.value}
-          block={true}
-          focusTrapPaused={props.focusTrapPaused}
-        />
+        <CopyButton text={props.value} block={true} />
       </div>
     );
   }
@@ -157,13 +153,6 @@ Copiable.propTypes = {
    * The text that will be displayed and copied.
    */
   value: PropTypes.string.isRequired,
-  /**
-   * If `true`, this will allow interaction with elements outside of the
-   * modal container. You normally don't want to set this, but it can be
-   * useful for nesting different components that are displaced to other
-   * parts of the DOM.
-   */
-  focusTrapPaused: PropTypes.bool,
   /**
    * If `false` (default), the text will be overflow to multiple lines,
    * and words longer than a single line (e.g. long access tokens or URLs)
diff --git a/src/components/copy-button/copy-button.js b/src/components/copy-button/copy-button.js
index c9ba597..e415d60 100644
--- a/src/components/copy-button/copy-button.js
+++ b/src/components/copy-button/copy-button.js
@@ -29,18 +29,18 @@ export default class CopyButton extends React.PureComponent {
 
   componentWillUnmount() {
     clearTimeout(this.revertTimer);
-    this.destroyClipboard();
+    if (this.clipboard) {
+      this.clipboard.destroy();
+    }
   }
 
-  handleCopyButtonClick = event => {
+  handleCopyButtonClick = () => {
     // Clipboard.js attaches its own click handlers for copying
     const { onCopy, text } = this.props;
     if (onCopy) {
       onCopy(text);
     }
     this.showFeedback();
-    this.destroyClipboard(); // destroy clipboard
-    if (event) this.setClipboard(event.target); // reinitialize clipboard
   };
 
   showFeedback = () => {
@@ -55,8 +55,8 @@ export default class CopyButton extends React.PureComponent {
     if (nextProps.textEl !== this.props.textEl && copyAvailable) {
       this.setClipboard(nextProps.textEl);
     }
-    if (!copyAvailable) {
-      this.destroyClipboard();
+    if (!copyAvailable && this.clipboard) {
+      this.clipboard.destroy();
     }
   }
 
@@ -73,18 +73,11 @@ export default class CopyButton extends React.PureComponent {
     return this.container;
   };
 
-  destroyClipboard = () => {
-    if (this.clipboard) {
-      this.clipboard.destroy();
-    }
-  };
-
   setClipboard(element) {
-    const { focusTrapPaused } = this.props;
     this.clipboard = new Clipboard(element, {
       // Setting the container is necessary for Clipboard to function within
       // focus traps, like in a Modal.
-      ...(!focusTrapPaused && { container: element })
+      container: element
     });
   }
 
@@ -132,7 +125,6 @@ export default class CopyButton extends React.PureComponent {
         block={props.block}
       >
         <button
-          aria-label="Copy"
           type="button"
           className={buttonClasses}
           {...props.passthroughProps}
@@ -173,13 +165,6 @@ CopyButton.propTypes = {
    * width (in a layout that uses flexbox, absolute positioning, or floats).
    */
   block: PropTypes.bool,
-  /**
-   * If `true`, this will allow interaction with elements outside of the
-   * modal container. You normally don't want to set this, but it can be
-   * useful for nesting different components that are displaced to other
-   * parts of the DOM.
-   */
-  focusTrapPaused: PropTypes.bool,
   /**
    * The `className` prop of the `<button>`.
    */
diff --git a/src/components/form-submit/form-submit.js b/src/components/form-submit/form-submit.js
index 64150de..8ef54a4 100644
--- a/src/components/form-submit/form-submit.js
+++ b/src/components/form-submit/form-submit.js
@@ -32,7 +32,7 @@ export default class FormSubmit extends React.PureComponent {
     };
 
     return (
-      <button aria-label={label} type="button" className={themeButton} {...inputProps}>
+      <button type="button" className={themeButton} {...inputProps}>
         {label}
       </button>
     );
diff --git a/src/components/icon-text/examples/icon-text-a.js b/src/components/icon-text/examples/icon-text-a.js
index 84bc7a4..13d3e46 100644
--- a/src/components/icon-text/examples/icon-text-a.js
+++ b/src/components/icon-text/examples/icon-text-a.js
@@ -7,7 +7,7 @@ import IconText from '../icon-text';
 export default class Example extends React.Component {
   render() {
     return (
-      <button aria-label="Duplicate" type="button" className="link txt-bold txt-s block">
+      <button type="button" className="link txt-bold txt-s block">
         <IconText iconBefore="duplicate">Duplicate</IconText>
       </button>
     );
diff --git a/src/components/icon-text/examples/icon-text-b.js b/src/components/icon-text/examples/icon-text-b.js
index 362b1e1..ad4e7b7 100644
--- a/src/components/icon-text/examples/icon-text-b.js
+++ b/src/components/icon-text/examples/icon-text-b.js
@@ -7,7 +7,7 @@ import IconText from '../icon-text';
 export default class Example extends React.Component {
   render() {
     return (
-      <button aria-label="Take me there" type="button" className="link link-purple">
+      <button type="button" className="link link-purple">
         <IconText iconAfter="chevron-right">Take me there</IconText>
       </button>
     );
diff --git a/src/components/loader-full/examples/loader-full-example-basic.js b/src/components/loader-full/examples/loader-full-example-basic.js
index 7a2b650..af5633e 100644
--- a/src/components/loader-full/examples/loader-full-example-basic.js
+++ b/src/components/loader-full/examples/loader-full-example-basic.js
@@ -27,7 +27,7 @@ export default class Example extends React.Component {
 
     return (
       <div>
-        <button aria-label="Show loader" className="btn btn--purple" onClick={this.showLoader}>
+        <button className="btn btn--purple" onClick={this.showLoader}>
           Show loader
         </button>
         {loader}
diff --git a/src/components/loader-full/examples/loader-full-example-opaque.js b/src/components/loader-full/examples/loader-full-example-opaque.js
index c29e27b..2070f24 100644
--- a/src/components/loader-full/examples/loader-full-example-opaque.js
+++ b/src/components/loader-full/examples/loader-full-example-opaque.js
@@ -27,7 +27,7 @@ export default class Example extends React.Component {
 
     return (
       <div>
-        <button aria-label="Show loader" className="btn btn--purple" onClick={this.showLoader}>
+        <button className="btn btn--purple" onClick={this.showLoader}>
           Show loader
         </button>
         {loader}
diff --git a/src/components/modal/examples/modal-a.js b/src/components/modal/examples/modal-a.js
index 467e046..301202f 100644
--- a/src/components/modal/examples/modal-a.js
+++ b/src/components/modal/examples/modal-a.js
@@ -48,7 +48,7 @@ export default class Example extends React.Component {
   render() {
     return (
       <div>
-        <Button size="medium" onClick={this.openModal} passthroughProps={{ 'aria-label': 'Show modal' }}>
+        <Button size="medium" onClick={this.openModal}>
           Show modal
         </Button>
         {this.renderModal()}
diff --git a/src/components/modal/examples/modal-b.js b/src/components/modal/examples/modal-b.js
index 83f8d7f..902f6af 100644
--- a/src/components/modal/examples/modal-b.js
+++ b/src/components/modal/examples/modal-b.js
@@ -49,7 +49,7 @@ export default class Example extends React.Component {
           </div>
           <div className="align-center mt24">
             <input className="input mb12" id="modal-input" />
-            <Button size="medium" onClick={this.closeModal} passthroughProps={{ 'aria-label': 'Done' }}>
+            <Button size="medium" onClick={this.closeModal}>
               Ok, done
             </Button>
           </div>
@@ -61,7 +61,7 @@ export default class Example extends React.Component {
   render() {
     return (
       <div>
-        <Button size="medium" onClick={this.openModal} passthroughProps={{ 'aria-label': 'Show modal' }}>
+        <Button size="medium" onClick={this.openModal}>
           Show modal
         </Button>
         {this.renderModal()}
diff --git a/src/components/modal/modal-actions.js b/src/components/modal/modal-actions.js
index f1a81c3..38e1ac0 100644
--- a/src/components/modal/modal-actions.js
+++ b/src/components/modal/modal-actions.js
@@ -16,7 +16,6 @@ export default class ModalActions extends React.Component {
           size="medium"
           onClick={props.secondaryAction.callback}
           data-test="secondary-modal-action"
-          passthroughProps={{ 'aria-label': props.secondaryAction.text }}
         >
           {props.secondaryAction.text}
         </Button>
@@ -37,7 +36,6 @@ export default class ModalActions extends React.Component {
     return (
       <div className="flex-child flex-child--grow flex-child--no-shrink mr12">
         <button
-          aria-label={props.tertiaryAction.text}
           type="button"
           className="link link--gray txt-bold txt-s"
           onClick={props.tertiaryAction.callback}
@@ -64,7 +62,6 @@ export default class ModalActions extends React.Component {
             size="medium"
             onClick={props.primaryAction.callback}
             data-test="primary-modal-action"
-            passthroughProps={{ 'aria-label': props.primaryAction.text }}
           >
             {props.primaryAction.text}
           </Button>
diff --git a/src/components/modal/modal.js b/src/components/modal/modal.js
index 99fb72f..1c4ecd8 100644
--- a/src/components/modal/modal.js
+++ b/src/components/modal/modal.js
@@ -77,7 +77,6 @@ export default class Modal extends React.Component {
         <div className="absolute top right">
           <Tooltip block={true} content="Close">
             <button
-              aria-label="Close"
               type="button"
               className="btn btn--transparent unround-t unround-br color-gray py12 px12"
               onClick={props.onExit}
@@ -131,10 +130,6 @@ export default class Modal extends React.Component {
       modalProps.focusDialog = true;
     }
 
-    if (props.focusTrapPaused) {
-      modalProps.focusTrapPaused = true;
-    }
-
     return <AriaModal {...modalProps}>{dialogBody}</AriaModal>;
   }
 }
@@ -182,13 +177,6 @@ Modal.propTypes = {
    * `'large'` or `'none'`.
    */
   padding: PropTypes.oneOf(['large', 'none']),
-  /**
-   * If `true`, this will allow interaction with elements outside of the
-   * modal container. You normally don't want to set this, but it can be
-   * useful for nesting different components that are displaced to other
-   * parts of the DOM.
-   */
-  focusTrapPaused: PropTypes.bool,
   /**
    * If `true`, the modal will have the accessibility props of an alert modal.
    * (Only affects screen readers.)
diff --git a/src/components/page-loading-indicator/examples/loader-full-example-basic.js b/src/components/page-loading-indicator/examples/loader-full-example-basic.js
index 73e4fa4..868c8c3 100644
--- a/src/components/page-loading-indicator/examples/loader-full-example-basic.js
+++ b/src/components/page-loading-indicator/examples/loader-full-example-basic.js
@@ -13,7 +13,7 @@ export default class Example extends React.Component {
   render() {
     return (
       <div>
-        <button aria-label="Show for 1 second" className="btn btn--purple" onClick={this.show}>
+        <button className="btn btn--purple" onClick={this.show}>
           Show for 1 second
         </button>
       </div>
diff --git a/src/components/popover-trigger/examples/popover-trigger-a.js b/src/components/popover-trigger/examples/popover-trigger-a.js
index 6ff57e2..c46bb80 100644
--- a/src/components/popover-trigger/examples/popover-trigger-a.js
+++ b/src/components/popover-trigger/examples/popover-trigger-a.js
@@ -14,7 +14,7 @@ export default class Example extends React.Component {
     return (
       <div>
         <PopoverTrigger content={this.getPopoverContent}>
-          <Button size="medium" passthroughProps={{ 'aria-label': 'Trigger' }}>Trigger</Button>
+          <Button size="medium">Trigger</Button>
         </PopoverTrigger>
       </div>
     );
diff --git a/src/components/popover-trigger/examples/popover-trigger-b.js b/src/components/popover-trigger/examples/popover-trigger-b.js
index be75e41..fa38039 100644
--- a/src/components/popover-trigger/examples/popover-trigger-b.js
+++ b/src/components/popover-trigger/examples/popover-trigger-b.js
@@ -49,7 +49,7 @@ export default class Example extends React.Component {
             'data-test': 'trigger-container'
           }}
         >
-          <Button size="medium" passthroughProps={{ 'aria-label': 'Trigger' }}>Trigger</Button>
+          <Button size="medium">Trigger</Button>
         </PopoverTrigger>
       </div>
     );
diff --git a/src/components/popover/examples/popover-a.js b/src/components/popover/examples/popover-a.js
index 2d457fd..387c78e 100644
--- a/src/components/popover/examples/popover-a.js
+++ b/src/components/popover/examples/popover-a.js
@@ -54,7 +54,6 @@ export default class Example extends React.Component {
           onClick={this.togglePopover}
           size="medium"
           passthroughProps={{
-            'aria-label': 'Toggle popover',
             ref: this.setAnchor
           }}
         >
diff --git a/src/components/popover/examples/popover-b.js b/src/components/popover/examples/popover-b.js
index bb0aa23..524e0fa 100644
--- a/src/components/popover/examples/popover-b.js
+++ b/src/components/popover/examples/popover-b.js
@@ -55,7 +55,6 @@ export default class Example extends React.Component {
           onClick={this.togglePopover}
           size="medium"
           passthroughProps={{
-            'aria-label': 'Toggle popover',
             ref: this.setAnchor
           }}
         >
diff --git a/src/components/popover/examples/popover-c.js b/src/components/popover/examples/popover-c.js
index 36ffcb1..f688fe2 100644
--- a/src/components/popover/examples/popover-c.js
+++ b/src/components/popover/examples/popover-c.js
@@ -55,7 +55,6 @@ export default class Example extends React.Component {
           onClick={this.togglePopover}
           size="medium"
           passthroughProps={{
-            'aria-label': 'Toggle popover',
             ref: this.setAnchor
           }}
         >
diff --git a/src/components/tab-list/tab-list.js b/src/components/tab-list/tab-list.js
index b8b8e11..1322616 100644
--- a/src/components/tab-list/tab-list.js
+++ b/src/components/tab-list/tab-list.js
@@ -10,8 +10,7 @@ export default class TabList extends React.PureComponent {
         /** Identifying value for tab list item. */
         id: PropTypes.string.isRequired,
         /** The name of the tab to be displayed. */
-        label: PropTypes.oneOfType([PropTypes.string, PropTypes.node])
-          .isRequired,
+        label: PropTypes.string.isRequired,
         /** Determines if the state of the tab list item is active. */
         active: PropTypes.bool,
         /** Link to the page the lab list item should take you to when clicked. */
@@ -113,7 +112,6 @@ export default class TabList extends React.PureComponent {
       } else {
         renderedItem = (
           <button
-            aria-label={item.id}
             key={item.id}
             type="button"
             className={renderedItemClasses}
@@ -188,7 +186,6 @@ export default class TabList extends React.PureComponent {
           }}
         >
           <button
-            aria-label="More"
             className="px6 py12 mr12 align-l cursor-pointer none-mm"
             type="button"
           >
diff --git a/src/components/tooltip/examples/tooltip-a.js b/src/components/tooltip/examples/tooltip-a.js
index f8ff4f3..866e65a 100644
--- a/src/components/tooltip/examples/tooltip-a.js
+++ b/src/components/tooltip/examples/tooltip-a.js
@@ -9,7 +9,7 @@ export default class Example extends React.Component {
   render() {
     return (
       <Tooltip content="Here's your tooltip">
-        <Button size="medium" passthroughProps={{ 'aria-label': 'Basic' }}>Basic</Button>
+        <Button size="medium">Basic</Button>
       </Tooltip>
     );
   }
diff --git a/src/components/underline-tabs/underline-tab-item.js b/src/components/underline-tabs/underline-tab-item.js
index 9b9d371..af09955 100644
--- a/src/components/underline-tabs/underline-tab-item.js
+++ b/src/components/underline-tabs/underline-tab-item.js
@@ -86,7 +86,7 @@ class UnderlineTabItem extends React.PureComponent {
     }
 
     return (
-      <button aria-label={label} type="button" {...universalProps}>
+      <button type="button" {...universalProps}>
         {content}
       </button>
     );
diff --git a/src/docs/components/component-example.js b/src/docs/components/component-example.js
index 0982728..8057314 100644
--- a/src/docs/components/component-example.js
+++ b/src/docs/components/component-example.js
@@ -53,7 +53,6 @@ function ToggleCodeButton(props) {
   const text = props.codeIsVisible ? 'Hide code' : 'Show code';
   return (
     <button
-      aria-label={text}
       className="block btn btn--s btn--gray unround-b round-t"
       onClick={props.onClick}
     >


Test patch:
diff --git a/src/components/accordion-item/__tests__/__snapshots__/accordion-item.test.js.snap b/src/components/accordion-item/__tests__/__snapshots__/accordion-item.test.js.snap
index 2e8129d..50c539c 100644
--- a/src/components/accordion-item/__tests__/__snapshots__/accordion-item.test.js.snap
+++ b/src/components/accordion-item/__tests__/__snapshots__/accordion-item.test.js.snap
@@ -5,7 +5,6 @@ exports[`Accordion all options renders 1`] = `
   className="bg-red-faint border-b border--red-dark"
 >
   <button
-    aria-label="Toggle"
     className="w-full bg-red txt-l txt-bold link link--white bg-red-dark-on-hover px6 py6 cursor-pointer"
     data-test="one"
     onClick={[Function]}
@@ -25,7 +24,6 @@ exports[`Accordion all options renders 1`] = `
 exports[`Accordion basic renders 1`] = `
 <div>
   <button
-    aria-label="Toggle"
     className="w-full txt-s txt-bold txt-truncate link link--gray py6 cursor-pointer"
     data-test="one"
     onClick={[Function]}
@@ -40,7 +38,6 @@ exports[`Accordion basic renders 1`] = `
 exports[`Accordion disabled renders 1`] = `
 <div>
   <button
-    aria-label="Toggle"
     className="w-full txt-s txt-bold txt-truncate link link--gray py6 cursor-default color-gray-light"
     data-test="one"
     disabled={true}
diff --git a/src/components/button/__tests__/__snapshots__/button.test.js.snap b/src/components/button/__tests__/__snapshots__/button.test.js.snap
index e753bcc..241e686 100644
--- a/src/components/button/__tests__/__snapshots__/button.test.js.snap
+++ b/src/components/button/__tests__/__snapshots__/button.test.js.snap
@@ -2,7 +2,6 @@
 
 exports[`AppPrimary renders as expected 1`] = `
 <button
-  aria-label="Example smaller app primary button"
   className="btn btn--gray round h24 px6 py3 txt-xs"
   disabled={false}
   onClick={[MockFunction]}
@@ -14,7 +13,6 @@ exports[`AppPrimary renders as expected 1`] = `
 
 exports[`AppSecondary renders as expected 1`] = `
 <button
-  aria-label="Example smaller app secondary button"
   className="btn btn--gray btn--stroke round h24 px6 py3 txt-xs"
   disabled={false}
   onClick={[MockFunction]}
@@ -26,7 +24,6 @@ exports[`AppSecondary renders as expected 1`] = `
 
 exports[`Destructive renders as expected 1`] = `
 <button
-  aria-label="Example destructive button"
   className="btn btn--red round-full py12 px24 txt-s"
   disabled={false}
   onClick={[MockFunction]}
@@ -38,7 +35,6 @@ exports[`Destructive renders as expected 1`] = `
 
 exports[`Disabled renders as expected 1`] = `
 <button
-  aria-hidden={true}
   className="btn btn--blue round-full py12 px24 txt-s"
   disabled={true}
   type="button"
@@ -49,7 +45,6 @@ exports[`Disabled renders as expected 1`] = `
 
 exports[`Discouraging renders as expected 1`] = `
 <button
-  aria-label="Example discouraging button"
   className="btn btn--gray btn--stroke btn--stroke--2 round-full py12 px24 txt-s"
   disabled={false}
   onClick={[MockFunction]}
@@ -61,7 +56,6 @@ exports[`Discouraging renders as expected 1`] = `
 
 exports[`Div styled like a medium destructive button with some elementAttributes renders as expected 1`] = `
 <div
-  aria-label="Example save button"
   className="btn btn--red round-full py6 px24 txt-s"
   data-test="foo"
   disabled={false}
@@ -74,7 +68,6 @@ exports[`Div styled like a medium destructive button with some elementAttributes
 
 exports[`Full width, alternate color renders as expected 1`] = `
 <button
-  aria-label="Example full width, purple button"
   className="btn btn--purple round-full py12 w-full block txt-s"
   disabled={false}
   type="button"
@@ -100,7 +93,6 @@ exports[`Link with outline and icon text, extra padding renders as expected 1`]
 
 exports[`Primary renders as expected 1`] = `
 <button
-  aria-label="Example primary button"
   className="btn btn--blue round-full py12 px24 txt-s"
   disabled={false}
   onClick={[MockFunction]}
@@ -112,7 +104,6 @@ exports[`Primary renders as expected 1`] = `
 
 exports[`Secondary renders as expected 1`] = `
 <button
-  aria-label="Example secondary button"
   className="btn btn--blue btn--stroke btn--stroke--2 round-full py12 px24 txt-s"
   disabled={false}
   onClick={[MockFunction]}
diff --git a/src/components/button/__tests__/button-test-cases.js b/src/components/button/__tests__/button-test-cases.js
index 80ec47b..bee6a4e 100644
--- a/src/components/button/__tests__/button-test-cases.js
+++ b/src/components/button/__tests__/button-test-cases.js
@@ -10,10 +10,7 @@ testCases.primary = {
   component: Button,
   props: {
     children: 'Primary',
-    onClick: safeSpy(),
-    passthroughProps: {
-      'aria-label': 'Example primary button'
-    }
+    onClick: safeSpy()
   }
 };
 
@@ -23,10 +20,7 @@ testCases.secondary = {
   props: {
     children: 'Secondary',
     variant: 'secondary',
-    onClick: safeSpy(),
-    passthroughProps: {
-      'aria-label': 'Example secondary button'
-    }
+    onClick: safeSpy()
   }
 };
 
@@ -36,10 +30,7 @@ testCases.discouraging = {
   props: {
     children: 'Discouraging',
     variant: 'discouraging',
-    onClick: safeSpy(),
-    passthroughProps: {
-      'aria-label': 'Example discouraging button'
-    }
+    onClick: safeSpy()
   }
 };
 
@@ -49,10 +40,7 @@ testCases.destructive = {
   props: {
     children: 'Destructive',
     variant: 'destructive',
-    onClick: safeSpy(),
-    passthroughProps: {
-      'aria-label': 'Example destructive button'
-    }
+    onClick: safeSpy()
   }
 };
 
@@ -62,10 +50,7 @@ testCases.appPrimary = {
   props: {
     children: 'AppPrimary',
     variant: 'appPrimary',
-    onClick: safeSpy(),
-    passthroughProps: {
-      'aria-label': 'Example smaller app primary button'
-    }
+    onClick: safeSpy()
   }
 };
 
@@ -75,10 +60,7 @@ testCases.appSecondary = {
   props: {
     children: 'AppSecondary',
     variant: 'appSecondary',
-    onClick: safeSpy(),
-    passthroughProps: {
-      'aria-label': 'Example smaller app secondary button'
-    }
+    onClick: safeSpy()
   }
 };
 
@@ -100,10 +82,7 @@ testCases.fullWidthPurple = {
   props: {
     children: 'Here we are',
     color: 'purple',
-    width: 'full',
-    passthroughProps: {
-      'aria-label': 'Example full width, purple button'
-    }
+    width: 'full'
   }
 };
 
@@ -118,7 +97,6 @@ testCases.weird = {
     onClick: safeSpy(),
     component: 'div',
     passthroughProps: {
-      'aria-label': 'Example save button',
       role: 'button',
       'data-test': 'foo'
     }
@@ -130,10 +108,7 @@ testCases.disabled = {
   component: Button,
   props: {
     children: 'Oops',
-    disabled: true,
-    passthroughProps: {
-      'aria-hidden': true
-    }
+    disabled: true
   }
 };
 
@@ -144,10 +119,7 @@ testCases.disabledSecondary = {
     children: 'Oops',
     disabled: true,
     variant: 'secondary',
-    onClick: safeSpy(),
-    passthroughProps: {
-      'aria-hidden': true
-    }
+    onClick: safeSpy()
   }
 };
 
@@ -159,10 +131,7 @@ testCases.disabledSpecial = {
     variant: 'appPrimary',
     onClick: safeSpy(),
     disabled: true,
-    color: 'gray',
-    passthroughProps: {
-      'aria-hidden': true
-    }
+    color: 'gray'
   }
 };
 
diff --git a/src/components/control-alert/__tests__/__snapshots__/control-alert.test.js.snap b/src/components/control-alert/__tests__/__snapshots__/control-alert.test.js.snap
index 8d60b78..14798bd 100644
--- a/src/components/control-alert/__tests__/__snapshots__/control-alert.test.js.snap
+++ b/src/components/control-alert/__tests__/__snapshots__/control-alert.test.js.snap
@@ -131,7 +131,6 @@ exports[`ControlAlert dismissive multiline error onButtonClick is called 1`] = `
     textSize="s"
   >
     <button
-      aria-label="Dismiss"
       className="bg-transparent color-gray-dark color-blue-on-hover px0 py0"
       data-test="alert-dismiss"
       onClick={[Function]}
@@ -194,7 +193,6 @@ exports[`ControlAlert dismissive multiline error renders as expected 1`] = `
     textSize="s"
   >
     <button
-      aria-label="Dismiss"
       className="bg-transparent color-gray-dark color-blue-on-hover px0 py0"
       data-test="alert-dismiss"
       onClick={[Function]}
@@ -248,7 +246,6 @@ exports[`ControlAlert dismissive warning onButtonClick is called 1`] = `
     textSize="s"
   >
     <button
-      aria-label="Dismiss"
       className="bg-transparent color-gray-dark color-blue-on-hover px0 py0"
       data-test="alert-dismiss"
       onClick={[Function]}
@@ -302,7 +299,6 @@ exports[`ControlAlert dismissive warning renders as expected 1`] = `
     textSize="s"
   >
     <button
-      aria-label="Dismiss"
       className="bg-transparent color-gray-dark color-blue-on-hover px0 py0"
       data-test="alert-dismiss"
       onClick={[Function]}
diff --git a/src/components/control-card/__tests__/__snapshots__/control-card.test.js.snap b/src/components/control-card/__tests__/__snapshots__/control-card.test.js.snap
index c3c96b3..05c6d92 100644
--- a/src/components/control-card/__tests__/__snapshots__/control-card.test.js.snap
+++ b/src/components/control-card/__tests__/__snapshots__/control-card.test.js.snap
@@ -37,7 +37,6 @@ exports[`ControlCard collapsible onButtonClick is called 1`] = `
       textSize="s"
     >
       <button
-        aria-label="Collapse"
         className="bg-transparent color-gray-dark color-blue-on-hover px0 py0"
         onClick={
           [MockFunction] {
@@ -96,7 +95,6 @@ exports[`ControlCard collapsible renders as expected 1`] = `
       textSize="s"
     >
       <button
-        aria-label="Collapse"
         className="bg-transparent color-gray-dark color-blue-on-hover px0 py0"
         onClick={[MockFunction]}
         type="button"
@@ -143,7 +141,6 @@ exports[`ControlCard sized title and closable onButtonClick is called 1`] = `
       textSize="s"
     >
       <button
-        aria-label="Close"
         className="bg-transparent color-gray-dark color-blue-on-hover px0 py0"
         onClick={
           [MockFunction] {
@@ -202,7 +199,6 @@ exports[`ControlCard sized title and closable renders as expected 1`] = `
       textSize="s"
     >
       <button
-        aria-label="Close"
         className="bg-transparent color-gray-dark color-blue-on-hover px0 py0"
         onClick={[MockFunction]}
         type="button"
diff --git a/src/components/control-file/__tests__/__snapshots__/control-file.test.js.snap b/src/components/control-file/__tests__/__snapshots__/control-file.test.js.snap
index e25683b..4b8723c 100644
--- a/src/components/control-file/__tests__/__snapshots__/control-file.test.js.snap
+++ b/src/components/control-file/__tests__/__snapshots__/control-file.test.js.snap
@@ -138,7 +138,6 @@ exports[`ControlFile basic receives an array of one file as value, displaying it
         textSize="s"
       >
         <button
-          aria-label="Clear"
           className="block link link--gray relative bg-transparent py0 "
           data-test="control-file-clear"
           onClick={[Function]}
@@ -344,7 +343,6 @@ exports[`ControlFile multiple receives an array of files as value, displaying th
         textSize="s"
       >
         <button
-          aria-label="Clear"
           className="block link link--gray relative bg-transparent py0 "
           data-test="control-file-clear"
           onClick={[Function]}
diff --git a/src/components/copiable/__tests__/copiable-test-cases.js b/src/components/copiable/__tests__/copiable-test-cases.js
index 3082cbe..40ba794 100644
--- a/src/components/copiable/__tests__/copiable-test-cases.js
+++ b/src/components/copiable/__tests__/copiable-test-cases.js
@@ -11,16 +11,6 @@ testCases.basic = {
   }
 };
 
-testCases.focusTrapPaused = {
-  description: 'focusTrapPaused',
-  component: Copiable,
-  props: {
-    focusTrapPaused: true,
-    value:
-      'thetextyoucopythetextyoucopythetextyoucopythetext you copy the text you copy '
-  }
-};
-
 testCases.truncated = {
   description: 'truncated',
   component: Copiable,
diff --git a/src/components/copiable/__tests__/copiable.test.js b/src/components/copiable/__tests__/copiable.test.js
index 7f7b3dc..c80e24d 100644
--- a/src/components/copiable/__tests__/copiable.test.js
+++ b/src/components/copiable/__tests__/copiable.test.js
@@ -73,15 +73,3 @@ describe(testCases.basic.description, () => {
     });
   });
 });
-
-describe(testCases.focusTrapPaused.description, () => {
-  beforeEach(() => {
-    testCase = testCases.focusTrapPaused;
-    wrapper = shallow(React.createElement(testCase.component, testCase.props));
-  });
-
-  test('passed focusTrapPaused to CopyButton', () => {
-    const focusTrapPaused = wrapper.find('CopyButton').props().focusTrapPaused;
-    expect(focusTrapPaused).toBe(true);
-  });
-});
diff --git a/src/components/copy-button/__tests__/__snapshots__/copy-button.test.js.snap b/src/components/copy-button/__tests__/__snapshots__/copy-button.test.js.snap
index 1294631..95af4df 100644
--- a/src/components/copy-button/__tests__/__snapshots__/copy-button.test.js.snap
+++ b/src/components/copy-button/__tests__/__snapshots__/copy-button.test.js.snap
@@ -14,7 +14,6 @@ exports[`CopyButton Defaults changes state on click 1`] = `
   textSize="s"
 >
   <button
-    aria-label="Copy"
     className="btn btn--xs py3 px3 round"
     data-clipboard-text="Copied by the default test case"
     onClick={[Function]}
@@ -67,7 +66,6 @@ exports[`CopyButton Defaults changes state on click 2`] = `
   textSize="s"
 >
   <button
-    aria-label="Copy"
     className="btn btn--xs py3 px3 round"
     data-clipboard-text="Copied by the default test case"
     onClick={[Function]}
@@ -97,7 +95,6 @@ exports[`CopyButton Defaults renders as expected 1`] = `
   textSize="s"
 >
   <button
-    aria-label="Copy"
     className="btn btn--xs py3 px3 round"
     data-clipboard-text="Copied by the default test case"
     onClick={[Function]}
@@ -127,7 +124,6 @@ exports[`CopyButton all props changes state on click 1`] = `
   textSize="s"
 >
   <button
-    aria-label="Copy"
     className="px6 py6 btn btn--purple btn--stroke"
     data-clipboard-text="more copiable text"
     data-test="copy-button"
@@ -181,7 +177,6 @@ exports[`CopyButton all props changes state on click 2`] = `
   textSize="s"
 >
   <button
-    aria-label="Copy"
     className="px6 py6 btn btn--purple btn--stroke"
     data-clipboard-text="more copiable text"
     data-test="copy-button"
@@ -212,7 +207,6 @@ exports[`CopyButton all props renders as expected 1`] = `
   textSize="s"
 >
   <button
-    aria-label="Copy"
     className="px6 py6 btn btn--purple btn--stroke"
     data-clipboard-text="more copiable text"
     data-test="copy-button"
diff --git a/src/components/copy-button/__tests__/copy-button-test-cases.js b/src/components/copy-button/__tests__/copy-button-test-cases.js
index 72c0404..c84f000 100644
--- a/src/components/copy-button/__tests__/copy-button-test-cases.js
+++ b/src/components/copy-button/__tests__/copy-button-test-cases.js
@@ -20,7 +20,6 @@ testCases.allProps = {
     text: 'more copiable text',
     onCopy: safeSpy(),
     className: 'px6 py6 btn btn--purple btn--stroke',
-    focusTrapPaused: true,
     passthroughProps: {
       'data-test': 'copy-button'
     }
@@ -49,7 +48,7 @@ class InModal extends React.Component {
   render() {
     return (
       <div>
-        <button aria-label="Open modal" className="btn" onClick={this.toggleModal}>
+        <button className="btn" onClick={this.toggleModal}>
           Open modal
         </button>
         {this.renderModal()}
diff --git a/src/components/copy-button/__tests__/copy-button.test.js b/src/components/copy-button/__tests__/copy-button.test.js
index 8d81c9f..154c8a6 100644
--- a/src/components/copy-button/__tests__/copy-button.test.js
+++ b/src/components/copy-button/__tests__/copy-button.test.js
@@ -3,15 +3,15 @@ import { shallow } from 'enzyme';
 import delay from 'delay';
 import { testCases } from './copy-button-test-cases';
 import getWindow from '../../utils/get-window';
-import Clipboard from 'clipboard/dist/clipboard.min.js';
 
 const mockUserAgent =
   'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36';
 
-jest.mock('clipboard/dist/clipboard.min.js');
-
-Clipboard.isSupported = () => true;
-
+jest.mock('clipboard/dist/clipboard.min.js', () => {
+  class Clipboard {}
+  Clipboard.isSupported = () => true;
+  return Clipboard;
+});
 jest.mock('../../utils/get-window', () => {
   return jest.fn();
 });
@@ -41,28 +41,14 @@ describe('CopyButton', () => {
     });
 
     test('changes state on click', () => {
-      const destroySpy = jest.spyOn(wrapper.instance(), 'destroyClipboard');
-      const setClipboardSpy = jest.spyOn(wrapper.instance(), 'setClipboard');
-      wrapper.find('button').prop('onClick')({
-        target: wrapper.find('button')
-      });
+      wrapper.find('button').prop('onClick')();
       wrapper.update();
       expect(wrapper).toMatchSnapshot();
-      expect(destroySpy).toHaveBeenCalled();
-      expect(setClipboardSpy).toHaveBeenCalled();
       return delay(820).then(() => {
         wrapper.update();
         expect(wrapper).toMatchSnapshot();
       });
     });
-
-    test('focusTrapPaused false/undefined updates container element when setting clipboard', () => {
-      wrapper.instance().setClipboard('cool container');
-
-      expect(Clipboard).toHaveBeenCalledWith('cool container', {
-        container: 'cool container'
-      });
-    });
   });
 
   describe(testCases.allProps.description, () => {
@@ -79,15 +65,9 @@ describe('CopyButton', () => {
 
     // Extra classes need to carry over to both states
     test('changes state on click', () => {
-      const destroySpy = jest.spyOn(wrapper.instance(), 'destroyClipboard');
-      const setClipboardSpy = jest.spyOn(wrapper.instance(), 'setClipboard');
-      wrapper.find('button').prop('onClick')({
-        target: wrapper.find('button')
-      });
+      wrapper.find('button').prop('onClick')();
       wrapper.update();
       expect(wrapper).toMatchSnapshot();
-      expect(destroySpy).toHaveBeenCalled();
-      expect(setClipboardSpy).toHaveBeenCalled();
       return delay(820).then(() => {
         wrapper.update();
         expect(wrapper).toMatchSnapshot();
@@ -99,11 +79,5 @@ describe('CopyButton', () => {
       expect(testCase.props.onCopy).toHaveBeenCalledTimes(1);
       expect(testCase.props.onCopy).toHaveBeenCalledWith(testCase.props.text);
     });
-
-    test('focusTrapPaused true does not update container element when setting clipboard', () => {
-      wrapper.instance().setClipboard('cool container');
-
-      expect(Clipboard).toHaveBeenCalledWith('cool container', {});
-    });
   });
 });
diff --git a/src/components/icon-text/__tests__/icon-text-test-cases.js b/src/components/icon-text/__tests__/icon-text-test-cases.js
index 1144e58..0c6e9d7 100644
--- a/src/components/icon-text/__tests__/icon-text-test-cases.js
+++ b/src/components/icon-text/__tests__/icon-text-test-cases.js
@@ -45,7 +45,7 @@ testCases.bothIcons = {
 testCases.buttonyDisplay = {
   description: 'a buttony look',
   element: (
-    <button aria-label="Duplicate" type="button" className="link txt-bold txt-s block">
+    <button type="button" className="link txt-bold txt-s block">
       <IconText iconBefore="duplicate">Duplicate</IconText>
     </button>
   )
diff --git a/src/components/minimum-duration-loader/__tests__/minimum-duration-loader-test-cases.js b/src/components/minimum-duration-loader/__tests__/minimum-duration-loader-test-cases.js
index 1982b4e..304d023 100644
--- a/src/components/minimum-duration-loader/__tests__/minimum-duration-loader-test-cases.js
+++ b/src/components/minimum-duration-loader/__tests__/minimum-duration-loader-test-cases.js
@@ -24,7 +24,7 @@ class TestMinimumDurationLoader extends React.Component {
           Current Loading State: {this.state.isLoaded ? 'Loaded' : 'Not Loaded'}
         </div>
         <div>
-          <button aria-label="Toggle" className="btn" onClick={this.toggleLoading}>
+          <button className="btn" onClick={this.toggleLoading}>
             Toggle Loading State
           </button>
         </div>
diff --git a/src/components/modal/__tests__/__snapshots__/modal-actions.test.js.snap b/src/components/modal/__tests__/__snapshots__/modal-actions.test.js.snap
index 45b7c96..31931c2 100644
--- a/src/components/modal/__tests__/__snapshots__/modal-actions.test.js.snap
+++ b/src/components/modal/__tests__/__snapshots__/modal-actions.test.js.snap
@@ -12,11 +12,6 @@ exports[`primary and secondary renders as expected 1`] = `
       data-test="primary-modal-action"
       disabled={false}
       onClick={[MockFunction]}
-      passthroughProps={
-        Object {
-          "aria-label": "Okay",
-        }
-      }
       size="medium"
       variant="primary"
     >
@@ -31,11 +26,6 @@ exports[`primary and secondary renders as expected 1`] = `
       data-test="secondary-modal-action"
       disabled={false}
       onClick={[MockFunction]}
-      passthroughProps={
-        Object {
-          "aria-label": "Cancel",
-        }
-      }
       size="medium"
       variant="discouraging"
     >
@@ -57,11 +47,6 @@ exports[`primary and tertiary does not render tertiary button, since secondary i
       data-test="primary-modal-action"
       disabled={false}
       onClick={[MockFunction]}
-      passthroughProps={
-        Object {
-          "aria-label": "Okay",
-        }
-      }
       size="medium"
       variant="primary"
     >
@@ -83,11 +68,6 @@ exports[`primary only renders as expected 1`] = `
       data-test="primary-modal-action"
       disabled={false}
       onClick={[MockFunction]}
-      passthroughProps={
-        Object {
-          "aria-label": "Okay",
-        }
-      }
       size="medium"
       variant="primary"
     >
@@ -109,11 +89,6 @@ exports[`primary, secondary, tertiary renders as expected 1`] = `
       data-test="primary-modal-action"
       disabled={false}
       onClick={[MockFunction]}
-      passthroughProps={
-        Object {
-          "aria-label": "Okay",
-        }
-      }
       size="medium"
       variant="primary"
     >
@@ -128,11 +103,6 @@ exports[`primary, secondary, tertiary renders as expected 1`] = `
       data-test="secondary-modal-action"
       disabled={false}
       onClick={[MockFunction]}
-      passthroughProps={
-        Object {
-          "aria-label": "Cancel",
-        }
-      }
       size="medium"
       variant="discouraging"
     >
@@ -143,7 +113,6 @@ exports[`primary, secondary, tertiary renders as expected 1`] = `
     className="flex-child flex-child--grow flex-child--no-shrink mr12"
   >
     <button
-      aria-label="Give up"
       className="link link--gray txt-bold txt-s"
       data-test="tertiary-modal-action"
       onClick={[MockFunction]}
diff --git a/src/components/modal/__tests__/__snapshots__/modal.test.js.snap b/src/components/modal/__tests__/__snapshots__/modal.test.js.snap
index 9326ec6..56f8edc 100644
--- a/src/components/modal/__tests__/__snapshots__/modal.test.js.snap
+++ b/src/components/modal/__tests__/__snapshots__/modal.test.js.snap
@@ -41,7 +41,6 @@ exports[`Modal No fixed width, display only renders 1`] = `
         textSize="s"
       >
         <button
-          aria-label="Close"
           className="btn btn--transparent unround-t unround-br color-gray py12 px12"
           data-test="modal-close"
           onClick={[MockFunction]}
@@ -89,7 +88,6 @@ exports[`Modal all options renders 1`] = `
         I am a message
       </div>
       <button
-        aria-label="press me"
         className="btn"
         id="foo"
       >
@@ -112,7 +110,6 @@ exports[`Modal all options renders 1`] = `
         textSize="s"
       >
         <button
-          aria-label="Close"
           className="btn btn--transparent unround-t unround-br color-gray py12 px12"
           data-test="modal-close"
           onClick={[MockFunction]}
@@ -197,7 +194,6 @@ exports[`Modal basic default renders 1`] = `
         textSize="s"
       >
         <button
-          aria-label="Close"
           className="btn btn--transparent unround-t unround-br color-gray py12 px12"
           data-test="modal-close"
           onClick={[MockFunction]}
@@ -269,7 +265,6 @@ exports[`Modal basic small renders 1`] = `
         textSize="s"
       >
         <button
-          aria-label="Close"
           className="btn btn--transparent unround-t unround-br color-gray py12 px12"
           data-test="modal-close"
           onClick={[MockFunction]}
diff --git a/src/components/modal/__tests__/modal-test-cases.js b/src/components/modal/__tests__/modal-test-cases.js
index 304a732..2051600 100644
--- a/src/components/modal/__tests__/modal-test-cases.js
+++ b/src/components/modal/__tests__/modal-test-cases.js
@@ -25,7 +25,7 @@ class ModalWrapper extends React.Component {
     );
     return (
       <div>
-        <button aria-label="Open modal" type="button" className="btn" onClick={this.toggleModal}>
+        <button type="button" className="btn" onClick={this.toggleModal}>
           Open modal
         </button>
         {modal}
@@ -113,27 +113,6 @@ testCases.unpadded = {
   )
 };
 
-testCases.pausedFocusTrap = {
-  description: 'wandering focus',
-  element: (
-    <ModalWrapper
-      componentProps={{
-        accessibleTitle: 'Not focus-trapped',
-        size: 'small',
-        focusTrapPaused: true,
-        children: (
-          <div>
-            <p>You can tab out of this modal. Try it!</p>
-            <p>
-              <a href="#">Some link</a>
-            </p>
-          </div>
-        )
-      }}
-    />
-  )
-};
-
 // Automatable test cases
 
 const noDisplayCases = {};
@@ -202,7 +181,7 @@ noDisplayCases.allOptions = {
     children: (
       <div>
         <div className="mb12">I am a message</div>
-        <button aria-label="press me" id="foo" className="btn">
+        <button id="foo" className="btn">
           press me
         </button>
       </div>
diff --git a/src/components/page-loading-indicator/__tests__/page-loading-indicator-test-cases.js b/src/components/page-loading-indicator/__tests__/page-loading-indicator-test-cases.js
index 5eab19b..0726fea 100644
--- a/src/components/page-loading-indicator/__tests__/page-loading-indicator-test-cases.js
+++ b/src/components/page-loading-indicator/__tests__/page-loading-indicator-test-cases.js
@@ -17,7 +17,7 @@ class Showman extends React.Component {
   render() {
     return (
       <div>
-        <button aria-label={`${String(this.props.time)}ms`} onClick={this.go} className="btn">
+        <button onClick={this.go} className="btn">
           {String(this.props.time)}ms
         </button>
       </div>
diff --git a/src/components/popover-trigger/__tests__/__snapshots__/popover-trigger.test.js.snap b/src/components/popover-trigger/__tests__/__snapshots__/popover-trigger.test.js.snap
index 771934d..62c366a 100644
--- a/src/components/popover-trigger/__tests__/__snapshots__/popover-trigger.test.js.snap
+++ b/src/components/popover-trigger/__tests__/__snapshots__/popover-trigger.test.js.snap
@@ -9,7 +9,6 @@ exports[`PopoverTrigger default props renders 1`] = `
   onKeyDown={[Function]}
 >
   <button
-    aria-label="Trigger"
     className="btn"
   >
     Trigger
@@ -26,7 +25,6 @@ exports[`PopoverTrigger responds to all interactions renders 1`] = `
   onKeyDown={[Function]}
 >
   <button
-    aria-label="Trigger"
     className="btn"
   >
     Trigger
diff --git a/src/components/popover-trigger/__tests__/popover-trigger-test-cases.js b/src/components/popover-trigger/__tests__/popover-trigger-test-cases.js
index 44890cc..d79aea5 100644
--- a/src/components/popover-trigger/__tests__/popover-trigger-test-cases.js
+++ b/src/components/popover-trigger/__tests__/popover-trigger-test-cases.js
@@ -12,7 +12,7 @@ testCases.defaultProps = {
   description: 'default props',
   element: (
     <PopoverTrigger content={getPopoverContent}>
-      <button aria-label="Trigger" className="btn">Trigger</button>
+      <button className="btn">Trigger</button>
     </PopoverTrigger>
   )
 };
@@ -27,7 +27,7 @@ testCases.respondsToAllInteractions = {
       respondsToFocus={true}
       respondsToClick={true}
     >
-      <button aria-label="Trigger" className="btn">Trigger</button>
+      <button className="btn">Trigger</button>
     </PopoverTrigger>
   )
 };
@@ -41,7 +41,7 @@ testCases.focusHoverNotClick = {
       respondsToFocus={true}
       respondsToClick={false}
     >
-      <button aria-label="Trigger" className="btn">Trigger</button>
+      <button className="btn">Trigger</button>
     </PopoverTrigger>
   )
 };
@@ -59,7 +59,7 @@ testCases.callbacks = {
     }),
     respondsToFocus: true,
     respondsToHover: true,
-    children: <button aria-label="Trigger" className="btn">Trigger</button>
+    children: <button className="btn">Trigger</button>
   }
 };
 
diff --git a/src/components/popover/__tests__/popover-test-cases.js b/src/components/popover/__tests__/popover-test-cases.js
index 9938fff..eb9acd2 100644
--- a/src/components/popover/__tests__/popover-test-cases.js
+++ b/src/components/popover/__tests__/popover-test-cases.js
@@ -57,7 +57,6 @@ class PopoverTrigger extends React.Component {
     return (
       <div className="inline-block">
         <button
-          aria-label="Trigger"
           ref={this.setAnchorNode}
           className={buttonClasses}
           onClick={this.togglePopover}
@@ -181,7 +180,7 @@ testCases.receiveFocus = {
             <input className="input" placeholder="eh?" />
           </div>
           <div className="flex-child">
-            <button aria-label="Submit" className="btn ml6">Submit</button>
+            <button className="btn ml6">Submit</button>
           </div>
         </div>
       }
@@ -202,7 +201,7 @@ testCases.doNotReceiveFocus = {
             <input className="input" placeholder="eh?" />
           </div>
           <div className="flex-child">
-            <button aria-label="Submit" className="btn ml6">Submit</button>
+            <button className="btn ml6">Submit</button>
           </div>
         </div>
       }
@@ -223,7 +222,7 @@ testCases.trapFocus = {
             <input className="input" placeholder="eh?" />
           </div>
           <div className="flex-child">
-            <button aria-label="Submit" className="btn ml6">Submit</button>
+            <button className="btn ml6">Submit</button>
           </div>
         </div>
       }
diff --git a/src/components/tab-list/__tests__/__snapshots__/tab-list.test.js.snap b/src/components/tab-list/__tests__/__snapshots__/tab-list.test.js.snap
index b2fd067..cbc0cc8 100644
--- a/src/components/tab-list/__tests__/__snapshots__/tab-list.test.js.snap
+++ b/src/components/tab-list/__tests__/__snapshots__/tab-list.test.js.snap
@@ -1,142 +1,5 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
-exports[`TabList a label contains a node renders 1`] = `
-<div
-  className="clearfix"
->
-  <div
-    className="fl"
-    key="0"
-  >
-    <button
-      aria-label="one"
-      className="px6 mr24 fl-mm align-center-mm align-l py12 border-b-mm border-b--2 inline-block border-b border--transparent "
-      data-test="one"
-      key="one"
-      onClick={[Function]}
-      type="button"
-    >
-      <Icon
-        inline={false}
-        name="star"
-        passthroughProps={Object {}}
-        size={18}
-      />
-    </button>
-  </div>
-  <div
-    className="fl"
-    key="1"
-  >
-    <button
-      aria-label="two"
-      className="px6 mr24 fl-mm align-center-mm align-l py12 border-b-mm border-b--2 inline-block border-b border--transparent "
-      data-test="two"
-      key="two"
-      onClick={[Function]}
-      type="button"
-    >
-      Label two
-    </button>
-  </div>
-  <div
-    className="fl"
-    key="0"
-  >
-    <button
-      aria-label="three"
-      className="px6 mr24 fl-mm align-center-mm align-l py12 border-b-mm border-b--2 inline-block-mm none border--blue txt-bold "
-      data-test="three"
-      key="three"
-      onClick={[Function]}
-      type="button"
-    >
-      Label three
-    </button>
-  </div>
-  <div
-    className="fl"
-    key="1"
-  >
-    <button
-      aria-label="four"
-      className="px6 mr24 fl-mm align-center-mm align-l py12 border-b-mm border-b--2 inline-block-mm none border--transparent "
-      data-test="four"
-      key="four"
-      onClick={[Function]}
-      type="button"
-    >
-      Label four
-    </button>
-  </div>
-  <div
-    className="fl"
-  >
-    <PopoverTrigger
-      block={false}
-      content={
-        Array [
-          <div
-            className="block"
-          >
-            <button
-              aria-label="three"
-              className="px6 mr24 fl-mm align-center-mm align-l py12 border-b-mm border-b--2 border-b--0 border--blue txt-bold "
-              data-test="three"
-              onClick={[Function]}
-              type="button"
-            >
-              Label three
-            </button>
-          </div>,
-          <div
-            className="block"
-          >
-            <button
-              aria-label="four"
-              className="px6 mr24 fl-mm align-center-mm align-l py12 border-b-mm border-b--2 border-b--0 border--transparent "
-              data-test="four"
-              onClick={[Function]}
-              type="button"
-            >
-              Label four
-            </button>
-          </div>,
-        ]
-      }
-      disabled={false}
-      onPopoverClose={[Function]}
-      onPopoverOpen={[Function]}
-      popoverProps={
-        Object {
-          "placement": "bottom",
-          "themePopover": "round shadow-darken25 h480 scroll-auto px12 py12 scroll-styled",
-        }
-      }
-      receiveFocus={true}
-      renderHiddenContent={false}
-      respondsToClick={true}
-      respondsToFocus={false}
-      respondsToHover={true}
-      trapFocus={true}
-      triggerProps={
-        Object {
-          "data-test": "more-dropdown-menu",
-        }
-      }
-    >
-      <button
-        aria-label="More"
-        className="px6 py12 mr12 align-l cursor-pointer none-mm"
-        type="button"
-      >
-        More +
-      </button>
-    </PopoverTrigger>
-  </div>
-</div>
-`;
-
 exports[`TabList basic renders 1`] = `
 <div
   className="clearfix"
@@ -146,7 +9,6 @@ exports[`TabList basic renders 1`] = `
     key="0"
   >
     <button
-      aria-label="one"
       className="px6 mr24 fl-mm align-center-mm align-l py12 border-b-mm border-b--2 inline-block border-b border--transparent "
       data-test="one"
       key="one"
@@ -161,7 +23,6 @@ exports[`TabList basic renders 1`] = `
     key="1"
   >
     <button
-      aria-label="two"
       className="px6 mr24 fl-mm align-center-mm align-l py12 border-b-mm border-b--2 inline-block border-b border--transparent "
       data-test="two"
       key="two"
@@ -176,7 +37,6 @@ exports[`TabList basic renders 1`] = `
     key="0"
   >
     <button
-      aria-label="three"
       className="px6 mr24 fl-mm align-center-mm align-l py12 border-b-mm border-b--2 inline-block-mm none border--blue txt-bold "
       data-test="three"
       key="three"
@@ -191,7 +51,6 @@ exports[`TabList basic renders 1`] = `
     key="1"
   >
     <button
-      aria-label="four"
       className="px6 mr24 fl-mm align-center-mm align-l py12 border-b-mm border-b--2 inline-block-mm none border--transparent "
       data-test="four"
       key="four"
@@ -212,7 +71,6 @@ exports[`TabList basic renders 1`] = `
             className="block"
           >
             <button
-              aria-label="three"
               className="px6 mr24 fl-mm align-center-mm align-l py12 border-b-mm border-b--2 border-b--0 border--blue txt-bold "
               data-test="three"
               onClick={[Function]}
@@ -225,7 +83,6 @@ exports[`TabList basic renders 1`] = `
             className="block"
           >
             <button
-              aria-label="four"
               className="px6 mr24 fl-mm align-center-mm align-l py12 border-b-mm border-b--2 border-b--0 border--transparent "
               data-test="four"
               onClick={[Function]}
@@ -258,7 +115,6 @@ exports[`TabList basic renders 1`] = `
       }
     >
       <button
-        aria-label="More"
         className="px6 py12 mr12 align-l cursor-pointer none-mm"
         type="button"
       >
@@ -378,7 +234,6 @@ exports[`TabList links renders 1`] = `
       }
     >
       <button
-        aria-label="More"
         className="px6 py12 mr12 align-l cursor-pointer none-mm"
         type="button"
       >
@@ -520,7 +375,6 @@ exports[`TabList truncate all renders 1`] = `
       }
     >
       <button
-        aria-label="More"
         className="px6 py12 mr12 align-l cursor-pointer none-mm"
         type="button"
       >
diff --git a/src/components/tab-list/__tests__/tab-list-test-cases.js b/src/components/tab-list/__tests__/tab-list-test-cases.js
index 58d62b2..f33439a 100644
--- a/src/components/tab-list/__tests__/tab-list-test-cases.js
+++ b/src/components/tab-list/__tests__/tab-list-test-cases.js
@@ -1,7 +1,5 @@
-import React from 'react';
 import safeSpy from '../../../test-utils/safe-spy';
 import TabList from '../tab-list';
-import Icon from '../../icon';
 
 const testCases = {};
 
@@ -49,19 +47,4 @@ testCases.truncateAll = {
   }
 };
 
-testCases.labelNode = {
-  description: 'a label contains a node',
-  component: TabList,
-  props: {
-    onChange: safeSpy(),
-    activeItem: 'three',
-    items: [
-      { id: 'one', label: <Icon name="star" /> },
-      { id: 'two', label: 'Label two' },
-      { id: 'three', label: 'Label three' },
-      { id: 'four', label: 'Label four' }
-    ]
-  }
-};
-
 export { testCases };
diff --git a/src/components/tab-list/__tests__/tab-list.test.js b/src/components/tab-list/__tests__/tab-list.test.js
index 67c106f..dd5e855 100644
--- a/src/components/tab-list/__tests__/tab-list.test.js
+++ b/src/components/tab-list/__tests__/tab-list.test.js
@@ -67,33 +67,6 @@ describe('TabList', () => {
       ).toMatchSnapshot();
     });
 
-    test('activeItem prop updates active item', () => {
-      wrapper.setProps({ activeItem: 'one' });
-      wrapper.update();
-    });
-  });
-  describe(testCases.labelNode.description, () => {
-    beforeEach(() => {
-      testCase = testCases.labelNode;
-      wrapper = shallow(
-        React.createElement(testCase.component, testCase.props)
-      );
-    });
-
-    test('renders', () => {
-      expect(toJson(wrapper)).toMatchSnapshot();
-    });
-
-    test('onChange is called', () => {
-      wrapper
-        .find('button')
-        .first()
-        .props()
-        .onClick('one');
-      expect(testCase.props.onChange).toHaveBeenCalledTimes(1);
-      expect(testCase.props.onChange).toHaveBeenCalledWith('one');
-    });
-
     test('activeItem prop updates active item', () => {
       wrapper.setProps({ activeItem: 'one' });
       wrapper.update();
diff --git a/src/components/tooltip/__tests__/tooltip-test-cases.js b/src/components/tooltip/__tests__/tooltip-test-cases.js
index 41e6d1f..53798ab 100644
--- a/src/components/tooltip/__tests__/tooltip-test-cases.js
+++ b/src/components/tooltip/__tests__/tooltip-test-cases.js
@@ -25,7 +25,7 @@ function getTooltipList(options = {}) {
           testId={`${options.testId}-default`}
           respondsToClick={options.respondsToClick}
         >
-          <button aria-label="default" className={buttonClasses}>default</button>
+          <button className={buttonClasses}>default</button>
         </Tooltip>
       </div>
       <div className={containerClasses}>
@@ -35,7 +35,7 @@ function getTooltipList(options = {}) {
           respondsToClick={options.respondsToClick}
           disabled={true}
         >
-          <button aria-hidden={true} className={buttonClasses}>disabled</button>
+          <button className={buttonClasses}>disabled</button>
         </Tooltip>
       </div>
       <div className={containerClasses}>
@@ -45,7 +45,7 @@ function getTooltipList(options = {}) {
           testId={`${options.testId}-top`}
           respondsToClick={options.respondsToClick}
         >
-          <button aria-label="top" className={buttonClasses}>top</button>
+          <button className={buttonClasses}>top</button>
         </Tooltip>
       </div>
       <div className={containerClasses}>
@@ -55,7 +55,7 @@ function getTooltipList(options = {}) {
           testId={`${options.testId}-left`}
           respondsToClick={options.respondsToClick}
         >
-          <button aria-label="left" className={buttonClasses}>left</button>
+          <button className={buttonClasses}>left</button>
         </Tooltip>
       </div>
       <div className={containerClasses}>
@@ -65,7 +65,7 @@ function getTooltipList(options = {}) {
           testId={`${options.testId}-right`}
           respondsToClick={options.respondsToClick}
         >
-          <button aria-label="right" className={buttonClasses}>right</button>
+          <button className={buttonClasses}>right</button>
         </Tooltip>
       </div>
       <div className={containerClasses}>
@@ -75,7 +75,7 @@ function getTooltipList(options = {}) {
           testId={`${options.testId}-bottom`}
           respondsToClick={options.respondsToClick}
         >
-          <button aria-label="bottom" className={buttonClasses}>bottom</button>
+          <button className={buttonClasses}>bottom</button>
         </Tooltip>
       </div>
     </div>
@@ -116,7 +116,7 @@ testCases.buttonChild = {
   description: 'Button child',
   component: Tooltip,
   props: {
-    children: <Button passthroughProps={{'aria-label': 'trigger'}}>trigger</Button>,
+    children: <Button>trigger</Button>,
     content: 'Button child'
   }
 };
diff --git a/src/components/underline-tabs/__tests__/__snapshots__/underline-tabs.test.js.snap b/src/components/underline-tabs/__tests__/__snapshots__/underline-tabs.test.js.snap
index 0f7b919..3737cd1 100644
--- a/src/components/underline-tabs/__tests__/__snapshots__/underline-tabs.test.js.snap
+++ b/src/components/underline-tabs/__tests__/__snapshots__/underline-tabs.test.js.snap
@@ -9,7 +9,6 @@ exports[`ID labels and a disabled item renders as expected 1`] = `
     key="ant"
   >
     <button
-      aria-label="Ant"
       className="block relative color-gray color-blue-on-hover"
       data-test="ant"
       onClick={[Function]}
@@ -36,7 +35,6 @@ exports[`ID labels and a disabled item renders as expected 1`] = `
     key="bug"
   >
     <button
-      aria-label="Bug"
       className="block relative color-gray-light cursor-default"
       data-test="bug"
       onClick={[Function]}
@@ -63,7 +61,6 @@ exports[`ID labels and a disabled item renders as expected 1`] = `
     key="cat"
   >
     <button
-      aria-label="Cat"
       className="block relative color-gray-dark cursor-default"
       data-test="cat"
       onClick={[Function]}
@@ -100,7 +97,6 @@ exports[`customized renders as expected 1`] = `
     key="A"
   >
     <button
-      aria-label="Letter A"
       className="block relative color-pink cursor-default"
       data-test="A"
       onClick={[Function]}
@@ -130,7 +126,6 @@ exports[`customized renders as expected 1`] = `
     key="B"
   >
     <button
-      aria-label="Letter B"
       className="block relative color-purple color-pink-on-hover"
       data-test="B"
       onClick={[Function]}
@@ -157,7 +152,6 @@ exports[`customized renders as expected 1`] = `
     key="C"
   >
     <button
-      aria-label="Letter C"
       className="block relative color-purple color-pink-on-hover"
       data-test="C"
       onClick={[Function]}
@@ -191,7 +185,6 @@ exports[`defaults renders as expected 1`] = `
     key="A"
   >
     <button
-      aria-label="Letter A"
       className="block relative color-gray color-blue-on-hover"
       data-test="A"
       onClick={[Function]}
@@ -218,7 +211,6 @@ exports[`defaults renders as expected 1`] = `
     key="B"
   >
     <button
-      aria-label="Letter B"
       className="block relative color-gray-dark cursor-default"
       data-test="B"
       onClick={[Function]}
@@ -248,7 +240,6 @@ exports[`defaults renders as expected 1`] = `
     key="C"
   >
     <button
-      aria-label="Letter C"
       className="block relative color-gray color-blue-on-hover"
       data-test="C"
       onClick={[Function]}
@@ -370,7 +361,6 @@ exports[`large renders as expected 1`] = `
     key="A"
   >
     <button
-      aria-label="Letter A"
       className="block relative color-gray color-blue-on-hover"
       data-test="A"
       onClick={[Function]}
@@ -397,7 +387,6 @@ exports[`large renders as expected 1`] = `
     key="B"
   >
     <button
-      aria-label="Letter B"
       className="block relative color-gray color-blue-on-hover"
       data-test="B"
       onClick={[Function]}
@@ -424,7 +413,6 @@ exports[`large renders as expected 1`] = `
     key="C"
   >
     <button
-      aria-label="Letter C"
       className="block relative color-gray-dark cursor-default"
       data-test="C"
       onClick={[Function]}
@@ -461,7 +449,6 @@ exports[`overlap renders as expected 1`] = `
     key="A"
   >
     <button
-      aria-label="Letter A"
       className="block relative mb-neg1 mt-neg1 color-gray color-blue-on-hover"
       data-test="A"
       onClick={[Function]}
@@ -488,7 +475,6 @@ exports[`overlap renders as expected 1`] = `
     key="B"
   >
     <button
-      aria-label="Letter B"
       className="block relative mb-neg1 mt-neg1 color-gray-dark cursor-default"
       data-test="B"
       onClick={[Function]}
@@ -518,7 +504,6 @@ exports[`overlap renders as expected 1`] = `
     key="C"
   >
     <button
-      aria-label="Letter C"
       className="block relative mb-neg1 mt-neg1 color-gray color-blue-on-hover"
       data-test="C"
       onClick={[Function]}
@@ -552,7 +537,6 @@ exports[`small renders as expected 1`] = `
     key="A"
   >
     <button
-      aria-label="Letter A"
       className="block relative color-gray color-blue-on-hover"
       data-test="A"
       onClick={[Function]}
@@ -579,7 +563,6 @@ exports[`small renders as expected 1`] = `
     key="B"
   >
     <button
-      aria-label="Letter B"
       className="block relative color-gray-dark cursor-default"
       data-test="B"
       onClick={[Function]}
@@ -609,7 +592,6 @@ exports[`small renders as expected 1`] = `
     key="C"
   >
     <button
-      aria-label="Letter C"
       className="block relative color-gray color-blue-on-hover"
       data-test="C"
       onClick={[Function]}