diff --git a/node_modules/ext-name/index.js b/node_modules/ext-name/index.js
new file mode 100644
index 0000000..59ac1f6
--- /dev/null
+++ b/node_modules/ext-name/index.js
@@ -0,0 +1,31 @@
+'use strict';
+const extList = require('ext-list');
+const sortKeysLength = require('sort-keys-length');
+
+module.exports = str => {
+	const obj = sortKeysLength.desc(extList());
+	const exts = Object.keys(obj).filter(x => str.endsWith(x));
+
+	if (exts.length === 0) {
+		return [];
+	}
+
+	return exts.map(x => ({
+		ext: x,
+		mime: obj[x]
+	}));
+};
+
+module.exports.mime = str => {
+	const obj = sortKeysLength.desc(extList());
+	const exts = Object.keys(obj).filter(x => obj[x] === str);
+
+	if (exts.length === 0) {
+		return [];
+	}
+
+	return exts.map(x => ({
+		ext: x,
+		mime: obj[x]
+	}));
+};
diff --git a/node_modules/ext-name/license b/node_modules/ext-name/license
new file mode 100644
index 0000000..a8ecbbe
--- /dev/null
+++ b/node_modules/ext-name/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Kevin Mårtensson <kevinmartensson@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/ext-name/package.json b/node_modules/ext-name/package.json
new file mode 100644
index 0000000..f1fb934
--- /dev/null
+++ b/node_modules/ext-name/package.json
@@ -0,0 +1,67 @@
+{
+  "_from": "ext-name@^5.0.0",
+  "_id": "ext-name@5.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==",
+  "_location": "/ext-name",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "ext-name@^5.0.0",
+    "name": "ext-name",
+    "escapedName": "ext-name",
+    "rawSpec": "^5.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^5.0.0"
+  },
+  "_requiredBy": [
+    "/bin-wrapper/download",
+    "/download"
+  ],
+  "_resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz",
+  "_shasum": "70781981d183ee15d13993c8822045c506c8f0a6",
+  "_spec": "ext-name@^5.0.0",
+  "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\download",
+  "author": {
+    "name": "Kevin Mårtensson",
+    "email": "kevinmartensson@gmail.com",
+    "url": "https://github.com/kevva"
+  },
+  "bugs": {
+    "url": "https://github.com/kevva/ext-name/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "ext-list": "^2.0.0",
+    "sort-keys-length": "^1.0.0"
+  },
+  "deprecated": false,
+  "description": "Get the file extension and MIME type from a file",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=4"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/kevva/ext-name#readme",
+  "keywords": [
+    "ext",
+    "extname",
+    "mime"
+  ],
+  "license": "MIT",
+  "name": "ext-name",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/kevva/ext-name.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "5.0.0"
+}
diff --git a/node_modules/ext-name/readme.md b/node_modules/ext-name/readme.md
new file mode 100644
index 0000000..8df382b
--- /dev/null
+++ b/node_modules/ext-name/readme.md
@@ -0,0 +1,57 @@
+# ext-name [![Build Status](https://travis-ci.org/kevva/ext-name.svg?branch=master)](https://travis-ci.org/kevva/ext-name)
+
+> Get the file extension and MIME type from a file
+
+
+## Install
+
+```
+$ npm install --save ext-name
+```
+
+
+## Usage
+
+```js
+const extName = require('ext-name');
+
+console.log(extName('foobar.tar'));
+//=> [{ext: 'tar', mime: 'application/x-tar'}]
+
+console.log(extName.mime('application/x-tar'));
+//=> [{ext: 'tar', mime: 'application/x-tar'}]
+```
+
+
+## API
+
+### extName(filename)
+
+Returns an `Array` with objects with the file extension and MIME type.
+
+#### filename
+
+Type: `string`
+
+Get the extension and MIME type from a filename.
+
+### extName.mime(mimetype)
+
+Returns an `Array` with objects with the file extension and MIME type.
+
+#### mimetype
+
+Type: `string`
+
+Get the extension and MIME type from a MIME type.
+
+
+## Related
+
+* [ext-name-cli](https://github.com/kevva/ext-name-cli) - CLI for this module
+* [file-type](https://github.com/sindresorhus/file-type) - Detect the file type of a Buffer/Uint8Array
+
+
+## License
+
+MIT © [Kevin Mårtensson](https://github.com/kevva)
