UNPKG

246 kBJavaScriptView Raw
1'use strict';
2
3var require$$0$1 = require('events');
4var build = require('./chunks/dep-cc49d7be.js');
5var path = require('path');
6var require$$0$2 = require('tty');
7var require$$0$3 = require('util');
8var fs = require('fs');
9var require$$4 = require('net');
10var require$$0$4 = require('zlib');
11require('os');
12require('url');
13require('http');
14require('stream');
15require('resolve');
16require('module');
17require('https');
18require('tls');
19require('crypto');
20require('assert');
21require('buffer');
22require('querystring');
23require('repl');
24require('vm');
25require('console');
26require('esbuild');
27require('worker_threads');
28require('child_process');
29require('readline');
30
31function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e['default'] : e; }
32
33var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
34var require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0$2);
35var require$$0__default$1 = /*#__PURE__*/_interopDefaultLegacy(require$$0$3);
36var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
37var require$$4__default = /*#__PURE__*/_interopDefaultLegacy(require$$4);
38var require$$0__default$2 = /*#__PURE__*/_interopDefaultLegacy(require$$0$4);
39
40function toArr(any) {
41 return any == null ? [] : Array.isArray(any) ? any : [any];
42}
43
44function toVal(out, key, val, opts) {
45 var x, old=out[key], nxt=(
46 !!~opts.string.indexOf(key) ? (val == null || val === true ? '' : String(val))
47 : typeof val === 'boolean' ? val
48 : !!~opts.boolean.indexOf(key) ? (val === 'false' ? false : val === 'true' || (out._.push((x = +val,x * 0 === 0) ? x : val),!!val))
49 : (x = +val,x * 0 === 0) ? x : val
50 );
51 out[key] = old == null ? nxt : (Array.isArray(old) ? old.concat(nxt) : [old, nxt]);
52}
53
54function mri2 (args, opts) {
55 args = args || [];
56 opts = opts || {};
57
58 var k, arr, arg, name, val, out={ _:[] };
59 var i=0, j=0, idx=0, len=args.length;
60
61 const alibi = opts.alias !== void 0;
62 const strict = opts.unknown !== void 0;
63 const defaults = opts.default !== void 0;
64
65 opts.alias = opts.alias || {};
66 opts.string = toArr(opts.string);
67 opts.boolean = toArr(opts.boolean);
68
69 if (alibi) {
70 for (k in opts.alias) {
71 arr = opts.alias[k] = toArr(opts.alias[k]);
72 for (i=0; i < arr.length; i++) {
73 (opts.alias[arr[i]] = arr.concat(k)).splice(i, 1);
74 }
75 }
76 }
77
78 for (i=opts.boolean.length; i-- > 0;) {
79 arr = opts.alias[opts.boolean[i]] || [];
80 for (j=arr.length; j-- > 0;) opts.boolean.push(arr[j]);
81 }
82
83 for (i=opts.string.length; i-- > 0;) {
84 arr = opts.alias[opts.string[i]] || [];
85 for (j=arr.length; j-- > 0;) opts.string.push(arr[j]);
86 }
87
88 if (defaults) {
89 for (k in opts.default) {
90 name = typeof opts.default[k];
91 arr = opts.alias[k] = opts.alias[k] || [];
92 if (opts[name] !== void 0) {
93 opts[name].push(k);
94 for (i=0; i < arr.length; i++) {
95 opts[name].push(arr[i]);
96 }
97 }
98 }
99 }
100
101 const keys = strict ? Object.keys(opts.alias) : [];
102
103 for (i=0; i < len; i++) {
104 arg = args[i];
105
106 if (arg === '--') {
107 out._ = out._.concat(args.slice(++i));
108 break;
109 }
110
111 for (j=0; j < arg.length; j++) {
112 if (arg.charCodeAt(j) !== 45) break; // "-"
113 }
114
115 if (j === 0) {
116 out._.push(arg);
117 } else if (arg.substring(j, j + 3) === 'no-') {
118 name = arg.substring(j + 3);
119 if (strict && !~keys.indexOf(name)) {
120 return opts.unknown(arg);
121 }
122 out[name] = false;
123 } else {
124 for (idx=j+1; idx < arg.length; idx++) {
125 if (arg.charCodeAt(idx) === 61) break; // "="
126 }
127
128 name = arg.substring(j, idx);
129 val = arg.substring(++idx) || (i+1 === len || (''+args[i+1]).charCodeAt(0) === 45 || args[++i]);
130 arr = (j === 2 ? [name] : name);
131
132 for (idx=0; idx < arr.length; idx++) {
133 name = arr[idx];
134 if (strict && !~keys.indexOf(name)) return opts.unknown('-'.repeat(j) + name);
135 toVal(out, name, (idx + 1 < arr.length) || val, opts);
136 }
137 }
138 }
139
140 if (defaults) {
141 for (k in opts.default) {
142 if (out[k] === void 0) {
143 out[k] = opts.default[k];
144 }
145 }
146 }
147
148 if (alibi) {
149 for (k in out) {
150 arr = opts.alias[k] || [];
151 while (arr.length > 0) {
152 out[arr.shift()] = out[k];
153 }
154 }
155 }
156
157 return out;
158}
159
160const removeBrackets = (v) => v.replace(/[<[].+/, "").trim();
161const findAllBrackets = (v) => {
162 const ANGLED_BRACKET_RE_GLOBAL = /<([^>]+)>/g;
163 const SQUARE_BRACKET_RE_GLOBAL = /\[([^\]]+)\]/g;
164 const res = [];
165 const parse = (match) => {
166 let variadic = false;
167 let value = match[1];
168 if (value.startsWith("...")) {
169 value = value.slice(3);
170 variadic = true;
171 }
172 return {
173 required: match[0].startsWith("<"),
174 value,
175 variadic
176 };
177 };
178 let angledMatch;
179 while (angledMatch = ANGLED_BRACKET_RE_GLOBAL.exec(v)) {
180 res.push(parse(angledMatch));
181 }
182 let squareMatch;
183 while (squareMatch = SQUARE_BRACKET_RE_GLOBAL.exec(v)) {
184 res.push(parse(squareMatch));
185 }
186 return res;
187};
188const getMriOptions = (options) => {
189 const result = {alias: {}, boolean: []};
190 for (const [index, option] of options.entries()) {
191 if (option.names.length > 1) {
192 result.alias[option.names[0]] = option.names.slice(1);
193 }
194 if (option.isBoolean) {
195 if (option.negated) {
196 const hasStringTypeOption = options.some((o, i) => {
197 return i !== index && o.names.some((name) => option.names.includes(name)) && typeof o.required === "boolean";
198 });
199 if (!hasStringTypeOption) {
200 result.boolean.push(option.names[0]);
201 }
202 } else {
203 result.boolean.push(option.names[0]);
204 }
205 }
206 }
207 return result;
208};
209const findLongest = (arr) => {
210 return arr.sort((a, b) => {
211 return a.length > b.length ? -1 : 1;
212 })[0];
213};
214const padRight = (str, length) => {
215 return str.length >= length ? str : `${str}${" ".repeat(length - str.length)}`;
216};
217const camelcase = (input) => {
218 return input.replace(/([a-z])-([a-z])/g, (_, p1, p2) => {
219 return p1 + p2.toUpperCase();
220 });
221};
222const setDotProp = (obj, keys, val) => {
223 let i = 0;
224 let length = keys.length;
225 let t = obj;
226 let x;
227 for (; i < length; ++i) {
228 x = t[keys[i]];
229 t = t[keys[i]] = i === length - 1 ? val : x != null ? x : !!~keys[i + 1].indexOf(".") || !(+keys[i + 1] > -1) ? {} : [];
230 }
231};
232const setByType = (obj, transforms) => {
233 for (const key of Object.keys(transforms)) {
234 const transform = transforms[key];
235 if (transform.shouldTransform) {
236 obj[key] = Array.prototype.concat.call([], obj[key]);
237 if (typeof transform.transformFunction === "function") {
238 obj[key] = obj[key].map(transform.transformFunction);
239 }
240 }
241 }
242};
243const getFileName = (input) => {
244 const m = /([^\\\/]+)$/.exec(input);
245 return m ? m[1] : "";
246};
247const camelcaseOptionName = (name) => {
248 return name.split(".").map((v, i) => {
249 return i === 0 ? camelcase(v) : v;
250 }).join(".");
251};
252class CACError extends Error {
253 constructor(message) {
254 super(message);
255 this.name = this.constructor.name;
256 if (typeof Error.captureStackTrace === "function") {
257 Error.captureStackTrace(this, this.constructor);
258 } else {
259 this.stack = new Error(message).stack;
260 }
261 }
262}
263
264class Option {
265 constructor(rawName, description, config) {
266 this.rawName = rawName;
267 this.description = description;
268 this.config = Object.assign({}, config);
269 rawName = rawName.replace(/\.\*/g, "");
270 this.negated = false;
271 this.names = removeBrackets(rawName).split(",").map((v) => {
272 let name = v.trim().replace(/^-{1,2}/, "");
273 if (name.startsWith("no-")) {
274 this.negated = true;
275 name = name.replace(/^no-/, "");
276 }
277 return camelcaseOptionName(name);
278 }).sort((a, b) => a.length > b.length ? 1 : -1);
279 this.name = this.names[this.names.length - 1];
280 if (this.negated && this.config.default == null) {
281 this.config.default = true;
282 }
283 if (rawName.includes("<")) {
284 this.required = true;
285 } else if (rawName.includes("[")) {
286 this.required = false;
287 } else {
288 this.isBoolean = true;
289 }
290 }
291}
292
293const processArgs = process.argv;
294const platformInfo = `${process.platform}-${process.arch} node-${process.version}`;
295
296class Command {
297 constructor(rawName, description, config = {}, cli) {
298 this.rawName = rawName;
299 this.description = description;
300 this.config = config;
301 this.cli = cli;
302 this.options = [];
303 this.aliasNames = [];
304 this.name = removeBrackets(rawName);
305 this.args = findAllBrackets(rawName);
306 this.examples = [];
307 }
308 usage(text) {
309 this.usageText = text;
310 return this;
311 }
312 allowUnknownOptions() {
313 this.config.allowUnknownOptions = true;
314 return this;
315 }
316 ignoreOptionDefaultValue() {
317 this.config.ignoreOptionDefaultValue = true;
318 return this;
319 }
320 version(version, customFlags = "-v, --version") {
321 this.versionNumber = version;
322 this.option(customFlags, "Display version number");
323 return this;
324 }
325 example(example) {
326 this.examples.push(example);
327 return this;
328 }
329 option(rawName, description, config) {
330 const option = new Option(rawName, description, config);
331 this.options.push(option);
332 return this;
333 }
334 alias(name) {
335 this.aliasNames.push(name);
336 return this;
337 }
338 action(callback) {
339 this.commandAction = callback;
340 return this;
341 }
342 isMatched(name) {
343 return this.name === name || this.aliasNames.includes(name);
344 }
345 get isDefaultCommand() {
346 return this.name === "" || this.aliasNames.includes("!");
347 }
348 get isGlobalCommand() {
349 return this instanceof GlobalCommand;
350 }
351 hasOption(name) {
352 name = name.split(".")[0];
353 return this.options.find((option) => {
354 return option.names.includes(name);
355 });
356 }
357 outputHelp() {
358 const {name, commands} = this.cli;
359 const {
360 versionNumber,
361 options: globalOptions,
362 helpCallback
363 } = this.cli.globalCommand;
364 let sections = [
365 {
366 body: `${name}${versionNumber ? `/${versionNumber}` : ""}`
367 }
368 ];
369 sections.push({
370 title: "Usage",
371 body: ` $ ${name} ${this.usageText || this.rawName}`
372 });
373 const showCommands = (this.isGlobalCommand || this.isDefaultCommand) && commands.length > 0;
374 if (showCommands) {
375 const longestCommandName = findLongest(commands.map((command) => command.rawName));
376 sections.push({
377 title: "Commands",
378 body: commands.map((command) => {
379 return ` ${padRight(command.rawName, longestCommandName.length)} ${command.description}`;
380 }).join("\n")
381 });
382 sections.push({
383 title: `For more info, run any command with the \`--help\` flag`,
384 body: commands.map((command) => ` $ ${name}${command.name === "" ? "" : ` ${command.name}`} --help`).join("\n")
385 });
386 }
387 const options = this.isGlobalCommand ? globalOptions : [...this.options, ...globalOptions || []];
388 if (options.length > 0) {
389 const longestOptionName = findLongest(options.map((option) => option.rawName));
390 sections.push({
391 title: "Options",
392 body: options.map((option) => {
393 return ` ${padRight(option.rawName, longestOptionName.length)} ${option.description} ${option.config.default === void 0 ? "" : `(default: ${option.config.default})`}`;
394 }).join("\n")
395 });
396 }
397 if (this.examples.length > 0) {
398 sections.push({
399 title: "Examples",
400 body: this.examples.map((example) => {
401 if (typeof example === "function") {
402 return example(name);
403 }
404 return example;
405 }).join("\n")
406 });
407 }
408 if (helpCallback) {
409 sections = helpCallback(sections) || sections;
410 }
411 console.log(sections.map((section) => {
412 return section.title ? `${section.title}:
413${section.body}` : section.body;
414 }).join("\n\n"));
415 }
416 outputVersion() {
417 const {name} = this.cli;
418 const {versionNumber} = this.cli.globalCommand;
419 if (versionNumber) {
420 console.log(`${name}/${versionNumber} ${platformInfo}`);
421 }
422 }
423 checkRequiredArgs() {
424 const minimalArgsCount = this.args.filter((arg) => arg.required).length;
425 if (this.cli.args.length < minimalArgsCount) {
426 throw new CACError(`missing required args for command \`${this.rawName}\``);
427 }
428 }
429 checkUnknownOptions() {
430 const {options, globalCommand} = this.cli;
431 if (!this.config.allowUnknownOptions) {
432 for (const name of Object.keys(options)) {
433 if (name !== "--" && !this.hasOption(name) && !globalCommand.hasOption(name)) {
434 throw new CACError(`Unknown option \`${name.length > 1 ? `--${name}` : `-${name}`}\``);
435 }
436 }
437 }
438 }
439 checkOptionValue() {
440 const {options: parsedOptions, globalCommand} = this.cli;
441 const options = [...globalCommand.options, ...this.options];
442 for (const option of options) {
443 const value = parsedOptions[option.name.split(".")[0]];
444 if (option.required) {
445 const hasNegated = options.some((o) => o.negated && o.names.includes(option.name));
446 if (value === true || value === false && !hasNegated) {
447 throw new CACError(`option \`${option.rawName}\` value is missing`);
448 }
449 }
450 }
451 }
452}
453class GlobalCommand extends Command {
454 constructor(cli) {
455 super("@@global@@", "", {}, cli);
456 }
457}
458
459var __assign = Object.assign;
460class CAC extends require$$0$1.EventEmitter {
461 constructor(name = "") {
462 super();
463 this.name = name;
464 this.commands = [];
465 this.rawArgs = [];
466 this.args = [];
467 this.options = {};
468 this.globalCommand = new GlobalCommand(this);
469 this.globalCommand.usage("<command> [options]");
470 }
471 usage(text) {
472 this.globalCommand.usage(text);
473 return this;
474 }
475 command(rawName, description, config) {
476 const command = new Command(rawName, description || "", config, this);
477 command.globalCommand = this.globalCommand;
478 this.commands.push(command);
479 return command;
480 }
481 option(rawName, description, config) {
482 this.globalCommand.option(rawName, description, config);
483 return this;
484 }
485 help(callback) {
486 this.globalCommand.option("-h, --help", "Display this message");
487 this.globalCommand.helpCallback = callback;
488 this.showHelpOnExit = true;
489 return this;
490 }
491 version(version, customFlags = "-v, --version") {
492 this.globalCommand.version(version, customFlags);
493 this.showVersionOnExit = true;
494 return this;
495 }
496 example(example) {
497 this.globalCommand.example(example);
498 return this;
499 }
500 outputHelp() {
501 if (this.matchedCommand) {
502 this.matchedCommand.outputHelp();
503 } else {
504 this.globalCommand.outputHelp();
505 }
506 }
507 outputVersion() {
508 this.globalCommand.outputVersion();
509 }
510 setParsedInfo({args, options}, matchedCommand, matchedCommandName) {
511 this.args = args;
512 this.options = options;
513 if (matchedCommand) {
514 this.matchedCommand = matchedCommand;
515 }
516 if (matchedCommandName) {
517 this.matchedCommandName = matchedCommandName;
518 }
519 return this;
520 }
521 unsetMatchedCommand() {
522 this.matchedCommand = void 0;
523 this.matchedCommandName = void 0;
524 }
525 parse(argv = processArgs, {
526 run = true
527 } = {}) {
528 this.rawArgs = argv;
529 if (!this.name) {
530 this.name = argv[1] ? getFileName(argv[1]) : "cli";
531 }
532 let shouldParse = true;
533 for (const command of this.commands) {
534 const parsed = this.mri(argv.slice(2), command);
535 const commandName = parsed.args[0];
536 if (command.isMatched(commandName)) {
537 shouldParse = false;
538 const parsedInfo = __assign(__assign({}, parsed), {
539 args: parsed.args.slice(1)
540 });
541 this.setParsedInfo(parsedInfo, command, commandName);
542 this.emit(`command:${commandName}`, command);
543 }
544 }
545 if (shouldParse) {
546 for (const command of this.commands) {
547 if (command.name === "") {
548 shouldParse = false;
549 const parsed = this.mri(argv.slice(2), command);
550 this.setParsedInfo(parsed, command);
551 this.emit(`command:!`, command);
552 }
553 }
554 }
555 if (shouldParse) {
556 const parsed = this.mri(argv.slice(2));
557 this.setParsedInfo(parsed);
558 }
559 if (this.options.help && this.showHelpOnExit) {
560 this.outputHelp();
561 run = false;
562 this.unsetMatchedCommand();
563 }
564 if (this.options.version && this.showVersionOnExit) {
565 this.outputVersion();
566 run = false;
567 this.unsetMatchedCommand();
568 }
569 const parsedArgv = {args: this.args, options: this.options};
570 if (run) {
571 this.runMatchedCommand();
572 }
573 if (!this.matchedCommand && this.args[0]) {
574 this.emit("command:*");
575 }
576 return parsedArgv;
577 }
578 mri(argv, command) {
579 const cliOptions = [
580 ...this.globalCommand.options,
581 ...command ? command.options : []
582 ];
583 const mriOptions = getMriOptions(cliOptions);
584 let argsAfterDoubleDashes = [];
585 const doubleDashesIndex = argv.indexOf("--");
586 if (doubleDashesIndex > -1) {
587 argsAfterDoubleDashes = argv.slice(doubleDashesIndex + 1);
588 argv = argv.slice(0, doubleDashesIndex);
589 }
590 let parsed = mri2(argv, mriOptions);
591 parsed = Object.keys(parsed).reduce((res, name) => {
592 return __assign(__assign({}, res), {
593 [camelcaseOptionName(name)]: parsed[name]
594 });
595 }, {_: []});
596 const args = parsed._;
597 const options = {
598 "--": argsAfterDoubleDashes
599 };
600 const ignoreDefault = command && command.config.ignoreOptionDefaultValue ? command.config.ignoreOptionDefaultValue : this.globalCommand.config.ignoreOptionDefaultValue;
601 let transforms = Object.create(null);
602 for (const cliOption of cliOptions) {
603 if (!ignoreDefault && cliOption.config.default !== void 0) {
604 for (const name of cliOption.names) {
605 options[name] = cliOption.config.default;
606 }
607 }
608 if (Array.isArray(cliOption.config.type)) {
609 if (transforms[cliOption.name] === void 0) {
610 transforms[cliOption.name] = Object.create(null);
611 transforms[cliOption.name]["shouldTransform"] = true;
612 transforms[cliOption.name]["transformFunction"] = cliOption.config.type[0];
613 }
614 }
615 }
616 for (const key of Object.keys(parsed)) {
617 if (key !== "_") {
618 const keys = key.split(".");
619 setDotProp(options, keys, parsed[key]);
620 setByType(options, transforms);
621 }
622 }
623 return {
624 args,
625 options
626 };
627 }
628 runMatchedCommand() {
629 const {args, options, matchedCommand: command} = this;
630 if (!command || !command.commandAction)
631 return;
632 command.checkUnknownOptions();
633 command.checkOptionValue();
634 command.checkRequiredArgs();
635 const actionArgs = [];
636 command.args.forEach((arg, index) => {
637 if (arg.variadic) {
638 actionArgs.push(args.slice(index));
639 } else {
640 actionArgs.push(args[index]);
641 }
642 });
643 actionArgs.push(options);
644 return command.commandAction.apply(this, actionArgs);
645 }
646}
647
648const cac = (name = "") => new CAC(name);
649
650var compression$2 = {exports: {}};
651
652var negotiator = {exports: {}};
653
654var charset = {exports: {}};
655
656/**
657 * negotiator
658 * Copyright(c) 2012 Isaac Z. Schlueter
659 * Copyright(c) 2014 Federico Romero
660 * Copyright(c) 2014-2015 Douglas Christopher Wilson
661 * MIT Licensed
662 */
663
664/**
665 * Module exports.
666 * @public
667 */
668
669charset.exports = preferredCharsets;
670charset.exports.preferredCharsets = preferredCharsets;
671
672/**
673 * Module variables.
674 * @private
675 */
676
677var simpleCharsetRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/;
678
679/**
680 * Parse the Accept-Charset header.
681 * @private
682 */
683
684function parseAcceptCharset(accept) {
685 var accepts = accept.split(',');
686
687 for (var i = 0, j = 0; i < accepts.length; i++) {
688 var charset = parseCharset(accepts[i].trim(), i);
689
690 if (charset) {
691 accepts[j++] = charset;
692 }
693 }
694
695 // trim accepts
696 accepts.length = j;
697
698 return accepts;
699}
700
701/**
702 * Parse a charset from the Accept-Charset header.
703 * @private
704 */
705
706function parseCharset(str, i) {
707 var match = simpleCharsetRegExp.exec(str);
708 if (!match) return null;
709
710 var charset = match[1];
711 var q = 1;
712 if (match[2]) {
713 var params = match[2].split(';');
714 for (var j = 0; j < params.length; j++) {
715 var p = params[j].trim().split('=');
716 if (p[0] === 'q') {
717 q = parseFloat(p[1]);
718 break;
719 }
720 }
721 }
722
723 return {
724 charset: charset,
725 q: q,
726 i: i
727 };
728}
729
730/**
731 * Get the priority of a charset.
732 * @private
733 */
734
735function getCharsetPriority(charset, accepted, index) {
736 var priority = {o: -1, q: 0, s: 0};
737
738 for (var i = 0; i < accepted.length; i++) {
739 var spec = specify$3(charset, accepted[i], index);
740
741 if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {
742 priority = spec;
743 }
744 }
745
746 return priority;
747}
748
749/**
750 * Get the specificity of the charset.
751 * @private
752 */
753
754function specify$3(charset, spec, index) {
755 var s = 0;
756 if(spec.charset.toLowerCase() === charset.toLowerCase()){
757 s |= 1;
758 } else if (spec.charset !== '*' ) {
759 return null
760 }
761
762 return {
763 i: index,
764 o: spec.i,
765 q: spec.q,
766 s: s
767 }
768}
769
770/**
771 * Get the preferred charsets from an Accept-Charset header.
772 * @public
773 */
774
775function preferredCharsets(accept, provided) {
776 // RFC 2616 sec 14.2: no header = *
777 var accepts = parseAcceptCharset(accept === undefined ? '*' : accept || '');
778
779 if (!provided) {
780 // sorted list of all charsets
781 return accepts
782 .filter(isQuality$3)
783 .sort(compareSpecs$3)
784 .map(getFullCharset);
785 }
786
787 var priorities = provided.map(function getPriority(type, index) {
788 return getCharsetPriority(type, accepts, index);
789 });
790
791 // sorted list of accepted charsets
792 return priorities.filter(isQuality$3).sort(compareSpecs$3).map(function getCharset(priority) {
793 return provided[priorities.indexOf(priority)];
794 });
795}
796
797/**
798 * Compare two specs.
799 * @private
800 */
801
802function compareSpecs$3(a, b) {
803 return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;
804}
805
806/**
807 * Get full charset string.
808 * @private
809 */
810
811function getFullCharset(spec) {
812 return spec.charset;
813}
814
815/**
816 * Check if a spec has any quality.
817 * @private
818 */
819
820function isQuality$3(spec) {
821 return spec.q > 0;
822}
823
824var encoding = {exports: {}};
825
826/**
827 * negotiator
828 * Copyright(c) 2012 Isaac Z. Schlueter
829 * Copyright(c) 2014 Federico Romero
830 * Copyright(c) 2014-2015 Douglas Christopher Wilson
831 * MIT Licensed
832 */
833
834/**
835 * Module exports.
836 * @public
837 */
838
839encoding.exports = preferredEncodings;
840encoding.exports.preferredEncodings = preferredEncodings;
841
842/**
843 * Module variables.
844 * @private
845 */
846
847var simpleEncodingRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/;
848
849/**
850 * Parse the Accept-Encoding header.
851 * @private
852 */
853
854function parseAcceptEncoding(accept) {
855 var accepts = accept.split(',');
856 var hasIdentity = false;
857 var minQuality = 1;
858
859 for (var i = 0, j = 0; i < accepts.length; i++) {
860 var encoding = parseEncoding(accepts[i].trim(), i);
861
862 if (encoding) {
863 accepts[j++] = encoding;
864 hasIdentity = hasIdentity || specify$2('identity', encoding);
865 minQuality = Math.min(minQuality, encoding.q || 1);
866 }
867 }
868
869 if (!hasIdentity) {
870 /*
871 * If identity doesn't explicitly appear in the accept-encoding header,
872 * it's added to the list of acceptable encoding with the lowest q
873 */
874 accepts[j++] = {
875 encoding: 'identity',
876 q: minQuality,
877 i: i
878 };
879 }
880
881 // trim accepts
882 accepts.length = j;
883
884 return accepts;
885}
886
887/**
888 * Parse an encoding from the Accept-Encoding header.
889 * @private
890 */
891
892function parseEncoding(str, i) {
893 var match = simpleEncodingRegExp.exec(str);
894 if (!match) return null;
895
896 var encoding = match[1];
897 var q = 1;
898 if (match[2]) {
899 var params = match[2].split(';');
900 for (var j = 0; j < params.length; j++) {
901 var p = params[j].trim().split('=');
902 if (p[0] === 'q') {
903 q = parseFloat(p[1]);
904 break;
905 }
906 }
907 }
908
909 return {
910 encoding: encoding,
911 q: q,
912 i: i
913 };
914}
915
916/**
917 * Get the priority of an encoding.
918 * @private
919 */
920
921function getEncodingPriority(encoding, accepted, index) {
922 var priority = {o: -1, q: 0, s: 0};
923
924 for (var i = 0; i < accepted.length; i++) {
925 var spec = specify$2(encoding, accepted[i], index);
926
927 if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {
928 priority = spec;
929 }
930 }
931
932 return priority;
933}
934
935/**
936 * Get the specificity of the encoding.
937 * @private
938 */
939
940function specify$2(encoding, spec, index) {
941 var s = 0;
942 if(spec.encoding.toLowerCase() === encoding.toLowerCase()){
943 s |= 1;
944 } else if (spec.encoding !== '*' ) {
945 return null
946 }
947
948 return {
949 i: index,
950 o: spec.i,
951 q: spec.q,
952 s: s
953 }
954}
955/**
956 * Get the preferred encodings from an Accept-Encoding header.
957 * @public
958 */
959
960function preferredEncodings(accept, provided) {
961 var accepts = parseAcceptEncoding(accept || '');
962
963 if (!provided) {
964 // sorted list of all encodings
965 return accepts
966 .filter(isQuality$2)
967 .sort(compareSpecs$2)
968 .map(getFullEncoding);
969 }
970
971 var priorities = provided.map(function getPriority(type, index) {
972 return getEncodingPriority(type, accepts, index);
973 });
974
975 // sorted list of accepted encodings
976 return priorities.filter(isQuality$2).sort(compareSpecs$2).map(function getEncoding(priority) {
977 return provided[priorities.indexOf(priority)];
978 });
979}
980
981/**
982 * Compare two specs.
983 * @private
984 */
985
986function compareSpecs$2(a, b) {
987 return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;
988}
989
990/**
991 * Get full encoding string.
992 * @private
993 */
994
995function getFullEncoding(spec) {
996 return spec.encoding;
997}
998
999/**
1000 * Check if a spec has any quality.
1001 * @private
1002 */
1003
1004function isQuality$2(spec) {
1005 return spec.q > 0;
1006}
1007
1008var language = {exports: {}};
1009
1010/**
1011 * negotiator
1012 * Copyright(c) 2012 Isaac Z. Schlueter
1013 * Copyright(c) 2014 Federico Romero
1014 * Copyright(c) 2014-2015 Douglas Christopher Wilson
1015 * MIT Licensed
1016 */
1017
1018/**
1019 * Module exports.
1020 * @public
1021 */
1022
1023language.exports = preferredLanguages;
1024language.exports.preferredLanguages = preferredLanguages;
1025
1026/**
1027 * Module variables.
1028 * @private
1029 */
1030
1031var simpleLanguageRegExp = /^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/;
1032
1033/**
1034 * Parse the Accept-Language header.
1035 * @private
1036 */
1037
1038function parseAcceptLanguage(accept) {
1039 var accepts = accept.split(',');
1040
1041 for (var i = 0, j = 0; i < accepts.length; i++) {
1042 var language = parseLanguage(accepts[i].trim(), i);
1043
1044 if (language) {
1045 accepts[j++] = language;
1046 }
1047 }
1048
1049 // trim accepts
1050 accepts.length = j;
1051
1052 return accepts;
1053}
1054
1055/**
1056 * Parse a language from the Accept-Language header.
1057 * @private
1058 */
1059
1060function parseLanguage(str, i) {
1061 var match = simpleLanguageRegExp.exec(str);
1062 if (!match) return null;
1063
1064 var prefix = match[1],
1065 suffix = match[2],
1066 full = prefix;
1067
1068 if (suffix) full += "-" + suffix;
1069
1070 var q = 1;
1071 if (match[3]) {
1072 var params = match[3].split(';');
1073 for (var j = 0; j < params.length; j++) {
1074 var p = params[j].split('=');
1075 if (p[0] === 'q') q = parseFloat(p[1]);
1076 }
1077 }
1078
1079 return {
1080 prefix: prefix,
1081 suffix: suffix,
1082 q: q,
1083 i: i,
1084 full: full
1085 };
1086}
1087
1088/**
1089 * Get the priority of a language.
1090 * @private
1091 */
1092
1093function getLanguagePriority(language, accepted, index) {
1094 var priority = {o: -1, q: 0, s: 0};
1095
1096 for (var i = 0; i < accepted.length; i++) {
1097 var spec = specify$1(language, accepted[i], index);
1098
1099 if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {
1100 priority = spec;
1101 }
1102 }
1103
1104 return priority;
1105}
1106
1107/**
1108 * Get the specificity of the language.
1109 * @private
1110 */
1111
1112function specify$1(language, spec, index) {
1113 var p = parseLanguage(language);
1114 if (!p) return null;
1115 var s = 0;
1116 if(spec.full.toLowerCase() === p.full.toLowerCase()){
1117 s |= 4;
1118 } else if (spec.prefix.toLowerCase() === p.full.toLowerCase()) {
1119 s |= 2;
1120 } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) {
1121 s |= 1;
1122 } else if (spec.full !== '*' ) {
1123 return null
1124 }
1125
1126 return {
1127 i: index,
1128 o: spec.i,
1129 q: spec.q,
1130 s: s
1131 }
1132}
1133/**
1134 * Get the preferred languages from an Accept-Language header.
1135 * @public
1136 */
1137
1138function preferredLanguages(accept, provided) {
1139 // RFC 2616 sec 14.4: no header = *
1140 var accepts = parseAcceptLanguage(accept === undefined ? '*' : accept || '');
1141
1142 if (!provided) {
1143 // sorted list of all languages
1144 return accepts
1145 .filter(isQuality$1)
1146 .sort(compareSpecs$1)
1147 .map(getFullLanguage);
1148 }
1149
1150 var priorities = provided.map(function getPriority(type, index) {
1151 return getLanguagePriority(type, accepts, index);
1152 });
1153
1154 // sorted list of accepted languages
1155 return priorities.filter(isQuality$1).sort(compareSpecs$1).map(function getLanguage(priority) {
1156 return provided[priorities.indexOf(priority)];
1157 });
1158}
1159
1160/**
1161 * Compare two specs.
1162 * @private
1163 */
1164
1165function compareSpecs$1(a, b) {
1166 return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;
1167}
1168
1169/**
1170 * Get full language string.
1171 * @private
1172 */
1173
1174function getFullLanguage(spec) {
1175 return spec.full;
1176}
1177
1178/**
1179 * Check if a spec has any quality.
1180 * @private
1181 */
1182
1183function isQuality$1(spec) {
1184 return spec.q > 0;
1185}
1186
1187var mediaType = {exports: {}};
1188
1189/**
1190 * negotiator
1191 * Copyright(c) 2012 Isaac Z. Schlueter
1192 * Copyright(c) 2014 Federico Romero
1193 * Copyright(c) 2014-2015 Douglas Christopher Wilson
1194 * MIT Licensed
1195 */
1196
1197/**
1198 * Module exports.
1199 * @public
1200 */
1201
1202mediaType.exports = preferredMediaTypes;
1203mediaType.exports.preferredMediaTypes = preferredMediaTypes;
1204
1205/**
1206 * Module variables.
1207 * @private
1208 */
1209
1210var simpleMediaTypeRegExp = /^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/;
1211
1212/**
1213 * Parse the Accept header.
1214 * @private
1215 */
1216
1217function parseAccept(accept) {
1218 var accepts = splitMediaTypes(accept);
1219
1220 for (var i = 0, j = 0; i < accepts.length; i++) {
1221 var mediaType = parseMediaType(accepts[i].trim(), i);
1222
1223 if (mediaType) {
1224 accepts[j++] = mediaType;
1225 }
1226 }
1227
1228 // trim accepts
1229 accepts.length = j;
1230
1231 return accepts;
1232}
1233
1234/**
1235 * Parse a media type from the Accept header.
1236 * @private
1237 */
1238
1239function parseMediaType(str, i) {
1240 var match = simpleMediaTypeRegExp.exec(str);
1241 if (!match) return null;
1242
1243 var params = Object.create(null);
1244 var q = 1;
1245 var subtype = match[2];
1246 var type = match[1];
1247
1248 if (match[3]) {
1249 var kvps = splitParameters(match[3]).map(splitKeyValuePair);
1250
1251 for (var j = 0; j < kvps.length; j++) {
1252 var pair = kvps[j];
1253 var key = pair[0].toLowerCase();
1254 var val = pair[1];
1255
1256 // get the value, unwrapping quotes
1257 var value = val && val[0] === '"' && val[val.length - 1] === '"'
1258 ? val.substr(1, val.length - 2)
1259 : val;
1260
1261 if (key === 'q') {
1262 q = parseFloat(value);
1263 break;
1264 }
1265
1266 // store parameter
1267 params[key] = value;
1268 }
1269 }
1270
1271 return {
1272 type: type,
1273 subtype: subtype,
1274 params: params,
1275 q: q,
1276 i: i
1277 };
1278}
1279
1280/**
1281 * Get the priority of a media type.
1282 * @private
1283 */
1284
1285function getMediaTypePriority(type, accepted, index) {
1286 var priority = {o: -1, q: 0, s: 0};
1287
1288 for (var i = 0; i < accepted.length; i++) {
1289 var spec = specify(type, accepted[i], index);
1290
1291 if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {
1292 priority = spec;
1293 }
1294 }
1295
1296 return priority;
1297}
1298
1299/**
1300 * Get the specificity of the media type.
1301 * @private
1302 */
1303
1304function specify(type, spec, index) {
1305 var p = parseMediaType(type);
1306 var s = 0;
1307
1308 if (!p) {
1309 return null;
1310 }
1311
1312 if(spec.type.toLowerCase() == p.type.toLowerCase()) {
1313 s |= 4;
1314 } else if(spec.type != '*') {
1315 return null;
1316 }
1317
1318 if(spec.subtype.toLowerCase() == p.subtype.toLowerCase()) {
1319 s |= 2;
1320 } else if(spec.subtype != '*') {
1321 return null;
1322 }
1323
1324 var keys = Object.keys(spec.params);
1325 if (keys.length > 0) {
1326 if (keys.every(function (k) {
1327 return spec.params[k] == '*' || (spec.params[k] || '').toLowerCase() == (p.params[k] || '').toLowerCase();
1328 })) {
1329 s |= 1;
1330 } else {
1331 return null
1332 }
1333 }
1334
1335 return {
1336 i: index,
1337 o: spec.i,
1338 q: spec.q,
1339 s: s,
1340 }
1341}
1342
1343/**
1344 * Get the preferred media types from an Accept header.
1345 * @public
1346 */
1347
1348function preferredMediaTypes(accept, provided) {
1349 // RFC 2616 sec 14.2: no header = */*
1350 var accepts = parseAccept(accept === undefined ? '*/*' : accept || '');
1351
1352 if (!provided) {
1353 // sorted list of all types
1354 return accepts
1355 .filter(isQuality)
1356 .sort(compareSpecs)
1357 .map(getFullType);
1358 }
1359
1360 var priorities = provided.map(function getPriority(type, index) {
1361 return getMediaTypePriority(type, accepts, index);
1362 });
1363
1364 // sorted list of accepted types
1365 return priorities.filter(isQuality).sort(compareSpecs).map(function getType(priority) {
1366 return provided[priorities.indexOf(priority)];
1367 });
1368}
1369
1370/**
1371 * Compare two specs.
1372 * @private
1373 */
1374
1375function compareSpecs(a, b) {
1376 return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;
1377}
1378
1379/**
1380 * Get full type string.
1381 * @private
1382 */
1383
1384function getFullType(spec) {
1385 return spec.type + '/' + spec.subtype;
1386}
1387
1388/**
1389 * Check if a spec has any quality.
1390 * @private
1391 */
1392
1393function isQuality(spec) {
1394 return spec.q > 0;
1395}
1396
1397/**
1398 * Count the number of quotes in a string.
1399 * @private
1400 */
1401
1402function quoteCount(string) {
1403 var count = 0;
1404 var index = 0;
1405
1406 while ((index = string.indexOf('"', index)) !== -1) {
1407 count++;
1408 index++;
1409 }
1410
1411 return count;
1412}
1413
1414/**
1415 * Split a key value pair.
1416 * @private
1417 */
1418
1419function splitKeyValuePair(str) {
1420 var index = str.indexOf('=');
1421 var key;
1422 var val;
1423
1424 if (index === -1) {
1425 key = str;
1426 } else {
1427 key = str.substr(0, index);
1428 val = str.substr(index + 1);
1429 }
1430
1431 return [key, val];
1432}
1433
1434/**
1435 * Split an Accept header into media types.
1436 * @private
1437 */
1438
1439function splitMediaTypes(accept) {
1440 var accepts = accept.split(',');
1441
1442 for (var i = 1, j = 0; i < accepts.length; i++) {
1443 if (quoteCount(accepts[j]) % 2 == 0) {
1444 accepts[++j] = accepts[i];
1445 } else {
1446 accepts[j] += ',' + accepts[i];
1447 }
1448 }
1449
1450 // trim accepts
1451 accepts.length = j + 1;
1452
1453 return accepts;
1454}
1455
1456/**
1457 * Split a string of parameters.
1458 * @private
1459 */
1460
1461function splitParameters(str) {
1462 var parameters = str.split(';');
1463
1464 for (var i = 1, j = 0; i < parameters.length; i++) {
1465 if (quoteCount(parameters[j]) % 2 == 0) {
1466 parameters[++j] = parameters[i];
1467 } else {
1468 parameters[j] += ';' + parameters[i];
1469 }
1470 }
1471
1472 // trim parameters
1473 parameters.length = j + 1;
1474
1475 for (var i = 0; i < parameters.length; i++) {
1476 parameters[i] = parameters[i].trim();
1477 }
1478
1479 return parameters;
1480}
1481
1482/*!
1483 * negotiator
1484 * Copyright(c) 2012 Federico Romero
1485 * Copyright(c) 2012-2014 Isaac Z. Schlueter
1486 * Copyright(c) 2015 Douglas Christopher Wilson
1487 * MIT Licensed
1488 */
1489
1490/**
1491 * Cached loaded submodules.
1492 * @private
1493 */
1494
1495var modules = Object.create(null);
1496
1497/**
1498 * Module exports.
1499 * @public
1500 */
1501
1502negotiator.exports = Negotiator$1;
1503negotiator.exports.Negotiator = Negotiator$1;
1504
1505/**
1506 * Create a Negotiator instance from a request.
1507 * @param {object} request
1508 * @public
1509 */
1510
1511function Negotiator$1(request) {
1512 if (!(this instanceof Negotiator$1)) {
1513 return new Negotiator$1(request);
1514 }
1515
1516 this.request = request;
1517}
1518
1519Negotiator$1.prototype.charset = function charset(available) {
1520 var set = this.charsets(available);
1521 return set && set[0];
1522};
1523
1524Negotiator$1.prototype.charsets = function charsets(available) {
1525 var preferredCharsets = loadModule('charset').preferredCharsets;
1526 return preferredCharsets(this.request.headers['accept-charset'], available);
1527};
1528
1529Negotiator$1.prototype.encoding = function encoding(available) {
1530 var set = this.encodings(available);
1531 return set && set[0];
1532};
1533
1534Negotiator$1.prototype.encodings = function encodings(available) {
1535 var preferredEncodings = loadModule('encoding').preferredEncodings;
1536 return preferredEncodings(this.request.headers['accept-encoding'], available);
1537};
1538
1539Negotiator$1.prototype.language = function language(available) {
1540 var set = this.languages(available);
1541 return set && set[0];
1542};
1543
1544Negotiator$1.prototype.languages = function languages(available) {
1545 var preferredLanguages = loadModule('language').preferredLanguages;
1546 return preferredLanguages(this.request.headers['accept-language'], available);
1547};
1548
1549Negotiator$1.prototype.mediaType = function mediaType(available) {
1550 var set = this.mediaTypes(available);
1551 return set && set[0];
1552};
1553
1554Negotiator$1.prototype.mediaTypes = function mediaTypes(available) {
1555 var preferredMediaTypes = loadModule('mediaType').preferredMediaTypes;
1556 return preferredMediaTypes(this.request.headers.accept, available);
1557};
1558
1559// Backwards compatibility
1560Negotiator$1.prototype.preferredCharset = Negotiator$1.prototype.charset;
1561Negotiator$1.prototype.preferredCharsets = Negotiator$1.prototype.charsets;
1562Negotiator$1.prototype.preferredEncoding = Negotiator$1.prototype.encoding;
1563Negotiator$1.prototype.preferredEncodings = Negotiator$1.prototype.encodings;
1564Negotiator$1.prototype.preferredLanguage = Negotiator$1.prototype.language;
1565Negotiator$1.prototype.preferredLanguages = Negotiator$1.prototype.languages;
1566Negotiator$1.prototype.preferredMediaType = Negotiator$1.prototype.mediaType;
1567Negotiator$1.prototype.preferredMediaTypes = Negotiator$1.prototype.mediaTypes;
1568
1569/**
1570 * Load the given module.
1571 * @private
1572 */
1573
1574function loadModule(moduleName) {
1575 var module = modules[moduleName];
1576
1577 if (module !== undefined) {
1578 return module;
1579 }
1580
1581 // This uses a switch for static require analysis
1582 switch (moduleName) {
1583 case 'charset':
1584 module = charset.exports;
1585 break;
1586 case 'encoding':
1587 module = encoding.exports;
1588 break;
1589 case 'language':
1590 module = language.exports;
1591 break;
1592 case 'mediaType':
1593 module = mediaType.exports;
1594 break;
1595 default:
1596 throw new Error('Cannot find module \'' + moduleName + '\'');
1597 }
1598
1599 // Store to prevent invoking require()
1600 modules[moduleName] = module;
1601
1602 return module;
1603}
1604
1605var mimeTypes = {};
1606
1607var require$$0 = {
1608 "application/1d-interleaved-parityfec": {
1609 source: "iana"
1610},
1611 "application/3gpdash-qoe-report+xml": {
1612 source: "iana",
1613 charset: "UTF-8",
1614 compressible: true
1615},
1616 "application/3gpp-ims+xml": {
1617 source: "iana",
1618 compressible: true
1619},
1620 "application/3gpphal+json": {
1621 source: "iana",
1622 compressible: true
1623},
1624 "application/3gpphalforms+json": {
1625 source: "iana",
1626 compressible: true
1627},
1628 "application/a2l": {
1629 source: "iana"
1630},
1631 "application/activemessage": {
1632 source: "iana"
1633},
1634 "application/activity+json": {
1635 source: "iana",
1636 compressible: true
1637},
1638 "application/alto-costmap+json": {
1639 source: "iana",
1640 compressible: true
1641},
1642 "application/alto-costmapfilter+json": {
1643 source: "iana",
1644 compressible: true
1645},
1646 "application/alto-directory+json": {
1647 source: "iana",
1648 compressible: true
1649},
1650 "application/alto-endpointcost+json": {
1651 source: "iana",
1652 compressible: true
1653},
1654 "application/alto-endpointcostparams+json": {
1655 source: "iana",
1656 compressible: true
1657},
1658 "application/alto-endpointprop+json": {
1659 source: "iana",
1660 compressible: true
1661},
1662 "application/alto-endpointpropparams+json": {
1663 source: "iana",
1664 compressible: true
1665},
1666 "application/alto-error+json": {
1667 source: "iana",
1668 compressible: true
1669},
1670 "application/alto-networkmap+json": {
1671 source: "iana",
1672 compressible: true
1673},
1674 "application/alto-networkmapfilter+json": {
1675 source: "iana",
1676 compressible: true
1677},
1678 "application/alto-updatestreamcontrol+json": {
1679 source: "iana",
1680 compressible: true
1681},
1682 "application/alto-updatestreamparams+json": {
1683 source: "iana",
1684 compressible: true
1685},
1686 "application/aml": {
1687 source: "iana"
1688},
1689 "application/andrew-inset": {
1690 source: "iana",
1691 extensions: [
1692 "ez"
1693 ]
1694},
1695 "application/applefile": {
1696 source: "iana"
1697},
1698 "application/applixware": {
1699 source: "apache",
1700 extensions: [
1701 "aw"
1702 ]
1703},
1704 "application/atf": {
1705 source: "iana"
1706},
1707 "application/atfx": {
1708 source: "iana"
1709},
1710 "application/atom+xml": {
1711 source: "iana",
1712 compressible: true,
1713 extensions: [
1714 "atom"
1715 ]
1716},
1717 "application/atomcat+xml": {
1718 source: "iana",
1719 compressible: true,
1720 extensions: [
1721 "atomcat"
1722 ]
1723},
1724 "application/atomdeleted+xml": {
1725 source: "iana",
1726 compressible: true,
1727 extensions: [
1728 "atomdeleted"
1729 ]
1730},
1731 "application/atomicmail": {
1732 source: "iana"
1733},
1734 "application/atomsvc+xml": {
1735 source: "iana",
1736 compressible: true,
1737 extensions: [
1738 "atomsvc"
1739 ]
1740},
1741 "application/atsc-dwd+xml": {
1742 source: "iana",
1743 compressible: true,
1744 extensions: [
1745 "dwd"
1746 ]
1747},
1748 "application/atsc-dynamic-event-message": {
1749 source: "iana"
1750},
1751 "application/atsc-held+xml": {
1752 source: "iana",
1753 compressible: true,
1754 extensions: [
1755 "held"
1756 ]
1757},
1758 "application/atsc-rdt+json": {
1759 source: "iana",
1760 compressible: true
1761},
1762 "application/atsc-rsat+xml": {
1763 source: "iana",
1764 compressible: true,
1765 extensions: [
1766 "rsat"
1767 ]
1768},
1769 "application/atxml": {
1770 source: "iana"
1771},
1772 "application/auth-policy+xml": {
1773 source: "iana",
1774 compressible: true
1775},
1776 "application/bacnet-xdd+zip": {
1777 source: "iana",
1778 compressible: false
1779},
1780 "application/batch-smtp": {
1781 source: "iana"
1782},
1783 "application/bdoc": {
1784 compressible: false,
1785 extensions: [
1786 "bdoc"
1787 ]
1788},
1789 "application/beep+xml": {
1790 source: "iana",
1791 charset: "UTF-8",
1792 compressible: true
1793},
1794 "application/calendar+json": {
1795 source: "iana",
1796 compressible: true
1797},
1798 "application/calendar+xml": {
1799 source: "iana",
1800 compressible: true,
1801 extensions: [
1802 "xcs"
1803 ]
1804},
1805 "application/call-completion": {
1806 source: "iana"
1807},
1808 "application/cals-1840": {
1809 source: "iana"
1810},
1811 "application/captive+json": {
1812 source: "iana",
1813 compressible: true
1814},
1815 "application/cbor": {
1816 source: "iana"
1817},
1818 "application/cbor-seq": {
1819 source: "iana"
1820},
1821 "application/cccex": {
1822 source: "iana"
1823},
1824 "application/ccmp+xml": {
1825 source: "iana",
1826 compressible: true
1827},
1828 "application/ccxml+xml": {
1829 source: "iana",
1830 compressible: true,
1831 extensions: [
1832 "ccxml"
1833 ]
1834},
1835 "application/cdfx+xml": {
1836 source: "iana",
1837 compressible: true,
1838 extensions: [
1839 "cdfx"
1840 ]
1841},
1842 "application/cdmi-capability": {
1843 source: "iana",
1844 extensions: [
1845 "cdmia"
1846 ]
1847},
1848 "application/cdmi-container": {
1849 source: "iana",
1850 extensions: [
1851 "cdmic"
1852 ]
1853},
1854 "application/cdmi-domain": {
1855 source: "iana",
1856 extensions: [
1857 "cdmid"
1858 ]
1859},
1860 "application/cdmi-object": {
1861 source: "iana",
1862 extensions: [
1863 "cdmio"
1864 ]
1865},
1866 "application/cdmi-queue": {
1867 source: "iana",
1868 extensions: [
1869 "cdmiq"
1870 ]
1871},
1872 "application/cdni": {
1873 source: "iana"
1874},
1875 "application/cea": {
1876 source: "iana"
1877},
1878 "application/cea-2018+xml": {
1879 source: "iana",
1880 compressible: true
1881},
1882 "application/cellml+xml": {
1883 source: "iana",
1884 compressible: true
1885},
1886 "application/cfw": {
1887 source: "iana"
1888},
1889 "application/clr": {
1890 source: "iana"
1891},
1892 "application/clue+xml": {
1893 source: "iana",
1894 compressible: true
1895},
1896 "application/clue_info+xml": {
1897 source: "iana",
1898 compressible: true
1899},
1900 "application/cms": {
1901 source: "iana"
1902},
1903 "application/cnrp+xml": {
1904 source: "iana",
1905 compressible: true
1906},
1907 "application/coap-group+json": {
1908 source: "iana",
1909 compressible: true
1910},
1911 "application/coap-payload": {
1912 source: "iana"
1913},
1914 "application/commonground": {
1915 source: "iana"
1916},
1917 "application/conference-info+xml": {
1918 source: "iana",
1919 compressible: true
1920},
1921 "application/cose": {
1922 source: "iana"
1923},
1924 "application/cose-key": {
1925 source: "iana"
1926},
1927 "application/cose-key-set": {
1928 source: "iana"
1929},
1930 "application/cpl+xml": {
1931 source: "iana",
1932 compressible: true
1933},
1934 "application/csrattrs": {
1935 source: "iana"
1936},
1937 "application/csta+xml": {
1938 source: "iana",
1939 compressible: true
1940},
1941 "application/cstadata+xml": {
1942 source: "iana",
1943 compressible: true
1944},
1945 "application/csvm+json": {
1946 source: "iana",
1947 compressible: true
1948},
1949 "application/cu-seeme": {
1950 source: "apache",
1951 extensions: [
1952 "cu"
1953 ]
1954},
1955 "application/cwt": {
1956 source: "iana"
1957},
1958 "application/cybercash": {
1959 source: "iana"
1960},
1961 "application/dart": {
1962 compressible: true
1963},
1964 "application/dash+xml": {
1965 source: "iana",
1966 compressible: true,
1967 extensions: [
1968 "mpd"
1969 ]
1970},
1971 "application/dashdelta": {
1972 source: "iana"
1973},
1974 "application/davmount+xml": {
1975 source: "iana",
1976 compressible: true,
1977 extensions: [
1978 "davmount"
1979 ]
1980},
1981 "application/dca-rft": {
1982 source: "iana"
1983},
1984 "application/dcd": {
1985 source: "iana"
1986},
1987 "application/dec-dx": {
1988 source: "iana"
1989},
1990 "application/dialog-info+xml": {
1991 source: "iana",
1992 compressible: true
1993},
1994 "application/dicom": {
1995 source: "iana"
1996},
1997 "application/dicom+json": {
1998 source: "iana",
1999 compressible: true
2000},
2001 "application/dicom+xml": {
2002 source: "iana",
2003 compressible: true
2004},
2005 "application/dii": {
2006 source: "iana"
2007},
2008 "application/dit": {
2009 source: "iana"
2010},
2011 "application/dns": {
2012 source: "iana"
2013},
2014 "application/dns+json": {
2015 source: "iana",
2016 compressible: true
2017},
2018 "application/dns-message": {
2019 source: "iana"
2020},
2021 "application/docbook+xml": {
2022 source: "apache",
2023 compressible: true,
2024 extensions: [
2025 "dbk"
2026 ]
2027},
2028 "application/dots+cbor": {
2029 source: "iana"
2030},
2031 "application/dskpp+xml": {
2032 source: "iana",
2033 compressible: true
2034},
2035 "application/dssc+der": {
2036 source: "iana",
2037 extensions: [
2038 "dssc"
2039 ]
2040},
2041 "application/dssc+xml": {
2042 source: "iana",
2043 compressible: true,
2044 extensions: [
2045 "xdssc"
2046 ]
2047},
2048 "application/dvcs": {
2049 source: "iana"
2050},
2051 "application/ecmascript": {
2052 source: "iana",
2053 compressible: true,
2054 extensions: [
2055 "es",
2056 "ecma"
2057 ]
2058},
2059 "application/edi-consent": {
2060 source: "iana"
2061},
2062 "application/edi-x12": {
2063 source: "iana",
2064 compressible: false
2065},
2066 "application/edifact": {
2067 source: "iana",
2068 compressible: false
2069},
2070 "application/efi": {
2071 source: "iana"
2072},
2073 "application/elm+json": {
2074 source: "iana",
2075 charset: "UTF-8",
2076 compressible: true
2077},
2078 "application/elm+xml": {
2079 source: "iana",
2080 compressible: true
2081},
2082 "application/emergencycalldata.cap+xml": {
2083 source: "iana",
2084 charset: "UTF-8",
2085 compressible: true
2086},
2087 "application/emergencycalldata.comment+xml": {
2088 source: "iana",
2089 compressible: true
2090},
2091 "application/emergencycalldata.control+xml": {
2092 source: "iana",
2093 compressible: true
2094},
2095 "application/emergencycalldata.deviceinfo+xml": {
2096 source: "iana",
2097 compressible: true
2098},
2099 "application/emergencycalldata.ecall.msd": {
2100 source: "iana"
2101},
2102 "application/emergencycalldata.providerinfo+xml": {
2103 source: "iana",
2104 compressible: true
2105},
2106 "application/emergencycalldata.serviceinfo+xml": {
2107 source: "iana",
2108 compressible: true
2109},
2110 "application/emergencycalldata.subscriberinfo+xml": {
2111 source: "iana",
2112 compressible: true
2113},
2114 "application/emergencycalldata.veds+xml": {
2115 source: "iana",
2116 compressible: true
2117},
2118 "application/emma+xml": {
2119 source: "iana",
2120 compressible: true,
2121 extensions: [
2122 "emma"
2123 ]
2124},
2125 "application/emotionml+xml": {
2126 source: "iana",
2127 compressible: true,
2128 extensions: [
2129 "emotionml"
2130 ]
2131},
2132 "application/encaprtp": {
2133 source: "iana"
2134},
2135 "application/epp+xml": {
2136 source: "iana",
2137 compressible: true
2138},
2139 "application/epub+zip": {
2140 source: "iana",
2141 compressible: false,
2142 extensions: [
2143 "epub"
2144 ]
2145},
2146 "application/eshop": {
2147 source: "iana"
2148},
2149 "application/exi": {
2150 source: "iana",
2151 extensions: [
2152 "exi"
2153 ]
2154},
2155 "application/expect-ct-report+json": {
2156 source: "iana",
2157 compressible: true
2158},
2159 "application/fastinfoset": {
2160 source: "iana"
2161},
2162 "application/fastsoap": {
2163 source: "iana"
2164},
2165 "application/fdt+xml": {
2166 source: "iana",
2167 compressible: true,
2168 extensions: [
2169 "fdt"
2170 ]
2171},
2172 "application/fhir+json": {
2173 source: "iana",
2174 charset: "UTF-8",
2175 compressible: true
2176},
2177 "application/fhir+xml": {
2178 source: "iana",
2179 charset: "UTF-8",
2180 compressible: true
2181},
2182 "application/fido.trusted-apps+json": {
2183 compressible: true
2184},
2185 "application/fits": {
2186 source: "iana"
2187},
2188 "application/flexfec": {
2189 source: "iana"
2190},
2191 "application/font-sfnt": {
2192 source: "iana"
2193},
2194 "application/font-tdpfr": {
2195 source: "iana",
2196 extensions: [
2197 "pfr"
2198 ]
2199},
2200 "application/font-woff": {
2201 source: "iana",
2202 compressible: false
2203},
2204 "application/framework-attributes+xml": {
2205 source: "iana",
2206 compressible: true
2207},
2208 "application/geo+json": {
2209 source: "iana",
2210 compressible: true,
2211 extensions: [
2212 "geojson"
2213 ]
2214},
2215 "application/geo+json-seq": {
2216 source: "iana"
2217},
2218 "application/geopackage+sqlite3": {
2219 source: "iana"
2220},
2221 "application/geoxacml+xml": {
2222 source: "iana",
2223 compressible: true
2224},
2225 "application/gltf-buffer": {
2226 source: "iana"
2227},
2228 "application/gml+xml": {
2229 source: "iana",
2230 compressible: true,
2231 extensions: [
2232 "gml"
2233 ]
2234},
2235 "application/gpx+xml": {
2236 source: "apache",
2237 compressible: true,
2238 extensions: [
2239 "gpx"
2240 ]
2241},
2242 "application/gxf": {
2243 source: "apache",
2244 extensions: [
2245 "gxf"
2246 ]
2247},
2248 "application/gzip": {
2249 source: "iana",
2250 compressible: false,
2251 extensions: [
2252 "gz"
2253 ]
2254},
2255 "application/h224": {
2256 source: "iana"
2257},
2258 "application/held+xml": {
2259 source: "iana",
2260 compressible: true
2261},
2262 "application/hjson": {
2263 extensions: [
2264 "hjson"
2265 ]
2266},
2267 "application/http": {
2268 source: "iana"
2269},
2270 "application/hyperstudio": {
2271 source: "iana",
2272 extensions: [
2273 "stk"
2274 ]
2275},
2276 "application/ibe-key-request+xml": {
2277 source: "iana",
2278 compressible: true
2279},
2280 "application/ibe-pkg-reply+xml": {
2281 source: "iana",
2282 compressible: true
2283},
2284 "application/ibe-pp-data": {
2285 source: "iana"
2286},
2287 "application/iges": {
2288 source: "iana"
2289},
2290 "application/im-iscomposing+xml": {
2291 source: "iana",
2292 charset: "UTF-8",
2293 compressible: true
2294},
2295 "application/index": {
2296 source: "iana"
2297},
2298 "application/index.cmd": {
2299 source: "iana"
2300},
2301 "application/index.obj": {
2302 source: "iana"
2303},
2304 "application/index.response": {
2305 source: "iana"
2306},
2307 "application/index.vnd": {
2308 source: "iana"
2309},
2310 "application/inkml+xml": {
2311 source: "iana",
2312 compressible: true,
2313 extensions: [
2314 "ink",
2315 "inkml"
2316 ]
2317},
2318 "application/iotp": {
2319 source: "iana"
2320},
2321 "application/ipfix": {
2322 source: "iana",
2323 extensions: [
2324 "ipfix"
2325 ]
2326},
2327 "application/ipp": {
2328 source: "iana"
2329},
2330 "application/isup": {
2331 source: "iana"
2332},
2333 "application/its+xml": {
2334 source: "iana",
2335 compressible: true,
2336 extensions: [
2337 "its"
2338 ]
2339},
2340 "application/java-archive": {
2341 source: "apache",
2342 compressible: false,
2343 extensions: [
2344 "jar",
2345 "war",
2346 "ear"
2347 ]
2348},
2349 "application/java-serialized-object": {
2350 source: "apache",
2351 compressible: false,
2352 extensions: [
2353 "ser"
2354 ]
2355},
2356 "application/java-vm": {
2357 source: "apache",
2358 compressible: false,
2359 extensions: [
2360 "class"
2361 ]
2362},
2363 "application/javascript": {
2364 source: "iana",
2365 charset: "UTF-8",
2366 compressible: true,
2367 extensions: [
2368 "js",
2369 "mjs"
2370 ]
2371},
2372 "application/jf2feed+json": {
2373 source: "iana",
2374 compressible: true
2375},
2376 "application/jose": {
2377 source: "iana"
2378},
2379 "application/jose+json": {
2380 source: "iana",
2381 compressible: true
2382},
2383 "application/jrd+json": {
2384 source: "iana",
2385 compressible: true
2386},
2387 "application/jscalendar+json": {
2388 source: "iana",
2389 compressible: true
2390},
2391 "application/json": {
2392 source: "iana",
2393 charset: "UTF-8",
2394 compressible: true,
2395 extensions: [
2396 "json",
2397 "map"
2398 ]
2399},
2400 "application/json-patch+json": {
2401 source: "iana",
2402 compressible: true
2403},
2404 "application/json-seq": {
2405 source: "iana"
2406},
2407 "application/json5": {
2408 extensions: [
2409 "json5"
2410 ]
2411},
2412 "application/jsonml+json": {
2413 source: "apache",
2414 compressible: true,
2415 extensions: [
2416 "jsonml"
2417 ]
2418},
2419 "application/jwk+json": {
2420 source: "iana",
2421 compressible: true
2422},
2423 "application/jwk-set+json": {
2424 source: "iana",
2425 compressible: true
2426},
2427 "application/jwt": {
2428 source: "iana"
2429},
2430 "application/kpml-request+xml": {
2431 source: "iana",
2432 compressible: true
2433},
2434 "application/kpml-response+xml": {
2435 source: "iana",
2436 compressible: true
2437},
2438 "application/ld+json": {
2439 source: "iana",
2440 compressible: true,
2441 extensions: [
2442 "jsonld"
2443 ]
2444},
2445 "application/lgr+xml": {
2446 source: "iana",
2447 compressible: true,
2448 extensions: [
2449 "lgr"
2450 ]
2451},
2452 "application/link-format": {
2453 source: "iana"
2454},
2455 "application/load-control+xml": {
2456 source: "iana",
2457 compressible: true
2458},
2459 "application/lost+xml": {
2460 source: "iana",
2461 compressible: true,
2462 extensions: [
2463 "lostxml"
2464 ]
2465},
2466 "application/lostsync+xml": {
2467 source: "iana",
2468 compressible: true
2469},
2470 "application/lpf+zip": {
2471 source: "iana",
2472 compressible: false
2473},
2474 "application/lxf": {
2475 source: "iana"
2476},
2477 "application/mac-binhex40": {
2478 source: "iana",
2479 extensions: [
2480 "hqx"
2481 ]
2482},
2483 "application/mac-compactpro": {
2484 source: "apache",
2485 extensions: [
2486 "cpt"
2487 ]
2488},
2489 "application/macwriteii": {
2490 source: "iana"
2491},
2492 "application/mads+xml": {
2493 source: "iana",
2494 compressible: true,
2495 extensions: [
2496 "mads"
2497 ]
2498},
2499 "application/manifest+json": {
2500 charset: "UTF-8",
2501 compressible: true,
2502 extensions: [
2503 "webmanifest"
2504 ]
2505},
2506 "application/marc": {
2507 source: "iana",
2508 extensions: [
2509 "mrc"
2510 ]
2511},
2512 "application/marcxml+xml": {
2513 source: "iana",
2514 compressible: true,
2515 extensions: [
2516 "mrcx"
2517 ]
2518},
2519 "application/mathematica": {
2520 source: "iana",
2521 extensions: [
2522 "ma",
2523 "nb",
2524 "mb"
2525 ]
2526},
2527 "application/mathml+xml": {
2528 source: "iana",
2529 compressible: true,
2530 extensions: [
2531 "mathml"
2532 ]
2533},
2534 "application/mathml-content+xml": {
2535 source: "iana",
2536 compressible: true
2537},
2538 "application/mathml-presentation+xml": {
2539 source: "iana",
2540 compressible: true
2541},
2542 "application/mbms-associated-procedure-description+xml": {
2543 source: "iana",
2544 compressible: true
2545},
2546 "application/mbms-deregister+xml": {
2547 source: "iana",
2548 compressible: true
2549},
2550 "application/mbms-envelope+xml": {
2551 source: "iana",
2552 compressible: true
2553},
2554 "application/mbms-msk+xml": {
2555 source: "iana",
2556 compressible: true
2557},
2558 "application/mbms-msk-response+xml": {
2559 source: "iana",
2560 compressible: true
2561},
2562 "application/mbms-protection-description+xml": {
2563 source: "iana",
2564 compressible: true
2565},
2566 "application/mbms-reception-report+xml": {
2567 source: "iana",
2568 compressible: true
2569},
2570 "application/mbms-register+xml": {
2571 source: "iana",
2572 compressible: true
2573},
2574 "application/mbms-register-response+xml": {
2575 source: "iana",
2576 compressible: true
2577},
2578 "application/mbms-schedule+xml": {
2579 source: "iana",
2580 compressible: true
2581},
2582 "application/mbms-user-service-description+xml": {
2583 source: "iana",
2584 compressible: true
2585},
2586 "application/mbox": {
2587 source: "iana",
2588 extensions: [
2589 "mbox"
2590 ]
2591},
2592 "application/media-policy-dataset+xml": {
2593 source: "iana",
2594 compressible: true
2595},
2596 "application/media_control+xml": {
2597 source: "iana",
2598 compressible: true
2599},
2600 "application/mediaservercontrol+xml": {
2601 source: "iana",
2602 compressible: true,
2603 extensions: [
2604 "mscml"
2605 ]
2606},
2607 "application/merge-patch+json": {
2608 source: "iana",
2609 compressible: true
2610},
2611 "application/metalink+xml": {
2612 source: "apache",
2613 compressible: true,
2614 extensions: [
2615 "metalink"
2616 ]
2617},
2618 "application/metalink4+xml": {
2619 source: "iana",
2620 compressible: true,
2621 extensions: [
2622 "meta4"
2623 ]
2624},
2625 "application/mets+xml": {
2626 source: "iana",
2627 compressible: true,
2628 extensions: [
2629 "mets"
2630 ]
2631},
2632 "application/mf4": {
2633 source: "iana"
2634},
2635 "application/mikey": {
2636 source: "iana"
2637},
2638 "application/mipc": {
2639 source: "iana"
2640},
2641 "application/mmt-aei+xml": {
2642 source: "iana",
2643 compressible: true,
2644 extensions: [
2645 "maei"
2646 ]
2647},
2648 "application/mmt-usd+xml": {
2649 source: "iana",
2650 compressible: true,
2651 extensions: [
2652 "musd"
2653 ]
2654},
2655 "application/mods+xml": {
2656 source: "iana",
2657 compressible: true,
2658 extensions: [
2659 "mods"
2660 ]
2661},
2662 "application/moss-keys": {
2663 source: "iana"
2664},
2665 "application/moss-signature": {
2666 source: "iana"
2667},
2668 "application/mosskey-data": {
2669 source: "iana"
2670},
2671 "application/mosskey-request": {
2672 source: "iana"
2673},
2674 "application/mp21": {
2675 source: "iana",
2676 extensions: [
2677 "m21",
2678 "mp21"
2679 ]
2680},
2681 "application/mp4": {
2682 source: "iana",
2683 extensions: [
2684 "mp4s",
2685 "m4p"
2686 ]
2687},
2688 "application/mpeg4-generic": {
2689 source: "iana"
2690},
2691 "application/mpeg4-iod": {
2692 source: "iana"
2693},
2694 "application/mpeg4-iod-xmt": {
2695 source: "iana"
2696},
2697 "application/mrb-consumer+xml": {
2698 source: "iana",
2699 compressible: true
2700},
2701 "application/mrb-publish+xml": {
2702 source: "iana",
2703 compressible: true
2704},
2705 "application/msc-ivr+xml": {
2706 source: "iana",
2707 charset: "UTF-8",
2708 compressible: true
2709},
2710 "application/msc-mixer+xml": {
2711 source: "iana",
2712 charset: "UTF-8",
2713 compressible: true
2714},
2715 "application/msword": {
2716 source: "iana",
2717 compressible: false,
2718 extensions: [
2719 "doc",
2720 "dot"
2721 ]
2722},
2723 "application/mud+json": {
2724 source: "iana",
2725 compressible: true
2726},
2727 "application/multipart-core": {
2728 source: "iana"
2729},
2730 "application/mxf": {
2731 source: "iana",
2732 extensions: [
2733 "mxf"
2734 ]
2735},
2736 "application/n-quads": {
2737 source: "iana",
2738 extensions: [
2739 "nq"
2740 ]
2741},
2742 "application/n-triples": {
2743 source: "iana",
2744 extensions: [
2745 "nt"
2746 ]
2747},
2748 "application/nasdata": {
2749 source: "iana"
2750},
2751 "application/news-checkgroups": {
2752 source: "iana",
2753 charset: "US-ASCII"
2754},
2755 "application/news-groupinfo": {
2756 source: "iana",
2757 charset: "US-ASCII"
2758},
2759 "application/news-transmission": {
2760 source: "iana"
2761},
2762 "application/nlsml+xml": {
2763 source: "iana",
2764 compressible: true
2765},
2766 "application/node": {
2767 source: "iana",
2768 extensions: [
2769 "cjs"
2770 ]
2771},
2772 "application/nss": {
2773 source: "iana"
2774},
2775 "application/oauth-authz-req+jwt": {
2776 source: "iana"
2777},
2778 "application/ocsp-request": {
2779 source: "iana"
2780},
2781 "application/ocsp-response": {
2782 source: "iana"
2783},
2784 "application/octet-stream": {
2785 source: "iana",
2786 compressible: false,
2787 extensions: [
2788 "bin",
2789 "dms",
2790 "lrf",
2791 "mar",
2792 "so",
2793 "dist",
2794 "distz",
2795 "pkg",
2796 "bpk",
2797 "dump",
2798 "elc",
2799 "deploy",
2800 "exe",
2801 "dll",
2802 "deb",
2803 "dmg",
2804 "iso",
2805 "img",
2806 "msi",
2807 "msp",
2808 "msm",
2809 "buffer"
2810 ]
2811},
2812 "application/oda": {
2813 source: "iana",
2814 extensions: [
2815 "oda"
2816 ]
2817},
2818 "application/odm+xml": {
2819 source: "iana",
2820 compressible: true
2821},
2822 "application/odx": {
2823 source: "iana"
2824},
2825 "application/oebps-package+xml": {
2826 source: "iana",
2827 compressible: true,
2828 extensions: [
2829 "opf"
2830 ]
2831},
2832 "application/ogg": {
2833 source: "iana",
2834 compressible: false,
2835 extensions: [
2836 "ogx"
2837 ]
2838},
2839 "application/omdoc+xml": {
2840 source: "apache",
2841 compressible: true,
2842 extensions: [
2843 "omdoc"
2844 ]
2845},
2846 "application/onenote": {
2847 source: "apache",
2848 extensions: [
2849 "onetoc",
2850 "onetoc2",
2851 "onetmp",
2852 "onepkg"
2853 ]
2854},
2855 "application/opc-nodeset+xml": {
2856 source: "iana",
2857 compressible: true
2858},
2859 "application/oscore": {
2860 source: "iana"
2861},
2862 "application/oxps": {
2863 source: "iana",
2864 extensions: [
2865 "oxps"
2866 ]
2867},
2868 "application/p2p-overlay+xml": {
2869 source: "iana",
2870 compressible: true,
2871 extensions: [
2872 "relo"
2873 ]
2874},
2875 "application/parityfec": {
2876 source: "iana"
2877},
2878 "application/passport": {
2879 source: "iana"
2880},
2881 "application/patch-ops-error+xml": {
2882 source: "iana",
2883 compressible: true,
2884 extensions: [
2885 "xer"
2886 ]
2887},
2888 "application/pdf": {
2889 source: "iana",
2890 compressible: false,
2891 extensions: [
2892 "pdf"
2893 ]
2894},
2895 "application/pdx": {
2896 source: "iana"
2897},
2898 "application/pem-certificate-chain": {
2899 source: "iana"
2900},
2901 "application/pgp-encrypted": {
2902 source: "iana",
2903 compressible: false,
2904 extensions: [
2905 "pgp"
2906 ]
2907},
2908 "application/pgp-keys": {
2909 source: "iana"
2910},
2911 "application/pgp-signature": {
2912 source: "iana",
2913 extensions: [
2914 "asc",
2915 "sig"
2916 ]
2917},
2918 "application/pics-rules": {
2919 source: "apache",
2920 extensions: [
2921 "prf"
2922 ]
2923},
2924 "application/pidf+xml": {
2925 source: "iana",
2926 charset: "UTF-8",
2927 compressible: true
2928},
2929 "application/pidf-diff+xml": {
2930 source: "iana",
2931 charset: "UTF-8",
2932 compressible: true
2933},
2934 "application/pkcs10": {
2935 source: "iana",
2936 extensions: [
2937 "p10"
2938 ]
2939},
2940 "application/pkcs12": {
2941 source: "iana"
2942},
2943 "application/pkcs7-mime": {
2944 source: "iana",
2945 extensions: [
2946 "p7m",
2947 "p7c"
2948 ]
2949},
2950 "application/pkcs7-signature": {
2951 source: "iana",
2952 extensions: [
2953 "p7s"
2954 ]
2955},
2956 "application/pkcs8": {
2957 source: "iana",
2958 extensions: [
2959 "p8"
2960 ]
2961},
2962 "application/pkcs8-encrypted": {
2963 source: "iana"
2964},
2965 "application/pkix-attr-cert": {
2966 source: "iana",
2967 extensions: [
2968 "ac"
2969 ]
2970},
2971 "application/pkix-cert": {
2972 source: "iana",
2973 extensions: [
2974 "cer"
2975 ]
2976},
2977 "application/pkix-crl": {
2978 source: "iana",
2979 extensions: [
2980 "crl"
2981 ]
2982},
2983 "application/pkix-pkipath": {
2984 source: "iana",
2985 extensions: [
2986 "pkipath"
2987 ]
2988},
2989 "application/pkixcmp": {
2990 source: "iana",
2991 extensions: [
2992 "pki"
2993 ]
2994},
2995 "application/pls+xml": {
2996 source: "iana",
2997 compressible: true,
2998 extensions: [
2999 "pls"
3000 ]
3001},
3002 "application/poc-settings+xml": {
3003 source: "iana",
3004 charset: "UTF-8",
3005 compressible: true
3006},
3007 "application/postscript": {
3008 source: "iana",
3009 compressible: true,
3010 extensions: [
3011 "ai",
3012 "eps",
3013 "ps"
3014 ]
3015},
3016 "application/ppsp-tracker+json": {
3017 source: "iana",
3018 compressible: true
3019},
3020 "application/problem+json": {
3021 source: "iana",
3022 compressible: true
3023},
3024 "application/problem+xml": {
3025 source: "iana",
3026 compressible: true
3027},
3028 "application/provenance+xml": {
3029 source: "iana",
3030 compressible: true,
3031 extensions: [
3032 "provx"
3033 ]
3034},
3035 "application/prs.alvestrand.titrax-sheet": {
3036 source: "iana"
3037},
3038 "application/prs.cww": {
3039 source: "iana",
3040 extensions: [
3041 "cww"
3042 ]
3043},
3044 "application/prs.cyn": {
3045 source: "iana",
3046 charset: "7-BIT"
3047},
3048 "application/prs.hpub+zip": {
3049 source: "iana",
3050 compressible: false
3051},
3052 "application/prs.nprend": {
3053 source: "iana"
3054},
3055 "application/prs.plucker": {
3056 source: "iana"
3057},
3058 "application/prs.rdf-xml-crypt": {
3059 source: "iana"
3060},
3061 "application/prs.xsf+xml": {
3062 source: "iana",
3063 compressible: true
3064},
3065 "application/pskc+xml": {
3066 source: "iana",
3067 compressible: true,
3068 extensions: [
3069 "pskcxml"
3070 ]
3071},
3072 "application/pvd+json": {
3073 source: "iana",
3074 compressible: true
3075},
3076 "application/qsig": {
3077 source: "iana"
3078},
3079 "application/raml+yaml": {
3080 compressible: true,
3081 extensions: [
3082 "raml"
3083 ]
3084},
3085 "application/raptorfec": {
3086 source: "iana"
3087},
3088 "application/rdap+json": {
3089 source: "iana",
3090 compressible: true
3091},
3092 "application/rdf+xml": {
3093 source: "iana",
3094 compressible: true,
3095 extensions: [
3096 "rdf",
3097 "owl"
3098 ]
3099},
3100 "application/reginfo+xml": {
3101 source: "iana",
3102 compressible: true,
3103 extensions: [
3104 "rif"
3105 ]
3106},
3107 "application/relax-ng-compact-syntax": {
3108 source: "iana",
3109 extensions: [
3110 "rnc"
3111 ]
3112},
3113 "application/remote-printing": {
3114 source: "iana"
3115},
3116 "application/reputon+json": {
3117 source: "iana",
3118 compressible: true
3119},
3120 "application/resource-lists+xml": {
3121 source: "iana",
3122 compressible: true,
3123 extensions: [
3124 "rl"
3125 ]
3126},
3127 "application/resource-lists-diff+xml": {
3128 source: "iana",
3129 compressible: true,
3130 extensions: [
3131 "rld"
3132 ]
3133},
3134 "application/rfc+xml": {
3135 source: "iana",
3136 compressible: true
3137},
3138 "application/riscos": {
3139 source: "iana"
3140},
3141 "application/rlmi+xml": {
3142 source: "iana",
3143 compressible: true
3144},
3145 "application/rls-services+xml": {
3146 source: "iana",
3147 compressible: true,
3148 extensions: [
3149 "rs"
3150 ]
3151},
3152 "application/route-apd+xml": {
3153 source: "iana",
3154 compressible: true,
3155 extensions: [
3156 "rapd"
3157 ]
3158},
3159 "application/route-s-tsid+xml": {
3160 source: "iana",
3161 compressible: true,
3162 extensions: [
3163 "sls"
3164 ]
3165},
3166 "application/route-usd+xml": {
3167 source: "iana",
3168 compressible: true,
3169 extensions: [
3170 "rusd"
3171 ]
3172},
3173 "application/rpki-ghostbusters": {
3174 source: "iana",
3175 extensions: [
3176 "gbr"
3177 ]
3178},
3179 "application/rpki-manifest": {
3180 source: "iana",
3181 extensions: [
3182 "mft"
3183 ]
3184},
3185 "application/rpki-publication": {
3186 source: "iana"
3187},
3188 "application/rpki-roa": {
3189 source: "iana",
3190 extensions: [
3191 "roa"
3192 ]
3193},
3194 "application/rpki-updown": {
3195 source: "iana"
3196},
3197 "application/rsd+xml": {
3198 source: "apache",
3199 compressible: true,
3200 extensions: [
3201 "rsd"
3202 ]
3203},
3204 "application/rss+xml": {
3205 source: "apache",
3206 compressible: true,
3207 extensions: [
3208 "rss"
3209 ]
3210},
3211 "application/rtf": {
3212 source: "iana",
3213 compressible: true,
3214 extensions: [
3215 "rtf"
3216 ]
3217},
3218 "application/rtploopback": {
3219 source: "iana"
3220},
3221 "application/rtx": {
3222 source: "iana"
3223},
3224 "application/samlassertion+xml": {
3225 source: "iana",
3226 compressible: true
3227},
3228 "application/samlmetadata+xml": {
3229 source: "iana",
3230 compressible: true
3231},
3232 "application/sarif+json": {
3233 source: "iana",
3234 compressible: true
3235},
3236 "application/sarif-external-properties+json": {
3237 source: "iana",
3238 compressible: true
3239},
3240 "application/sbe": {
3241 source: "iana"
3242},
3243 "application/sbml+xml": {
3244 source: "iana",
3245 compressible: true,
3246 extensions: [
3247 "sbml"
3248 ]
3249},
3250 "application/scaip+xml": {
3251 source: "iana",
3252 compressible: true
3253},
3254 "application/scim+json": {
3255 source: "iana",
3256 compressible: true
3257},
3258 "application/scvp-cv-request": {
3259 source: "iana",
3260 extensions: [
3261 "scq"
3262 ]
3263},
3264 "application/scvp-cv-response": {
3265 source: "iana",
3266 extensions: [
3267 "scs"
3268 ]
3269},
3270 "application/scvp-vp-request": {
3271 source: "iana",
3272 extensions: [
3273 "spq"
3274 ]
3275},
3276 "application/scvp-vp-response": {
3277 source: "iana",
3278 extensions: [
3279 "spp"
3280 ]
3281},
3282 "application/sdp": {
3283 source: "iana",
3284 extensions: [
3285 "sdp"
3286 ]
3287},
3288 "application/secevent+jwt": {
3289 source: "iana"
3290},
3291 "application/senml+cbor": {
3292 source: "iana"
3293},
3294 "application/senml+json": {
3295 source: "iana",
3296 compressible: true
3297},
3298 "application/senml+xml": {
3299 source: "iana",
3300 compressible: true,
3301 extensions: [
3302 "senmlx"
3303 ]
3304},
3305 "application/senml-etch+cbor": {
3306 source: "iana"
3307},
3308 "application/senml-etch+json": {
3309 source: "iana",
3310 compressible: true
3311},
3312 "application/senml-exi": {
3313 source: "iana"
3314},
3315 "application/sensml+cbor": {
3316 source: "iana"
3317},
3318 "application/sensml+json": {
3319 source: "iana",
3320 compressible: true
3321},
3322 "application/sensml+xml": {
3323 source: "iana",
3324 compressible: true,
3325 extensions: [
3326 "sensmlx"
3327 ]
3328},
3329 "application/sensml-exi": {
3330 source: "iana"
3331},
3332 "application/sep+xml": {
3333 source: "iana",
3334 compressible: true
3335},
3336 "application/sep-exi": {
3337 source: "iana"
3338},
3339 "application/session-info": {
3340 source: "iana"
3341},
3342 "application/set-payment": {
3343 source: "iana"
3344},
3345 "application/set-payment-initiation": {
3346 source: "iana",
3347 extensions: [
3348 "setpay"
3349 ]
3350},
3351 "application/set-registration": {
3352 source: "iana"
3353},
3354 "application/set-registration-initiation": {
3355 source: "iana",
3356 extensions: [
3357 "setreg"
3358 ]
3359},
3360 "application/sgml": {
3361 source: "iana"
3362},
3363 "application/sgml-open-catalog": {
3364 source: "iana"
3365},
3366 "application/shf+xml": {
3367 source: "iana",
3368 compressible: true,
3369 extensions: [
3370 "shf"
3371 ]
3372},
3373 "application/sieve": {
3374 source: "iana",
3375 extensions: [
3376 "siv",
3377 "sieve"
3378 ]
3379},
3380 "application/simple-filter+xml": {
3381 source: "iana",
3382 compressible: true
3383},
3384 "application/simple-message-summary": {
3385 source: "iana"
3386},
3387 "application/simplesymbolcontainer": {
3388 source: "iana"
3389},
3390 "application/sipc": {
3391 source: "iana"
3392},
3393 "application/slate": {
3394 source: "iana"
3395},
3396 "application/smil": {
3397 source: "iana"
3398},
3399 "application/smil+xml": {
3400 source: "iana",
3401 compressible: true,
3402 extensions: [
3403 "smi",
3404 "smil"
3405 ]
3406},
3407 "application/smpte336m": {
3408 source: "iana"
3409},
3410 "application/soap+fastinfoset": {
3411 source: "iana"
3412},
3413 "application/soap+xml": {
3414 source: "iana",
3415 compressible: true
3416},
3417 "application/sparql-query": {
3418 source: "iana",
3419 extensions: [
3420 "rq"
3421 ]
3422},
3423 "application/sparql-results+xml": {
3424 source: "iana",
3425 compressible: true,
3426 extensions: [
3427 "srx"
3428 ]
3429},
3430 "application/spirits-event+xml": {
3431 source: "iana",
3432 compressible: true
3433},
3434 "application/sql": {
3435 source: "iana"
3436},
3437 "application/srgs": {
3438 source: "iana",
3439 extensions: [
3440 "gram"
3441 ]
3442},
3443 "application/srgs+xml": {
3444 source: "iana",
3445 compressible: true,
3446 extensions: [
3447 "grxml"
3448 ]
3449},
3450 "application/sru+xml": {
3451 source: "iana",
3452 compressible: true,
3453 extensions: [
3454 "sru"
3455 ]
3456},
3457 "application/ssdl+xml": {
3458 source: "apache",
3459 compressible: true,
3460 extensions: [
3461 "ssdl"
3462 ]
3463},
3464 "application/ssml+xml": {
3465 source: "iana",
3466 compressible: true,
3467 extensions: [
3468 "ssml"
3469 ]
3470},
3471 "application/stix+json": {
3472 source: "iana",
3473 compressible: true
3474},
3475 "application/swid+xml": {
3476 source: "iana",
3477 compressible: true,
3478 extensions: [
3479 "swidtag"
3480 ]
3481},
3482 "application/tamp-apex-update": {
3483 source: "iana"
3484},
3485 "application/tamp-apex-update-confirm": {
3486 source: "iana"
3487},
3488 "application/tamp-community-update": {
3489 source: "iana"
3490},
3491 "application/tamp-community-update-confirm": {
3492 source: "iana"
3493},
3494 "application/tamp-error": {
3495 source: "iana"
3496},
3497 "application/tamp-sequence-adjust": {
3498 source: "iana"
3499},
3500 "application/tamp-sequence-adjust-confirm": {
3501 source: "iana"
3502},
3503 "application/tamp-status-query": {
3504 source: "iana"
3505},
3506 "application/tamp-status-response": {
3507 source: "iana"
3508},
3509 "application/tamp-update": {
3510 source: "iana"
3511},
3512 "application/tamp-update-confirm": {
3513 source: "iana"
3514},
3515 "application/tar": {
3516 compressible: true
3517},
3518 "application/taxii+json": {
3519 source: "iana",
3520 compressible: true
3521},
3522 "application/td+json": {
3523 source: "iana",
3524 compressible: true
3525},
3526 "application/tei+xml": {
3527 source: "iana",
3528 compressible: true,
3529 extensions: [
3530 "tei",
3531 "teicorpus"
3532 ]
3533},
3534 "application/tetra_isi": {
3535 source: "iana"
3536},
3537 "application/thraud+xml": {
3538 source: "iana",
3539 compressible: true,
3540 extensions: [
3541 "tfi"
3542 ]
3543},
3544 "application/timestamp-query": {
3545 source: "iana"
3546},
3547 "application/timestamp-reply": {
3548 source: "iana"
3549},
3550 "application/timestamped-data": {
3551 source: "iana",
3552 extensions: [
3553 "tsd"
3554 ]
3555},
3556 "application/tlsrpt+gzip": {
3557 source: "iana"
3558},
3559 "application/tlsrpt+json": {
3560 source: "iana",
3561 compressible: true
3562},
3563 "application/tnauthlist": {
3564 source: "iana"
3565},
3566 "application/toml": {
3567 compressible: true,
3568 extensions: [
3569 "toml"
3570 ]
3571},
3572 "application/trickle-ice-sdpfrag": {
3573 source: "iana"
3574},
3575 "application/trig": {
3576 source: "iana"
3577},
3578 "application/ttml+xml": {
3579 source: "iana",
3580 compressible: true,
3581 extensions: [
3582 "ttml"
3583 ]
3584},
3585 "application/tve-trigger": {
3586 source: "iana"
3587},
3588 "application/tzif": {
3589 source: "iana"
3590},
3591 "application/tzif-leap": {
3592 source: "iana"
3593},
3594 "application/ubjson": {
3595 compressible: false,
3596 extensions: [
3597 "ubj"
3598 ]
3599},
3600 "application/ulpfec": {
3601 source: "iana"
3602},
3603 "application/urc-grpsheet+xml": {
3604 source: "iana",
3605 compressible: true
3606},
3607 "application/urc-ressheet+xml": {
3608 source: "iana",
3609 compressible: true,
3610 extensions: [
3611 "rsheet"
3612 ]
3613},
3614 "application/urc-targetdesc+xml": {
3615 source: "iana",
3616 compressible: true,
3617 extensions: [
3618 "td"
3619 ]
3620},
3621 "application/urc-uisocketdesc+xml": {
3622 source: "iana",
3623 compressible: true
3624},
3625 "application/vcard+json": {
3626 source: "iana",
3627 compressible: true
3628},
3629 "application/vcard+xml": {
3630 source: "iana",
3631 compressible: true
3632},
3633 "application/vemmi": {
3634 source: "iana"
3635},
3636 "application/vividence.scriptfile": {
3637 source: "apache"
3638},
3639 "application/vnd.1000minds.decision-model+xml": {
3640 source: "iana",
3641 compressible: true,
3642 extensions: [
3643 "1km"
3644 ]
3645},
3646 "application/vnd.3gpp-prose+xml": {
3647 source: "iana",
3648 compressible: true
3649},
3650 "application/vnd.3gpp-prose-pc3ch+xml": {
3651 source: "iana",
3652 compressible: true
3653},
3654 "application/vnd.3gpp-v2x-local-service-information": {
3655 source: "iana"
3656},
3657 "application/vnd.3gpp.5gnas": {
3658 source: "iana"
3659},
3660 "application/vnd.3gpp.access-transfer-events+xml": {
3661 source: "iana",
3662 compressible: true
3663},
3664 "application/vnd.3gpp.bsf+xml": {
3665 source: "iana",
3666 compressible: true
3667},
3668 "application/vnd.3gpp.gmop+xml": {
3669 source: "iana",
3670 compressible: true
3671},
3672 "application/vnd.3gpp.gtpc": {
3673 source: "iana"
3674},
3675 "application/vnd.3gpp.interworking-data": {
3676 source: "iana"
3677},
3678 "application/vnd.3gpp.lpp": {
3679 source: "iana"
3680},
3681 "application/vnd.3gpp.mc-signalling-ear": {
3682 source: "iana"
3683},
3684 "application/vnd.3gpp.mcdata-affiliation-command+xml": {
3685 source: "iana",
3686 compressible: true
3687},
3688 "application/vnd.3gpp.mcdata-info+xml": {
3689 source: "iana",
3690 compressible: true
3691},
3692 "application/vnd.3gpp.mcdata-payload": {
3693 source: "iana"
3694},
3695 "application/vnd.3gpp.mcdata-service-config+xml": {
3696 source: "iana",
3697 compressible: true
3698},
3699 "application/vnd.3gpp.mcdata-signalling": {
3700 source: "iana"
3701},
3702 "application/vnd.3gpp.mcdata-ue-config+xml": {
3703 source: "iana",
3704 compressible: true
3705},
3706 "application/vnd.3gpp.mcdata-user-profile+xml": {
3707 source: "iana",
3708 compressible: true
3709},
3710 "application/vnd.3gpp.mcptt-affiliation-command+xml": {
3711 source: "iana",
3712 compressible: true
3713},
3714 "application/vnd.3gpp.mcptt-floor-request+xml": {
3715 source: "iana",
3716 compressible: true
3717},
3718 "application/vnd.3gpp.mcptt-info+xml": {
3719 source: "iana",
3720 compressible: true
3721},
3722 "application/vnd.3gpp.mcptt-location-info+xml": {
3723 source: "iana",
3724 compressible: true
3725},
3726 "application/vnd.3gpp.mcptt-mbms-usage-info+xml": {
3727 source: "iana",
3728 compressible: true
3729},
3730 "application/vnd.3gpp.mcptt-service-config+xml": {
3731 source: "iana",
3732 compressible: true
3733},
3734 "application/vnd.3gpp.mcptt-signed+xml": {
3735 source: "iana",
3736 compressible: true
3737},
3738 "application/vnd.3gpp.mcptt-ue-config+xml": {
3739 source: "iana",
3740 compressible: true
3741},
3742 "application/vnd.3gpp.mcptt-ue-init-config+xml": {
3743 source: "iana",
3744 compressible: true
3745},
3746 "application/vnd.3gpp.mcptt-user-profile+xml": {
3747 source: "iana",
3748 compressible: true
3749},
3750 "application/vnd.3gpp.mcvideo-affiliation-command+xml": {
3751 source: "iana",
3752 compressible: true
3753},
3754 "application/vnd.3gpp.mcvideo-affiliation-info+xml": {
3755 source: "iana",
3756 compressible: true
3757},
3758 "application/vnd.3gpp.mcvideo-info+xml": {
3759 source: "iana",
3760 compressible: true
3761},
3762 "application/vnd.3gpp.mcvideo-location-info+xml": {
3763 source: "iana",
3764 compressible: true
3765},
3766 "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": {
3767 source: "iana",
3768 compressible: true
3769},
3770 "application/vnd.3gpp.mcvideo-service-config+xml": {
3771 source: "iana",
3772 compressible: true
3773},
3774 "application/vnd.3gpp.mcvideo-transmission-request+xml": {
3775 source: "iana",
3776 compressible: true
3777},
3778 "application/vnd.3gpp.mcvideo-ue-config+xml": {
3779 source: "iana",
3780 compressible: true
3781},
3782 "application/vnd.3gpp.mcvideo-user-profile+xml": {
3783 source: "iana",
3784 compressible: true
3785},
3786 "application/vnd.3gpp.mid-call+xml": {
3787 source: "iana",
3788 compressible: true
3789},
3790 "application/vnd.3gpp.ngap": {
3791 source: "iana"
3792},
3793 "application/vnd.3gpp.pfcp": {
3794 source: "iana"
3795},
3796 "application/vnd.3gpp.pic-bw-large": {
3797 source: "iana",
3798 extensions: [
3799 "plb"
3800 ]
3801},
3802 "application/vnd.3gpp.pic-bw-small": {
3803 source: "iana",
3804 extensions: [
3805 "psb"
3806 ]
3807},
3808 "application/vnd.3gpp.pic-bw-var": {
3809 source: "iana",
3810 extensions: [
3811 "pvb"
3812 ]
3813},
3814 "application/vnd.3gpp.s1ap": {
3815 source: "iana"
3816},
3817 "application/vnd.3gpp.sms": {
3818 source: "iana"
3819},
3820 "application/vnd.3gpp.sms+xml": {
3821 source: "iana",
3822 compressible: true
3823},
3824 "application/vnd.3gpp.srvcc-ext+xml": {
3825 source: "iana",
3826 compressible: true
3827},
3828 "application/vnd.3gpp.srvcc-info+xml": {
3829 source: "iana",
3830 compressible: true
3831},
3832 "application/vnd.3gpp.state-and-event-info+xml": {
3833 source: "iana",
3834 compressible: true
3835},
3836 "application/vnd.3gpp.ussd+xml": {
3837 source: "iana",
3838 compressible: true
3839},
3840 "application/vnd.3gpp2.bcmcsinfo+xml": {
3841 source: "iana",
3842 compressible: true
3843},
3844 "application/vnd.3gpp2.sms": {
3845 source: "iana"
3846},
3847 "application/vnd.3gpp2.tcap": {
3848 source: "iana",
3849 extensions: [
3850 "tcap"
3851 ]
3852},
3853 "application/vnd.3lightssoftware.imagescal": {
3854 source: "iana"
3855},
3856 "application/vnd.3m.post-it-notes": {
3857 source: "iana",
3858 extensions: [
3859 "pwn"
3860 ]
3861},
3862 "application/vnd.accpac.simply.aso": {
3863 source: "iana",
3864 extensions: [
3865 "aso"
3866 ]
3867},
3868 "application/vnd.accpac.simply.imp": {
3869 source: "iana",
3870 extensions: [
3871 "imp"
3872 ]
3873},
3874 "application/vnd.acucobol": {
3875 source: "iana",
3876 extensions: [
3877 "acu"
3878 ]
3879},
3880 "application/vnd.acucorp": {
3881 source: "iana",
3882 extensions: [
3883 "atc",
3884 "acutc"
3885 ]
3886},
3887 "application/vnd.adobe.air-application-installer-package+zip": {
3888 source: "apache",
3889 compressible: false,
3890 extensions: [
3891 "air"
3892 ]
3893},
3894 "application/vnd.adobe.flash.movie": {
3895 source: "iana"
3896},
3897 "application/vnd.adobe.formscentral.fcdt": {
3898 source: "iana",
3899 extensions: [
3900 "fcdt"
3901 ]
3902},
3903 "application/vnd.adobe.fxp": {
3904 source: "iana",
3905 extensions: [
3906 "fxp",
3907 "fxpl"
3908 ]
3909},
3910 "application/vnd.adobe.partial-upload": {
3911 source: "iana"
3912},
3913 "application/vnd.adobe.xdp+xml": {
3914 source: "iana",
3915 compressible: true,
3916 extensions: [
3917 "xdp"
3918 ]
3919},
3920 "application/vnd.adobe.xfdf": {
3921 source: "iana",
3922 extensions: [
3923 "xfdf"
3924 ]
3925},
3926 "application/vnd.aether.imp": {
3927 source: "iana"
3928},
3929 "application/vnd.afpc.afplinedata": {
3930 source: "iana"
3931},
3932 "application/vnd.afpc.afplinedata-pagedef": {
3933 source: "iana"
3934},
3935 "application/vnd.afpc.cmoca-cmresource": {
3936 source: "iana"
3937},
3938 "application/vnd.afpc.foca-charset": {
3939 source: "iana"
3940},
3941 "application/vnd.afpc.foca-codedfont": {
3942 source: "iana"
3943},
3944 "application/vnd.afpc.foca-codepage": {
3945 source: "iana"
3946},
3947 "application/vnd.afpc.modca": {
3948 source: "iana"
3949},
3950 "application/vnd.afpc.modca-cmtable": {
3951 source: "iana"
3952},
3953 "application/vnd.afpc.modca-formdef": {
3954 source: "iana"
3955},
3956 "application/vnd.afpc.modca-mediummap": {
3957 source: "iana"
3958},
3959 "application/vnd.afpc.modca-objectcontainer": {
3960 source: "iana"
3961},
3962 "application/vnd.afpc.modca-overlay": {
3963 source: "iana"
3964},
3965 "application/vnd.afpc.modca-pagesegment": {
3966 source: "iana"
3967},
3968 "application/vnd.ah-barcode": {
3969 source: "iana"
3970},
3971 "application/vnd.ahead.space": {
3972 source: "iana",
3973 extensions: [
3974 "ahead"
3975 ]
3976},
3977 "application/vnd.airzip.filesecure.azf": {
3978 source: "iana",
3979 extensions: [
3980 "azf"
3981 ]
3982},
3983 "application/vnd.airzip.filesecure.azs": {
3984 source: "iana",
3985 extensions: [
3986 "azs"
3987 ]
3988},
3989 "application/vnd.amadeus+json": {
3990 source: "iana",
3991 compressible: true
3992},
3993 "application/vnd.amazon.ebook": {
3994 source: "apache",
3995 extensions: [
3996 "azw"
3997 ]
3998},
3999 "application/vnd.amazon.mobi8-ebook": {
4000 source: "iana"
4001},
4002 "application/vnd.americandynamics.acc": {
4003 source: "iana",
4004 extensions: [
4005 "acc"
4006 ]
4007},
4008 "application/vnd.amiga.ami": {
4009 source: "iana",
4010 extensions: [
4011 "ami"
4012 ]
4013},
4014 "application/vnd.amundsen.maze+xml": {
4015 source: "iana",
4016 compressible: true
4017},
4018 "application/vnd.android.ota": {
4019 source: "iana"
4020},
4021 "application/vnd.android.package-archive": {
4022 source: "apache",
4023 compressible: false,
4024 extensions: [
4025 "apk"
4026 ]
4027},
4028 "application/vnd.anki": {
4029 source: "iana"
4030},
4031 "application/vnd.anser-web-certificate-issue-initiation": {
4032 source: "iana",
4033 extensions: [
4034 "cii"
4035 ]
4036},
4037 "application/vnd.anser-web-funds-transfer-initiation": {
4038 source: "apache",
4039 extensions: [
4040 "fti"
4041 ]
4042},
4043 "application/vnd.antix.game-component": {
4044 source: "iana",
4045 extensions: [
4046 "atx"
4047 ]
4048},
4049 "application/vnd.apache.thrift.binary": {
4050 source: "iana"
4051},
4052 "application/vnd.apache.thrift.compact": {
4053 source: "iana"
4054},
4055 "application/vnd.apache.thrift.json": {
4056 source: "iana"
4057},
4058 "application/vnd.api+json": {
4059 source: "iana",
4060 compressible: true
4061},
4062 "application/vnd.aplextor.warrp+json": {
4063 source: "iana",
4064 compressible: true
4065},
4066 "application/vnd.apothekende.reservation+json": {
4067 source: "iana",
4068 compressible: true
4069},
4070 "application/vnd.apple.installer+xml": {
4071 source: "iana",
4072 compressible: true,
4073 extensions: [
4074 "mpkg"
4075 ]
4076},
4077 "application/vnd.apple.keynote": {
4078 source: "iana",
4079 extensions: [
4080 "key"
4081 ]
4082},
4083 "application/vnd.apple.mpegurl": {
4084 source: "iana",
4085 extensions: [
4086 "m3u8"
4087 ]
4088},
4089 "application/vnd.apple.numbers": {
4090 source: "iana",
4091 extensions: [
4092 "numbers"
4093 ]
4094},
4095 "application/vnd.apple.pages": {
4096 source: "iana",
4097 extensions: [
4098 "pages"
4099 ]
4100},
4101 "application/vnd.apple.pkpass": {
4102 compressible: false,
4103 extensions: [
4104 "pkpass"
4105 ]
4106},
4107 "application/vnd.arastra.swi": {
4108 source: "iana"
4109},
4110 "application/vnd.aristanetworks.swi": {
4111 source: "iana",
4112 extensions: [
4113 "swi"
4114 ]
4115},
4116 "application/vnd.artisan+json": {
4117 source: "iana",
4118 compressible: true
4119},
4120 "application/vnd.artsquare": {
4121 source: "iana"
4122},
4123 "application/vnd.astraea-software.iota": {
4124 source: "iana",
4125 extensions: [
4126 "iota"
4127 ]
4128},
4129 "application/vnd.audiograph": {
4130 source: "iana",
4131 extensions: [
4132 "aep"
4133 ]
4134},
4135 "application/vnd.autopackage": {
4136 source: "iana"
4137},
4138 "application/vnd.avalon+json": {
4139 source: "iana",
4140 compressible: true
4141},
4142 "application/vnd.avistar+xml": {
4143 source: "iana",
4144 compressible: true
4145},
4146 "application/vnd.balsamiq.bmml+xml": {
4147 source: "iana",
4148 compressible: true,
4149 extensions: [
4150 "bmml"
4151 ]
4152},
4153 "application/vnd.balsamiq.bmpr": {
4154 source: "iana"
4155},
4156 "application/vnd.banana-accounting": {
4157 source: "iana"
4158},
4159 "application/vnd.bbf.usp.error": {
4160 source: "iana"
4161},
4162 "application/vnd.bbf.usp.msg": {
4163 source: "iana"
4164},
4165 "application/vnd.bbf.usp.msg+json": {
4166 source: "iana",
4167 compressible: true
4168},
4169 "application/vnd.bekitzur-stech+json": {
4170 source: "iana",
4171 compressible: true
4172},
4173 "application/vnd.bint.med-content": {
4174 source: "iana"
4175},
4176 "application/vnd.biopax.rdf+xml": {
4177 source: "iana",
4178 compressible: true
4179},
4180 "application/vnd.blink-idb-value-wrapper": {
4181 source: "iana"
4182},
4183 "application/vnd.blueice.multipass": {
4184 source: "iana",
4185 extensions: [
4186 "mpm"
4187 ]
4188},
4189 "application/vnd.bluetooth.ep.oob": {
4190 source: "iana"
4191},
4192 "application/vnd.bluetooth.le.oob": {
4193 source: "iana"
4194},
4195 "application/vnd.bmi": {
4196 source: "iana",
4197 extensions: [
4198 "bmi"
4199 ]
4200},
4201 "application/vnd.bpf": {
4202 source: "iana"
4203},
4204 "application/vnd.bpf3": {
4205 source: "iana"
4206},
4207 "application/vnd.businessobjects": {
4208 source: "iana",
4209 extensions: [
4210 "rep"
4211 ]
4212},
4213 "application/vnd.byu.uapi+json": {
4214 source: "iana",
4215 compressible: true
4216},
4217 "application/vnd.cab-jscript": {
4218 source: "iana"
4219},
4220 "application/vnd.canon-cpdl": {
4221 source: "iana"
4222},
4223 "application/vnd.canon-lips": {
4224 source: "iana"
4225},
4226 "application/vnd.capasystems-pg+json": {
4227 source: "iana",
4228 compressible: true
4229},
4230 "application/vnd.cendio.thinlinc.clientconf": {
4231 source: "iana"
4232},
4233 "application/vnd.century-systems.tcp_stream": {
4234 source: "iana"
4235},
4236 "application/vnd.chemdraw+xml": {
4237 source: "iana",
4238 compressible: true,
4239 extensions: [
4240 "cdxml"
4241 ]
4242},
4243 "application/vnd.chess-pgn": {
4244 source: "iana"
4245},
4246 "application/vnd.chipnuts.karaoke-mmd": {
4247 source: "iana",
4248 extensions: [
4249 "mmd"
4250 ]
4251},
4252 "application/vnd.ciedi": {
4253 source: "iana"
4254},
4255 "application/vnd.cinderella": {
4256 source: "iana",
4257 extensions: [
4258 "cdy"
4259 ]
4260},
4261 "application/vnd.cirpack.isdn-ext": {
4262 source: "iana"
4263},
4264 "application/vnd.citationstyles.style+xml": {
4265 source: "iana",
4266 compressible: true,
4267 extensions: [
4268 "csl"
4269 ]
4270},
4271 "application/vnd.claymore": {
4272 source: "iana",
4273 extensions: [
4274 "cla"
4275 ]
4276},
4277 "application/vnd.cloanto.rp9": {
4278 source: "iana",
4279 extensions: [
4280 "rp9"
4281 ]
4282},
4283 "application/vnd.clonk.c4group": {
4284 source: "iana",
4285 extensions: [
4286 "c4g",
4287 "c4d",
4288 "c4f",
4289 "c4p",
4290 "c4u"
4291 ]
4292},
4293 "application/vnd.cluetrust.cartomobile-config": {
4294 source: "iana",
4295 extensions: [
4296 "c11amc"
4297 ]
4298},
4299 "application/vnd.cluetrust.cartomobile-config-pkg": {
4300 source: "iana",
4301 extensions: [
4302 "c11amz"
4303 ]
4304},
4305 "application/vnd.coffeescript": {
4306 source: "iana"
4307},
4308 "application/vnd.collabio.xodocuments.document": {
4309 source: "iana"
4310},
4311 "application/vnd.collabio.xodocuments.document-template": {
4312 source: "iana"
4313},
4314 "application/vnd.collabio.xodocuments.presentation": {
4315 source: "iana"
4316},
4317 "application/vnd.collabio.xodocuments.presentation-template": {
4318 source: "iana"
4319},
4320 "application/vnd.collabio.xodocuments.spreadsheet": {
4321 source: "iana"
4322},
4323 "application/vnd.collabio.xodocuments.spreadsheet-template": {
4324 source: "iana"
4325},
4326 "application/vnd.collection+json": {
4327 source: "iana",
4328 compressible: true
4329},
4330 "application/vnd.collection.doc+json": {
4331 source: "iana",
4332 compressible: true
4333},
4334 "application/vnd.collection.next+json": {
4335 source: "iana",
4336 compressible: true
4337},
4338 "application/vnd.comicbook+zip": {
4339 source: "iana",
4340 compressible: false
4341},
4342 "application/vnd.comicbook-rar": {
4343 source: "iana"
4344},
4345 "application/vnd.commerce-battelle": {
4346 source: "iana"
4347},
4348 "application/vnd.commonspace": {
4349 source: "iana",
4350 extensions: [
4351 "csp"
4352 ]
4353},
4354 "application/vnd.contact.cmsg": {
4355 source: "iana",
4356 extensions: [
4357 "cdbcmsg"
4358 ]
4359},
4360 "application/vnd.coreos.ignition+json": {
4361 source: "iana",
4362 compressible: true
4363},
4364 "application/vnd.cosmocaller": {
4365 source: "iana",
4366 extensions: [
4367 "cmc"
4368 ]
4369},
4370 "application/vnd.crick.clicker": {
4371 source: "iana",
4372 extensions: [
4373 "clkx"
4374 ]
4375},
4376 "application/vnd.crick.clicker.keyboard": {
4377 source: "iana",
4378 extensions: [
4379 "clkk"
4380 ]
4381},
4382 "application/vnd.crick.clicker.palette": {
4383 source: "iana",
4384 extensions: [
4385 "clkp"
4386 ]
4387},
4388 "application/vnd.crick.clicker.template": {
4389 source: "iana",
4390 extensions: [
4391 "clkt"
4392 ]
4393},
4394 "application/vnd.crick.clicker.wordbank": {
4395 source: "iana",
4396 extensions: [
4397 "clkw"
4398 ]
4399},
4400 "application/vnd.criticaltools.wbs+xml": {
4401 source: "iana",
4402 compressible: true,
4403 extensions: [
4404 "wbs"
4405 ]
4406},
4407 "application/vnd.cryptii.pipe+json": {
4408 source: "iana",
4409 compressible: true
4410},
4411 "application/vnd.crypto-shade-file": {
4412 source: "iana"
4413},
4414 "application/vnd.cryptomator.encrypted": {
4415 source: "iana"
4416},
4417 "application/vnd.cryptomator.vault": {
4418 source: "iana"
4419},
4420 "application/vnd.ctc-posml": {
4421 source: "iana",
4422 extensions: [
4423 "pml"
4424 ]
4425},
4426 "application/vnd.ctct.ws+xml": {
4427 source: "iana",
4428 compressible: true
4429},
4430 "application/vnd.cups-pdf": {
4431 source: "iana"
4432},
4433 "application/vnd.cups-postscript": {
4434 source: "iana"
4435},
4436 "application/vnd.cups-ppd": {
4437 source: "iana",
4438 extensions: [
4439 "ppd"
4440 ]
4441},
4442 "application/vnd.cups-raster": {
4443 source: "iana"
4444},
4445 "application/vnd.cups-raw": {
4446 source: "iana"
4447},
4448 "application/vnd.curl": {
4449 source: "iana"
4450},
4451 "application/vnd.curl.car": {
4452 source: "apache",
4453 extensions: [
4454 "car"
4455 ]
4456},
4457 "application/vnd.curl.pcurl": {
4458 source: "apache",
4459 extensions: [
4460 "pcurl"
4461 ]
4462},
4463 "application/vnd.cyan.dean.root+xml": {
4464 source: "iana",
4465 compressible: true
4466},
4467 "application/vnd.cybank": {
4468 source: "iana"
4469},
4470 "application/vnd.cyclonedx+json": {
4471 source: "iana",
4472 compressible: true
4473},
4474 "application/vnd.cyclonedx+xml": {
4475 source: "iana",
4476 compressible: true
4477},
4478 "application/vnd.d2l.coursepackage1p0+zip": {
4479 source: "iana",
4480 compressible: false
4481},
4482 "application/vnd.d3m-dataset": {
4483 source: "iana"
4484},
4485 "application/vnd.d3m-problem": {
4486 source: "iana"
4487},
4488 "application/vnd.dart": {
4489 source: "iana",
4490 compressible: true,
4491 extensions: [
4492 "dart"
4493 ]
4494},
4495 "application/vnd.data-vision.rdz": {
4496 source: "iana",
4497 extensions: [
4498 "rdz"
4499 ]
4500},
4501 "application/vnd.datapackage+json": {
4502 source: "iana",
4503 compressible: true
4504},
4505 "application/vnd.dataresource+json": {
4506 source: "iana",
4507 compressible: true
4508},
4509 "application/vnd.dbf": {
4510 source: "iana",
4511 extensions: [
4512 "dbf"
4513 ]
4514},
4515 "application/vnd.debian.binary-package": {
4516 source: "iana"
4517},
4518 "application/vnd.dece.data": {
4519 source: "iana",
4520 extensions: [
4521 "uvf",
4522 "uvvf",
4523 "uvd",
4524 "uvvd"
4525 ]
4526},
4527 "application/vnd.dece.ttml+xml": {
4528 source: "iana",
4529 compressible: true,
4530 extensions: [
4531 "uvt",
4532 "uvvt"
4533 ]
4534},
4535 "application/vnd.dece.unspecified": {
4536 source: "iana",
4537 extensions: [
4538 "uvx",
4539 "uvvx"
4540 ]
4541},
4542 "application/vnd.dece.zip": {
4543 source: "iana",
4544 extensions: [
4545 "uvz",
4546 "uvvz"
4547 ]
4548},
4549 "application/vnd.denovo.fcselayout-link": {
4550 source: "iana",
4551 extensions: [
4552 "fe_launch"
4553 ]
4554},
4555 "application/vnd.desmume.movie": {
4556 source: "iana"
4557},
4558 "application/vnd.dir-bi.plate-dl-nosuffix": {
4559 source: "iana"
4560},
4561 "application/vnd.dm.delegation+xml": {
4562 source: "iana",
4563 compressible: true
4564},
4565 "application/vnd.dna": {
4566 source: "iana",
4567 extensions: [
4568 "dna"
4569 ]
4570},
4571 "application/vnd.document+json": {
4572 source: "iana",
4573 compressible: true
4574},
4575 "application/vnd.dolby.mlp": {
4576 source: "apache",
4577 extensions: [
4578 "mlp"
4579 ]
4580},
4581 "application/vnd.dolby.mobile.1": {
4582 source: "iana"
4583},
4584 "application/vnd.dolby.mobile.2": {
4585 source: "iana"
4586},
4587 "application/vnd.doremir.scorecloud-binary-document": {
4588 source: "iana"
4589},
4590 "application/vnd.dpgraph": {
4591 source: "iana",
4592 extensions: [
4593 "dpg"
4594 ]
4595},
4596 "application/vnd.dreamfactory": {
4597 source: "iana",
4598 extensions: [
4599 "dfac"
4600 ]
4601},
4602 "application/vnd.drive+json": {
4603 source: "iana",
4604 compressible: true
4605},
4606 "application/vnd.ds-keypoint": {
4607 source: "apache",
4608 extensions: [
4609 "kpxx"
4610 ]
4611},
4612 "application/vnd.dtg.local": {
4613 source: "iana"
4614},
4615 "application/vnd.dtg.local.flash": {
4616 source: "iana"
4617},
4618 "application/vnd.dtg.local.html": {
4619 source: "iana"
4620},
4621 "application/vnd.dvb.ait": {
4622 source: "iana",
4623 extensions: [
4624 "ait"
4625 ]
4626},
4627 "application/vnd.dvb.dvbisl+xml": {
4628 source: "iana",
4629 compressible: true
4630},
4631 "application/vnd.dvb.dvbj": {
4632 source: "iana"
4633},
4634 "application/vnd.dvb.esgcontainer": {
4635 source: "iana"
4636},
4637 "application/vnd.dvb.ipdcdftnotifaccess": {
4638 source: "iana"
4639},
4640 "application/vnd.dvb.ipdcesgaccess": {
4641 source: "iana"
4642},
4643 "application/vnd.dvb.ipdcesgaccess2": {
4644 source: "iana"
4645},
4646 "application/vnd.dvb.ipdcesgpdd": {
4647 source: "iana"
4648},
4649 "application/vnd.dvb.ipdcroaming": {
4650 source: "iana"
4651},
4652 "application/vnd.dvb.iptv.alfec-base": {
4653 source: "iana"
4654},
4655 "application/vnd.dvb.iptv.alfec-enhancement": {
4656 source: "iana"
4657},
4658 "application/vnd.dvb.notif-aggregate-root+xml": {
4659 source: "iana",
4660 compressible: true
4661},
4662 "application/vnd.dvb.notif-container+xml": {
4663 source: "iana",
4664 compressible: true
4665},
4666 "application/vnd.dvb.notif-generic+xml": {
4667 source: "iana",
4668 compressible: true
4669},
4670 "application/vnd.dvb.notif-ia-msglist+xml": {
4671 source: "iana",
4672 compressible: true
4673},
4674 "application/vnd.dvb.notif-ia-registration-request+xml": {
4675 source: "iana",
4676 compressible: true
4677},
4678 "application/vnd.dvb.notif-ia-registration-response+xml": {
4679 source: "iana",
4680 compressible: true
4681},
4682 "application/vnd.dvb.notif-init+xml": {
4683 source: "iana",
4684 compressible: true
4685},
4686 "application/vnd.dvb.pfr": {
4687 source: "iana"
4688},
4689 "application/vnd.dvb.service": {
4690 source: "iana",
4691 extensions: [
4692 "svc"
4693 ]
4694},
4695 "application/vnd.dxr": {
4696 source: "iana"
4697},
4698 "application/vnd.dynageo": {
4699 source: "iana",
4700 extensions: [
4701 "geo"
4702 ]
4703},
4704 "application/vnd.dzr": {
4705 source: "iana"
4706},
4707 "application/vnd.easykaraoke.cdgdownload": {
4708 source: "iana"
4709},
4710 "application/vnd.ecdis-update": {
4711 source: "iana"
4712},
4713 "application/vnd.ecip.rlp": {
4714 source: "iana"
4715},
4716 "application/vnd.ecowin.chart": {
4717 source: "iana",
4718 extensions: [
4719 "mag"
4720 ]
4721},
4722 "application/vnd.ecowin.filerequest": {
4723 source: "iana"
4724},
4725 "application/vnd.ecowin.fileupdate": {
4726 source: "iana"
4727},
4728 "application/vnd.ecowin.series": {
4729 source: "iana"
4730},
4731 "application/vnd.ecowin.seriesrequest": {
4732 source: "iana"
4733},
4734 "application/vnd.ecowin.seriesupdate": {
4735 source: "iana"
4736},
4737 "application/vnd.efi.img": {
4738 source: "iana"
4739},
4740 "application/vnd.efi.iso": {
4741 source: "iana"
4742},
4743 "application/vnd.emclient.accessrequest+xml": {
4744 source: "iana",
4745 compressible: true
4746},
4747 "application/vnd.enliven": {
4748 source: "iana",
4749 extensions: [
4750 "nml"
4751 ]
4752},
4753 "application/vnd.enphase.envoy": {
4754 source: "iana"
4755},
4756 "application/vnd.eprints.data+xml": {
4757 source: "iana",
4758 compressible: true
4759},
4760 "application/vnd.epson.esf": {
4761 source: "iana",
4762 extensions: [
4763 "esf"
4764 ]
4765},
4766 "application/vnd.epson.msf": {
4767 source: "iana",
4768 extensions: [
4769 "msf"
4770 ]
4771},
4772 "application/vnd.epson.quickanime": {
4773 source: "iana",
4774 extensions: [
4775 "qam"
4776 ]
4777},
4778 "application/vnd.epson.salt": {
4779 source: "iana",
4780 extensions: [
4781 "slt"
4782 ]
4783},
4784 "application/vnd.epson.ssf": {
4785 source: "iana",
4786 extensions: [
4787 "ssf"
4788 ]
4789},
4790 "application/vnd.ericsson.quickcall": {
4791 source: "iana"
4792},
4793 "application/vnd.espass-espass+zip": {
4794 source: "iana",
4795 compressible: false
4796},
4797 "application/vnd.eszigno3+xml": {
4798 source: "iana",
4799 compressible: true,
4800 extensions: [
4801 "es3",
4802 "et3"
4803 ]
4804},
4805 "application/vnd.etsi.aoc+xml": {
4806 source: "iana",
4807 compressible: true
4808},
4809 "application/vnd.etsi.asic-e+zip": {
4810 source: "iana",
4811 compressible: false
4812},
4813 "application/vnd.etsi.asic-s+zip": {
4814 source: "iana",
4815 compressible: false
4816},
4817 "application/vnd.etsi.cug+xml": {
4818 source: "iana",
4819 compressible: true
4820},
4821 "application/vnd.etsi.iptvcommand+xml": {
4822 source: "iana",
4823 compressible: true
4824},
4825 "application/vnd.etsi.iptvdiscovery+xml": {
4826 source: "iana",
4827 compressible: true
4828},
4829 "application/vnd.etsi.iptvprofile+xml": {
4830 source: "iana",
4831 compressible: true
4832},
4833 "application/vnd.etsi.iptvsad-bc+xml": {
4834 source: "iana",
4835 compressible: true
4836},
4837 "application/vnd.etsi.iptvsad-cod+xml": {
4838 source: "iana",
4839 compressible: true
4840},
4841 "application/vnd.etsi.iptvsad-npvr+xml": {
4842 source: "iana",
4843 compressible: true
4844},
4845 "application/vnd.etsi.iptvservice+xml": {
4846 source: "iana",
4847 compressible: true
4848},
4849 "application/vnd.etsi.iptvsync+xml": {
4850 source: "iana",
4851 compressible: true
4852},
4853 "application/vnd.etsi.iptvueprofile+xml": {
4854 source: "iana",
4855 compressible: true
4856},
4857 "application/vnd.etsi.mcid+xml": {
4858 source: "iana",
4859 compressible: true
4860},
4861 "application/vnd.etsi.mheg5": {
4862 source: "iana"
4863},
4864 "application/vnd.etsi.overload-control-policy-dataset+xml": {
4865 source: "iana",
4866 compressible: true
4867},
4868 "application/vnd.etsi.pstn+xml": {
4869 source: "iana",
4870 compressible: true
4871},
4872 "application/vnd.etsi.sci+xml": {
4873 source: "iana",
4874 compressible: true
4875},
4876 "application/vnd.etsi.simservs+xml": {
4877 source: "iana",
4878 compressible: true
4879},
4880 "application/vnd.etsi.timestamp-token": {
4881 source: "iana"
4882},
4883 "application/vnd.etsi.tsl+xml": {
4884 source: "iana",
4885 compressible: true
4886},
4887 "application/vnd.etsi.tsl.der": {
4888 source: "iana"
4889},
4890 "application/vnd.eudora.data": {
4891 source: "iana"
4892},
4893 "application/vnd.evolv.ecig.profile": {
4894 source: "iana"
4895},
4896 "application/vnd.evolv.ecig.settings": {
4897 source: "iana"
4898},
4899 "application/vnd.evolv.ecig.theme": {
4900 source: "iana"
4901},
4902 "application/vnd.exstream-empower+zip": {
4903 source: "iana",
4904 compressible: false
4905},
4906 "application/vnd.exstream-package": {
4907 source: "iana"
4908},
4909 "application/vnd.ezpix-album": {
4910 source: "iana",
4911 extensions: [
4912 "ez2"
4913 ]
4914},
4915 "application/vnd.ezpix-package": {
4916 source: "iana",
4917 extensions: [
4918 "ez3"
4919 ]
4920},
4921 "application/vnd.f-secure.mobile": {
4922 source: "iana"
4923},
4924 "application/vnd.fastcopy-disk-image": {
4925 source: "iana"
4926},
4927 "application/vnd.fdf": {
4928 source: "iana",
4929 extensions: [
4930 "fdf"
4931 ]
4932},
4933 "application/vnd.fdsn.mseed": {
4934 source: "iana",
4935 extensions: [
4936 "mseed"
4937 ]
4938},
4939 "application/vnd.fdsn.seed": {
4940 source: "iana",
4941 extensions: [
4942 "seed",
4943 "dataless"
4944 ]
4945},
4946 "application/vnd.ffsns": {
4947 source: "iana"
4948},
4949 "application/vnd.ficlab.flb+zip": {
4950 source: "iana",
4951 compressible: false
4952},
4953 "application/vnd.filmit.zfc": {
4954 source: "iana"
4955},
4956 "application/vnd.fints": {
4957 source: "iana"
4958},
4959 "application/vnd.firemonkeys.cloudcell": {
4960 source: "iana"
4961},
4962 "application/vnd.flographit": {
4963 source: "iana",
4964 extensions: [
4965 "gph"
4966 ]
4967},
4968 "application/vnd.fluxtime.clip": {
4969 source: "iana",
4970 extensions: [
4971 "ftc"
4972 ]
4973},
4974 "application/vnd.font-fontforge-sfd": {
4975 source: "iana"
4976},
4977 "application/vnd.framemaker": {
4978 source: "iana",
4979 extensions: [
4980 "fm",
4981 "frame",
4982 "maker",
4983 "book"
4984 ]
4985},
4986 "application/vnd.frogans.fnc": {
4987 source: "iana",
4988 extensions: [
4989 "fnc"
4990 ]
4991},
4992 "application/vnd.frogans.ltf": {
4993 source: "iana",
4994 extensions: [
4995 "ltf"
4996 ]
4997},
4998 "application/vnd.fsc.weblaunch": {
4999 source: "iana",
5000 extensions: [
5001 "fsc"
5002 ]
5003},
5004 "application/vnd.fujifilm.fb.docuworks": {
5005 source: "iana"
5006},
5007 "application/vnd.fujifilm.fb.docuworks.binder": {
5008 source: "iana"
5009},
5010 "application/vnd.fujifilm.fb.docuworks.container": {
5011 source: "iana"
5012},
5013 "application/vnd.fujifilm.fb.jfi+xml": {
5014 source: "iana",
5015 compressible: true
5016},
5017 "application/vnd.fujitsu.oasys": {
5018 source: "iana",
5019 extensions: [
5020 "oas"
5021 ]
5022},
5023 "application/vnd.fujitsu.oasys2": {
5024 source: "iana",
5025 extensions: [
5026 "oa2"
5027 ]
5028},
5029 "application/vnd.fujitsu.oasys3": {
5030 source: "iana",
5031 extensions: [
5032 "oa3"
5033 ]
5034},
5035 "application/vnd.fujitsu.oasysgp": {
5036 source: "iana",
5037 extensions: [
5038 "fg5"
5039 ]
5040},
5041 "application/vnd.fujitsu.oasysprs": {
5042 source: "iana",
5043 extensions: [
5044 "bh2"
5045 ]
5046},
5047 "application/vnd.fujixerox.art-ex": {
5048 source: "iana"
5049},
5050 "application/vnd.fujixerox.art4": {
5051 source: "iana"
5052},
5053 "application/vnd.fujixerox.ddd": {
5054 source: "iana",
5055 extensions: [
5056 "ddd"
5057 ]
5058},
5059 "application/vnd.fujixerox.docuworks": {
5060 source: "iana",
5061 extensions: [
5062 "xdw"
5063 ]
5064},
5065 "application/vnd.fujixerox.docuworks.binder": {
5066 source: "iana",
5067 extensions: [
5068 "xbd"
5069 ]
5070},
5071 "application/vnd.fujixerox.docuworks.container": {
5072 source: "iana"
5073},
5074 "application/vnd.fujixerox.hbpl": {
5075 source: "iana"
5076},
5077 "application/vnd.fut-misnet": {
5078 source: "iana"
5079},
5080 "application/vnd.futoin+cbor": {
5081 source: "iana"
5082},
5083 "application/vnd.futoin+json": {
5084 source: "iana",
5085 compressible: true
5086},
5087 "application/vnd.fuzzysheet": {
5088 source: "iana",
5089 extensions: [
5090 "fzs"
5091 ]
5092},
5093 "application/vnd.genomatix.tuxedo": {
5094 source: "iana",
5095 extensions: [
5096 "txd"
5097 ]
5098},
5099 "application/vnd.gentics.grd+json": {
5100 source: "iana",
5101 compressible: true
5102},
5103 "application/vnd.geo+json": {
5104 source: "iana",
5105 compressible: true
5106},
5107 "application/vnd.geocube+xml": {
5108 source: "iana",
5109 compressible: true
5110},
5111 "application/vnd.geogebra.file": {
5112 source: "iana",
5113 extensions: [
5114 "ggb"
5115 ]
5116},
5117 "application/vnd.geogebra.slides": {
5118 source: "iana"
5119},
5120 "application/vnd.geogebra.tool": {
5121 source: "iana",
5122 extensions: [
5123 "ggt"
5124 ]
5125},
5126 "application/vnd.geometry-explorer": {
5127 source: "iana",
5128 extensions: [
5129 "gex",
5130 "gre"
5131 ]
5132},
5133 "application/vnd.geonext": {
5134 source: "iana",
5135 extensions: [
5136 "gxt"
5137 ]
5138},
5139 "application/vnd.geoplan": {
5140 source: "iana",
5141 extensions: [
5142 "g2w"
5143 ]
5144},
5145 "application/vnd.geospace": {
5146 source: "iana",
5147 extensions: [
5148 "g3w"
5149 ]
5150},
5151 "application/vnd.gerber": {
5152 source: "iana"
5153},
5154 "application/vnd.globalplatform.card-content-mgt": {
5155 source: "iana"
5156},
5157 "application/vnd.globalplatform.card-content-mgt-response": {
5158 source: "iana"
5159},
5160 "application/vnd.gmx": {
5161 source: "iana",
5162 extensions: [
5163 "gmx"
5164 ]
5165},
5166 "application/vnd.google-apps.document": {
5167 compressible: false,
5168 extensions: [
5169 "gdoc"
5170 ]
5171},
5172 "application/vnd.google-apps.presentation": {
5173 compressible: false,
5174 extensions: [
5175 "gslides"
5176 ]
5177},
5178 "application/vnd.google-apps.spreadsheet": {
5179 compressible: false,
5180 extensions: [
5181 "gsheet"
5182 ]
5183},
5184 "application/vnd.google-earth.kml+xml": {
5185 source: "iana",
5186 compressible: true,
5187 extensions: [
5188 "kml"
5189 ]
5190},
5191 "application/vnd.google-earth.kmz": {
5192 source: "iana",
5193 compressible: false,
5194 extensions: [
5195 "kmz"
5196 ]
5197},
5198 "application/vnd.gov.sk.e-form+xml": {
5199 source: "iana",
5200 compressible: true
5201},
5202 "application/vnd.gov.sk.e-form+zip": {
5203 source: "iana",
5204 compressible: false
5205},
5206 "application/vnd.gov.sk.xmldatacontainer+xml": {
5207 source: "iana",
5208 compressible: true
5209},
5210 "application/vnd.grafeq": {
5211 source: "iana",
5212 extensions: [
5213 "gqf",
5214 "gqs"
5215 ]
5216},
5217 "application/vnd.gridmp": {
5218 source: "iana"
5219},
5220 "application/vnd.groove-account": {
5221 source: "iana",
5222 extensions: [
5223 "gac"
5224 ]
5225},
5226 "application/vnd.groove-help": {
5227 source: "iana",
5228 extensions: [
5229 "ghf"
5230 ]
5231},
5232 "application/vnd.groove-identity-message": {
5233 source: "iana",
5234 extensions: [
5235 "gim"
5236 ]
5237},
5238 "application/vnd.groove-injector": {
5239 source: "iana",
5240 extensions: [
5241 "grv"
5242 ]
5243},
5244 "application/vnd.groove-tool-message": {
5245 source: "iana",
5246 extensions: [
5247 "gtm"
5248 ]
5249},
5250 "application/vnd.groove-tool-template": {
5251 source: "iana",
5252 extensions: [
5253 "tpl"
5254 ]
5255},
5256 "application/vnd.groove-vcard": {
5257 source: "iana",
5258 extensions: [
5259 "vcg"
5260 ]
5261},
5262 "application/vnd.hal+json": {
5263 source: "iana",
5264 compressible: true
5265},
5266 "application/vnd.hal+xml": {
5267 source: "iana",
5268 compressible: true,
5269 extensions: [
5270 "hal"
5271 ]
5272},
5273 "application/vnd.handheld-entertainment+xml": {
5274 source: "iana",
5275 compressible: true,
5276 extensions: [
5277 "zmm"
5278 ]
5279},
5280 "application/vnd.hbci": {
5281 source: "iana",
5282 extensions: [
5283 "hbci"
5284 ]
5285},
5286 "application/vnd.hc+json": {
5287 source: "iana",
5288 compressible: true
5289},
5290 "application/vnd.hcl-bireports": {
5291 source: "iana"
5292},
5293 "application/vnd.hdt": {
5294 source: "iana"
5295},
5296 "application/vnd.heroku+json": {
5297 source: "iana",
5298 compressible: true
5299},
5300 "application/vnd.hhe.lesson-player": {
5301 source: "iana",
5302 extensions: [
5303 "les"
5304 ]
5305},
5306 "application/vnd.hp-hpgl": {
5307 source: "iana",
5308 extensions: [
5309 "hpgl"
5310 ]
5311},
5312 "application/vnd.hp-hpid": {
5313 source: "iana",
5314 extensions: [
5315 "hpid"
5316 ]
5317},
5318 "application/vnd.hp-hps": {
5319 source: "iana",
5320 extensions: [
5321 "hps"
5322 ]
5323},
5324 "application/vnd.hp-jlyt": {
5325 source: "iana",
5326 extensions: [
5327 "jlt"
5328 ]
5329},
5330 "application/vnd.hp-pcl": {
5331 source: "iana",
5332 extensions: [
5333 "pcl"
5334 ]
5335},
5336 "application/vnd.hp-pclxl": {
5337 source: "iana",
5338 extensions: [
5339 "pclxl"
5340 ]
5341},
5342 "application/vnd.httphone": {
5343 source: "iana"
5344},
5345 "application/vnd.hydrostatix.sof-data": {
5346 source: "iana",
5347 extensions: [
5348 "sfd-hdstx"
5349 ]
5350},
5351 "application/vnd.hyper+json": {
5352 source: "iana",
5353 compressible: true
5354},
5355 "application/vnd.hyper-item+json": {
5356 source: "iana",
5357 compressible: true
5358},
5359 "application/vnd.hyperdrive+json": {
5360 source: "iana",
5361 compressible: true
5362},
5363 "application/vnd.hzn-3d-crossword": {
5364 source: "iana"
5365},
5366 "application/vnd.ibm.afplinedata": {
5367 source: "iana"
5368},
5369 "application/vnd.ibm.electronic-media": {
5370 source: "iana"
5371},
5372 "application/vnd.ibm.minipay": {
5373 source: "iana",
5374 extensions: [
5375 "mpy"
5376 ]
5377},
5378 "application/vnd.ibm.modcap": {
5379 source: "iana",
5380 extensions: [
5381 "afp",
5382 "listafp",
5383 "list3820"
5384 ]
5385},
5386 "application/vnd.ibm.rights-management": {
5387 source: "iana",
5388 extensions: [
5389 "irm"
5390 ]
5391},
5392 "application/vnd.ibm.secure-container": {
5393 source: "iana",
5394 extensions: [
5395 "sc"
5396 ]
5397},
5398 "application/vnd.iccprofile": {
5399 source: "iana",
5400 extensions: [
5401 "icc",
5402 "icm"
5403 ]
5404},
5405 "application/vnd.ieee.1905": {
5406 source: "iana"
5407},
5408 "application/vnd.igloader": {
5409 source: "iana",
5410 extensions: [
5411 "igl"
5412 ]
5413},
5414 "application/vnd.imagemeter.folder+zip": {
5415 source: "iana",
5416 compressible: false
5417},
5418 "application/vnd.imagemeter.image+zip": {
5419 source: "iana",
5420 compressible: false
5421},
5422 "application/vnd.immervision-ivp": {
5423 source: "iana",
5424 extensions: [
5425 "ivp"
5426 ]
5427},
5428 "application/vnd.immervision-ivu": {
5429 source: "iana",
5430 extensions: [
5431 "ivu"
5432 ]
5433},
5434 "application/vnd.ims.imsccv1p1": {
5435 source: "iana"
5436},
5437 "application/vnd.ims.imsccv1p2": {
5438 source: "iana"
5439},
5440 "application/vnd.ims.imsccv1p3": {
5441 source: "iana"
5442},
5443 "application/vnd.ims.lis.v2.result+json": {
5444 source: "iana",
5445 compressible: true
5446},
5447 "application/vnd.ims.lti.v2.toolconsumerprofile+json": {
5448 source: "iana",
5449 compressible: true
5450},
5451 "application/vnd.ims.lti.v2.toolproxy+json": {
5452 source: "iana",
5453 compressible: true
5454},
5455 "application/vnd.ims.lti.v2.toolproxy.id+json": {
5456 source: "iana",
5457 compressible: true
5458},
5459 "application/vnd.ims.lti.v2.toolsettings+json": {
5460 source: "iana",
5461 compressible: true
5462},
5463 "application/vnd.ims.lti.v2.toolsettings.simple+json": {
5464 source: "iana",
5465 compressible: true
5466},
5467 "application/vnd.informedcontrol.rms+xml": {
5468 source: "iana",
5469 compressible: true
5470},
5471 "application/vnd.informix-visionary": {
5472 source: "iana"
5473},
5474 "application/vnd.infotech.project": {
5475 source: "iana"
5476},
5477 "application/vnd.infotech.project+xml": {
5478 source: "iana",
5479 compressible: true
5480},
5481 "application/vnd.innopath.wamp.notification": {
5482 source: "iana"
5483},
5484 "application/vnd.insors.igm": {
5485 source: "iana",
5486 extensions: [
5487 "igm"
5488 ]
5489},
5490 "application/vnd.intercon.formnet": {
5491 source: "iana",
5492 extensions: [
5493 "xpw",
5494 "xpx"
5495 ]
5496},
5497 "application/vnd.intergeo": {
5498 source: "iana",
5499 extensions: [
5500 "i2g"
5501 ]
5502},
5503 "application/vnd.intertrust.digibox": {
5504 source: "iana"
5505},
5506 "application/vnd.intertrust.nncp": {
5507 source: "iana"
5508},
5509 "application/vnd.intu.qbo": {
5510 source: "iana",
5511 extensions: [
5512 "qbo"
5513 ]
5514},
5515 "application/vnd.intu.qfx": {
5516 source: "iana",
5517 extensions: [
5518 "qfx"
5519 ]
5520},
5521 "application/vnd.iptc.g2.catalogitem+xml": {
5522 source: "iana",
5523 compressible: true
5524},
5525 "application/vnd.iptc.g2.conceptitem+xml": {
5526 source: "iana",
5527 compressible: true
5528},
5529 "application/vnd.iptc.g2.knowledgeitem+xml": {
5530 source: "iana",
5531 compressible: true
5532},
5533 "application/vnd.iptc.g2.newsitem+xml": {
5534 source: "iana",
5535 compressible: true
5536},
5537 "application/vnd.iptc.g2.newsmessage+xml": {
5538 source: "iana",
5539 compressible: true
5540},
5541 "application/vnd.iptc.g2.packageitem+xml": {
5542 source: "iana",
5543 compressible: true
5544},
5545 "application/vnd.iptc.g2.planningitem+xml": {
5546 source: "iana",
5547 compressible: true
5548},
5549 "application/vnd.ipunplugged.rcprofile": {
5550 source: "iana",
5551 extensions: [
5552 "rcprofile"
5553 ]
5554},
5555 "application/vnd.irepository.package+xml": {
5556 source: "iana",
5557 compressible: true,
5558 extensions: [
5559 "irp"
5560 ]
5561},
5562 "application/vnd.is-xpr": {
5563 source: "iana",
5564 extensions: [
5565 "xpr"
5566 ]
5567},
5568 "application/vnd.isac.fcs": {
5569 source: "iana",
5570 extensions: [
5571 "fcs"
5572 ]
5573},
5574 "application/vnd.iso11783-10+zip": {
5575 source: "iana",
5576 compressible: false
5577},
5578 "application/vnd.jam": {
5579 source: "iana",
5580 extensions: [
5581 "jam"
5582 ]
5583},
5584 "application/vnd.japannet-directory-service": {
5585 source: "iana"
5586},
5587 "application/vnd.japannet-jpnstore-wakeup": {
5588 source: "iana"
5589},
5590 "application/vnd.japannet-payment-wakeup": {
5591 source: "iana"
5592},
5593 "application/vnd.japannet-registration": {
5594 source: "iana"
5595},
5596 "application/vnd.japannet-registration-wakeup": {
5597 source: "iana"
5598},
5599 "application/vnd.japannet-setstore-wakeup": {
5600 source: "iana"
5601},
5602 "application/vnd.japannet-verification": {
5603 source: "iana"
5604},
5605 "application/vnd.japannet-verification-wakeup": {
5606 source: "iana"
5607},
5608 "application/vnd.jcp.javame.midlet-rms": {
5609 source: "iana",
5610 extensions: [
5611 "rms"
5612 ]
5613},
5614 "application/vnd.jisp": {
5615 source: "iana",
5616 extensions: [
5617 "jisp"
5618 ]
5619},
5620 "application/vnd.joost.joda-archive": {
5621 source: "iana",
5622 extensions: [
5623 "joda"
5624 ]
5625},
5626 "application/vnd.jsk.isdn-ngn": {
5627 source: "iana"
5628},
5629 "application/vnd.kahootz": {
5630 source: "iana",
5631 extensions: [
5632 "ktz",
5633 "ktr"
5634 ]
5635},
5636 "application/vnd.kde.karbon": {
5637 source: "iana",
5638 extensions: [
5639 "karbon"
5640 ]
5641},
5642 "application/vnd.kde.kchart": {
5643 source: "iana",
5644 extensions: [
5645 "chrt"
5646 ]
5647},
5648 "application/vnd.kde.kformula": {
5649 source: "iana",
5650 extensions: [
5651 "kfo"
5652 ]
5653},
5654 "application/vnd.kde.kivio": {
5655 source: "iana",
5656 extensions: [
5657 "flw"
5658 ]
5659},
5660 "application/vnd.kde.kontour": {
5661 source: "iana",
5662 extensions: [
5663 "kon"
5664 ]
5665},
5666 "application/vnd.kde.kpresenter": {
5667 source: "iana",
5668 extensions: [
5669 "kpr",
5670 "kpt"
5671 ]
5672},
5673 "application/vnd.kde.kspread": {
5674 source: "iana",
5675 extensions: [
5676 "ksp"
5677 ]
5678},
5679 "application/vnd.kde.kword": {
5680 source: "iana",
5681 extensions: [
5682 "kwd",
5683 "kwt"
5684 ]
5685},
5686 "application/vnd.kenameaapp": {
5687 source: "iana",
5688 extensions: [
5689 "htke"
5690 ]
5691},
5692 "application/vnd.kidspiration": {
5693 source: "iana",
5694 extensions: [
5695 "kia"
5696 ]
5697},
5698 "application/vnd.kinar": {
5699 source: "iana",
5700 extensions: [
5701 "kne",
5702 "knp"
5703 ]
5704},
5705 "application/vnd.koan": {
5706 source: "iana",
5707 extensions: [
5708 "skp",
5709 "skd",
5710 "skt",
5711 "skm"
5712 ]
5713},
5714 "application/vnd.kodak-descriptor": {
5715 source: "iana",
5716 extensions: [
5717 "sse"
5718 ]
5719},
5720 "application/vnd.las": {
5721 source: "iana"
5722},
5723 "application/vnd.las.las+json": {
5724 source: "iana",
5725 compressible: true
5726},
5727 "application/vnd.las.las+xml": {
5728 source: "iana",
5729 compressible: true,
5730 extensions: [
5731 "lasxml"
5732 ]
5733},
5734 "application/vnd.laszip": {
5735 source: "iana"
5736},
5737 "application/vnd.leap+json": {
5738 source: "iana",
5739 compressible: true
5740},
5741 "application/vnd.liberty-request+xml": {
5742 source: "iana",
5743 compressible: true
5744},
5745 "application/vnd.llamagraphics.life-balance.desktop": {
5746 source: "iana",
5747 extensions: [
5748 "lbd"
5749 ]
5750},
5751 "application/vnd.llamagraphics.life-balance.exchange+xml": {
5752 source: "iana",
5753 compressible: true,
5754 extensions: [
5755 "lbe"
5756 ]
5757},
5758 "application/vnd.logipipe.circuit+zip": {
5759 source: "iana",
5760 compressible: false
5761},
5762 "application/vnd.loom": {
5763 source: "iana"
5764},
5765 "application/vnd.lotus-1-2-3": {
5766 source: "iana",
5767 extensions: [
5768 "123"
5769 ]
5770},
5771 "application/vnd.lotus-approach": {
5772 source: "iana",
5773 extensions: [
5774 "apr"
5775 ]
5776},
5777 "application/vnd.lotus-freelance": {
5778 source: "iana",
5779 extensions: [
5780 "pre"
5781 ]
5782},
5783 "application/vnd.lotus-notes": {
5784 source: "iana",
5785 extensions: [
5786 "nsf"
5787 ]
5788},
5789 "application/vnd.lotus-organizer": {
5790 source: "iana",
5791 extensions: [
5792 "org"
5793 ]
5794},
5795 "application/vnd.lotus-screencam": {
5796 source: "iana",
5797 extensions: [
5798 "scm"
5799 ]
5800},
5801 "application/vnd.lotus-wordpro": {
5802 source: "iana",
5803 extensions: [
5804 "lwp"
5805 ]
5806},
5807 "application/vnd.macports.portpkg": {
5808 source: "iana",
5809 extensions: [
5810 "portpkg"
5811 ]
5812},
5813 "application/vnd.mapbox-vector-tile": {
5814 source: "iana",
5815 extensions: [
5816 "mvt"
5817 ]
5818},
5819 "application/vnd.marlin.drm.actiontoken+xml": {
5820 source: "iana",
5821 compressible: true
5822},
5823 "application/vnd.marlin.drm.conftoken+xml": {
5824 source: "iana",
5825 compressible: true
5826},
5827 "application/vnd.marlin.drm.license+xml": {
5828 source: "iana",
5829 compressible: true
5830},
5831 "application/vnd.marlin.drm.mdcf": {
5832 source: "iana"
5833},
5834 "application/vnd.mason+json": {
5835 source: "iana",
5836 compressible: true
5837},
5838 "application/vnd.maxmind.maxmind-db": {
5839 source: "iana"
5840},
5841 "application/vnd.mcd": {
5842 source: "iana",
5843 extensions: [
5844 "mcd"
5845 ]
5846},
5847 "application/vnd.medcalcdata": {
5848 source: "iana",
5849 extensions: [
5850 "mc1"
5851 ]
5852},
5853 "application/vnd.mediastation.cdkey": {
5854 source: "iana",
5855 extensions: [
5856 "cdkey"
5857 ]
5858},
5859 "application/vnd.meridian-slingshot": {
5860 source: "iana"
5861},
5862 "application/vnd.mfer": {
5863 source: "iana",
5864 extensions: [
5865 "mwf"
5866 ]
5867},
5868 "application/vnd.mfmp": {
5869 source: "iana",
5870 extensions: [
5871 "mfm"
5872 ]
5873},
5874 "application/vnd.micro+json": {
5875 source: "iana",
5876 compressible: true
5877},
5878 "application/vnd.micrografx.flo": {
5879 source: "iana",
5880 extensions: [
5881 "flo"
5882 ]
5883},
5884 "application/vnd.micrografx.igx": {
5885 source: "iana",
5886 extensions: [
5887 "igx"
5888 ]
5889},
5890 "application/vnd.microsoft.portable-executable": {
5891 source: "iana"
5892},
5893 "application/vnd.microsoft.windows.thumbnail-cache": {
5894 source: "iana"
5895},
5896 "application/vnd.miele+json": {
5897 source: "iana",
5898 compressible: true
5899},
5900 "application/vnd.mif": {
5901 source: "iana",
5902 extensions: [
5903 "mif"
5904 ]
5905},
5906 "application/vnd.minisoft-hp3000-save": {
5907 source: "iana"
5908},
5909 "application/vnd.mitsubishi.misty-guard.trustweb": {
5910 source: "iana"
5911},
5912 "application/vnd.mobius.daf": {
5913 source: "iana",
5914 extensions: [
5915 "daf"
5916 ]
5917},
5918 "application/vnd.mobius.dis": {
5919 source: "iana",
5920 extensions: [
5921 "dis"
5922 ]
5923},
5924 "application/vnd.mobius.mbk": {
5925 source: "iana",
5926 extensions: [
5927 "mbk"
5928 ]
5929},
5930 "application/vnd.mobius.mqy": {
5931 source: "iana",
5932 extensions: [
5933 "mqy"
5934 ]
5935},
5936 "application/vnd.mobius.msl": {
5937 source: "iana",
5938 extensions: [
5939 "msl"
5940 ]
5941},
5942 "application/vnd.mobius.plc": {
5943 source: "iana",
5944 extensions: [
5945 "plc"
5946 ]
5947},
5948 "application/vnd.mobius.txf": {
5949 source: "iana",
5950 extensions: [
5951 "txf"
5952 ]
5953},
5954 "application/vnd.mophun.application": {
5955 source: "iana",
5956 extensions: [
5957 "mpn"
5958 ]
5959},
5960 "application/vnd.mophun.certificate": {
5961 source: "iana",
5962 extensions: [
5963 "mpc"
5964 ]
5965},
5966 "application/vnd.motorola.flexsuite": {
5967 source: "iana"
5968},
5969 "application/vnd.motorola.flexsuite.adsi": {
5970 source: "iana"
5971},
5972 "application/vnd.motorola.flexsuite.fis": {
5973 source: "iana"
5974},
5975 "application/vnd.motorola.flexsuite.gotap": {
5976 source: "iana"
5977},
5978 "application/vnd.motorola.flexsuite.kmr": {
5979 source: "iana"
5980},
5981 "application/vnd.motorola.flexsuite.ttc": {
5982 source: "iana"
5983},
5984 "application/vnd.motorola.flexsuite.wem": {
5985 source: "iana"
5986},
5987 "application/vnd.motorola.iprm": {
5988 source: "iana"
5989},
5990 "application/vnd.mozilla.xul+xml": {
5991 source: "iana",
5992 compressible: true,
5993 extensions: [
5994 "xul"
5995 ]
5996},
5997 "application/vnd.ms-3mfdocument": {
5998 source: "iana"
5999},
6000 "application/vnd.ms-artgalry": {
6001 source: "iana",
6002 extensions: [
6003 "cil"
6004 ]
6005},
6006 "application/vnd.ms-asf": {
6007 source: "iana"
6008},
6009 "application/vnd.ms-cab-compressed": {
6010 source: "iana",
6011 extensions: [
6012 "cab"
6013 ]
6014},
6015 "application/vnd.ms-color.iccprofile": {
6016 source: "apache"
6017},
6018 "application/vnd.ms-excel": {
6019 source: "iana",
6020 compressible: false,
6021 extensions: [
6022 "xls",
6023 "xlm",
6024 "xla",
6025 "xlc",
6026 "xlt",
6027 "xlw"
6028 ]
6029},
6030 "application/vnd.ms-excel.addin.macroenabled.12": {
6031 source: "iana",
6032 extensions: [
6033 "xlam"
6034 ]
6035},
6036 "application/vnd.ms-excel.sheet.binary.macroenabled.12": {
6037 source: "iana",
6038 extensions: [
6039 "xlsb"
6040 ]
6041},
6042 "application/vnd.ms-excel.sheet.macroenabled.12": {
6043 source: "iana",
6044 extensions: [
6045 "xlsm"
6046 ]
6047},
6048 "application/vnd.ms-excel.template.macroenabled.12": {
6049 source: "iana",
6050 extensions: [
6051 "xltm"
6052 ]
6053},
6054 "application/vnd.ms-fontobject": {
6055 source: "iana",
6056 compressible: true,
6057 extensions: [
6058 "eot"
6059 ]
6060},
6061 "application/vnd.ms-htmlhelp": {
6062 source: "iana",
6063 extensions: [
6064 "chm"
6065 ]
6066},
6067 "application/vnd.ms-ims": {
6068 source: "iana",
6069 extensions: [
6070 "ims"
6071 ]
6072},
6073 "application/vnd.ms-lrm": {
6074 source: "iana",
6075 extensions: [
6076 "lrm"
6077 ]
6078},
6079 "application/vnd.ms-office.activex+xml": {
6080 source: "iana",
6081 compressible: true
6082},
6083 "application/vnd.ms-officetheme": {
6084 source: "iana",
6085 extensions: [
6086 "thmx"
6087 ]
6088},
6089 "application/vnd.ms-opentype": {
6090 source: "apache",
6091 compressible: true
6092},
6093 "application/vnd.ms-outlook": {
6094 compressible: false,
6095 extensions: [
6096 "msg"
6097 ]
6098},
6099 "application/vnd.ms-package.obfuscated-opentype": {
6100 source: "apache"
6101},
6102 "application/vnd.ms-pki.seccat": {
6103 source: "apache",
6104 extensions: [
6105 "cat"
6106 ]
6107},
6108 "application/vnd.ms-pki.stl": {
6109 source: "apache",
6110 extensions: [
6111 "stl"
6112 ]
6113},
6114 "application/vnd.ms-playready.initiator+xml": {
6115 source: "iana",
6116 compressible: true
6117},
6118 "application/vnd.ms-powerpoint": {
6119 source: "iana",
6120 compressible: false,
6121 extensions: [
6122 "ppt",
6123 "pps",
6124 "pot"
6125 ]
6126},
6127 "application/vnd.ms-powerpoint.addin.macroenabled.12": {
6128 source: "iana",
6129 extensions: [
6130 "ppam"
6131 ]
6132},
6133 "application/vnd.ms-powerpoint.presentation.macroenabled.12": {
6134 source: "iana",
6135 extensions: [
6136 "pptm"
6137 ]
6138},
6139 "application/vnd.ms-powerpoint.slide.macroenabled.12": {
6140 source: "iana",
6141 extensions: [
6142 "sldm"
6143 ]
6144},
6145 "application/vnd.ms-powerpoint.slideshow.macroenabled.12": {
6146 source: "iana",
6147 extensions: [
6148 "ppsm"
6149 ]
6150},
6151 "application/vnd.ms-powerpoint.template.macroenabled.12": {
6152 source: "iana",
6153 extensions: [
6154 "potm"
6155 ]
6156},
6157 "application/vnd.ms-printdevicecapabilities+xml": {
6158 source: "iana",
6159 compressible: true
6160},
6161 "application/vnd.ms-printing.printticket+xml": {
6162 source: "apache",
6163 compressible: true
6164},
6165 "application/vnd.ms-printschematicket+xml": {
6166 source: "iana",
6167 compressible: true
6168},
6169 "application/vnd.ms-project": {
6170 source: "iana",
6171 extensions: [
6172 "mpp",
6173 "mpt"
6174 ]
6175},
6176 "application/vnd.ms-tnef": {
6177 source: "iana"
6178},
6179 "application/vnd.ms-windows.devicepairing": {
6180 source: "iana"
6181},
6182 "application/vnd.ms-windows.nwprinting.oob": {
6183 source: "iana"
6184},
6185 "application/vnd.ms-windows.printerpairing": {
6186 source: "iana"
6187},
6188 "application/vnd.ms-windows.wsd.oob": {
6189 source: "iana"
6190},
6191 "application/vnd.ms-wmdrm.lic-chlg-req": {
6192 source: "iana"
6193},
6194 "application/vnd.ms-wmdrm.lic-resp": {
6195 source: "iana"
6196},
6197 "application/vnd.ms-wmdrm.meter-chlg-req": {
6198 source: "iana"
6199},
6200 "application/vnd.ms-wmdrm.meter-resp": {
6201 source: "iana"
6202},
6203 "application/vnd.ms-word.document.macroenabled.12": {
6204 source: "iana",
6205 extensions: [
6206 "docm"
6207 ]
6208},
6209 "application/vnd.ms-word.template.macroenabled.12": {
6210 source: "iana",
6211 extensions: [
6212 "dotm"
6213 ]
6214},
6215 "application/vnd.ms-works": {
6216 source: "iana",
6217 extensions: [
6218 "wps",
6219 "wks",
6220 "wcm",
6221 "wdb"
6222 ]
6223},
6224 "application/vnd.ms-wpl": {
6225 source: "iana",
6226 extensions: [
6227 "wpl"
6228 ]
6229},
6230 "application/vnd.ms-xpsdocument": {
6231 source: "iana",
6232 compressible: false,
6233 extensions: [
6234 "xps"
6235 ]
6236},
6237 "application/vnd.msa-disk-image": {
6238 source: "iana"
6239},
6240 "application/vnd.mseq": {
6241 source: "iana",
6242 extensions: [
6243 "mseq"
6244 ]
6245},
6246 "application/vnd.msign": {
6247 source: "iana"
6248},
6249 "application/vnd.multiad.creator": {
6250 source: "iana"
6251},
6252 "application/vnd.multiad.creator.cif": {
6253 source: "iana"
6254},
6255 "application/vnd.music-niff": {
6256 source: "iana"
6257},
6258 "application/vnd.musician": {
6259 source: "iana",
6260 extensions: [
6261 "mus"
6262 ]
6263},
6264 "application/vnd.muvee.style": {
6265 source: "iana",
6266 extensions: [
6267 "msty"
6268 ]
6269},
6270 "application/vnd.mynfc": {
6271 source: "iana",
6272 extensions: [
6273 "taglet"
6274 ]
6275},
6276 "application/vnd.ncd.control": {
6277 source: "iana"
6278},
6279 "application/vnd.ncd.reference": {
6280 source: "iana"
6281},
6282 "application/vnd.nearst.inv+json": {
6283 source: "iana",
6284 compressible: true
6285},
6286 "application/vnd.nebumind.line": {
6287 source: "iana"
6288},
6289 "application/vnd.nervana": {
6290 source: "iana"
6291},
6292 "application/vnd.netfpx": {
6293 source: "iana"
6294},
6295 "application/vnd.neurolanguage.nlu": {
6296 source: "iana",
6297 extensions: [
6298 "nlu"
6299 ]
6300},
6301 "application/vnd.nimn": {
6302 source: "iana"
6303},
6304 "application/vnd.nintendo.nitro.rom": {
6305 source: "iana"
6306},
6307 "application/vnd.nintendo.snes.rom": {
6308 source: "iana"
6309},
6310 "application/vnd.nitf": {
6311 source: "iana",
6312 extensions: [
6313 "ntf",
6314 "nitf"
6315 ]
6316},
6317 "application/vnd.noblenet-directory": {
6318 source: "iana",
6319 extensions: [
6320 "nnd"
6321 ]
6322},
6323 "application/vnd.noblenet-sealer": {
6324 source: "iana",
6325 extensions: [
6326 "nns"
6327 ]
6328},
6329 "application/vnd.noblenet-web": {
6330 source: "iana",
6331 extensions: [
6332 "nnw"
6333 ]
6334},
6335 "application/vnd.nokia.catalogs": {
6336 source: "iana"
6337},
6338 "application/vnd.nokia.conml+wbxml": {
6339 source: "iana"
6340},
6341 "application/vnd.nokia.conml+xml": {
6342 source: "iana",
6343 compressible: true
6344},
6345 "application/vnd.nokia.iptv.config+xml": {
6346 source: "iana",
6347 compressible: true
6348},
6349 "application/vnd.nokia.isds-radio-presets": {
6350 source: "iana"
6351},
6352 "application/vnd.nokia.landmark+wbxml": {
6353 source: "iana"
6354},
6355 "application/vnd.nokia.landmark+xml": {
6356 source: "iana",
6357 compressible: true
6358},
6359 "application/vnd.nokia.landmarkcollection+xml": {
6360 source: "iana",
6361 compressible: true
6362},
6363 "application/vnd.nokia.n-gage.ac+xml": {
6364 source: "iana",
6365 compressible: true,
6366 extensions: [
6367 "ac"
6368 ]
6369},
6370 "application/vnd.nokia.n-gage.data": {
6371 source: "iana",
6372 extensions: [
6373 "ngdat"
6374 ]
6375},
6376 "application/vnd.nokia.n-gage.symbian.install": {
6377 source: "iana",
6378 extensions: [
6379 "n-gage"
6380 ]
6381},
6382 "application/vnd.nokia.ncd": {
6383 source: "iana"
6384},
6385 "application/vnd.nokia.pcd+wbxml": {
6386 source: "iana"
6387},
6388 "application/vnd.nokia.pcd+xml": {
6389 source: "iana",
6390 compressible: true
6391},
6392 "application/vnd.nokia.radio-preset": {
6393 source: "iana",
6394 extensions: [
6395 "rpst"
6396 ]
6397},
6398 "application/vnd.nokia.radio-presets": {
6399 source: "iana",
6400 extensions: [
6401 "rpss"
6402 ]
6403},
6404 "application/vnd.novadigm.edm": {
6405 source: "iana",
6406 extensions: [
6407 "edm"
6408 ]
6409},
6410 "application/vnd.novadigm.edx": {
6411 source: "iana",
6412 extensions: [
6413 "edx"
6414 ]
6415},
6416 "application/vnd.novadigm.ext": {
6417 source: "iana",
6418 extensions: [
6419 "ext"
6420 ]
6421},
6422 "application/vnd.ntt-local.content-share": {
6423 source: "iana"
6424},
6425 "application/vnd.ntt-local.file-transfer": {
6426 source: "iana"
6427},
6428 "application/vnd.ntt-local.ogw_remote-access": {
6429 source: "iana"
6430},
6431 "application/vnd.ntt-local.sip-ta_remote": {
6432 source: "iana"
6433},
6434 "application/vnd.ntt-local.sip-ta_tcp_stream": {
6435 source: "iana"
6436},
6437 "application/vnd.oasis.opendocument.chart": {
6438 source: "iana",
6439 extensions: [
6440 "odc"
6441 ]
6442},
6443 "application/vnd.oasis.opendocument.chart-template": {
6444 source: "iana",
6445 extensions: [
6446 "otc"
6447 ]
6448},
6449 "application/vnd.oasis.opendocument.database": {
6450 source: "iana",
6451 extensions: [
6452 "odb"
6453 ]
6454},
6455 "application/vnd.oasis.opendocument.formula": {
6456 source: "iana",
6457 extensions: [
6458 "odf"
6459 ]
6460},
6461 "application/vnd.oasis.opendocument.formula-template": {
6462 source: "iana",
6463 extensions: [
6464 "odft"
6465 ]
6466},
6467 "application/vnd.oasis.opendocument.graphics": {
6468 source: "iana",
6469 compressible: false,
6470 extensions: [
6471 "odg"
6472 ]
6473},
6474 "application/vnd.oasis.opendocument.graphics-template": {
6475 source: "iana",
6476 extensions: [
6477 "otg"
6478 ]
6479},
6480 "application/vnd.oasis.opendocument.image": {
6481 source: "iana",
6482 extensions: [
6483 "odi"
6484 ]
6485},
6486 "application/vnd.oasis.opendocument.image-template": {
6487 source: "iana",
6488 extensions: [
6489 "oti"
6490 ]
6491},
6492 "application/vnd.oasis.opendocument.presentation": {
6493 source: "iana",
6494 compressible: false,
6495 extensions: [
6496 "odp"
6497 ]
6498},
6499 "application/vnd.oasis.opendocument.presentation-template": {
6500 source: "iana",
6501 extensions: [
6502 "otp"
6503 ]
6504},
6505 "application/vnd.oasis.opendocument.spreadsheet": {
6506 source: "iana",
6507 compressible: false,
6508 extensions: [
6509 "ods"
6510 ]
6511},
6512 "application/vnd.oasis.opendocument.spreadsheet-template": {
6513 source: "iana",
6514 extensions: [
6515 "ots"
6516 ]
6517},
6518 "application/vnd.oasis.opendocument.text": {
6519 source: "iana",
6520 compressible: false,
6521 extensions: [
6522 "odt"
6523 ]
6524},
6525 "application/vnd.oasis.opendocument.text-master": {
6526 source: "iana",
6527 extensions: [
6528 "odm"
6529 ]
6530},
6531 "application/vnd.oasis.opendocument.text-template": {
6532 source: "iana",
6533 extensions: [
6534 "ott"
6535 ]
6536},
6537 "application/vnd.oasis.opendocument.text-web": {
6538 source: "iana",
6539 extensions: [
6540 "oth"
6541 ]
6542},
6543 "application/vnd.obn": {
6544 source: "iana"
6545},
6546 "application/vnd.ocf+cbor": {
6547 source: "iana"
6548},
6549 "application/vnd.oci.image.manifest.v1+json": {
6550 source: "iana",
6551 compressible: true
6552},
6553 "application/vnd.oftn.l10n+json": {
6554 source: "iana",
6555 compressible: true
6556},
6557 "application/vnd.oipf.contentaccessdownload+xml": {
6558 source: "iana",
6559 compressible: true
6560},
6561 "application/vnd.oipf.contentaccessstreaming+xml": {
6562 source: "iana",
6563 compressible: true
6564},
6565 "application/vnd.oipf.cspg-hexbinary": {
6566 source: "iana"
6567},
6568 "application/vnd.oipf.dae.svg+xml": {
6569 source: "iana",
6570 compressible: true
6571},
6572 "application/vnd.oipf.dae.xhtml+xml": {
6573 source: "iana",
6574 compressible: true
6575},
6576 "application/vnd.oipf.mippvcontrolmessage+xml": {
6577 source: "iana",
6578 compressible: true
6579},
6580 "application/vnd.oipf.pae.gem": {
6581 source: "iana"
6582},
6583 "application/vnd.oipf.spdiscovery+xml": {
6584 source: "iana",
6585 compressible: true
6586},
6587 "application/vnd.oipf.spdlist+xml": {
6588 source: "iana",
6589 compressible: true
6590},
6591 "application/vnd.oipf.ueprofile+xml": {
6592 source: "iana",
6593 compressible: true
6594},
6595 "application/vnd.oipf.userprofile+xml": {
6596 source: "iana",
6597 compressible: true
6598},
6599 "application/vnd.olpc-sugar": {
6600 source: "iana",
6601 extensions: [
6602 "xo"
6603 ]
6604},
6605 "application/vnd.oma-scws-config": {
6606 source: "iana"
6607},
6608 "application/vnd.oma-scws-http-request": {
6609 source: "iana"
6610},
6611 "application/vnd.oma-scws-http-response": {
6612 source: "iana"
6613},
6614 "application/vnd.oma.bcast.associated-procedure-parameter+xml": {
6615 source: "iana",
6616 compressible: true
6617},
6618 "application/vnd.oma.bcast.drm-trigger+xml": {
6619 source: "iana",
6620 compressible: true
6621},
6622 "application/vnd.oma.bcast.imd+xml": {
6623 source: "iana",
6624 compressible: true
6625},
6626 "application/vnd.oma.bcast.ltkm": {
6627 source: "iana"
6628},
6629 "application/vnd.oma.bcast.notification+xml": {
6630 source: "iana",
6631 compressible: true
6632},
6633 "application/vnd.oma.bcast.provisioningtrigger": {
6634 source: "iana"
6635},
6636 "application/vnd.oma.bcast.sgboot": {
6637 source: "iana"
6638},
6639 "application/vnd.oma.bcast.sgdd+xml": {
6640 source: "iana",
6641 compressible: true
6642},
6643 "application/vnd.oma.bcast.sgdu": {
6644 source: "iana"
6645},
6646 "application/vnd.oma.bcast.simple-symbol-container": {
6647 source: "iana"
6648},
6649 "application/vnd.oma.bcast.smartcard-trigger+xml": {
6650 source: "iana",
6651 compressible: true
6652},
6653 "application/vnd.oma.bcast.sprov+xml": {
6654 source: "iana",
6655 compressible: true
6656},
6657 "application/vnd.oma.bcast.stkm": {
6658 source: "iana"
6659},
6660 "application/vnd.oma.cab-address-book+xml": {
6661 source: "iana",
6662 compressible: true
6663},
6664 "application/vnd.oma.cab-feature-handler+xml": {
6665 source: "iana",
6666 compressible: true
6667},
6668 "application/vnd.oma.cab-pcc+xml": {
6669 source: "iana",
6670 compressible: true
6671},
6672 "application/vnd.oma.cab-subs-invite+xml": {
6673 source: "iana",
6674 compressible: true
6675},
6676 "application/vnd.oma.cab-user-prefs+xml": {
6677 source: "iana",
6678 compressible: true
6679},
6680 "application/vnd.oma.dcd": {
6681 source: "iana"
6682},
6683 "application/vnd.oma.dcdc": {
6684 source: "iana"
6685},
6686 "application/vnd.oma.dd2+xml": {
6687 source: "iana",
6688 compressible: true,
6689 extensions: [
6690 "dd2"
6691 ]
6692},
6693 "application/vnd.oma.drm.risd+xml": {
6694 source: "iana",
6695 compressible: true
6696},
6697 "application/vnd.oma.group-usage-list+xml": {
6698 source: "iana",
6699 compressible: true
6700},
6701 "application/vnd.oma.lwm2m+cbor": {
6702 source: "iana"
6703},
6704 "application/vnd.oma.lwm2m+json": {
6705 source: "iana",
6706 compressible: true
6707},
6708 "application/vnd.oma.lwm2m+tlv": {
6709 source: "iana"
6710},
6711 "application/vnd.oma.pal+xml": {
6712 source: "iana",
6713 compressible: true
6714},
6715 "application/vnd.oma.poc.detailed-progress-report+xml": {
6716 source: "iana",
6717 compressible: true
6718},
6719 "application/vnd.oma.poc.final-report+xml": {
6720 source: "iana",
6721 compressible: true
6722},
6723 "application/vnd.oma.poc.groups+xml": {
6724 source: "iana",
6725 compressible: true
6726},
6727 "application/vnd.oma.poc.invocation-descriptor+xml": {
6728 source: "iana",
6729 compressible: true
6730},
6731 "application/vnd.oma.poc.optimized-progress-report+xml": {
6732 source: "iana",
6733 compressible: true
6734},
6735 "application/vnd.oma.push": {
6736 source: "iana"
6737},
6738 "application/vnd.oma.scidm.messages+xml": {
6739 source: "iana",
6740 compressible: true
6741},
6742 "application/vnd.oma.xcap-directory+xml": {
6743 source: "iana",
6744 compressible: true
6745},
6746 "application/vnd.omads-email+xml": {
6747 source: "iana",
6748 charset: "UTF-8",
6749 compressible: true
6750},
6751 "application/vnd.omads-file+xml": {
6752 source: "iana",
6753 charset: "UTF-8",
6754 compressible: true
6755},
6756 "application/vnd.omads-folder+xml": {
6757 source: "iana",
6758 charset: "UTF-8",
6759 compressible: true
6760},
6761 "application/vnd.omaloc-supl-init": {
6762 source: "iana"
6763},
6764 "application/vnd.onepager": {
6765 source: "iana"
6766},
6767 "application/vnd.onepagertamp": {
6768 source: "iana"
6769},
6770 "application/vnd.onepagertamx": {
6771 source: "iana"
6772},
6773 "application/vnd.onepagertat": {
6774 source: "iana"
6775},
6776 "application/vnd.onepagertatp": {
6777 source: "iana"
6778},
6779 "application/vnd.onepagertatx": {
6780 source: "iana"
6781},
6782 "application/vnd.openblox.game+xml": {
6783 source: "iana",
6784 compressible: true,
6785 extensions: [
6786 "obgx"
6787 ]
6788},
6789 "application/vnd.openblox.game-binary": {
6790 source: "iana"
6791},
6792 "application/vnd.openeye.oeb": {
6793 source: "iana"
6794},
6795 "application/vnd.openofficeorg.extension": {
6796 source: "apache",
6797 extensions: [
6798 "oxt"
6799 ]
6800},
6801 "application/vnd.openstreetmap.data+xml": {
6802 source: "iana",
6803 compressible: true,
6804 extensions: [
6805 "osm"
6806 ]
6807},
6808 "application/vnd.openxmlformats-officedocument.custom-properties+xml": {
6809 source: "iana",
6810 compressible: true
6811},
6812 "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": {
6813 source: "iana",
6814 compressible: true
6815},
6816 "application/vnd.openxmlformats-officedocument.drawing+xml": {
6817 source: "iana",
6818 compressible: true
6819},
6820 "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": {
6821 source: "iana",
6822 compressible: true
6823},
6824 "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": {
6825 source: "iana",
6826 compressible: true
6827},
6828 "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": {
6829 source: "iana",
6830 compressible: true
6831},
6832 "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": {
6833 source: "iana",
6834 compressible: true
6835},
6836 "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": {
6837 source: "iana",
6838 compressible: true
6839},
6840 "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": {
6841 source: "iana",
6842 compressible: true
6843},
6844 "application/vnd.openxmlformats-officedocument.extended-properties+xml": {
6845 source: "iana",
6846 compressible: true
6847},
6848 "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": {
6849 source: "iana",
6850 compressible: true
6851},
6852 "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": {
6853 source: "iana",
6854 compressible: true
6855},
6856 "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": {
6857 source: "iana",
6858 compressible: true
6859},
6860 "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": {
6861 source: "iana",
6862 compressible: true
6863},
6864 "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": {
6865 source: "iana",
6866 compressible: true
6867},
6868 "application/vnd.openxmlformats-officedocument.presentationml.presentation": {
6869 source: "iana",
6870 compressible: false,
6871 extensions: [
6872 "pptx"
6873 ]
6874},
6875 "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": {
6876 source: "iana",
6877 compressible: true
6878},
6879 "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": {
6880 source: "iana",
6881 compressible: true
6882},
6883 "application/vnd.openxmlformats-officedocument.presentationml.slide": {
6884 source: "iana",
6885 extensions: [
6886 "sldx"
6887 ]
6888},
6889 "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": {
6890 source: "iana",
6891 compressible: true
6892},
6893 "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": {
6894 source: "iana",
6895 compressible: true
6896},
6897 "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": {
6898 source: "iana",
6899 compressible: true
6900},
6901 "application/vnd.openxmlformats-officedocument.presentationml.slideshow": {
6902 source: "iana",
6903 extensions: [
6904 "ppsx"
6905 ]
6906},
6907 "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": {
6908 source: "iana",
6909 compressible: true
6910},
6911 "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": {
6912 source: "iana",
6913 compressible: true
6914},
6915 "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": {
6916 source: "iana",
6917 compressible: true
6918},
6919 "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": {
6920 source: "iana",
6921 compressible: true
6922},
6923 "application/vnd.openxmlformats-officedocument.presentationml.template": {
6924 source: "iana",
6925 extensions: [
6926 "potx"
6927 ]
6928},
6929 "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": {
6930 source: "iana",
6931 compressible: true
6932},
6933 "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": {
6934 source: "iana",
6935 compressible: true
6936},
6937 "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": {
6938 source: "iana",
6939 compressible: true
6940},
6941 "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": {
6942 source: "iana",
6943 compressible: true
6944},
6945 "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": {
6946 source: "iana",
6947 compressible: true
6948},
6949 "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": {
6950 source: "iana",
6951 compressible: true
6952},
6953 "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": {
6954 source: "iana",
6955 compressible: true
6956},
6957 "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": {
6958 source: "iana",
6959 compressible: true
6960},
6961 "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": {
6962 source: "iana",
6963 compressible: true
6964},
6965 "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": {
6966 source: "iana",
6967 compressible: true
6968},
6969 "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": {
6970 source: "iana",
6971 compressible: true
6972},
6973 "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": {
6974 source: "iana",
6975 compressible: true
6976},
6977 "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": {
6978 source: "iana",
6979 compressible: true
6980},
6981 "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": {
6982 source: "iana",
6983 compressible: true
6984},
6985 "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": {
6986 source: "iana",
6987 compressible: true
6988},
6989 "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": {
6990 source: "iana",
6991 compressible: false,
6992 extensions: [
6993 "xlsx"
6994 ]
6995},
6996 "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": {
6997 source: "iana",
6998 compressible: true
6999},
7000 "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": {
7001 source: "iana",
7002 compressible: true
7003},
7004 "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": {
7005 source: "iana",
7006 compressible: true
7007},
7008 "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": {
7009 source: "iana",
7010 compressible: true
7011},
7012 "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": {
7013 source: "iana",
7014 compressible: true
7015},
7016 "application/vnd.openxmlformats-officedocument.spreadsheetml.template": {
7017 source: "iana",
7018 extensions: [
7019 "xltx"
7020 ]
7021},
7022 "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": {
7023 source: "iana",
7024 compressible: true
7025},
7026 "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": {
7027 source: "iana",
7028 compressible: true
7029},
7030 "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": {
7031 source: "iana",
7032 compressible: true
7033},
7034 "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": {
7035 source: "iana",
7036 compressible: true
7037},
7038 "application/vnd.openxmlformats-officedocument.theme+xml": {
7039 source: "iana",
7040 compressible: true
7041},
7042 "application/vnd.openxmlformats-officedocument.themeoverride+xml": {
7043 source: "iana",
7044 compressible: true
7045},
7046 "application/vnd.openxmlformats-officedocument.vmldrawing": {
7047 source: "iana"
7048},
7049 "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": {
7050 source: "iana",
7051 compressible: true
7052},
7053 "application/vnd.openxmlformats-officedocument.wordprocessingml.document": {
7054 source: "iana",
7055 compressible: false,
7056 extensions: [
7057 "docx"
7058 ]
7059},
7060 "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": {
7061 source: "iana",
7062 compressible: true
7063},
7064 "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": {
7065 source: "iana",
7066 compressible: true
7067},
7068 "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": {
7069 source: "iana",
7070 compressible: true
7071},
7072 "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": {
7073 source: "iana",
7074 compressible: true
7075},
7076 "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": {
7077 source: "iana",
7078 compressible: true
7079},
7080 "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": {
7081 source: "iana",
7082 compressible: true
7083},
7084 "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": {
7085 source: "iana",
7086 compressible: true
7087},
7088 "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": {
7089 source: "iana",
7090 compressible: true
7091},
7092 "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": {
7093 source: "iana",
7094 compressible: true
7095},
7096 "application/vnd.openxmlformats-officedocument.wordprocessingml.template": {
7097 source: "iana",
7098 extensions: [
7099 "dotx"
7100 ]
7101},
7102 "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": {
7103 source: "iana",
7104 compressible: true
7105},
7106 "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": {
7107 source: "iana",
7108 compressible: true
7109},
7110 "application/vnd.openxmlformats-package.core-properties+xml": {
7111 source: "iana",
7112 compressible: true
7113},
7114 "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": {
7115 source: "iana",
7116 compressible: true
7117},
7118 "application/vnd.openxmlformats-package.relationships+xml": {
7119 source: "iana",
7120 compressible: true
7121},
7122 "application/vnd.oracle.resource+json": {
7123 source: "iana",
7124 compressible: true
7125},
7126 "application/vnd.orange.indata": {
7127 source: "iana"
7128},
7129 "application/vnd.osa.netdeploy": {
7130 source: "iana"
7131},
7132 "application/vnd.osgeo.mapguide.package": {
7133 source: "iana",
7134 extensions: [
7135 "mgp"
7136 ]
7137},
7138 "application/vnd.osgi.bundle": {
7139 source: "iana"
7140},
7141 "application/vnd.osgi.dp": {
7142 source: "iana",
7143 extensions: [
7144 "dp"
7145 ]
7146},
7147 "application/vnd.osgi.subsystem": {
7148 source: "iana",
7149 extensions: [
7150 "esa"
7151 ]
7152},
7153 "application/vnd.otps.ct-kip+xml": {
7154 source: "iana",
7155 compressible: true
7156},
7157 "application/vnd.oxli.countgraph": {
7158 source: "iana"
7159},
7160 "application/vnd.pagerduty+json": {
7161 source: "iana",
7162 compressible: true
7163},
7164 "application/vnd.palm": {
7165 source: "iana",
7166 extensions: [
7167 "pdb",
7168 "pqa",
7169 "oprc"
7170 ]
7171},
7172 "application/vnd.panoply": {
7173 source: "iana"
7174},
7175 "application/vnd.paos.xml": {
7176 source: "iana"
7177},
7178 "application/vnd.patentdive": {
7179 source: "iana"
7180},
7181 "application/vnd.patientecommsdoc": {
7182 source: "iana"
7183},
7184 "application/vnd.pawaafile": {
7185 source: "iana",
7186 extensions: [
7187 "paw"
7188 ]
7189},
7190 "application/vnd.pcos": {
7191 source: "iana"
7192},
7193 "application/vnd.pg.format": {
7194 source: "iana",
7195 extensions: [
7196 "str"
7197 ]
7198},
7199 "application/vnd.pg.osasli": {
7200 source: "iana",
7201 extensions: [
7202 "ei6"
7203 ]
7204},
7205 "application/vnd.piaccess.application-licence": {
7206 source: "iana"
7207},
7208 "application/vnd.picsel": {
7209 source: "iana",
7210 extensions: [
7211 "efif"
7212 ]
7213},
7214 "application/vnd.pmi.widget": {
7215 source: "iana",
7216 extensions: [
7217 "wg"
7218 ]
7219},
7220 "application/vnd.poc.group-advertisement+xml": {
7221 source: "iana",
7222 compressible: true
7223},
7224 "application/vnd.pocketlearn": {
7225 source: "iana",
7226 extensions: [
7227 "plf"
7228 ]
7229},
7230 "application/vnd.powerbuilder6": {
7231 source: "iana",
7232 extensions: [
7233 "pbd"
7234 ]
7235},
7236 "application/vnd.powerbuilder6-s": {
7237 source: "iana"
7238},
7239 "application/vnd.powerbuilder7": {
7240 source: "iana"
7241},
7242 "application/vnd.powerbuilder7-s": {
7243 source: "iana"
7244},
7245 "application/vnd.powerbuilder75": {
7246 source: "iana"
7247},
7248 "application/vnd.powerbuilder75-s": {
7249 source: "iana"
7250},
7251 "application/vnd.preminet": {
7252 source: "iana"
7253},
7254 "application/vnd.previewsystems.box": {
7255 source: "iana",
7256 extensions: [
7257 "box"
7258 ]
7259},
7260 "application/vnd.proteus.magazine": {
7261 source: "iana",
7262 extensions: [
7263 "mgz"
7264 ]
7265},
7266 "application/vnd.psfs": {
7267 source: "iana"
7268},
7269 "application/vnd.publishare-delta-tree": {
7270 source: "iana",
7271 extensions: [
7272 "qps"
7273 ]
7274},
7275 "application/vnd.pvi.ptid1": {
7276 source: "iana",
7277 extensions: [
7278 "ptid"
7279 ]
7280},
7281 "application/vnd.pwg-multiplexed": {
7282 source: "iana"
7283},
7284 "application/vnd.pwg-xhtml-print+xml": {
7285 source: "iana",
7286 compressible: true
7287},
7288 "application/vnd.qualcomm.brew-app-res": {
7289 source: "iana"
7290},
7291 "application/vnd.quarantainenet": {
7292 source: "iana"
7293},
7294 "application/vnd.quark.quarkxpress": {
7295 source: "iana",
7296 extensions: [
7297 "qxd",
7298 "qxt",
7299 "qwd",
7300 "qwt",
7301 "qxl",
7302 "qxb"
7303 ]
7304},
7305 "application/vnd.quobject-quoxdocument": {
7306 source: "iana"
7307},
7308 "application/vnd.radisys.moml+xml": {
7309 source: "iana",
7310 compressible: true
7311},
7312 "application/vnd.radisys.msml+xml": {
7313 source: "iana",
7314 compressible: true
7315},
7316 "application/vnd.radisys.msml-audit+xml": {
7317 source: "iana",
7318 compressible: true
7319},
7320 "application/vnd.radisys.msml-audit-conf+xml": {
7321 source: "iana",
7322 compressible: true
7323},
7324 "application/vnd.radisys.msml-audit-conn+xml": {
7325 source: "iana",
7326 compressible: true
7327},
7328 "application/vnd.radisys.msml-audit-dialog+xml": {
7329 source: "iana",
7330 compressible: true
7331},
7332 "application/vnd.radisys.msml-audit-stream+xml": {
7333 source: "iana",
7334 compressible: true
7335},
7336 "application/vnd.radisys.msml-conf+xml": {
7337 source: "iana",
7338 compressible: true
7339},
7340 "application/vnd.radisys.msml-dialog+xml": {
7341 source: "iana",
7342 compressible: true
7343},
7344 "application/vnd.radisys.msml-dialog-base+xml": {
7345 source: "iana",
7346 compressible: true
7347},
7348 "application/vnd.radisys.msml-dialog-fax-detect+xml": {
7349 source: "iana",
7350 compressible: true
7351},
7352 "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": {
7353 source: "iana",
7354 compressible: true
7355},
7356 "application/vnd.radisys.msml-dialog-group+xml": {
7357 source: "iana",
7358 compressible: true
7359},
7360 "application/vnd.radisys.msml-dialog-speech+xml": {
7361 source: "iana",
7362 compressible: true
7363},
7364 "application/vnd.radisys.msml-dialog-transform+xml": {
7365 source: "iana",
7366 compressible: true
7367},
7368 "application/vnd.rainstor.data": {
7369 source: "iana"
7370},
7371 "application/vnd.rapid": {
7372 source: "iana"
7373},
7374 "application/vnd.rar": {
7375 source: "iana",
7376 extensions: [
7377 "rar"
7378 ]
7379},
7380 "application/vnd.realvnc.bed": {
7381 source: "iana",
7382 extensions: [
7383 "bed"
7384 ]
7385},
7386 "application/vnd.recordare.musicxml": {
7387 source: "iana",
7388 extensions: [
7389 "mxl"
7390 ]
7391},
7392 "application/vnd.recordare.musicxml+xml": {
7393 source: "iana",
7394 compressible: true,
7395 extensions: [
7396 "musicxml"
7397 ]
7398},
7399 "application/vnd.renlearn.rlprint": {
7400 source: "iana"
7401},
7402 "application/vnd.restful+json": {
7403 source: "iana",
7404 compressible: true
7405},
7406 "application/vnd.rig.cryptonote": {
7407 source: "iana",
7408 extensions: [
7409 "cryptonote"
7410 ]
7411},
7412 "application/vnd.rim.cod": {
7413 source: "apache",
7414 extensions: [
7415 "cod"
7416 ]
7417},
7418 "application/vnd.rn-realmedia": {
7419 source: "apache",
7420 extensions: [
7421 "rm"
7422 ]
7423},
7424 "application/vnd.rn-realmedia-vbr": {
7425 source: "apache",
7426 extensions: [
7427 "rmvb"
7428 ]
7429},
7430 "application/vnd.route66.link66+xml": {
7431 source: "iana",
7432 compressible: true,
7433 extensions: [
7434 "link66"
7435 ]
7436},
7437 "application/vnd.rs-274x": {
7438 source: "iana"
7439},
7440 "application/vnd.ruckus.download": {
7441 source: "iana"
7442},
7443 "application/vnd.s3sms": {
7444 source: "iana"
7445},
7446 "application/vnd.sailingtracker.track": {
7447 source: "iana",
7448 extensions: [
7449 "st"
7450 ]
7451},
7452 "application/vnd.sar": {
7453 source: "iana"
7454},
7455 "application/vnd.sbm.cid": {
7456 source: "iana"
7457},
7458 "application/vnd.sbm.mid2": {
7459 source: "iana"
7460},
7461 "application/vnd.scribus": {
7462 source: "iana"
7463},
7464 "application/vnd.sealed.3df": {
7465 source: "iana"
7466},
7467 "application/vnd.sealed.csf": {
7468 source: "iana"
7469},
7470 "application/vnd.sealed.doc": {
7471 source: "iana"
7472},
7473 "application/vnd.sealed.eml": {
7474 source: "iana"
7475},
7476 "application/vnd.sealed.mht": {
7477 source: "iana"
7478},
7479 "application/vnd.sealed.net": {
7480 source: "iana"
7481},
7482 "application/vnd.sealed.ppt": {
7483 source: "iana"
7484},
7485 "application/vnd.sealed.tiff": {
7486 source: "iana"
7487},
7488 "application/vnd.sealed.xls": {
7489 source: "iana"
7490},
7491 "application/vnd.sealedmedia.softseal.html": {
7492 source: "iana"
7493},
7494 "application/vnd.sealedmedia.softseal.pdf": {
7495 source: "iana"
7496},
7497 "application/vnd.seemail": {
7498 source: "iana",
7499 extensions: [
7500 "see"
7501 ]
7502},
7503 "application/vnd.seis+json": {
7504 source: "iana",
7505 compressible: true
7506},
7507 "application/vnd.sema": {
7508 source: "iana",
7509 extensions: [
7510 "sema"
7511 ]
7512},
7513 "application/vnd.semd": {
7514 source: "iana",
7515 extensions: [
7516 "semd"
7517 ]
7518},
7519 "application/vnd.semf": {
7520 source: "iana",
7521 extensions: [
7522 "semf"
7523 ]
7524},
7525 "application/vnd.shade-save-file": {
7526 source: "iana"
7527},
7528 "application/vnd.shana.informed.formdata": {
7529 source: "iana",
7530 extensions: [
7531 "ifm"
7532 ]
7533},
7534 "application/vnd.shana.informed.formtemplate": {
7535 source: "iana",
7536 extensions: [
7537 "itp"
7538 ]
7539},
7540 "application/vnd.shana.informed.interchange": {
7541 source: "iana",
7542 extensions: [
7543 "iif"
7544 ]
7545},
7546 "application/vnd.shana.informed.package": {
7547 source: "iana",
7548 extensions: [
7549 "ipk"
7550 ]
7551},
7552 "application/vnd.shootproof+json": {
7553 source: "iana",
7554 compressible: true
7555},
7556 "application/vnd.shopkick+json": {
7557 source: "iana",
7558 compressible: true
7559},
7560 "application/vnd.shp": {
7561 source: "iana"
7562},
7563 "application/vnd.shx": {
7564 source: "iana"
7565},
7566 "application/vnd.sigrok.session": {
7567 source: "iana"
7568},
7569 "application/vnd.simtech-mindmapper": {
7570 source: "iana",
7571 extensions: [
7572 "twd",
7573 "twds"
7574 ]
7575},
7576 "application/vnd.siren+json": {
7577 source: "iana",
7578 compressible: true
7579},
7580 "application/vnd.smaf": {
7581 source: "iana",
7582 extensions: [
7583 "mmf"
7584 ]
7585},
7586 "application/vnd.smart.notebook": {
7587 source: "iana"
7588},
7589 "application/vnd.smart.teacher": {
7590 source: "iana",
7591 extensions: [
7592 "teacher"
7593 ]
7594},
7595 "application/vnd.snesdev-page-table": {
7596 source: "iana"
7597},
7598 "application/vnd.software602.filler.form+xml": {
7599 source: "iana",
7600 compressible: true,
7601 extensions: [
7602 "fo"
7603 ]
7604},
7605 "application/vnd.software602.filler.form-xml-zip": {
7606 source: "iana"
7607},
7608 "application/vnd.solent.sdkm+xml": {
7609 source: "iana",
7610 compressible: true,
7611 extensions: [
7612 "sdkm",
7613 "sdkd"
7614 ]
7615},
7616 "application/vnd.spotfire.dxp": {
7617 source: "iana",
7618 extensions: [
7619 "dxp"
7620 ]
7621},
7622 "application/vnd.spotfire.sfs": {
7623 source: "iana",
7624 extensions: [
7625 "sfs"
7626 ]
7627},
7628 "application/vnd.sqlite3": {
7629 source: "iana"
7630},
7631 "application/vnd.sss-cod": {
7632 source: "iana"
7633},
7634 "application/vnd.sss-dtf": {
7635 source: "iana"
7636},
7637 "application/vnd.sss-ntf": {
7638 source: "iana"
7639},
7640 "application/vnd.stardivision.calc": {
7641 source: "apache",
7642 extensions: [
7643 "sdc"
7644 ]
7645},
7646 "application/vnd.stardivision.draw": {
7647 source: "apache",
7648 extensions: [
7649 "sda"
7650 ]
7651},
7652 "application/vnd.stardivision.impress": {
7653 source: "apache",
7654 extensions: [
7655 "sdd"
7656 ]
7657},
7658 "application/vnd.stardivision.math": {
7659 source: "apache",
7660 extensions: [
7661 "smf"
7662 ]
7663},
7664 "application/vnd.stardivision.writer": {
7665 source: "apache",
7666 extensions: [
7667 "sdw",
7668 "vor"
7669 ]
7670},
7671 "application/vnd.stardivision.writer-global": {
7672 source: "apache",
7673 extensions: [
7674 "sgl"
7675 ]
7676},
7677 "application/vnd.stepmania.package": {
7678 source: "iana",
7679 extensions: [
7680 "smzip"
7681 ]
7682},
7683 "application/vnd.stepmania.stepchart": {
7684 source: "iana",
7685 extensions: [
7686 "sm"
7687 ]
7688},
7689 "application/vnd.street-stream": {
7690 source: "iana"
7691},
7692 "application/vnd.sun.wadl+xml": {
7693 source: "iana",
7694 compressible: true,
7695 extensions: [
7696 "wadl"
7697 ]
7698},
7699 "application/vnd.sun.xml.calc": {
7700 source: "apache",
7701 extensions: [
7702 "sxc"
7703 ]
7704},
7705 "application/vnd.sun.xml.calc.template": {
7706 source: "apache",
7707 extensions: [
7708 "stc"
7709 ]
7710},
7711 "application/vnd.sun.xml.draw": {
7712 source: "apache",
7713 extensions: [
7714 "sxd"
7715 ]
7716},
7717 "application/vnd.sun.xml.draw.template": {
7718 source: "apache",
7719 extensions: [
7720 "std"
7721 ]
7722},
7723 "application/vnd.sun.xml.impress": {
7724 source: "apache",
7725 extensions: [
7726 "sxi"
7727 ]
7728},
7729 "application/vnd.sun.xml.impress.template": {
7730 source: "apache",
7731 extensions: [
7732 "sti"
7733 ]
7734},
7735 "application/vnd.sun.xml.math": {
7736 source: "apache",
7737 extensions: [
7738 "sxm"
7739 ]
7740},
7741 "application/vnd.sun.xml.writer": {
7742 source: "apache",
7743 extensions: [
7744 "sxw"
7745 ]
7746},
7747 "application/vnd.sun.xml.writer.global": {
7748 source: "apache",
7749 extensions: [
7750 "sxg"
7751 ]
7752},
7753 "application/vnd.sun.xml.writer.template": {
7754 source: "apache",
7755 extensions: [
7756 "stw"
7757 ]
7758},
7759 "application/vnd.sus-calendar": {
7760 source: "iana",
7761 extensions: [
7762 "sus",
7763 "susp"
7764 ]
7765},
7766 "application/vnd.svd": {
7767 source: "iana",
7768 extensions: [
7769 "svd"
7770 ]
7771},
7772 "application/vnd.swiftview-ics": {
7773 source: "iana"
7774},
7775 "application/vnd.sycle+xml": {
7776 source: "iana",
7777 compressible: true
7778},
7779 "application/vnd.symbian.install": {
7780 source: "apache",
7781 extensions: [
7782 "sis",
7783 "sisx"
7784 ]
7785},
7786 "application/vnd.syncml+xml": {
7787 source: "iana",
7788 charset: "UTF-8",
7789 compressible: true,
7790 extensions: [
7791 "xsm"
7792 ]
7793},
7794 "application/vnd.syncml.dm+wbxml": {
7795 source: "iana",
7796 charset: "UTF-8",
7797 extensions: [
7798 "bdm"
7799 ]
7800},
7801 "application/vnd.syncml.dm+xml": {
7802 source: "iana",
7803 charset: "UTF-8",
7804 compressible: true,
7805 extensions: [
7806 "xdm"
7807 ]
7808},
7809 "application/vnd.syncml.dm.notification": {
7810 source: "iana"
7811},
7812 "application/vnd.syncml.dmddf+wbxml": {
7813 source: "iana"
7814},
7815 "application/vnd.syncml.dmddf+xml": {
7816 source: "iana",
7817 charset: "UTF-8",
7818 compressible: true,
7819 extensions: [
7820 "ddf"
7821 ]
7822},
7823 "application/vnd.syncml.dmtnds+wbxml": {
7824 source: "iana"
7825},
7826 "application/vnd.syncml.dmtnds+xml": {
7827 source: "iana",
7828 charset: "UTF-8",
7829 compressible: true
7830},
7831 "application/vnd.syncml.ds.notification": {
7832 source: "iana"
7833},
7834 "application/vnd.tableschema+json": {
7835 source: "iana",
7836 compressible: true
7837},
7838 "application/vnd.tao.intent-module-archive": {
7839 source: "iana",
7840 extensions: [
7841 "tao"
7842 ]
7843},
7844 "application/vnd.tcpdump.pcap": {
7845 source: "iana",
7846 extensions: [
7847 "pcap",
7848 "cap",
7849 "dmp"
7850 ]
7851},
7852 "application/vnd.think-cell.ppttc+json": {
7853 source: "iana",
7854 compressible: true
7855},
7856 "application/vnd.tmd.mediaflex.api+xml": {
7857 source: "iana",
7858 compressible: true
7859},
7860 "application/vnd.tml": {
7861 source: "iana"
7862},
7863 "application/vnd.tmobile-livetv": {
7864 source: "iana",
7865 extensions: [
7866 "tmo"
7867 ]
7868},
7869 "application/vnd.tri.onesource": {
7870 source: "iana"
7871},
7872 "application/vnd.trid.tpt": {
7873 source: "iana",
7874 extensions: [
7875 "tpt"
7876 ]
7877},
7878 "application/vnd.triscape.mxs": {
7879 source: "iana",
7880 extensions: [
7881 "mxs"
7882 ]
7883},
7884 "application/vnd.trueapp": {
7885 source: "iana",
7886 extensions: [
7887 "tra"
7888 ]
7889},
7890 "application/vnd.truedoc": {
7891 source: "iana"
7892},
7893 "application/vnd.ubisoft.webplayer": {
7894 source: "iana"
7895},
7896 "application/vnd.ufdl": {
7897 source: "iana",
7898 extensions: [
7899 "ufd",
7900 "ufdl"
7901 ]
7902},
7903 "application/vnd.uiq.theme": {
7904 source: "iana",
7905 extensions: [
7906 "utz"
7907 ]
7908},
7909 "application/vnd.umajin": {
7910 source: "iana",
7911 extensions: [
7912 "umj"
7913 ]
7914},
7915 "application/vnd.unity": {
7916 source: "iana",
7917 extensions: [
7918 "unityweb"
7919 ]
7920},
7921 "application/vnd.uoml+xml": {
7922 source: "iana",
7923 compressible: true,
7924 extensions: [
7925 "uoml"
7926 ]
7927},
7928 "application/vnd.uplanet.alert": {
7929 source: "iana"
7930},
7931 "application/vnd.uplanet.alert-wbxml": {
7932 source: "iana"
7933},
7934 "application/vnd.uplanet.bearer-choice": {
7935 source: "iana"
7936},
7937 "application/vnd.uplanet.bearer-choice-wbxml": {
7938 source: "iana"
7939},
7940 "application/vnd.uplanet.cacheop": {
7941 source: "iana"
7942},
7943 "application/vnd.uplanet.cacheop-wbxml": {
7944 source: "iana"
7945},
7946 "application/vnd.uplanet.channel": {
7947 source: "iana"
7948},
7949 "application/vnd.uplanet.channel-wbxml": {
7950 source: "iana"
7951},
7952 "application/vnd.uplanet.list": {
7953 source: "iana"
7954},
7955 "application/vnd.uplanet.list-wbxml": {
7956 source: "iana"
7957},
7958 "application/vnd.uplanet.listcmd": {
7959 source: "iana"
7960},
7961 "application/vnd.uplanet.listcmd-wbxml": {
7962 source: "iana"
7963},
7964 "application/vnd.uplanet.signal": {
7965 source: "iana"
7966},
7967 "application/vnd.uri-map": {
7968 source: "iana"
7969},
7970 "application/vnd.valve.source.material": {
7971 source: "iana"
7972},
7973 "application/vnd.vcx": {
7974 source: "iana",
7975 extensions: [
7976 "vcx"
7977 ]
7978},
7979 "application/vnd.vd-study": {
7980 source: "iana"
7981},
7982 "application/vnd.vectorworks": {
7983 source: "iana"
7984},
7985 "application/vnd.vel+json": {
7986 source: "iana",
7987 compressible: true
7988},
7989 "application/vnd.verimatrix.vcas": {
7990 source: "iana"
7991},
7992 "application/vnd.veryant.thin": {
7993 source: "iana"
7994},
7995 "application/vnd.ves.encrypted": {
7996 source: "iana"
7997},
7998 "application/vnd.vidsoft.vidconference": {
7999 source: "iana"
8000},
8001 "application/vnd.visio": {
8002 source: "iana",
8003 extensions: [
8004 "vsd",
8005 "vst",
8006 "vss",
8007 "vsw"
8008 ]
8009},
8010 "application/vnd.visionary": {
8011 source: "iana",
8012 extensions: [
8013 "vis"
8014 ]
8015},
8016 "application/vnd.vividence.scriptfile": {
8017 source: "iana"
8018},
8019 "application/vnd.vsf": {
8020 source: "iana",
8021 extensions: [
8022 "vsf"
8023 ]
8024},
8025 "application/vnd.wap.sic": {
8026 source: "iana"
8027},
8028 "application/vnd.wap.slc": {
8029 source: "iana"
8030},
8031 "application/vnd.wap.wbxml": {
8032 source: "iana",
8033 charset: "UTF-8",
8034 extensions: [
8035 "wbxml"
8036 ]
8037},
8038 "application/vnd.wap.wmlc": {
8039 source: "iana",
8040 extensions: [
8041 "wmlc"
8042 ]
8043},
8044 "application/vnd.wap.wmlscriptc": {
8045 source: "iana",
8046 extensions: [
8047 "wmlsc"
8048 ]
8049},
8050 "application/vnd.webturbo": {
8051 source: "iana",
8052 extensions: [
8053 "wtb"
8054 ]
8055},
8056 "application/vnd.wfa.dpp": {
8057 source: "iana"
8058},
8059 "application/vnd.wfa.p2p": {
8060 source: "iana"
8061},
8062 "application/vnd.wfa.wsc": {
8063 source: "iana"
8064},
8065 "application/vnd.windows.devicepairing": {
8066 source: "iana"
8067},
8068 "application/vnd.wmc": {
8069 source: "iana"
8070},
8071 "application/vnd.wmf.bootstrap": {
8072 source: "iana"
8073},
8074 "application/vnd.wolfram.mathematica": {
8075 source: "iana"
8076},
8077 "application/vnd.wolfram.mathematica.package": {
8078 source: "iana"
8079},
8080 "application/vnd.wolfram.player": {
8081 source: "iana",
8082 extensions: [
8083 "nbp"
8084 ]
8085},
8086 "application/vnd.wordperfect": {
8087 source: "iana",
8088 extensions: [
8089 "wpd"
8090 ]
8091},
8092 "application/vnd.wqd": {
8093 source: "iana",
8094 extensions: [
8095 "wqd"
8096 ]
8097},
8098 "application/vnd.wrq-hp3000-labelled": {
8099 source: "iana"
8100},
8101 "application/vnd.wt.stf": {
8102 source: "iana",
8103 extensions: [
8104 "stf"
8105 ]
8106},
8107 "application/vnd.wv.csp+wbxml": {
8108 source: "iana"
8109},
8110 "application/vnd.wv.csp+xml": {
8111 source: "iana",
8112 compressible: true
8113},
8114 "application/vnd.wv.ssp+xml": {
8115 source: "iana",
8116 compressible: true
8117},
8118 "application/vnd.xacml+json": {
8119 source: "iana",
8120 compressible: true
8121},
8122 "application/vnd.xara": {
8123 source: "iana",
8124 extensions: [
8125 "xar"
8126 ]
8127},
8128 "application/vnd.xfdl": {
8129 source: "iana",
8130 extensions: [
8131 "xfdl"
8132 ]
8133},
8134 "application/vnd.xfdl.webform": {
8135 source: "iana"
8136},
8137 "application/vnd.xmi+xml": {
8138 source: "iana",
8139 compressible: true
8140},
8141 "application/vnd.xmpie.cpkg": {
8142 source: "iana"
8143},
8144 "application/vnd.xmpie.dpkg": {
8145 source: "iana"
8146},
8147 "application/vnd.xmpie.plan": {
8148 source: "iana"
8149},
8150 "application/vnd.xmpie.ppkg": {
8151 source: "iana"
8152},
8153 "application/vnd.xmpie.xlim": {
8154 source: "iana"
8155},
8156 "application/vnd.yamaha.hv-dic": {
8157 source: "iana",
8158 extensions: [
8159 "hvd"
8160 ]
8161},
8162 "application/vnd.yamaha.hv-script": {
8163 source: "iana",
8164 extensions: [
8165 "hvs"
8166 ]
8167},
8168 "application/vnd.yamaha.hv-voice": {
8169 source: "iana",
8170 extensions: [
8171 "hvp"
8172 ]
8173},
8174 "application/vnd.yamaha.openscoreformat": {
8175 source: "iana",
8176 extensions: [
8177 "osf"
8178 ]
8179},
8180 "application/vnd.yamaha.openscoreformat.osfpvg+xml": {
8181 source: "iana",
8182 compressible: true,
8183 extensions: [
8184 "osfpvg"
8185 ]
8186},
8187 "application/vnd.yamaha.remote-setup": {
8188 source: "iana"
8189},
8190 "application/vnd.yamaha.smaf-audio": {
8191 source: "iana",
8192 extensions: [
8193 "saf"
8194 ]
8195},
8196 "application/vnd.yamaha.smaf-phrase": {
8197 source: "iana",
8198 extensions: [
8199 "spf"
8200 ]
8201},
8202 "application/vnd.yamaha.through-ngn": {
8203 source: "iana"
8204},
8205 "application/vnd.yamaha.tunnel-udpencap": {
8206 source: "iana"
8207},
8208 "application/vnd.yaoweme": {
8209 source: "iana"
8210},
8211 "application/vnd.yellowriver-custom-menu": {
8212 source: "iana",
8213 extensions: [
8214 "cmp"
8215 ]
8216},
8217 "application/vnd.youtube.yt": {
8218 source: "iana"
8219},
8220 "application/vnd.zul": {
8221 source: "iana",
8222 extensions: [
8223 "zir",
8224 "zirz"
8225 ]
8226},
8227 "application/vnd.zzazz.deck+xml": {
8228 source: "iana",
8229 compressible: true,
8230 extensions: [
8231 "zaz"
8232 ]
8233},
8234 "application/voicexml+xml": {
8235 source: "iana",
8236 compressible: true,
8237 extensions: [
8238 "vxml"
8239 ]
8240},
8241 "application/voucher-cms+json": {
8242 source: "iana",
8243 compressible: true
8244},
8245 "application/vq-rtcpxr": {
8246 source: "iana"
8247},
8248 "application/wasm": {
8249 source: "iana",
8250 compressible: true,
8251 extensions: [
8252 "wasm"
8253 ]
8254},
8255 "application/watcherinfo+xml": {
8256 source: "iana",
8257 compressible: true
8258},
8259 "application/webpush-options+json": {
8260 source: "iana",
8261 compressible: true
8262},
8263 "application/whoispp-query": {
8264 source: "iana"
8265},
8266 "application/whoispp-response": {
8267 source: "iana"
8268},
8269 "application/widget": {
8270 source: "iana",
8271 extensions: [
8272 "wgt"
8273 ]
8274},
8275 "application/winhlp": {
8276 source: "apache",
8277 extensions: [
8278 "hlp"
8279 ]
8280},
8281 "application/wita": {
8282 source: "iana"
8283},
8284 "application/wordperfect5.1": {
8285 source: "iana"
8286},
8287 "application/wsdl+xml": {
8288 source: "iana",
8289 compressible: true,
8290 extensions: [
8291 "wsdl"
8292 ]
8293},
8294 "application/wspolicy+xml": {
8295 source: "iana",
8296 compressible: true,
8297 extensions: [
8298 "wspolicy"
8299 ]
8300},
8301 "application/x-7z-compressed": {
8302 source: "apache",
8303 compressible: false,
8304 extensions: [
8305 "7z"
8306 ]
8307},
8308 "application/x-abiword": {
8309 source: "apache",
8310 extensions: [
8311 "abw"
8312 ]
8313},
8314 "application/x-ace-compressed": {
8315 source: "apache",
8316 extensions: [
8317 "ace"
8318 ]
8319},
8320 "application/x-amf": {
8321 source: "apache"
8322},
8323 "application/x-apple-diskimage": {
8324 source: "apache",
8325 extensions: [
8326 "dmg"
8327 ]
8328},
8329 "application/x-arj": {
8330 compressible: false,
8331 extensions: [
8332 "arj"
8333 ]
8334},
8335 "application/x-authorware-bin": {
8336 source: "apache",
8337 extensions: [
8338 "aab",
8339 "x32",
8340 "u32",
8341 "vox"
8342 ]
8343},
8344 "application/x-authorware-map": {
8345 source: "apache",
8346 extensions: [
8347 "aam"
8348 ]
8349},
8350 "application/x-authorware-seg": {
8351 source: "apache",
8352 extensions: [
8353 "aas"
8354 ]
8355},
8356 "application/x-bcpio": {
8357 source: "apache",
8358 extensions: [
8359 "bcpio"
8360 ]
8361},
8362 "application/x-bdoc": {
8363 compressible: false,
8364 extensions: [
8365 "bdoc"
8366 ]
8367},
8368 "application/x-bittorrent": {
8369 source: "apache",
8370 extensions: [
8371 "torrent"
8372 ]
8373},
8374 "application/x-blorb": {
8375 source: "apache",
8376 extensions: [
8377 "blb",
8378 "blorb"
8379 ]
8380},
8381 "application/x-bzip": {
8382 source: "apache",
8383 compressible: false,
8384 extensions: [
8385 "bz"
8386 ]
8387},
8388 "application/x-bzip2": {
8389 source: "apache",
8390 compressible: false,
8391 extensions: [
8392 "bz2",
8393 "boz"
8394 ]
8395},
8396 "application/x-cbr": {
8397 source: "apache",
8398 extensions: [
8399 "cbr",
8400 "cba",
8401 "cbt",
8402 "cbz",
8403 "cb7"
8404 ]
8405},
8406 "application/x-cdlink": {
8407 source: "apache",
8408 extensions: [
8409 "vcd"
8410 ]
8411},
8412 "application/x-cfs-compressed": {
8413 source: "apache",
8414 extensions: [
8415 "cfs"
8416 ]
8417},
8418 "application/x-chat": {
8419 source: "apache",
8420 extensions: [
8421 "chat"
8422 ]
8423},
8424 "application/x-chess-pgn": {
8425 source: "apache",
8426 extensions: [
8427 "pgn"
8428 ]
8429},
8430 "application/x-chrome-extension": {
8431 extensions: [
8432 "crx"
8433 ]
8434},
8435 "application/x-cocoa": {
8436 source: "nginx",
8437 extensions: [
8438 "cco"
8439 ]
8440},
8441 "application/x-compress": {
8442 source: "apache"
8443},
8444 "application/x-conference": {
8445 source: "apache",
8446 extensions: [
8447 "nsc"
8448 ]
8449},
8450 "application/x-cpio": {
8451 source: "apache",
8452 extensions: [
8453 "cpio"
8454 ]
8455},
8456 "application/x-csh": {
8457 source: "apache",
8458 extensions: [
8459 "csh"
8460 ]
8461},
8462 "application/x-deb": {
8463 compressible: false
8464},
8465 "application/x-debian-package": {
8466 source: "apache",
8467 extensions: [
8468 "deb",
8469 "udeb"
8470 ]
8471},
8472 "application/x-dgc-compressed": {
8473 source: "apache",
8474 extensions: [
8475 "dgc"
8476 ]
8477},
8478 "application/x-director": {
8479 source: "apache",
8480 extensions: [
8481 "dir",
8482 "dcr",
8483 "dxr",
8484 "cst",
8485 "cct",
8486 "cxt",
8487 "w3d",
8488 "fgd",
8489 "swa"
8490 ]
8491},
8492 "application/x-doom": {
8493 source: "apache",
8494 extensions: [
8495 "wad"
8496 ]
8497},
8498 "application/x-dtbncx+xml": {
8499 source: "apache",
8500 compressible: true,
8501 extensions: [
8502 "ncx"
8503 ]
8504},
8505 "application/x-dtbook+xml": {
8506 source: "apache",
8507 compressible: true,
8508 extensions: [
8509 "dtb"
8510 ]
8511},
8512 "application/x-dtbresource+xml": {
8513 source: "apache",
8514 compressible: true,
8515 extensions: [
8516 "res"
8517 ]
8518},
8519 "application/x-dvi": {
8520 source: "apache",
8521 compressible: false,
8522 extensions: [
8523 "dvi"
8524 ]
8525},
8526 "application/x-envoy": {
8527 source: "apache",
8528 extensions: [
8529 "evy"
8530 ]
8531},
8532 "application/x-eva": {
8533 source: "apache",
8534 extensions: [
8535 "eva"
8536 ]
8537},
8538 "application/x-font-bdf": {
8539 source: "apache",
8540 extensions: [
8541 "bdf"
8542 ]
8543},
8544 "application/x-font-dos": {
8545 source: "apache"
8546},
8547 "application/x-font-framemaker": {
8548 source: "apache"
8549},
8550 "application/x-font-ghostscript": {
8551 source: "apache",
8552 extensions: [
8553 "gsf"
8554 ]
8555},
8556 "application/x-font-libgrx": {
8557 source: "apache"
8558},
8559 "application/x-font-linux-psf": {
8560 source: "apache",
8561 extensions: [
8562 "psf"
8563 ]
8564},
8565 "application/x-font-pcf": {
8566 source: "apache",
8567 extensions: [
8568 "pcf"
8569 ]
8570},
8571 "application/x-font-snf": {
8572 source: "apache",
8573 extensions: [
8574 "snf"
8575 ]
8576},
8577 "application/x-font-speedo": {
8578 source: "apache"
8579},
8580 "application/x-font-sunos-news": {
8581 source: "apache"
8582},
8583 "application/x-font-type1": {
8584 source: "apache",
8585 extensions: [
8586 "pfa",
8587 "pfb",
8588 "pfm",
8589 "afm"
8590 ]
8591},
8592 "application/x-font-vfont": {
8593 source: "apache"
8594},
8595 "application/x-freearc": {
8596 source: "apache",
8597 extensions: [
8598 "arc"
8599 ]
8600},
8601 "application/x-futuresplash": {
8602 source: "apache",
8603 extensions: [
8604 "spl"
8605 ]
8606},
8607 "application/x-gca-compressed": {
8608 source: "apache",
8609 extensions: [
8610 "gca"
8611 ]
8612},
8613 "application/x-glulx": {
8614 source: "apache",
8615 extensions: [
8616 "ulx"
8617 ]
8618},
8619 "application/x-gnumeric": {
8620 source: "apache",
8621 extensions: [
8622 "gnumeric"
8623 ]
8624},
8625 "application/x-gramps-xml": {
8626 source: "apache",
8627 extensions: [
8628 "gramps"
8629 ]
8630},
8631 "application/x-gtar": {
8632 source: "apache",
8633 extensions: [
8634 "gtar"
8635 ]
8636},
8637 "application/x-gzip": {
8638 source: "apache"
8639},
8640 "application/x-hdf": {
8641 source: "apache",
8642 extensions: [
8643 "hdf"
8644 ]
8645},
8646 "application/x-httpd-php": {
8647 compressible: true,
8648 extensions: [
8649 "php"
8650 ]
8651},
8652 "application/x-install-instructions": {
8653 source: "apache",
8654 extensions: [
8655 "install"
8656 ]
8657},
8658 "application/x-iso9660-image": {
8659 source: "apache",
8660 extensions: [
8661 "iso"
8662 ]
8663},
8664 "application/x-java-archive-diff": {
8665 source: "nginx",
8666 extensions: [
8667 "jardiff"
8668 ]
8669},
8670 "application/x-java-jnlp-file": {
8671 source: "apache",
8672 compressible: false,
8673 extensions: [
8674 "jnlp"
8675 ]
8676},
8677 "application/x-javascript": {
8678 compressible: true
8679},
8680 "application/x-keepass2": {
8681 extensions: [
8682 "kdbx"
8683 ]
8684},
8685 "application/x-latex": {
8686 source: "apache",
8687 compressible: false,
8688 extensions: [
8689 "latex"
8690 ]
8691},
8692 "application/x-lua-bytecode": {
8693 extensions: [
8694 "luac"
8695 ]
8696},
8697 "application/x-lzh-compressed": {
8698 source: "apache",
8699 extensions: [
8700 "lzh",
8701 "lha"
8702 ]
8703},
8704 "application/x-makeself": {
8705 source: "nginx",
8706 extensions: [
8707 "run"
8708 ]
8709},
8710 "application/x-mie": {
8711 source: "apache",
8712 extensions: [
8713 "mie"
8714 ]
8715},
8716 "application/x-mobipocket-ebook": {
8717 source: "apache",
8718 extensions: [
8719 "prc",
8720 "mobi"
8721 ]
8722},
8723 "application/x-mpegurl": {
8724 compressible: false
8725},
8726 "application/x-ms-application": {
8727 source: "apache",
8728 extensions: [
8729 "application"
8730 ]
8731},
8732 "application/x-ms-shortcut": {
8733 source: "apache",
8734 extensions: [
8735 "lnk"
8736 ]
8737},
8738 "application/x-ms-wmd": {
8739 source: "apache",
8740 extensions: [
8741 "wmd"
8742 ]
8743},
8744 "application/x-ms-wmz": {
8745 source: "apache",
8746 extensions: [
8747 "wmz"
8748 ]
8749},
8750 "application/x-ms-xbap": {
8751 source: "apache",
8752 extensions: [
8753 "xbap"
8754 ]
8755},
8756 "application/x-msaccess": {
8757 source: "apache",
8758 extensions: [
8759 "mdb"
8760 ]
8761},
8762 "application/x-msbinder": {
8763 source: "apache",
8764 extensions: [
8765 "obd"
8766 ]
8767},
8768 "application/x-mscardfile": {
8769 source: "apache",
8770 extensions: [
8771 "crd"
8772 ]
8773},
8774 "application/x-msclip": {
8775 source: "apache",
8776 extensions: [
8777 "clp"
8778 ]
8779},
8780 "application/x-msdos-program": {
8781 extensions: [
8782 "exe"
8783 ]
8784},
8785 "application/x-msdownload": {
8786 source: "apache",
8787 extensions: [
8788 "exe",
8789 "dll",
8790 "com",
8791 "bat",
8792 "msi"
8793 ]
8794},
8795 "application/x-msmediaview": {
8796 source: "apache",
8797 extensions: [
8798 "mvb",
8799 "m13",
8800 "m14"
8801 ]
8802},
8803 "application/x-msmetafile": {
8804 source: "apache",
8805 extensions: [
8806 "wmf",
8807 "wmz",
8808 "emf",
8809 "emz"
8810 ]
8811},
8812 "application/x-msmoney": {
8813 source: "apache",
8814 extensions: [
8815 "mny"
8816 ]
8817},
8818 "application/x-mspublisher": {
8819 source: "apache",
8820 extensions: [
8821 "pub"
8822 ]
8823},
8824 "application/x-msschedule": {
8825 source: "apache",
8826 extensions: [
8827 "scd"
8828 ]
8829},
8830 "application/x-msterminal": {
8831 source: "apache",
8832 extensions: [
8833 "trm"
8834 ]
8835},
8836 "application/x-mswrite": {
8837 source: "apache",
8838 extensions: [
8839 "wri"
8840 ]
8841},
8842 "application/x-netcdf": {
8843 source: "apache",
8844 extensions: [
8845 "nc",
8846 "cdf"
8847 ]
8848},
8849 "application/x-ns-proxy-autoconfig": {
8850 compressible: true,
8851 extensions: [
8852 "pac"
8853 ]
8854},
8855 "application/x-nzb": {
8856 source: "apache",
8857 extensions: [
8858 "nzb"
8859 ]
8860},
8861 "application/x-perl": {
8862 source: "nginx",
8863 extensions: [
8864 "pl",
8865 "pm"
8866 ]
8867},
8868 "application/x-pilot": {
8869 source: "nginx",
8870 extensions: [
8871 "prc",
8872 "pdb"
8873 ]
8874},
8875 "application/x-pkcs12": {
8876 source: "apache",
8877 compressible: false,
8878 extensions: [
8879 "p12",
8880 "pfx"
8881 ]
8882},
8883 "application/x-pkcs7-certificates": {
8884 source: "apache",
8885 extensions: [
8886 "p7b",
8887 "spc"
8888 ]
8889},
8890 "application/x-pkcs7-certreqresp": {
8891 source: "apache",
8892 extensions: [
8893 "p7r"
8894 ]
8895},
8896 "application/x-pki-message": {
8897 source: "iana"
8898},
8899 "application/x-rar-compressed": {
8900 source: "apache",
8901 compressible: false,
8902 extensions: [
8903 "rar"
8904 ]
8905},
8906 "application/x-redhat-package-manager": {
8907 source: "nginx",
8908 extensions: [
8909 "rpm"
8910 ]
8911},
8912 "application/x-research-info-systems": {
8913 source: "apache",
8914 extensions: [
8915 "ris"
8916 ]
8917},
8918 "application/x-sea": {
8919 source: "nginx",
8920 extensions: [
8921 "sea"
8922 ]
8923},
8924 "application/x-sh": {
8925 source: "apache",
8926 compressible: true,
8927 extensions: [
8928 "sh"
8929 ]
8930},
8931 "application/x-shar": {
8932 source: "apache",
8933 extensions: [
8934 "shar"
8935 ]
8936},
8937 "application/x-shockwave-flash": {
8938 source: "apache",
8939 compressible: false,
8940 extensions: [
8941 "swf"
8942 ]
8943},
8944 "application/x-silverlight-app": {
8945 source: "apache",
8946 extensions: [
8947 "xap"
8948 ]
8949},
8950 "application/x-sql": {
8951 source: "apache",
8952 extensions: [
8953 "sql"
8954 ]
8955},
8956 "application/x-stuffit": {
8957 source: "apache",
8958 compressible: false,
8959 extensions: [
8960 "sit"
8961 ]
8962},
8963 "application/x-stuffitx": {
8964 source: "apache",
8965 extensions: [
8966 "sitx"
8967 ]
8968},
8969 "application/x-subrip": {
8970 source: "apache",
8971 extensions: [
8972 "srt"
8973 ]
8974},
8975 "application/x-sv4cpio": {
8976 source: "apache",
8977 extensions: [
8978 "sv4cpio"
8979 ]
8980},
8981 "application/x-sv4crc": {
8982 source: "apache",
8983 extensions: [
8984 "sv4crc"
8985 ]
8986},
8987 "application/x-t3vm-image": {
8988 source: "apache",
8989 extensions: [
8990 "t3"
8991 ]
8992},
8993 "application/x-tads": {
8994 source: "apache",
8995 extensions: [
8996 "gam"
8997 ]
8998},
8999 "application/x-tar": {
9000 source: "apache",
9001 compressible: true,
9002 extensions: [
9003 "tar"
9004 ]
9005},
9006 "application/x-tcl": {
9007 source: "apache",
9008 extensions: [
9009 "tcl",
9010 "tk"
9011 ]
9012},
9013 "application/x-tex": {
9014 source: "apache",
9015 extensions: [
9016 "tex"
9017 ]
9018},
9019 "application/x-tex-tfm": {
9020 source: "apache",
9021 extensions: [
9022 "tfm"
9023 ]
9024},
9025 "application/x-texinfo": {
9026 source: "apache",
9027 extensions: [
9028 "texinfo",
9029 "texi"
9030 ]
9031},
9032 "application/x-tgif": {
9033 source: "apache",
9034 extensions: [
9035 "obj"
9036 ]
9037},
9038 "application/x-ustar": {
9039 source: "apache",
9040 extensions: [
9041 "ustar"
9042 ]
9043},
9044 "application/x-virtualbox-hdd": {
9045 compressible: true,
9046 extensions: [
9047 "hdd"
9048 ]
9049},
9050 "application/x-virtualbox-ova": {
9051 compressible: true,
9052 extensions: [
9053 "ova"
9054 ]
9055},
9056 "application/x-virtualbox-ovf": {
9057 compressible: true,
9058 extensions: [
9059 "ovf"
9060 ]
9061},
9062 "application/x-virtualbox-vbox": {
9063 compressible: true,
9064 extensions: [
9065 "vbox"
9066 ]
9067},
9068 "application/x-virtualbox-vbox-extpack": {
9069 compressible: false,
9070 extensions: [
9071 "vbox-extpack"
9072 ]
9073},
9074 "application/x-virtualbox-vdi": {
9075 compressible: true,
9076 extensions: [
9077 "vdi"
9078 ]
9079},
9080 "application/x-virtualbox-vhd": {
9081 compressible: true,
9082 extensions: [
9083 "vhd"
9084 ]
9085},
9086 "application/x-virtualbox-vmdk": {
9087 compressible: true,
9088 extensions: [
9089 "vmdk"
9090 ]
9091},
9092 "application/x-wais-source": {
9093 source: "apache",
9094 extensions: [
9095 "src"
9096 ]
9097},
9098 "application/x-web-app-manifest+json": {
9099 compressible: true,
9100 extensions: [
9101 "webapp"
9102 ]
9103},
9104 "application/x-www-form-urlencoded": {
9105 source: "iana",
9106 compressible: true
9107},
9108 "application/x-x509-ca-cert": {
9109 source: "iana",
9110 extensions: [
9111 "der",
9112 "crt",
9113 "pem"
9114 ]
9115},
9116 "application/x-x509-ca-ra-cert": {
9117 source: "iana"
9118},
9119 "application/x-x509-next-ca-cert": {
9120 source: "iana"
9121},
9122 "application/x-xfig": {
9123 source: "apache",
9124 extensions: [
9125 "fig"
9126 ]
9127},
9128 "application/x-xliff+xml": {
9129 source: "apache",
9130 compressible: true,
9131 extensions: [
9132 "xlf"
9133 ]
9134},
9135 "application/x-xpinstall": {
9136 source: "apache",
9137 compressible: false,
9138 extensions: [
9139 "xpi"
9140 ]
9141},
9142 "application/x-xz": {
9143 source: "apache",
9144 extensions: [
9145 "xz"
9146 ]
9147},
9148 "application/x-zmachine": {
9149 source: "apache",
9150 extensions: [
9151 "z1",
9152 "z2",
9153 "z3",
9154 "z4",
9155 "z5",
9156 "z6",
9157 "z7",
9158 "z8"
9159 ]
9160},
9161 "application/x400-bp": {
9162 source: "iana"
9163},
9164 "application/xacml+xml": {
9165 source: "iana",
9166 compressible: true
9167},
9168 "application/xaml+xml": {
9169 source: "apache",
9170 compressible: true,
9171 extensions: [
9172 "xaml"
9173 ]
9174},
9175 "application/xcap-att+xml": {
9176 source: "iana",
9177 compressible: true,
9178 extensions: [
9179 "xav"
9180 ]
9181},
9182 "application/xcap-caps+xml": {
9183 source: "iana",
9184 compressible: true,
9185 extensions: [
9186 "xca"
9187 ]
9188},
9189 "application/xcap-diff+xml": {
9190 source: "iana",
9191 compressible: true,
9192 extensions: [
9193 "xdf"
9194 ]
9195},
9196 "application/xcap-el+xml": {
9197 source: "iana",
9198 compressible: true,
9199 extensions: [
9200 "xel"
9201 ]
9202},
9203 "application/xcap-error+xml": {
9204 source: "iana",
9205 compressible: true
9206},
9207 "application/xcap-ns+xml": {
9208 source: "iana",
9209 compressible: true,
9210 extensions: [
9211 "xns"
9212 ]
9213},
9214 "application/xcon-conference-info+xml": {
9215 source: "iana",
9216 compressible: true
9217},
9218 "application/xcon-conference-info-diff+xml": {
9219 source: "iana",
9220 compressible: true
9221},
9222 "application/xenc+xml": {
9223 source: "iana",
9224 compressible: true,
9225 extensions: [
9226 "xenc"
9227 ]
9228},
9229 "application/xhtml+xml": {
9230 source: "iana",
9231 compressible: true,
9232 extensions: [
9233 "xhtml",
9234 "xht"
9235 ]
9236},
9237 "application/xhtml-voice+xml": {
9238 source: "apache",
9239 compressible: true
9240},
9241 "application/xliff+xml": {
9242 source: "iana",
9243 compressible: true,
9244 extensions: [
9245 "xlf"
9246 ]
9247},
9248 "application/xml": {
9249 source: "iana",
9250 compressible: true,
9251 extensions: [
9252 "xml",
9253 "xsl",
9254 "xsd",
9255 "rng"
9256 ]
9257},
9258 "application/xml-dtd": {
9259 source: "iana",
9260 compressible: true,
9261 extensions: [
9262 "dtd"
9263 ]
9264},
9265 "application/xml-external-parsed-entity": {
9266 source: "iana"
9267},
9268 "application/xml-patch+xml": {
9269 source: "iana",
9270 compressible: true
9271},
9272 "application/xmpp+xml": {
9273 source: "iana",
9274 compressible: true
9275},
9276 "application/xop+xml": {
9277 source: "iana",
9278 compressible: true,
9279 extensions: [
9280 "xop"
9281 ]
9282},
9283 "application/xproc+xml": {
9284 source: "apache",
9285 compressible: true,
9286 extensions: [
9287 "xpl"
9288 ]
9289},
9290 "application/xslt+xml": {
9291 source: "iana",
9292 compressible: true,
9293 extensions: [
9294 "xsl",
9295 "xslt"
9296 ]
9297},
9298 "application/xspf+xml": {
9299 source: "apache",
9300 compressible: true,
9301 extensions: [
9302 "xspf"
9303 ]
9304},
9305 "application/xv+xml": {
9306 source: "iana",
9307 compressible: true,
9308 extensions: [
9309 "mxml",
9310 "xhvml",
9311 "xvml",
9312 "xvm"
9313 ]
9314},
9315 "application/yang": {
9316 source: "iana",
9317 extensions: [
9318 "yang"
9319 ]
9320},
9321 "application/yang-data+json": {
9322 source: "iana",
9323 compressible: true
9324},
9325 "application/yang-data+xml": {
9326 source: "iana",
9327 compressible: true
9328},
9329 "application/yang-patch+json": {
9330 source: "iana",
9331 compressible: true
9332},
9333 "application/yang-patch+xml": {
9334 source: "iana",
9335 compressible: true
9336},
9337 "application/yin+xml": {
9338 source: "iana",
9339 compressible: true,
9340 extensions: [
9341 "yin"
9342 ]
9343},
9344 "application/zip": {
9345 source: "iana",
9346 compressible: false,
9347 extensions: [
9348 "zip"
9349 ]
9350},
9351 "application/zlib": {
9352 source: "iana"
9353},
9354 "application/zstd": {
9355 source: "iana"
9356},
9357 "audio/1d-interleaved-parityfec": {
9358 source: "iana"
9359},
9360 "audio/32kadpcm": {
9361 source: "iana"
9362},
9363 "audio/3gpp": {
9364 source: "iana",
9365 compressible: false,
9366 extensions: [
9367 "3gpp"
9368 ]
9369},
9370 "audio/3gpp2": {
9371 source: "iana"
9372},
9373 "audio/aac": {
9374 source: "iana"
9375},
9376 "audio/ac3": {
9377 source: "iana"
9378},
9379 "audio/adpcm": {
9380 source: "apache",
9381 extensions: [
9382 "adp"
9383 ]
9384},
9385 "audio/amr": {
9386 source: "iana",
9387 extensions: [
9388 "amr"
9389 ]
9390},
9391 "audio/amr-wb": {
9392 source: "iana"
9393},
9394 "audio/amr-wb+": {
9395 source: "iana"
9396},
9397 "audio/aptx": {
9398 source: "iana"
9399},
9400 "audio/asc": {
9401 source: "iana"
9402},
9403 "audio/atrac-advanced-lossless": {
9404 source: "iana"
9405},
9406 "audio/atrac-x": {
9407 source: "iana"
9408},
9409 "audio/atrac3": {
9410 source: "iana"
9411},
9412 "audio/basic": {
9413 source: "iana",
9414 compressible: false,
9415 extensions: [
9416 "au",
9417 "snd"
9418 ]
9419},
9420 "audio/bv16": {
9421 source: "iana"
9422},
9423 "audio/bv32": {
9424 source: "iana"
9425},
9426 "audio/clearmode": {
9427 source: "iana"
9428},
9429 "audio/cn": {
9430 source: "iana"
9431},
9432 "audio/dat12": {
9433 source: "iana"
9434},
9435 "audio/dls": {
9436 source: "iana"
9437},
9438 "audio/dsr-es201108": {
9439 source: "iana"
9440},
9441 "audio/dsr-es202050": {
9442 source: "iana"
9443},
9444 "audio/dsr-es202211": {
9445 source: "iana"
9446},
9447 "audio/dsr-es202212": {
9448 source: "iana"
9449},
9450 "audio/dv": {
9451 source: "iana"
9452},
9453 "audio/dvi4": {
9454 source: "iana"
9455},
9456 "audio/eac3": {
9457 source: "iana"
9458},
9459 "audio/encaprtp": {
9460 source: "iana"
9461},
9462 "audio/evrc": {
9463 source: "iana"
9464},
9465 "audio/evrc-qcp": {
9466 source: "iana"
9467},
9468 "audio/evrc0": {
9469 source: "iana"
9470},
9471 "audio/evrc1": {
9472 source: "iana"
9473},
9474 "audio/evrcb": {
9475 source: "iana"
9476},
9477 "audio/evrcb0": {
9478 source: "iana"
9479},
9480 "audio/evrcb1": {
9481 source: "iana"
9482},
9483 "audio/evrcnw": {
9484 source: "iana"
9485},
9486 "audio/evrcnw0": {
9487 source: "iana"
9488},
9489 "audio/evrcnw1": {
9490 source: "iana"
9491},
9492 "audio/evrcwb": {
9493 source: "iana"
9494},
9495 "audio/evrcwb0": {
9496 source: "iana"
9497},
9498 "audio/evrcwb1": {
9499 source: "iana"
9500},
9501 "audio/evs": {
9502 source: "iana"
9503},
9504 "audio/flexfec": {
9505 source: "iana"
9506},
9507 "audio/fwdred": {
9508 source: "iana"
9509},
9510 "audio/g711-0": {
9511 source: "iana"
9512},
9513 "audio/g719": {
9514 source: "iana"
9515},
9516 "audio/g722": {
9517 source: "iana"
9518},
9519 "audio/g7221": {
9520 source: "iana"
9521},
9522 "audio/g723": {
9523 source: "iana"
9524},
9525 "audio/g726-16": {
9526 source: "iana"
9527},
9528 "audio/g726-24": {
9529 source: "iana"
9530},
9531 "audio/g726-32": {
9532 source: "iana"
9533},
9534 "audio/g726-40": {
9535 source: "iana"
9536},
9537 "audio/g728": {
9538 source: "iana"
9539},
9540 "audio/g729": {
9541 source: "iana"
9542},
9543 "audio/g7291": {
9544 source: "iana"
9545},
9546 "audio/g729d": {
9547 source: "iana"
9548},
9549 "audio/g729e": {
9550 source: "iana"
9551},
9552 "audio/gsm": {
9553 source: "iana"
9554},
9555 "audio/gsm-efr": {
9556 source: "iana"
9557},
9558 "audio/gsm-hr-08": {
9559 source: "iana"
9560},
9561 "audio/ilbc": {
9562 source: "iana"
9563},
9564 "audio/ip-mr_v2.5": {
9565 source: "iana"
9566},
9567 "audio/isac": {
9568 source: "apache"
9569},
9570 "audio/l16": {
9571 source: "iana"
9572},
9573 "audio/l20": {
9574 source: "iana"
9575},
9576 "audio/l24": {
9577 source: "iana",
9578 compressible: false
9579},
9580 "audio/l8": {
9581 source: "iana"
9582},
9583 "audio/lpc": {
9584 source: "iana"
9585},
9586 "audio/melp": {
9587 source: "iana"
9588},
9589 "audio/melp1200": {
9590 source: "iana"
9591},
9592 "audio/melp2400": {
9593 source: "iana"
9594},
9595 "audio/melp600": {
9596 source: "iana"
9597},
9598 "audio/mhas": {
9599 source: "iana"
9600},
9601 "audio/midi": {
9602 source: "apache",
9603 extensions: [
9604 "mid",
9605 "midi",
9606 "kar",
9607 "rmi"
9608 ]
9609},
9610 "audio/mobile-xmf": {
9611 source: "iana",
9612 extensions: [
9613 "mxmf"
9614 ]
9615},
9616 "audio/mp3": {
9617 compressible: false,
9618 extensions: [
9619 "mp3"
9620 ]
9621},
9622 "audio/mp4": {
9623 source: "iana",
9624 compressible: false,
9625 extensions: [
9626 "m4a",
9627 "mp4a"
9628 ]
9629},
9630 "audio/mp4a-latm": {
9631 source: "iana"
9632},
9633 "audio/mpa": {
9634 source: "iana"
9635},
9636 "audio/mpa-robust": {
9637 source: "iana"
9638},
9639 "audio/mpeg": {
9640 source: "iana",
9641 compressible: false,
9642 extensions: [
9643 "mpga",
9644 "mp2",
9645 "mp2a",
9646 "mp3",
9647 "m2a",
9648 "m3a"
9649 ]
9650},
9651 "audio/mpeg4-generic": {
9652 source: "iana"
9653},
9654 "audio/musepack": {
9655 source: "apache"
9656},
9657 "audio/ogg": {
9658 source: "iana",
9659 compressible: false,
9660 extensions: [
9661 "oga",
9662 "ogg",
9663 "spx",
9664 "opus"
9665 ]
9666},
9667 "audio/opus": {
9668 source: "iana"
9669},
9670 "audio/parityfec": {
9671 source: "iana"
9672},
9673 "audio/pcma": {
9674 source: "iana"
9675},
9676 "audio/pcma-wb": {
9677 source: "iana"
9678},
9679 "audio/pcmu": {
9680 source: "iana"
9681},
9682 "audio/pcmu-wb": {
9683 source: "iana"
9684},
9685 "audio/prs.sid": {
9686 source: "iana"
9687},
9688 "audio/qcelp": {
9689 source: "iana"
9690},
9691 "audio/raptorfec": {
9692 source: "iana"
9693},
9694 "audio/red": {
9695 source: "iana"
9696},
9697 "audio/rtp-enc-aescm128": {
9698 source: "iana"
9699},
9700 "audio/rtp-midi": {
9701 source: "iana"
9702},
9703 "audio/rtploopback": {
9704 source: "iana"
9705},
9706 "audio/rtx": {
9707 source: "iana"
9708},
9709 "audio/s3m": {
9710 source: "apache",
9711 extensions: [
9712 "s3m"
9713 ]
9714},
9715 "audio/scip": {
9716 source: "iana"
9717},
9718 "audio/silk": {
9719 source: "apache",
9720 extensions: [
9721 "sil"
9722 ]
9723},
9724 "audio/smv": {
9725 source: "iana"
9726},
9727 "audio/smv-qcp": {
9728 source: "iana"
9729},
9730 "audio/smv0": {
9731 source: "iana"
9732},
9733 "audio/sofa": {
9734 source: "iana"
9735},
9736 "audio/sp-midi": {
9737 source: "iana"
9738},
9739 "audio/speex": {
9740 source: "iana"
9741},
9742 "audio/t140c": {
9743 source: "iana"
9744},
9745 "audio/t38": {
9746 source: "iana"
9747},
9748 "audio/telephone-event": {
9749 source: "iana"
9750},
9751 "audio/tetra_acelp": {
9752 source: "iana"
9753},
9754 "audio/tetra_acelp_bb": {
9755 source: "iana"
9756},
9757 "audio/tone": {
9758 source: "iana"
9759},
9760 "audio/tsvcis": {
9761 source: "iana"
9762},
9763 "audio/uemclip": {
9764 source: "iana"
9765},
9766 "audio/ulpfec": {
9767 source: "iana"
9768},
9769 "audio/usac": {
9770 source: "iana"
9771},
9772 "audio/vdvi": {
9773 source: "iana"
9774},
9775 "audio/vmr-wb": {
9776 source: "iana"
9777},
9778 "audio/vnd.3gpp.iufp": {
9779 source: "iana"
9780},
9781 "audio/vnd.4sb": {
9782 source: "iana"
9783},
9784 "audio/vnd.audiokoz": {
9785 source: "iana"
9786},
9787 "audio/vnd.celp": {
9788 source: "iana"
9789},
9790 "audio/vnd.cisco.nse": {
9791 source: "iana"
9792},
9793 "audio/vnd.cmles.radio-events": {
9794 source: "iana"
9795},
9796 "audio/vnd.cns.anp1": {
9797 source: "iana"
9798},
9799 "audio/vnd.cns.inf1": {
9800 source: "iana"
9801},
9802 "audio/vnd.dece.audio": {
9803 source: "iana",
9804 extensions: [
9805 "uva",
9806 "uvva"
9807 ]
9808},
9809 "audio/vnd.digital-winds": {
9810 source: "iana",
9811 extensions: [
9812 "eol"
9813 ]
9814},
9815 "audio/vnd.dlna.adts": {
9816 source: "iana"
9817},
9818 "audio/vnd.dolby.heaac.1": {
9819 source: "iana"
9820},
9821 "audio/vnd.dolby.heaac.2": {
9822 source: "iana"
9823},
9824 "audio/vnd.dolby.mlp": {
9825 source: "iana"
9826},
9827 "audio/vnd.dolby.mps": {
9828 source: "iana"
9829},
9830 "audio/vnd.dolby.pl2": {
9831 source: "iana"
9832},
9833 "audio/vnd.dolby.pl2x": {
9834 source: "iana"
9835},
9836 "audio/vnd.dolby.pl2z": {
9837 source: "iana"
9838},
9839 "audio/vnd.dolby.pulse.1": {
9840 source: "iana"
9841},
9842 "audio/vnd.dra": {
9843 source: "iana",
9844 extensions: [
9845 "dra"
9846 ]
9847},
9848 "audio/vnd.dts": {
9849 source: "iana",
9850 extensions: [
9851 "dts"
9852 ]
9853},
9854 "audio/vnd.dts.hd": {
9855 source: "iana",
9856 extensions: [
9857 "dtshd"
9858 ]
9859},
9860 "audio/vnd.dts.uhd": {
9861 source: "iana"
9862},
9863 "audio/vnd.dvb.file": {
9864 source: "iana"
9865},
9866 "audio/vnd.everad.plj": {
9867 source: "iana"
9868},
9869 "audio/vnd.hns.audio": {
9870 source: "iana"
9871},
9872 "audio/vnd.lucent.voice": {
9873 source: "iana",
9874 extensions: [
9875 "lvp"
9876 ]
9877},
9878 "audio/vnd.ms-playready.media.pya": {
9879 source: "iana",
9880 extensions: [
9881 "pya"
9882 ]
9883},
9884 "audio/vnd.nokia.mobile-xmf": {
9885 source: "iana"
9886},
9887 "audio/vnd.nortel.vbk": {
9888 source: "iana"
9889},
9890 "audio/vnd.nuera.ecelp4800": {
9891 source: "iana",
9892 extensions: [
9893 "ecelp4800"
9894 ]
9895},
9896 "audio/vnd.nuera.ecelp7470": {
9897 source: "iana",
9898 extensions: [
9899 "ecelp7470"
9900 ]
9901},
9902 "audio/vnd.nuera.ecelp9600": {
9903 source: "iana",
9904 extensions: [
9905 "ecelp9600"
9906 ]
9907},
9908 "audio/vnd.octel.sbc": {
9909 source: "iana"
9910},
9911 "audio/vnd.presonus.multitrack": {
9912 source: "iana"
9913},
9914 "audio/vnd.qcelp": {
9915 source: "iana"
9916},
9917 "audio/vnd.rhetorex.32kadpcm": {
9918 source: "iana"
9919},
9920 "audio/vnd.rip": {
9921 source: "iana",
9922 extensions: [
9923 "rip"
9924 ]
9925},
9926 "audio/vnd.rn-realaudio": {
9927 compressible: false
9928},
9929 "audio/vnd.sealedmedia.softseal.mpeg": {
9930 source: "iana"
9931},
9932 "audio/vnd.vmx.cvsd": {
9933 source: "iana"
9934},
9935 "audio/vnd.wave": {
9936 compressible: false
9937},
9938 "audio/vorbis": {
9939 source: "iana",
9940 compressible: false
9941},
9942 "audio/vorbis-config": {
9943 source: "iana"
9944},
9945 "audio/wav": {
9946 compressible: false,
9947 extensions: [
9948 "wav"
9949 ]
9950},
9951 "audio/wave": {
9952 compressible: false,
9953 extensions: [
9954 "wav"
9955 ]
9956},
9957 "audio/webm": {
9958 source: "apache",
9959 compressible: false,
9960 extensions: [
9961 "weba"
9962 ]
9963},
9964 "audio/x-aac": {
9965 source: "apache",
9966 compressible: false,
9967 extensions: [
9968 "aac"
9969 ]
9970},
9971 "audio/x-aiff": {
9972 source: "apache",
9973 extensions: [
9974 "aif",
9975 "aiff",
9976 "aifc"
9977 ]
9978},
9979 "audio/x-caf": {
9980 source: "apache",
9981 compressible: false,
9982 extensions: [
9983 "caf"
9984 ]
9985},
9986 "audio/x-flac": {
9987 source: "apache",
9988 extensions: [
9989 "flac"
9990 ]
9991},
9992 "audio/x-m4a": {
9993 source: "nginx",
9994 extensions: [
9995 "m4a"
9996 ]
9997},
9998 "audio/x-matroska": {
9999 source: "apache",
10000 extensions: [
10001 "mka"
10002 ]
10003},
10004 "audio/x-mpegurl": {
10005 source: "apache",
10006 extensions: [
10007 "m3u"
10008 ]
10009},
10010 "audio/x-ms-wax": {
10011 source: "apache",
10012 extensions: [
10013 "wax"
10014 ]
10015},
10016 "audio/x-ms-wma": {
10017 source: "apache",
10018 extensions: [
10019 "wma"
10020 ]
10021},
10022 "audio/x-pn-realaudio": {
10023 source: "apache",
10024 extensions: [
10025 "ram",
10026 "ra"
10027 ]
10028},
10029 "audio/x-pn-realaudio-plugin": {
10030 source: "apache",
10031 extensions: [
10032 "rmp"
10033 ]
10034},
10035 "audio/x-realaudio": {
10036 source: "nginx",
10037 extensions: [
10038 "ra"
10039 ]
10040},
10041 "audio/x-tta": {
10042 source: "apache"
10043},
10044 "audio/x-wav": {
10045 source: "apache",
10046 extensions: [
10047 "wav"
10048 ]
10049},
10050 "audio/xm": {
10051 source: "apache",
10052 extensions: [
10053 "xm"
10054 ]
10055},
10056 "chemical/x-cdx": {
10057 source: "apache",
10058 extensions: [
10059 "cdx"
10060 ]
10061},
10062 "chemical/x-cif": {
10063 source: "apache",
10064 extensions: [
10065 "cif"
10066 ]
10067},
10068 "chemical/x-cmdf": {
10069 source: "apache",
10070 extensions: [
10071 "cmdf"
10072 ]
10073},
10074 "chemical/x-cml": {
10075 source: "apache",
10076 extensions: [
10077 "cml"
10078 ]
10079},
10080 "chemical/x-csml": {
10081 source: "apache",
10082 extensions: [
10083 "csml"
10084 ]
10085},
10086 "chemical/x-pdb": {
10087 source: "apache"
10088},
10089 "chemical/x-xyz": {
10090 source: "apache",
10091 extensions: [
10092 "xyz"
10093 ]
10094},
10095 "font/collection": {
10096 source: "iana",
10097 extensions: [
10098 "ttc"
10099 ]
10100},
10101 "font/otf": {
10102 source: "iana",
10103 compressible: true,
10104 extensions: [
10105 "otf"
10106 ]
10107},
10108 "font/sfnt": {
10109 source: "iana"
10110},
10111 "font/ttf": {
10112 source: "iana",
10113 compressible: true,
10114 extensions: [
10115 "ttf"
10116 ]
10117},
10118 "font/woff": {
10119 source: "iana",
10120 extensions: [
10121 "woff"
10122 ]
10123},
10124 "font/woff2": {
10125 source: "iana",
10126 extensions: [
10127 "woff2"
10128 ]
10129},
10130 "image/aces": {
10131 source: "iana",
10132 extensions: [
10133 "exr"
10134 ]
10135},
10136 "image/apng": {
10137 compressible: false,
10138 extensions: [
10139 "apng"
10140 ]
10141},
10142 "image/avci": {
10143 source: "iana"
10144},
10145 "image/avcs": {
10146 source: "iana"
10147},
10148 "image/avif": {
10149 source: "iana",
10150 compressible: false,
10151 extensions: [
10152 "avif"
10153 ]
10154},
10155 "image/bmp": {
10156 source: "iana",
10157 compressible: true,
10158 extensions: [
10159 "bmp"
10160 ]
10161},
10162 "image/cgm": {
10163 source: "iana",
10164 extensions: [
10165 "cgm"
10166 ]
10167},
10168 "image/dicom-rle": {
10169 source: "iana",
10170 extensions: [
10171 "drle"
10172 ]
10173},
10174 "image/emf": {
10175 source: "iana",
10176 extensions: [
10177 "emf"
10178 ]
10179},
10180 "image/fits": {
10181 source: "iana",
10182 extensions: [
10183 "fits"
10184 ]
10185},
10186 "image/g3fax": {
10187 source: "iana",
10188 extensions: [
10189 "g3"
10190 ]
10191},
10192 "image/gif": {
10193 source: "iana",
10194 compressible: false,
10195 extensions: [
10196 "gif"
10197 ]
10198},
10199 "image/heic": {
10200 source: "iana",
10201 extensions: [
10202 "heic"
10203 ]
10204},
10205 "image/heic-sequence": {
10206 source: "iana",
10207 extensions: [
10208 "heics"
10209 ]
10210},
10211 "image/heif": {
10212 source: "iana",
10213 extensions: [
10214 "heif"
10215 ]
10216},
10217 "image/heif-sequence": {
10218 source: "iana",
10219 extensions: [
10220 "heifs"
10221 ]
10222},
10223 "image/hej2k": {
10224 source: "iana",
10225 extensions: [
10226 "hej2"
10227 ]
10228},
10229 "image/hsj2": {
10230 source: "iana",
10231 extensions: [
10232 "hsj2"
10233 ]
10234},
10235 "image/ief": {
10236 source: "iana",
10237 extensions: [
10238 "ief"
10239 ]
10240},
10241 "image/jls": {
10242 source: "iana",
10243 extensions: [
10244 "jls"
10245 ]
10246},
10247 "image/jp2": {
10248 source: "iana",
10249 compressible: false,
10250 extensions: [
10251 "jp2",
10252 "jpg2"
10253 ]
10254},
10255 "image/jpeg": {
10256 source: "iana",
10257 compressible: false,
10258 extensions: [
10259 "jpeg",
10260 "jpg",
10261 "jpe"
10262 ]
10263},
10264 "image/jph": {
10265 source: "iana",
10266 extensions: [
10267 "jph"
10268 ]
10269},
10270 "image/jphc": {
10271 source: "iana",
10272 extensions: [
10273 "jhc"
10274 ]
10275},
10276 "image/jpm": {
10277 source: "iana",
10278 compressible: false,
10279 extensions: [
10280 "jpm"
10281 ]
10282},
10283 "image/jpx": {
10284 source: "iana",
10285 compressible: false,
10286 extensions: [
10287 "jpx",
10288 "jpf"
10289 ]
10290},
10291 "image/jxr": {
10292 source: "iana",
10293 extensions: [
10294 "jxr"
10295 ]
10296},
10297 "image/jxra": {
10298 source: "iana",
10299 extensions: [
10300 "jxra"
10301 ]
10302},
10303 "image/jxrs": {
10304 source: "iana",
10305 extensions: [
10306 "jxrs"
10307 ]
10308},
10309 "image/jxs": {
10310 source: "iana",
10311 extensions: [
10312 "jxs"
10313 ]
10314},
10315 "image/jxsc": {
10316 source: "iana",
10317 extensions: [
10318 "jxsc"
10319 ]
10320},
10321 "image/jxsi": {
10322 source: "iana",
10323 extensions: [
10324 "jxsi"
10325 ]
10326},
10327 "image/jxss": {
10328 source: "iana",
10329 extensions: [
10330 "jxss"
10331 ]
10332},
10333 "image/ktx": {
10334 source: "iana",
10335 extensions: [
10336 "ktx"
10337 ]
10338},
10339 "image/ktx2": {
10340 source: "iana",
10341 extensions: [
10342 "ktx2"
10343 ]
10344},
10345 "image/naplps": {
10346 source: "iana"
10347},
10348 "image/pjpeg": {
10349 compressible: false
10350},
10351 "image/png": {
10352 source: "iana",
10353 compressible: false,
10354 extensions: [
10355 "png"
10356 ]
10357},
10358 "image/prs.btif": {
10359 source: "iana",
10360 extensions: [
10361 "btif"
10362 ]
10363},
10364 "image/prs.pti": {
10365 source: "iana",
10366 extensions: [
10367 "pti"
10368 ]
10369},
10370 "image/pwg-raster": {
10371 source: "iana"
10372},
10373 "image/sgi": {
10374 source: "apache",
10375 extensions: [
10376 "sgi"
10377 ]
10378},
10379 "image/svg+xml": {
10380 source: "iana",
10381 compressible: true,
10382 extensions: [
10383 "svg",
10384 "svgz"
10385 ]
10386},
10387 "image/t38": {
10388 source: "iana",
10389 extensions: [
10390 "t38"
10391 ]
10392},
10393 "image/tiff": {
10394 source: "iana",
10395 compressible: false,
10396 extensions: [
10397 "tif",
10398 "tiff"
10399 ]
10400},
10401 "image/tiff-fx": {
10402 source: "iana",
10403 extensions: [
10404 "tfx"
10405 ]
10406},
10407 "image/vnd.adobe.photoshop": {
10408 source: "iana",
10409 compressible: true,
10410 extensions: [
10411 "psd"
10412 ]
10413},
10414 "image/vnd.airzip.accelerator.azv": {
10415 source: "iana",
10416 extensions: [
10417 "azv"
10418 ]
10419},
10420 "image/vnd.cns.inf2": {
10421 source: "iana"
10422},
10423 "image/vnd.dece.graphic": {
10424 source: "iana",
10425 extensions: [
10426 "uvi",
10427 "uvvi",
10428 "uvg",
10429 "uvvg"
10430 ]
10431},
10432 "image/vnd.djvu": {
10433 source: "iana",
10434 extensions: [
10435 "djvu",
10436 "djv"
10437 ]
10438},
10439 "image/vnd.dvb.subtitle": {
10440 source: "iana",
10441 extensions: [
10442 "sub"
10443 ]
10444},
10445 "image/vnd.dwg": {
10446 source: "iana",
10447 extensions: [
10448 "dwg"
10449 ]
10450},
10451 "image/vnd.dxf": {
10452 source: "iana",
10453 extensions: [
10454 "dxf"
10455 ]
10456},
10457 "image/vnd.fastbidsheet": {
10458 source: "iana",
10459 extensions: [
10460 "fbs"
10461 ]
10462},
10463 "image/vnd.fpx": {
10464 source: "iana",
10465 extensions: [
10466 "fpx"
10467 ]
10468},
10469 "image/vnd.fst": {
10470 source: "iana",
10471 extensions: [
10472 "fst"
10473 ]
10474},
10475 "image/vnd.fujixerox.edmics-mmr": {
10476 source: "iana",
10477 extensions: [
10478 "mmr"
10479 ]
10480},
10481 "image/vnd.fujixerox.edmics-rlc": {
10482 source: "iana",
10483 extensions: [
10484 "rlc"
10485 ]
10486},
10487 "image/vnd.globalgraphics.pgb": {
10488 source: "iana"
10489},
10490 "image/vnd.microsoft.icon": {
10491 source: "iana",
10492 extensions: [
10493 "ico"
10494 ]
10495},
10496 "image/vnd.mix": {
10497 source: "iana"
10498},
10499 "image/vnd.mozilla.apng": {
10500 source: "iana"
10501},
10502 "image/vnd.ms-dds": {
10503 extensions: [
10504 "dds"
10505 ]
10506},
10507 "image/vnd.ms-modi": {
10508 source: "iana",
10509 extensions: [
10510 "mdi"
10511 ]
10512},
10513 "image/vnd.ms-photo": {
10514 source: "apache",
10515 extensions: [
10516 "wdp"
10517 ]
10518},
10519 "image/vnd.net-fpx": {
10520 source: "iana",
10521 extensions: [
10522 "npx"
10523 ]
10524},
10525 "image/vnd.pco.b16": {
10526 source: "iana",
10527 extensions: [
10528 "b16"
10529 ]
10530},
10531 "image/vnd.radiance": {
10532 source: "iana"
10533},
10534 "image/vnd.sealed.png": {
10535 source: "iana"
10536},
10537 "image/vnd.sealedmedia.softseal.gif": {
10538 source: "iana"
10539},
10540 "image/vnd.sealedmedia.softseal.jpg": {
10541 source: "iana"
10542},
10543 "image/vnd.svf": {
10544 source: "iana"
10545},
10546 "image/vnd.tencent.tap": {
10547 source: "iana",
10548 extensions: [
10549 "tap"
10550 ]
10551},
10552 "image/vnd.valve.source.texture": {
10553 source: "iana",
10554 extensions: [
10555 "vtf"
10556 ]
10557},
10558 "image/vnd.wap.wbmp": {
10559 source: "iana",
10560 extensions: [
10561 "wbmp"
10562 ]
10563},
10564 "image/vnd.xiff": {
10565 source: "iana",
10566 extensions: [
10567 "xif"
10568 ]
10569},
10570 "image/vnd.zbrush.pcx": {
10571 source: "iana",
10572 extensions: [
10573 "pcx"
10574 ]
10575},
10576 "image/webp": {
10577 source: "apache",
10578 extensions: [
10579 "webp"
10580 ]
10581},
10582 "image/wmf": {
10583 source: "iana",
10584 extensions: [
10585 "wmf"
10586 ]
10587},
10588 "image/x-3ds": {
10589 source: "apache",
10590 extensions: [
10591 "3ds"
10592 ]
10593},
10594 "image/x-cmu-raster": {
10595 source: "apache",
10596 extensions: [
10597 "ras"
10598 ]
10599},
10600 "image/x-cmx": {
10601 source: "apache",
10602 extensions: [
10603 "cmx"
10604 ]
10605},
10606 "image/x-freehand": {
10607 source: "apache",
10608 extensions: [
10609 "fh",
10610 "fhc",
10611 "fh4",
10612 "fh5",
10613 "fh7"
10614 ]
10615},
10616 "image/x-icon": {
10617 source: "apache",
10618 compressible: true,
10619 extensions: [
10620 "ico"
10621 ]
10622},
10623 "image/x-jng": {
10624 source: "nginx",
10625 extensions: [
10626 "jng"
10627 ]
10628},
10629 "image/x-mrsid-image": {
10630 source: "apache",
10631 extensions: [
10632 "sid"
10633 ]
10634},
10635 "image/x-ms-bmp": {
10636 source: "nginx",
10637 compressible: true,
10638 extensions: [
10639 "bmp"
10640 ]
10641},
10642 "image/x-pcx": {
10643 source: "apache",
10644 extensions: [
10645 "pcx"
10646 ]
10647},
10648 "image/x-pict": {
10649 source: "apache",
10650 extensions: [
10651 "pic",
10652 "pct"
10653 ]
10654},
10655 "image/x-portable-anymap": {
10656 source: "apache",
10657 extensions: [
10658 "pnm"
10659 ]
10660},
10661 "image/x-portable-bitmap": {
10662 source: "apache",
10663 extensions: [
10664 "pbm"
10665 ]
10666},
10667 "image/x-portable-graymap": {
10668 source: "apache",
10669 extensions: [
10670 "pgm"
10671 ]
10672},
10673 "image/x-portable-pixmap": {
10674 source: "apache",
10675 extensions: [
10676 "ppm"
10677 ]
10678},
10679 "image/x-rgb": {
10680 source: "apache",
10681 extensions: [
10682 "rgb"
10683 ]
10684},
10685 "image/x-tga": {
10686 source: "apache",
10687 extensions: [
10688 "tga"
10689 ]
10690},
10691 "image/x-xbitmap": {
10692 source: "apache",
10693 extensions: [
10694 "xbm"
10695 ]
10696},
10697 "image/x-xcf": {
10698 compressible: false
10699},
10700 "image/x-xpixmap": {
10701 source: "apache",
10702 extensions: [
10703 "xpm"
10704 ]
10705},
10706 "image/x-xwindowdump": {
10707 source: "apache",
10708 extensions: [
10709 "xwd"
10710 ]
10711},
10712 "message/cpim": {
10713 source: "iana"
10714},
10715 "message/delivery-status": {
10716 source: "iana"
10717},
10718 "message/disposition-notification": {
10719 source: "iana",
10720 extensions: [
10721 "disposition-notification"
10722 ]
10723},
10724 "message/external-body": {
10725 source: "iana"
10726},
10727 "message/feedback-report": {
10728 source: "iana"
10729},
10730 "message/global": {
10731 source: "iana",
10732 extensions: [
10733 "u8msg"
10734 ]
10735},
10736 "message/global-delivery-status": {
10737 source: "iana",
10738 extensions: [
10739 "u8dsn"
10740 ]
10741},
10742 "message/global-disposition-notification": {
10743 source: "iana",
10744 extensions: [
10745 "u8mdn"
10746 ]
10747},
10748 "message/global-headers": {
10749 source: "iana",
10750 extensions: [
10751 "u8hdr"
10752 ]
10753},
10754 "message/http": {
10755 source: "iana",
10756 compressible: false
10757},
10758 "message/imdn+xml": {
10759 source: "iana",
10760 compressible: true
10761},
10762 "message/news": {
10763 source: "iana"
10764},
10765 "message/partial": {
10766 source: "iana",
10767 compressible: false
10768},
10769 "message/rfc822": {
10770 source: "iana",
10771 compressible: true,
10772 extensions: [
10773 "eml",
10774 "mime"
10775 ]
10776},
10777 "message/s-http": {
10778 source: "iana"
10779},
10780 "message/sip": {
10781 source: "iana"
10782},
10783 "message/sipfrag": {
10784 source: "iana"
10785},
10786 "message/tracking-status": {
10787 source: "iana"
10788},
10789 "message/vnd.si.simp": {
10790 source: "iana"
10791},
10792 "message/vnd.wfa.wsc": {
10793 source: "iana",
10794 extensions: [
10795 "wsc"
10796 ]
10797},
10798 "model/3mf": {
10799 source: "iana",
10800 extensions: [
10801 "3mf"
10802 ]
10803},
10804 "model/e57": {
10805 source: "iana"
10806},
10807 "model/gltf+json": {
10808 source: "iana",
10809 compressible: true,
10810 extensions: [
10811 "gltf"
10812 ]
10813},
10814 "model/gltf-binary": {
10815 source: "iana",
10816 compressible: true,
10817 extensions: [
10818 "glb"
10819 ]
10820},
10821 "model/iges": {
10822 source: "iana",
10823 compressible: false,
10824 extensions: [
10825 "igs",
10826 "iges"
10827 ]
10828},
10829 "model/mesh": {
10830 source: "iana",
10831 compressible: false,
10832 extensions: [
10833 "msh",
10834 "mesh",
10835 "silo"
10836 ]
10837},
10838 "model/mtl": {
10839 source: "iana",
10840 extensions: [
10841 "mtl"
10842 ]
10843},
10844 "model/obj": {
10845 source: "iana",
10846 extensions: [
10847 "obj"
10848 ]
10849},
10850 "model/stl": {
10851 source: "iana",
10852 extensions: [
10853 "stl"
10854 ]
10855},
10856 "model/vnd.collada+xml": {
10857 source: "iana",
10858 compressible: true,
10859 extensions: [
10860 "dae"
10861 ]
10862},
10863 "model/vnd.dwf": {
10864 source: "iana",
10865 extensions: [
10866 "dwf"
10867 ]
10868},
10869 "model/vnd.flatland.3dml": {
10870 source: "iana"
10871},
10872 "model/vnd.gdl": {
10873 source: "iana",
10874 extensions: [
10875 "gdl"
10876 ]
10877},
10878 "model/vnd.gs-gdl": {
10879 source: "apache"
10880},
10881 "model/vnd.gs.gdl": {
10882 source: "iana"
10883},
10884 "model/vnd.gtw": {
10885 source: "iana",
10886 extensions: [
10887 "gtw"
10888 ]
10889},
10890 "model/vnd.moml+xml": {
10891 source: "iana",
10892 compressible: true
10893},
10894 "model/vnd.mts": {
10895 source: "iana",
10896 extensions: [
10897 "mts"
10898 ]
10899},
10900 "model/vnd.opengex": {
10901 source: "iana",
10902 extensions: [
10903 "ogex"
10904 ]
10905},
10906 "model/vnd.parasolid.transmit.binary": {
10907 source: "iana",
10908 extensions: [
10909 "x_b"
10910 ]
10911},
10912 "model/vnd.parasolid.transmit.text": {
10913 source: "iana",
10914 extensions: [
10915 "x_t"
10916 ]
10917},
10918 "model/vnd.pytha.pyox": {
10919 source: "iana"
10920},
10921 "model/vnd.rosette.annotated-data-model": {
10922 source: "iana"
10923},
10924 "model/vnd.sap.vds": {
10925 source: "iana",
10926 extensions: [
10927 "vds"
10928 ]
10929},
10930 "model/vnd.usdz+zip": {
10931 source: "iana",
10932 compressible: false,
10933 extensions: [
10934 "usdz"
10935 ]
10936},
10937 "model/vnd.valve.source.compiled-map": {
10938 source: "iana",
10939 extensions: [
10940 "bsp"
10941 ]
10942},
10943 "model/vnd.vtu": {
10944 source: "iana",
10945 extensions: [
10946 "vtu"
10947 ]
10948},
10949 "model/vrml": {
10950 source: "iana",
10951 compressible: false,
10952 extensions: [
10953 "wrl",
10954 "vrml"
10955 ]
10956},
10957 "model/x3d+binary": {
10958 source: "apache",
10959 compressible: false,
10960 extensions: [
10961 "x3db",
10962 "x3dbz"
10963 ]
10964},
10965 "model/x3d+fastinfoset": {
10966 source: "iana",
10967 extensions: [
10968 "x3db"
10969 ]
10970},
10971 "model/x3d+vrml": {
10972 source: "apache",
10973 compressible: false,
10974 extensions: [
10975 "x3dv",
10976 "x3dvz"
10977 ]
10978},
10979 "model/x3d+xml": {
10980 source: "iana",
10981 compressible: true,
10982 extensions: [
10983 "x3d",
10984 "x3dz"
10985 ]
10986},
10987 "model/x3d-vrml": {
10988 source: "iana",
10989 extensions: [
10990 "x3dv"
10991 ]
10992},
10993 "multipart/alternative": {
10994 source: "iana",
10995 compressible: false
10996},
10997 "multipart/appledouble": {
10998 source: "iana"
10999},
11000 "multipart/byteranges": {
11001 source: "iana"
11002},
11003 "multipart/digest": {
11004 source: "iana"
11005},
11006 "multipart/encrypted": {
11007 source: "iana",
11008 compressible: false
11009},
11010 "multipart/form-data": {
11011 source: "iana",
11012 compressible: false
11013},
11014 "multipart/header-set": {
11015 source: "iana"
11016},
11017 "multipart/mixed": {
11018 source: "iana"
11019},
11020 "multipart/multilingual": {
11021 source: "iana"
11022},
11023 "multipart/parallel": {
11024 source: "iana"
11025},
11026 "multipart/related": {
11027 source: "iana",
11028 compressible: false
11029},
11030 "multipart/report": {
11031 source: "iana"
11032},
11033 "multipart/signed": {
11034 source: "iana",
11035 compressible: false
11036},
11037 "multipart/vnd.bint.med-plus": {
11038 source: "iana"
11039},
11040 "multipart/voice-message": {
11041 source: "iana"
11042},
11043 "multipart/x-mixed-replace": {
11044 source: "iana"
11045},
11046 "text/1d-interleaved-parityfec": {
11047 source: "iana"
11048},
11049 "text/cache-manifest": {
11050 source: "iana",
11051 compressible: true,
11052 extensions: [
11053 "appcache",
11054 "manifest"
11055 ]
11056},
11057 "text/calendar": {
11058 source: "iana",
11059 extensions: [
11060 "ics",
11061 "ifb"
11062 ]
11063},
11064 "text/calender": {
11065 compressible: true
11066},
11067 "text/cmd": {
11068 compressible: true
11069},
11070 "text/coffeescript": {
11071 extensions: [
11072 "coffee",
11073 "litcoffee"
11074 ]
11075},
11076 "text/cql": {
11077 source: "iana"
11078},
11079 "text/cql-expression": {
11080 source: "iana"
11081},
11082 "text/cql-identifier": {
11083 source: "iana"
11084},
11085 "text/css": {
11086 source: "iana",
11087 charset: "UTF-8",
11088 compressible: true,
11089 extensions: [
11090 "css"
11091 ]
11092},
11093 "text/csv": {
11094 source: "iana",
11095 compressible: true,
11096 extensions: [
11097 "csv"
11098 ]
11099},
11100 "text/csv-schema": {
11101 source: "iana"
11102},
11103 "text/directory": {
11104 source: "iana"
11105},
11106 "text/dns": {
11107 source: "iana"
11108},
11109 "text/ecmascript": {
11110 source: "iana"
11111},
11112 "text/encaprtp": {
11113 source: "iana"
11114},
11115 "text/enriched": {
11116 source: "iana"
11117},
11118 "text/fhirpath": {
11119 source: "iana"
11120},
11121 "text/flexfec": {
11122 source: "iana"
11123},
11124 "text/fwdred": {
11125 source: "iana"
11126},
11127 "text/gff3": {
11128 source: "iana"
11129},
11130 "text/grammar-ref-list": {
11131 source: "iana"
11132},
11133 "text/html": {
11134 source: "iana",
11135 compressible: true,
11136 extensions: [
11137 "html",
11138 "htm",
11139 "shtml"
11140 ]
11141},
11142 "text/jade": {
11143 extensions: [
11144 "jade"
11145 ]
11146},
11147 "text/javascript": {
11148 source: "iana",
11149 compressible: true
11150},
11151 "text/jcr-cnd": {
11152 source: "iana"
11153},
11154 "text/jsx": {
11155 compressible: true,
11156 extensions: [
11157 "jsx"
11158 ]
11159},
11160 "text/less": {
11161 compressible: true,
11162 extensions: [
11163 "less"
11164 ]
11165},
11166 "text/markdown": {
11167 source: "iana",
11168 compressible: true,
11169 extensions: [
11170 "markdown",
11171 "md"
11172 ]
11173},
11174 "text/mathml": {
11175 source: "nginx",
11176 extensions: [
11177 "mml"
11178 ]
11179},
11180 "text/mdx": {
11181 compressible: true,
11182 extensions: [
11183 "mdx"
11184 ]
11185},
11186 "text/mizar": {
11187 source: "iana"
11188},
11189 "text/n3": {
11190 source: "iana",
11191 charset: "UTF-8",
11192 compressible: true,
11193 extensions: [
11194 "n3"
11195 ]
11196},
11197 "text/parameters": {
11198 source: "iana",
11199 charset: "UTF-8"
11200},
11201 "text/parityfec": {
11202 source: "iana"
11203},
11204 "text/plain": {
11205 source: "iana",
11206 compressible: true,
11207 extensions: [
11208 "txt",
11209 "text",
11210 "conf",
11211 "def",
11212 "list",
11213 "log",
11214 "in",
11215 "ini"
11216 ]
11217},
11218 "text/provenance-notation": {
11219 source: "iana",
11220 charset: "UTF-8"
11221},
11222 "text/prs.fallenstein.rst": {
11223 source: "iana"
11224},
11225 "text/prs.lines.tag": {
11226 source: "iana",
11227 extensions: [
11228 "dsc"
11229 ]
11230},
11231 "text/prs.prop.logic": {
11232 source: "iana"
11233},
11234 "text/raptorfec": {
11235 source: "iana"
11236},
11237 "text/red": {
11238 source: "iana"
11239},
11240 "text/rfc822-headers": {
11241 source: "iana"
11242},
11243 "text/richtext": {
11244 source: "iana",
11245 compressible: true,
11246 extensions: [
11247 "rtx"
11248 ]
11249},
11250 "text/rtf": {
11251 source: "iana",
11252 compressible: true,
11253 extensions: [
11254 "rtf"
11255 ]
11256},
11257 "text/rtp-enc-aescm128": {
11258 source: "iana"
11259},
11260 "text/rtploopback": {
11261 source: "iana"
11262},
11263 "text/rtx": {
11264 source: "iana"
11265},
11266 "text/sgml": {
11267 source: "iana",
11268 extensions: [
11269 "sgml",
11270 "sgm"
11271 ]
11272},
11273 "text/shaclc": {
11274 source: "iana"
11275},
11276 "text/shex": {
11277 source: "iana",
11278 extensions: [
11279 "shex"
11280 ]
11281},
11282 "text/slim": {
11283 extensions: [
11284 "slim",
11285 "slm"
11286 ]
11287},
11288 "text/spdx": {
11289 source: "iana",
11290 extensions: [
11291 "spdx"
11292 ]
11293},
11294 "text/strings": {
11295 source: "iana"
11296},
11297 "text/stylus": {
11298 extensions: [
11299 "stylus",
11300 "styl"
11301 ]
11302},
11303 "text/t140": {
11304 source: "iana"
11305},
11306 "text/tab-separated-values": {
11307 source: "iana",
11308 compressible: true,
11309 extensions: [
11310 "tsv"
11311 ]
11312},
11313 "text/troff": {
11314 source: "iana",
11315 extensions: [
11316 "t",
11317 "tr",
11318 "roff",
11319 "man",
11320 "me",
11321 "ms"
11322 ]
11323},
11324 "text/turtle": {
11325 source: "iana",
11326 charset: "UTF-8",
11327 extensions: [
11328 "ttl"
11329 ]
11330},
11331 "text/ulpfec": {
11332 source: "iana"
11333},
11334 "text/uri-list": {
11335 source: "iana",
11336 compressible: true,
11337 extensions: [
11338 "uri",
11339 "uris",
11340 "urls"
11341 ]
11342},
11343 "text/vcard": {
11344 source: "iana",
11345 compressible: true,
11346 extensions: [
11347 "vcard"
11348 ]
11349},
11350 "text/vnd.a": {
11351 source: "iana"
11352},
11353 "text/vnd.abc": {
11354 source: "iana"
11355},
11356 "text/vnd.ascii-art": {
11357 source: "iana"
11358},
11359 "text/vnd.curl": {
11360 source: "iana",
11361 extensions: [
11362 "curl"
11363 ]
11364},
11365 "text/vnd.curl.dcurl": {
11366 source: "apache",
11367 extensions: [
11368 "dcurl"
11369 ]
11370},
11371 "text/vnd.curl.mcurl": {
11372 source: "apache",
11373 extensions: [
11374 "mcurl"
11375 ]
11376},
11377 "text/vnd.curl.scurl": {
11378 source: "apache",
11379 extensions: [
11380 "scurl"
11381 ]
11382},
11383 "text/vnd.debian.copyright": {
11384 source: "iana",
11385 charset: "UTF-8"
11386},
11387 "text/vnd.dmclientscript": {
11388 source: "iana"
11389},
11390 "text/vnd.dvb.subtitle": {
11391 source: "iana",
11392 extensions: [
11393 "sub"
11394 ]
11395},
11396 "text/vnd.esmertec.theme-descriptor": {
11397 source: "iana",
11398 charset: "UTF-8"
11399},
11400 "text/vnd.ficlab.flt": {
11401 source: "iana"
11402},
11403 "text/vnd.fly": {
11404 source: "iana",
11405 extensions: [
11406 "fly"
11407 ]
11408},
11409 "text/vnd.fmi.flexstor": {
11410 source: "iana",
11411 extensions: [
11412 "flx"
11413 ]
11414},
11415 "text/vnd.gml": {
11416 source: "iana"
11417},
11418 "text/vnd.graphviz": {
11419 source: "iana",
11420 extensions: [
11421 "gv"
11422 ]
11423},
11424 "text/vnd.hans": {
11425 source: "iana"
11426},
11427 "text/vnd.hgl": {
11428 source: "iana"
11429},
11430 "text/vnd.in3d.3dml": {
11431 source: "iana",
11432 extensions: [
11433 "3dml"
11434 ]
11435},
11436 "text/vnd.in3d.spot": {
11437 source: "iana",
11438 extensions: [
11439 "spot"
11440 ]
11441},
11442 "text/vnd.iptc.newsml": {
11443 source: "iana"
11444},
11445 "text/vnd.iptc.nitf": {
11446 source: "iana"
11447},
11448 "text/vnd.latex-z": {
11449 source: "iana"
11450},
11451 "text/vnd.motorola.reflex": {
11452 source: "iana"
11453},
11454 "text/vnd.ms-mediapackage": {
11455 source: "iana"
11456},
11457 "text/vnd.net2phone.commcenter.command": {
11458 source: "iana"
11459},
11460 "text/vnd.radisys.msml-basic-layout": {
11461 source: "iana"
11462},
11463 "text/vnd.senx.warpscript": {
11464 source: "iana"
11465},
11466 "text/vnd.si.uricatalogue": {
11467 source: "iana"
11468},
11469 "text/vnd.sosi": {
11470 source: "iana"
11471},
11472 "text/vnd.sun.j2me.app-descriptor": {
11473 source: "iana",
11474 charset: "UTF-8",
11475 extensions: [
11476 "jad"
11477 ]
11478},
11479 "text/vnd.trolltech.linguist": {
11480 source: "iana",
11481 charset: "UTF-8"
11482},
11483 "text/vnd.wap.si": {
11484 source: "iana"
11485},
11486 "text/vnd.wap.sl": {
11487 source: "iana"
11488},
11489 "text/vnd.wap.wml": {
11490 source: "iana",
11491 extensions: [
11492 "wml"
11493 ]
11494},
11495 "text/vnd.wap.wmlscript": {
11496 source: "iana",
11497 extensions: [
11498 "wmls"
11499 ]
11500},
11501 "text/vtt": {
11502 source: "iana",
11503 charset: "UTF-8",
11504 compressible: true,
11505 extensions: [
11506 "vtt"
11507 ]
11508},
11509 "text/x-asm": {
11510 source: "apache",
11511 extensions: [
11512 "s",
11513 "asm"
11514 ]
11515},
11516 "text/x-c": {
11517 source: "apache",
11518 extensions: [
11519 "c",
11520 "cc",
11521 "cxx",
11522 "cpp",
11523 "h",
11524 "hh",
11525 "dic"
11526 ]
11527},
11528 "text/x-component": {
11529 source: "nginx",
11530 extensions: [
11531 "htc"
11532 ]
11533},
11534 "text/x-fortran": {
11535 source: "apache",
11536 extensions: [
11537 "f",
11538 "for",
11539 "f77",
11540 "f90"
11541 ]
11542},
11543 "text/x-gwt-rpc": {
11544 compressible: true
11545},
11546 "text/x-handlebars-template": {
11547 extensions: [
11548 "hbs"
11549 ]
11550},
11551 "text/x-java-source": {
11552 source: "apache",
11553 extensions: [
11554 "java"
11555 ]
11556},
11557 "text/x-jquery-tmpl": {
11558 compressible: true
11559},
11560 "text/x-lua": {
11561 extensions: [
11562 "lua"
11563 ]
11564},
11565 "text/x-markdown": {
11566 compressible: true,
11567 extensions: [
11568 "mkd"
11569 ]
11570},
11571 "text/x-nfo": {
11572 source: "apache",
11573 extensions: [
11574 "nfo"
11575 ]
11576},
11577 "text/x-opml": {
11578 source: "apache",
11579 extensions: [
11580 "opml"
11581 ]
11582},
11583 "text/x-org": {
11584 compressible: true,
11585 extensions: [
11586 "org"
11587 ]
11588},
11589 "text/x-pascal": {
11590 source: "apache",
11591 extensions: [
11592 "p",
11593 "pas"
11594 ]
11595},
11596 "text/x-processing": {
11597 compressible: true,
11598 extensions: [
11599 "pde"
11600 ]
11601},
11602 "text/x-sass": {
11603 extensions: [
11604 "sass"
11605 ]
11606},
11607 "text/x-scss": {
11608 extensions: [
11609 "scss"
11610 ]
11611},
11612 "text/x-setext": {
11613 source: "apache",
11614 extensions: [
11615 "etx"
11616 ]
11617},
11618 "text/x-sfv": {
11619 source: "apache",
11620 extensions: [
11621 "sfv"
11622 ]
11623},
11624 "text/x-suse-ymp": {
11625 compressible: true,
11626 extensions: [
11627 "ymp"
11628 ]
11629},
11630 "text/x-uuencode": {
11631 source: "apache",
11632 extensions: [
11633 "uu"
11634 ]
11635},
11636 "text/x-vcalendar": {
11637 source: "apache",
11638 extensions: [
11639 "vcs"
11640 ]
11641},
11642 "text/x-vcard": {
11643 source: "apache",
11644 extensions: [
11645 "vcf"
11646 ]
11647},
11648 "text/xml": {
11649 source: "iana",
11650 compressible: true,
11651 extensions: [
11652 "xml"
11653 ]
11654},
11655 "text/xml-external-parsed-entity": {
11656 source: "iana"
11657},
11658 "text/yaml": {
11659 compressible: true,
11660 extensions: [
11661 "yaml",
11662 "yml"
11663 ]
11664},
11665 "video/1d-interleaved-parityfec": {
11666 source: "iana"
11667},
11668 "video/3gpp": {
11669 source: "iana",
11670 extensions: [
11671 "3gp",
11672 "3gpp"
11673 ]
11674},
11675 "video/3gpp-tt": {
11676 source: "iana"
11677},
11678 "video/3gpp2": {
11679 source: "iana",
11680 extensions: [
11681 "3g2"
11682 ]
11683},
11684 "video/av1": {
11685 source: "iana"
11686},
11687 "video/bmpeg": {
11688 source: "iana"
11689},
11690 "video/bt656": {
11691 source: "iana"
11692},
11693 "video/celb": {
11694 source: "iana"
11695},
11696 "video/dv": {
11697 source: "iana"
11698},
11699 "video/encaprtp": {
11700 source: "iana"
11701},
11702 "video/ffv1": {
11703 source: "iana"
11704},
11705 "video/flexfec": {
11706 source: "iana"
11707},
11708 "video/h261": {
11709 source: "iana",
11710 extensions: [
11711 "h261"
11712 ]
11713},
11714 "video/h263": {
11715 source: "iana",
11716 extensions: [
11717 "h263"
11718 ]
11719},
11720 "video/h263-1998": {
11721 source: "iana"
11722},
11723 "video/h263-2000": {
11724 source: "iana"
11725},
11726 "video/h264": {
11727 source: "iana",
11728 extensions: [
11729 "h264"
11730 ]
11731},
11732 "video/h264-rcdo": {
11733 source: "iana"
11734},
11735 "video/h264-svc": {
11736 source: "iana"
11737},
11738 "video/h265": {
11739 source: "iana"
11740},
11741 "video/iso.segment": {
11742 source: "iana",
11743 extensions: [
11744 "m4s"
11745 ]
11746},
11747 "video/jpeg": {
11748 source: "iana",
11749 extensions: [
11750 "jpgv"
11751 ]
11752},
11753 "video/jpeg2000": {
11754 source: "iana"
11755},
11756 "video/jpm": {
11757 source: "apache",
11758 extensions: [
11759 "jpm",
11760 "jpgm"
11761 ]
11762},
11763 "video/mj2": {
11764 source: "iana",
11765 extensions: [
11766 "mj2",
11767 "mjp2"
11768 ]
11769},
11770 "video/mp1s": {
11771 source: "iana"
11772},
11773 "video/mp2p": {
11774 source: "iana"
11775},
11776 "video/mp2t": {
11777 source: "iana",
11778 extensions: [
11779 "ts"
11780 ]
11781},
11782 "video/mp4": {
11783 source: "iana",
11784 compressible: false,
11785 extensions: [
11786 "mp4",
11787 "mp4v",
11788 "mpg4"
11789 ]
11790},
11791 "video/mp4v-es": {
11792 source: "iana"
11793},
11794 "video/mpeg": {
11795 source: "iana",
11796 compressible: false,
11797 extensions: [
11798 "mpeg",
11799 "mpg",
11800 "mpe",
11801 "m1v",
11802 "m2v"
11803 ]
11804},
11805 "video/mpeg4-generic": {
11806 source: "iana"
11807},
11808 "video/mpv": {
11809 source: "iana"
11810},
11811 "video/nv": {
11812 source: "iana"
11813},
11814 "video/ogg": {
11815 source: "iana",
11816 compressible: false,
11817 extensions: [
11818 "ogv"
11819 ]
11820},
11821 "video/parityfec": {
11822 source: "iana"
11823},
11824 "video/pointer": {
11825 source: "iana"
11826},
11827 "video/quicktime": {
11828 source: "iana",
11829 compressible: false,
11830 extensions: [
11831 "qt",
11832 "mov"
11833 ]
11834},
11835 "video/raptorfec": {
11836 source: "iana"
11837},
11838 "video/raw": {
11839 source: "iana"
11840},
11841 "video/rtp-enc-aescm128": {
11842 source: "iana"
11843},
11844 "video/rtploopback": {
11845 source: "iana"
11846},
11847 "video/rtx": {
11848 source: "iana"
11849},
11850 "video/scip": {
11851 source: "iana"
11852},
11853 "video/smpte291": {
11854 source: "iana"
11855},
11856 "video/smpte292m": {
11857 source: "iana"
11858},
11859 "video/ulpfec": {
11860 source: "iana"
11861},
11862 "video/vc1": {
11863 source: "iana"
11864},
11865 "video/vc2": {
11866 source: "iana"
11867},
11868 "video/vnd.cctv": {
11869 source: "iana"
11870},
11871 "video/vnd.dece.hd": {
11872 source: "iana",
11873 extensions: [
11874 "uvh",
11875 "uvvh"
11876 ]
11877},
11878 "video/vnd.dece.mobile": {
11879 source: "iana",
11880 extensions: [
11881 "uvm",
11882 "uvvm"
11883 ]
11884},
11885 "video/vnd.dece.mp4": {
11886 source: "iana"
11887},
11888 "video/vnd.dece.pd": {
11889 source: "iana",
11890 extensions: [
11891 "uvp",
11892 "uvvp"
11893 ]
11894},
11895 "video/vnd.dece.sd": {
11896 source: "iana",
11897 extensions: [
11898 "uvs",
11899 "uvvs"
11900 ]
11901},
11902 "video/vnd.dece.video": {
11903 source: "iana",
11904 extensions: [
11905 "uvv",
11906 "uvvv"
11907 ]
11908},
11909 "video/vnd.directv.mpeg": {
11910 source: "iana"
11911},
11912 "video/vnd.directv.mpeg-tts": {
11913 source: "iana"
11914},
11915 "video/vnd.dlna.mpeg-tts": {
11916 source: "iana"
11917},
11918 "video/vnd.dvb.file": {
11919 source: "iana",
11920 extensions: [
11921 "dvb"
11922 ]
11923},
11924 "video/vnd.fvt": {
11925 source: "iana",
11926 extensions: [
11927 "fvt"
11928 ]
11929},
11930 "video/vnd.hns.video": {
11931 source: "iana"
11932},
11933 "video/vnd.iptvforum.1dparityfec-1010": {
11934 source: "iana"
11935},
11936 "video/vnd.iptvforum.1dparityfec-2005": {
11937 source: "iana"
11938},
11939 "video/vnd.iptvforum.2dparityfec-1010": {
11940 source: "iana"
11941},
11942 "video/vnd.iptvforum.2dparityfec-2005": {
11943 source: "iana"
11944},
11945 "video/vnd.iptvforum.ttsavc": {
11946 source: "iana"
11947},
11948 "video/vnd.iptvforum.ttsmpeg2": {
11949 source: "iana"
11950},
11951 "video/vnd.motorola.video": {
11952 source: "iana"
11953},
11954 "video/vnd.motorola.videop": {
11955 source: "iana"
11956},
11957 "video/vnd.mpegurl": {
11958 source: "iana",
11959 extensions: [
11960 "mxu",
11961 "m4u"
11962 ]
11963},
11964 "video/vnd.ms-playready.media.pyv": {
11965 source: "iana",
11966 extensions: [
11967 "pyv"
11968 ]
11969},
11970 "video/vnd.nokia.interleaved-multimedia": {
11971 source: "iana"
11972},
11973 "video/vnd.nokia.mp4vr": {
11974 source: "iana"
11975},
11976 "video/vnd.nokia.videovoip": {
11977 source: "iana"
11978},
11979 "video/vnd.objectvideo": {
11980 source: "iana"
11981},
11982 "video/vnd.radgamettools.bink": {
11983 source: "iana"
11984},
11985 "video/vnd.radgamettools.smacker": {
11986 source: "iana"
11987},
11988 "video/vnd.sealed.mpeg1": {
11989 source: "iana"
11990},
11991 "video/vnd.sealed.mpeg4": {
11992 source: "iana"
11993},
11994 "video/vnd.sealed.swf": {
11995 source: "iana"
11996},
11997 "video/vnd.sealedmedia.softseal.mov": {
11998 source: "iana"
11999},
12000 "video/vnd.uvvu.mp4": {
12001 source: "iana",
12002 extensions: [
12003 "uvu",
12004 "uvvu"
12005 ]
12006},
12007 "video/vnd.vivo": {
12008 source: "iana",
12009 extensions: [
12010 "viv"
12011 ]
12012},
12013 "video/vnd.youtube.yt": {
12014 source: "iana"
12015},
12016 "video/vp8": {
12017 source: "iana"
12018},
12019 "video/webm": {
12020 source: "apache",
12021 compressible: false,
12022 extensions: [
12023 "webm"
12024 ]
12025},
12026 "video/x-f4v": {
12027 source: "apache",
12028 extensions: [
12029 "f4v"
12030 ]
12031},
12032 "video/x-fli": {
12033 source: "apache",
12034 extensions: [
12035 "fli"
12036 ]
12037},
12038 "video/x-flv": {
12039 source: "apache",
12040 compressible: false,
12041 extensions: [
12042 "flv"
12043 ]
12044},
12045 "video/x-m4v": {
12046 source: "apache",
12047 extensions: [
12048 "m4v"
12049 ]
12050},
12051 "video/x-matroska": {
12052 source: "apache",
12053 compressible: false,
12054 extensions: [
12055 "mkv",
12056 "mk3d",
12057 "mks"
12058 ]
12059},
12060 "video/x-mng": {
12061 source: "apache",
12062 extensions: [
12063 "mng"
12064 ]
12065},
12066 "video/x-ms-asf": {
12067 source: "apache",
12068 extensions: [
12069 "asf",
12070 "asx"
12071 ]
12072},
12073 "video/x-ms-vob": {
12074 source: "apache",
12075 extensions: [
12076 "vob"
12077 ]
12078},
12079 "video/x-ms-wm": {
12080 source: "apache",
12081 extensions: [
12082 "wm"
12083 ]
12084},
12085 "video/x-ms-wmv": {
12086 source: "apache",
12087 compressible: false,
12088 extensions: [
12089 "wmv"
12090 ]
12091},
12092 "video/x-ms-wmx": {
12093 source: "apache",
12094 extensions: [
12095 "wmx"
12096 ]
12097},
12098 "video/x-ms-wvx": {
12099 source: "apache",
12100 extensions: [
12101 "wvx"
12102 ]
12103},
12104 "video/x-msvideo": {
12105 source: "apache",
12106 extensions: [
12107 "avi"
12108 ]
12109},
12110 "video/x-sgi-movie": {
12111 source: "apache",
12112 extensions: [
12113 "movie"
12114 ]
12115},
12116 "video/x-smv": {
12117 source: "apache",
12118 extensions: [
12119 "smv"
12120 ]
12121},
12122 "x-conference/x-cooltalk": {
12123 source: "apache",
12124 extensions: [
12125 "ice"
12126 ]
12127},
12128 "x-shader/x-fragment": {
12129 compressible: true
12130},
12131 "x-shader/x-vertex": {
12132 compressible: true
12133}
12134};
12135
12136/*!
12137 * mime-db
12138 * Copyright(c) 2014 Jonathan Ong
12139 * MIT Licensed
12140 */
12141
12142/**
12143 * Module exports.
12144 */
12145
12146var mimeDb = require$$0;
12147
12148/*!
12149 * mime-types
12150 * Copyright(c) 2014 Jonathan Ong
12151 * Copyright(c) 2015 Douglas Christopher Wilson
12152 * MIT Licensed
12153 */
12154
12155(function (exports) {
12156
12157/**
12158 * Module dependencies.
12159 * @private
12160 */
12161
12162var db = mimeDb;
12163var extname = path__default.extname;
12164
12165/**
12166 * Module variables.
12167 * @private
12168 */
12169
12170var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/;
12171var TEXT_TYPE_REGEXP = /^text\//i;
12172
12173/**
12174 * Module exports.
12175 * @public
12176 */
12177
12178exports.charset = charset;
12179exports.charsets = { lookup: charset };
12180exports.contentType = contentType;
12181exports.extension = extension;
12182exports.extensions = Object.create(null);
12183exports.lookup = lookup;
12184exports.types = Object.create(null);
12185
12186// Populate the extensions/types maps
12187populateMaps(exports.extensions, exports.types);
12188
12189/**
12190 * Get the default charset for a MIME type.
12191 *
12192 * @param {string} type
12193 * @return {boolean|string}
12194 */
12195
12196function charset (type) {
12197 if (!type || typeof type !== 'string') {
12198 return false
12199 }
12200
12201 // TODO: use media-typer
12202 var match = EXTRACT_TYPE_REGEXP.exec(type);
12203 var mime = match && db[match[1].toLowerCase()];
12204
12205 if (mime && mime.charset) {
12206 return mime.charset
12207 }
12208
12209 // default text/* to utf-8
12210 if (match && TEXT_TYPE_REGEXP.test(match[1])) {
12211 return 'UTF-8'
12212 }
12213
12214 return false
12215}
12216
12217/**
12218 * Create a full Content-Type header given a MIME type or extension.
12219 *
12220 * @param {string} str
12221 * @return {boolean|string}
12222 */
12223
12224function contentType (str) {
12225 // TODO: should this even be in this module?
12226 if (!str || typeof str !== 'string') {
12227 return false
12228 }
12229
12230 var mime = str.indexOf('/') === -1
12231 ? exports.lookup(str)
12232 : str;
12233
12234 if (!mime) {
12235 return false
12236 }
12237
12238 // TODO: use content-type or other module
12239 if (mime.indexOf('charset') === -1) {
12240 var charset = exports.charset(mime);
12241 if (charset) mime += '; charset=' + charset.toLowerCase();
12242 }
12243
12244 return mime
12245}
12246
12247/**
12248 * Get the default extension for a MIME type.
12249 *
12250 * @param {string} type
12251 * @return {boolean|string}
12252 */
12253
12254function extension (type) {
12255 if (!type || typeof type !== 'string') {
12256 return false
12257 }
12258
12259 // TODO: use media-typer
12260 var match = EXTRACT_TYPE_REGEXP.exec(type);
12261
12262 // get extensions
12263 var exts = match && exports.extensions[match[1].toLowerCase()];
12264
12265 if (!exts || !exts.length) {
12266 return false
12267 }
12268
12269 return exts[0]
12270}
12271
12272/**
12273 * Lookup the MIME type for a file path/extension.
12274 *
12275 * @param {string} path
12276 * @return {boolean|string}
12277 */
12278
12279function lookup (path) {
12280 if (!path || typeof path !== 'string') {
12281 return false
12282 }
12283
12284 // get the extension ("ext" or ".ext" or full path)
12285 var extension = extname('x.' + path)
12286 .toLowerCase()
12287 .substr(1);
12288
12289 if (!extension) {
12290 return false
12291 }
12292
12293 return exports.types[extension] || false
12294}
12295
12296/**
12297 * Populate the extensions and types maps.
12298 * @private
12299 */
12300
12301function populateMaps (extensions, types) {
12302 // source preference (least -> most)
12303 var preference = ['nginx', 'apache', undefined, 'iana'];
12304
12305 Object.keys(db).forEach(function forEachMimeType (type) {
12306 var mime = db[type];
12307 var exts = mime.extensions;
12308
12309 if (!exts || !exts.length) {
12310 return
12311 }
12312
12313 // mime -> extensions
12314 extensions[type] = exts;
12315
12316 // extension -> mime
12317 for (var i = 0; i < exts.length; i++) {
12318 var extension = exts[i];
12319
12320 if (types[extension]) {
12321 var from = preference.indexOf(db[types[extension]].source);
12322 var to = preference.indexOf(mime.source);
12323
12324 if (types[extension] !== 'application/octet-stream' &&
12325 (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {
12326 // skip the remapping
12327 continue
12328 }
12329 }
12330
12331 // set the extension -> mime
12332 types[extension] = type;
12333 }
12334 });
12335}
12336}(mimeTypes));
12337
12338/*!
12339 * accepts
12340 * Copyright(c) 2014 Jonathan Ong
12341 * Copyright(c) 2015 Douglas Christopher Wilson
12342 * MIT Licensed
12343 */
12344
12345/**
12346 * Module dependencies.
12347 * @private
12348 */
12349
12350var Negotiator = negotiator.exports;
12351var mime = mimeTypes;
12352
12353/**
12354 * Module exports.
12355 * @public
12356 */
12357
12358var accepts$1 = Accepts;
12359
12360/**
12361 * Create a new Accepts object for the given req.
12362 *
12363 * @param {object} req
12364 * @public
12365 */
12366
12367function Accepts (req) {
12368 if (!(this instanceof Accepts)) {
12369 return new Accepts(req)
12370 }
12371
12372 this.headers = req.headers;
12373 this.negotiator = new Negotiator(req);
12374}
12375
12376/**
12377 * Check if the given `type(s)` is acceptable, returning
12378 * the best match when true, otherwise `undefined`, in which
12379 * case you should respond with 406 "Not Acceptable".
12380 *
12381 * The `type` value may be a single mime type string
12382 * such as "application/json", the extension name
12383 * such as "json" or an array `["json", "html", "text/plain"]`. When a list
12384 * or array is given the _best_ match, if any is returned.
12385 *
12386 * Examples:
12387 *
12388 * // Accept: text/html
12389 * this.types('html');
12390 * // => "html"
12391 *
12392 * // Accept: text/*, application/json
12393 * this.types('html');
12394 * // => "html"
12395 * this.types('text/html');
12396 * // => "text/html"
12397 * this.types('json', 'text');
12398 * // => "json"
12399 * this.types('application/json');
12400 * // => "application/json"
12401 *
12402 * // Accept: text/*, application/json
12403 * this.types('image/png');
12404 * this.types('png');
12405 * // => undefined
12406 *
12407 * // Accept: text/*;q=.5, application/json
12408 * this.types(['html', 'json']);
12409 * this.types('html', 'json');
12410 * // => "json"
12411 *
12412 * @param {String|Array} types...
12413 * @return {String|Array|Boolean}
12414 * @public
12415 */
12416
12417Accepts.prototype.type =
12418Accepts.prototype.types = function (types_) {
12419 var types = types_;
12420
12421 // support flattened arguments
12422 if (types && !Array.isArray(types)) {
12423 types = new Array(arguments.length);
12424 for (var i = 0; i < types.length; i++) {
12425 types[i] = arguments[i];
12426 }
12427 }
12428
12429 // no types, return all requested types
12430 if (!types || types.length === 0) {
12431 return this.negotiator.mediaTypes()
12432 }
12433
12434 // no accept header, return first given type
12435 if (!this.headers.accept) {
12436 return types[0]
12437 }
12438
12439 var mimes = types.map(extToMime);
12440 var accepts = this.negotiator.mediaTypes(mimes.filter(validMime));
12441 var first = accepts[0];
12442
12443 return first
12444 ? types[mimes.indexOf(first)]
12445 : false
12446};
12447
12448/**
12449 * Return accepted encodings or best fit based on `encodings`.
12450 *
12451 * Given `Accept-Encoding: gzip, deflate`
12452 * an array sorted by quality is returned:
12453 *
12454 * ['gzip', 'deflate']
12455 *
12456 * @param {String|Array} encodings...
12457 * @return {String|Array}
12458 * @public
12459 */
12460
12461Accepts.prototype.encoding =
12462Accepts.prototype.encodings = function (encodings_) {
12463 var encodings = encodings_;
12464
12465 // support flattened arguments
12466 if (encodings && !Array.isArray(encodings)) {
12467 encodings = new Array(arguments.length);
12468 for (var i = 0; i < encodings.length; i++) {
12469 encodings[i] = arguments[i];
12470 }
12471 }
12472
12473 // no encodings, return all requested encodings
12474 if (!encodings || encodings.length === 0) {
12475 return this.negotiator.encodings()
12476 }
12477
12478 return this.negotiator.encodings(encodings)[0] || false
12479};
12480
12481/**
12482 * Return accepted charsets or best fit based on `charsets`.
12483 *
12484 * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5`
12485 * an array sorted by quality is returned:
12486 *
12487 * ['utf-8', 'utf-7', 'iso-8859-1']
12488 *
12489 * @param {String|Array} charsets...
12490 * @return {String|Array}
12491 * @public
12492 */
12493
12494Accepts.prototype.charset =
12495Accepts.prototype.charsets = function (charsets_) {
12496 var charsets = charsets_;
12497
12498 // support flattened arguments
12499 if (charsets && !Array.isArray(charsets)) {
12500 charsets = new Array(arguments.length);
12501 for (var i = 0; i < charsets.length; i++) {
12502 charsets[i] = arguments[i];
12503 }
12504 }
12505
12506 // no charsets, return all requested charsets
12507 if (!charsets || charsets.length === 0) {
12508 return this.negotiator.charsets()
12509 }
12510
12511 return this.negotiator.charsets(charsets)[0] || false
12512};
12513
12514/**
12515 * Return accepted languages or best fit based on `langs`.
12516 *
12517 * Given `Accept-Language: en;q=0.8, es, pt`
12518 * an array sorted by quality is returned:
12519 *
12520 * ['es', 'pt', 'en']
12521 *
12522 * @param {String|Array} langs...
12523 * @return {Array|String}
12524 * @public
12525 */
12526
12527Accepts.prototype.lang =
12528Accepts.prototype.langs =
12529Accepts.prototype.language =
12530Accepts.prototype.languages = function (languages_) {
12531 var languages = languages_;
12532
12533 // support flattened arguments
12534 if (languages && !Array.isArray(languages)) {
12535 languages = new Array(arguments.length);
12536 for (var i = 0; i < languages.length; i++) {
12537 languages[i] = arguments[i];
12538 }
12539 }
12540
12541 // no languages, return all requested languages
12542 if (!languages || languages.length === 0) {
12543 return this.negotiator.languages()
12544 }
12545
12546 return this.negotiator.languages(languages)[0] || false
12547};
12548
12549/**
12550 * Convert extnames to mime.
12551 *
12552 * @param {String} type
12553 * @return {String}
12554 * @private
12555 */
12556
12557function extToMime (type) {
12558 return type.indexOf('/') === -1
12559 ? mime.lookup(type)
12560 : type
12561}
12562
12563/**
12564 * Check if mime is valid.
12565 *
12566 * @param {String} type
12567 * @return {String}
12568 * @private
12569 */
12570
12571function validMime (type) {
12572 return typeof type === 'string'
12573}
12574
12575var bytes$2 = {exports: {}};
12576
12577/*!
12578 * bytes
12579 * Copyright(c) 2012-2014 TJ Holowaychuk
12580 * Copyright(c) 2015 Jed Watson
12581 * MIT Licensed
12582 */
12583
12584/**
12585 * Module exports.
12586 * @public
12587 */
12588
12589bytes$2.exports = bytes$1;
12590bytes$2.exports.format = format;
12591bytes$2.exports.parse = parse;
12592
12593/**
12594 * Module variables.
12595 * @private
12596 */
12597
12598var formatThousandsRegExp = /\B(?=(\d{3})+(?!\d))/g;
12599
12600var formatDecimalsRegExp = /(?:\.0*|(\.[^0]+)0+)$/;
12601
12602var map = {
12603 b: 1,
12604 kb: 1 << 10,
12605 mb: 1 << 20,
12606 gb: 1 << 30,
12607 tb: ((1 << 30) * 1024)
12608};
12609
12610var parseRegExp = /^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb)$/i;
12611
12612/**
12613 * Convert the given value in bytes into a string or parse to string to an integer in bytes.
12614 *
12615 * @param {string|number} value
12616 * @param {{
12617 * case: [string],
12618 * decimalPlaces: [number]
12619 * fixedDecimals: [boolean]
12620 * thousandsSeparator: [string]
12621 * unitSeparator: [string]
12622 * }} [options] bytes options.
12623 *
12624 * @returns {string|number|null}
12625 */
12626
12627function bytes$1(value, options) {
12628 if (typeof value === 'string') {
12629 return parse(value);
12630 }
12631
12632 if (typeof value === 'number') {
12633 return format(value, options);
12634 }
12635
12636 return null;
12637}
12638
12639/**
12640 * Format the given value in bytes into a string.
12641 *
12642 * If the value is negative, it is kept as such. If it is a float,
12643 * it is rounded.
12644 *
12645 * @param {number} value
12646 * @param {object} [options]
12647 * @param {number} [options.decimalPlaces=2]
12648 * @param {number} [options.fixedDecimals=false]
12649 * @param {string} [options.thousandsSeparator=]
12650 * @param {string} [options.unit=]
12651 * @param {string} [options.unitSeparator=]
12652 *
12653 * @returns {string|null}
12654 * @public
12655 */
12656
12657function format(value, options) {
12658 if (!Number.isFinite(value)) {
12659 return null;
12660 }
12661
12662 var mag = Math.abs(value);
12663 var thousandsSeparator = (options && options.thousandsSeparator) || '';
12664 var unitSeparator = (options && options.unitSeparator) || '';
12665 var decimalPlaces = (options && options.decimalPlaces !== undefined) ? options.decimalPlaces : 2;
12666 var fixedDecimals = Boolean(options && options.fixedDecimals);
12667 var unit = (options && options.unit) || '';
12668
12669 if (!unit || !map[unit.toLowerCase()]) {
12670 if (mag >= map.tb) {
12671 unit = 'TB';
12672 } else if (mag >= map.gb) {
12673 unit = 'GB';
12674 } else if (mag >= map.mb) {
12675 unit = 'MB';
12676 } else if (mag >= map.kb) {
12677 unit = 'KB';
12678 } else {
12679 unit = 'B';
12680 }
12681 }
12682
12683 var val = value / map[unit.toLowerCase()];
12684 var str = val.toFixed(decimalPlaces);
12685
12686 if (!fixedDecimals) {
12687 str = str.replace(formatDecimalsRegExp, '$1');
12688 }
12689
12690 if (thousandsSeparator) {
12691 str = str.replace(formatThousandsRegExp, thousandsSeparator);
12692 }
12693
12694 return str + unitSeparator + unit;
12695}
12696
12697/**
12698 * Parse the string value into an integer in bytes.
12699 *
12700 * If no unit is given, it is assumed the value is in bytes.
12701 *
12702 * @param {number|string} val
12703 *
12704 * @returns {number|null}
12705 * @public
12706 */
12707
12708function parse(val) {
12709 if (typeof val === 'number' && !isNaN(val)) {
12710 return val;
12711 }
12712
12713 if (typeof val !== 'string') {
12714 return null;
12715 }
12716
12717 // Test if the string passed is valid
12718 var results = parseRegExp.exec(val);
12719 var floatValue;
12720 var unit = 'b';
12721
12722 if (!results) {
12723 // Nothing could be extracted from the given string
12724 floatValue = parseInt(val, 10);
12725 unit = 'b';
12726 } else {
12727 // Retrieve the value and the unit
12728 floatValue = parseFloat(results[1]);
12729 unit = results[4].toLowerCase();
12730 }
12731
12732 return Math.floor(map[unit] * floatValue);
12733}
12734
12735/*!
12736 * compressible
12737 * Copyright(c) 2013 Jonathan Ong
12738 * Copyright(c) 2014 Jeremiah Senkpiel
12739 * Copyright(c) 2015 Douglas Christopher Wilson
12740 * MIT Licensed
12741 */
12742
12743/**
12744 * Module dependencies.
12745 * @private
12746 */
12747
12748var db = mimeDb;
12749
12750/**
12751 * Module variables.
12752 * @private
12753 */
12754
12755var COMPRESSIBLE_TYPE_REGEXP = /^text\/|\+(?:json|text|xml)$/i;
12756var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/;
12757
12758/**
12759 * Module exports.
12760 * @public
12761 */
12762
12763var compressible_1 = compressible$1;
12764
12765/**
12766 * Checks if a type is compressible.
12767 *
12768 * @param {string} type
12769 * @return {Boolean} compressible
12770 * @public
12771 */
12772
12773function compressible$1 (type) {
12774 if (!type || typeof type !== 'string') {
12775 return false
12776 }
12777
12778 // strip parameters
12779 var match = EXTRACT_TYPE_REGEXP.exec(type);
12780 var mime = match && match[1].toLowerCase();
12781 var data = db[mime];
12782
12783 // return database information
12784 if (data && data.compressible !== undefined) {
12785 return data.compressible
12786 }
12787
12788 // fallback to regexp or unknown
12789 return COMPRESSIBLE_TYPE_REGEXP.test(mime) || undefined
12790}
12791
12792var src = {exports: {}};
12793
12794var browser = {exports: {}};
12795
12796var debug$1 = {exports: {}};
12797
12798(function (module, exports) {
12799/**
12800 * This is the common logic for both the Node.js and web browser
12801 * implementations of `debug()`.
12802 *
12803 * Expose `debug()` as the module.
12804 */
12805
12806exports = module.exports = createDebug.debug = createDebug['default'] = createDebug;
12807exports.coerce = coerce;
12808exports.disable = disable;
12809exports.enable = enable;
12810exports.enabled = enabled;
12811exports.humanize = build.ms;
12812
12813/**
12814 * The currently active debug mode names, and names to skip.
12815 */
12816
12817exports.names = [];
12818exports.skips = [];
12819
12820/**
12821 * Map of special "%n" handling functions, for the debug "format" argument.
12822 *
12823 * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N".
12824 */
12825
12826exports.formatters = {};
12827
12828/**
12829 * Previous log timestamp.
12830 */
12831
12832var prevTime;
12833
12834/**
12835 * Select a color.
12836 * @param {String} namespace
12837 * @return {Number}
12838 * @api private
12839 */
12840
12841function selectColor(namespace) {
12842 var hash = 0, i;
12843
12844 for (i in namespace) {
12845 hash = ((hash << 5) - hash) + namespace.charCodeAt(i);
12846 hash |= 0; // Convert to 32bit integer
12847 }
12848
12849 return exports.colors[Math.abs(hash) % exports.colors.length];
12850}
12851
12852/**
12853 * Create a debugger with the given `namespace`.
12854 *
12855 * @param {String} namespace
12856 * @return {Function}
12857 * @api public
12858 */
12859
12860function createDebug(namespace) {
12861
12862 function debug() {
12863 // disabled?
12864 if (!debug.enabled) return;
12865
12866 var self = debug;
12867
12868 // set `diff` timestamp
12869 var curr = +new Date();
12870 var ms = curr - (prevTime || curr);
12871 self.diff = ms;
12872 self.prev = prevTime;
12873 self.curr = curr;
12874 prevTime = curr;
12875
12876 // turn the `arguments` into a proper Array
12877 var args = new Array(arguments.length);
12878 for (var i = 0; i < args.length; i++) {
12879 args[i] = arguments[i];
12880 }
12881
12882 args[0] = exports.coerce(args[0]);
12883
12884 if ('string' !== typeof args[0]) {
12885 // anything else let's inspect with %O
12886 args.unshift('%O');
12887 }
12888
12889 // apply any `formatters` transformations
12890 var index = 0;
12891 args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {
12892 // if we encounter an escaped % then don't increase the array index
12893 if (match === '%%') return match;
12894 index++;
12895 var formatter = exports.formatters[format];
12896 if ('function' === typeof formatter) {
12897 var val = args[index];
12898 match = formatter.call(self, val);
12899
12900 // now we need to remove `args[index]` since it's inlined in the `format`
12901 args.splice(index, 1);
12902 index--;
12903 }
12904 return match;
12905 });
12906
12907 // apply env-specific formatting (colors, etc.)
12908 exports.formatArgs.call(self, args);
12909
12910 var logFn = debug.log || exports.log || console.log.bind(console);
12911 logFn.apply(self, args);
12912 }
12913
12914 debug.namespace = namespace;
12915 debug.enabled = exports.enabled(namespace);
12916 debug.useColors = exports.useColors();
12917 debug.color = selectColor(namespace);
12918
12919 // env-specific initialization logic for debug instances
12920 if ('function' === typeof exports.init) {
12921 exports.init(debug);
12922 }
12923
12924 return debug;
12925}
12926
12927/**
12928 * Enables a debug mode by namespaces. This can include modes
12929 * separated by a colon and wildcards.
12930 *
12931 * @param {String} namespaces
12932 * @api public
12933 */
12934
12935function enable(namespaces) {
12936 exports.save(namespaces);
12937
12938 exports.names = [];
12939 exports.skips = [];
12940
12941 var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
12942 var len = split.length;
12943
12944 for (var i = 0; i < len; i++) {
12945 if (!split[i]) continue; // ignore empty strings
12946 namespaces = split[i].replace(/\*/g, '.*?');
12947 if (namespaces[0] === '-') {
12948 exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));
12949 } else {
12950 exports.names.push(new RegExp('^' + namespaces + '$'));
12951 }
12952 }
12953}
12954
12955/**
12956 * Disable debug output.
12957 *
12958 * @api public
12959 */
12960
12961function disable() {
12962 exports.enable('');
12963}
12964
12965/**
12966 * Returns true if the given mode name is enabled, false otherwise.
12967 *
12968 * @param {String} name
12969 * @return {Boolean}
12970 * @api public
12971 */
12972
12973function enabled(name) {
12974 var i, len;
12975 for (i = 0, len = exports.skips.length; i < len; i++) {
12976 if (exports.skips[i].test(name)) {
12977 return false;
12978 }
12979 }
12980 for (i = 0, len = exports.names.length; i < len; i++) {
12981 if (exports.names[i].test(name)) {
12982 return true;
12983 }
12984 }
12985 return false;
12986}
12987
12988/**
12989 * Coerce `val`.
12990 *
12991 * @param {Mixed} val
12992 * @return {Mixed}
12993 * @api private
12994 */
12995
12996function coerce(val) {
12997 if (val instanceof Error) return val.stack || val.message;
12998 return val;
12999}
13000}(debug$1, debug$1.exports));
13001
13002/**
13003 * This is the web browser implementation of `debug()`.
13004 *
13005 * Expose `debug()` as the module.
13006 */
13007
13008(function (module, exports) {
13009exports = module.exports = debug$1.exports;
13010exports.log = log;
13011exports.formatArgs = formatArgs;
13012exports.save = save;
13013exports.load = load;
13014exports.useColors = useColors;
13015exports.storage = 'undefined' != typeof chrome
13016 && 'undefined' != typeof chrome.storage
13017 ? chrome.storage.local
13018 : localstorage();
13019
13020/**
13021 * Colors.
13022 */
13023
13024exports.colors = [
13025 'lightseagreen',
13026 'forestgreen',
13027 'goldenrod',
13028 'dodgerblue',
13029 'darkorchid',
13030 'crimson'
13031];
13032
13033/**
13034 * Currently only WebKit-based Web Inspectors, Firefox >= v31,
13035 * and the Firebug extension (any Firefox version) are known
13036 * to support "%c" CSS customizations.
13037 *
13038 * TODO: add a `localStorage` variable to explicitly enable/disable colors
13039 */
13040
13041function useColors() {
13042 // NB: In an Electron preload script, document will be defined but not fully
13043 // initialized. Since we know we're in Chrome, we'll just detect this case
13044 // explicitly
13045 if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {
13046 return true;
13047 }
13048
13049 // is webkit? http://stackoverflow.com/a/16459606/376773
13050 // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
13051 return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||
13052 // is firebug? http://stackoverflow.com/a/398120/376773
13053 (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||
13054 // is firefox >= v31?
13055 // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
13056 (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||
13057 // double check webkit in userAgent just in case we are in a worker
13058 (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));
13059}
13060
13061/**
13062 * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
13063 */
13064
13065exports.formatters.j = function(v) {
13066 try {
13067 return JSON.stringify(v);
13068 } catch (err) {
13069 return '[UnexpectedJSONParseError]: ' + err.message;
13070 }
13071};
13072
13073
13074/**
13075 * Colorize log arguments if enabled.
13076 *
13077 * @api public
13078 */
13079
13080function formatArgs(args) {
13081 var useColors = this.useColors;
13082
13083 args[0] = (useColors ? '%c' : '')
13084 + this.namespace
13085 + (useColors ? ' %c' : ' ')
13086 + args[0]
13087 + (useColors ? '%c ' : ' ')
13088 + '+' + exports.humanize(this.diff);
13089
13090 if (!useColors) return;
13091
13092 var c = 'color: ' + this.color;
13093 args.splice(1, 0, c, 'color: inherit');
13094
13095 // the final "%c" is somewhat tricky, because there could be other
13096 // arguments passed either before or after the %c, so we need to
13097 // figure out the correct index to insert the CSS into
13098 var index = 0;
13099 var lastC = 0;
13100 args[0].replace(/%[a-zA-Z%]/g, function(match) {
13101 if ('%%' === match) return;
13102 index++;
13103 if ('%c' === match) {
13104 // we only are interested in the *last* %c
13105 // (the user may have provided their own)
13106 lastC = index;
13107 }
13108 });
13109
13110 args.splice(lastC, 0, c);
13111}
13112
13113/**
13114 * Invokes `console.log()` when available.
13115 * No-op when `console.log` is not a "function".
13116 *
13117 * @api public
13118 */
13119
13120function log() {
13121 // this hackery is required for IE8/9, where
13122 // the `console.log` function doesn't have 'apply'
13123 return 'object' === typeof console
13124 && console.log
13125 && Function.prototype.apply.call(console.log, console, arguments);
13126}
13127
13128/**
13129 * Save `namespaces`.
13130 *
13131 * @param {String} namespaces
13132 * @api private
13133 */
13134
13135function save(namespaces) {
13136 try {
13137 if (null == namespaces) {
13138 exports.storage.removeItem('debug');
13139 } else {
13140 exports.storage.debug = namespaces;
13141 }
13142 } catch(e) {}
13143}
13144
13145/**
13146 * Load `namespaces`.
13147 *
13148 * @return {String} returns the previously persisted debug modes
13149 * @api private
13150 */
13151
13152function load() {
13153 var r;
13154 try {
13155 r = exports.storage.debug;
13156 } catch(e) {}
13157
13158 // If debug isn't set in LS, and we're in Electron, try to load $DEBUG
13159 if (!r && typeof process !== 'undefined' && 'env' in process) {
13160 r = process.env.DEBUG;
13161 }
13162
13163 return r;
13164}
13165
13166/**
13167 * Enable namespaces listed in `localStorage.debug` initially.
13168 */
13169
13170exports.enable(load());
13171
13172/**
13173 * Localstorage attempts to return the localstorage.
13174 *
13175 * This is necessary because safari throws
13176 * when a user disables cookies/localstorage
13177 * and you attempt to access it.
13178 *
13179 * @return {LocalStorage}
13180 * @api private
13181 */
13182
13183function localstorage() {
13184 try {
13185 return window.localStorage;
13186 } catch (e) {}
13187}
13188}(browser, browser.exports));
13189
13190var node = {exports: {}};
13191
13192/**
13193 * Module dependencies.
13194 */
13195
13196(function (module, exports) {
13197var tty = require$$0__default;
13198var util = require$$0__default$1;
13199
13200/**
13201 * This is the Node.js implementation of `debug()`.
13202 *
13203 * Expose `debug()` as the module.
13204 */
13205
13206exports = module.exports = debug$1.exports;
13207exports.init = init;
13208exports.log = log;
13209exports.formatArgs = formatArgs;
13210exports.save = save;
13211exports.load = load;
13212exports.useColors = useColors;
13213
13214/**
13215 * Colors.
13216 */
13217
13218exports.colors = [6, 2, 3, 4, 5, 1];
13219
13220/**
13221 * Build up the default `inspectOpts` object from the environment variables.
13222 *
13223 * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js
13224 */
13225
13226exports.inspectOpts = Object.keys(process.env).filter(function (key) {
13227 return /^debug_/i.test(key);
13228}).reduce(function (obj, key) {
13229 // camel-case
13230 var prop = key
13231 .substring(6)
13232 .toLowerCase()
13233 .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() });
13234
13235 // coerce string value into JS value
13236 var val = process.env[key];
13237 if (/^(yes|on|true|enabled)$/i.test(val)) val = true;
13238 else if (/^(no|off|false|disabled)$/i.test(val)) val = false;
13239 else if (val === 'null') val = null;
13240 else val = Number(val);
13241
13242 obj[prop] = val;
13243 return obj;
13244}, {});
13245
13246/**
13247 * The file descriptor to write the `debug()` calls to.
13248 * Set the `DEBUG_FD` env variable to override with another value. i.e.:
13249 *
13250 * $ DEBUG_FD=3 node script.js 3>debug.log
13251 */
13252
13253var fd = parseInt(process.env.DEBUG_FD, 10) || 2;
13254
13255if (1 !== fd && 2 !== fd) {
13256 util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')();
13257}
13258
13259var stream = 1 === fd ? process.stdout :
13260 2 === fd ? process.stderr :
13261 createWritableStdioStream(fd);
13262
13263/**
13264 * Is stdout a TTY? Colored output is enabled when `true`.
13265 */
13266
13267function useColors() {
13268 return 'colors' in exports.inspectOpts
13269 ? Boolean(exports.inspectOpts.colors)
13270 : tty.isatty(fd);
13271}
13272
13273/**
13274 * Map %o to `util.inspect()`, all on a single line.
13275 */
13276
13277exports.formatters.o = function(v) {
13278 this.inspectOpts.colors = this.useColors;
13279 return util.inspect(v, this.inspectOpts)
13280 .split('\n').map(function(str) {
13281 return str.trim()
13282 }).join(' ');
13283};
13284
13285/**
13286 * Map %o to `util.inspect()`, allowing multiple lines if needed.
13287 */
13288
13289exports.formatters.O = function(v) {
13290 this.inspectOpts.colors = this.useColors;
13291 return util.inspect(v, this.inspectOpts);
13292};
13293
13294/**
13295 * Adds ANSI color escape codes if enabled.
13296 *
13297 * @api public
13298 */
13299
13300function formatArgs(args) {
13301 var name = this.namespace;
13302 var useColors = this.useColors;
13303
13304 if (useColors) {
13305 var c = this.color;
13306 var prefix = ' \u001b[3' + c + ';1m' + name + ' ' + '\u001b[0m';
13307
13308 args[0] = prefix + args[0].split('\n').join('\n' + prefix);
13309 args.push('\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\u001b[0m');
13310 } else {
13311 args[0] = new Date().toUTCString()
13312 + ' ' + name + ' ' + args[0];
13313 }
13314}
13315
13316/**
13317 * Invokes `util.format()` with the specified arguments and writes to `stream`.
13318 */
13319
13320function log() {
13321 return stream.write(util.format.apply(util, arguments) + '\n');
13322}
13323
13324/**
13325 * Save `namespaces`.
13326 *
13327 * @param {String} namespaces
13328 * @api private
13329 */
13330
13331function save(namespaces) {
13332 if (null == namespaces) {
13333 // If you set a process.env field to null or undefined, it gets cast to the
13334 // string 'null' or 'undefined'. Just delete instead.
13335 delete process.env.DEBUG;
13336 } else {
13337 process.env.DEBUG = namespaces;
13338 }
13339}
13340
13341/**
13342 * Load `namespaces`.
13343 *
13344 * @return {String} returns the previously persisted debug modes
13345 * @api private
13346 */
13347
13348function load() {
13349 return process.env.DEBUG;
13350}
13351
13352/**
13353 * Copied from `node/src/node.js`.
13354 *
13355 * XXX: It's lame that node doesn't expose this API out-of-the-box. It also
13356 * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame.
13357 */
13358
13359function createWritableStdioStream (fd) {
13360 var stream;
13361 var tty_wrap = process.binding('tty_wrap');
13362
13363 // Note stream._type is used for test-module-load-list.js
13364
13365 switch (tty_wrap.guessHandleType(fd)) {
13366 case 'TTY':
13367 stream = new tty.WriteStream(fd);
13368 stream._type = 'tty';
13369
13370 // Hack to have stream not keep the event loop alive.
13371 // See https://github.com/joyent/node/issues/1726
13372 if (stream._handle && stream._handle.unref) {
13373 stream._handle.unref();
13374 }
13375 break;
13376
13377 case 'FILE':
13378 var fs = fs__default;
13379 stream = new fs.SyncWriteStream(fd, { autoClose: false });
13380 stream._type = 'fs';
13381 break;
13382
13383 case 'PIPE':
13384 case 'TCP':
13385 var net = require$$4__default;
13386 stream = new net.Socket({
13387 fd: fd,
13388 readable: false,
13389 writable: true
13390 });
13391
13392 // FIXME Should probably have an option in net.Socket to create a
13393 // stream from an existing fd which is writable only. But for now
13394 // we'll just add this hack and set the `readable` member to false.
13395 // Test: ./node test/fixtures/echo.js < /etc/passwd
13396 stream.readable = false;
13397 stream.read = null;
13398 stream._type = 'pipe';
13399
13400 // FIXME Hack to have stream not keep the event loop alive.
13401 // See https://github.com/joyent/node/issues/1726
13402 if (stream._handle && stream._handle.unref) {
13403 stream._handle.unref();
13404 }
13405 break;
13406
13407 default:
13408 // Probably an error on in uv_guess_handle()
13409 throw new Error('Implement me. Unknown stream file type!');
13410 }
13411
13412 // For supporting legacy API we put the FD here.
13413 stream.fd = fd;
13414
13415 stream._isStdio = true;
13416
13417 return stream;
13418}
13419
13420/**
13421 * Init logic for `debug` instances.
13422 *
13423 * Create a new `inspectOpts` object in case `useColors` is set
13424 * differently for a particular `debug` instance.
13425 */
13426
13427function init (debug) {
13428 debug.inspectOpts = {};
13429
13430 var keys = Object.keys(exports.inspectOpts);
13431 for (var i = 0; i < keys.length; i++) {
13432 debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];
13433 }
13434}
13435
13436/**
13437 * Enable namespaces listed in `process.env.DEBUG` initially.
13438 */
13439
13440exports.enable(load());
13441}(node, node.exports));
13442
13443/**
13444 * Detect Electron renderer process, which is node, but we should
13445 * treat as a browser.
13446 */
13447
13448if (typeof process !== 'undefined' && process.type === 'renderer') {
13449 src.exports = browser.exports;
13450} else {
13451 src.exports = node.exports;
13452}
13453
13454/*!
13455 * on-headers
13456 * Copyright(c) 2014 Douglas Christopher Wilson
13457 * MIT Licensed
13458 */
13459
13460/**
13461 * Module exports.
13462 * @public
13463 */
13464
13465var onHeaders_1 = onHeaders$1;
13466
13467/**
13468 * Create a replacement writeHead method.
13469 *
13470 * @param {function} prevWriteHead
13471 * @param {function} listener
13472 * @private
13473 */
13474
13475function createWriteHead (prevWriteHead, listener) {
13476 var fired = false;
13477
13478 // return function with core name and argument list
13479 return function writeHead (statusCode) {
13480 // set headers from arguments
13481 var args = setWriteHeadHeaders.apply(this, arguments);
13482
13483 // fire listener
13484 if (!fired) {
13485 fired = true;
13486 listener.call(this);
13487
13488 // pass-along an updated status code
13489 if (typeof args[0] === 'number' && this.statusCode !== args[0]) {
13490 args[0] = this.statusCode;
13491 args.length = 1;
13492 }
13493 }
13494
13495 return prevWriteHead.apply(this, args)
13496 }
13497}
13498
13499/**
13500 * Execute a listener when a response is about to write headers.
13501 *
13502 * @param {object} res
13503 * @return {function} listener
13504 * @public
13505 */
13506
13507function onHeaders$1 (res, listener) {
13508 if (!res) {
13509 throw new TypeError('argument res is required')
13510 }
13511
13512 if (typeof listener !== 'function') {
13513 throw new TypeError('argument listener must be a function')
13514 }
13515
13516 res.writeHead = createWriteHead(res.writeHead, listener);
13517}
13518
13519/**
13520 * Set headers contained in array on the response object.
13521 *
13522 * @param {object} res
13523 * @param {array} headers
13524 * @private
13525 */
13526
13527function setHeadersFromArray (res, headers) {
13528 for (var i = 0; i < headers.length; i++) {
13529 res.setHeader(headers[i][0], headers[i][1]);
13530 }
13531}
13532
13533/**
13534 * Set headers contained in object on the response object.
13535 *
13536 * @param {object} res
13537 * @param {object} headers
13538 * @private
13539 */
13540
13541function setHeadersFromObject (res, headers) {
13542 var keys = Object.keys(headers);
13543 for (var i = 0; i < keys.length; i++) {
13544 var k = keys[i];
13545 if (k) res.setHeader(k, headers[k]);
13546 }
13547}
13548
13549/**
13550 * Set headers and other properties on the response object.
13551 *
13552 * @param {number} statusCode
13553 * @private
13554 */
13555
13556function setWriteHeadHeaders (statusCode) {
13557 var length = arguments.length;
13558 var headerIndex = length > 1 && typeof arguments[1] === 'string'
13559 ? 2
13560 : 1;
13561
13562 var headers = length >= headerIndex + 1
13563 ? arguments[headerIndex]
13564 : undefined;
13565
13566 this.statusCode = statusCode;
13567
13568 if (Array.isArray(headers)) {
13569 // handle array case
13570 setHeadersFromArray(this, headers);
13571 } else if (headers) {
13572 // handle object case
13573 setHeadersFromObject(this, headers);
13574 }
13575
13576 // copy leading arguments
13577 var args = new Array(Math.min(length, headerIndex));
13578 for (var i = 0; i < args.length; i++) {
13579 args[i] = arguments[i];
13580 }
13581
13582 return args
13583}
13584
13585/*!
13586 * compression
13587 * Copyright(c) 2010 Sencha Inc.
13588 * Copyright(c) 2011 TJ Holowaychuk
13589 * Copyright(c) 2014 Jonathan Ong
13590 * Copyright(c) 2014-2015 Douglas Christopher Wilson
13591 * MIT Licensed
13592 */
13593
13594/**
13595 * Module dependencies.
13596 * @private
13597 */
13598
13599var accepts = accepts$1;
13600var Buffer = build.safeBuffer.exports.Buffer;
13601var bytes = bytes$2.exports;
13602var compressible = compressible_1;
13603var debug = src.exports('compression');
13604var onHeaders = onHeaders_1;
13605var vary = build.vary.exports;
13606var zlib = require$$0__default$2;
13607
13608/**
13609 * Module exports.
13610 */
13611
13612compression$2.exports = compression;
13613compression$2.exports.filter = shouldCompress;
13614
13615/**
13616 * Module variables.
13617 * @private
13618 */
13619
13620var cacheControlNoTransformRegExp = /(?:^|,)\s*?no-transform\s*?(?:,|$)/;
13621
13622/**
13623 * Compress response data with gzip / deflate.
13624 *
13625 * @param {Object} [options]
13626 * @return {Function} middleware
13627 * @public
13628 */
13629
13630function compression (options) {
13631 var opts = options || {};
13632
13633 // options
13634 var filter = opts.filter || shouldCompress;
13635 var threshold = bytes.parse(opts.threshold);
13636
13637 if (threshold == null) {
13638 threshold = 1024;
13639 }
13640
13641 return function compression (req, res, next) {
13642 var ended = false;
13643 var length;
13644 var listeners = [];
13645 var stream;
13646
13647 var _end = res.end;
13648 var _on = res.on;
13649 var _write = res.write;
13650
13651 // flush
13652 res.flush = function flush () {
13653 if (stream) {
13654 stream.flush();
13655 }
13656 };
13657
13658 // proxy
13659
13660 res.write = function write (chunk, encoding) {
13661 if (ended) {
13662 return false
13663 }
13664
13665 if (!this._header) {
13666 this._implicitHeader();
13667 }
13668
13669 return stream
13670 ? stream.write(toBuffer(chunk, encoding))
13671 : _write.call(this, chunk, encoding)
13672 };
13673
13674 res.end = function end (chunk, encoding) {
13675 if (ended) {
13676 return false
13677 }
13678
13679 if (!this._header) {
13680 // estimate the length
13681 if (!this.getHeader('Content-Length')) {
13682 length = chunkLength(chunk, encoding);
13683 }
13684
13685 this._implicitHeader();
13686 }
13687
13688 if (!stream) {
13689 return _end.call(this, chunk, encoding)
13690 }
13691
13692 // mark ended
13693 ended = true;
13694
13695 // write Buffer for Node.js 0.8
13696 return chunk
13697 ? stream.end(toBuffer(chunk, encoding))
13698 : stream.end()
13699 };
13700
13701 res.on = function on (type, listener) {
13702 if (!listeners || type !== 'drain') {
13703 return _on.call(this, type, listener)
13704 }
13705
13706 if (stream) {
13707 return stream.on(type, listener)
13708 }
13709
13710 // buffer listeners for future stream
13711 listeners.push([type, listener]);
13712
13713 return this
13714 };
13715
13716 function nocompress (msg) {
13717 debug('no compression: %s', msg);
13718 addListeners(res, _on, listeners);
13719 listeners = null;
13720 }
13721
13722 onHeaders(res, function onResponseHeaders () {
13723 // determine if request is filtered
13724 if (!filter(req, res)) {
13725 nocompress('filtered');
13726 return
13727 }
13728
13729 // determine if the entity should be transformed
13730 if (!shouldTransform(req, res)) {
13731 nocompress('no transform');
13732 return
13733 }
13734
13735 // vary
13736 vary(res, 'Accept-Encoding');
13737
13738 // content-length below threshold
13739 if (Number(res.getHeader('Content-Length')) < threshold || length < threshold) {
13740 nocompress('size below threshold');
13741 return
13742 }
13743
13744 var encoding = res.getHeader('Content-Encoding') || 'identity';
13745
13746 // already encoded
13747 if (encoding !== 'identity') {
13748 nocompress('already encoded');
13749 return
13750 }
13751
13752 // head
13753 if (req.method === 'HEAD') {
13754 nocompress('HEAD request');
13755 return
13756 }
13757
13758 // compression method
13759 var accept = accepts(req);
13760 var method = accept.encoding(['gzip', 'deflate', 'identity']);
13761
13762 // we really don't prefer deflate
13763 if (method === 'deflate' && accept.encoding(['gzip'])) {
13764 method = accept.encoding(['gzip', 'identity']);
13765 }
13766
13767 // negotiation failed
13768 if (!method || method === 'identity') {
13769 nocompress('not acceptable');
13770 return
13771 }
13772
13773 // compression stream
13774 debug('%s compression', method);
13775 stream = method === 'gzip'
13776 ? zlib.createGzip(opts)
13777 : zlib.createDeflate(opts);
13778
13779 // add buffered listeners to stream
13780 addListeners(stream, stream.on, listeners);
13781
13782 // header fields
13783 res.setHeader('Content-Encoding', method);
13784 res.removeHeader('Content-Length');
13785
13786 // compression
13787 stream.on('data', function onStreamData (chunk) {
13788 if (_write.call(res, chunk) === false) {
13789 stream.pause();
13790 }
13791 });
13792
13793 stream.on('end', function onStreamEnd () {
13794 _end.call(res);
13795 });
13796
13797 _on.call(res, 'drain', function onResponseDrain () {
13798 stream.resume();
13799 });
13800 });
13801
13802 next();
13803 }
13804}
13805
13806/**
13807 * Add bufferred listeners to stream
13808 * @private
13809 */
13810
13811function addListeners (stream, on, listeners) {
13812 for (var i = 0; i < listeners.length; i++) {
13813 on.apply(stream, listeners[i]);
13814 }
13815}
13816
13817/**
13818 * Get the length of a given chunk
13819 */
13820
13821function chunkLength (chunk, encoding) {
13822 if (!chunk) {
13823 return 0
13824 }
13825
13826 return !Buffer.isBuffer(chunk)
13827 ? Buffer.byteLength(chunk, encoding)
13828 : chunk.length
13829}
13830
13831/**
13832 * Default filter function.
13833 * @private
13834 */
13835
13836function shouldCompress (req, res) {
13837 var type = res.getHeader('Content-Type');
13838
13839 if (type === undefined || !compressible(type)) {
13840 debug('%s not compressible', type);
13841 return false
13842 }
13843
13844 return true
13845}
13846
13847/**
13848 * Determine if the entity should be transformed.
13849 * @private
13850 */
13851
13852function shouldTransform (req, res) {
13853 var cacheControl = res.getHeader('Cache-Control');
13854
13855 // Don't compress for Cache-Control: no-transform
13856 // https://tools.ietf.org/html/rfc7234#section-5.2.2.4
13857 return !cacheControl ||
13858 !cacheControlNoTransformRegExp.test(cacheControl)
13859}
13860
13861/**
13862 * Coerce arguments to Buffer
13863 * @private
13864 */
13865
13866function toBuffer (chunk, encoding) {
13867 return !Buffer.isBuffer(chunk)
13868 ? Buffer.from(chunk, encoding)
13869 : chunk
13870}
13871
13872var compression$1 = compression$2.exports;
13873
13874async function preview(config, serverOptions) {
13875 var _a, _b;
13876 const app = build.connect();
13877 const httpServer = await build.resolveHttpServer(config.server, app, serverOptions.https === false ? undefined : await build.resolveHttpsConfig(config));
13878 // cors
13879 const { cors } = config.server;
13880 if (cors !== false) {
13881 app.use(build.corsMiddleware(typeof cors === 'boolean' ? {} : cors));
13882 }
13883 // proxy
13884 if (config.server.proxy) {
13885 app.use(build.proxyMiddleware(httpServer, config));
13886 }
13887 app.use(compression$1());
13888 const distDir = path__default.resolve(config.root, config.build.outDir);
13889 app.use(config.base, build.sirv(distDir, {
13890 etag: true,
13891 dev: !config.isProduction,
13892 single: true
13893 }));
13894 const options = config.server;
13895 const hostname = build.resolveHostname((_a = serverOptions.host) !== null && _a !== void 0 ? _a : options.host);
13896 const port = (_b = serverOptions.port) !== null && _b !== void 0 ? _b : 5000;
13897 const protocol = options.https ? 'https' : 'http';
13898 const logger = config.logger;
13899 const base = config.base;
13900 httpServer.listen(port, hostname.host, () => {
13901 logger.info(build.source.cyan(`\n vite v${require('vite/package.json').version}`) +
13902 build.source.green(` build preview server running at:\n`));
13903 build.printServerUrls(hostname, protocol, port, base, logger.info);
13904 if (options.open) {
13905 const path = typeof options.open === 'string' ? options.open : base;
13906 build.openBrowser(`${protocol}://${hostname.name}:${port}${path}`, true, logger);
13907 }
13908 });
13909}
13910
13911const cli = cac('vite');
13912/**
13913 * removing global flags before passing as command specific sub-configs
13914 */
13915function cleanOptions(options) {
13916 const ret = { ...options };
13917 delete ret['--'];
13918 delete ret.debug;
13919 delete ret.d;
13920 delete ret.filter;
13921 delete ret.f;
13922 delete ret.config;
13923 delete ret.c;
13924 delete ret.root;
13925 delete ret.base;
13926 delete ret.r;
13927 delete ret.mode;
13928 delete ret.m;
13929 delete ret.logLevel;
13930 delete ret.l;
13931 delete ret.clearScreen;
13932 return ret;
13933}
13934cli
13935 .option('-c, --config <file>', `[string] use specified config file`)
13936 .option('-r, --root <path>', `[string] use specified root directory`)
13937 .option('--base <path>', `[string] public base path (default: /)`)
13938 .option('-l, --logLevel <level>', `[string] info | warn | error | silent`)
13939 .option('--clearScreen', `[boolean] allow/disable clear screen when logging`)
13940 .option('-d, --debug [feat]', `[string | boolean] show debug logs`)
13941 .option('-f, --filter <filter>', `[string] filter debug logs`);
13942// dev
13943cli
13944 .command('[root]') // default command
13945 .alias('serve')
13946 .option('--host [host]', `[string] specify hostname`)
13947 .option('--port <port>', `[number] specify port`)
13948 .option('--https', `[boolean] use TLS + HTTP/2`)
13949 .option('--open [path]', `[boolean | string] open browser on startup`)
13950 .option('--cors', `[boolean] enable CORS`)
13951 .option('--strictPort', `[boolean] exit if specified port is already in use`)
13952 .option('-m, --mode <mode>', `[string] set env mode`)
13953 .option('--force', `[boolean] force the optimizer to ignore the cache and re-bundle`)
13954 .action(async (root, options) => {
13955 // output structure is preserved even after bundling so require()
13956 // is ok here
13957 const { createServer } = await Promise.resolve().then(function () { return require('./chunks/dep-cc49d7be.js'); }).then(function (n) { return n.index$1; });
13958 try {
13959 const server = await createServer({
13960 root,
13961 base: options.base,
13962 mode: options.mode,
13963 configFile: options.config,
13964 logLevel: options.logLevel,
13965 clearScreen: options.clearScreen,
13966 server: cleanOptions(options)
13967 });
13968 await server.listen();
13969 }
13970 catch (e) {
13971 build.createLogger(options.logLevel).error(build.source.red(`error when starting dev server:\n${e.stack}`));
13972 process.exit(1);
13973 }
13974});
13975// build
13976cli
13977 .command('build [root]')
13978 .option('--target <target>', `[string] transpile target (default: 'modules')`)
13979 .option('--outDir <dir>', `[string] output directory (default: dist)`)
13980 .option('--assetsDir <dir>', `[string] directory under outDir to place assets in (default: _assets)`)
13981 .option('--assetsInlineLimit <number>', `[number] static asset base64 inline threshold in bytes (default: 4096)`)
13982 .option('--ssr [entry]', `[string] build specified entry for server-side rendering`)
13983 .option('--sourcemap', `[boolean] output source maps for build (default: false)`)
13984 .option('--minify [minifier]', `[boolean | "terser" | "esbuild"] enable/disable minification, ` +
13985 `or specify minifier to use (default: terser)`)
13986 .option('--manifest', `[boolean] emit build manifest json`)
13987 .option('--ssrManifest', `[boolean] emit ssr manifest json`)
13988 .option('--emptyOutDir', `[boolean] force empty outDir when it's outside of root`)
13989 .option('-m, --mode <mode>', `[string] set env mode`)
13990 .option('-w, --watch', `[boolean] rebuilds when modules have changed on disk`)
13991 .action(async (root, options) => {
13992 const { build: build$1 } = await Promise.resolve().then(function () { return require('./chunks/dep-cc49d7be.js'); }).then(function (n) { return n.build$1; });
13993 const buildOptions = cleanOptions(options);
13994 try {
13995 await build$1({
13996 root,
13997 base: options.base,
13998 mode: options.mode,
13999 configFile: options.config,
14000 logLevel: options.logLevel,
14001 clearScreen: options.clearScreen,
14002 build: buildOptions
14003 });
14004 }
14005 catch (e) {
14006 build.createLogger(options.logLevel).error(build.source.red(`error during build:\n${e.stack}`));
14007 process.exit(1);
14008 }
14009});
14010// optimize
14011cli
14012 .command('optimize [root]')
14013 .option('--force', `[boolean] force the optimizer to ignore the cache and re-bundle`)
14014 .action(async (root, options) => {
14015 const { optimizeDeps } = await Promise.resolve().then(function () { return require('./chunks/dep-cc49d7be.js'); }).then(function (n) { return n.index; });
14016 try {
14017 const config = await build.resolveConfig({
14018 root,
14019 base: options.base,
14020 configFile: options.config,
14021 logLevel: options.logLevel
14022 }, 'build', 'development');
14023 await optimizeDeps(config, options.force, true);
14024 }
14025 catch (e) {
14026 build.createLogger(options.logLevel).error(build.source.red(`error when optimizing deps:\n${e.stack}`));
14027 process.exit(1);
14028 }
14029});
14030cli
14031 .command('preview [root]')
14032 .option('--host [host]', `[string] specify hostname`)
14033 .option('--port <port>', `[number] specify port`)
14034 .option('--https', `[boolean] use TLS + HTTP/2`)
14035 .option('--open [path]', `[boolean | string] open browser on startup`)
14036 .action(async (root, options) => {
14037 try {
14038 const config = await build.resolveConfig({
14039 root,
14040 base: options.base,
14041 configFile: options.config,
14042 logLevel: options.logLevel,
14043 server: {
14044 open: options.open
14045 }
14046 }, 'serve', 'development');
14047 await preview(config, cleanOptions(options));
14048 }
14049 catch (e) {
14050 build.createLogger(options.logLevel).error(build.source.red(`error when starting preview server:\n${e.stack}`));
14051 process.exit(1);
14052 }
14053});
14054cli.help();
14055cli.version(require('../../package.json').version);
14056cli.parse();
14057//# sourceMappingURL=cli.js.map