diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d83f5a..0995d75 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1526,3 +1526,29 @@ $secretConfig->retrieve('database', 'credentials', 'username'); With this fix, MagicObject now handles optional or missing fields more reliably during insert operations. + + +# MagicObject Version 3.22.2 + +## Bug Fixes + +Several bug fixes and codesmell + +## Update Documentation + +Update docblock + + +# MagicObject Version 3.22.2 + +### Added + +- `insertAll()` and `deleteAll()` for bulk database operation +- Added parameter to PicoSpecification for operation: + - GREATER_THAN + - GREATER_THAN_OR_EQUALS + - LESS_THAN + - LESS_THAN_OR_EQUALS + - NOT_EQUALS + - LIKE + - IN \ No newline at end of file diff --git a/docs/doc.html b/docs/doc.html index d3fb43f..35e7103 100644 --- a/docs/doc.html +++ b/docs/doc.html @@ -16,7 +16,7 @@

Table of Content

MagicObject\DataTable

Declaration

-
class DataTable extends MagicObject\SetterGetter +
class DataTable extends MagicObject\SetterGetter implements Stringable { }
@@ -39,7 +39,7 @@

Description

labels and attributes.

Constants

-
const ANNOTATION_TABLE = "Table";
const ANNOTATION_ATTRIBUTES = "Attributes";
const CLASS_LIST = "ClassList";
const ANNOTATION_ID = "Id";
const ANNOTATION_COLUMN = "Column";
const ANNOTATION_VAR = "var";
const ANNOTATION_GENERATED_VALUE = "GeneratedValue";
const ANNOTATION_NOT_NULL = "NotNull";
const ANNOTATION_DEFAULT_COLUMN = "DefaultColumn";
const ANNOTATION_DEFAULT_COLUMN_LABEL = "DefaultColumnLabel";
const ANNOTATION_LANGUAGE = "Language";
const KEY_PROPERTY_TYPE = "property_type";
const KEY_PROPERTY_NAME = "property_name";
const KEY_NAME = "name";
const KEY_CLASS = "class";
const KEY_VALUE = "value";
const SQL_DATE_TIME_FORMAT = "Y-m-d H:i:s";
const DATE_TIME_FORMAT = "datetimeformat";
const TAG_TABLE = "table";
const TAG_THEAD = "thead";
const TAG_TBODY = "tbody";
const TAG_TR = "tr";
const TAG_TH = "th";
const TAG_TD = "td";
const TD_LABEL = "td-label";
const TD_VALUE = "td-value";

Properties

+
const ANNOTATION_TABLE = 'Table';
const ANNOTATION_ATTRIBUTES = 'Attributes';
const CLASS_LIST = 'ClassList';
const ANNOTATION_ID = 'Id';
const ANNOTATION_COLUMN = 'Column';
const ANNOTATION_VAR = 'var';
const ANNOTATION_GENERATED_VALUE = 'GeneratedValue';
const ANNOTATION_NOT_NULL = 'NotNull';
const ANNOTATION_DEFAULT_COLUMN = 'DefaultColumn';
const ANNOTATION_DEFAULT_COLUMN_LABEL = 'DefaultColumnLabel';
const ANNOTATION_LANGUAGE = 'Language';
const KEY_PROPERTY_TYPE = 'property_type';
const KEY_PROPERTY_NAME = 'property_name';
const KEY_NAME = 'name';
const KEY_CLASS = 'class';
const KEY_VALUE = 'value';
const SQL_DATE_TIME_FORMAT = 'Y-m-d H:i:s';
const DATE_TIME_FORMAT = 'datetimeformat';
const TAG_TABLE = 'table';
const TAG_THEAD = 'thead';
const TAG_TBODY = 'tbody';
const TAG_TR = 'tr';
const TAG_TH = 'th';
const TAG_TD = 'td';
const TD_LABEL = 'td-label';
const TD_VALUE = 'td-value';

Properties

1. _currentLanguage

Declaration

@@ -234,21 +234,19 @@

Declaration

private function appendByProp(
    DOMDocument $doc,
    DOMNode $tbody,
-    array $props,
+    ReflectionProperty[] $props,
    string $className
) : self
{
}

Description

-

Appends table rows based on class properties.

-

This method generates rows for the table based on the properties of the class -and appends them to the provided DOM node.

+

Appends table rows based on class properties using reflection and annotations.

Parameters

$doc

The DOM document used to create elements.

$tbody

The DOM node representing the of the table.

$props
-

Array of ReflectionProperty objects representing class properties.

+

Array of ReflectionProperty objects.

$className

Name of the class for reflection.

Return

@@ -262,7 +260,7 @@

Declaration

private function appendByValues(
    DOMDocument $doc,
    DOMNode $tbody,
-    stdClass $values
+    array|stdClass $values
) : self
{
}

Description

@@ -282,7 +280,24 @@

Return

-
12. getLabel
+
12. formatScalarValue
+

Declaration

+
private function formatScalarValue(
+    mixed $value
+) : string
{
}
+
+

Description

+

Helper to ensure value is safe string for DOM

+

Parameters

+
$value
+
+

Return

+
string
+
+
+
+
+
13. getLabel

Declaration

private function getLabel(
    string $propertyName
@@ -301,7 +316,7 @@

Return

-
13. addClass
+
14. addClass

Declaration

public function addClass(
    string $className
@@ -320,7 +335,7 @@

Return

-
14. removeClass
+
15. removeClass

Declaration

public function removeClass(
    string $className
@@ -338,7 +353,7 @@

Return

-
15. replaceClass
+
16. replaceClass

Declaration

public function replaceClass(
    string $search,
@@ -358,7 +373,7 @@

Return

-
17. getTableInfo
+
18. getTableInfo

Declaration

public function getTableInfo() : PicoTableInfo
{
}
@@ -373,7 +388,7 @@

Return

MagicObject\Getter

Declaration

-
class Getter extends stdClass +
class Getter extends stdClass implements Stringable { }
@@ -401,7 +416,7 @@

Description

Constants

-
const JSON = "JSON";

Properties

+
const JSON = 'JSON';

Properties

1. _classParams

Declaration

@@ -551,7 +566,7 @@

Return

MagicObject\MagicDto

Declaration

-
class MagicDto extends stdClass +
class MagicDto extends stdClass implements Stringable { }
@@ -572,7 +587,7 @@

Description

as needed.

Constants

-
const JSON = "JSON";
const XML = "XML";
const PRETTIFY = "prettify";

Properties

+
const JSON = 'JSON';
const XML = 'XML';
const PRETTIFY = 'prettify';

Properties

1. _classParams

Declaration

@@ -1348,7 +1363,7 @@

Throws

MagicObject\MagicObject

Declaration

-
class MagicObject extends stdClass +
class MagicObject extends stdClass implements Stringable { }
@@ -1368,7 +1383,7 @@

Description

Users can also create properties from other entities using the full name of the class (namespace + class name).

Constants

-
const MESSAGE_NO_DATABASE_CONNECTION = "No database connection provided";
const MESSAGE_NO_RECORD_FOUND = "No record found";
const PROPERTY_NAMING_STRATEGY = "property-naming-strategy";
const PROPERTY_NAMING_STRATEGY_CAMEL = "propertyNamingStrategy";
const KEY_PROPERTY_TYPE = "propertyType";
const KEY_NAME = "name";
const KEY_VALUE = "value";
const KEY_TYPE = "type";
const KEY_LENGTH = "length";
const KEY_DEFAULT_VALUE = "defaultValue";
const JSON = "JSON";
const YAML = "Yaml";
const ATTR_CHECKED = " checked="checked"";
const ATTR_SELECTED = " selected="selected"";
const FIND_OPTION_DEFAULT = 0;
const FIND_OPTION_NO_COUNT_DATA = 1;
const FIND_OPTION_NO_FETCH_DATA = 2;
const SNAKE_CASE = "SNAKE_CASE";
const UPPER_CAMEL_CASE = "UPPER_CAMEL_CASE";

Properties

+
const MESSAGE_NO_DATABASE_CONNECTION = 'No database connection provided';
const MESSAGE_NO_RECORD_FOUND = 'No record found';
const PROPERTY_NAMING_STRATEGY = 'property-naming-strategy';
const PROPERTY_NAMING_STRATEGY_CAMEL = 'propertyNamingStrategy';
const KEY_PROPERTY_TYPE = 'propertyType';
const KEY_NAME = 'name';
const KEY_VALUE = 'value';
const KEY_TYPE = 'type';
const KEY_LENGTH = 'length';
const KEY_DEFAULT_VALUE = 'defaultValue';
const JSON = 'JSON';
const YAML = 'Yaml';
const ATTR_CHECKED = ' checked="checked"';
const ATTR_SELECTED = ' selected="selected"';
const FIND_OPTION_DEFAULT = 0;
const FIND_OPTION_NO_COUNT_DATA = 1;
const FIND_OPTION_NO_FETCH_DATA = 2;
const SNAKE_CASE = 'SNAKE_CASE';
const UPPER_CAMEL_CASE = 'UPPER_CAMEL_CASE';

Properties

1. _readonly

Declaration

@@ -3142,7 +3157,6 @@

Declaration

private function findBy(
    string $method,
    mixed $params,
-    PicoSpecification|null $specification,
    PicoPageable|string|null $pageable = null,
    PicoSortable|string|null $sortable = null,
    bool $passive = false,
@@ -3156,8 +3170,6 @@

Parameters

The method to find by

$params

The parameters for the search

-
$specification
-

The specification for filtering

$pageable

The pagination information

$sortable
@@ -3827,7 +3839,7 @@

Throws

MagicObject\SecretObject

Declaration

-
class SecretObject extends stdClass +
class SecretObject extends stdClass implements Stringable { }
@@ -3859,7 +3871,7 @@

Description

Constants

-
const JSON = "JSON";
const YAML = "Yaml";
const PROPERTY_NAMING_STRATEGY = "property-naming-strategy";
const PROPERTY_NAMING_STRATEGY_CAMEL = "propertyNamingStrategy";
const KEY_NAME = "name";
const KEY_VALUE = "value";
const KEY_PROPERTY_TYPE = "propertyType";
const KEY_DEFAULT_VALUE = "defaultValue";
const ANNOTATION_ENCRYPT_IN = "EncryptIn";
const ANNOTATION_DECRYPT_IN = "DecryptIn";
const ANNOTATION_ENCRYPT_OUT = "EncryptOut";
const ANNOTATION_DECRYPT_OUT = "DecryptOut";
const SNAKE_CASE = "SNAKE_CASE";
const UPPER_CAMEL_CASE = "UPPER_CAMEL_CASE";

Properties

+
const JSON = 'JSON';
const YAML = 'Yaml';
const PROPERTY_NAMING_STRATEGY = 'property-naming-strategy';
const PROPERTY_NAMING_STRATEGY_CAMEL = 'propertyNamingStrategy';
const KEY_NAME = 'name';
const KEY_VALUE = 'value';
const KEY_PROPERTY_TYPE = 'propertyType';
const KEY_DEFAULT_VALUE = 'defaultValue';
const ANNOTATION_ENCRYPT_IN = 'EncryptIn';
const ANNOTATION_DECRYPT_IN = 'DecryptIn';
const ANNOTATION_ENCRYPT_OUT = 'EncryptOut';
const ANNOTATION_DECRYPT_OUT = 'DecryptOut';
const SNAKE_CASE = 'SNAKE_CASE';
const UPPER_CAMEL_CASE = 'UPPER_CAMEL_CASE';

Properties

1. _encryptInProperties

Declaration

@@ -4170,7 +4182,7 @@

Return

10. encryptValue

Declaration

public function encryptValue(
-    MagicObject|PicoGenericObject|self|array|stdClass|string|number $data,
+    MagicObject|PicoGenericObject|self|array|stdClass|string|int|float $data,
    string|null $hexKey = null
) : mixed
{
}
@@ -4893,7 +4905,55 @@

Throws

-
47. __toString
+
47. hasValue
+

Declaration

+
public function hasValue(
+    string $propertyName
+) : bool
{
}
+
+

Description

+

Check if a property has a value set.

+

This method checks if the specified property is set (exists and has a value). It returns true if the property exists and has a value, and false otherwise.

+

Parameters

+
$propertyName
+

The name of the property to check.

+

Return

+
bool
+

true if the property is set, false otherwise.

+
+
+
+
48. retrieve
+

Declaration

+
public function retrieve(
+    string
+) : mixed|null
{
}
+
+

Description

+

Retrieves a value from a nested object using a series of keys.

+

This method allows you to access deeply nested properties of an object by specifying +the keys either as multiple arguments or as a single string using dot (.) or arrow (->) notation. +Each key will be automatically converted to camelCase before property access.

+

Supported usage examples:

+
    +
  • $obj->retrieve('user', 'profile', 'name')
  • +
  • $obj->retrieve('user.profile.name')
  • +
  • +

    $obj->retrieve('user->profile->name')

    +

    If all keys exist and the values are properly set, the final nested value is returned. +If any key is missing or the chain is broken at any point, the method returns null.

    +
  • +
+

Parameters

+
string
+

...$keys One or more keys, either as multiple arguments or a single string with separators.

+

Return

+
mixed|null
+

The final nested value, or null if any key is not found.

+
+
+
+
49. __toString

Declaration

public function __toString() : string
{
}
@@ -4909,7 +4969,7 @@

Return

MagicObject\SetterGetter

Declaration

-
class SetterGetter extends stdClass +
class SetterGetter extends stdClass implements Stringable { }
@@ -4929,7 +4989,7 @@

Description

Supports annotations for property configuration and JSON serialization.

Constants

-
const JSON = "JSON";

Properties

+
const JSON = 'JSON';

Properties

1. _classParams

Declaration

@@ -5114,14 +5174,14 @@

Return

10. __unset

Declaration

public function __unset(
-    bool $snakeCase
+    string $name
) : stdClass
{
}

Description

Get values of the properties.

Optionally converts property names to snake_case for the returned object.

Parameters

-
$snakeCase
+
$name

Flag to determine if property names should be converted to snake_case.

Return

stdClass
@@ -5452,43 +5512,43 @@

Constants

1. httpStatus

Declaration

public array $httpStatus = array ( - 100 => 'Continue', - 101 => 'Switching Protocols', - 200 => 'OK', - 201 => 'Created', - 202 => 'Accepted', - 203 => 'Non-Authoritative Information', - 204 => 'No Content', - 205 => 'Reset Content', - 206 => 'Partial Content', - 300 => 'Multiple Choices', - 301 => 'Moved Permanently', - 302 => 'Moved Temporarily', - 303 => 'See Other', - 304 => 'Not Modified', - 305 => 'Use Proxy', - 400 => 'Bad Request', - 401 => 'Unauthorized', - 402 => 'Payment Required', - 403 => 'Forbidden', - 404 => 'Not Found', - 405 => 'Method Not Allowed', - 406 => 'Not Acceptable', - 407 => 'Proxy Authentication Required', - 408 => 'Request Time-out', - 409 => 'Conflict', - 410 => 'Gone', - 411 => 'Length Required', - 412 => 'Precondition Failed', - 413 => 'Request Entity Too Large', - 414 => 'Request-URI Too Large', - 415 => 'Unsupported Media Type', - 500 => 'Internal Server Error', - 501 => 'Not Implemented', - 502 => 'Bad Gateway', - 503 => 'Service Unavailable', - 504 => 'Gateway Time-out', - 505 => 'HTTP Version not supported', + 100 => 'Continue', + 101 => 'Switching Protocols', + 200 => 'OK', + 201 => 'Created', + 202 => 'Accepted', + 203 => 'Non-Authoritative Information', + 204 => 'No Content', + 205 => 'Reset Content', + 206 => 'Partial Content', + 300 => 'Multiple Choices', + 301 => 'Moved Permanently', + 302 => 'Moved Temporarily', + 303 => 'See Other', + 304 => 'Not Modified', + 305 => 'Use Proxy', + 400 => 'Bad Request', + 401 => 'Unauthorized', + 402 => 'Payment Required', + 403 => 'Forbidden', + 404 => 'Not Found', + 405 => 'Method Not Allowed', + 406 => 'Not Acceptable', + 407 => 'Proxy Authentication Required', + 408 => 'Request Time-out', + 409 => 'Conflict', + 410 => 'Gone', + 411 => 'Length Required', + 412 => 'Precondition Failed', + 413 => 'Request Entity Too Large', + 414 => 'Request-URI Too Large', + 415 => 'Unsupported Media Type', + 500 => 'Internal Server Error', + 501 => 'Not Implemented', + 502 => 'Bad Gateway', + 503 => 'Service Unavailable', + 504 => 'Gateway Time-out', + 505 => 'HTTP Version not supported', );

Description

@@ -5519,7 +5579,7 @@

Description

This class contains constants representing various MIME types.

Constants

-
const APPLICATION_STEP = "application/STEP";
const APPLICATION_ANDREW_INSET = "application/andrew-inset";
const APPLICATION_APPINSTALLER = "application/appinstaller";
const APPLICATION_APPLIXWARE = "application/applixware";
const APPLICATION_APPX = "application/appx";
const APPLICATION_APPXBUNDLE = "application/appxbundle";
const APPLICATION_ATOM_XML = "application/atom+xml";
const APPLICATION_ATOMCAT_XML = "application/atomcat+xml";
const APPLICATION_ATOMDELETED_XML = "application/atomdeleted+xml";
const APPLICATION_ATOMSVC_XML = "application/atomsvc+xml";
const APPLICATION_ATSC_DWD_XML = "application/atsc-dwd+xml";
const APPLICATION_ATSC_HELD_XML = "application/atsc-held+xml";
const APPLICATION_ATSC_RSAT_XML = "application/atsc-rsat+xml";
const APPLICATION_AUTOMATIONML_AML_XML = "application/automationml-aml+xml";
const APPLICATION_AUTOMATIONML_AMLX_ZIP = "application/automationml-amlx+zip";
const APPLICATION_BRAILLE = "application/braille";
const APPLICATION_CALENDAR_XML = "application/calendar+xml";
const APPLICATION_CCXML_XML = "application/ccxml+xml";
const APPLICATION_CDFX_XML = "application/cdfx+xml";
const APPLICATION_CDMI_CAPABILITY = "application/cdmi-capability";
const APPLICATION_CDMI_CONTAINER = "application/cdmi-container";
const APPLICATION_CDMI_DOMAIN = "application/cdmi-domain";
const APPLICATION_CDMI_OBJECT = "application/cdmi-object";
const APPLICATION_CDMI_QUEUE = "application/cdmi-queue";
const APPLICATION_CDR = "application/cdr";
const APPLICATION_CPL_XML = "application/cpl+xml";
const APPLICATION_CU_SEEME = "application/cu-seeme";
const APPLICATION_CWL = "application/cwl";
const APPLICATION_DASH_XML = "application/dash+xml";
const APPLICATION_DAVMOUNT_XML = "application/davmount+xml";
const APPLICATION_DOCBOOK_XML = "application/docbook+xml";
const APPLICATION_DSSC_DER = "application/dssc+der";
const APPLICATION_DSSC_XML = "application/dssc+xml";
const APPLICATION_ECMASCRIPT = "application/ecmascript";
const APPLICATION_EMMA_XML = "application/emma+xml";
const APPLICATION_EMOTIONML_XML = "application/emotionml+xml";
const APPLICATION_EPUB_ZIP = "application/epub+zip";
const APPLICATION_EXCEL = "application/excel";
const APPLICATION_EXI = "application/exi";
const APPLICATION_EXPRESS = "application/express";
const APPLICATION_FDT_XML = "application/fdt+xml";
const APPLICATION_FONT_TDPFR = "application/font-tdpfr";
const APPLICATION_GEO_JSON = "application/geo+json";
const APPLICATION_GML_XML = "application/gml+xml";
const APPLICATION_GPG_KEYS = "application/gpg-keys";
const APPLICATION_GPX_XML = "application/gpx+xml";
const APPLICATION_GXF = "application/gxf";
const APPLICATION_GZIP = "application/gzip";
const APPLICATION_HJSON = "application/hjson";
const APPLICATION_HYPERSTUDIO = "application/hyperstudio";
const APPLICATION_INKML_XML = "application/inkml+xml";
const APPLICATION_IPFIX = "application/ipfix";
const APPLICATION_ITS_XML = "application/its+xml";
const APPLICATION_JAVA_ARCHIVE = "application/java-archive";
const APPLICATION_JAVA_SERIALIZED_OBJECT = "application/java-serialized-object";
const APPLICATION_JAVASCRIPT = "application/javascript";
const APPLICATION_JSON = "application/json";
const APPLICATION_JSON5 = "application/json5";
const APPLICATION_JSONML_JSON = "application/jsonml+json";
const APPLICATION_LD_JSON = "application/ld+json";
const APPLICATION_LGR_XML = "application/lgr+xml";
const APPLICATION_LOST_XML = "application/lost+xml";
const APPLICATION_MAC_BINHEX40 = "application/mac-binhex40";
const APPLICATION_MAC_COMPACTPRO = "application/mac-compactpro";
const APPLICATION_MADS_XML = "application/mads+xml";
const APPLICATION_MANIFEST_JSON = "application/manifest+json";
const APPLICATION_MARC = "application/marc";
const APPLICATION_MARCXML_XML = "application/marcxml+xml";
const APPLICATION_MATHEMATICA = "application/mathematica";
const APPLICATION_MATHML_XML = "application/mathml+xml";
const APPLICATION_MBOX = "application/mbox";
const APPLICATION_MEDIA_POLICY_DATASET_XML = "application/media-policy-dataset+xml";
const APPLICATION_MEDIASERVERCONTROL_XML = "application/mediaservercontrol+xml";
const APPLICATION_METALINK_XML = "application/metalink+xml";
const APPLICATION_METALINK4_XML = "application/metalink4+xml";
const APPLICATION_METS_XML = "application/mets+xml";
const APPLICATION_MMT_AEI_XML = "application/mmt-aei+xml";
const APPLICATION_MMT_USD_XML = "application/mmt-usd+xml";
const APPLICATION_MODS_XML = "application/mods+xml";
const APPLICATION_MP21 = "application/mp21";
const APPLICATION_MP4 = "application/mp4";
const APPLICATION_MSIX = "application/msix";
const APPLICATION_MSIXBUNDLE = "application/msixbundle";
const APPLICATION_MSWORD = "application/msword";
const APPLICATION_MXF = "application/mxf";
const APPLICATION_N_QUADS = "application/n-quads";
const APPLICATION_N_TRIPLES = "application/n-triples";
const APPLICATION_NODE = "application/node";
const APPLICATION_OCTET_STREAM = "application/octet-stream";
const APPLICATION_ODA = "application/oda";
const APPLICATION_OEBPS_PACKAGE_XML = "application/oebps-package+xml";
const APPLICATION_OGG = "application/ogg";
const APPLICATION_OMDOC_XML = "application/omdoc+xml";
const APPLICATION_ONENOTE = "application/onenote";
const APPLICATION_OXPS = "application/oxps";
const APPLICATION_P2P_OVERLAY_XML = "application/p2p-overlay+xml";
const APPLICATION_PATCH_OPS_ERROR_XML = "application/patch-ops-error+xml";
const APPLICATION_PDF = "application/pdf";
const APPLICATION_PGP = "application/pgp";
const APPLICATION_PGP_SIGNATURE = "application/pgp-signature";
const APPLICATION_PICS_RULES = "application/pics-rules";
const APPLICATION_PKCS7_MIME = "application/pkcs7-mime";
const APPLICATION_PKCS7_SIGNATURE = "application/pkcs7-signature";
const APPLICATION_PKCS8 = "application/pkcs8";
const APPLICATION_PKIX_CERT = "application/pkix-cert";
const APPLICATION_PKIX_CRL = "application/pkix-crl";
const APPLICATION_PKIX_PKIPATH = "application/pkix-pkipath";
const APPLICATION_PKIXCMP = "application/pkixcmp";
const APPLICATION_PLS_XML = "application/pls+xml";
const APPLICATION_POSTSCRIPT = "application/postscript";
const APPLICATION_POWERPOINT = "application/powerpoint";
const APPLICATION_PROVENANCE_XML = "application/provenance+xml";
const APPLICATION_PRS_CWW = "application/prs.cww";
const APPLICATION_PRS_XSF_XML = "application/prs.xsf+xml";
const APPLICATION_PSKC_XML = "application/pskc+xml";
const APPLICATION_RAML_YAML = "application/raml+yaml";
const APPLICATION_RDF_XML = "application/rdf+xml";
const APPLICATION_REGINFO_XML = "application/reginfo+xml";
const APPLICATION_RELAX_NG_COMPACT_SYNTAX = "application/relax-ng-compact-syntax";
const APPLICATION_RESOURCE_LISTS_XML = "application/resource-lists+xml";
const APPLICATION_RESOURCE_LISTS_DIFF_XML = "application/resource-lists-diff+xml";
const APPLICATION_RLS_SERVICES_XML = "application/rls-services+xml";
const APPLICATION_ROUTE_APD_XML = "application/route-apd+xml";
const APPLICATION_ROUTE_S_TSID_XML = "application/route-s-tsid+xml";
const APPLICATION_ROUTE_USD_XML = "application/route-usd+xml";
const APPLICATION_RPKI_GHOSTBUSTERS = "application/rpki-ghostbusters";
const APPLICATION_RPKI_MANIFEST = "application/rpki-manifest";
const APPLICATION_RPKI_ROA = "application/rpki-roa";
const APPLICATION_RSD_XML = "application/rsd+xml";
const APPLICATION_RSS_XML = "application/rss+xml";
const APPLICATION_SBML_XML = "application/sbml+xml";
const APPLICATION_SCVP_CV_REQUEST = "application/scvp-cv-request";
const APPLICATION_SCVP_CV_RESPONSE = "application/scvp-cv-response";
const APPLICATION_SCVP_VP_REQUEST = "application/scvp-vp-request";
const APPLICATION_SCVP_VP_RESPONSE = "application/scvp-vp-response";
const APPLICATION_SDP = "application/sdp";
const APPLICATION_SENML_XML = "application/senml+xml";
const APPLICATION_SENSML_XML = "application/sensml+xml";
const APPLICATION_SET_PAYMENT_INITIATION = "application/set-payment-initiation";
const APPLICATION_SET_REGISTRATION_INITIATION = "application/set-registration-initiation";
const APPLICATION_SHF_XML = "application/shf+xml";
const APPLICATION_SIEVE = "application/sieve";
const APPLICATION_SMIL = "application/smil";
const APPLICATION_SPARQL_QUERY = "application/sparql-query";
const APPLICATION_SPARQL_RESULTS_XML = "application/sparql-results+xml";
const APPLICATION_SRGS = "application/srgs";
const APPLICATION_SRGS_XML = "application/srgs+xml";
const APPLICATION_SRU_XML = "application/sru+xml";
const APPLICATION_SSDL_XML = "application/ssdl+xml";
const APPLICATION_SSML_XML = "application/ssml+xml";
const APPLICATION_SWID_XML = "application/swid+xml";
const APPLICATION_TEI_XML = "application/tei+xml";
const APPLICATION_THRAUD_XML = "application/thraud+xml";
const APPLICATION_TIMESTAMPED_DATA = "application/timestamped-data";
const APPLICATION_TOML = "application/toml";
const APPLICATION_TRIG = "application/trig";
const APPLICATION_TTML_XML = "application/ttml+xml";
const APPLICATION_UBJSON = "application/ubjson";
const APPLICATION_URC_RESSHEET_XML = "application/urc-ressheet+xml";
const APPLICATION_URC_TARGETDESC_XML = "application/urc-targetdesc+xml";
const APPLICATION_VIDEOLAN = "application/videolan";
const APPLICATION_VND_1000MINDS_DECISION_MODEL_XML = "application/vnd.1000minds.decision-model+xml";
const APPLICATION_VND_3GPP_PIC_BW_LARGE = "application/vnd.3gpp.pic-bw-large";
const APPLICATION_VND_3GPP_PIC_BW_SMALL = "application/vnd.3gpp.pic-bw-small";
const APPLICATION_VND_3GPP_PIC_BW_VAR = "application/vnd.3gpp.pic-bw-var";
const APPLICATION_VND_3GPP2_TCAP = "application/vnd.3gpp2.tcap";
const APPLICATION_VND_3M_POST_IT_NOTES = "application/vnd.3m.post-it-notes";
const APPLICATION_VND_ACCPAC_SIMPLY_ASO = "application/vnd.accpac.simply.aso";
const APPLICATION_VND_ACCPAC_SIMPLY_IMP = "application/vnd.accpac.simply.imp";
const APPLICATION_VND_ACUCOBOL = "application/vnd.acucobol";
const APPLICATION_VND_ACUCORP = "application/vnd.acucorp";
const APPLICATION_VND_ADOBE_AIR_APPLICATION_INSTALLER_PACKAGE_ZIP = "application/vnd.adobe.air-application-installer-package+zip";
const APPLICATION_VND_ADOBE_FORMSCENTRAL_FCDT = "application/vnd.adobe.formscentral.fcdt";
const APPLICATION_VND_ADOBE_FXP = "application/vnd.adobe.fxp";
const APPLICATION_VND_ADOBE_XDP_XML = "application/vnd.adobe.xdp+xml";
const APPLICATION_VND_AGE = "application/vnd.age";
const APPLICATION_VND_AHEAD_SPACE = "application/vnd.ahead.space";
const APPLICATION_VND_AIRZIP_FILESECURE_AZF = "application/vnd.airzip.filesecure.azf";
const APPLICATION_VND_AIRZIP_FILESECURE_AZS = "application/vnd.airzip.filesecure.azs";
const APPLICATION_VND_AMAZON_EBOOK = "application/vnd.amazon.ebook";
const APPLICATION_VND_AMERICANDYNAMICS_ACC = "application/vnd.americandynamics.acc";
const APPLICATION_VND_AMIGA_AMI = "application/vnd.amiga.ami";
const APPLICATION_VND_ANDROID_PACKAGE_ARCHIVE = "application/vnd.android.package-archive";
const APPLICATION_VND_ANSER_WEB_CERTIFICATE_ISSUE_INITIATION = "application/vnd.anser-web-certificate-issue-initiation";
const APPLICATION_VND_ANSER_WEB_FUNDS_TRANSFER_INITIATION = "application/vnd.anser-web-funds-transfer-initiation";
const APPLICATION_VND_ANTIX_GAME_COMPONENT = "application/vnd.antix.game-component";
const APPLICATION_VND_APPLE_INSTALLER_XML = "application/vnd.apple.installer+xml";
const APPLICATION_VND_APPLE_MPEGURL = "application/vnd.apple.mpegurl";
const APPLICATION_VND_APPLE_PKPASS = "application/vnd.apple.pkpass";
const APPLICATION_VND_ARISTANETWORKS_SWI = "application/vnd.aristanetworks.swi";
const APPLICATION_VND_ASTRAEA_SOFTWARE_IOTA = "application/vnd.astraea-software.iota";
const APPLICATION_VND_AUDIOGRAPH = "application/vnd.audiograph";
const APPLICATION_VND_BALSAMIQ_BMML_XML = "application/vnd.balsamiq.bmml+xml";
const APPLICATION_VND_BLUEICE_MULTIPASS = "application/vnd.blueice.multipass";
const APPLICATION_VND_BMI = "application/vnd.bmi";
const APPLICATION_VND_BUSINESSOBJECTS = "application/vnd.businessobjects";
const APPLICATION_VND_CHEMDRAW_XML = "application/vnd.chemdraw+xml";
const APPLICATION_VND_CHIPNUTS_KARAOKE_MMD = "application/vnd.chipnuts.karaoke-mmd";
const APPLICATION_VND_CINDERELLA = "application/vnd.cinderella";
const APPLICATION_VND_CITATIONSTYLES_STYLE_XML = "application/vnd.citationstyles.style+xml";
const APPLICATION_VND_CLAYMORE = "application/vnd.claymore";
const APPLICATION_VND_CLOANTO_RP9 = "application/vnd.cloanto.rp9";
const APPLICATION_VND_CLONK_C4GROUP = "application/vnd.clonk.c4group";
const APPLICATION_VND_CLUETRUST_CARTOMOBILE_CONFIG = "application/vnd.cluetrust.cartomobile-config";
const APPLICATION_VND_CLUETRUST_CARTOMOBILE_CONFIG_PKG = "application/vnd.cluetrust.cartomobile-config-pkg";
const APPLICATION_VND_COMMONSPACE = "application/vnd.commonspace";
const APPLICATION_VND_CONTACT_CMSG = "application/vnd.contact.cmsg";
const APPLICATION_VND_COSMOCALLER = "application/vnd.cosmocaller";
const APPLICATION_VND_CRICK_CLICKER = "application/vnd.crick.clicker";
const APPLICATION_VND_CRICK_CLICKER_KEYBOARD = "application/vnd.crick.clicker.keyboard";
const APPLICATION_VND_CRICK_CLICKER_PALETTE = "application/vnd.crick.clicker.palette";
const APPLICATION_VND_CRICK_CLICKER_TEMPLATE = "application/vnd.crick.clicker.template";
const APPLICATION_VND_CRICK_CLICKER_WORDBANK = "application/vnd.crick.clicker.wordbank";
const APPLICATION_VND_CRITICALTOOLS_WBS_XML = "application/vnd.criticaltools.wbs+xml";
const APPLICATION_VND_CTC_POSML = "application/vnd.ctc-posml";
const APPLICATION_VND_CUPS_PPD = "application/vnd.cups-ppd";
const APPLICATION_VND_CURL_CAR = "application/vnd.curl.car";
const APPLICATION_VND_CURL_PCURL = "application/vnd.curl.pcurl";
const APPLICATION_VND_DART = "application/vnd.dart";
const APPLICATION_VND_DATA_VISION_RDZ = "application/vnd.data-vision.rdz";
const APPLICATION_VND_DBF = "application/vnd.dbf";
const APPLICATION_VND_DECE_DATA = "application/vnd.dece.data";
const APPLICATION_VND_DECE_TTML_XML = "application/vnd.dece.ttml+xml";
const APPLICATION_VND_DECE_UNSPECIFIED = "application/vnd.dece.unspecified";
const APPLICATION_VND_DECE_ZIP = "application/vnd.dece.zip";
const APPLICATION_VND_DENOVO_FCSELAYOUT_LINK = "application/vnd.denovo.fcselayout-link";
const APPLICATION_VND_DNA = "application/vnd.dna";
const APPLICATION_VND_DOLBY_MLP = "application/vnd.dolby.mlp";
const APPLICATION_VND_DPGRAPH = "application/vnd.dpgraph";
const APPLICATION_VND_DREAMFACTORY = "application/vnd.dreamfactory";
const APPLICATION_VND_DS_KEYPOINT = "application/vnd.ds-keypoint";
const APPLICATION_VND_DVB_AIT = "application/vnd.dvb.ait";
const APPLICATION_VND_DVB_SERVICE = "application/vnd.dvb.service";
const APPLICATION_VND_DYNAGEO = "application/vnd.dynageo";
const APPLICATION_VND_ECOWIN_CHART = "application/vnd.ecowin.chart";
const APPLICATION_VND_ENLIVEN = "application/vnd.enliven";
const APPLICATION_VND_EPSON_ESF = "application/vnd.epson.esf";
const APPLICATION_VND_EPSON_MSF = "application/vnd.epson.msf";
const APPLICATION_VND_EPSON_QUICKANIME = "application/vnd.epson.quickanime";
const APPLICATION_VND_EPSON_SALT = "application/vnd.epson.salt";
const APPLICATION_VND_EPSON_SSF = "application/vnd.epson.ssf";
const APPLICATION_VND_ESZIGNO3_XML = "application/vnd.eszigno3+xml";
const APPLICATION_VND_EZPIX_ALBUM = "application/vnd.ezpix-album";
const APPLICATION_VND_EZPIX_PACKAGE = "application/vnd.ezpix-package";
const APPLICATION_VND_FDF = "application/vnd.fdf";
const APPLICATION_VND_FDSN_MSEED = "application/vnd.fdsn.mseed";
const APPLICATION_VND_FDSN_SEED = "application/vnd.fdsn.seed";
const APPLICATION_VND_FLOGRAPHIT = "application/vnd.flographit";
const APPLICATION_VND_FLUXTIME_CLIP = "application/vnd.fluxtime.clip";
const APPLICATION_VND_FRAMEMAKER = "application/vnd.framemaker";
const APPLICATION_VND_FROGANS_FNC = "application/vnd.frogans.fnc";
const APPLICATION_VND_FROGANS_LTF = "application/vnd.frogans.ltf";
const APPLICATION_VND_FSC_WEBLAUNCH = "application/vnd.fsc.weblaunch";
const APPLICATION_VND_FUJITSU_OASYS = "application/vnd.fujitsu.oasys";
const APPLICATION_VND_FUJITSU_OASYS2 = "application/vnd.fujitsu.oasys2";
const APPLICATION_VND_FUJITSU_OASYS3 = "application/vnd.fujitsu.oasys3";
const APPLICATION_VND_FUJITSU_OASYSGP = "application/vnd.fujitsu.oasysgp";
const APPLICATION_VND_FUJITSU_OASYSPRS = "application/vnd.fujitsu.oasysprs";
const APPLICATION_VND_FUJIXEROX_DDD = "application/vnd.fujixerox.ddd";
const APPLICATION_VND_FUJIXEROX_DOCUWORKS = "application/vnd.fujixerox.docuworks";
const APPLICATION_VND_FUJIXEROX_DOCUWORKS_BINDER = "application/vnd.fujixerox.docuworks.binder";
const APPLICATION_VND_FUZZYSHEET = "application/vnd.fuzzysheet";
const APPLICATION_VND_GENOMATIX_TUXEDO = "application/vnd.genomatix.tuxedo";
const APPLICATION_VND_GEOGEBRA_FILE = "application/vnd.geogebra.file";
const APPLICATION_VND_GEOGEBRA_TOOL = "application/vnd.geogebra.tool";
const APPLICATION_VND_GEOMETRY_EXPLORER = "application/vnd.geometry-explorer";
const APPLICATION_VND_GEONEXT = "application/vnd.geonext";
const APPLICATION_VND_GEOPLAN = "application/vnd.geoplan";
const APPLICATION_VND_GEOSPACE = "application/vnd.geospace";
const APPLICATION_VND_GMX = "application/vnd.gmx";
const APPLICATION_VND_GOOGLE_APPS_DOCUMENT = "application/vnd.google-apps.document";
const APPLICATION_VND_GOOGLE_APPS_PRESENTATION = "application/vnd.google-apps.presentation";
const APPLICATION_VND_GOOGLE_APPS_SPREADSHEET = "application/vnd.google-apps.spreadsheet";
const APPLICATION_VND_GOOGLE_EARTH_KML_XML = "application/vnd.google-earth.kml+xml";
const APPLICATION_VND_GOOGLE_EARTH_KMZ = "application/vnd.google-earth.kmz";
const APPLICATION_VND_GRAFEQ = "application/vnd.grafeq";
const APPLICATION_VND_GROOVE_ACCOUNT = "application/vnd.groove-account";
const APPLICATION_VND_GROOVE_HELP = "application/vnd.groove-help";
const APPLICATION_VND_GROOVE_IDENTITY_MESSAGE = "application/vnd.groove-identity-message";
const APPLICATION_VND_GROOVE_INJECTOR = "application/vnd.groove-injector";
const APPLICATION_VND_GROOVE_TOOL_MESSAGE = "application/vnd.groove-tool-message";
const APPLICATION_VND_GROOVE_TOOL_TEMPLATE = "application/vnd.groove-tool-template";
const APPLICATION_VND_GROOVE_VCARD = "application/vnd.groove-vcard";
const APPLICATION_VND_HAL_XML = "application/vnd.hal+xml";
const APPLICATION_VND_HANDHELD_ENTERTAINMENT_XML = "application/vnd.handheld-entertainment+xml";
const APPLICATION_VND_HBCI = "application/vnd.hbci";
const APPLICATION_VND_HHE_LESSON_PLAYER = "application/vnd.hhe.lesson-player";
const APPLICATION_VND_HP_HPGL = "application/vnd.hp-hpgl";
const APPLICATION_VND_HP_HPID = "application/vnd.hp-hpid";
const APPLICATION_VND_HP_HPS = "application/vnd.hp-hps";
const APPLICATION_VND_HP_JLYT = "application/vnd.hp-jlyt";
const APPLICATION_VND_HP_PCL = "application/vnd.hp-pcl";
const APPLICATION_VND_HP_PCLXL = "application/vnd.hp-pclxl";
const APPLICATION_VND_HYDROSTATIX_SOF_DATA = "application/vnd.hydrostatix.sof-data";
const APPLICATION_VND_IBM_MINIPAY = "application/vnd.ibm.minipay";
const APPLICATION_VND_IBM_MODCAP = "application/vnd.ibm.modcap";
const APPLICATION_VND_IBM_RIGHTS_MANAGEMENT = "application/vnd.ibm.rights-management";
const APPLICATION_VND_IBM_SECURE_CONTAINER = "application/vnd.ibm.secure-container";
const APPLICATION_VND_ICCPROFILE = "application/vnd.iccprofile";
const APPLICATION_VND_IGLOADER = "application/vnd.igloader";
const APPLICATION_VND_IMMERVISION_IVP = "application/vnd.immervision-ivp";
const APPLICATION_VND_IMMERVISION_IVU = "application/vnd.immervision-ivu";
const APPLICATION_VND_INSORS_IGM = "application/vnd.insors.igm";
const APPLICATION_VND_INTERCON_FORMNET = "application/vnd.intercon.formnet";
const APPLICATION_VND_INTERGEO = "application/vnd.intergeo";
const APPLICATION_VND_INTU_QBO = "application/vnd.intu.qbo";
const APPLICATION_VND_INTU_QFX = "application/vnd.intu.qfx";
const APPLICATION_VND_IPUNPLUGGED_RCPROFILE = "application/vnd.ipunplugged.rcprofile";
const APPLICATION_VND_IREPOSITORY_PACKAGE_XML = "application/vnd.irepository.package+xml";
const APPLICATION_VND_IS_XPR = "application/vnd.is-xpr";
const APPLICATION_VND_ISAC_FCS = "application/vnd.isac.fcs";
const APPLICATION_VND_JAM = "application/vnd.jam";
const APPLICATION_VND_JCP_JAVAME_MIDLET_RMS = "application/vnd.jcp.javame.midlet-rms";
const APPLICATION_VND_JISP = "application/vnd.jisp";
const APPLICATION_VND_JOOST_JODA_ARCHIVE = "application/vnd.joost.joda-archive";
const APPLICATION_VND_KAHOOTZ = "application/vnd.kahootz";
const APPLICATION_VND_KDE_KARBON = "application/vnd.kde.karbon";
const APPLICATION_VND_KDE_KCHART = "application/vnd.kde.kchart";
const APPLICATION_VND_KDE_KFORMULA = "application/vnd.kde.kformula";
const APPLICATION_VND_KDE_KIVIO = "application/vnd.kde.kivio";
const APPLICATION_VND_KDE_KONTOUR = "application/vnd.kde.kontour";
const APPLICATION_VND_KDE_KPRESENTER = "application/vnd.kde.kpresenter";
const APPLICATION_VND_KDE_KSPREAD = "application/vnd.kde.kspread";
const APPLICATION_VND_KDE_KWORD = "application/vnd.kde.kword";
const APPLICATION_VND_KENAMEAAPP = "application/vnd.kenameaapp";
const APPLICATION_VND_KIDSPIRATION = "application/vnd.kidspiration";
const APPLICATION_VND_KINAR = "application/vnd.kinar";
const APPLICATION_VND_KOAN = "application/vnd.koan";
const APPLICATION_VND_KODAK_DESCRIPTOR = "application/vnd.kodak-descriptor";
const APPLICATION_VND_LAS_LAS_XML = "application/vnd.las.las+xml";
const APPLICATION_VND_LLAMAGRAPHICS_LIFE_BALANCE_DESKTOP = "application/vnd.llamagraphics.life-balance.desktop";
const APPLICATION_VND_LLAMAGRAPHICS_LIFE_BALANCE_EXCHANGE_XML = "application/vnd.llamagraphics.life-balance.exchange+xml";
const APPLICATION_VND_LOTUS_1_2_3 = "application/vnd.lotus-1-2-3";
const APPLICATION_VND_LOTUS_APPROACH = "application/vnd.lotus-approach";
const APPLICATION_VND_LOTUS_FREELANCE = "application/vnd.lotus-freelance";
const APPLICATION_VND_LOTUS_NOTES = "application/vnd.lotus-notes";
const APPLICATION_VND_LOTUS_SCREENCAM = "application/vnd.lotus-screencam";
const APPLICATION_VND_LOTUS_WORDPRO = "application/vnd.lotus-wordpro";
const APPLICATION_VND_MACPORTS_PORTPKG = "application/vnd.macports.portpkg";
const APPLICATION_VND_MAPBOX_VECTOR_TILE = "application/vnd.mapbox-vector-tile";
const APPLICATION_VND_MCD = "application/vnd.mcd";
const APPLICATION_VND_MEDCALCDATA = "application/vnd.medcalcdata";
const APPLICATION_VND_MEDIASTATION_CDKEY = "application/vnd.mediastation.cdkey";
const APPLICATION_VND_MFER = "application/vnd.mfer";
const APPLICATION_VND_MFMP = "application/vnd.mfmp";
const APPLICATION_VND_MICROGRAFX_FLO = "application/vnd.micrografx.flo";
const APPLICATION_VND_MICROGRAFX_IGX = "application/vnd.micrografx.igx";
const APPLICATION_VND_MIF = "application/vnd.mif";
const APPLICATION_VND_MOBIUS_DAF = "application/vnd.mobius.daf";
const APPLICATION_VND_MOBIUS_DIS = "application/vnd.mobius.dis";
const APPLICATION_VND_MOBIUS_MBK = "application/vnd.mobius.mbk";
const APPLICATION_VND_MOBIUS_MQY = "application/vnd.mobius.mqy";
const APPLICATION_VND_MOBIUS_MSL = "application/vnd.mobius.msl";
const APPLICATION_VND_MOBIUS_PLC = "application/vnd.mobius.plc";
const APPLICATION_VND_MOBIUS_TXF = "application/vnd.mobius.txf";
const APPLICATION_VND_MOPHUN_APPLICATION = "application/vnd.mophun.application";
const APPLICATION_VND_MOPHUN_CERTIFICATE = "application/vnd.mophun.certificate";
const APPLICATION_VND_MOZILLA_XUL_XML = "application/vnd.mozilla.xul+xml";
const APPLICATION_VND_MPEGURL = "application/vnd.mpegurl";
const APPLICATION_VND_MS_ARTGALRY = "application/vnd.ms-artgalry";
const APPLICATION_VND_MS_CAB_COMPRESSED = "application/vnd.ms-cab-compressed";
const APPLICATION_VND_MS_EXCEL = "application/vnd.ms-excel";
const APPLICATION_VND_MS_EXCEL_ADDIN_MACROENABLED_12 = "application/vnd.ms-excel.addin.macroEnabled.12";
const APPLICATION_VND_MS_EXCEL_SHEET_BINARY_MACROENABLED_12 = "application/vnd.ms-excel.sheet.binary.macroEnabled.12";
const APPLICATION_VND_MS_EXCEL_SHEET_MACROENABLED_12 = "application/vnd.ms-excel.sheet.macroEnabled.12";
const APPLICATION_VND_MS_EXCEL_TEMPLATE_MACROENABLED_12 = "application/vnd.ms-excel.template.macroEnabled.12";
const APPLICATION_VND_MS_FONTOBJECT = "application/vnd.ms-fontobject";
const APPLICATION_VND_MS_HTMLHELP = "application/vnd.ms-htmlhelp";
const APPLICATION_VND_MS_IMS = "application/vnd.ms-ims";
const APPLICATION_VND_MS_LRM = "application/vnd.ms-lrm";
const APPLICATION_VND_MS_OFFICETHEME = "application/vnd.ms-officetheme";
const APPLICATION_VND_MS_OUTLOOK = "application/vnd.ms-outlook";
const APPLICATION_VND_MS_PKI_SECCAT = "application/vnd.ms-pki.seccat";
const APPLICATION_VND_MS_POWERPOINT = "application/vnd.ms-powerpoint";
const APPLICATION_VND_MS_POWERPOINT_ADDIN_MACROENABLED_12 = "application/vnd.ms-powerpoint.addin.macroEnabled.12";
const APPLICATION_VND_MS_POWERPOINT_PRESENTATION_MACROENABLED_12 = "application/vnd.ms-powerpoint.presentation.macroEnabled.12";
const APPLICATION_VND_MS_POWERPOINT_SLIDE_MACROENABLED_12 = "application/vnd.ms-powerpoint.slide.macroenabled.12";
const APPLICATION_VND_MS_POWERPOINT_SLIDESHOW_MACROENABLED_12 = "application/vnd.ms-powerpoint.slideshow.macroEnabled.12";
const APPLICATION_VND_MS_PROJECT = "application/vnd.ms-project";
const APPLICATION_VND_MS_WORD_TEMPLATE_MACROENABLED_12 = "application/vnd.ms-word.template.macroEnabled.12";
const APPLICATION_VND_MS_WORKS = "application/vnd.ms-works";
const APPLICATION_VND_MS_WPL = "application/vnd.ms-wpl";
const APPLICATION_VND_MS_XPSDOCUMENT = "application/vnd.ms-xpsdocument";
const APPLICATION_VND_MSEQ = "application/vnd.mseq";
const APPLICATION_VND_MUSICIAN = "application/vnd.musician";
const APPLICATION_VND_MUVEE_STYLE = "application/vnd.muvee.style";
const APPLICATION_VND_MYNFC = "application/vnd.mynfc";
const APPLICATION_VND_NEUROLANGUAGE_NLU = "application/vnd.neurolanguage.nlu";
const APPLICATION_VND_NITF = "application/vnd.nitf";
const APPLICATION_VND_NOBLENET_DIRECTORY = "application/vnd.noblenet-directory";
const APPLICATION_VND_NOBLENET_SEALER = "application/vnd.noblenet-sealer";
const APPLICATION_VND_NOBLENET_WEB = "application/vnd.noblenet-web";
const APPLICATION_VND_NOKIA_N_GAGE_AC_XML = "application/vnd.nokia.n-gage.ac+xml";
const APPLICATION_VND_NOKIA_N_GAGE_DATA = "application/vnd.nokia.n-gage.data";
const APPLICATION_VND_NOKIA_N_GAGE_SYMBIAN_INSTALL = "application/vnd.nokia.n-gage.symbian.install";
const APPLICATION_VND_NOKIA_RADIO_PRESET = "application/vnd.nokia.radio-preset";
const APPLICATION_VND_NOKIA_RADIO_PRESETS = "application/vnd.nokia.radio-presets";
const APPLICATION_VND_NOVADIGM_EDM = "application/vnd.novadigm.edm";
const APPLICATION_VND_NOVADIGM_EDX = "application/vnd.novadigm.edx";
const APPLICATION_VND_NOVADIGM_EXT = "application/vnd.novadigm.ext";
const APPLICATION_VND_OASIS_OPENDOCUMENT_CHART = "application/vnd.oasis.opendocument.chart";
const APPLICATION_VND_OASIS_OPENDOCUMENT_CHART_TEMPLATE = "application/vnd.oasis.opendocument.chart-template";
const APPLICATION_VND_OASIS_OPENDOCUMENT_DATABASE = "application/vnd.oasis.opendocument.database";
const APPLICATION_VND_OASIS_OPENDOCUMENT_FORMULA = "application/vnd.oasis.opendocument.formula";
const APPLICATION_VND_OASIS_OPENDOCUMENT_FORMULA_TEMPLATE = "application/vnd.oasis.opendocument.formula-template";
const APPLICATION_VND_OASIS_OPENDOCUMENT_GRAPHICS = "application/vnd.oasis.opendocument.graphics";
const APPLICATION_VND_OASIS_OPENDOCUMENT_GRAPHICS_TEMPLATE = "application/vnd.oasis.opendocument.graphics-template";
const APPLICATION_VND_OASIS_OPENDOCUMENT_IMAGE = "application/vnd.oasis.opendocument.image";
const APPLICATION_VND_OASIS_OPENDOCUMENT_IMAGE_TEMPLATE = "application/vnd.oasis.opendocument.image-template";
const APPLICATION_VND_OASIS_OPENDOCUMENT_PRESENTATION = "application/vnd.oasis.opendocument.presentation";
const APPLICATION_VND_OASIS_OPENDOCUMENT_PRESENTATION_TEMPLATE = "application/vnd.oasis.opendocument.presentation-template";
const APPLICATION_VND_OASIS_OPENDOCUMENT_SPREADSHEET = "application/vnd.oasis.opendocument.spreadsheet";
const APPLICATION_VND_OASIS_OPENDOCUMENT_SPREADSHEET_TEMPLATE = "application/vnd.oasis.opendocument.spreadsheet-template";
const APPLICATION_VND_OASIS_OPENDOCUMENT_TEXT = "application/vnd.oasis.opendocument.text";
const APPLICATION_VND_OASIS_OPENDOCUMENT_TEXT_MASTER = "application/vnd.oasis.opendocument.text-master";
const APPLICATION_VND_OASIS_OPENDOCUMENT_TEXT_TEMPLATE = "application/vnd.oasis.opendocument.text-template";
const APPLICATION_VND_OASIS_OPENDOCUMENT_TEXT_WEB = "application/vnd.oasis.opendocument.text-web";
const APPLICATION_VND_OLPC_SUGAR = "application/vnd.olpc-sugar";
const APPLICATION_VND_OMA_DD2_XML = "application/vnd.oma.dd2+xml";
const APPLICATION_VND_OPENBLOX_GAME_XML = "application/vnd.openblox.game+xml";
const APPLICATION_VND_OPENOFFICEORG_EXTENSION = "application/vnd.openofficeorg.extension";
const APPLICATION_VND_OPENSTREETMAP_DATA_XML = "application/vnd.openstreetmap.data+xml";
const APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_PRESENTATIONML_PRESENTATION = "application/vnd.openxmlformats-officedocument.presentationml.presentation";
const APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_PRESENTATIONML_SLIDE = "application/vnd.openxmlformats-officedocument.presentationml.slide";
const APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_PRESENTATIONML_SLIDESHOW = "application/vnd.openxmlformats-officedocument.presentationml.slideshow";
const APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_PRESENTATIONML_TEMPLATE = "application/vnd.openxmlformats-officedocument.presentationml.template";
const APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_SPREADSHEETML_SHEET = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
const APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_SPREADSHEETML_TEMPLATE = "application/vnd.openxmlformats-officedocument.spreadsheetml.template";
const APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_WORDPROCESSINGML_DOCUMENT = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
const APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_WORDPROCESSINGML_TEMPLATE = "application/vnd.openxmlformats-officedocument.wordprocessingml.template";
const APPLICATION_VND_OSGEO_MAPGUIDE_PACKAGE = "application/vnd.osgeo.mapguide.package";
const APPLICATION_VND_OSGI_DP = "application/vnd.osgi.dp";
const APPLICATION_VND_OSGI_SUBSYSTEM = "application/vnd.osgi.subsystem";
const APPLICATION_VND_PALM = "application/vnd.palm";
const APPLICATION_VND_PAWAAFILE = "application/vnd.pawaafile";
const APPLICATION_VND_PG_FORMAT = "application/vnd.pg.format";
const APPLICATION_VND_PG_OSASLI = "application/vnd.pg.osasli";
const APPLICATION_VND_PICSEL = "application/vnd.picsel";
const APPLICATION_VND_PMI_WIDGET = "application/vnd.pmi.widget";
const APPLICATION_VND_POCKETLEARN = "application/vnd.pocketlearn";
const APPLICATION_VND_POWERBUILDER6 = "application/vnd.powerbuilder6";
const APPLICATION_VND_PREVIEWSYSTEMS_BOX = "application/vnd.previewsystems.box";
const APPLICATION_VND_PROTEUS_MAGAZINE = "application/vnd.proteus.magazine";
const APPLICATION_VND_PUBLISHARE_DELTA_TREE = "application/vnd.publishare-delta-tree";
const APPLICATION_VND_PVI_PTID1 = "application/vnd.pvi.ptid1";
const APPLICATION_VND_PWG_XHTML_PRINT_XML = "application/vnd.pwg-xhtml-print+xml";
const APPLICATION_VND_QUARK_QUARKXPRESS = "application/vnd.quark.quarkxpress";
const APPLICATION_VND_REALVNC_BED = "application/vnd.realvnc.bed";
const APPLICATION_VND_RECORDARE_MUSICXML = "application/vnd.recordare.musicxml";
const APPLICATION_VND_RECORDARE_MUSICXML_XML = "application/vnd.recordare.musicxml+xml";
const APPLICATION_VND_RIG_CRYPTONOTE = "application/vnd.rig.cryptonote";
const APPLICATION_VND_RIM_COD = "application/vnd.rim.cod";
const APPLICATION_VND_RN_REALMEDIA_VBR = "application/vnd.rn-realmedia-vbr";
const APPLICATION_VND_ROUTE66_LINK66_XML = "application/vnd.route66.link66+xml";
const APPLICATION_VND_SAILINGTRACKER_TRACK = "application/vnd.sailingtracker.track";
const APPLICATION_VND_SEEMAIL = "application/vnd.seemail";
const APPLICATION_VND_SEMA = "application/vnd.sema";
const APPLICATION_VND_SEMD = "application/vnd.semd";
const APPLICATION_VND_SEMF = "application/vnd.semf";
const APPLICATION_VND_SHANA_INFORMED_FORMDATA = "application/vnd.shana.informed.formdata";
const APPLICATION_VND_SHANA_INFORMED_FORMTEMPLATE = "application/vnd.shana.informed.formtemplate";
const APPLICATION_VND_SHANA_INFORMED_INTERCHANGE = "application/vnd.shana.informed.interchange";
const APPLICATION_VND_SHANA_INFORMED_PACKAGE = "application/vnd.shana.informed.package";
const APPLICATION_VND_SIMTECH_MINDMAPPER = "application/vnd.simtech-mindmapper";
const APPLICATION_VND_SMAF = "application/vnd.smaf";
const APPLICATION_VND_SMART_TEACHER = "application/vnd.smart.teacher";
const APPLICATION_VND_SOFTWARE602_FILLER_FORM_XML = "application/vnd.software602.filler.form+xml";
const APPLICATION_VND_SOLENT_SDKM_XML = "application/vnd.solent.sdkm+xml";
const APPLICATION_VND_SPOTFIRE_DXP = "application/vnd.spotfire.dxp";
const APPLICATION_VND_SPOTFIRE_SFS = "application/vnd.spotfire.sfs";
const APPLICATION_VND_STARDIVISION_CALC = "application/vnd.stardivision.calc";
const APPLICATION_VND_STARDIVISION_DRAW = "application/vnd.stardivision.draw";
const APPLICATION_VND_STARDIVISION_IMPRESS = "application/vnd.stardivision.impress";
const APPLICATION_VND_STARDIVISION_MATH = "application/vnd.stardivision.math";
const APPLICATION_VND_STARDIVISION_WRITER = "application/vnd.stardivision.writer";
const APPLICATION_VND_STARDIVISION_WRITER_GLOBAL = "application/vnd.stardivision.writer-global";
const APPLICATION_VND_STEPMANIA_PACKAGE = "application/vnd.stepmania.package";
const APPLICATION_VND_STEPMANIA_STEPCHART = "application/vnd.stepmania.stepchart";
const APPLICATION_VND_SUN_WADL_XML = "application/vnd.sun.wadl+xml";
const APPLICATION_VND_SUN_XML_CALC = "application/vnd.sun.xml.calc";
const APPLICATION_VND_SUN_XML_CALC_TEMPLATE = "application/vnd.sun.xml.calc.template";
const APPLICATION_VND_SUN_XML_DRAW = "application/vnd.sun.xml.draw";
const APPLICATION_VND_SUN_XML_DRAW_TEMPLATE = "application/vnd.sun.xml.draw.template";
const APPLICATION_VND_SUN_XML_IMPRESS = "application/vnd.sun.xml.impress";
const APPLICATION_VND_SUN_XML_IMPRESS_TEMPLATE = "application/vnd.sun.xml.impress.template";
const APPLICATION_VND_SUN_XML_MATH = "application/vnd.sun.xml.math";
const APPLICATION_VND_SUN_XML_WRITER = "application/vnd.sun.xml.writer";
const APPLICATION_VND_SUN_XML_WRITER_GLOBAL = "application/vnd.sun.xml.writer.global";
const APPLICATION_VND_SUN_XML_WRITER_TEMPLATE = "application/vnd.sun.xml.writer.template";
const APPLICATION_VND_SUS_CALENDAR = "application/vnd.sus-calendar";
const APPLICATION_VND_SVD = "application/vnd.svd";
const APPLICATION_VND_SYMBIAN_INSTALL = "application/vnd.symbian.install";
const APPLICATION_VND_SYNCML_XML = "application/vnd.syncml+xml";
const APPLICATION_VND_SYNCML_DM_WBXML = "application/vnd.syncml.dm+wbxml";
const APPLICATION_VND_SYNCML_DM_XML = "application/vnd.syncml.dm+xml";
const APPLICATION_VND_SYNCML_DMDDF_XML = "application/vnd.syncml.dmddf+xml";
const APPLICATION_VND_TAO_INTENT_MODULE_ARCHIVE = "application/vnd.tao.intent-module-archive";
const APPLICATION_VND_TCPDUMP_PCAP = "application/vnd.tcpdump.pcap";
const APPLICATION_VND_TMOBILE_LIVETV = "application/vnd.tmobile-livetv";
const APPLICATION_VND_TRID_TPT = "application/vnd.trid.tpt";
const APPLICATION_VND_TRISCAPE_MXS = "application/vnd.triscape.mxs";
const APPLICATION_VND_TRUEAPP = "application/vnd.trueapp";
const APPLICATION_VND_UFDL = "application/vnd.ufdl";
const APPLICATION_VND_UIQ_THEME = "application/vnd.uiq.theme";
const APPLICATION_VND_UMAJIN = "application/vnd.umajin";
const APPLICATION_VND_UNITY = "application/vnd.unity";
const APPLICATION_VND_UOML_XML = "application/vnd.uoml+xml";
const APPLICATION_VND_VCX = "application/vnd.vcx";
const APPLICATION_VND_VISIO = "application/vnd.visio";
const APPLICATION_VND_VISIONARY = "application/vnd.visionary";
const APPLICATION_VND_VSF = "application/vnd.vsf";
const APPLICATION_VND_WAP_WMLSCRIPTC = "application/vnd.wap.wmlscriptc";
const APPLICATION_VND_WEBTURBO = "application/vnd.webturbo";
const APPLICATION_VND_WOLFRAM_PLAYER = "application/vnd.wolfram.player";
const APPLICATION_VND_WORDPERFECT = "application/vnd.wordperfect";
const APPLICATION_VND_WQD = "application/vnd.wqd";
const APPLICATION_VND_WT_STF = "application/vnd.wt.stf";
const APPLICATION_VND_XARA = "application/vnd.xara";
const APPLICATION_VND_XFDL = "application/vnd.xfdl";
const APPLICATION_VND_YAMAHA_HV_DIC = "application/vnd.yamaha.hv-dic";
const APPLICATION_VND_YAMAHA_HV_SCRIPT = "application/vnd.yamaha.hv-script";
const APPLICATION_VND_YAMAHA_HV_VOICE = "application/vnd.yamaha.hv-voice";
const APPLICATION_VND_YAMAHA_OPENSCOREFORMAT = "application/vnd.yamaha.openscoreformat";
const APPLICATION_VND_YAMAHA_OPENSCOREFORMAT_OSFPVG_XML = "application/vnd.yamaha.openscoreformat.osfpvg+xml";
const APPLICATION_VND_YAMAHA_SMAF_AUDIO = "application/vnd.yamaha.smaf-audio";
const APPLICATION_VND_YAMAHA_SMAF_PHRASE = "application/vnd.yamaha.smaf-phrase";
const APPLICATION_VND_YELLOWRIVER_CUSTOM_MENU = "application/vnd.yellowriver-custom-menu";
const APPLICATION_VND_ZUL = "application/vnd.zul";
const APPLICATION_VND_ZZAZZ_DECK_XML = "application/vnd.zzazz.deck+xml";
const APPLICATION_VOICEXML_XML = "application/voicexml+xml";
const APPLICATION_WASM = "application/wasm";
const APPLICATION_WATCHERINFO_XML = "application/watcherinfo+xml";
const APPLICATION_WBXML = "application/wbxml";
const APPLICATION_WIDGET = "application/widget";
const APPLICATION_WINHLP = "application/winhlp";
const APPLICATION_WMLC = "application/wmlc";
const APPLICATION_WSDL_XML = "application/wsdl+xml";
const APPLICATION_WSPOLICY_XML = "application/wspolicy+xml";
const APPLICATION_X_7Z_COMPRESSED = "application/x-7z-compressed";
const APPLICATION_X_ABIWORD = "application/x-abiword";
const APPLICATION_X_ACE_COMPRESSED = "application/x-ace-compressed";
const APPLICATION_X_APPLE_DISKIMAGE = "application/x-apple-diskimage";
const APPLICATION_X_ARJ = "application/x-arj";
const APPLICATION_X_AUTHORWARE_BIN = "application/x-authorware-bin";
const APPLICATION_X_AUTHORWARE_MAP = "application/x-authorware-map";
const APPLICATION_X_AUTHORWARE_SEG = "application/x-authorware-seg";
const APPLICATION_X_BCPIO = "application/x-bcpio";
const APPLICATION_X_BDOC = "application/x-bdoc";
const APPLICATION_X_BITTORRENT = "application/x-bittorrent";
const APPLICATION_X_BLORB = "application/x-blorb";
const APPLICATION_X_BZIP = "application/x-bzip";
const APPLICATION_X_BZIP2 = "application/x-bzip2";
const APPLICATION_X_CBR = "application/x-cbr";
const APPLICATION_X_CDLINK = "application/x-cdlink";
const APPLICATION_X_CFS_COMPRESSED = "application/x-cfs-compressed";
const APPLICATION_X_CHAT = "application/x-chat";
const APPLICATION_X_CHESS_PGN = "application/x-chess-pgn";
const APPLICATION_X_CHROME_EXTENSION = "application/x-chrome-extension";
const APPLICATION_X_COCOA = "application/x-cocoa";
const APPLICATION_X_COMPRESS = "application/x-compress";
const APPLICATION_X_CONFERENCE = "application/x-conference";
const APPLICATION_X_CPIO = "application/x-cpio";
const APPLICATION_X_CSH = "application/x-csh";
const APPLICATION_X_DEBIAN_PACKAGE = "application/x-debian-package";
const APPLICATION_X_DGC_COMPRESSED = "application/x-dgc-compressed";
const APPLICATION_X_DIRECTOR = "application/x-director";
const APPLICATION_X_DOOM = "application/x-doom";
const APPLICATION_X_DTBNCX_XML = "application/x-dtbncx+xml";
const APPLICATION_X_DTBOOK_XML = "application/x-dtbook+xml";
const APPLICATION_X_DTBRESOURCE_XML = "application/x-dtbresource+xml";
const APPLICATION_X_DVI = "application/x-dvi";
const APPLICATION_X_ENVOY = "application/x-envoy";
const APPLICATION_X_EVA = "application/x-eva";
const APPLICATION_X_FONT_BDF = "application/x-font-bdf";
const APPLICATION_X_FONT_GHOSTSCRIPT = "application/x-font-ghostscript";
const APPLICATION_X_FONT_LINUX_PSF = "application/x-font-linux-psf";
const APPLICATION_X_FONT_PCF = "application/x-font-pcf";
const APPLICATION_X_FONT_SNF = "application/x-font-snf";
const APPLICATION_X_FONT_TYPE1 = "application/x-font-type1";
const APPLICATION_X_FREEARC = "application/x-freearc";
const APPLICATION_X_FUTURESPLASH = "application/x-futuresplash";
const APPLICATION_X_GCA_COMPRESSED = "application/x-gca-compressed";
const APPLICATION_X_GLULX = "application/x-glulx";
const APPLICATION_X_GNUMERIC = "application/x-gnumeric";
const APPLICATION_X_GRAMPS_XML = "application/x-gramps-xml";
const APPLICATION_X_GTAR = "application/x-gtar";
const APPLICATION_X_HDF = "application/x-hdf";
const APPLICATION_X_HTTPD_PHP = "application/x-httpd-php";
const APPLICATION_X_HTTPD_PHP_SOURCE = "application/x-httpd-php-source";
const APPLICATION_X_INSTALL_INSTRUCTIONS = "application/x-install-instructions";
const APPLICATION_X_ISO9660_IMAGE = "application/x-iso9660-image";
const APPLICATION_X_IWORK_KEYNOTE_SFFKEY = "application/x-iwork-keynote-sffkey";
const APPLICATION_X_IWORK_NUMBERS_SFFNUMBERS = "application/x-iwork-numbers-sffnumbers";
const APPLICATION_X_IWORK_PAGES_SFFPAGES = "application/x-iwork-pages-sffpages";
const APPLICATION_X_JAVA_ARCHIVE_DIFF = "application/x-java-archive-diff";
const APPLICATION_X_JAVA_JNLP_FILE = "application/x-java-jnlp-file";
const APPLICATION_X_KEEPASS2 = "application/x-keepass2";
const APPLICATION_X_LATEX = "application/x-latex";
const APPLICATION_X_LUA_BYTECODE = "application/x-lua-bytecode";
const APPLICATION_X_MAKESELF = "application/x-makeself";
const APPLICATION_X_MIE = "application/x-mie";
const APPLICATION_X_MOBIPOCKET_EBOOK = "application/x-mobipocket-ebook";
const APPLICATION_X_MS_APPLICATION = "application/x-ms-application";
const APPLICATION_X_MS_SHORTCUT = "application/x-ms-shortcut";
const APPLICATION_X_MS_WMD = "application/x-ms-wmd";
const APPLICATION_X_MS_XBAP = "application/x-ms-xbap";
const APPLICATION_X_MSACCESS = "application/x-msaccess";
const APPLICATION_X_MSBINDER = "application/x-msbinder";
const APPLICATION_X_MSCARDFILE = "application/x-mscardfile";
const APPLICATION_X_MSCLIP = "application/x-msclip";
const APPLICATION_X_MSDOWNLOAD = "application/x-msdownload";
const APPLICATION_X_MSMEDIAVIEW = "application/x-msmediaview";
const APPLICATION_X_MSMETAFILE = "application/x-msmetafile";
const APPLICATION_X_MSMONEY = "application/x-msmoney";
const APPLICATION_X_MSPUBLISHER = "application/x-mspublisher";
const APPLICATION_X_MSSCHEDULE = "application/x-msschedule";
const APPLICATION_X_MSTERMINAL = "application/x-msterminal";
const APPLICATION_X_MSWRITE = "application/x-mswrite";
const APPLICATION_X_NDJSON = "application/x-ndjson";
const APPLICATION_X_NETCDF = "application/x-netcdf";
const APPLICATION_X_NS_PROXY_AUTOCONFIG = "application/x-ns-proxy-autoconfig";
const APPLICATION_X_NZB = "application/x-nzb";
const APPLICATION_X_PERL = "application/x-perl";
const APPLICATION_X_PHOTOSHOP = "application/x-photoshop";
const APPLICATION_X_PILOT = "application/x-pilot";
const APPLICATION_X_PKCS10 = "application/x-pkcs10";
const APPLICATION_X_PKCS12 = "application/x-pkcs12";
const APPLICATION_X_PKCS7 = "application/x-pkcs7";
const APPLICATION_X_PKCS7_CERTIFICATES = "application/x-pkcs7-certificates";
const APPLICATION_X_PKCS7_CERTREQRESP = "application/x-pkcs7-certreqresp";
const APPLICATION_X_PKCS7_SIGNATURE = "application/x-pkcs7-signature";
const APPLICATION_X_RAR = "application/x-rar";
const APPLICATION_X_RESEARCH_INFO_SYSTEMS = "application/x-research-info-systems";
const APPLICATION_X_SH = "application/x-sh";
const APPLICATION_X_SHAR = "application/x-shar";
const APPLICATION_X_SHOCKWAVE_FLASH = "application/x-shockwave-flash";
const APPLICATION_X_SILVERLIGHT_APP = "application/x-silverlight-app";
const APPLICATION_X_SQL = "application/x-sql";
const APPLICATION_X_STUFFIT = "application/x-stuffit";
const APPLICATION_X_STUFFITX = "application/x-stuffitx";
const APPLICATION_X_SUBRIP = "application/x-subrip";
const APPLICATION_X_SV4CPIO = "application/x-sv4cpio";
const APPLICATION_X_SV4CRC = "application/x-sv4crc";
const APPLICATION_X_T3VM_IMAGE = "application/x-t3vm-image";
const APPLICATION_X_TADS = "application/x-tads";
const APPLICATION_X_TAR = "application/x-tar";
const APPLICATION_X_TCL = "application/x-tcl";
const APPLICATION_X_TEX = "application/x-tex";
const APPLICATION_X_TEX_TFM = "application/x-tex-tfm";
const APPLICATION_X_TEXINFO = "application/x-texinfo";
const APPLICATION_X_USTAR = "application/x-ustar";
const APPLICATION_X_VIRTUALBOX_HDD = "application/x-virtualbox-hdd";
const APPLICATION_X_VIRTUALBOX_OVA = "application/x-virtualbox-ova";
const APPLICATION_X_VIRTUALBOX_OVF = "application/x-virtualbox-ovf";
const APPLICATION_X_VIRTUALBOX_VBOX = "application/x-virtualbox-vbox";
const APPLICATION_X_VIRTUALBOX_VBOX_EXTPACK = "application/x-virtualbox-vbox-extpack";
const APPLICATION_X_VIRTUALBOX_VDI = "application/x-virtualbox-vdi";
const APPLICATION_X_VIRTUALBOX_VHD = "application/x-virtualbox-vhd";
const APPLICATION_X_VIRTUALBOX_VMDK = "application/x-virtualbox-vmdk";
const APPLICATION_X_WAIS_SOURCE = "application/x-wais-source";
const APPLICATION_X_WEB_APP_MANIFEST_JSON = "application/x-web-app-manifest+json";
const APPLICATION_X_X509_CA_CERT = "application/x-x509-ca-cert";
const APPLICATION_X_X509_USER_CERT = "application/x-x509-user-cert";
const APPLICATION_X_XFIG = "application/x-xfig";
const APPLICATION_X_XPINSTALL = "application/x-xpinstall";
const APPLICATION_X_XZ = "application/x-xz";
const APPLICATION_X_ZMACHINE = "application/x-zmachine";
const APPLICATION_XAML_XML = "application/xaml+xml";
const APPLICATION_XCAP_ATT_XML = "application/xcap-att+xml";
const APPLICATION_XCAP_CAPS_XML = "application/xcap-caps+xml";
const APPLICATION_XCAP_DIFF_XML = "application/xcap-diff+xml";
const APPLICATION_XCAP_EL_XML = "application/xcap-el+xml";
const APPLICATION_XCAP_NS_XML = "application/xcap-ns+xml";
const APPLICATION_XENC_XML = "application/xenc+xml";
const APPLICATION_XFDF = "application/xfdf";
const APPLICATION_XHTML_XML = "application/xhtml+xml";
const APPLICATION_XLIFF_XML = "application/xliff+xml";
const APPLICATION_XML = "application/xml";
const APPLICATION_XML_DTD = "application/xml-dtd";
const APPLICATION_XOP_XML = "application/xop+xml";
const APPLICATION_XPROC_XML = "application/xproc+xml";
const APPLICATION_XSLT_XML = "application/xslt+xml";
const APPLICATION_XSPF_XML = "application/xspf+xml";
const APPLICATION_XV_XML = "application/xv+xml";
const APPLICATION_YANG = "application/yang";
const APPLICATION_YIN_XML = "application/yin+xml";
const APPLICATION_ZIP = "application/zip";
const AUDIO_AAC = "audio/aac";
const AUDIO_AC3 = "audio/ac3";
const AUDIO_ACC = "audio/acc";
const AUDIO_ADPCM = "audio/adpcm";
const AUDIO_AMR = "audio/amr";
const AUDIO_BASIC = "audio/basic";
const AUDIO_MIDI = "audio/midi";
const AUDIO_MOBILE_XMF = "audio/mobile-xmf";
const AUDIO_MP4 = "audio/mp4";
const AUDIO_MPEG = "audio/mpeg";
const AUDIO_OGG = "audio/ogg";
const AUDIO_S3M = "audio/s3m";
const AUDIO_SILK = "audio/silk";
const AUDIO_VND_DECE_AUDIO = "audio/vnd.dece.audio";
const AUDIO_VND_DIGITAL_WINDS = "audio/vnd.digital-winds";
const AUDIO_VND_DRA = "audio/vnd.dra";
const AUDIO_VND_DTS = "audio/vnd.dts";
const AUDIO_VND_DTS_HD = "audio/vnd.dts.hd";
const AUDIO_VND_LUCENT_VOICE = "audio/vnd.lucent.voice";
const AUDIO_VND_MS_PLAYREADY_MEDIA_PYA = "audio/vnd.ms-playready.media.pya";
const AUDIO_VND_NUERA_ECELP4800 = "audio/vnd.nuera.ecelp4800";
const AUDIO_VND_NUERA_ECELP7470 = "audio/vnd.nuera.ecelp7470";
const AUDIO_VND_NUERA_ECELP9600 = "audio/vnd.nuera.ecelp9600";
const AUDIO_VND_RIP = "audio/vnd.rip";
const AUDIO_WEBM = "audio/webm";
const AUDIO_X_AIFF = "audio/x-aiff";
const AUDIO_X_AU = "audio/x-au";
const AUDIO_X_CAF = "audio/x-caf";
const AUDIO_X_FLAC = "audio/x-flac";
const AUDIO_X_M4A = "audio/x-m4a";
const AUDIO_X_MATROSKA = "audio/x-matroska";
const AUDIO_X_MS_WAX = "audio/x-ms-wax";
const AUDIO_X_MS_WMA = "audio/x-ms-wma";
const AUDIO_X_PN_REALAUDIO = "audio/x-pn-realaudio";
const AUDIO_X_PN_REALAUDIO_PLUGIN = "audio/x-pn-realaudio-plugin";
const AUDIO_X_REALAUDIO = "audio/x-realaudio";
const AUDIO_X_WAV = "audio/x-wav";
const AUDIO_XM = "audio/xm";
const CHEMICAL_X_CDX = "chemical/x-cdx";
const CHEMICAL_X_CIF = "chemical/x-cif";
const CHEMICAL_X_CMDF = "chemical/x-cmdf";
const CHEMICAL_X_CML = "chemical/x-cml";
const CHEMICAL_X_CSML = "chemical/x-csml";
const CHEMICAL_X_XYZ = "chemical/x-xyz";
const FONT_COLLECTION = "font/collection";
const FONT_OTF = "font/otf";
const FONT_TTF = "font/ttf";
const FONT_WOFF = "font/woff";
const FONT_WOFF2 = "font/woff2";
const IMAGE_ACES = "image/aces";
const IMAGE_APNG = "image/apng";
const IMAGE_AVCI = "image/avci";
const IMAGE_AVCS = "image/avcs";
const IMAGE_AVIF = "image/avif";
const IMAGE_BMP = "image/bmp";
const IMAGE_CGM = "image/cgm";
const IMAGE_DICOM_RLE = "image/dicom-rle";
const IMAGE_DPX = "image/dpx";
const IMAGE_EMF = "image/emf";
const IMAGE_FITS = "image/fits";
const IMAGE_G3FAX = "image/g3fax";
const IMAGE_GIF = "image/gif";
const IMAGE_HEIC = "image/heic";
const IMAGE_HEIC_SEQUENCE = "image/heic-sequence";
const IMAGE_HEIF = "image/heif";
const IMAGE_HEIF_SEQUENCE = "image/heif-sequence";
const IMAGE_HEJ2K = "image/hej2k";
const IMAGE_HSJ2 = "image/hsj2";
const IMAGE_IEF = "image/ief";
const IMAGE_JLS = "image/jls";
const IMAGE_JP2 = "image/jp2";
const IMAGE_JPEG = "image/jpeg";
const IMAGE_JPH = "image/jph";
const IMAGE_JPHC = "image/jphc";
const IMAGE_JPX = "image/jpx";
const IMAGE_JXR = "image/jxr";
const IMAGE_JXRA = "image/jxra";
const IMAGE_JXRS = "image/jxrs";
const IMAGE_JXS = "image/jxs";
const IMAGE_JXSC = "image/jxsc";
const IMAGE_JXSI = "image/jxsi";
const IMAGE_JXSS = "image/jxss";
const IMAGE_KTX = "image/ktx";
const IMAGE_KTX2 = "image/ktx2";
const IMAGE_PNG = "image/png";
const IMAGE_PRS_BTIF = "image/prs.btif";
const IMAGE_PRS_PTI = "image/prs.pti";
const IMAGE_SGI = "image/sgi";
const IMAGE_SVG_XML = "image/svg+xml";
const IMAGE_T38 = "image/t38";
const IMAGE_TIFF = "image/tiff";
const IMAGE_TIFF_FX = "image/tiff-fx";
const IMAGE_VND_AIRZIP_ACCELERATOR_AZV = "image/vnd.airzip.accelerator.azv";
const IMAGE_VND_DECE_GRAPHIC = "image/vnd.dece.graphic";
const IMAGE_VND_DJVU = "image/vnd.djvu";
const IMAGE_VND_DWG = "image/vnd.dwg";
const IMAGE_VND_DXF = "image/vnd.dxf";
const IMAGE_VND_FASTBIDSHEET = "image/vnd.fastbidsheet";
const IMAGE_VND_FPX = "image/vnd.fpx";
const IMAGE_VND_FST = "image/vnd.fst";
const IMAGE_VND_FUJIXEROX_EDMICS_MMR = "image/vnd.fujixerox.edmics-mmr";
const IMAGE_VND_FUJIXEROX_EDMICS_RLC = "image/vnd.fujixerox.edmics-rlc";
const IMAGE_VND_MS_DDS = "image/vnd.ms-dds";
const IMAGE_VND_MS_MODI = "image/vnd.ms-modi";
const IMAGE_VND_MS_PHOTO = "image/vnd.ms-photo";
const IMAGE_VND_NET_FPX = "image/vnd.net-fpx";
const IMAGE_VND_PCO_B16 = "image/vnd.pco.b16";
const IMAGE_VND_TENCENT_TAP = "image/vnd.tencent.tap";
const IMAGE_VND_VALVE_SOURCE_TEXTURE = "image/vnd.valve.source.texture";
const IMAGE_VND_WAP_WBMP = "image/vnd.wap.wbmp";
const IMAGE_VND_XIFF = "image/vnd.xiff";
const IMAGE_WEBP = "image/webp";
const IMAGE_WMF = "image/wmf";
const IMAGE_X_3DS = "image/x-3ds";
const IMAGE_X_CMU_RASTER = "image/x-cmu-raster";
const IMAGE_X_CMX = "image/x-cmx";
const IMAGE_X_FREEHAND = "image/x-freehand";
const IMAGE_X_ICON = "image/x-icon";
const IMAGE_X_JNG = "image/x-jng";
const IMAGE_X_MRSID_IMAGE = "image/x-mrsid-image";
const IMAGE_X_PCX = "image/x-pcx";
const IMAGE_X_PICT = "image/x-pict";
const IMAGE_X_PORTABLE_ANYMAP = "image/x-portable-anymap";
const IMAGE_X_PORTABLE_BITMAP = "image/x-portable-bitmap";
const IMAGE_X_PORTABLE_GRAYMAP = "image/x-portable-graymap";
const IMAGE_X_PORTABLE_PIXMAP = "image/x-portable-pixmap";
const IMAGE_X_RGB = "image/x-rgb";
const IMAGE_X_TGA = "image/x-tga";
const IMAGE_X_XBITMAP = "image/x-xbitmap";
const IMAGE_X_XPIXMAP = "image/x-xpixmap";
const IMAGE_X_XWINDOWDUMP = "image/x-xwindowdump";
const MESSAGE_DISPOSITION_NOTIFICATION = "message/disposition-notification";
const MESSAGE_GLOBAL = "message/global";
const MESSAGE_GLOBAL_DELIVERY_STATUS = "message/global-delivery-status";
const MESSAGE_GLOBAL_DISPOSITION_NOTIFICATION = "message/global-disposition-notification";
const MESSAGE_GLOBAL_HEADERS = "message/global-headers";
const MESSAGE_RFC822 = "message/rfc822";
const MESSAGE_VND_WFA_WSC = "message/vnd.wfa.wsc";
const MODEL_3MF = "model/3mf";
const MODEL_GLTF_JSON = "model/gltf+json";
const MODEL_GLTF_BINARY = "model/gltf-binary";
const MODEL_IGES = "model/iges";
const MODEL_JT = "model/jt";
const MODEL_MESH = "model/mesh";
const MODEL_MTL = "model/mtl";
const MODEL_OBJ = "model/obj";
const MODEL_PRC = "model/prc";
const MODEL_STEP_XML = "model/step+xml";
const MODEL_STEP_ZIP = "model/step+zip";
const MODEL_STEP_XML_ZIP = "model/step-xml+zip";
const MODEL_STL = "model/stl";
const MODEL_U3D = "model/u3d";
const MODEL_VND_CLD = "model/vnd.cld";
const MODEL_VND_COLLADA_XML = "model/vnd.collada+xml";
const MODEL_VND_DWF = "model/vnd.dwf";
const MODEL_VND_GDL = "model/vnd.gdl";
const MODEL_VND_GTW = "model/vnd.gtw";
const MODEL_VND_MTS = "model/vnd.mts";
const MODEL_VND_OPENGEX = "model/vnd.opengex";
const MODEL_VND_PARASOLID_TRANSMIT_BINARY = "model/vnd.parasolid.transmit.binary";
const MODEL_VND_PARASOLID_TRANSMIT_TEXT = "model/vnd.parasolid.transmit.text";
const MODEL_VND_PYTHA_PYOX = "model/vnd.pytha.pyox";
const MODEL_VND_SAP_VDS = "model/vnd.sap.vds";
const MODEL_VND_USDA = "model/vnd.usda";
const MODEL_VND_USDZ_ZIP = "model/vnd.usdz+zip";
const MODEL_VND_VALVE_SOURCE_COMPILED_MAP = "model/vnd.valve.source.compiled-map";
const MODEL_VND_VTU = "model/vnd.vtu";
const MODEL_VRML = "model/vrml";
const MODEL_X3D_BINARY = "model/x3d+binary";
const MODEL_X3D_FASTINFOSET = "model/x3d+fastinfoset";
const MODEL_X3D_VRML = "model/x3d+vrml";
const MODEL_X3D_XML = "model/x3d+xml";
const TEXT_CACHE_MANIFEST = "text/cache-manifest";
const TEXT_CALENDAR = "text/calendar";
const TEXT_COFFEESCRIPT = "text/coffeescript";
const TEXT_CSS = "text/css";
const TEXT_CSV = "text/csv";
const TEXT_HTML = "text/html";
const TEXT_JADE = "text/jade";
const TEXT_JAVASCRIPT = "text/javascript";
const TEXT_JSX = "text/jsx";
const TEXT_LESS = "text/less";
const TEXT_MARKDOWN = "text/markdown";
const TEXT_MATHML = "text/mathml";
const TEXT_MDX = "text/mdx";
const TEXT_N3 = "text/n3";
const TEXT_PLAIN = "text/plain";
const TEXT_PRS_LINES_TAG = "text/prs.lines.tag";
const TEXT_RICHTEXT = "text/richtext";
const TEXT_RTF = "text/rtf";
const TEXT_SGML = "text/sgml";
const TEXT_SHEX = "text/shex";
const TEXT_SLIM = "text/slim";
const TEXT_SPDX = "text/spdx";
const TEXT_STYLUS = "text/stylus";
const TEXT_TAB_SEPARATED_VALUES = "text/tab-separated-values";
const TEXT_TROFF = "text/troff";
const TEXT_TURTLE = "text/turtle";
const TEXT_URI_LIST = "text/uri-list";
const TEXT_VCARD = "text/vcard";
const TEXT_VND_CURL = "text/vnd.curl";
const TEXT_VND_CURL_DCURL = "text/vnd.curl.dcurl";
const TEXT_VND_CURL_MCURL = "text/vnd.curl.mcurl";
const TEXT_VND_CURL_SCURL = "text/vnd.curl.scurl";
const TEXT_VND_DVB_SUBTITLE = "text/vnd.dvb.subtitle";
const TEXT_VND_FAMILYSEARCH_GEDCOM = "text/vnd.familysearch.gedcom";
const TEXT_VND_FLY = "text/vnd.fly";
const TEXT_VND_FMI_FLEXSTOR = "text/vnd.fmi.flexstor";
const TEXT_VND_GRAPHVIZ = "text/vnd.graphviz";
const TEXT_VND_IN3D_3DML = "text/vnd.in3d.3dml";
const TEXT_VND_IN3D_SPOT = "text/vnd.in3d.spot";
const TEXT_VND_SUN_J2ME_APP_DESCRIPTOR = "text/vnd.sun.j2me.app-descriptor";
const TEXT_VND_WAP_WML = "text/vnd.wap.wml";
const TEXT_VND_WAP_WMLSCRIPT = "text/vnd.wap.wmlscript";
const TEXT_VTT = "text/vtt";
const TEXT_WGSL = "text/wgsl";
const TEXT_X_ASM = "text/x-asm";
const TEXT_X_C = "text/x-c";
const TEXT_X_COMPONENT = "text/x-component";
const TEXT_X_FORTRAN = "text/x-fortran";
const TEXT_X_HANDLEBARS_TEMPLATE = "text/x-handlebars-template";
const TEXT_X_JAVA_SOURCE = "text/x-java-source";
const TEXT_X_LUA = "text/x-lua";
const TEXT_X_MARKDOWN = "text/x-markdown";
const TEXT_X_NFO = "text/x-nfo";
const TEXT_X_OPML = "text/x-opml";
const TEXT_X_ORG = "text/x-org";
const TEXT_X_PASCAL = "text/x-pascal";
const TEXT_X_PROCESSING = "text/x-processing";
const TEXT_X_SASS = "text/x-sass";
const TEXT_X_SCRIPTZSH = "text/x-scriptzsh";
const TEXT_X_SCSS = "text/x-scss";
const TEXT_X_SETEXT = "text/x-setext";
const TEXT_X_SFV = "text/x-sfv";
const TEXT_X_SUSE_YMP = "text/x-suse-ymp";
const TEXT_X_UUENCODE = "text/x-uuencode";
const TEXT_X_VCALENDAR = "text/x-vcalendar";
const TEXT_X_VCARD = "text/x-vcard";
const TEXT_YAML = "text/yaml";
const VIDEO_3GP = "video/3gp";
const VIDEO_3GPP = "video/3gpp";
const VIDEO_3GPP2 = "video/3gpp2";
const VIDEO_H261 = "video/h261";
const VIDEO_H263 = "video/h263";
const VIDEO_H264 = "video/h264";
const VIDEO_ISO_SEGMENT = "video/iso.segment";
const VIDEO_JPEG = "video/jpeg";
const VIDEO_JPM = "video/jpm";
const VIDEO_MJ2 = "video/mj2";
const VIDEO_MP2T = "video/mp2t";
const VIDEO_MP4 = "video/mp4";
const VIDEO_MPEG = "video/mpeg";
const VIDEO_OGG = "video/ogg";
const VIDEO_QUICKTIME = "video/quicktime";
const VIDEO_VND_DECE_HD = "video/vnd.dece.hd";
const VIDEO_VND_DECE_MOBILE = "video/vnd.dece.mobile";
const VIDEO_VND_DECE_PD = "video/vnd.dece.pd";
const VIDEO_VND_DECE_SD = "video/vnd.dece.sd";
const VIDEO_VND_DECE_VIDEO = "video/vnd.dece.video";
const VIDEO_VND_DVB_FILE = "video/vnd.dvb.file";
const VIDEO_VND_FVT = "video/vnd.fvt";
const VIDEO_VND_MPEGURL = "video/vnd.mpegurl";
const VIDEO_VND_MS_PLAYREADY_MEDIA_PYV = "video/vnd.ms-playready.media.pyv";
const VIDEO_VND_RN_REALVIDEO = "video/vnd.rn-realvideo";
const VIDEO_VND_UVVU_MP4 = "video/vnd.uvvu.mp4";
const VIDEO_VND_VIVO = "video/vnd.vivo";
const VIDEO_WEBM = "video/webm";
const VIDEO_X_FLI = "video/x-fli";
const VIDEO_X_FLV = "video/x-flv";
const VIDEO_X_M4V = "video/x-m4v";
const VIDEO_X_MATROSKA = "video/x-matroska";
const VIDEO_X_MNG = "video/x-mng";
const VIDEO_X_MS_ASF = "video/x-ms-asf";
const VIDEO_X_MS_VOB = "video/x-ms-vob";
const VIDEO_X_MS_WM = "video/x-ms-wm";
const VIDEO_X_MS_WMV = "video/x-ms-wmv";
const VIDEO_X_MS_WMX = "video/x-ms-wmx";
const VIDEO_X_MS_WVX = "video/x-ms-wvx";
const VIDEO_X_MSVIDEO = "video/x-msvideo";
const VIDEO_X_SGI_MOVIE = "video/x-sgi-movie";
const VIDEO_X_SMV = "video/x-smv";
const X_CONFERENCE_X_COOLTALK = "x-conference/x-cooltalk";
+
const APPLICATION_STEP = 'application/STEP';
const APPLICATION_ANDREW_INSET = 'application/andrew-inset';
const APPLICATION_APPINSTALLER = 'application/appinstaller';
const APPLICATION_APPLIXWARE = 'application/applixware';
const APPLICATION_APPX = 'application/appx';
const APPLICATION_APPXBUNDLE = 'application/appxbundle';
const APPLICATION_ATOM_XML = 'application/atom+xml';
const APPLICATION_ATOMCAT_XML = 'application/atomcat+xml';
const APPLICATION_ATOMDELETED_XML = 'application/atomdeleted+xml';
const APPLICATION_ATOMSVC_XML = 'application/atomsvc+xml';
const APPLICATION_ATSC_DWD_XML = 'application/atsc-dwd+xml';
const APPLICATION_ATSC_HELD_XML = 'application/atsc-held+xml';
const APPLICATION_ATSC_RSAT_XML = 'application/atsc-rsat+xml';
const APPLICATION_AUTOMATIONML_AML_XML = 'application/automationml-aml+xml';
const APPLICATION_AUTOMATIONML_AMLX_ZIP = 'application/automationml-amlx+zip';
const APPLICATION_BRAILLE = 'application/braille';
const APPLICATION_CALENDAR_XML = 'application/calendar+xml';
const APPLICATION_CCXML_XML = 'application/ccxml+xml';
const APPLICATION_CDFX_XML = 'application/cdfx+xml';
const APPLICATION_CDMI_CAPABILITY = 'application/cdmi-capability';
const APPLICATION_CDMI_CONTAINER = 'application/cdmi-container';
const APPLICATION_CDMI_DOMAIN = 'application/cdmi-domain';
const APPLICATION_CDMI_OBJECT = 'application/cdmi-object';
const APPLICATION_CDMI_QUEUE = 'application/cdmi-queue';
const APPLICATION_CDR = 'application/cdr';
const APPLICATION_CPL_XML = 'application/cpl+xml';
const APPLICATION_CU_SEEME = 'application/cu-seeme';
const APPLICATION_CWL = 'application/cwl';
const APPLICATION_DASH_XML = 'application/dash+xml';
const APPLICATION_DAVMOUNT_XML = 'application/davmount+xml';
const APPLICATION_DOCBOOK_XML = 'application/docbook+xml';
const APPLICATION_DSSC_DER = 'application/dssc+der';
const APPLICATION_DSSC_XML = 'application/dssc+xml';
const APPLICATION_ECMASCRIPT = 'application/ecmascript';
const APPLICATION_EMMA_XML = 'application/emma+xml';
const APPLICATION_EMOTIONML_XML = 'application/emotionml+xml';
const APPLICATION_EPUB_ZIP = 'application/epub+zip';
const APPLICATION_EXCEL = 'application/excel';
const APPLICATION_EXI = 'application/exi';
const APPLICATION_EXPRESS = 'application/express';
const APPLICATION_FDT_XML = 'application/fdt+xml';
const APPLICATION_FONT_TDPFR = 'application/font-tdpfr';
const APPLICATION_GEO_JSON = 'application/geo+json';
const APPLICATION_GML_XML = 'application/gml+xml';
const APPLICATION_GPG_KEYS = 'application/gpg-keys';
const APPLICATION_GPX_XML = 'application/gpx+xml';
const APPLICATION_GXF = 'application/gxf';
const APPLICATION_GZIP = 'application/gzip';
const APPLICATION_HJSON = 'application/hjson';
const APPLICATION_HYPERSTUDIO = 'application/hyperstudio';
const APPLICATION_INKML_XML = 'application/inkml+xml';
const APPLICATION_IPFIX = 'application/ipfix';
const APPLICATION_ITS_XML = 'application/its+xml';
const APPLICATION_JAVA_ARCHIVE = 'application/java-archive';
const APPLICATION_JAVA_SERIALIZED_OBJECT = 'application/java-serialized-object';
const APPLICATION_JAVASCRIPT = 'application/javascript';
const APPLICATION_JSON = 'application/json';
const APPLICATION_JSON5 = 'application/json5';
const APPLICATION_JSONML_JSON = 'application/jsonml+json';
const APPLICATION_LD_JSON = 'application/ld+json';
const APPLICATION_LGR_XML = 'application/lgr+xml';
const APPLICATION_LOST_XML = 'application/lost+xml';
const APPLICATION_MAC_BINHEX40 = 'application/mac-binhex40';
const APPLICATION_MAC_COMPACTPRO = 'application/mac-compactpro';
const APPLICATION_MADS_XML = 'application/mads+xml';
const APPLICATION_MANIFEST_JSON = 'application/manifest+json';
const APPLICATION_MARC = 'application/marc';
const APPLICATION_MARCXML_XML = 'application/marcxml+xml';
const APPLICATION_MATHEMATICA = 'application/mathematica';
const APPLICATION_MATHML_XML = 'application/mathml+xml';
const APPLICATION_MBOX = 'application/mbox';
const APPLICATION_MEDIA_POLICY_DATASET_XML = 'application/media-policy-dataset+xml';
const APPLICATION_MEDIASERVERCONTROL_XML = 'application/mediaservercontrol+xml';
const APPLICATION_METALINK_XML = 'application/metalink+xml';
const APPLICATION_METALINK4_XML = 'application/metalink4+xml';
const APPLICATION_METS_XML = 'application/mets+xml';
const APPLICATION_MMT_AEI_XML = 'application/mmt-aei+xml';
const APPLICATION_MMT_USD_XML = 'application/mmt-usd+xml';
const APPLICATION_MODS_XML = 'application/mods+xml';
const APPLICATION_MP21 = 'application/mp21';
const APPLICATION_MP4 = 'application/mp4';
const APPLICATION_MSIX = 'application/msix';
const APPLICATION_MSIXBUNDLE = 'application/msixbundle';
const APPLICATION_MSWORD = 'application/msword';
const APPLICATION_MXF = 'application/mxf';
const APPLICATION_N_QUADS = 'application/n-quads';
const APPLICATION_N_TRIPLES = 'application/n-triples';
const APPLICATION_NODE = 'application/node';
const APPLICATION_OCTET_STREAM = 'application/octet-stream';
const APPLICATION_ODA = 'application/oda';
const APPLICATION_OEBPS_PACKAGE_XML = 'application/oebps-package+xml';
const APPLICATION_OGG = 'application/ogg';
const APPLICATION_OMDOC_XML = 'application/omdoc+xml';
const APPLICATION_ONENOTE = 'application/onenote';
const APPLICATION_OXPS = 'application/oxps';
const APPLICATION_P2P_OVERLAY_XML = 'application/p2p-overlay+xml';
const APPLICATION_PATCH_OPS_ERROR_XML = 'application/patch-ops-error+xml';
const APPLICATION_PDF = 'application/pdf';
const APPLICATION_PGP = 'application/pgp';
const APPLICATION_PGP_SIGNATURE = 'application/pgp-signature';
const APPLICATION_PICS_RULES = 'application/pics-rules';
const APPLICATION_PKCS7_MIME = 'application/pkcs7-mime';
const APPLICATION_PKCS7_SIGNATURE = 'application/pkcs7-signature';
const APPLICATION_PKCS8 = 'application/pkcs8';
const APPLICATION_PKIX_CERT = 'application/pkix-cert';
const APPLICATION_PKIX_CRL = 'application/pkix-crl';
const APPLICATION_PKIX_PKIPATH = 'application/pkix-pkipath';
const APPLICATION_PKIXCMP = 'application/pkixcmp';
const APPLICATION_PLS_XML = 'application/pls+xml';
const APPLICATION_POSTSCRIPT = 'application/postscript';
const APPLICATION_POWERPOINT = 'application/powerpoint';
const APPLICATION_PROVENANCE_XML = 'application/provenance+xml';
const APPLICATION_PRS_CWW = 'application/prs.cww';
const APPLICATION_PRS_XSF_XML = 'application/prs.xsf+xml';
const APPLICATION_PSKC_XML = 'application/pskc+xml';
const APPLICATION_RAML_YAML = 'application/raml+yaml';
const APPLICATION_RDF_XML = 'application/rdf+xml';
const APPLICATION_REGINFO_XML = 'application/reginfo+xml';
const APPLICATION_RELAX_NG_COMPACT_SYNTAX = 'application/relax-ng-compact-syntax';
const APPLICATION_RESOURCE_LISTS_XML = 'application/resource-lists+xml';
const APPLICATION_RESOURCE_LISTS_DIFF_XML = 'application/resource-lists-diff+xml';
const APPLICATION_RLS_SERVICES_XML = 'application/rls-services+xml';
const APPLICATION_ROUTE_APD_XML = 'application/route-apd+xml';
const APPLICATION_ROUTE_S_TSID_XML = 'application/route-s-tsid+xml';
const APPLICATION_ROUTE_USD_XML = 'application/route-usd+xml';
const APPLICATION_RPKI_GHOSTBUSTERS = 'application/rpki-ghostbusters';
const APPLICATION_RPKI_MANIFEST = 'application/rpki-manifest';
const APPLICATION_RPKI_ROA = 'application/rpki-roa';
const APPLICATION_RSD_XML = 'application/rsd+xml';
const APPLICATION_RSS_XML = 'application/rss+xml';
const APPLICATION_SBML_XML = 'application/sbml+xml';
const APPLICATION_SCVP_CV_REQUEST = 'application/scvp-cv-request';
const APPLICATION_SCVP_CV_RESPONSE = 'application/scvp-cv-response';
const APPLICATION_SCVP_VP_REQUEST = 'application/scvp-vp-request';
const APPLICATION_SCVP_VP_RESPONSE = 'application/scvp-vp-response';
const APPLICATION_SDP = 'application/sdp';
const APPLICATION_SENML_XML = 'application/senml+xml';
const APPLICATION_SENSML_XML = 'application/sensml+xml';
const APPLICATION_SET_PAYMENT_INITIATION = 'application/set-payment-initiation';
const APPLICATION_SET_REGISTRATION_INITIATION = 'application/set-registration-initiation';
const APPLICATION_SHF_XML = 'application/shf+xml';
const APPLICATION_SIEVE = 'application/sieve';
const APPLICATION_SMIL = 'application/smil';
const APPLICATION_SPARQL_QUERY = 'application/sparql-query';
const APPLICATION_SPARQL_RESULTS_XML = 'application/sparql-results+xml';
const APPLICATION_SRGS = 'application/srgs';
const APPLICATION_SRGS_XML = 'application/srgs+xml';
const APPLICATION_SRU_XML = 'application/sru+xml';
const APPLICATION_SSDL_XML = 'application/ssdl+xml';
const APPLICATION_SSML_XML = 'application/ssml+xml';
const APPLICATION_SWID_XML = 'application/swid+xml';
const APPLICATION_TEI_XML = 'application/tei+xml';
const APPLICATION_THRAUD_XML = 'application/thraud+xml';
const APPLICATION_TIMESTAMPED_DATA = 'application/timestamped-data';
const APPLICATION_TOML = 'application/toml';
const APPLICATION_TRIG = 'application/trig';
const APPLICATION_TTML_XML = 'application/ttml+xml';
const APPLICATION_UBJSON = 'application/ubjson';
const APPLICATION_URC_RESSHEET_XML = 'application/urc-ressheet+xml';
const APPLICATION_URC_TARGETDESC_XML = 'application/urc-targetdesc+xml';
const APPLICATION_VIDEOLAN = 'application/videolan';
const APPLICATION_VND_1000MINDS_DECISION_MODEL_XML = 'application/vnd.1000minds.decision-model+xml';
const APPLICATION_VND_3GPP_PIC_BW_LARGE = 'application/vnd.3gpp.pic-bw-large';
const APPLICATION_VND_3GPP_PIC_BW_SMALL = 'application/vnd.3gpp.pic-bw-small';
const APPLICATION_VND_3GPP_PIC_BW_VAR = 'application/vnd.3gpp.pic-bw-var';
const APPLICATION_VND_3GPP2_TCAP = 'application/vnd.3gpp2.tcap';
const APPLICATION_VND_3M_POST_IT_NOTES = 'application/vnd.3m.post-it-notes';
const APPLICATION_VND_ACCPAC_SIMPLY_ASO = 'application/vnd.accpac.simply.aso';
const APPLICATION_VND_ACCPAC_SIMPLY_IMP = 'application/vnd.accpac.simply.imp';
const APPLICATION_VND_ACUCOBOL = 'application/vnd.acucobol';
const APPLICATION_VND_ACUCORP = 'application/vnd.acucorp';
const APPLICATION_VND_ADOBE_AIR_APPLICATION_INSTALLER_PACKAGE_ZIP = 'application/vnd.adobe.air-application-installer-package+zip';
const APPLICATION_VND_ADOBE_FORMSCENTRAL_FCDT = 'application/vnd.adobe.formscentral.fcdt';
const APPLICATION_VND_ADOBE_FXP = 'application/vnd.adobe.fxp';
const APPLICATION_VND_ADOBE_XDP_XML = 'application/vnd.adobe.xdp+xml';
const APPLICATION_VND_AGE = 'application/vnd.age';
const APPLICATION_VND_AHEAD_SPACE = 'application/vnd.ahead.space';
const APPLICATION_VND_AIRZIP_FILESECURE_AZF = 'application/vnd.airzip.filesecure.azf';
const APPLICATION_VND_AIRZIP_FILESECURE_AZS = 'application/vnd.airzip.filesecure.azs';
const APPLICATION_VND_AMAZON_EBOOK = 'application/vnd.amazon.ebook';
const APPLICATION_VND_AMERICANDYNAMICS_ACC = 'application/vnd.americandynamics.acc';
const APPLICATION_VND_AMIGA_AMI = 'application/vnd.amiga.ami';
const APPLICATION_VND_ANDROID_PACKAGE_ARCHIVE = 'application/vnd.android.package-archive';
const APPLICATION_VND_ANSER_WEB_CERTIFICATE_ISSUE_INITIATION = 'application/vnd.anser-web-certificate-issue-initiation';
const APPLICATION_VND_ANSER_WEB_FUNDS_TRANSFER_INITIATION = 'application/vnd.anser-web-funds-transfer-initiation';
const APPLICATION_VND_ANTIX_GAME_COMPONENT = 'application/vnd.antix.game-component';
const APPLICATION_VND_APPLE_INSTALLER_XML = 'application/vnd.apple.installer+xml';
const APPLICATION_VND_APPLE_MPEGURL = 'application/vnd.apple.mpegurl';
const APPLICATION_VND_APPLE_PKPASS = 'application/vnd.apple.pkpass';
const APPLICATION_VND_ARISTANETWORKS_SWI = 'application/vnd.aristanetworks.swi';
const APPLICATION_VND_ASTRAEA_SOFTWARE_IOTA = 'application/vnd.astraea-software.iota';
const APPLICATION_VND_AUDIOGRAPH = 'application/vnd.audiograph';
const APPLICATION_VND_BALSAMIQ_BMML_XML = 'application/vnd.balsamiq.bmml+xml';
const APPLICATION_VND_BLUEICE_MULTIPASS = 'application/vnd.blueice.multipass';
const APPLICATION_VND_BMI = 'application/vnd.bmi';
const APPLICATION_VND_BUSINESSOBJECTS = 'application/vnd.businessobjects';
const APPLICATION_VND_CHEMDRAW_XML = 'application/vnd.chemdraw+xml';
const APPLICATION_VND_CHIPNUTS_KARAOKE_MMD = 'application/vnd.chipnuts.karaoke-mmd';
const APPLICATION_VND_CINDERELLA = 'application/vnd.cinderella';
const APPLICATION_VND_CITATIONSTYLES_STYLE_XML = 'application/vnd.citationstyles.style+xml';
const APPLICATION_VND_CLAYMORE = 'application/vnd.claymore';
const APPLICATION_VND_CLOANTO_RP9 = 'application/vnd.cloanto.rp9';
const APPLICATION_VND_CLONK_C4GROUP = 'application/vnd.clonk.c4group';
const APPLICATION_VND_CLUETRUST_CARTOMOBILE_CONFIG = 'application/vnd.cluetrust.cartomobile-config';
const APPLICATION_VND_CLUETRUST_CARTOMOBILE_CONFIG_PKG = 'application/vnd.cluetrust.cartomobile-config-pkg';
const APPLICATION_VND_COMMONSPACE = 'application/vnd.commonspace';
const APPLICATION_VND_CONTACT_CMSG = 'application/vnd.contact.cmsg';
const APPLICATION_VND_COSMOCALLER = 'application/vnd.cosmocaller';
const APPLICATION_VND_CRICK_CLICKER = 'application/vnd.crick.clicker';
const APPLICATION_VND_CRICK_CLICKER_KEYBOARD = 'application/vnd.crick.clicker.keyboard';
const APPLICATION_VND_CRICK_CLICKER_PALETTE = 'application/vnd.crick.clicker.palette';
const APPLICATION_VND_CRICK_CLICKER_TEMPLATE = 'application/vnd.crick.clicker.template';
const APPLICATION_VND_CRICK_CLICKER_WORDBANK = 'application/vnd.crick.clicker.wordbank';
const APPLICATION_VND_CRITICALTOOLS_WBS_XML = 'application/vnd.criticaltools.wbs+xml';
const APPLICATION_VND_CTC_POSML = 'application/vnd.ctc-posml';
const APPLICATION_VND_CUPS_PPD = 'application/vnd.cups-ppd';
const APPLICATION_VND_CURL_CAR = 'application/vnd.curl.car';
const APPLICATION_VND_CURL_PCURL = 'application/vnd.curl.pcurl';
const APPLICATION_VND_DART = 'application/vnd.dart';
const APPLICATION_VND_DATA_VISION_RDZ = 'application/vnd.data-vision.rdz';
const APPLICATION_VND_DBF = 'application/vnd.dbf';
const APPLICATION_VND_DECE_DATA = 'application/vnd.dece.data';
const APPLICATION_VND_DECE_TTML_XML = 'application/vnd.dece.ttml+xml';
const APPLICATION_VND_DECE_UNSPECIFIED = 'application/vnd.dece.unspecified';
const APPLICATION_VND_DECE_ZIP = 'application/vnd.dece.zip';
const APPLICATION_VND_DENOVO_FCSELAYOUT_LINK = 'application/vnd.denovo.fcselayout-link';
const APPLICATION_VND_DNA = 'application/vnd.dna';
const APPLICATION_VND_DOLBY_MLP = 'application/vnd.dolby.mlp';
const APPLICATION_VND_DPGRAPH = 'application/vnd.dpgraph';
const APPLICATION_VND_DREAMFACTORY = 'application/vnd.dreamfactory';
const APPLICATION_VND_DS_KEYPOINT = 'application/vnd.ds-keypoint';
const APPLICATION_VND_DVB_AIT = 'application/vnd.dvb.ait';
const APPLICATION_VND_DVB_SERVICE = 'application/vnd.dvb.service';
const APPLICATION_VND_DYNAGEO = 'application/vnd.dynageo';
const APPLICATION_VND_ECOWIN_CHART = 'application/vnd.ecowin.chart';
const APPLICATION_VND_ENLIVEN = 'application/vnd.enliven';
const APPLICATION_VND_EPSON_ESF = 'application/vnd.epson.esf';
const APPLICATION_VND_EPSON_MSF = 'application/vnd.epson.msf';
const APPLICATION_VND_EPSON_QUICKANIME = 'application/vnd.epson.quickanime';
const APPLICATION_VND_EPSON_SALT = 'application/vnd.epson.salt';
const APPLICATION_VND_EPSON_SSF = 'application/vnd.epson.ssf';
const APPLICATION_VND_ESZIGNO3_XML = 'application/vnd.eszigno3+xml';
const APPLICATION_VND_EZPIX_ALBUM = 'application/vnd.ezpix-album';
const APPLICATION_VND_EZPIX_PACKAGE = 'application/vnd.ezpix-package';
const APPLICATION_VND_FDF = 'application/vnd.fdf';
const APPLICATION_VND_FDSN_MSEED = 'application/vnd.fdsn.mseed';
const APPLICATION_VND_FDSN_SEED = 'application/vnd.fdsn.seed';
const APPLICATION_VND_FLOGRAPHIT = 'application/vnd.flographit';
const APPLICATION_VND_FLUXTIME_CLIP = 'application/vnd.fluxtime.clip';
const APPLICATION_VND_FRAMEMAKER = 'application/vnd.framemaker';
const APPLICATION_VND_FROGANS_FNC = 'application/vnd.frogans.fnc';
const APPLICATION_VND_FROGANS_LTF = 'application/vnd.frogans.ltf';
const APPLICATION_VND_FSC_WEBLAUNCH = 'application/vnd.fsc.weblaunch';
const APPLICATION_VND_FUJITSU_OASYS = 'application/vnd.fujitsu.oasys';
const APPLICATION_VND_FUJITSU_OASYS2 = 'application/vnd.fujitsu.oasys2';
const APPLICATION_VND_FUJITSU_OASYS3 = 'application/vnd.fujitsu.oasys3';
const APPLICATION_VND_FUJITSU_OASYSGP = 'application/vnd.fujitsu.oasysgp';
const APPLICATION_VND_FUJITSU_OASYSPRS = 'application/vnd.fujitsu.oasysprs';
const APPLICATION_VND_FUJIXEROX_DDD = 'application/vnd.fujixerox.ddd';
const APPLICATION_VND_FUJIXEROX_DOCUWORKS = 'application/vnd.fujixerox.docuworks';
const APPLICATION_VND_FUJIXEROX_DOCUWORKS_BINDER = 'application/vnd.fujixerox.docuworks.binder';
const APPLICATION_VND_FUZZYSHEET = 'application/vnd.fuzzysheet';
const APPLICATION_VND_GENOMATIX_TUXEDO = 'application/vnd.genomatix.tuxedo';
const APPLICATION_VND_GEOGEBRA_FILE = 'application/vnd.geogebra.file';
const APPLICATION_VND_GEOGEBRA_TOOL = 'application/vnd.geogebra.tool';
const APPLICATION_VND_GEOMETRY_EXPLORER = 'application/vnd.geometry-explorer';
const APPLICATION_VND_GEONEXT = 'application/vnd.geonext';
const APPLICATION_VND_GEOPLAN = 'application/vnd.geoplan';
const APPLICATION_VND_GEOSPACE = 'application/vnd.geospace';
const APPLICATION_VND_GMX = 'application/vnd.gmx';
const APPLICATION_VND_GOOGLE_APPS_DOCUMENT = 'application/vnd.google-apps.document';
const APPLICATION_VND_GOOGLE_APPS_PRESENTATION = 'application/vnd.google-apps.presentation';
const APPLICATION_VND_GOOGLE_APPS_SPREADSHEET = 'application/vnd.google-apps.spreadsheet';
const APPLICATION_VND_GOOGLE_EARTH_KML_XML = 'application/vnd.google-earth.kml+xml';
const APPLICATION_VND_GOOGLE_EARTH_KMZ = 'application/vnd.google-earth.kmz';
const APPLICATION_VND_GRAFEQ = 'application/vnd.grafeq';
const APPLICATION_VND_GROOVE_ACCOUNT = 'application/vnd.groove-account';
const APPLICATION_VND_GROOVE_HELP = 'application/vnd.groove-help';
const APPLICATION_VND_GROOVE_IDENTITY_MESSAGE = 'application/vnd.groove-identity-message';
const APPLICATION_VND_GROOVE_INJECTOR = 'application/vnd.groove-injector';
const APPLICATION_VND_GROOVE_TOOL_MESSAGE = 'application/vnd.groove-tool-message';
const APPLICATION_VND_GROOVE_TOOL_TEMPLATE = 'application/vnd.groove-tool-template';
const APPLICATION_VND_GROOVE_VCARD = 'application/vnd.groove-vcard';
const APPLICATION_VND_HAL_XML = 'application/vnd.hal+xml';
const APPLICATION_VND_HANDHELD_ENTERTAINMENT_XML = 'application/vnd.handheld-entertainment+xml';
const APPLICATION_VND_HBCI = 'application/vnd.hbci';
const APPLICATION_VND_HHE_LESSON_PLAYER = 'application/vnd.hhe.lesson-player';
const APPLICATION_VND_HP_HPGL = 'application/vnd.hp-hpgl';
const APPLICATION_VND_HP_HPID = 'application/vnd.hp-hpid';
const APPLICATION_VND_HP_HPS = 'application/vnd.hp-hps';
const APPLICATION_VND_HP_JLYT = 'application/vnd.hp-jlyt';
const APPLICATION_VND_HP_PCL = 'application/vnd.hp-pcl';
const APPLICATION_VND_HP_PCLXL = 'application/vnd.hp-pclxl';
const APPLICATION_VND_HYDROSTATIX_SOF_DATA = 'application/vnd.hydrostatix.sof-data';
const APPLICATION_VND_IBM_MINIPAY = 'application/vnd.ibm.minipay';
const APPLICATION_VND_IBM_MODCAP = 'application/vnd.ibm.modcap';
const APPLICATION_VND_IBM_RIGHTS_MANAGEMENT = 'application/vnd.ibm.rights-management';
const APPLICATION_VND_IBM_SECURE_CONTAINER = 'application/vnd.ibm.secure-container';
const APPLICATION_VND_ICCPROFILE = 'application/vnd.iccprofile';
const APPLICATION_VND_IGLOADER = 'application/vnd.igloader';
const APPLICATION_VND_IMMERVISION_IVP = 'application/vnd.immervision-ivp';
const APPLICATION_VND_IMMERVISION_IVU = 'application/vnd.immervision-ivu';
const APPLICATION_VND_INSORS_IGM = 'application/vnd.insors.igm';
const APPLICATION_VND_INTERCON_FORMNET = 'application/vnd.intercon.formnet';
const APPLICATION_VND_INTERGEO = 'application/vnd.intergeo';
const APPLICATION_VND_INTU_QBO = 'application/vnd.intu.qbo';
const APPLICATION_VND_INTU_QFX = 'application/vnd.intu.qfx';
const APPLICATION_VND_IPUNPLUGGED_RCPROFILE = 'application/vnd.ipunplugged.rcprofile';
const APPLICATION_VND_IREPOSITORY_PACKAGE_XML = 'application/vnd.irepository.package+xml';
const APPLICATION_VND_IS_XPR = 'application/vnd.is-xpr';
const APPLICATION_VND_ISAC_FCS = 'application/vnd.isac.fcs';
const APPLICATION_VND_JAM = 'application/vnd.jam';
const APPLICATION_VND_JCP_JAVAME_MIDLET_RMS = 'application/vnd.jcp.javame.midlet-rms';
const APPLICATION_VND_JISP = 'application/vnd.jisp';
const APPLICATION_VND_JOOST_JODA_ARCHIVE = 'application/vnd.joost.joda-archive';
const APPLICATION_VND_KAHOOTZ = 'application/vnd.kahootz';
const APPLICATION_VND_KDE_KARBON = 'application/vnd.kde.karbon';
const APPLICATION_VND_KDE_KCHART = 'application/vnd.kde.kchart';
const APPLICATION_VND_KDE_KFORMULA = 'application/vnd.kde.kformula';
const APPLICATION_VND_KDE_KIVIO = 'application/vnd.kde.kivio';
const APPLICATION_VND_KDE_KONTOUR = 'application/vnd.kde.kontour';
const APPLICATION_VND_KDE_KPRESENTER = 'application/vnd.kde.kpresenter';
const APPLICATION_VND_KDE_KSPREAD = 'application/vnd.kde.kspread';
const APPLICATION_VND_KDE_KWORD = 'application/vnd.kde.kword';
const APPLICATION_VND_KENAMEAAPP = 'application/vnd.kenameaapp';
const APPLICATION_VND_KIDSPIRATION = 'application/vnd.kidspiration';
const APPLICATION_VND_KINAR = 'application/vnd.kinar';
const APPLICATION_VND_KOAN = 'application/vnd.koan';
const APPLICATION_VND_KODAK_DESCRIPTOR = 'application/vnd.kodak-descriptor';
const APPLICATION_VND_LAS_LAS_XML = 'application/vnd.las.las+xml';
const APPLICATION_VND_LLAMAGRAPHICS_LIFE_BALANCE_DESKTOP = 'application/vnd.llamagraphics.life-balance.desktop';
const APPLICATION_VND_LLAMAGRAPHICS_LIFE_BALANCE_EXCHANGE_XML = 'application/vnd.llamagraphics.life-balance.exchange+xml';
const APPLICATION_VND_LOTUS_1_2_3 = 'application/vnd.lotus-1-2-3';
const APPLICATION_VND_LOTUS_APPROACH = 'application/vnd.lotus-approach';
const APPLICATION_VND_LOTUS_FREELANCE = 'application/vnd.lotus-freelance';
const APPLICATION_VND_LOTUS_NOTES = 'application/vnd.lotus-notes';
const APPLICATION_VND_LOTUS_SCREENCAM = 'application/vnd.lotus-screencam';
const APPLICATION_VND_LOTUS_WORDPRO = 'application/vnd.lotus-wordpro';
const APPLICATION_VND_MACPORTS_PORTPKG = 'application/vnd.macports.portpkg';
const APPLICATION_VND_MAPBOX_VECTOR_TILE = 'application/vnd.mapbox-vector-tile';
const APPLICATION_VND_MCD = 'application/vnd.mcd';
const APPLICATION_VND_MEDCALCDATA = 'application/vnd.medcalcdata';
const APPLICATION_VND_MEDIASTATION_CDKEY = 'application/vnd.mediastation.cdkey';
const APPLICATION_VND_MFER = 'application/vnd.mfer';
const APPLICATION_VND_MFMP = 'application/vnd.mfmp';
const APPLICATION_VND_MICROGRAFX_FLO = 'application/vnd.micrografx.flo';
const APPLICATION_VND_MICROGRAFX_IGX = 'application/vnd.micrografx.igx';
const APPLICATION_VND_MIF = 'application/vnd.mif';
const APPLICATION_VND_MOBIUS_DAF = 'application/vnd.mobius.daf';
const APPLICATION_VND_MOBIUS_DIS = 'application/vnd.mobius.dis';
const APPLICATION_VND_MOBIUS_MBK = 'application/vnd.mobius.mbk';
const APPLICATION_VND_MOBIUS_MQY = 'application/vnd.mobius.mqy';
const APPLICATION_VND_MOBIUS_MSL = 'application/vnd.mobius.msl';
const APPLICATION_VND_MOBIUS_PLC = 'application/vnd.mobius.plc';
const APPLICATION_VND_MOBIUS_TXF = 'application/vnd.mobius.txf';
const APPLICATION_VND_MOPHUN_APPLICATION = 'application/vnd.mophun.application';
const APPLICATION_VND_MOPHUN_CERTIFICATE = 'application/vnd.mophun.certificate';
const APPLICATION_VND_MOZILLA_XUL_XML = 'application/vnd.mozilla.xul+xml';
const APPLICATION_VND_MPEGURL = 'application/vnd.mpegurl';
const APPLICATION_VND_MS_ARTGALRY = 'application/vnd.ms-artgalry';
const APPLICATION_VND_MS_CAB_COMPRESSED = 'application/vnd.ms-cab-compressed';
const APPLICATION_VND_MS_EXCEL = 'application/vnd.ms-excel';
const APPLICATION_VND_MS_EXCEL_ADDIN_MACROENABLED_12 = 'application/vnd.ms-excel.addin.macroEnabled.12';
const APPLICATION_VND_MS_EXCEL_SHEET_BINARY_MACROENABLED_12 = 'application/vnd.ms-excel.sheet.binary.macroEnabled.12';
const APPLICATION_VND_MS_EXCEL_SHEET_MACROENABLED_12 = 'application/vnd.ms-excel.sheet.macroEnabled.12';
const APPLICATION_VND_MS_EXCEL_TEMPLATE_MACROENABLED_12 = 'application/vnd.ms-excel.template.macroEnabled.12';
const APPLICATION_VND_MS_FONTOBJECT = 'application/vnd.ms-fontobject';
const APPLICATION_VND_MS_HTMLHELP = 'application/vnd.ms-htmlhelp';
const APPLICATION_VND_MS_IMS = 'application/vnd.ms-ims';
const APPLICATION_VND_MS_LRM = 'application/vnd.ms-lrm';
const APPLICATION_VND_MS_OFFICETHEME = 'application/vnd.ms-officetheme';
const APPLICATION_VND_MS_OUTLOOK = 'application/vnd.ms-outlook';
const APPLICATION_VND_MS_PKI_SECCAT = 'application/vnd.ms-pki.seccat';
const APPLICATION_VND_MS_POWERPOINT = 'application/vnd.ms-powerpoint';
const APPLICATION_VND_MS_POWERPOINT_ADDIN_MACROENABLED_12 = 'application/vnd.ms-powerpoint.addin.macroEnabled.12';
const APPLICATION_VND_MS_POWERPOINT_PRESENTATION_MACROENABLED_12 = 'application/vnd.ms-powerpoint.presentation.macroEnabled.12';
const APPLICATION_VND_MS_POWERPOINT_SLIDE_MACROENABLED_12 = 'application/vnd.ms-powerpoint.slide.macroenabled.12';
const APPLICATION_VND_MS_POWERPOINT_SLIDESHOW_MACROENABLED_12 = 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12';
const APPLICATION_VND_MS_PROJECT = 'application/vnd.ms-project';
const APPLICATION_VND_MS_WORD_TEMPLATE_MACROENABLED_12 = 'application/vnd.ms-word.template.macroEnabled.12';
const APPLICATION_VND_MS_WORKS = 'application/vnd.ms-works';
const APPLICATION_VND_MS_WPL = 'application/vnd.ms-wpl';
const APPLICATION_VND_MS_XPSDOCUMENT = 'application/vnd.ms-xpsdocument';
const APPLICATION_VND_MSEQ = 'application/vnd.mseq';
const APPLICATION_VND_MUSICIAN = 'application/vnd.musician';
const APPLICATION_VND_MUVEE_STYLE = 'application/vnd.muvee.style';
const APPLICATION_VND_MYNFC = 'application/vnd.mynfc';
const APPLICATION_VND_NEUROLANGUAGE_NLU = 'application/vnd.neurolanguage.nlu';
const APPLICATION_VND_NITF = 'application/vnd.nitf';
const APPLICATION_VND_NOBLENET_DIRECTORY = 'application/vnd.noblenet-directory';
const APPLICATION_VND_NOBLENET_SEALER = 'application/vnd.noblenet-sealer';
const APPLICATION_VND_NOBLENET_WEB = 'application/vnd.noblenet-web';
const APPLICATION_VND_NOKIA_N_GAGE_AC_XML = 'application/vnd.nokia.n-gage.ac+xml';
const APPLICATION_VND_NOKIA_N_GAGE_DATA = 'application/vnd.nokia.n-gage.data';
const APPLICATION_VND_NOKIA_N_GAGE_SYMBIAN_INSTALL = 'application/vnd.nokia.n-gage.symbian.install';
const APPLICATION_VND_NOKIA_RADIO_PRESET = 'application/vnd.nokia.radio-preset';
const APPLICATION_VND_NOKIA_RADIO_PRESETS = 'application/vnd.nokia.radio-presets';
const APPLICATION_VND_NOVADIGM_EDM = 'application/vnd.novadigm.edm';
const APPLICATION_VND_NOVADIGM_EDX = 'application/vnd.novadigm.edx';
const APPLICATION_VND_NOVADIGM_EXT = 'application/vnd.novadigm.ext';
const APPLICATION_VND_OASIS_OPENDOCUMENT_CHART = 'application/vnd.oasis.opendocument.chart';
const APPLICATION_VND_OASIS_OPENDOCUMENT_CHART_TEMPLATE = 'application/vnd.oasis.opendocument.chart-template';
const APPLICATION_VND_OASIS_OPENDOCUMENT_DATABASE = 'application/vnd.oasis.opendocument.database';
const APPLICATION_VND_OASIS_OPENDOCUMENT_FORMULA = 'application/vnd.oasis.opendocument.formula';
const APPLICATION_VND_OASIS_OPENDOCUMENT_FORMULA_TEMPLATE = 'application/vnd.oasis.opendocument.formula-template';
const APPLICATION_VND_OASIS_OPENDOCUMENT_GRAPHICS = 'application/vnd.oasis.opendocument.graphics';
const APPLICATION_VND_OASIS_OPENDOCUMENT_GRAPHICS_TEMPLATE = 'application/vnd.oasis.opendocument.graphics-template';
const APPLICATION_VND_OASIS_OPENDOCUMENT_IMAGE = 'application/vnd.oasis.opendocument.image';
const APPLICATION_VND_OASIS_OPENDOCUMENT_IMAGE_TEMPLATE = 'application/vnd.oasis.opendocument.image-template';
const APPLICATION_VND_OASIS_OPENDOCUMENT_PRESENTATION = 'application/vnd.oasis.opendocument.presentation';
const APPLICATION_VND_OASIS_OPENDOCUMENT_PRESENTATION_TEMPLATE = 'application/vnd.oasis.opendocument.presentation-template';
const APPLICATION_VND_OASIS_OPENDOCUMENT_SPREADSHEET = 'application/vnd.oasis.opendocument.spreadsheet';
const APPLICATION_VND_OASIS_OPENDOCUMENT_SPREADSHEET_TEMPLATE = 'application/vnd.oasis.opendocument.spreadsheet-template';
const APPLICATION_VND_OASIS_OPENDOCUMENT_TEXT = 'application/vnd.oasis.opendocument.text';
const APPLICATION_VND_OASIS_OPENDOCUMENT_TEXT_MASTER = 'application/vnd.oasis.opendocument.text-master';
const APPLICATION_VND_OASIS_OPENDOCUMENT_TEXT_TEMPLATE = 'application/vnd.oasis.opendocument.text-template';
const APPLICATION_VND_OASIS_OPENDOCUMENT_TEXT_WEB = 'application/vnd.oasis.opendocument.text-web';
const APPLICATION_VND_OLPC_SUGAR = 'application/vnd.olpc-sugar';
const APPLICATION_VND_OMA_DD2_XML = 'application/vnd.oma.dd2+xml';
const APPLICATION_VND_OPENBLOX_GAME_XML = 'application/vnd.openblox.game+xml';
const APPLICATION_VND_OPENOFFICEORG_EXTENSION = 'application/vnd.openofficeorg.extension';
const APPLICATION_VND_OPENSTREETMAP_DATA_XML = 'application/vnd.openstreetmap.data+xml';
const APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_PRESENTATIONML_PRESENTATION = 'application/vnd.openxmlformats-officedocument.presentationml.presentation';
const APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_PRESENTATIONML_SLIDE = 'application/vnd.openxmlformats-officedocument.presentationml.slide';
const APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_PRESENTATIONML_SLIDESHOW = 'application/vnd.openxmlformats-officedocument.presentationml.slideshow';
const APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_PRESENTATIONML_TEMPLATE = 'application/vnd.openxmlformats-officedocument.presentationml.template';
const APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_SPREADSHEETML_SHEET = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
const APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_SPREADSHEETML_TEMPLATE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.template';
const APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_WORDPROCESSINGML_DOCUMENT = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
const APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_WORDPROCESSINGML_TEMPLATE = 'application/vnd.openxmlformats-officedocument.wordprocessingml.template';
const APPLICATION_VND_OSGEO_MAPGUIDE_PACKAGE = 'application/vnd.osgeo.mapguide.package';
const APPLICATION_VND_OSGI_DP = 'application/vnd.osgi.dp';
const APPLICATION_VND_OSGI_SUBSYSTEM = 'application/vnd.osgi.subsystem';
const APPLICATION_VND_PALM = 'application/vnd.palm';
const APPLICATION_VND_PAWAAFILE = 'application/vnd.pawaafile';
const APPLICATION_VND_PG_FORMAT = 'application/vnd.pg.format';
const APPLICATION_VND_PG_OSASLI = 'application/vnd.pg.osasli';
const APPLICATION_VND_PICSEL = 'application/vnd.picsel';
const APPLICATION_VND_PMI_WIDGET = 'application/vnd.pmi.widget';
const APPLICATION_VND_POCKETLEARN = 'application/vnd.pocketlearn';
const APPLICATION_VND_POWERBUILDER6 = 'application/vnd.powerbuilder6';
const APPLICATION_VND_PREVIEWSYSTEMS_BOX = 'application/vnd.previewsystems.box';
const APPLICATION_VND_PROTEUS_MAGAZINE = 'application/vnd.proteus.magazine';
const APPLICATION_VND_PUBLISHARE_DELTA_TREE = 'application/vnd.publishare-delta-tree';
const APPLICATION_VND_PVI_PTID1 = 'application/vnd.pvi.ptid1';
const APPLICATION_VND_PWG_XHTML_PRINT_XML = 'application/vnd.pwg-xhtml-print+xml';
const APPLICATION_VND_QUARK_QUARKXPRESS = 'application/vnd.quark.quarkxpress';
const APPLICATION_VND_REALVNC_BED = 'application/vnd.realvnc.bed';
const APPLICATION_VND_RECORDARE_MUSICXML = 'application/vnd.recordare.musicxml';
const APPLICATION_VND_RECORDARE_MUSICXML_XML = 'application/vnd.recordare.musicxml+xml';
const APPLICATION_VND_RIG_CRYPTONOTE = 'application/vnd.rig.cryptonote';
const APPLICATION_VND_RIM_COD = 'application/vnd.rim.cod';
const APPLICATION_VND_RN_REALMEDIA_VBR = 'application/vnd.rn-realmedia-vbr';
const APPLICATION_VND_ROUTE66_LINK66_XML = 'application/vnd.route66.link66+xml';
const APPLICATION_VND_SAILINGTRACKER_TRACK = 'application/vnd.sailingtracker.track';
const APPLICATION_VND_SEEMAIL = 'application/vnd.seemail';
const APPLICATION_VND_SEMA = 'application/vnd.sema';
const APPLICATION_VND_SEMD = 'application/vnd.semd';
const APPLICATION_VND_SEMF = 'application/vnd.semf';
const APPLICATION_VND_SHANA_INFORMED_FORMDATA = 'application/vnd.shana.informed.formdata';
const APPLICATION_VND_SHANA_INFORMED_FORMTEMPLATE = 'application/vnd.shana.informed.formtemplate';
const APPLICATION_VND_SHANA_INFORMED_INTERCHANGE = 'application/vnd.shana.informed.interchange';
const APPLICATION_VND_SHANA_INFORMED_PACKAGE = 'application/vnd.shana.informed.package';
const APPLICATION_VND_SIMTECH_MINDMAPPER = 'application/vnd.simtech-mindmapper';
const APPLICATION_VND_SMAF = 'application/vnd.smaf';
const APPLICATION_VND_SMART_TEACHER = 'application/vnd.smart.teacher';
const APPLICATION_VND_SOFTWARE602_FILLER_FORM_XML = 'application/vnd.software602.filler.form+xml';
const APPLICATION_VND_SOLENT_SDKM_XML = 'application/vnd.solent.sdkm+xml';
const APPLICATION_VND_SPOTFIRE_DXP = 'application/vnd.spotfire.dxp';
const APPLICATION_VND_SPOTFIRE_SFS = 'application/vnd.spotfire.sfs';
const APPLICATION_VND_STARDIVISION_CALC = 'application/vnd.stardivision.calc';
const APPLICATION_VND_STARDIVISION_DRAW = 'application/vnd.stardivision.draw';
const APPLICATION_VND_STARDIVISION_IMPRESS = 'application/vnd.stardivision.impress';
const APPLICATION_VND_STARDIVISION_MATH = 'application/vnd.stardivision.math';
const APPLICATION_VND_STARDIVISION_WRITER = 'application/vnd.stardivision.writer';
const APPLICATION_VND_STARDIVISION_WRITER_GLOBAL = 'application/vnd.stardivision.writer-global';
const APPLICATION_VND_STEPMANIA_PACKAGE = 'application/vnd.stepmania.package';
const APPLICATION_VND_STEPMANIA_STEPCHART = 'application/vnd.stepmania.stepchart';
const APPLICATION_VND_SUN_WADL_XML = 'application/vnd.sun.wadl+xml';
const APPLICATION_VND_SUN_XML_CALC = 'application/vnd.sun.xml.calc';
const APPLICATION_VND_SUN_XML_CALC_TEMPLATE = 'application/vnd.sun.xml.calc.template';
const APPLICATION_VND_SUN_XML_DRAW = 'application/vnd.sun.xml.draw';
const APPLICATION_VND_SUN_XML_DRAW_TEMPLATE = 'application/vnd.sun.xml.draw.template';
const APPLICATION_VND_SUN_XML_IMPRESS = 'application/vnd.sun.xml.impress';
const APPLICATION_VND_SUN_XML_IMPRESS_TEMPLATE = 'application/vnd.sun.xml.impress.template';
const APPLICATION_VND_SUN_XML_MATH = 'application/vnd.sun.xml.math';
const APPLICATION_VND_SUN_XML_WRITER = 'application/vnd.sun.xml.writer';
const APPLICATION_VND_SUN_XML_WRITER_GLOBAL = 'application/vnd.sun.xml.writer.global';
const APPLICATION_VND_SUN_XML_WRITER_TEMPLATE = 'application/vnd.sun.xml.writer.template';
const APPLICATION_VND_SUS_CALENDAR = 'application/vnd.sus-calendar';
const APPLICATION_VND_SVD = 'application/vnd.svd';
const APPLICATION_VND_SYMBIAN_INSTALL = 'application/vnd.symbian.install';
const APPLICATION_VND_SYNCML_XML = 'application/vnd.syncml+xml';
const APPLICATION_VND_SYNCML_DM_WBXML = 'application/vnd.syncml.dm+wbxml';
const APPLICATION_VND_SYNCML_DM_XML = 'application/vnd.syncml.dm+xml';
const APPLICATION_VND_SYNCML_DMDDF_XML = 'application/vnd.syncml.dmddf+xml';
const APPLICATION_VND_TAO_INTENT_MODULE_ARCHIVE = 'application/vnd.tao.intent-module-archive';
const APPLICATION_VND_TCPDUMP_PCAP = 'application/vnd.tcpdump.pcap';
const APPLICATION_VND_TMOBILE_LIVETV = 'application/vnd.tmobile-livetv';
const APPLICATION_VND_TRID_TPT = 'application/vnd.trid.tpt';
const APPLICATION_VND_TRISCAPE_MXS = 'application/vnd.triscape.mxs';
const APPLICATION_VND_TRUEAPP = 'application/vnd.trueapp';
const APPLICATION_VND_UFDL = 'application/vnd.ufdl';
const APPLICATION_VND_UIQ_THEME = 'application/vnd.uiq.theme';
const APPLICATION_VND_UMAJIN = 'application/vnd.umajin';
const APPLICATION_VND_UNITY = 'application/vnd.unity';
const APPLICATION_VND_UOML_XML = 'application/vnd.uoml+xml';
const APPLICATION_VND_VCX = 'application/vnd.vcx';
const APPLICATION_VND_VISIO = 'application/vnd.visio';
const APPLICATION_VND_VISIONARY = 'application/vnd.visionary';
const APPLICATION_VND_VSF = 'application/vnd.vsf';
const APPLICATION_VND_WAP_WMLSCRIPTC = 'application/vnd.wap.wmlscriptc';
const APPLICATION_VND_WEBTURBO = 'application/vnd.webturbo';
const APPLICATION_VND_WOLFRAM_PLAYER = 'application/vnd.wolfram.player';
const APPLICATION_VND_WORDPERFECT = 'application/vnd.wordperfect';
const APPLICATION_VND_WQD = 'application/vnd.wqd';
const APPLICATION_VND_WT_STF = 'application/vnd.wt.stf';
const APPLICATION_VND_XARA = 'application/vnd.xara';
const APPLICATION_VND_XFDL = 'application/vnd.xfdl';
const APPLICATION_VND_YAMAHA_HV_DIC = 'application/vnd.yamaha.hv-dic';
const APPLICATION_VND_YAMAHA_HV_SCRIPT = 'application/vnd.yamaha.hv-script';
const APPLICATION_VND_YAMAHA_HV_VOICE = 'application/vnd.yamaha.hv-voice';
const APPLICATION_VND_YAMAHA_OPENSCOREFORMAT = 'application/vnd.yamaha.openscoreformat';
const APPLICATION_VND_YAMAHA_OPENSCOREFORMAT_OSFPVG_XML = 'application/vnd.yamaha.openscoreformat.osfpvg+xml';
const APPLICATION_VND_YAMAHA_SMAF_AUDIO = 'application/vnd.yamaha.smaf-audio';
const APPLICATION_VND_YAMAHA_SMAF_PHRASE = 'application/vnd.yamaha.smaf-phrase';
const APPLICATION_VND_YELLOWRIVER_CUSTOM_MENU = 'application/vnd.yellowriver-custom-menu';
const APPLICATION_VND_ZUL = 'application/vnd.zul';
const APPLICATION_VND_ZZAZZ_DECK_XML = 'application/vnd.zzazz.deck+xml';
const APPLICATION_VOICEXML_XML = 'application/voicexml+xml';
const APPLICATION_WASM = 'application/wasm';
const APPLICATION_WATCHERINFO_XML = 'application/watcherinfo+xml';
const APPLICATION_WBXML = 'application/wbxml';
const APPLICATION_WIDGET = 'application/widget';
const APPLICATION_WINHLP = 'application/winhlp';
const APPLICATION_WMLC = 'application/wmlc';
const APPLICATION_WSDL_XML = 'application/wsdl+xml';
const APPLICATION_WSPOLICY_XML = 'application/wspolicy+xml';
const APPLICATION_X_7Z_COMPRESSED = 'application/x-7z-compressed';
const APPLICATION_X_ABIWORD = 'application/x-abiword';
const APPLICATION_X_ACE_COMPRESSED = 'application/x-ace-compressed';
const APPLICATION_X_APPLE_DISKIMAGE = 'application/x-apple-diskimage';
const APPLICATION_X_ARJ = 'application/x-arj';
const APPLICATION_X_AUTHORWARE_BIN = 'application/x-authorware-bin';
const APPLICATION_X_AUTHORWARE_MAP = 'application/x-authorware-map';
const APPLICATION_X_AUTHORWARE_SEG = 'application/x-authorware-seg';
const APPLICATION_X_BCPIO = 'application/x-bcpio';
const APPLICATION_X_BDOC = 'application/x-bdoc';
const APPLICATION_X_BITTORRENT = 'application/x-bittorrent';
const APPLICATION_X_BLORB = 'application/x-blorb';
const APPLICATION_X_BZIP = 'application/x-bzip';
const APPLICATION_X_BZIP2 = 'application/x-bzip2';
const APPLICATION_X_CBR = 'application/x-cbr';
const APPLICATION_X_CDLINK = 'application/x-cdlink';
const APPLICATION_X_CFS_COMPRESSED = 'application/x-cfs-compressed';
const APPLICATION_X_CHAT = 'application/x-chat';
const APPLICATION_X_CHESS_PGN = 'application/x-chess-pgn';
const APPLICATION_X_CHROME_EXTENSION = 'application/x-chrome-extension';
const APPLICATION_X_COCOA = 'application/x-cocoa';
const APPLICATION_X_COMPRESS = 'application/x-compress';
const APPLICATION_X_CONFERENCE = 'application/x-conference';
const APPLICATION_X_CPIO = 'application/x-cpio';
const APPLICATION_X_CSH = 'application/x-csh';
const APPLICATION_X_DEBIAN_PACKAGE = 'application/x-debian-package';
const APPLICATION_X_DGC_COMPRESSED = 'application/x-dgc-compressed';
const APPLICATION_X_DIRECTOR = 'application/x-director';
const APPLICATION_X_DOOM = 'application/x-doom';
const APPLICATION_X_DTBNCX_XML = 'application/x-dtbncx+xml';
const APPLICATION_X_DTBOOK_XML = 'application/x-dtbook+xml';
const APPLICATION_X_DTBRESOURCE_XML = 'application/x-dtbresource+xml';
const APPLICATION_X_DVI = 'application/x-dvi';
const APPLICATION_X_ENVOY = 'application/x-envoy';
const APPLICATION_X_EVA = 'application/x-eva';
const APPLICATION_X_FONT_BDF = 'application/x-font-bdf';
const APPLICATION_X_FONT_GHOSTSCRIPT = 'application/x-font-ghostscript';
const APPLICATION_X_FONT_LINUX_PSF = 'application/x-font-linux-psf';
const APPLICATION_X_FONT_PCF = 'application/x-font-pcf';
const APPLICATION_X_FONT_SNF = 'application/x-font-snf';
const APPLICATION_X_FONT_TYPE1 = 'application/x-font-type1';
const APPLICATION_X_FREEARC = 'application/x-freearc';
const APPLICATION_X_FUTURESPLASH = 'application/x-futuresplash';
const APPLICATION_X_GCA_COMPRESSED = 'application/x-gca-compressed';
const APPLICATION_X_GLULX = 'application/x-glulx';
const APPLICATION_X_GNUMERIC = 'application/x-gnumeric';
const APPLICATION_X_GRAMPS_XML = 'application/x-gramps-xml';
const APPLICATION_X_GTAR = 'application/x-gtar';
const APPLICATION_X_HDF = 'application/x-hdf';
const APPLICATION_X_HTTPD_PHP = 'application/x-httpd-php';
const APPLICATION_X_HTTPD_PHP_SOURCE = 'application/x-httpd-php-source';
const APPLICATION_X_INSTALL_INSTRUCTIONS = 'application/x-install-instructions';
const APPLICATION_X_ISO9660_IMAGE = 'application/x-iso9660-image';
const APPLICATION_X_IWORK_KEYNOTE_SFFKEY = 'application/x-iwork-keynote-sffkey';
const APPLICATION_X_IWORK_NUMBERS_SFFNUMBERS = 'application/x-iwork-numbers-sffnumbers';
const APPLICATION_X_IWORK_PAGES_SFFPAGES = 'application/x-iwork-pages-sffpages';
const APPLICATION_X_JAVA_ARCHIVE_DIFF = 'application/x-java-archive-diff';
const APPLICATION_X_JAVA_JNLP_FILE = 'application/x-java-jnlp-file';
const APPLICATION_X_KEEPASS2 = 'application/x-keepass2';
const APPLICATION_X_LATEX = 'application/x-latex';
const APPLICATION_X_LUA_BYTECODE = 'application/x-lua-bytecode';
const APPLICATION_X_MAKESELF = 'application/x-makeself';
const APPLICATION_X_MIE = 'application/x-mie';
const APPLICATION_X_MOBIPOCKET_EBOOK = 'application/x-mobipocket-ebook';
const APPLICATION_X_MS_APPLICATION = 'application/x-ms-application';
const APPLICATION_X_MS_SHORTCUT = 'application/x-ms-shortcut';
const APPLICATION_X_MS_WMD = 'application/x-ms-wmd';
const APPLICATION_X_MS_XBAP = 'application/x-ms-xbap';
const APPLICATION_X_MSACCESS = 'application/x-msaccess';
const APPLICATION_X_MSBINDER = 'application/x-msbinder';
const APPLICATION_X_MSCARDFILE = 'application/x-mscardfile';
const APPLICATION_X_MSCLIP = 'application/x-msclip';
const APPLICATION_X_MSDOWNLOAD = 'application/x-msdownload';
const APPLICATION_X_MSMEDIAVIEW = 'application/x-msmediaview';
const APPLICATION_X_MSMETAFILE = 'application/x-msmetafile';
const APPLICATION_X_MSMONEY = 'application/x-msmoney';
const APPLICATION_X_MSPUBLISHER = 'application/x-mspublisher';
const APPLICATION_X_MSSCHEDULE = 'application/x-msschedule';
const APPLICATION_X_MSTERMINAL = 'application/x-msterminal';
const APPLICATION_X_MSWRITE = 'application/x-mswrite';
const APPLICATION_X_NDJSON = 'application/x-ndjson';
const APPLICATION_X_NETCDF = 'application/x-netcdf';
const APPLICATION_X_NS_PROXY_AUTOCONFIG = 'application/x-ns-proxy-autoconfig';
const APPLICATION_X_NZB = 'application/x-nzb';
const APPLICATION_X_PERL = 'application/x-perl';
const APPLICATION_X_PHOTOSHOP = 'application/x-photoshop';
const APPLICATION_X_PILOT = 'application/x-pilot';
const APPLICATION_X_PKCS10 = 'application/x-pkcs10';
const APPLICATION_X_PKCS12 = 'application/x-pkcs12';
const APPLICATION_X_PKCS7 = 'application/x-pkcs7';
const APPLICATION_X_PKCS7_CERTIFICATES = 'application/x-pkcs7-certificates';
const APPLICATION_X_PKCS7_CERTREQRESP = 'application/x-pkcs7-certreqresp';
const APPLICATION_X_PKCS7_SIGNATURE = 'application/x-pkcs7-signature';
const APPLICATION_X_RAR = 'application/x-rar';
const APPLICATION_X_RESEARCH_INFO_SYSTEMS = 'application/x-research-info-systems';
const APPLICATION_X_SH = 'application/x-sh';
const APPLICATION_X_SHAR = 'application/x-shar';
const APPLICATION_X_SHOCKWAVE_FLASH = 'application/x-shockwave-flash';
const APPLICATION_X_SILVERLIGHT_APP = 'application/x-silverlight-app';
const APPLICATION_X_SQL = 'application/x-sql';
const APPLICATION_X_STUFFIT = 'application/x-stuffit';
const APPLICATION_X_STUFFITX = 'application/x-stuffitx';
const APPLICATION_X_SUBRIP = 'application/x-subrip';
const APPLICATION_X_SV4CPIO = 'application/x-sv4cpio';
const APPLICATION_X_SV4CRC = 'application/x-sv4crc';
const APPLICATION_X_T3VM_IMAGE = 'application/x-t3vm-image';
const APPLICATION_X_TADS = 'application/x-tads';
const APPLICATION_X_TAR = 'application/x-tar';
const APPLICATION_X_TCL = 'application/x-tcl';
const APPLICATION_X_TEX = 'application/x-tex';
const APPLICATION_X_TEX_TFM = 'application/x-tex-tfm';
const APPLICATION_X_TEXINFO = 'application/x-texinfo';
const APPLICATION_X_USTAR = 'application/x-ustar';
const APPLICATION_X_VIRTUALBOX_HDD = 'application/x-virtualbox-hdd';
const APPLICATION_X_VIRTUALBOX_OVA = 'application/x-virtualbox-ova';
const APPLICATION_X_VIRTUALBOX_OVF = 'application/x-virtualbox-ovf';
const APPLICATION_X_VIRTUALBOX_VBOX = 'application/x-virtualbox-vbox';
const APPLICATION_X_VIRTUALBOX_VBOX_EXTPACK = 'application/x-virtualbox-vbox-extpack';
const APPLICATION_X_VIRTUALBOX_VDI = 'application/x-virtualbox-vdi';
const APPLICATION_X_VIRTUALBOX_VHD = 'application/x-virtualbox-vhd';
const APPLICATION_X_VIRTUALBOX_VMDK = 'application/x-virtualbox-vmdk';
const APPLICATION_X_WAIS_SOURCE = 'application/x-wais-source';
const APPLICATION_X_WEB_APP_MANIFEST_JSON = 'application/x-web-app-manifest+json';
const APPLICATION_X_X509_CA_CERT = 'application/x-x509-ca-cert';
const APPLICATION_X_X509_USER_CERT = 'application/x-x509-user-cert';
const APPLICATION_X_XFIG = 'application/x-xfig';
const APPLICATION_X_XPINSTALL = 'application/x-xpinstall';
const APPLICATION_X_XZ = 'application/x-xz';
const APPLICATION_X_ZMACHINE = 'application/x-zmachine';
const APPLICATION_XAML_XML = 'application/xaml+xml';
const APPLICATION_XCAP_ATT_XML = 'application/xcap-att+xml';
const APPLICATION_XCAP_CAPS_XML = 'application/xcap-caps+xml';
const APPLICATION_XCAP_DIFF_XML = 'application/xcap-diff+xml';
const APPLICATION_XCAP_EL_XML = 'application/xcap-el+xml';
const APPLICATION_XCAP_NS_XML = 'application/xcap-ns+xml';
const APPLICATION_XENC_XML = 'application/xenc+xml';
const APPLICATION_XFDF = 'application/xfdf';
const APPLICATION_XHTML_XML = 'application/xhtml+xml';
const APPLICATION_XLIFF_XML = 'application/xliff+xml';
const APPLICATION_XML = 'application/xml';
const APPLICATION_XML_DTD = 'application/xml-dtd';
const APPLICATION_XOP_XML = 'application/xop+xml';
const APPLICATION_XPROC_XML = 'application/xproc+xml';
const APPLICATION_XSLT_XML = 'application/xslt+xml';
const APPLICATION_XSPF_XML = 'application/xspf+xml';
const APPLICATION_XV_XML = 'application/xv+xml';
const APPLICATION_YANG = 'application/yang';
const APPLICATION_YIN_XML = 'application/yin+xml';
const APPLICATION_ZIP = 'application/zip';
const AUDIO_AAC = 'audio/aac';
const AUDIO_AC3 = 'audio/ac3';
const AUDIO_ACC = 'audio/acc';
const AUDIO_ADPCM = 'audio/adpcm';
const AUDIO_AMR = 'audio/amr';
const AUDIO_BASIC = 'audio/basic';
const AUDIO_MIDI = 'audio/midi';
const AUDIO_MOBILE_XMF = 'audio/mobile-xmf';
const AUDIO_MP4 = 'audio/mp4';
const AUDIO_MPEG = 'audio/mpeg';
const AUDIO_OGG = 'audio/ogg';
const AUDIO_S3M = 'audio/s3m';
const AUDIO_SILK = 'audio/silk';
const AUDIO_VND_DECE_AUDIO = 'audio/vnd.dece.audio';
const AUDIO_VND_DIGITAL_WINDS = 'audio/vnd.digital-winds';
const AUDIO_VND_DRA = 'audio/vnd.dra';
const AUDIO_VND_DTS = 'audio/vnd.dts';
const AUDIO_VND_DTS_HD = 'audio/vnd.dts.hd';
const AUDIO_VND_LUCENT_VOICE = 'audio/vnd.lucent.voice';
const AUDIO_VND_MS_PLAYREADY_MEDIA_PYA = 'audio/vnd.ms-playready.media.pya';
const AUDIO_VND_NUERA_ECELP4800 = 'audio/vnd.nuera.ecelp4800';
const AUDIO_VND_NUERA_ECELP7470 = 'audio/vnd.nuera.ecelp7470';
const AUDIO_VND_NUERA_ECELP9600 = 'audio/vnd.nuera.ecelp9600';
const AUDIO_VND_RIP = 'audio/vnd.rip';
const AUDIO_WEBM = 'audio/webm';
const AUDIO_X_AIFF = 'audio/x-aiff';
const AUDIO_X_AU = 'audio/x-au';
const AUDIO_X_CAF = 'audio/x-caf';
const AUDIO_X_FLAC = 'audio/x-flac';
const AUDIO_X_M4A = 'audio/x-m4a';
const AUDIO_X_MATROSKA = 'audio/x-matroska';
const AUDIO_X_MS_WAX = 'audio/x-ms-wax';
const AUDIO_X_MS_WMA = 'audio/x-ms-wma';
const AUDIO_X_PN_REALAUDIO = 'audio/x-pn-realaudio';
const AUDIO_X_PN_REALAUDIO_PLUGIN = 'audio/x-pn-realaudio-plugin';
const AUDIO_X_REALAUDIO = 'audio/x-realaudio';
const AUDIO_X_WAV = 'audio/x-wav';
const AUDIO_XM = 'audio/xm';
const CHEMICAL_X_CDX = 'chemical/x-cdx';
const CHEMICAL_X_CIF = 'chemical/x-cif';
const CHEMICAL_X_CMDF = 'chemical/x-cmdf';
const CHEMICAL_X_CML = 'chemical/x-cml';
const CHEMICAL_X_CSML = 'chemical/x-csml';
const CHEMICAL_X_XYZ = 'chemical/x-xyz';
const FONT_COLLECTION = 'font/collection';
const FONT_OTF = 'font/otf';
const FONT_TTF = 'font/ttf';
const FONT_WOFF = 'font/woff';
const FONT_WOFF2 = 'font/woff2';
const IMAGE_ACES = 'image/aces';
const IMAGE_APNG = 'image/apng';
const IMAGE_AVCI = 'image/avci';
const IMAGE_AVCS = 'image/avcs';
const IMAGE_AVIF = 'image/avif';
const IMAGE_BMP = 'image/bmp';
const IMAGE_CGM = 'image/cgm';
const IMAGE_DICOM_RLE = 'image/dicom-rle';
const IMAGE_DPX = 'image/dpx';
const IMAGE_EMF = 'image/emf';
const IMAGE_FITS = 'image/fits';
const IMAGE_G3FAX = 'image/g3fax';
const IMAGE_GIF = 'image/gif';
const IMAGE_HEIC = 'image/heic';
const IMAGE_HEIC_SEQUENCE = 'image/heic-sequence';
const IMAGE_HEIF = 'image/heif';
const IMAGE_HEIF_SEQUENCE = 'image/heif-sequence';
const IMAGE_HEJ2K = 'image/hej2k';
const IMAGE_HSJ2 = 'image/hsj2';
const IMAGE_IEF = 'image/ief';
const IMAGE_JLS = 'image/jls';
const IMAGE_JP2 = 'image/jp2';
const IMAGE_JPEG = 'image/jpeg';
const IMAGE_JPH = 'image/jph';
const IMAGE_JPHC = 'image/jphc';
const IMAGE_JPX = 'image/jpx';
const IMAGE_JXR = 'image/jxr';
const IMAGE_JXRA = 'image/jxra';
const IMAGE_JXRS = 'image/jxrs';
const IMAGE_JXS = 'image/jxs';
const IMAGE_JXSC = 'image/jxsc';
const IMAGE_JXSI = 'image/jxsi';
const IMAGE_JXSS = 'image/jxss';
const IMAGE_KTX = 'image/ktx';
const IMAGE_KTX2 = 'image/ktx2';
const IMAGE_PNG = 'image/png';
const IMAGE_PRS_BTIF = 'image/prs.btif';
const IMAGE_PRS_PTI = 'image/prs.pti';
const IMAGE_SGI = 'image/sgi';
const IMAGE_SVG_XML = 'image/svg+xml';
const IMAGE_T38 = 'image/t38';
const IMAGE_TIFF = 'image/tiff';
const IMAGE_TIFF_FX = 'image/tiff-fx';
const IMAGE_VND_AIRZIP_ACCELERATOR_AZV = 'image/vnd.airzip.accelerator.azv';
const IMAGE_VND_DECE_GRAPHIC = 'image/vnd.dece.graphic';
const IMAGE_VND_DJVU = 'image/vnd.djvu';
const IMAGE_VND_DWG = 'image/vnd.dwg';
const IMAGE_VND_DXF = 'image/vnd.dxf';
const IMAGE_VND_FASTBIDSHEET = 'image/vnd.fastbidsheet';
const IMAGE_VND_FPX = 'image/vnd.fpx';
const IMAGE_VND_FST = 'image/vnd.fst';
const IMAGE_VND_FUJIXEROX_EDMICS_MMR = 'image/vnd.fujixerox.edmics-mmr';
const IMAGE_VND_FUJIXEROX_EDMICS_RLC = 'image/vnd.fujixerox.edmics-rlc';
const IMAGE_VND_MS_DDS = 'image/vnd.ms-dds';
const IMAGE_VND_MS_MODI = 'image/vnd.ms-modi';
const IMAGE_VND_MS_PHOTO = 'image/vnd.ms-photo';
const IMAGE_VND_NET_FPX = 'image/vnd.net-fpx';
const IMAGE_VND_PCO_B16 = 'image/vnd.pco.b16';
const IMAGE_VND_TENCENT_TAP = 'image/vnd.tencent.tap';
const IMAGE_VND_VALVE_SOURCE_TEXTURE = 'image/vnd.valve.source.texture';
const IMAGE_VND_WAP_WBMP = 'image/vnd.wap.wbmp';
const IMAGE_VND_XIFF = 'image/vnd.xiff';
const IMAGE_WEBP = 'image/webp';
const IMAGE_WMF = 'image/wmf';
const IMAGE_X_3DS = 'image/x-3ds';
const IMAGE_X_CMU_RASTER = 'image/x-cmu-raster';
const IMAGE_X_CMX = 'image/x-cmx';
const IMAGE_X_FREEHAND = 'image/x-freehand';
const IMAGE_X_ICON = 'image/x-icon';
const IMAGE_X_JNG = 'image/x-jng';
const IMAGE_X_MRSID_IMAGE = 'image/x-mrsid-image';
const IMAGE_X_PCX = 'image/x-pcx';
const IMAGE_X_PICT = 'image/x-pict';
const IMAGE_X_PORTABLE_ANYMAP = 'image/x-portable-anymap';
const IMAGE_X_PORTABLE_BITMAP = 'image/x-portable-bitmap';
const IMAGE_X_PORTABLE_GRAYMAP = 'image/x-portable-graymap';
const IMAGE_X_PORTABLE_PIXMAP = 'image/x-portable-pixmap';
const IMAGE_X_RGB = 'image/x-rgb';
const IMAGE_X_TGA = 'image/x-tga';
const IMAGE_X_XBITMAP = 'image/x-xbitmap';
const IMAGE_X_XPIXMAP = 'image/x-xpixmap';
const IMAGE_X_XWINDOWDUMP = 'image/x-xwindowdump';
const MESSAGE_DISPOSITION_NOTIFICATION = 'message/disposition-notification';
const MESSAGE_GLOBAL = 'message/global';
const MESSAGE_GLOBAL_DELIVERY_STATUS = 'message/global-delivery-status';
const MESSAGE_GLOBAL_DISPOSITION_NOTIFICATION = 'message/global-disposition-notification';
const MESSAGE_GLOBAL_HEADERS = 'message/global-headers';
const MESSAGE_RFC822 = 'message/rfc822';
const MESSAGE_VND_WFA_WSC = 'message/vnd.wfa.wsc';
const MODEL_3MF = 'model/3mf';
const MODEL_GLTF_JSON = 'model/gltf+json';
const MODEL_GLTF_BINARY = 'model/gltf-binary';
const MODEL_IGES = 'model/iges';
const MODEL_JT = 'model/jt';
const MODEL_MESH = 'model/mesh';
const MODEL_MTL = 'model/mtl';
const MODEL_OBJ = 'model/obj';
const MODEL_PRC = 'model/prc';
const MODEL_STEP_XML = 'model/step+xml';
const MODEL_STEP_ZIP = 'model/step+zip';
const MODEL_STEP_XML_ZIP = 'model/step-xml+zip';
const MODEL_STL = 'model/stl';
const MODEL_U3D = 'model/u3d';
const MODEL_VND_CLD = 'model/vnd.cld';
const MODEL_VND_COLLADA_XML = 'model/vnd.collada+xml';
const MODEL_VND_DWF = 'model/vnd.dwf';
const MODEL_VND_GDL = 'model/vnd.gdl';
const MODEL_VND_GTW = 'model/vnd.gtw';
const MODEL_VND_MTS = 'model/vnd.mts';
const MODEL_VND_OPENGEX = 'model/vnd.opengex';
const MODEL_VND_PARASOLID_TRANSMIT_BINARY = 'model/vnd.parasolid.transmit.binary';
const MODEL_VND_PARASOLID_TRANSMIT_TEXT = 'model/vnd.parasolid.transmit.text';
const MODEL_VND_PYTHA_PYOX = 'model/vnd.pytha.pyox';
const MODEL_VND_SAP_VDS = 'model/vnd.sap.vds';
const MODEL_VND_USDA = 'model/vnd.usda';
const MODEL_VND_USDZ_ZIP = 'model/vnd.usdz+zip';
const MODEL_VND_VALVE_SOURCE_COMPILED_MAP = 'model/vnd.valve.source.compiled-map';
const MODEL_VND_VTU = 'model/vnd.vtu';
const MODEL_VRML = 'model/vrml';
const MODEL_X3D_BINARY = 'model/x3d+binary';
const MODEL_X3D_FASTINFOSET = 'model/x3d+fastinfoset';
const MODEL_X3D_VRML = 'model/x3d+vrml';
const MODEL_X3D_XML = 'model/x3d+xml';
const TEXT_CACHE_MANIFEST = 'text/cache-manifest';
const TEXT_CALENDAR = 'text/calendar';
const TEXT_COFFEESCRIPT = 'text/coffeescript';
const TEXT_CSS = 'text/css';
const TEXT_CSV = 'text/csv';
const TEXT_HTML = 'text/html';
const TEXT_JADE = 'text/jade';
const TEXT_JAVASCRIPT = 'text/javascript';
const TEXT_JSX = 'text/jsx';
const TEXT_LESS = 'text/less';
const TEXT_MARKDOWN = 'text/markdown';
const TEXT_MATHML = 'text/mathml';
const TEXT_MDX = 'text/mdx';
const TEXT_N3 = 'text/n3';
const TEXT_PLAIN = 'text/plain';
const TEXT_PRS_LINES_TAG = 'text/prs.lines.tag';
const TEXT_RICHTEXT = 'text/richtext';
const TEXT_RTF = 'text/rtf';
const TEXT_SGML = 'text/sgml';
const TEXT_SHEX = 'text/shex';
const TEXT_SLIM = 'text/slim';
const TEXT_SPDX = 'text/spdx';
const TEXT_STYLUS = 'text/stylus';
const TEXT_TAB_SEPARATED_VALUES = 'text/tab-separated-values';
const TEXT_TROFF = 'text/troff';
const TEXT_TURTLE = 'text/turtle';
const TEXT_URI_LIST = 'text/uri-list';
const TEXT_VCARD = 'text/vcard';
const TEXT_VND_CURL = 'text/vnd.curl';
const TEXT_VND_CURL_DCURL = 'text/vnd.curl.dcurl';
const TEXT_VND_CURL_MCURL = 'text/vnd.curl.mcurl';
const TEXT_VND_CURL_SCURL = 'text/vnd.curl.scurl';
const TEXT_VND_DVB_SUBTITLE = 'text/vnd.dvb.subtitle';
const TEXT_VND_FAMILYSEARCH_GEDCOM = 'text/vnd.familysearch.gedcom';
const TEXT_VND_FLY = 'text/vnd.fly';
const TEXT_VND_FMI_FLEXSTOR = 'text/vnd.fmi.flexstor';
const TEXT_VND_GRAPHVIZ = 'text/vnd.graphviz';
const TEXT_VND_IN3D_3DML = 'text/vnd.in3d.3dml';
const TEXT_VND_IN3D_SPOT = 'text/vnd.in3d.spot';
const TEXT_VND_SUN_J2ME_APP_DESCRIPTOR = 'text/vnd.sun.j2me.app-descriptor';
const TEXT_VND_WAP_WML = 'text/vnd.wap.wml';
const TEXT_VND_WAP_WMLSCRIPT = 'text/vnd.wap.wmlscript';
const TEXT_VTT = 'text/vtt';
const TEXT_WGSL = 'text/wgsl';
const TEXT_X_ASM = 'text/x-asm';
const TEXT_X_C = 'text/x-c';
const TEXT_X_COMPONENT = 'text/x-component';
const TEXT_X_FORTRAN = 'text/x-fortran';
const TEXT_X_HANDLEBARS_TEMPLATE = 'text/x-handlebars-template';
const TEXT_X_JAVA_SOURCE = 'text/x-java-source';
const TEXT_X_LUA = 'text/x-lua';
const TEXT_X_MARKDOWN = 'text/x-markdown';
const TEXT_X_NFO = 'text/x-nfo';
const TEXT_X_OPML = 'text/x-opml';
const TEXT_X_ORG = 'text/x-org';
const TEXT_X_PASCAL = 'text/x-pascal';
const TEXT_X_PROCESSING = 'text/x-processing';
const TEXT_X_SASS = 'text/x-sass';
const TEXT_X_SCRIPTZSH = 'text/x-scriptzsh';
const TEXT_X_SCSS = 'text/x-scss';
const TEXT_X_SETEXT = 'text/x-setext';
const TEXT_X_SFV = 'text/x-sfv';
const TEXT_X_SUSE_YMP = 'text/x-suse-ymp';
const TEXT_X_UUENCODE = 'text/x-uuencode';
const TEXT_X_VCALENDAR = 'text/x-vcalendar';
const TEXT_X_VCARD = 'text/x-vcard';
const TEXT_YAML = 'text/yaml';
const VIDEO_3GP = 'video/3gp';
const VIDEO_3GPP = 'video/3gpp';
const VIDEO_3GPP2 = 'video/3gpp2';
const VIDEO_H261 = 'video/h261';
const VIDEO_H263 = 'video/h263';
const VIDEO_H264 = 'video/h264';
const VIDEO_ISO_SEGMENT = 'video/iso.segment';
const VIDEO_JPEG = 'video/jpeg';
const VIDEO_JPM = 'video/jpm';
const VIDEO_MJ2 = 'video/mj2';
const VIDEO_MP2T = 'video/mp2t';
const VIDEO_MP4 = 'video/mp4';
const VIDEO_MPEG = 'video/mpeg';
const VIDEO_OGG = 'video/ogg';
const VIDEO_QUICKTIME = 'video/quicktime';
const VIDEO_VND_DECE_HD = 'video/vnd.dece.hd';
const VIDEO_VND_DECE_MOBILE = 'video/vnd.dece.mobile';
const VIDEO_VND_DECE_PD = 'video/vnd.dece.pd';
const VIDEO_VND_DECE_SD = 'video/vnd.dece.sd';
const VIDEO_VND_DECE_VIDEO = 'video/vnd.dece.video';
const VIDEO_VND_DVB_FILE = 'video/vnd.dvb.file';
const VIDEO_VND_FVT = 'video/vnd.fvt';
const VIDEO_VND_MPEGURL = 'video/vnd.mpegurl';
const VIDEO_VND_MS_PLAYREADY_MEDIA_PYV = 'video/vnd.ms-playready.media.pyv';
const VIDEO_VND_RN_REALVIDEO = 'video/vnd.rn-realvideo';
const VIDEO_VND_UVVU_MP4 = 'video/vnd.uvvu.mp4';
const VIDEO_VND_VIVO = 'video/vnd.vivo';
const VIDEO_WEBM = 'video/webm';
const VIDEO_X_FLI = 'video/x-fli';
const VIDEO_X_FLV = 'video/x-flv';
const VIDEO_X_M4V = 'video/x-m4v';
const VIDEO_X_MATROSKA = 'video/x-matroska';
const VIDEO_X_MNG = 'video/x-mng';
const VIDEO_X_MS_ASF = 'video/x-ms-asf';
const VIDEO_X_MS_VOB = 'video/x-ms-vob';
const VIDEO_X_MS_WM = 'video/x-ms-wm';
const VIDEO_X_MS_WMV = 'video/x-ms-wmv';
const VIDEO_X_MS_WMX = 'video/x-ms-wmx';
const VIDEO_X_MS_WVX = 'video/x-ms-wvx';
const VIDEO_X_MSVIDEO = 'video/x-msvideo';
const VIDEO_X_SGI_MOVIE = 'video/x-sgi-movie';
const VIDEO_X_SMV = 'video/x-smv';
const X_CONFERENCE_X_COOLTALK = 'x-conference/x-cooltalk';

MagicObject\Constants\PicoMimeMap

Declaration

@@ -5542,7 +5602,7 @@

Description

It can be used to determine the appropriate content type for files based on their extensions.

Constants

-
const MIME_TYPES_FOR_EXTENSIONS = array (\n '1km' => 'application/vnd.1000minds.decision-model+xml',\n '3dml' => 'text/vnd.in3d.3dml',\n '3ds' => 'image/x-3ds',\n '3g2' => 'video/3gpp2',\n '3gp' => 'video/3gp',\n '3gpp' => 'video/3gpp',\n '3mf' => 'model/3mf',\n '7z' => 'application/x-7z-compressed',\n '7zip' => 'application/x-7z-compressed',\n 123 => 'application/vnd.lotus-1-2-3',\n 'aab' => 'application/x-authorware-bin',\n 'aac' => 'audio/acc',\n 'aam' => 'application/x-authorware-map',\n 'aas' => 'application/x-authorware-seg',\n 'abw' => 'application/x-abiword',\n 'ac' => 'application/vnd.nokia.n-gage.ac+xml',\n 'ac3' => 'audio/ac3',\n 'acc' => 'application/vnd.americandynamics.acc',\n 'ace' => 'application/x-ace-compressed',\n 'acu' => 'application/vnd.acucobol',\n 'acutc' => 'application/vnd.acucorp',\n 'adp' => 'audio/adpcm',\n 'adts' => 'audio/aac',\n 'aep' => 'application/vnd.audiograph',\n 'afm' => 'application/x-font-type1',\n 'afp' => 'application/vnd.ibm.modcap',\n 'age' => 'application/vnd.age',\n 'ahead' => 'application/vnd.ahead.space',\n 'ai' => 'application/pdf',\n 'aif' => 'audio/x-aiff',\n 'aifc' => 'audio/x-aiff',\n 'aiff' => 'audio/x-aiff',\n 'air' => 'application/vnd.adobe.air-application-installer-package+zip',\n 'ait' => 'application/vnd.dvb.ait',\n 'ami' => 'application/vnd.amiga.ami',\n 'aml' => 'application/automationml-aml+xml',\n 'amlx' => 'application/automationml-amlx+zip',\n 'amr' => 'audio/amr',\n 'apk' => 'application/vnd.android.package-archive',\n 'apng' => 'image/apng',\n 'appcache' => 'text/cache-manifest',\n 'appinstaller' => 'application/appinstaller',\n 'application' => 'application/x-ms-application',\n 'appx' => 'application/appx',\n 'appxbundle' => 'application/appxbundle',\n 'apr' => 'application/vnd.lotus-approach',\n 'arc' => 'application/x-freearc',\n 'arj' => 'application/x-arj',\n 'asc' => 'application/pgp-signature',\n 'asf' => 'video/x-ms-asf',\n 'asm' => 'text/x-asm',\n 'aso' => 'application/vnd.accpac.simply.aso',\n 'asx' => 'video/x-ms-asf',\n 'atc' => 'application/vnd.acucorp',\n 'atom' => 'application/atom+xml',\n 'atomcat' => 'application/atomcat+xml',\n 'atomdeleted' => 'application/atomdeleted+xml',\n 'atomsvc' => 'application/atomsvc+xml',\n 'atx' => 'application/vnd.antix.game-component',\n 'au' => 'audio/x-au',\n 'avci' => 'image/avci',\n 'avcs' => 'image/avcs',\n 'avi' => 'video/x-msvideo',\n 'avif' => 'image/avif',\n 'aw' => 'application/applixware',\n 'azf' => 'application/vnd.airzip.filesecure.azf',\n 'azs' => 'application/vnd.airzip.filesecure.azs',\n 'azv' => 'image/vnd.airzip.accelerator.azv',\n 'azw' => 'application/vnd.amazon.ebook',\n 'b16' => 'image/vnd.pco.b16',\n 'bat' => 'application/x-msdownload',\n 'bcpio' => 'application/x-bcpio',\n 'bdf' => 'application/x-font-bdf',\n 'bdm' => 'application/vnd.syncml.dm+wbxml',\n 'bdoc' => 'application/x-bdoc',\n 'bed' => 'application/vnd.realvnc.bed',\n 'bh2' => 'application/vnd.fujitsu.oasysprs',\n 'bin' => 'application/octet-stream',\n 'blb' => 'application/x-blorb',\n 'blorb' => 'application/x-blorb',\n 'bmi' => 'application/vnd.bmi',\n 'bmml' => 'application/vnd.balsamiq.bmml+xml',\n 'bmp' => 'image/bmp',\n 'book' => 'application/vnd.framemaker',\n 'box' => 'application/vnd.previewsystems.box',\n 'boz' => 'application/x-bzip2',\n 'bpk' => 'application/octet-stream',\n 'bpmn' => 'application/octet-stream',\n 'brf' => 'application/braille',\n 'bsp' => 'model/vnd.valve.source.compiled-map',\n 'btf' => 'image/prs.btif',\n 'btif' => 'image/prs.btif',\n 'buffer' => 'application/octet-stream',\n 'bz' => 'application/x-bzip',\n 'bz2' => 'application/x-bzip2',\n 'c' => 'text/x-c',\n 'c4d' => 'application/vnd.clonk.c4group',\n 'c4f' => 'application/vnd.clonk.c4group',\n 'c4g' => 'application/vnd.clonk.c4group',\n 'c4p' => 'application/vnd.clonk.c4group',\n 'c4u' => 'application/vnd.clonk.c4group',\n 'c11amc' => 'application/vnd.cluetrust.cartomobile-config',\n 'c11amz' => 'application/vnd.cluetrust.cartomobile-config-pkg',\n 'cab' => 'application/vnd.ms-cab-compressed',\n 'caf' => 'audio/x-caf',\n 'cap' => 'application/vnd.tcpdump.pcap',\n 'car' => 'application/vnd.curl.car',\n 'cat' => 'application/vnd.ms-pki.seccat',\n 'cb7' => 'application/x-cbr',\n 'cba' => 'application/x-cbr',\n 'cbr' => 'application/x-cbr',\n 'cbt' => 'application/x-cbr',\n 'cbz' => 'application/x-cbr',\n 'cc' => 'text/x-c',\n 'cco' => 'application/x-cocoa',\n 'cct' => 'application/x-director',\n 'ccxml' => 'application/ccxml+xml',\n 'cdbcmsg' => 'application/vnd.contact.cmsg',\n 'cdf' => 'application/x-netcdf',\n 'cdfx' => 'application/cdfx+xml',\n 'cdkey' => 'application/vnd.mediastation.cdkey',\n 'cdmia' => 'application/cdmi-capability',\n 'cdmic' => 'application/cdmi-container',\n 'cdmid' => 'application/cdmi-domain',\n 'cdmio' => 'application/cdmi-object',\n 'cdmiq' => 'application/cdmi-queue',\n 'cdr' => 'application/cdr',\n 'cdx' => 'chemical/x-cdx',\n 'cdxml' => 'application/vnd.chemdraw+xml',\n 'cdy' => 'application/vnd.cinderella',\n 'cer' => 'application/pkix-cert',\n 'cfs' => 'application/x-cfs-compressed',\n 'cgm' => 'image/cgm',\n 'chat' => 'application/x-chat',\n 'chm' => 'application/vnd.ms-htmlhelp',\n 'chrt' => 'application/vnd.kde.kchart',\n 'cif' => 'chemical/x-cif',\n 'cii' => 'application/vnd.anser-web-certificate-issue-initiation',\n 'cil' => 'application/vnd.ms-artgalry',\n 'cjs' => 'application/node',\n 'cla' => 'application/vnd.claymore',\n 'class' => 'application/octet-stream',\n 'cld' => 'model/vnd.cld',\n 'clkk' => 'application/vnd.crick.clicker.keyboard',\n 'clkp' => 'application/vnd.crick.clicker.palette',\n 'clkt' => 'application/vnd.crick.clicker.template',\n 'clkw' => 'application/vnd.crick.clicker.wordbank',\n 'clkx' => 'application/vnd.crick.clicker',\n 'clp' => 'application/x-msclip',\n 'cmc' => 'application/vnd.cosmocaller',\n 'cmdf' => 'chemical/x-cmdf',\n 'cml' => 'chemical/x-cml',\n 'cmp' => 'application/vnd.yellowriver-custom-menu',\n 'cmx' => 'image/x-cmx',\n 'cod' => 'application/vnd.rim.cod',\n 'coffee' => 'text/coffeescript',\n 'com' => 'application/x-msdownload',\n 'conf' => 'text/plain',\n 'cpio' => 'application/x-cpio',\n 'cpl' => 'application/cpl+xml',\n 'cpp' => 'text/x-c',\n 'cpt' => 'application/mac-compactpro',\n 'crd' => 'application/x-mscardfile',\n 'crl' => 'application/pkix-crl',\n 'crt' => 'application/x-x509-ca-cert',\n 'crx' => 'application/x-chrome-extension',\n 'cryptonote' => 'application/vnd.rig.cryptonote',\n 'csh' => 'application/x-csh',\n 'csl' => 'application/vnd.citationstyles.style+xml',\n 'csml' => 'chemical/x-csml',\n 'csp' => 'application/vnd.commonspace',\n 'csr' => 'application/octet-stream',\n 'css' => 'text/css',\n 'cst' => 'application/x-director',\n 'csv' => 'text/csv',\n 'cu' => 'application/cu-seeme',\n 'curl' => 'text/vnd.curl',\n 'cwl' => 'application/cwl',\n 'cww' => 'application/prs.cww',\n 'cxt' => 'application/x-director',\n 'cxx' => 'text/x-c',\n 'dae' => 'model/vnd.collada+xml',\n 'daf' => 'application/vnd.mobius.daf',\n 'dart' => 'application/vnd.dart',\n 'dataless' => 'application/vnd.fdsn.seed',\n 'davmount' => 'application/davmount+xml',\n 'dbf' => 'application/vnd.dbf',\n 'dbk' => 'application/docbook+xml',\n 'dcr' => 'application/x-director',\n 'dcurl' => 'text/vnd.curl.dcurl',\n 'dd2' => 'application/vnd.oma.dd2+xml',\n 'ddd' => 'application/vnd.fujixerox.ddd',\n 'ddf' => 'application/vnd.syncml.dmddf+xml',\n 'dds' => 'image/vnd.ms-dds',\n 'deb' => 'application/x-debian-package',\n 'def' => 'text/plain',\n 'deploy' => 'application/octet-stream',\n 'der' => 'application/x-x509-ca-cert',\n 'dfac' => 'application/vnd.dreamfactory',\n 'dgc' => 'application/x-dgc-compressed',\n 'dib' => 'image/bmp',\n 'dic' => 'text/x-c',\n 'dir' => 'application/x-director',\n 'dis' => 'application/vnd.mobius.dis',\n 'disposition-notification' => 'message/disposition-notification',\n 'dist' => 'application/octet-stream',\n 'distz' => 'application/octet-stream',\n 'djv' => 'image/vnd.djvu',\n 'djvu' => 'image/vnd.djvu',\n 'dll' => 'application/octet-stream',\n 'dmg' => 'application/x-apple-diskimage',\n 'dmn' => 'application/octet-stream',\n 'dmp' => 'application/vnd.tcpdump.pcap',\n 'dms' => 'application/octet-stream',\n 'dna' => 'application/vnd.dna',\n 'doc' => 'application/msword',\n 'docm' => 'application/vnd.ms-word.template.macroEnabled.12',\n 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'dot' => 'application/msword',\n 'dotm' => 'application/vnd.ms-word.template.macroEnabled.12',\n 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n 'dp' => 'application/vnd.osgi.dp',\n 'dpg' => 'application/vnd.dpgraph',\n 'dpx' => 'image/dpx',\n 'dra' => 'audio/vnd.dra',\n 'drle' => 'image/dicom-rle',\n 'dsc' => 'text/prs.lines.tag',\n 'dssc' => 'application/dssc+der',\n 'dst' => 'application/octet-stream',\n 'dtb' => 'application/x-dtbook+xml',\n 'dtd' => 'application/xml-dtd',\n 'dts' => 'audio/vnd.dts',\n 'dtshd' => 'audio/vnd.dts.hd',\n 'dump' => 'application/octet-stream',\n 'dvb' => 'video/vnd.dvb.file',\n 'dvi' => 'application/x-dvi',\n 'dwd' => 'application/atsc-dwd+xml',\n 'dwf' => 'model/vnd.dwf',\n 'dwg' => 'image/vnd.dwg',\n 'dxf' => 'image/vnd.dxf',\n 'dxp' => 'application/vnd.spotfire.dxp',\n 'dxr' => 'application/x-director',\n 'ear' => 'application/java-archive',\n 'ecelp4800' => 'audio/vnd.nuera.ecelp4800',\n 'ecelp7470' => 'audio/vnd.nuera.ecelp7470',\n 'ecelp9600' => 'audio/vnd.nuera.ecelp9600',\n 'ecma' => 'application/ecmascript',\n 'edm' => 'application/vnd.novadigm.edm',\n 'edx' => 'application/vnd.novadigm.edx',\n 'efif' => 'application/vnd.picsel',\n 'ei6' => 'application/vnd.pg.osasli',\n 'elc' => 'application/octet-stream',\n 'emf' => 'image/emf',\n 'eml' => 'message/rfc822',\n 'emma' => 'application/emma+xml',\n 'emotionml' => 'application/emotionml+xml',\n 'emz' => 'application/x-msmetafile',\n 'eol' => 'audio/vnd.digital-winds',\n 'eot' => 'application/vnd.ms-fontobject',\n 'eps' => 'application/postscript',\n 'epub' => 'application/epub+zip',\n 'es3' => 'application/vnd.eszigno3+xml',\n 'esa' => 'application/vnd.osgi.subsystem',\n 'esf' => 'application/vnd.epson.esf',\n 'et3' => 'application/vnd.eszigno3+xml',\n 'etx' => 'text/x-setext',\n 'eva' => 'application/x-eva',\n 'evy' => 'application/x-envoy',\n 'exe' => 'application/octet-stream',\n 'exi' => 'application/exi',\n 'exp' => 'application/express',\n 'exr' => 'image/aces',\n 'ext' => 'application/vnd.novadigm.ext',\n 'ez' => 'application/andrew-inset',\n 'ez2' => 'application/vnd.ezpix-album',\n 'ez3' => 'application/vnd.ezpix-package',\n 'f' => 'text/x-fortran',\n 'f4v' => 'video/mp4',\n 'f77' => 'text/x-fortran',\n 'f90' => 'text/x-fortran',\n 'fbs' => 'image/vnd.fastbidsheet',\n 'fcdt' => 'application/vnd.adobe.formscentral.fcdt',\n 'fcs' => 'application/vnd.isac.fcs',\n 'fdf' => 'application/vnd.fdf',\n 'fdt' => 'application/fdt+xml',\n 'fe_launch' => 'application/vnd.denovo.fcselayout-link',\n 'fg5' => 'application/vnd.fujitsu.oasysgp',\n 'fgd' => 'application/x-director',\n 'fh' => 'image/x-freehand',\n 'fh4' => 'image/x-freehand',\n 'fh5' => 'image/x-freehand',\n 'fh7' => 'image/x-freehand',\n 'fhc' => 'image/x-freehand',\n 'fig' => 'application/x-xfig',\n 'fits' => 'image/fits',\n 'flac' => 'audio/x-flac',\n 'fli' => 'video/x-fli',\n 'flo' => 'application/vnd.micrografx.flo',\n 'flv' => 'video/x-flv',\n 'flw' => 'application/vnd.kde.kivio',\n 'flx' => 'text/vnd.fmi.flexstor',\n 'fly' => 'text/vnd.fly',\n 'fm' => 'application/vnd.framemaker',\n 'fnc' => 'application/vnd.frogans.fnc',\n 'fo' => 'application/vnd.software602.filler.form+xml',\n 'for' => 'text/x-fortran',\n 'fpx' => 'image/vnd.fpx',\n 'frame' => 'application/vnd.framemaker',\n 'fsc' => 'application/vnd.fsc.weblaunch',\n 'fst' => 'image/vnd.fst',\n 'ftc' => 'application/vnd.fluxtime.clip',\n 'fti' => 'application/vnd.anser-web-funds-transfer-initiation',\n 'fvt' => 'video/vnd.fvt',\n 'fxp' => 'application/vnd.adobe.fxp',\n 'fxpl' => 'application/vnd.adobe.fxp',\n 'fzs' => 'application/vnd.fuzzysheet',\n 'g2w' => 'application/vnd.geoplan',\n 'g3' => 'image/g3fax',\n 'g3w' => 'application/vnd.geospace',\n 'gac' => 'application/vnd.groove-account',\n 'gam' => 'application/x-tads',\n 'gbr' => 'application/rpki-ghostbusters',\n 'gca' => 'application/x-gca-compressed',\n 'gdl' => 'model/vnd.gdl',\n 'gdoc' => 'application/vnd.google-apps.document',\n 'ged' => 'text/vnd.familysearch.gedcom',\n 'geo' => 'application/vnd.dynageo',\n 'geojson' => 'application/geo+json',\n 'gex' => 'application/vnd.geometry-explorer',\n 'ggb' => 'application/vnd.geogebra.file',\n 'ggt' => 'application/vnd.geogebra.tool',\n 'ghf' => 'application/vnd.groove-help',\n 'gif' => 'image/gif',\n 'gim' => 'application/vnd.groove-identity-message',\n 'glb' => 'model/gltf-binary',\n 'gltf' => 'model/gltf+json',\n 'gml' => 'application/gml+xml',\n 'gmx' => 'application/vnd.gmx',\n 'gnumeric' => 'application/x-gnumeric',\n 'gpg' => 'application/gpg-keys',\n 'gph' => 'application/vnd.flographit',\n 'gpx' => 'application/gpx+xml',\n 'gqf' => 'application/vnd.grafeq',\n 'gqs' => 'application/vnd.grafeq',\n 'gram' => 'application/srgs',\n 'gramps' => 'application/x-gramps-xml',\n 'gre' => 'application/vnd.geometry-explorer',\n 'grv' => 'application/vnd.groove-injector',\n 'grxml' => 'application/srgs+xml',\n 'gsf' => 'application/x-font-ghostscript',\n 'gsheet' => 'application/vnd.google-apps.spreadsheet',\n 'gslides' => 'application/vnd.google-apps.presentation',\n 'gtar' => 'application/x-gtar',\n 'gtm' => 'application/vnd.groove-tool-message',\n 'gtw' => 'model/vnd.gtw',\n 'gv' => 'text/vnd.graphviz',\n 'gxf' => 'application/gxf',\n 'gxt' => 'application/vnd.geonext',\n 'gz' => 'application/gzip',\n 'gzip' => 'application/gzip',\n 'h' => 'text/x-c',\n 'h261' => 'video/h261',\n 'h263' => 'video/h263',\n 'h264' => 'video/h264',\n 'hal' => 'application/vnd.hal+xml',\n 'hbci' => 'application/vnd.hbci',\n 'hbs' => 'text/x-handlebars-template',\n 'hdd' => 'application/x-virtualbox-hdd',\n 'hdf' => 'application/x-hdf',\n 'heic' => 'image/heic',\n 'heics' => 'image/heic-sequence',\n 'heif' => 'image/heif',\n 'heifs' => 'image/heif-sequence',\n 'hej2' => 'image/hej2k',\n 'held' => 'application/atsc-held+xml',\n 'hh' => 'text/x-c',\n 'hjson' => 'application/hjson',\n 'hlp' => 'application/winhlp',\n 'hpgl' => 'application/vnd.hp-hpgl',\n 'hpid' => 'application/vnd.hp-hpid',\n 'hps' => 'application/vnd.hp-hps',\n 'hqx' => 'application/mac-binhex40',\n 'hsj2' => 'image/hsj2',\n 'htc' => 'text/x-component',\n 'htke' => 'application/vnd.kenameaapp',\n 'htm' => 'text/html',\n 'html' => 'text/html',\n 'hvd' => 'application/vnd.yamaha.hv-dic',\n 'hvp' => 'application/vnd.yamaha.hv-voice',\n 'hvs' => 'application/vnd.yamaha.hv-script',\n 'i2g' => 'application/vnd.intergeo',\n 'icc' => 'application/vnd.iccprofile',\n 'ice' => 'x-conference/x-cooltalk',\n 'icm' => 'application/vnd.iccprofile',\n 'ico' => 'image/x-icon',\n 'ics' => 'text/calendar',\n 'ief' => 'image/ief',\n 'ifb' => 'text/calendar',\n 'ifm' => 'application/vnd.shana.informed.formdata',\n 'iges' => 'model/iges',\n 'igl' => 'application/vnd.igloader',\n 'igm' => 'application/vnd.insors.igm',\n 'igs' => 'model/iges',\n 'igx' => 'application/vnd.micrografx.igx',\n 'iif' => 'application/vnd.shana.informed.interchange',\n 'img' => 'application/octet-stream',\n 'imp' => 'application/vnd.accpac.simply.imp',\n 'ims' => 'application/vnd.ms-ims',\n 'in' => 'text/plain',\n 'ini' => 'text/plain',\n 'ink' => 'application/inkml+xml',\n 'inkml' => 'application/inkml+xml',\n 'install' => 'application/x-install-instructions',\n 'iota' => 'application/vnd.astraea-software.iota',\n 'ipfix' => 'application/ipfix',\n 'ipk' => 'application/vnd.shana.informed.package',\n 'irm' => 'application/vnd.ibm.rights-management',\n 'irp' => 'application/vnd.irepository.package+xml',\n 'iso' => 'application/x-iso9660-image',\n 'itp' => 'application/vnd.shana.informed.formtemplate',\n 'its' => 'application/its+xml',\n 'ivp' => 'application/vnd.immervision-ivp',\n 'ivu' => 'application/vnd.immervision-ivu',\n 'jad' => 'text/vnd.sun.j2me.app-descriptor',\n 'jade' => 'text/jade',\n 'jam' => 'application/vnd.jam',\n 'jar' => 'application/java-archive',\n 'jardiff' => 'application/x-java-archive-diff',\n 'java' => 'text/x-java-source',\n 'jhc' => 'image/jphc',\n 'jisp' => 'application/vnd.jisp',\n 'jls' => 'image/jls',\n 'jlt' => 'application/vnd.hp-jlyt',\n 'jng' => 'image/x-jng',\n 'jnlp' => 'application/x-java-jnlp-file',\n 'joda' => 'application/vnd.joost.joda-archive',\n 'jp2' => 'image/jp2',\n 'jpe' => 'image/jpeg',\n 'jpeg' => 'image/jpeg',\n 'jpf' => 'image/jpx',\n 'jpg' => 'image/jpeg',\n 'jpg2' => 'image/jp2',\n 'jpgm' => 'video/jpm',\n 'jpgv' => 'video/jpeg',\n 'jph' => 'image/jph',\n 'jpm' => 'video/jpm',\n 'jpx' => 'image/jpx',\n 'js' => 'application/javascript',\n 'json' => 'application/json',\n 'json5' => 'application/json5',\n 'jsonld' => 'application/ld+json',\n 'jsonml' => 'application/jsonml+json',\n 'jsx' => 'text/jsx',\n 'jt' => 'model/jt',\n 'jxr' => 'image/jxr',\n 'jxra' => 'image/jxra',\n 'jxrs' => 'image/jxrs',\n 'jxs' => 'image/jxs',\n 'jxsc' => 'image/jxsc',\n 'jxsi' => 'image/jxsi',\n 'jxss' => 'image/jxss',\n 'kar' => 'audio/midi',\n 'karbon' => 'application/vnd.kde.karbon',\n 'kdb' => 'application/octet-stream',\n 'kdbx' => 'application/x-keepass2',\n 'key' => 'application/x-iwork-keynote-sffkey',\n 'kfo' => 'application/vnd.kde.kformula',\n 'kia' => 'application/vnd.kidspiration',\n 'kml' => 'application/vnd.google-earth.kml+xml',\n 'kmz' => 'application/vnd.google-earth.kmz',\n 'kne' => 'application/vnd.kinar',\n 'knp' => 'application/vnd.kinar',\n 'kon' => 'application/vnd.kde.kontour',\n 'kpr' => 'application/vnd.kde.kpresenter',\n 'kpt' => 'application/vnd.kde.kpresenter',\n 'kpxx' => 'application/vnd.ds-keypoint',\n 'ksp' => 'application/vnd.kde.kspread',\n 'ktr' => 'application/vnd.kahootz',\n 'ktx' => 'image/ktx',\n 'ktx2' => 'image/ktx2',\n 'ktz' => 'application/vnd.kahootz',\n 'kwd' => 'application/vnd.kde.kword',\n 'kwt' => 'application/vnd.kde.kword',\n 'lasxml' => 'application/vnd.las.las+xml',\n 'latex' => 'application/x-latex',\n 'lbd' => 'application/vnd.llamagraphics.life-balance.desktop',\n 'lbe' => 'application/vnd.llamagraphics.life-balance.exchange+xml',\n 'les' => 'application/vnd.hhe.lesson-player',\n 'less' => 'text/less',\n 'lgr' => 'application/lgr+xml',\n 'lha' => 'application/octet-stream',\n 'link66' => 'application/vnd.route66.link66+xml',\n 'list' => 'text/plain',\n 'list3820' => 'application/vnd.ibm.modcap',\n 'listafp' => 'application/vnd.ibm.modcap',\n 'litcoffee' => 'text/coffeescript',\n 'lnk' => 'application/x-ms-shortcut',\n 'log' => 'text/plain',\n 'lostxml' => 'application/lost+xml',\n 'lrf' => 'application/octet-stream',\n 'lrm' => 'application/vnd.ms-lrm',\n 'ltf' => 'application/vnd.frogans.ltf',\n 'lua' => 'text/x-lua',\n 'luac' => 'application/x-lua-bytecode',\n 'lvp' => 'audio/vnd.lucent.voice',\n 'lwp' => 'application/vnd.lotus-wordpro',\n 'lzh' => 'application/octet-stream',\n 'm1v' => 'video/mpeg',\n 'm2a' => 'audio/mpeg',\n 'm2v' => 'video/mpeg',\n 'm3a' => 'audio/mpeg',\n 'm3u' => 'text/plain',\n 'm3u8' => 'application/vnd.apple.mpegurl',\n 'm4a' => 'audio/x-m4a',\n 'm4p' => 'application/mp4',\n 'm4s' => 'video/iso.segment',\n 'm4u' => 'application/vnd.mpegurl',\n 'm4v' => 'video/x-m4v',\n 'm13' => 'application/x-msmediaview',\n 'm14' => 'application/x-msmediaview',\n 'm21' => 'application/mp21',\n 'ma' => 'application/mathematica',\n 'mads' => 'application/mads+xml',\n 'maei' => 'application/mmt-aei+xml',\n 'mag' => 'application/vnd.ecowin.chart',\n 'maker' => 'application/vnd.framemaker',\n 'man' => 'text/troff',\n 'manifest' => 'text/cache-manifest',\n 'map' => 'application/json',\n 'mar' => 'application/octet-stream',\n 'markdown' => 'text/markdown',\n 'mathml' => 'application/mathml+xml',\n 'mb' => 'application/mathematica',\n 'mbk' => 'application/vnd.mobius.mbk',\n 'mbox' => 'application/mbox',\n 'mc1' => 'application/vnd.medcalcdata',\n 'mcd' => 'application/vnd.mcd',\n 'mcurl' => 'text/vnd.curl.mcurl',\n 'md' => 'text/markdown',\n 'mdb' => 'application/x-msaccess',\n 'mdi' => 'image/vnd.ms-modi',\n 'mdx' => 'text/mdx',\n 'me' => 'text/troff',\n 'mesh' => 'model/mesh',\n 'meta4' => 'application/metalink4+xml',\n 'metalink' => 'application/metalink+xml',\n 'mets' => 'application/mets+xml',\n 'mfm' => 'application/vnd.mfmp',\n 'mft' => 'application/rpki-manifest',\n 'mgp' => 'application/vnd.osgeo.mapguide.package',\n 'mgz' => 'application/vnd.proteus.magazine',\n 'mid' => 'audio/midi',\n 'midi' => 'audio/midi',\n 'mie' => 'application/x-mie',\n 'mif' => 'application/vnd.mif',\n 'mime' => 'message/rfc822',\n 'mj2' => 'video/mj2',\n 'mjp2' => 'video/mj2',\n 'mjs' => 'text/javascript',\n 'mk3d' => 'video/x-matroska',\n 'mka' => 'audio/x-matroska',\n 'mkd' => 'text/x-markdown',\n 'mks' => 'video/x-matroska',\n 'mkv' => 'video/x-matroska',\n 'mlp' => 'application/vnd.dolby.mlp',\n 'mmd' => 'application/vnd.chipnuts.karaoke-mmd',\n 'mmf' => 'application/vnd.smaf',\n 'mml' => 'text/mathml',\n 'mmr' => 'image/vnd.fujixerox.edmics-mmr',\n 'mng' => 'video/x-mng',\n 'mny' => 'application/x-msmoney',\n 'mobi' => 'application/x-mobipocket-ebook',\n 'mods' => 'application/mods+xml',\n 'mov' => 'video/quicktime',\n 'movie' => 'video/x-sgi-movie',\n 'mp2' => 'audio/mpeg',\n 'mp2a' => 'audio/mpeg',\n 'mp3' => 'audio/mpeg',\n 'mp4' => 'video/mp4',\n 'mp4a' => 'audio/mp4',\n 'mp4s' => 'application/mp4',\n 'mp4v' => 'video/mp4',\n 'mp21' => 'application/mp21',\n 'mpc' => 'application/vnd.mophun.certificate',\n 'mpd' => 'application/dash+xml',\n 'mpe' => 'video/mpeg',\n 'mpeg' => 'video/mpeg',\n 'mpf' => 'application/media-policy-dataset+xml',\n 'mpg' => 'video/mpeg',\n 'mpg4' => 'video/mp4',\n 'mpga' => 'audio/mpeg',\n 'mpkg' => 'application/vnd.apple.installer+xml',\n 'mpm' => 'application/vnd.blueice.multipass',\n 'mpn' => 'application/vnd.mophun.application',\n 'mpp' => 'application/vnd.ms-project',\n 'mpt' => 'application/vnd.ms-project',\n 'mpy' => 'application/vnd.ibm.minipay',\n 'mqy' => 'application/vnd.mobius.mqy',\n 'mrc' => 'application/marc',\n 'mrcx' => 'application/marcxml+xml',\n 'ms' => 'text/troff',\n 'mscml' => 'application/mediaservercontrol+xml',\n 'mseed' => 'application/vnd.fdsn.mseed',\n 'mseq' => 'application/vnd.mseq',\n 'msf' => 'application/vnd.epson.msf',\n 'msg' => 'application/vnd.ms-outlook',\n 'msh' => 'model/mesh',\n 'msi' => 'application/x-msdownload',\n 'msix' => 'application/msix',\n 'msixbundle' => 'application/msixbundle',\n 'msl' => 'application/vnd.mobius.msl',\n 'msm' => 'application/octet-stream',\n 'msp' => 'application/octet-stream',\n 'msty' => 'application/vnd.muvee.style',\n 'mtl' => 'model/mtl',\n 'mts' => 'model/vnd.mts',\n 'mus' => 'application/vnd.musician',\n 'musd' => 'application/mmt-usd+xml',\n 'musicxml' => 'application/vnd.recordare.musicxml+xml',\n 'mvb' => 'application/x-msmediaview',\n 'mvt' => 'application/vnd.mapbox-vector-tile',\n 'mwf' => 'application/vnd.mfer',\n 'mxf' => 'application/mxf',\n 'mxl' => 'application/vnd.recordare.musicxml',\n 'mxmf' => 'audio/mobile-xmf',\n 'mxml' => 'application/xv+xml',\n 'mxs' => 'application/vnd.triscape.mxs',\n 'mxu' => 'video/vnd.mpegurl',\n 'n-gage' => 'application/vnd.nokia.n-gage.symbian.install',\n 'n3' => 'text/n3',\n 'nb' => 'application/mathematica',\n 'nbp' => 'application/vnd.wolfram.player',\n 'nc' => 'application/x-netcdf',\n 'ncx' => 'application/x-dtbncx+xml',\n 'ndjson' => 'application/x-ndjson',\n 'nfo' => 'text/x-nfo',\n 'ngdat' => 'application/vnd.nokia.n-gage.data',\n 'nitf' => 'application/vnd.nitf',\n 'nlu' => 'application/vnd.neurolanguage.nlu',\n 'nml' => 'application/vnd.enliven',\n 'nnd' => 'application/vnd.noblenet-directory',\n 'nns' => 'application/vnd.noblenet-sealer',\n 'nnw' => 'application/vnd.noblenet-web',\n 'npx' => 'image/vnd.net-fpx',\n 'nq' => 'application/n-quads',\n 'nsc' => 'application/x-conference',\n 'nsf' => 'application/vnd.lotus-notes',\n 'nt' => 'application/n-triples',\n 'ntf' => 'application/vnd.nitf',\n 'numbers' => 'application/x-iwork-numbers-sffnumbers',\n 'nzb' => 'application/x-nzb',\n 'oa2' => 'application/vnd.fujitsu.oasys2',\n 'oa3' => 'application/vnd.fujitsu.oasys3',\n 'oas' => 'application/vnd.fujitsu.oasys',\n 'obd' => 'application/x-msbinder',\n 'obgx' => 'application/vnd.openblox.game+xml',\n 'obj' => 'model/obj',\n 'oda' => 'application/oda',\n 'odb' => 'application/vnd.oasis.opendocument.database',\n 'odc' => 'application/vnd.oasis.opendocument.chart',\n 'odf' => 'application/vnd.oasis.opendocument.formula',\n 'odft' => 'application/vnd.oasis.opendocument.formula-template',\n 'odg' => 'application/vnd.oasis.opendocument.graphics',\n 'odi' => 'application/vnd.oasis.opendocument.image',\n 'odm' => 'application/vnd.oasis.opendocument.text-master',\n 'odp' => 'application/vnd.oasis.opendocument.presentation',\n 'ods' => 'application/vnd.oasis.opendocument.spreadsheet',\n 'odt' => 'application/vnd.oasis.opendocument.text',\n 'oga' => 'audio/ogg',\n 'ogex' => 'model/vnd.opengex',\n 'ogg' => 'audio/ogg',\n 'ogv' => 'video/ogg',\n 'ogx' => 'application/ogg',\n 'omdoc' => 'application/omdoc+xml',\n 'onepkg' => 'application/onenote',\n 'onetmp' => 'application/onenote',\n 'onetoc' => 'application/onenote',\n 'onetoc2' => 'application/onenote',\n 'opf' => 'application/oebps-package+xml',\n 'opml' => 'text/x-opml',\n 'oprc' => 'application/vnd.palm',\n 'opus' => 'audio/ogg',\n 'org' => 'text/x-org',\n 'osf' => 'application/vnd.yamaha.openscoreformat',\n 'osfpvg' => 'application/vnd.yamaha.openscoreformat.osfpvg+xml',\n 'osm' => 'application/vnd.openstreetmap.data+xml',\n 'otc' => 'application/vnd.oasis.opendocument.chart-template',\n 'otf' => 'font/otf',\n 'otg' => 'application/vnd.oasis.opendocument.graphics-template',\n 'oth' => 'application/vnd.oasis.opendocument.text-web',\n 'oti' => 'application/vnd.oasis.opendocument.image-template',\n 'otp' => 'application/vnd.oasis.opendocument.presentation-template',\n 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template',\n 'ott' => 'application/vnd.oasis.opendocument.text-template',\n 'ova' => 'application/x-virtualbox-ova',\n 'ovf' => 'application/x-virtualbox-ovf',\n 'owl' => 'application/rdf+xml',\n 'oxps' => 'application/oxps',\n 'oxt' => 'application/vnd.openofficeorg.extension',\n 'p' => 'text/x-pascal',\n 'p7a' => 'application/x-pkcs7-signature',\n 'p7b' => 'application/x-pkcs7-certificates',\n 'p7c' => 'application/pkcs7-mime',\n 'p7m' => 'application/pkcs7-mime',\n 'p7r' => 'application/x-pkcs7-certreqresp',\n 'p7s' => 'application/pkcs7-signature',\n 'p8' => 'application/pkcs8',\n 'p10' => 'application/x-pkcs10',\n 'p12' => 'application/x-pkcs12',\n 'pac' => 'application/x-ns-proxy-autoconfig',\n 'pages' => 'application/x-iwork-pages-sffpages',\n 'pas' => 'text/x-pascal',\n 'paw' => 'application/vnd.pawaafile',\n 'pbd' => 'application/vnd.powerbuilder6',\n 'pbm' => 'image/x-portable-bitmap',\n 'pcap' => 'application/vnd.tcpdump.pcap',\n 'pcf' => 'application/x-font-pcf',\n 'pcl' => 'application/vnd.hp-pcl',\n 'pclxl' => 'application/vnd.hp-pclxl',\n 'pct' => 'image/x-pict',\n 'pcurl' => 'application/vnd.curl.pcurl',\n 'pcx' => 'image/x-pcx',\n 'pdb' => 'application/x-pilot',\n 'pde' => 'text/x-processing',\n 'pdf' => 'application/pdf',\n 'pem' => 'application/x-x509-user-cert',\n 'pfa' => 'application/x-font-type1',\n 'pfb' => 'application/x-font-type1',\n 'pfm' => 'application/x-font-type1',\n 'pfr' => 'application/font-tdpfr',\n 'pfx' => 'application/x-pkcs12',\n 'pgm' => 'image/x-portable-graymap',\n 'pgn' => 'application/x-chess-pgn',\n 'pgp' => 'application/pgp',\n 'phar' => 'application/octet-stream',\n 'php' => 'application/x-httpd-php',\n 'php3' => 'application/x-httpd-php',\n 'php4' => 'application/x-httpd-php',\n 'phps' => 'application/x-httpd-php-source',\n 'phtml' => 'application/x-httpd-php',\n 'pic' => 'image/x-pict',\n 'pkg' => 'application/octet-stream',\n 'pki' => 'application/pkixcmp',\n 'pkipath' => 'application/pkix-pkipath',\n 'pkpass' => 'application/vnd.apple.pkpass',\n 'pl' => 'application/x-perl',\n 'plb' => 'application/vnd.3gpp.pic-bw-large',\n 'plc' => 'application/vnd.mobius.plc',\n 'plf' => 'application/vnd.pocketlearn',\n 'pls' => 'application/pls+xml',\n 'pm' => 'application/x-perl',\n 'pml' => 'application/vnd.ctc-posml',\n 'png' => 'image/png',\n 'pnm' => 'image/x-portable-anymap',\n 'portpkg' => 'application/vnd.macports.portpkg',\n 'pot' => 'application/vnd.ms-powerpoint',\n 'potm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',\n 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template',\n 'ppa' => 'application/vnd.ms-powerpoint',\n 'ppam' => 'application/vnd.ms-powerpoint.addin.macroEnabled.12',\n 'ppd' => 'application/vnd.cups-ppd',\n 'ppm' => 'image/x-portable-pixmap',\n 'pps' => 'application/vnd.ms-powerpoint',\n 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12',\n 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',\n 'ppt' => 'application/powerpoint',\n 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',\n 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'pqa' => 'application/vnd.palm',\n 'prc' => 'model/prc',\n 'pre' => 'application/vnd.lotus-freelance',\n 'prf' => 'application/pics-rules',\n 'provx' => 'application/provenance+xml',\n 'ps' => 'application/postscript',\n 'psb' => 'application/vnd.3gpp.pic-bw-small',\n 'psd' => 'application/x-photoshop',\n 'psf' => 'application/x-font-linux-psf',\n 'pskcxml' => 'application/pskc+xml',\n 'pti' => 'image/prs.pti',\n 'ptid' => 'application/vnd.pvi.ptid1',\n 'pub' => 'application/x-mspublisher',\n 'pv' => 'application/octet-stream',\n 'pvb' => 'application/vnd.3gpp.pic-bw-var',\n 'pwn' => 'application/vnd.3m.post-it-notes',\n 'pxf' => 'application/octet-stream',\n 'pya' => 'audio/vnd.ms-playready.media.pya',\n 'pyo' => 'model/vnd.pytha.pyox',\n 'pyox' => 'model/vnd.pytha.pyox',\n 'pyv' => 'video/vnd.ms-playready.media.pyv',\n 'qam' => 'application/vnd.epson.quickanime',\n 'qbo' => 'application/vnd.intu.qbo',\n 'qfx' => 'application/vnd.intu.qfx',\n 'qps' => 'application/vnd.publishare-delta-tree',\n 'qt' => 'video/quicktime',\n 'qwd' => 'application/vnd.quark.quarkxpress',\n 'qwt' => 'application/vnd.quark.quarkxpress',\n 'qxb' => 'application/vnd.quark.quarkxpress',\n 'qxd' => 'application/vnd.quark.quarkxpress',\n 'qxl' => 'application/vnd.quark.quarkxpress',\n 'qxt' => 'application/vnd.quark.quarkxpress',\n 'ra' => 'audio/x-realaudio',\n 'ram' => 'audio/x-pn-realaudio',\n 'raml' => 'application/raml+yaml',\n 'rapd' => 'application/route-apd+xml',\n 'rar' => 'application/x-rar',\n 'ras' => 'image/x-cmu-raster',\n 'rcprofile' => 'application/vnd.ipunplugged.rcprofile',\n 'rdf' => 'application/rdf+xml',\n 'rdz' => 'application/vnd.data-vision.rdz',\n 'relo' => 'application/p2p-overlay+xml',\n 'rep' => 'application/vnd.businessobjects',\n 'res' => 'application/x-dtbresource+xml',\n 'rgb' => 'image/x-rgb',\n 'rif' => 'application/reginfo+xml',\n 'rip' => 'audio/vnd.rip',\n 'ris' => 'application/x-research-info-systems',\n 'rl' => 'application/resource-lists+xml',\n 'rlc' => 'image/vnd.fujixerox.edmics-rlc',\n 'rld' => 'application/resource-lists-diff+xml',\n 'rm' => 'audio/x-pn-realaudio',\n 'rmi' => 'audio/midi',\n 'rmp' => 'audio/x-pn-realaudio-plugin',\n 'rms' => 'application/vnd.jcp.javame.midlet-rms',\n 'rmvb' => 'application/vnd.rn-realmedia-vbr',\n 'rnc' => 'application/relax-ng-compact-syntax',\n 'rng' => 'application/xml',\n 'roa' => 'application/rpki-roa',\n 'roff' => 'text/troff',\n 'rp9' => 'application/vnd.cloanto.rp9',\n 'rpm' => 'audio/x-pn-realaudio-plugin',\n 'rpss' => 'application/vnd.nokia.radio-presets',\n 'rpst' => 'application/vnd.nokia.radio-preset',\n 'rq' => 'application/sparql-query',\n 'rs' => 'application/rls-services+xml',\n 'rsa' => 'application/x-pkcs7',\n 'rsat' => 'application/atsc-rsat+xml',\n 'rsd' => 'application/rsd+xml',\n 'rsheet' => 'application/urc-ressheet+xml',\n 'rss' => 'application/rss+xml',\n 'rtf' => 'text/rtf',\n 'rtx' => 'text/richtext',\n 'run' => 'application/x-makeself',\n 'rusd' => 'application/route-usd+xml',\n 'rv' => 'video/vnd.rn-realvideo',\n 's' => 'text/x-asm',\n 's3m' => 'audio/s3m',\n 'saf' => 'application/vnd.yamaha.smaf-audio',\n 'sass' => 'text/x-sass',\n 'sbml' => 'application/sbml+xml',\n 'sc' => 'application/vnd.ibm.secure-container',\n 'scd' => 'application/x-msschedule',\n 'scm' => 'application/vnd.lotus-screencam',\n 'scq' => 'application/scvp-cv-request',\n 'scs' => 'application/scvp-cv-response',\n 'scss' => 'text/x-scss',\n 'scurl' => 'text/vnd.curl.scurl',\n 'sda' => 'application/vnd.stardivision.draw',\n 'sdc' => 'application/vnd.stardivision.calc',\n 'sdd' => 'application/vnd.stardivision.impress',\n 'sdkd' => 'application/vnd.solent.sdkm+xml',\n 'sdkm' => 'application/vnd.solent.sdkm+xml',\n 'sdp' => 'application/sdp',\n 'sdw' => 'application/vnd.stardivision.writer',\n 'sea' => 'application/octet-stream',\n 'see' => 'application/vnd.seemail',\n 'seed' => 'application/vnd.fdsn.seed',\n 'sema' => 'application/vnd.sema',\n 'semd' => 'application/vnd.semd',\n 'semf' => 'application/vnd.semf',\n 'senmlx' => 'application/senml+xml',\n 'sensmlx' => 'application/sensml+xml',\n 'ser' => 'application/java-serialized-object',\n 'setpay' => 'application/set-payment-initiation',\n 'setreg' => 'application/set-registration-initiation',\n 'sfd-hdstx' => 'application/vnd.hydrostatix.sof-data',\n 'sfs' => 'application/vnd.spotfire.sfs',\n 'sfv' => 'text/x-sfv',\n 'sgi' => 'image/sgi',\n 'sgl' => 'application/vnd.stardivision.writer-global',\n 'sgm' => 'text/sgml',\n 'sgml' => 'text/sgml',\n 'sh' => 'application/x-sh',\n 'shar' => 'application/x-shar',\n 'shex' => 'text/shex',\n 'shf' => 'application/shf+xml',\n 'shtml' => 'text/html',\n 'sid' => 'image/x-mrsid-image',\n 'sieve' => 'application/sieve',\n 'sig' => 'application/pgp-signature',\n 'sil' => 'audio/silk',\n 'silo' => 'model/mesh',\n 'sis' => 'application/vnd.symbian.install',\n 'sisx' => 'application/vnd.symbian.install',\n 'sit' => 'application/x-stuffit',\n 'sitx' => 'application/x-stuffitx',\n 'siv' => 'application/sieve',\n 'skd' => 'application/vnd.koan',\n 'skm' => 'application/vnd.koan',\n 'skp' => 'application/vnd.koan',\n 'skt' => 'application/vnd.koan',\n 'sldm' => 'application/vnd.ms-powerpoint.slide.macroenabled.12',\n 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide',\n 'slim' => 'text/slim',\n 'slm' => 'text/slim',\n 'sls' => 'application/route-s-tsid+xml',\n 'slt' => 'application/vnd.epson.salt',\n 'sm' => 'application/vnd.stepmania.stepchart',\n 'smf' => 'application/vnd.stardivision.math',\n 'smi' => 'application/smil',\n 'smil' => 'application/smil',\n 'smv' => 'video/x-smv',\n 'smzip' => 'application/vnd.stepmania.package',\n 'snd' => 'audio/basic',\n 'snf' => 'application/x-font-snf',\n 'so' => 'application/octet-stream',\n 'spc' => 'application/x-pkcs7-certificates',\n 'spdx' => 'text/spdx',\n 'spf' => 'application/vnd.yamaha.smaf-phrase',\n 'spl' => 'application/x-futuresplash',\n 'spot' => 'text/vnd.in3d.spot',\n 'spp' => 'application/scvp-vp-response',\n 'spq' => 'application/scvp-vp-request',\n 'spx' => 'audio/ogg',\n 'sql' => 'application/x-sql',\n 'src' => 'application/x-wais-source',\n 'srt' => 'application/x-subrip',\n 'sru' => 'application/sru+xml',\n 'srx' => 'application/sparql-results+xml',\n 'ssdl' => 'application/ssdl+xml',\n 'sse' => 'application/vnd.kodak-descriptor',\n 'ssf' => 'application/vnd.epson.ssf',\n 'ssml' => 'application/ssml+xml',\n 'sst' => 'application/octet-stream',\n 'st' => 'application/vnd.sailingtracker.track',\n 'stc' => 'application/vnd.sun.xml.calc.template',\n 'std' => 'application/vnd.sun.xml.draw.template',\n 'step' => 'application/STEP',\n 'stf' => 'application/vnd.wt.stf',\n 'sti' => 'application/vnd.sun.xml.impress.template',\n 'stk' => 'application/hyperstudio',\n 'stl' => 'model/stl',\n 'stp' => 'application/STEP',\n 'stpx' => 'model/step+xml',\n 'stpxz' => 'model/step-xml+zip',\n 'stpz' => 'model/step+zip',\n 'str' => 'application/vnd.pg.format',\n 'stw' => 'application/vnd.sun.xml.writer.template',\n 'styl' => 'text/stylus',\n 'stylus' => 'text/stylus',\n 'sub' => 'text/vnd.dvb.subtitle',\n 'sus' => 'application/vnd.sus-calendar',\n 'susp' => 'application/vnd.sus-calendar',\n 'sv4cpio' => 'application/x-sv4cpio',\n 'sv4crc' => 'application/x-sv4crc',\n 'svc' => 'application/vnd.dvb.service',\n 'svd' => 'application/vnd.svd',\n 'svg' => 'image/svg+xml',\n 'svgz' => 'image/svg+xml',\n 'swa' => 'application/x-director',\n 'swf' => 'application/x-shockwave-flash',\n 'swi' => 'application/vnd.aristanetworks.swi',\n 'swidtag' => 'application/swid+xml',\n 'sxc' => 'application/vnd.sun.xml.calc',\n 'sxd' => 'application/vnd.sun.xml.draw',\n 'sxg' => 'application/vnd.sun.xml.writer.global',\n 'sxi' => 'application/vnd.sun.xml.impress',\n 'sxm' => 'application/vnd.sun.xml.math',\n 'sxw' => 'application/vnd.sun.xml.writer',\n 't' => 'text/troff',\n 't3' => 'application/x-t3vm-image',\n 't38' => 'image/t38',\n 'taglet' => 'application/vnd.mynfc',\n 'tao' => 'application/vnd.tao.intent-module-archive',\n 'tap' => 'image/vnd.tencent.tap',\n 'tar' => 'application/x-tar',\n 'tcap' => 'application/vnd.3gpp2.tcap',\n 'tcl' => 'application/x-tcl',\n 'td' => 'application/urc-targetdesc+xml',\n 'teacher' => 'application/vnd.smart.teacher',\n 'tei' => 'application/tei+xml',\n 'teicorpus' => 'application/tei+xml',\n 'tex' => 'application/x-tex',\n 'texi' => 'application/x-texinfo',\n 'texinfo' => 'application/x-texinfo',\n 'text' => 'text/plain',\n 'tfi' => 'application/thraud+xml',\n 'tfm' => 'application/x-tex-tfm',\n 'tfx' => 'image/tiff-fx',\n 'tga' => 'image/x-tga',\n 'tgz' => 'application/x-tar',\n 'thmx' => 'application/vnd.ms-officetheme',\n 'tif' => 'image/tiff',\n 'tiff' => 'image/tiff',\n 'tk' => 'application/x-tcl',\n 'tmo' => 'application/vnd.tmobile-livetv',\n 'toml' => 'application/toml',\n 'torrent' => 'application/x-bittorrent',\n 'tpl' => 'application/vnd.groove-tool-template',\n 'tpt' => 'application/vnd.trid.tpt',\n 'tr' => 'text/troff',\n 'tra' => 'application/vnd.trueapp',\n 'trig' => 'application/trig',\n 'trm' => 'application/x-msterminal',\n 'ts' => 'video/mp2t',\n 'tsd' => 'application/timestamped-data',\n 'tsv' => 'text/tab-separated-values',\n 'ttc' => 'font/collection',\n 'ttf' => 'font/ttf',\n 'ttl' => 'text/turtle',\n 'ttml' => 'application/ttml+xml',\n 'twd' => 'application/vnd.simtech-mindmapper',\n 'twds' => 'application/vnd.simtech-mindmapper',\n 'txd' => 'application/vnd.genomatix.tuxedo',\n 'txf' => 'application/vnd.mobius.txf',\n 'txt' => 'text/plain',\n 'u3d' => 'model/u3d',\n 'u8dsn' => 'message/global-delivery-status',\n 'u8hdr' => 'message/global-headers',\n 'u8mdn' => 'message/global-disposition-notification',\n 'u8msg' => 'message/global',\n 'u32' => 'application/x-authorware-bin',\n 'ubj' => 'application/ubjson',\n 'udeb' => 'application/x-debian-package',\n 'ufd' => 'application/vnd.ufdl',\n 'ufdl' => 'application/vnd.ufdl',\n 'ulx' => 'application/x-glulx',\n 'umj' => 'application/vnd.umajin',\n 'unityweb' => 'application/vnd.unity',\n 'uo' => 'application/vnd.uoml+xml',\n 'uoml' => 'application/vnd.uoml+xml',\n 'uri' => 'text/uri-list',\n 'uris' => 'text/uri-list',\n 'urls' => 'text/uri-list',\n 'usda' => 'model/vnd.usda',\n 'usdz' => 'model/vnd.usdz+zip',\n 'ustar' => 'application/x-ustar',\n 'utz' => 'application/vnd.uiq.theme',\n 'uu' => 'text/x-uuencode',\n 'uva' => 'audio/vnd.dece.audio',\n 'uvd' => 'application/vnd.dece.data',\n 'uvf' => 'application/vnd.dece.data',\n 'uvg' => 'image/vnd.dece.graphic',\n 'uvh' => 'video/vnd.dece.hd',\n 'uvi' => 'image/vnd.dece.graphic',\n 'uvm' => 'video/vnd.dece.mobile',\n 'uvp' => 'video/vnd.dece.pd',\n 'uvs' => 'video/vnd.dece.sd',\n 'uvt' => 'application/vnd.dece.ttml+xml',\n 'uvu' => 'video/vnd.uvvu.mp4',\n 'uvv' => 'video/vnd.dece.video',\n 'uvva' => 'audio/vnd.dece.audio',\n 'uvvd' => 'application/vnd.dece.data',\n 'uvvf' => 'application/vnd.dece.data',\n 'uvvg' => 'image/vnd.dece.graphic',\n 'uvvh' => 'video/vnd.dece.hd',\n 'uvvi' => 'image/vnd.dece.graphic',\n 'uvvm' => 'video/vnd.dece.mobile',\n 'uvvp' => 'video/vnd.dece.pd',\n 'uvvs' => 'video/vnd.dece.sd',\n 'uvvt' => 'application/vnd.dece.ttml+xml',\n 'uvvu' => 'video/vnd.uvvu.mp4',\n 'uvvv' => 'video/vnd.dece.video',\n 'uvvx' => 'application/vnd.dece.unspecified',\n 'uvvz' => 'application/vnd.dece.zip',\n 'uvx' => 'application/vnd.dece.unspecified',\n 'uvz' => 'application/vnd.dece.zip',\n 'vbox' => 'application/x-virtualbox-vbox',\n 'vbox-extpack' => 'application/x-virtualbox-vbox-extpack',\n 'vcard' => 'text/vcard',\n 'vcd' => 'application/x-cdlink',\n 'vcf' => 'text/x-vcard',\n 'vcg' => 'application/vnd.groove-vcard',\n 'vcs' => 'text/x-vcalendar',\n 'vcx' => 'application/vnd.vcx',\n 'vdi' => 'application/x-virtualbox-vdi',\n 'vds' => 'model/vnd.sap.vds',\n 'vhd' => 'application/x-virtualbox-vhd',\n 'vis' => 'application/vnd.visionary',\n 'viv' => 'video/vnd.vivo',\n 'vlc' => 'application/videolan',\n 'vmdk' => 'application/x-virtualbox-vmdk',\n 'vob' => 'video/x-ms-vob',\n 'vor' => 'application/vnd.stardivision.writer',\n 'vox' => 'application/x-authorware-bin',\n 'vrml' => 'model/vrml',\n 'vsd' => 'application/vnd.visio',\n 'vsf' => 'application/vnd.vsf',\n 'vss' => 'application/vnd.visio',\n 'vst' => 'application/vnd.visio',\n 'vsw' => 'application/vnd.visio',\n 'vtf' => 'image/vnd.valve.source.texture',\n 'vtt' => 'text/vtt',\n 'vtu' => 'model/vnd.vtu',\n 'vxml' => 'application/voicexml+xml',\n 'w3d' => 'application/x-director',\n 'wad' => 'application/x-doom',\n 'wadl' => 'application/vnd.sun.wadl+xml',\n 'war' => 'application/java-archive',\n 'wasm' => 'application/wasm',\n 'wav' => 'audio/x-wav',\n 'wax' => 'audio/x-ms-wax',\n 'wbmp' => 'image/vnd.wap.wbmp',\n 'wbs' => 'application/vnd.criticaltools.wbs+xml',\n 'wbxml' => 'application/wbxml',\n 'wcm' => 'application/vnd.ms-works',\n 'wdb' => 'application/vnd.ms-works',\n 'wdp' => 'image/vnd.ms-photo',\n 'weba' => 'audio/webm',\n 'webapp' => 'application/x-web-app-manifest+json',\n 'webm' => 'video/webm',\n 'webmanifest' => 'application/manifest+json',\n 'webp' => 'image/webp',\n 'wg' => 'application/vnd.pmi.widget',\n 'wgsl' => 'text/wgsl',\n 'wgt' => 'application/widget',\n 'wif' => 'application/watcherinfo+xml',\n 'wks' => 'application/vnd.ms-works',\n 'wm' => 'video/x-ms-wm',\n 'wma' => 'audio/x-ms-wma',\n 'wmd' => 'application/x-ms-wmd',\n 'wmf' => 'image/wmf',\n 'wml' => 'text/vnd.wap.wml',\n 'wmlc' => 'application/wmlc',\n 'wmls' => 'text/vnd.wap.wmlscript',\n 'wmlsc' => 'application/vnd.wap.wmlscriptc',\n 'wmv' => 'video/x-ms-wmv',\n 'wmx' => 'video/x-ms-wmx',\n 'wmz' => 'application/x-msmetafile',\n 'woff' => 'font/woff',\n 'woff2' => 'font/woff2',\n 'word' => 'application/msword',\n 'wpd' => 'application/vnd.wordperfect',\n 'wpl' => 'application/vnd.ms-wpl',\n 'wps' => 'application/vnd.ms-works',\n 'wqd' => 'application/vnd.wqd',\n 'wri' => 'application/x-mswrite',\n 'wrl' => 'model/vrml',\n 'wsc' => 'message/vnd.wfa.wsc',\n 'wsdl' => 'application/wsdl+xml',\n 'wspolicy' => 'application/wspolicy+xml',\n 'wtb' => 'application/vnd.webturbo',\n 'wvx' => 'video/x-ms-wvx',\n 'x3d' => 'model/x3d+xml',\n 'x3db' => 'model/x3d+fastinfoset',\n 'x3dbz' => 'model/x3d+binary',\n 'x3dv' => 'model/x3d-vrml',\n 'x3dvz' => 'model/x3d+vrml',\n 'x3dz' => 'model/x3d+xml',\n 'x32' => 'application/x-authorware-bin',\n 'x_b' => 'model/vnd.parasolid.transmit.binary',\n 'x_t' => 'model/vnd.parasolid.transmit.text',\n 'xaml' => 'application/xaml+xml',\n 'xap' => 'application/x-silverlight-app',\n 'xar' => 'application/vnd.xara',\n 'xav' => 'application/xcap-att+xml',\n 'xbap' => 'application/x-ms-xbap',\n 'xbd' => 'application/vnd.fujixerox.docuworks.binder',\n 'xbm' => 'image/x-xbitmap',\n 'xca' => 'application/xcap-caps+xml',\n 'xcs' => 'application/calendar+xml',\n 'xdf' => 'application/xcap-diff+xml',\n 'xdm' => 'application/vnd.syncml.dm+xml',\n 'xdp' => 'application/vnd.adobe.xdp+xml',\n 'xdssc' => 'application/dssc+xml',\n 'xdw' => 'application/vnd.fujixerox.docuworks',\n 'xel' => 'application/xcap-el+xml',\n 'xenc' => 'application/xenc+xml',\n 'xer' => 'application/patch-ops-error+xml',\n 'xfdf' => 'application/xfdf',\n 'xfdl' => 'application/vnd.xfdl',\n 'xht' => 'application/xhtml+xml',\n 'xhtm' => 'application/vnd.pwg-xhtml-print+xml',\n 'xhtml' => 'application/xhtml+xml',\n 'xhvml' => 'application/xv+xml',\n 'xif' => 'image/vnd.xiff',\n 'xl' => 'application/excel',\n 'xla' => 'application/vnd.ms-excel',\n 'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12',\n 'xlc' => 'application/vnd.ms-excel',\n 'xlf' => 'application/xliff+xml',\n 'xlm' => 'application/vnd.ms-excel',\n 'xls' => 'application/vnd.ms-excel',\n 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12',\n 'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12',\n 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'xlt' => 'application/vnd.ms-excel',\n 'xltm' => 'application/vnd.ms-excel.template.macroEnabled.12',\n 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n 'xlw' => 'application/vnd.ms-excel',\n 'xm' => 'audio/xm',\n 'xml' => 'application/xml',\n 'xns' => 'application/xcap-ns+xml',\n 'xo' => 'application/vnd.olpc-sugar',\n 'xop' => 'application/xop+xml',\n 'xpi' => 'application/x-xpinstall',\n 'xpl' => 'application/xproc+xml',\n 'xpm' => 'image/x-xpixmap',\n 'xpr' => 'application/vnd.is-xpr',\n 'xps' => 'application/vnd.ms-xpsdocument',\n 'xpw' => 'application/vnd.intercon.formnet',\n 'xpx' => 'application/vnd.intercon.formnet',\n 'xsd' => 'application/xml',\n 'xsf' => 'application/prs.xsf+xml',\n 'xsl' => 'application/xml',\n 'xslt' => 'application/xslt+xml',\n 'xsm' => 'application/vnd.syncml+xml',\n 'xspf' => 'application/xspf+xml',\n 'xul' => 'application/vnd.mozilla.xul+xml',\n 'xvm' => 'application/xv+xml',\n 'xvml' => 'application/xv+xml',\n 'xwd' => 'image/x-xwindowdump',\n 'xyz' => 'chemical/x-xyz',\n 'xz' => 'application/x-xz',\n 'yaml' => 'text/yaml',\n 'yang' => 'application/yang',\n 'yin' => 'application/yin+xml',\n 'yml' => 'text/yaml',\n 'ymp' => 'text/x-suse-ymp',\n 'z' => 'application/x-compress',\n 'z1' => 'application/x-zmachine',\n 'z2' => 'application/x-zmachine',\n 'z3' => 'application/x-zmachine',\n 'z4' => 'application/x-zmachine',\n 'z5' => 'application/x-zmachine',\n 'z6' => 'application/x-zmachine',\n 'z7' => 'application/x-zmachine',\n 'z8' => 'application/x-zmachine',\n 'zaz' => 'application/vnd.zzazz.deck+xml',\n 'zip' => 'application/zip',\n 'zir' => 'application/vnd.zul',\n 'zirz' => 'application/vnd.zul',\n 'zmm' => 'application/vnd.handheld-entertainment+xml',\n 'zsh' => 'text/x-scriptzsh',\n);
const EXTENSIONS_FOR_MIME_TYPES = array (\n 'application/andrew-inset' => \n array (\n 0 => 'ez',\n ),\n 'application/appinstaller' => \n array (\n 0 => 'appinstaller',\n ),\n 'application/applixware' => \n array (\n 0 => 'aw',\n ),\n 'application/appx' => \n array (\n 0 => 'appx',\n ),\n 'application/appxbundle' => \n array (\n 0 => 'appxbundle',\n ),\n 'application/atom+xml' => \n array (\n 0 => 'atom',\n ),\n 'application/atomcat+xml' => \n array (\n 0 => 'atomcat',\n ),\n 'application/atomdeleted+xml' => \n array (\n 0 => 'atomdeleted',\n ),\n 'application/atomsvc+xml' => \n array (\n 0 => 'atomsvc',\n ),\n 'application/atsc-dwd+xml' => \n array (\n 0 => 'dwd',\n ),\n 'application/atsc-held+xml' => \n array (\n 0 => 'held',\n ),\n 'application/atsc-rsat+xml' => \n array (\n 0 => 'rsat',\n ),\n 'application/automationml-aml+xml' => \n array (\n 0 => 'aml',\n ),\n 'application/automationml-amlx+zip' => \n array (\n 0 => 'amlx',\n ),\n 'application/bdoc' => \n array (\n 0 => 'bdoc',\n ),\n 'application/calendar+xml' => \n array (\n 0 => 'xcs',\n ),\n 'application/ccxml+xml' => \n array (\n 0 => 'ccxml',\n ),\n 'application/cdfx+xml' => \n array (\n 0 => 'cdfx',\n ),\n 'application/cdmi-capability' => \n array (\n 0 => 'cdmia',\n ),\n 'application/cdmi-container' => \n array (\n 0 => 'cdmic',\n ),\n 'application/cdmi-domain' => \n array (\n 0 => 'cdmid',\n ),\n 'application/cdmi-object' => \n array (\n 0 => 'cdmio',\n ),\n 'application/cdmi-queue' => \n array (\n 0 => 'cdmiq',\n ),\n 'application/cpl+xml' => \n array (\n 0 => 'cpl',\n ),\n 'application/cu-seeme' => \n array (\n 0 => 'cu',\n ),\n 'application/cwl' => \n array (\n 0 => 'cwl',\n ),\n 'application/dash+xml' => \n array (\n 0 => 'mpd',\n ),\n 'application/dash-patch+xml' => \n array (\n 0 => 'mpp',\n ),\n 'application/davmount+xml' => \n array (\n 0 => 'davmount',\n ),\n 'application/docbook+xml' => \n array (\n 0 => 'dbk',\n ),\n 'application/dssc+der' => \n array (\n 0 => 'dssc',\n ),\n 'application/dssc+xml' => \n array (\n 0 => 'xdssc',\n ),\n 'application/ecmascript' => \n array (\n 0 => 'ecma',\n ),\n 'application/emma+xml' => \n array (\n 0 => 'emma',\n ),\n 'application/emotionml+xml' => \n array (\n 0 => 'emotionml',\n ),\n 'application/epub+zip' => \n array (\n 0 => 'epub',\n ),\n 'application/exi' => \n array (\n 0 => 'exi',\n ),\n 'application/express' => \n array (\n 0 => 'exp',\n ),\n 'application/fdf' => \n array (\n 0 => 'fdf',\n ),\n 'application/fdt+xml' => \n array (\n 0 => 'fdt',\n ),\n 'application/font-tdpfr' => \n array (\n 0 => 'pfr',\n ),\n 'application/geo+json' => \n array (\n 0 => 'geojson',\n ),\n 'application/gml+xml' => \n array (\n 0 => 'gml',\n ),\n 'application/gpx+xml' => \n array (\n 0 => 'gpx',\n ),\n 'application/gxf' => \n array (\n 0 => 'gxf',\n ),\n 'application/gzip' => \n array (\n 0 => 'gz',\n 1 => 'gzip',\n ),\n 'application/hjson' => \n array (\n 0 => 'hjson',\n ),\n 'application/hyperstudio' => \n array (\n 0 => 'stk',\n ),\n 'application/inkml+xml' => \n array (\n 0 => 'ink',\n 1 => 'inkml',\n ),\n 'application/ipfix' => \n array (\n 0 => 'ipfix',\n ),\n 'application/its+xml' => \n array (\n 0 => 'its',\n ),\n 'application/java-archive' => \n array (\n 0 => 'jar',\n 1 => 'war',\n 2 => 'ear',\n ),\n 'application/java-serialized-object' => \n array (\n 0 => 'ser',\n ),\n 'application/java-vm' => \n array (\n 0 => 'class',\n ),\n 'application/javascript' => \n array (\n 0 => 'js',\n ),\n 'application/json' => \n array (\n 0 => 'json',\n 1 => 'map',\n ),\n 'application/json5' => \n array (\n 0 => 'json5',\n ),\n 'application/jsonml+json' => \n array (\n 0 => 'jsonml',\n ),\n 'application/ld+json' => \n array (\n 0 => 'jsonld',\n ),\n 'application/lgr+xml' => \n array (\n 0 => 'lgr',\n ),\n 'application/lost+xml' => \n array (\n 0 => 'lostxml',\n ),\n 'application/mac-binhex40' => \n array (\n 0 => 'hqx',\n ),\n 'application/mac-compactpro' => \n array (\n 0 => 'cpt',\n ),\n 'application/mads+xml' => \n array (\n 0 => 'mads',\n ),\n 'application/manifest+json' => \n array (\n 0 => 'webmanifest',\n ),\n 'application/marc' => \n array (\n 0 => 'mrc',\n ),\n 'application/marcxml+xml' => \n array (\n 0 => 'mrcx',\n ),\n 'application/mathematica' => \n array (\n 0 => 'ma',\n 1 => 'nb',\n 2 => 'mb',\n ),\n 'application/mathml+xml' => \n array (\n 0 => 'mathml',\n ),\n 'application/mbox' => \n array (\n 0 => 'mbox',\n ),\n 'application/media-policy-dataset+xml' => \n array (\n 0 => 'mpf',\n ),\n 'application/mediaservercontrol+xml' => \n array (\n 0 => 'mscml',\n ),\n 'application/metalink+xml' => \n array (\n 0 => 'metalink',\n ),\n 'application/metalink4+xml' => \n array (\n 0 => 'meta4',\n ),\n 'application/mets+xml' => \n array (\n 0 => 'mets',\n ),\n 'application/mmt-aei+xml' => \n array (\n 0 => 'maei',\n ),\n 'application/mmt-usd+xml' => \n array (\n 0 => 'musd',\n ),\n 'application/mods+xml' => \n array (\n 0 => 'mods',\n ),\n 'application/mp21' => \n array (\n 0 => 'm21',\n 1 => 'mp21',\n ),\n 'application/mp4' => \n array (\n 0 => 'mp4',\n 1 => 'mpg4',\n 2 => 'mp4s',\n 3 => 'm4p',\n ),\n 'application/msix' => \n array (\n 0 => 'msix',\n ),\n 'application/msixbundle' => \n array (\n 0 => 'msixbundle',\n ),\n 'application/msword' => \n array (\n 0 => 'doc',\n 1 => 'dot',\n 2 => 'word',\n ),\n 'application/mxf' => \n array (\n 0 => 'mxf',\n ),\n 'application/n-quads' => \n array (\n 0 => 'nq',\n ),\n 'application/n-triples' => \n array (\n 0 => 'nt',\n ),\n 'application/node' => \n array (\n 0 => 'cjs',\n ),\n 'application/octet-stream' => \n array (\n 0 => 'bin',\n 1 => 'dms',\n 2 => 'lrf',\n 3 => 'mar',\n 4 => 'so',\n 5 => 'dist',\n 6 => 'distz',\n 7 => 'pkg',\n 8 => 'bpk',\n 9 => 'dump',\n 10 => 'elc',\n 11 => 'deploy',\n 12 => 'exe',\n 13 => 'dll',\n 14 => 'deb',\n 15 => 'dmg',\n 16 => 'iso',\n 17 => 'img',\n 18 => 'msi',\n 19 => 'msp',\n 20 => 'msm',\n 21 => 'buffer',\n 22 => 'phar',\n 23 => 'lha',\n 24 => 'lzh',\n 25 => 'class',\n 26 => 'sea',\n 27 => 'dmn',\n 28 => 'bpmn',\n 29 => 'kdb',\n 30 => 'sst',\n 31 => 'csr',\n 32 => 'dst',\n 33 => 'pv',\n 34 => 'pxf',\n ),\n 'application/oda' => \n array (\n 0 => 'oda',\n ),\n 'application/oebps-package+xml' => \n array (\n 0 => 'opf',\n ),\n 'application/ogg' => \n array (\n 0 => 'ogx',\n ),\n 'application/omdoc+xml' => \n array (\n 0 => 'omdoc',\n ),\n 'application/onenote' => \n array (\n 0 => 'onetoc',\n 1 => 'onetoc2',\n 2 => 'onetmp',\n 3 => 'onepkg',\n ),\n 'application/oxps' => \n array (\n 0 => 'oxps',\n ),\n 'application/p2p-overlay+xml' => \n array (\n 0 => 'relo',\n ),\n 'application/patch-ops-error+xml' => \n array (\n 0 => 'xer',\n ),\n 'application/pdf' => \n array (\n 0 => 'pdf',\n 1 => 'ai',\n ),\n 'application/pgp-encrypted' => \n array (\n 0 => 'pgp',\n ),\n 'application/pgp-keys' => \n array (\n 0 => 'asc',\n ),\n 'application/pgp-signature' => \n array (\n 0 => 'sig',\n 1 => 'asc',\n ),\n 'application/pics-rules' => \n array (\n 0 => 'prf',\n ),\n 'application/pkcs10' => \n array (\n 0 => 'p10',\n ),\n 'application/pkcs7-mime' => \n array (\n 0 => 'p7m',\n 1 => 'p7c',\n ),\n 'application/pkcs7-signature' => \n array (\n 0 => 'p7s',\n ),\n 'application/pkcs8' => \n array (\n 0 => 'p8',\n ),\n 'application/pkix-attr-cert' => \n array (\n 0 => 'ac',\n ),\n 'application/pkix-cert' => \n array (\n 0 => 'cer',\n ),\n 'application/pkix-crl' => \n array (\n 0 => 'crl',\n ),\n 'application/pkix-pkipath' => \n array (\n 0 => 'pkipath',\n ),\n 'application/pkixcmp' => \n array (\n 0 => 'pki',\n ),\n 'application/pls+xml' => \n array (\n 0 => 'pls',\n ),\n 'application/postscript' => \n array (\n 0 => 'ai',\n 1 => 'eps',\n 2 => 'ps',\n ),\n 'application/provenance+xml' => \n array (\n 0 => 'provx',\n ),\n 'application/prs.cww' => \n array (\n 0 => 'cww',\n ),\n 'application/prs.xsf+xml' => \n array (\n 0 => 'xsf',\n ),\n 'application/pskc+xml' => \n array (\n 0 => 'pskcxml',\n ),\n 'application/raml+yaml' => \n array (\n 0 => 'raml',\n ),\n 'application/rdf+xml' => \n array (\n 0 => 'rdf',\n 1 => 'owl',\n ),\n 'application/reginfo+xml' => \n array (\n 0 => 'rif',\n ),\n 'application/relax-ng-compact-syntax' => \n array (\n 0 => 'rnc',\n ),\n 'application/resource-lists+xml' => \n array (\n 0 => 'rl',\n ),\n 'application/resource-lists-diff+xml' => \n array (\n 0 => 'rld',\n ),\n 'application/rls-services+xml' => \n array (\n 0 => 'rs',\n ),\n 'application/route-apd+xml' => \n array (\n 0 => 'rapd',\n ),\n 'application/route-s-tsid+xml' => \n array (\n 0 => 'sls',\n ),\n 'application/route-usd+xml' => \n array (\n 0 => 'rusd',\n ),\n 'application/rpki-ghostbusters' => \n array (\n 0 => 'gbr',\n ),\n 'application/rpki-manifest' => \n array (\n 0 => 'mft',\n ),\n 'application/rpki-roa' => \n array (\n 0 => 'roa',\n ),\n 'application/rsd+xml' => \n array (\n 0 => 'rsd',\n ),\n 'application/rss+xml' => \n array (\n 0 => 'rss',\n ),\n 'application/rtf' => \n array (\n 0 => 'rtf',\n ),\n 'application/sbml+xml' => \n array (\n 0 => 'sbml',\n ),\n 'application/scvp-cv-request' => \n array (\n 0 => 'scq',\n ),\n 'application/scvp-cv-response' => \n array (\n 0 => 'scs',\n ),\n 'application/scvp-vp-request' => \n array (\n 0 => 'spq',\n ),\n 'application/scvp-vp-response' => \n array (\n 0 => 'spp',\n ),\n 'application/sdp' => \n array (\n 0 => 'sdp',\n ),\n 'application/senml+xml' => \n array (\n 0 => 'senmlx',\n ),\n 'application/sensml+xml' => \n array (\n 0 => 'sensmlx',\n ),\n 'application/set-payment-initiation' => \n array (\n 0 => 'setpay',\n ),\n 'application/set-registration-initiation' => \n array (\n 0 => 'setreg',\n ),\n 'application/shf+xml' => \n array (\n 0 => 'shf',\n ),\n 'application/sieve' => \n array (\n 0 => 'siv',\n 1 => 'sieve',\n ),\n 'application/smil+xml' => \n array (\n 0 => 'smi',\n 1 => 'smil',\n ),\n 'application/sparql-query' => \n array (\n 0 => 'rq',\n ),\n 'application/sparql-results+xml' => \n array (\n 0 => 'srx',\n ),\n 'application/sql' => \n array (\n 0 => 'sql',\n ),\n 'application/srgs' => \n array (\n 0 => 'gram',\n ),\n 'application/srgs+xml' => \n array (\n 0 => 'grxml',\n ),\n 'application/sru+xml' => \n array (\n 0 => 'sru',\n ),\n 'application/ssdl+xml' => \n array (\n 0 => 'ssdl',\n ),\n 'application/ssml+xml' => \n array (\n 0 => 'ssml',\n ),\n 'application/swid+xml' => \n array (\n 0 => 'swidtag',\n ),\n 'application/tei+xml' => \n array (\n 0 => 'tei',\n 1 => 'teicorpus',\n ),\n 'application/thraud+xml' => \n array (\n 0 => 'tfi',\n ),\n 'application/timestamped-data' => \n array (\n 0 => 'tsd',\n ),\n 'application/toml' => \n array (\n 0 => 'toml',\n ),\n 'application/trig' => \n array (\n 0 => 'trig',\n ),\n 'application/ttml+xml' => \n array (\n 0 => 'ttml',\n ),\n 'application/ubjson' => \n array (\n 0 => 'ubj',\n ),\n 'application/urc-ressheet+xml' => \n array (\n 0 => 'rsheet',\n ),\n 'application/urc-targetdesc+xml' => \n array (\n 0 => 'td',\n ),\n 'application/vnd.1000minds.decision-model+xml' => \n array (\n 0 => '1km',\n ),\n 'application/vnd.3gpp.pic-bw-large' => \n array (\n 0 => 'plb',\n ),\n 'application/vnd.3gpp.pic-bw-small' => \n array (\n 0 => 'psb',\n ),\n 'application/vnd.3gpp.pic-bw-var' => \n array (\n 0 => 'pvb',\n ),\n 'application/vnd.3gpp2.tcap' => \n array (\n 0 => 'tcap',\n ),\n 'application/vnd.3m.post-it-notes' => \n array (\n 0 => 'pwn',\n ),\n 'application/vnd.accpac.simply.aso' => \n array (\n 0 => 'aso',\n ),\n 'application/vnd.accpac.simply.imp' => \n array (\n 0 => 'imp',\n ),\n 'application/vnd.acucobol' => \n array (\n 0 => 'acu',\n ),\n 'application/vnd.acucorp' => \n array (\n 0 => 'atc',\n 1 => 'acutc',\n ),\n 'application/vnd.adobe.air-application-installer-package+zip' => \n array (\n 0 => 'air',\n ),\n 'application/vnd.adobe.formscentral.fcdt' => \n array (\n 0 => 'fcdt',\n ),\n 'application/vnd.adobe.fxp' => \n array (\n 0 => 'fxp',\n 1 => 'fxpl',\n ),\n 'application/vnd.adobe.xdp+xml' => \n array (\n 0 => 'xdp',\n ),\n 'application/vnd.adobe.xfdf' => \n array (\n 0 => 'xfdf',\n ),\n 'application/vnd.age' => \n array (\n 0 => 'age',\n ),\n 'application/vnd.ahead.space' => \n array (\n 0 => 'ahead',\n ),\n 'application/vnd.airzip.filesecure.azf' => \n array (\n 0 => 'azf',\n ),\n 'application/vnd.airzip.filesecure.azs' => \n array (\n 0 => 'azs',\n ),\n 'application/vnd.amazon.ebook' => \n array (\n 0 => 'azw',\n ),\n 'application/vnd.americandynamics.acc' => \n array (\n 0 => 'acc',\n ),\n 'application/vnd.amiga.ami' => \n array (\n 0 => 'ami',\n ),\n 'application/vnd.android.package-archive' => \n array (\n 0 => 'apk',\n ),\n 'application/vnd.anser-web-certificate-issue-initiation' => \n array (\n 0 => 'cii',\n ),\n 'application/vnd.anser-web-funds-transfer-initiation' => \n array (\n 0 => 'fti',\n ),\n 'application/vnd.antix.game-component' => \n array (\n 0 => 'atx',\n ),\n 'application/vnd.apple.installer+xml' => \n array (\n 0 => 'mpkg',\n ),\n 'application/vnd.apple.keynote' => \n array (\n 0 => 'key',\n ),\n 'application/vnd.apple.mpegurl' => \n array (\n 0 => 'm3u8',\n ),\n 'application/vnd.apple.numbers' => \n array (\n 0 => 'numbers',\n ),\n 'application/vnd.apple.pages' => \n array (\n 0 => 'pages',\n ),\n 'application/vnd.apple.pkpass' => \n array (\n 0 => 'pkpass',\n ),\n 'application/vnd.aristanetworks.swi' => \n array (\n 0 => 'swi',\n ),\n 'application/vnd.astraea-software.iota' => \n array (\n 0 => 'iota',\n ),\n 'application/vnd.audiograph' => \n array (\n 0 => 'aep',\n ),\n 'application/vnd.balsamiq.bmml+xml' => \n array (\n 0 => 'bmml',\n ),\n 'application/vnd.blueice.multipass' => \n array (\n 0 => 'mpm',\n ),\n 'application/vnd.bmi' => \n array (\n 0 => 'bmi',\n ),\n 'application/vnd.businessobjects' => \n array (\n 0 => 'rep',\n ),\n 'application/vnd.chemdraw+xml' => \n array (\n 0 => 'cdxml',\n ),\n 'application/vnd.chipnuts.karaoke-mmd' => \n array (\n 0 => 'mmd',\n ),\n 'application/vnd.cinderella' => \n array (\n 0 => 'cdy',\n ),\n 'application/vnd.citationstyles.style+xml' => \n array (\n 0 => 'csl',\n ),\n 'application/vnd.claymore' => \n array (\n 0 => 'cla',\n ),\n 'application/vnd.cloanto.rp9' => \n array (\n 0 => 'rp9',\n ),\n 'application/vnd.clonk.c4group' => \n array (\n 0 => 'c4g',\n 1 => 'c4d',\n 2 => 'c4f',\n 3 => 'c4p',\n 4 => 'c4u',\n ),\n 'application/vnd.cluetrust.cartomobile-config' => \n array (\n 0 => 'c11amc',\n ),\n 'application/vnd.cluetrust.cartomobile-config-pkg' => \n array (\n 0 => 'c11amz',\n ),\n 'application/vnd.commonspace' => \n array (\n 0 => 'csp',\n ),\n 'application/vnd.contact.cmsg' => \n array (\n 0 => 'cdbcmsg',\n ),\n 'application/vnd.cosmocaller' => \n array (\n 0 => 'cmc',\n ),\n 'application/vnd.crick.clicker' => \n array (\n 0 => 'clkx',\n ),\n 'application/vnd.crick.clicker.keyboard' => \n array (\n 0 => 'clkk',\n ),\n 'application/vnd.crick.clicker.palette' => \n array (\n 0 => 'clkp',\n ),\n 'application/vnd.crick.clicker.template' => \n array (\n 0 => 'clkt',\n ),\n 'application/vnd.crick.clicker.wordbank' => \n array (\n 0 => 'clkw',\n ),\n 'application/vnd.criticaltools.wbs+xml' => \n array (\n 0 => 'wbs',\n ),\n 'application/vnd.ctc-posml' => \n array (\n 0 => 'pml',\n ),\n 'application/vnd.cups-ppd' => \n array (\n 0 => 'ppd',\n ),\n 'application/vnd.curl.car' => \n array (\n 0 => 'car',\n ),\n 'application/vnd.curl.pcurl' => \n array (\n 0 => 'pcurl',\n ),\n 'application/vnd.dart' => \n array (\n 0 => 'dart',\n ),\n 'application/vnd.data-vision.rdz' => \n array (\n 0 => 'rdz',\n ),\n 'application/vnd.dbf' => \n array (\n 0 => 'dbf',\n ),\n 'application/vnd.dece.data' => \n array (\n 0 => 'uvf',\n 1 => 'uvvf',\n 2 => 'uvd',\n 3 => 'uvvd',\n ),\n 'application/vnd.dece.ttml+xml' => \n array (\n 0 => 'uvt',\n 1 => 'uvvt',\n ),\n 'application/vnd.dece.unspecified' => \n array (\n 0 => 'uvx',\n 1 => 'uvvx',\n ),\n 'application/vnd.dece.zip' => \n array (\n 0 => 'uvz',\n 1 => 'uvvz',\n ),\n 'application/vnd.denovo.fcselayout-link' => \n array (\n 0 => 'fe_launch',\n ),\n 'application/vnd.dna' => \n array (\n 0 => 'dna',\n ),\n 'application/vnd.dolby.mlp' => \n array (\n 0 => 'mlp',\n ),\n 'application/vnd.dpgraph' => \n array (\n 0 => 'dpg',\n ),\n 'application/vnd.dreamfactory' => \n array (\n 0 => 'dfac',\n ),\n 'application/vnd.ds-keypoint' => \n array (\n 0 => 'kpxx',\n ),\n 'application/vnd.dvb.ait' => \n array (\n 0 => 'ait',\n ),\n 'application/vnd.dvb.service' => \n array (\n 0 => 'svc',\n ),\n 'application/vnd.dynageo' => \n array (\n 0 => 'geo',\n ),\n 'application/vnd.ecowin.chart' => \n array (\n 0 => 'mag',\n ),\n 'application/vnd.enliven' => \n array (\n 0 => 'nml',\n ),\n 'application/vnd.epson.esf' => \n array (\n 0 => 'esf',\n ),\n 'application/vnd.epson.msf' => \n array (\n 0 => 'msf',\n ),\n 'application/vnd.epson.quickanime' => \n array (\n 0 => 'qam',\n ),\n 'application/vnd.epson.salt' => \n array (\n 0 => 'slt',\n ),\n 'application/vnd.epson.ssf' => \n array (\n 0 => 'ssf',\n ),\n 'application/vnd.eszigno3+xml' => \n array (\n 0 => 'es3',\n 1 => 'et3',\n ),\n 'application/vnd.ezpix-album' => \n array (\n 0 => 'ez2',\n ),\n 'application/vnd.ezpix-package' => \n array (\n 0 => 'ez3',\n ),\n 'application/vnd.fdf' => \n array (\n 0 => 'fdf',\n ),\n 'application/vnd.fdsn.mseed' => \n array (\n 0 => 'mseed',\n ),\n 'application/vnd.fdsn.seed' => \n array (\n 0 => 'seed',\n 1 => 'dataless',\n ),\n 'application/vnd.flographit' => \n array (\n 0 => 'gph',\n ),\n 'application/vnd.fluxtime.clip' => \n array (\n 0 => 'ftc',\n ),\n 'application/vnd.framemaker' => \n array (\n 0 => 'fm',\n 1 => 'frame',\n 2 => 'maker',\n 3 => 'book',\n ),\n 'application/vnd.frogans.fnc' => \n array (\n 0 => 'fnc',\n ),\n 'application/vnd.frogans.ltf' => \n array (\n 0 => 'ltf',\n ),\n 'application/vnd.fsc.weblaunch' => \n array (\n 0 => 'fsc',\n ),\n 'application/vnd.fujitsu.oasys' => \n array (\n 0 => 'oas',\n ),\n 'application/vnd.fujitsu.oasys2' => \n array (\n 0 => 'oa2',\n ),\n 'application/vnd.fujitsu.oasys3' => \n array (\n 0 => 'oa3',\n ),\n 'application/vnd.fujitsu.oasysgp' => \n array (\n 0 => 'fg5',\n ),\n 'application/vnd.fujitsu.oasysprs' => \n array (\n 0 => 'bh2',\n ),\n 'application/vnd.fujixerox.ddd' => \n array (\n 0 => 'ddd',\n ),\n 'application/vnd.fujixerox.docuworks' => \n array (\n 0 => 'xdw',\n ),\n 'application/vnd.fujixerox.docuworks.binder' => \n array (\n 0 => 'xbd',\n ),\n 'application/vnd.fuzzysheet' => \n array (\n 0 => 'fzs',\n ),\n 'application/vnd.genomatix.tuxedo' => \n array (\n 0 => 'txd',\n ),\n 'application/vnd.geogebra.file' => \n array (\n 0 => 'ggb',\n ),\n 'application/vnd.geogebra.tool' => \n array (\n 0 => 'ggt',\n ),\n 'application/vnd.geometry-explorer' => \n array (\n 0 => 'gex',\n 1 => 'gre',\n ),\n 'application/vnd.geonext' => \n array (\n 0 => 'gxt',\n ),\n 'application/vnd.geoplan' => \n array (\n 0 => 'g2w',\n ),\n 'application/vnd.geospace' => \n array (\n 0 => 'g3w',\n ),\n 'application/vnd.gmx' => \n array (\n 0 => 'gmx',\n ),\n 'application/vnd.google-apps.document' => \n array (\n 0 => 'gdoc',\n ),\n 'application/vnd.google-apps.presentation' => \n array (\n 0 => 'gslides',\n ),\n 'application/vnd.google-apps.spreadsheet' => \n array (\n 0 => 'gsheet',\n ),\n 'application/vnd.google-earth.kml+xml' => \n array (\n 0 => 'kml',\n ),\n 'application/vnd.google-earth.kmz' => \n array (\n 0 => 'kmz',\n ),\n 'application/vnd.grafeq' => \n array (\n 0 => 'gqf',\n 1 => 'gqs',\n ),\n 'application/vnd.groove-account' => \n array (\n 0 => 'gac',\n ),\n 'application/vnd.groove-help' => \n array (\n 0 => 'ghf',\n ),\n 'application/vnd.groove-identity-message' => \n array (\n 0 => 'gim',\n ),\n 'application/vnd.groove-injector' => \n array (\n 0 => 'grv',\n ),\n 'application/vnd.groove-tool-message' => \n array (\n 0 => 'gtm',\n ),\n 'application/vnd.groove-tool-template' => \n array (\n 0 => 'tpl',\n ),\n 'application/vnd.groove-vcard' => \n array (\n 0 => 'vcg',\n ),\n 'application/vnd.hal+xml' => \n array (\n 0 => 'hal',\n ),\n 'application/vnd.handheld-entertainment+xml' => \n array (\n 0 => 'zmm',\n ),\n 'application/vnd.hbci' => \n array (\n 0 => 'hbci',\n ),\n 'application/vnd.hhe.lesson-player' => \n array (\n 0 => 'les',\n ),\n 'application/vnd.hp-hpgl' => \n array (\n 0 => 'hpgl',\n ),\n 'application/vnd.hp-hpid' => \n array (\n 0 => 'hpid',\n ),\n 'application/vnd.hp-hps' => \n array (\n 0 => 'hps',\n ),\n 'application/vnd.hp-jlyt' => \n array (\n 0 => 'jlt',\n ),\n 'application/vnd.hp-pcl' => \n array (\n 0 => 'pcl',\n ),\n 'application/vnd.hp-pclxl' => \n array (\n 0 => 'pclxl',\n ),\n 'application/vnd.hydrostatix.sof-data' => \n array (\n 0 => 'sfd-hdstx',\n ),\n 'application/vnd.ibm.minipay' => \n array (\n 0 => 'mpy',\n ),\n 'application/vnd.ibm.modcap' => \n array (\n 0 => 'afp',\n 1 => 'listafp',\n 2 => 'list3820',\n ),\n 'application/vnd.ibm.rights-management' => \n array (\n 0 => 'irm',\n ),\n 'application/vnd.ibm.secure-container' => \n array (\n 0 => 'sc',\n ),\n 'application/vnd.iccprofile' => \n array (\n 0 => 'icc',\n 1 => 'icm',\n ),\n 'application/vnd.igloader' => \n array (\n 0 => 'igl',\n ),\n 'application/vnd.immervision-ivp' => \n array (\n 0 => 'ivp',\n ),\n 'application/vnd.immervision-ivu' => \n array (\n 0 => 'ivu',\n ),\n 'application/vnd.insors.igm' => \n array (\n 0 => 'igm',\n ),\n 'application/vnd.intercon.formnet' => \n array (\n 0 => 'xpw',\n 1 => 'xpx',\n ),\n 'application/vnd.intergeo' => \n array (\n 0 => 'i2g',\n ),\n 'application/vnd.intu.qbo' => \n array (\n 0 => 'qbo',\n ),\n 'application/vnd.intu.qfx' => \n array (\n 0 => 'qfx',\n ),\n 'application/vnd.ipunplugged.rcprofile' => \n array (\n 0 => 'rcprofile',\n ),\n 'application/vnd.irepository.package+xml' => \n array (\n 0 => 'irp',\n ),\n 'application/vnd.is-xpr' => \n array (\n 0 => 'xpr',\n ),\n 'application/vnd.isac.fcs' => \n array (\n 0 => 'fcs',\n ),\n 'application/vnd.jam' => \n array (\n 0 => 'jam',\n ),\n 'application/vnd.jcp.javame.midlet-rms' => \n array (\n 0 => 'rms',\n ),\n 'application/vnd.jisp' => \n array (\n 0 => 'jisp',\n ),\n 'application/vnd.joost.joda-archive' => \n array (\n 0 => 'joda',\n ),\n 'application/vnd.kahootz' => \n array (\n 0 => 'ktz',\n 1 => 'ktr',\n ),\n 'application/vnd.kde.karbon' => \n array (\n 0 => 'karbon',\n ),\n 'application/vnd.kde.kchart' => \n array (\n 0 => 'chrt',\n ),\n 'application/vnd.kde.kformula' => \n array (\n 0 => 'kfo',\n ),\n 'application/vnd.kde.kivio' => \n array (\n 0 => 'flw',\n ),\n 'application/vnd.kde.kontour' => \n array (\n 0 => 'kon',\n ),\n 'application/vnd.kde.kpresenter' => \n array (\n 0 => 'kpr',\n 1 => 'kpt',\n ),\n 'application/vnd.kde.kspread' => \n array (\n 0 => 'ksp',\n ),\n 'application/vnd.kde.kword' => \n array (\n 0 => 'kwd',\n 1 => 'kwt',\n ),\n 'application/vnd.kenameaapp' => \n array (\n 0 => 'htke',\n ),\n 'application/vnd.kidspiration' => \n array (\n 0 => 'kia',\n ),\n 'application/vnd.kinar' => \n array (\n 0 => 'kne',\n 1 => 'knp',\n ),\n 'application/vnd.koan' => \n array (\n 0 => 'skp',\n 1 => 'skd',\n 2 => 'skt',\n 3 => 'skm',\n ),\n 'application/vnd.kodak-descriptor' => \n array (\n 0 => 'sse',\n ),\n 'application/vnd.las.las+xml' => \n array (\n 0 => 'lasxml',\n ),\n 'application/vnd.llamagraphics.life-balance.desktop' => \n array (\n 0 => 'lbd',\n ),\n 'application/vnd.llamagraphics.life-balance.exchange+xml' => \n array (\n 0 => 'lbe',\n ),\n 'application/vnd.lotus-1-2-3' => \n array (\n 0 => '123',\n ),\n 'application/vnd.lotus-approach' => \n array (\n 0 => 'apr',\n ),\n 'application/vnd.lotus-freelance' => \n array (\n 0 => 'pre',\n ),\n 'application/vnd.lotus-notes' => \n array (\n 0 => 'nsf',\n ),\n 'application/vnd.lotus-organizer' => \n array (\n 0 => 'org',\n ),\n 'application/vnd.lotus-screencam' => \n array (\n 0 => 'scm',\n ),\n 'application/vnd.lotus-wordpro' => \n array (\n 0 => 'lwp',\n ),\n 'application/vnd.macports.portpkg' => \n array (\n 0 => 'portpkg',\n ),\n 'application/vnd.mapbox-vector-tile' => \n array (\n 0 => 'mvt',\n ),\n 'application/vnd.mcd' => \n array (\n 0 => 'mcd',\n ),\n 'application/vnd.medcalcdata' => \n array (\n 0 => 'mc1',\n ),\n 'application/vnd.mediastation.cdkey' => \n array (\n 0 => 'cdkey',\n ),\n 'application/vnd.mfer' => \n array (\n 0 => 'mwf',\n ),\n 'application/vnd.mfmp' => \n array (\n 0 => 'mfm',\n ),\n 'application/vnd.micrografx.flo' => \n array (\n 0 => 'flo',\n ),\n 'application/vnd.micrografx.igx' => \n array (\n 0 => 'igx',\n ),\n 'application/vnd.mif' => \n array (\n 0 => 'mif',\n ),\n 'application/vnd.mobius.daf' => \n array (\n 0 => 'daf',\n ),\n 'application/vnd.mobius.dis' => \n array (\n 0 => 'dis',\n ),\n 'application/vnd.mobius.mbk' => \n array (\n 0 => 'mbk',\n ),\n 'application/vnd.mobius.mqy' => \n array (\n 0 => 'mqy',\n ),\n 'application/vnd.mobius.msl' => \n array (\n 0 => 'msl',\n ),\n 'application/vnd.mobius.plc' => \n array (\n 0 => 'plc',\n ),\n 'application/vnd.mobius.txf' => \n array (\n 0 => 'txf',\n ),\n 'application/vnd.mophun.application' => \n array (\n 0 => 'mpn',\n ),\n 'application/vnd.mophun.certificate' => \n array (\n 0 => 'mpc',\n ),\n 'application/vnd.mozilla.xul+xml' => \n array (\n 0 => 'xul',\n ),\n 'application/vnd.ms-artgalry' => \n array (\n 0 => 'cil',\n ),\n 'application/vnd.ms-cab-compressed' => \n array (\n 0 => 'cab',\n ),\n 'application/vnd.ms-excel' => \n array (\n 0 => 'xls',\n 1 => 'xlm',\n 2 => 'xla',\n 3 => 'xlc',\n 4 => 'xlt',\n 5 => 'xlw',\n ),\n 'application/vnd.ms-excel.addin.macroenabled.12' => \n array (\n 0 => 'xlam',\n ),\n 'application/vnd.ms-excel.sheet.binary.macroenabled.12' => \n array (\n 0 => 'xlsb',\n ),\n 'application/vnd.ms-excel.sheet.macroenabled.12' => \n array (\n 0 => 'xlsm',\n ),\n 'application/vnd.ms-excel.template.macroenabled.12' => \n array (\n 0 => 'xltm',\n ),\n 'application/vnd.ms-fontobject' => \n array (\n 0 => 'eot',\n ),\n 'application/vnd.ms-htmlhelp' => \n array (\n 0 => 'chm',\n ),\n 'application/vnd.ms-ims' => \n array (\n 0 => 'ims',\n ),\n 'application/vnd.ms-lrm' => \n array (\n 0 => 'lrm',\n ),\n 'application/vnd.ms-officetheme' => \n array (\n 0 => 'thmx',\n ),\n 'application/vnd.ms-outlook' => \n array (\n 0 => 'msg',\n ),\n 'application/vnd.ms-pki.seccat' => \n array (\n 0 => 'cat',\n ),\n 'application/vnd.ms-pki.stl' => \n array (\n 0 => 'stl',\n ),\n 'application/vnd.ms-powerpoint' => \n array (\n 0 => 'ppt',\n 1 => 'pps',\n 2 => 'pot',\n 3 => 'ppa',\n ),\n 'application/vnd.ms-powerpoint.addin.macroenabled.12' => \n array (\n 0 => 'ppam',\n ),\n 'application/vnd.ms-powerpoint.presentation.macroenabled.12' => \n array (\n 0 => 'pptm',\n ),\n 'application/vnd.ms-powerpoint.slide.macroenabled.12' => \n array (\n 0 => 'sldm',\n ),\n 'application/vnd.ms-powerpoint.slideshow.macroenabled.12' => \n array (\n 0 => 'ppsm',\n ),\n 'application/vnd.ms-powerpoint.template.macroenabled.12' => \n array (\n 0 => 'potm',\n ),\n 'application/vnd.ms-project' => \n array (\n 0 => 'mpp',\n 1 => 'mpt',\n ),\n 'application/vnd.ms-word.document.macroenabled.12' => \n array (\n 0 => 'docm',\n ),\n 'application/vnd.ms-word.template.macroenabled.12' => \n array (\n 0 => 'dotm',\n ),\n 'application/vnd.ms-works' => \n array (\n 0 => 'wps',\n 1 => 'wks',\n 2 => 'wcm',\n 3 => 'wdb',\n ),\n 'application/vnd.ms-wpl' => \n array (\n 0 => 'wpl',\n ),\n 'application/vnd.ms-xpsdocument' => \n array (\n 0 => 'xps',\n ),\n 'application/vnd.mseq' => \n array (\n 0 => 'mseq',\n ),\n 'application/vnd.musician' => \n array (\n 0 => 'mus',\n ),\n 'application/vnd.muvee.style' => \n array (\n 0 => 'msty',\n ),\n 'application/vnd.mynfc' => \n array (\n 0 => 'taglet',\n ),\n 'application/vnd.neurolanguage.nlu' => \n array (\n 0 => 'nlu',\n ),\n 'application/vnd.nitf' => \n array (\n 0 => 'ntf',\n 1 => 'nitf',\n ),\n 'application/vnd.noblenet-directory' => \n array (\n 0 => 'nnd',\n ),\n 'application/vnd.noblenet-sealer' => \n array (\n 0 => 'nns',\n ),\n 'application/vnd.noblenet-web' => \n array (\n 0 => 'nnw',\n ),\n 'application/vnd.nokia.n-gage.ac+xml' => \n array (\n 0 => 'ac',\n ),\n 'application/vnd.nokia.n-gage.data' => \n array (\n 0 => 'ngdat',\n ),\n 'application/vnd.nokia.n-gage.symbian.install' => \n array (\n 0 => 'n-gage',\n ),\n 'application/vnd.nokia.radio-preset' => \n array (\n 0 => 'rpst',\n ),\n 'application/vnd.nokia.radio-presets' => \n array (\n 0 => 'rpss',\n ),\n 'application/vnd.novadigm.edm' => \n array (\n 0 => 'edm',\n ),\n 'application/vnd.novadigm.edx' => \n array (\n 0 => 'edx',\n ),\n 'application/vnd.novadigm.ext' => \n array (\n 0 => 'ext',\n ),\n 'application/vnd.oasis.opendocument.chart' => \n array (\n 0 => 'odc',\n ),\n 'application/vnd.oasis.opendocument.chart-template' => \n array (\n 0 => 'otc',\n ),\n 'application/vnd.oasis.opendocument.database' => \n array (\n 0 => 'odb',\n ),\n 'application/vnd.oasis.opendocument.formula' => \n array (\n 0 => 'odf',\n ),\n 'application/vnd.oasis.opendocument.formula-template' => \n array (\n 0 => 'odft',\n ),\n 'application/vnd.oasis.opendocument.graphics' => \n array (\n 0 => 'odg',\n ),\n 'application/vnd.oasis.opendocument.graphics-template' => \n array (\n 0 => 'otg',\n ),\n 'application/vnd.oasis.opendocument.image' => \n array (\n 0 => 'odi',\n ),\n 'application/vnd.oasis.opendocument.image-template' => \n array (\n 0 => 'oti',\n ),\n 'application/vnd.oasis.opendocument.presentation' => \n array (\n 0 => 'odp',\n ),\n 'application/vnd.oasis.opendocument.presentation-template' => \n array (\n 0 => 'otp',\n ),\n 'application/vnd.oasis.opendocument.spreadsheet' => \n array (\n 0 => 'ods',\n ),\n 'application/vnd.oasis.opendocument.spreadsheet-template' => \n array (\n 0 => 'ots',\n ),\n 'application/vnd.oasis.opendocument.text' => \n array (\n 0 => 'odt',\n ),\n 'application/vnd.oasis.opendocument.text-master' => \n array (\n 0 => 'odm',\n ),\n 'application/vnd.oasis.opendocument.text-template' => \n array (\n 0 => 'ott',\n ),\n 'application/vnd.oasis.opendocument.text-web' => \n array (\n 0 => 'oth',\n ),\n 'application/vnd.olpc-sugar' => \n array (\n 0 => 'xo',\n ),\n 'application/vnd.oma.dd2+xml' => \n array (\n 0 => 'dd2',\n ),\n 'application/vnd.openblox.game+xml' => \n array (\n 0 => 'obgx',\n ),\n 'application/vnd.openofficeorg.extension' => \n array (\n 0 => 'oxt',\n ),\n 'application/vnd.openstreetmap.data+xml' => \n array (\n 0 => 'osm',\n ),\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation' => \n array (\n 0 => 'pptx',\n ),\n 'application/vnd.openxmlformats-officedocument.presentationml.slide' => \n array (\n 0 => 'sldx',\n ),\n 'application/vnd.openxmlformats-officedocument.presentationml.slideshow' => \n array (\n 0 => 'ppsx',\n ),\n 'application/vnd.openxmlformats-officedocument.presentationml.template' => \n array (\n 0 => 'potx',\n ),\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => \n array (\n 0 => 'xlsx',\n ),\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.template' => \n array (\n 0 => 'xltx',\n ),\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => \n array (\n 0 => 'docx',\n ),\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.template' => \n array (\n 0 => 'dotx',\n ),\n 'application/vnd.osgeo.mapguide.package' => \n array (\n 0 => 'mgp',\n ),\n 'application/vnd.osgi.dp' => \n array (\n 0 => 'dp',\n ),\n 'application/vnd.osgi.subsystem' => \n array (\n 0 => 'esa',\n ),\n 'application/vnd.palm' => \n array (\n 0 => 'pdb',\n 1 => 'pqa',\n 2 => 'oprc',\n ),\n 'application/vnd.pawaafile' => \n array (\n 0 => 'paw',\n ),\n 'application/vnd.pg.format' => \n array (\n 0 => 'str',\n ),\n 'application/vnd.pg.osasli' => \n array (\n 0 => 'ei6',\n ),\n 'application/vnd.picsel' => \n array (\n 0 => 'efif',\n ),\n 'application/vnd.pmi.widget' => \n array (\n 0 => 'wg',\n ),\n 'application/vnd.pocketlearn' => \n array (\n 0 => 'plf',\n ),\n 'application/vnd.powerbuilder6' => \n array (\n 0 => 'pbd',\n ),\n 'application/vnd.previewsystems.box' => \n array (\n 0 => 'box',\n ),\n 'application/vnd.proteus.magazine' => \n array (\n 0 => 'mgz',\n ),\n 'application/vnd.publishare-delta-tree' => \n array (\n 0 => 'qps',\n ),\n 'application/vnd.pvi.ptid1' => \n array (\n 0 => 'ptid',\n ),\n 'application/vnd.pwg-xhtml-print+xml' => \n array (\n 0 => 'xhtm',\n ),\n 'application/vnd.quark.quarkxpress' => \n array (\n 0 => 'qxd',\n 1 => 'qxt',\n 2 => 'qwd',\n 3 => 'qwt',\n 4 => 'qxl',\n 5 => 'qxb',\n ),\n 'application/vnd.rar' => \n array (\n 0 => 'rar',\n ),\n 'application/vnd.realvnc.bed' => \n array (\n 0 => 'bed',\n ),\n 'application/vnd.recordare.musicxml' => \n array (\n 0 => 'mxl',\n ),\n 'application/vnd.recordare.musicxml+xml' => \n array (\n 0 => 'musicxml',\n ),\n 'application/vnd.rig.cryptonote' => \n array (\n 0 => 'cryptonote',\n ),\n 'application/vnd.rim.cod' => \n array (\n 0 => 'cod',\n ),\n 'application/vnd.rn-realmedia' => \n array (\n 0 => 'rm',\n ),\n 'application/vnd.rn-realmedia-vbr' => \n array (\n 0 => 'rmvb',\n ),\n 'application/vnd.route66.link66+xml' => \n array (\n 0 => 'link66',\n ),\n 'application/vnd.sailingtracker.track' => \n array (\n 0 => 'st',\n ),\n 'application/vnd.seemail' => \n array (\n 0 => 'see',\n ),\n 'application/vnd.sema' => \n array (\n 0 => 'sema',\n ),\n 'application/vnd.semd' => \n array (\n 0 => 'semd',\n ),\n 'application/vnd.semf' => \n array (\n 0 => 'semf',\n ),\n 'application/vnd.shana.informed.formdata' => \n array (\n 0 => 'ifm',\n ),\n 'application/vnd.shana.informed.formtemplate' => \n array (\n 0 => 'itp',\n ),\n 'application/vnd.shana.informed.interchange' => \n array (\n 0 => 'iif',\n ),\n 'application/vnd.shana.informed.package' => \n array (\n 0 => 'ipk',\n ),\n 'application/vnd.simtech-mindmapper' => \n array (\n 0 => 'twd',\n 1 => 'twds',\n ),\n 'application/vnd.smaf' => \n array (\n 0 => 'mmf',\n ),\n 'application/vnd.smart.teacher' => \n array (\n 0 => 'teacher',\n ),\n 'application/vnd.software602.filler.form+xml' => \n array (\n 0 => 'fo',\n ),\n 'application/vnd.solent.sdkm+xml' => \n array (\n 0 => 'sdkm',\n 1 => 'sdkd',\n ),\n 'application/vnd.spotfire.dxp' => \n array (\n 0 => 'dxp',\n ),\n 'application/vnd.spotfire.sfs' => \n array (\n 0 => 'sfs',\n ),\n 'application/vnd.stardivision.calc' => \n array (\n 0 => 'sdc',\n ),\n 'application/vnd.stardivision.draw' => \n array (\n 0 => 'sda',\n ),\n 'application/vnd.stardivision.impress' => \n array (\n 0 => 'sdd',\n ),\n 'application/vnd.stardivision.math' => \n array (\n 0 => 'smf',\n ),\n 'application/vnd.stardivision.writer' => \n array (\n 0 => 'sdw',\n 1 => 'vor',\n ),\n 'application/vnd.stardivision.writer-global' => \n array (\n 0 => 'sgl',\n ),\n 'application/vnd.stepmania.package' => \n array (\n 0 => 'smzip',\n ),\n 'application/vnd.stepmania.stepchart' => \n array (\n 0 => 'sm',\n ),\n 'application/vnd.sun.wadl+xml' => \n array (\n 0 => 'wadl',\n ),\n 'application/vnd.sun.xml.calc' => \n array (\n 0 => 'sxc',\n ),\n 'application/vnd.sun.xml.calc.template' => \n array (\n 0 => 'stc',\n ),\n 'application/vnd.sun.xml.draw' => \n array (\n 0 => 'sxd',\n ),\n 'application/vnd.sun.xml.draw.template' => \n array (\n 0 => 'std',\n ),\n 'application/vnd.sun.xml.impress' => \n array (\n 0 => 'sxi',\n ),\n 'application/vnd.sun.xml.impress.template' => \n array (\n 0 => 'sti',\n ),\n 'application/vnd.sun.xml.math' => \n array (\n 0 => 'sxm',\n ),\n 'application/vnd.sun.xml.writer' => \n array (\n 0 => 'sxw',\n ),\n 'application/vnd.sun.xml.writer.global' => \n array (\n 0 => 'sxg',\n ),\n 'application/vnd.sun.xml.writer.template' => \n array (\n 0 => 'stw',\n ),\n 'application/vnd.sus-calendar' => \n array (\n 0 => 'sus',\n 1 => 'susp',\n ),\n 'application/vnd.svd' => \n array (\n 0 => 'svd',\n ),\n 'application/vnd.symbian.install' => \n array (\n 0 => 'sis',\n 1 => 'sisx',\n ),\n 'application/vnd.syncml+xml' => \n array (\n 0 => 'xsm',\n ),\n 'application/vnd.syncml.dm+wbxml' => \n array (\n 0 => 'bdm',\n ),\n 'application/vnd.syncml.dm+xml' => \n array (\n 0 => 'xdm',\n ),\n 'application/vnd.syncml.dmddf+xml' => \n array (\n 0 => 'ddf',\n ),\n 'application/vnd.tao.intent-module-archive' => \n array (\n 0 => 'tao',\n ),\n 'application/vnd.tcpdump.pcap' => \n array (\n 0 => 'pcap',\n 1 => 'cap',\n 2 => 'dmp',\n ),\n 'application/vnd.tmobile-livetv' => \n array (\n 0 => 'tmo',\n ),\n 'application/vnd.trid.tpt' => \n array (\n 0 => 'tpt',\n ),\n 'application/vnd.triscape.mxs' => \n array (\n 0 => 'mxs',\n ),\n 'application/vnd.trueapp' => \n array (\n 0 => 'tra',\n ),\n 'application/vnd.ufdl' => \n array (\n 0 => 'ufd',\n 1 => 'ufdl',\n ),\n 'application/vnd.uiq.theme' => \n array (\n 0 => 'utz',\n ),\n 'application/vnd.umajin' => \n array (\n 0 => 'umj',\n ),\n 'application/vnd.unity' => \n array (\n 0 => 'unityweb',\n ),\n 'application/vnd.uoml+xml' => \n array (\n 0 => 'uoml',\n 1 => 'uo',\n ),\n 'application/vnd.vcx' => \n array (\n 0 => 'vcx',\n ),\n 'application/vnd.visio' => \n array (\n 0 => 'vsd',\n 1 => 'vst',\n 2 => 'vss',\n 3 => 'vsw',\n ),\n 'application/vnd.visionary' => \n array (\n 0 => 'vis',\n ),\n 'application/vnd.vsf' => \n array (\n 0 => 'vsf',\n ),\n 'application/vnd.wap.wbxml' => \n array (\n 0 => 'wbxml',\n ),\n 'application/vnd.wap.wmlc' => \n array (\n 0 => 'wmlc',\n ),\n 'application/vnd.wap.wmlscriptc' => \n array (\n 0 => 'wmlsc',\n ),\n 'application/vnd.webturbo' => \n array (\n 0 => 'wtb',\n ),\n 'application/vnd.wolfram.player' => \n array (\n 0 => 'nbp',\n ),\n 'application/vnd.wordperfect' => \n array (\n 0 => 'wpd',\n ),\n 'application/vnd.wqd' => \n array (\n 0 => 'wqd',\n ),\n 'application/vnd.wt.stf' => \n array (\n 0 => 'stf',\n ),\n 'application/vnd.xara' => \n array (\n 0 => 'xar',\n ),\n 'application/vnd.xfdl' => \n array (\n 0 => 'xfdl',\n ),\n 'application/vnd.yamaha.hv-dic' => \n array (\n 0 => 'hvd',\n ),\n 'application/vnd.yamaha.hv-script' => \n array (\n 0 => 'hvs',\n ),\n 'application/vnd.yamaha.hv-voice' => \n array (\n 0 => 'hvp',\n ),\n 'application/vnd.yamaha.openscoreformat' => \n array (\n 0 => 'osf',\n ),\n 'application/vnd.yamaha.openscoreformat.osfpvg+xml' => \n array (\n 0 => 'osfpvg',\n ),\n 'application/vnd.yamaha.smaf-audio' => \n array (\n 0 => 'saf',\n ),\n 'application/vnd.yamaha.smaf-phrase' => \n array (\n 0 => 'spf',\n ),\n 'application/vnd.yellowriver-custom-menu' => \n array (\n 0 => 'cmp',\n ),\n 'application/vnd.zul' => \n array (\n 0 => 'zir',\n 1 => 'zirz',\n ),\n 'application/vnd.zzazz.deck+xml' => \n array (\n 0 => 'zaz',\n ),\n 'application/voicexml+xml' => \n array (\n 0 => 'vxml',\n ),\n 'application/wasm' => \n array (\n 0 => 'wasm',\n ),\n 'application/watcherinfo+xml' => \n array (\n 0 => 'wif',\n ),\n 'application/widget' => \n array (\n 0 => 'wgt',\n ),\n 'application/winhlp' => \n array (\n 0 => 'hlp',\n ),\n 'application/wsdl+xml' => \n array (\n 0 => 'wsdl',\n ),\n 'application/wspolicy+xml' => \n array (\n 0 => 'wspolicy',\n ),\n 'application/x-7z-compressed' => \n array (\n 0 => '7z',\n 1 => '7zip',\n ),\n 'application/x-abiword' => \n array (\n 0 => 'abw',\n ),\n 'application/x-ace-compressed' => \n array (\n 0 => 'ace',\n ),\n 'application/x-apple-diskimage' => \n array (\n 0 => 'dmg',\n ),\n 'application/x-arj' => \n array (\n 0 => 'arj',\n ),\n 'application/x-authorware-bin' => \n array (\n 0 => 'aab',\n 1 => 'x32',\n 2 => 'u32',\n 3 => 'vox',\n ),\n 'application/x-authorware-map' => \n array (\n 0 => 'aam',\n ),\n 'application/x-authorware-seg' => \n array (\n 0 => 'aas',\n ),\n 'application/x-bcpio' => \n array (\n 0 => 'bcpio',\n ),\n 'application/x-bdoc' => \n array (\n 0 => 'bdoc',\n ),\n 'application/x-bittorrent' => \n array (\n 0 => 'torrent',\n ),\n 'application/x-blorb' => \n array (\n 0 => 'blb',\n 1 => 'blorb',\n ),\n 'application/x-bzip' => \n array (\n 0 => 'bz',\n ),\n 'application/x-bzip2' => \n array (\n 0 => 'bz2',\n 1 => 'boz',\n ),\n 'application/x-cbr' => \n array (\n 0 => 'cbr',\n 1 => 'cba',\n 2 => 'cbt',\n 3 => 'cbz',\n 4 => 'cb7',\n ),\n 'application/x-cdlink' => \n array (\n 0 => 'vcd',\n ),\n 'application/x-cfs-compressed' => \n array (\n 0 => 'cfs',\n ),\n 'application/x-chat' => \n array (\n 0 => 'chat',\n ),\n 'application/x-chess-pgn' => \n array (\n 0 => 'pgn',\n ),\n 'application/x-chrome-extension' => \n array (\n 0 => 'crx',\n ),\n 'application/x-cocoa' => \n array (\n 0 => 'cco',\n ),\n 'application/x-conference' => \n array (\n 0 => 'nsc',\n ),\n 'application/x-cpio' => \n array (\n 0 => 'cpio',\n ),\n 'application/x-csh' => \n array (\n 0 => 'csh',\n ),\n 'application/x-debian-package' => \n array (\n 0 => 'deb',\n 1 => 'udeb',\n ),\n 'application/x-dgc-compressed' => \n array (\n 0 => 'dgc',\n ),\n 'application/x-director' => \n array (\n 0 => 'dir',\n 1 => 'dcr',\n 2 => 'dxr',\n 3 => 'cst',\n 4 => 'cct',\n 5 => 'cxt',\n 6 => 'w3d',\n 7 => 'fgd',\n 8 => 'swa',\n ),\n 'application/x-doom' => \n array (\n 0 => 'wad',\n ),\n 'application/x-dtbncx+xml' => \n array (\n 0 => 'ncx',\n ),\n 'application/x-dtbook+xml' => \n array (\n 0 => 'dtb',\n ),\n 'application/x-dtbresource+xml' => \n array (\n 0 => 'res',\n ),\n 'application/x-dvi' => \n array (\n 0 => 'dvi',\n ),\n 'application/x-envoy' => \n array (\n 0 => 'evy',\n ),\n 'application/x-eva' => \n array (\n 0 => 'eva',\n ),\n 'application/x-font-bdf' => \n array (\n 0 => 'bdf',\n ),\n 'application/x-font-ghostscript' => \n array (\n 0 => 'gsf',\n ),\n 'application/x-font-linux-psf' => \n array (\n 0 => 'psf',\n ),\n 'application/x-font-pcf' => \n array (\n 0 => 'pcf',\n ),\n 'application/x-font-snf' => \n array (\n 0 => 'snf',\n ),\n 'application/x-font-type1' => \n array (\n 0 => 'pfa',\n 1 => 'pfb',\n 2 => 'pfm',\n 3 => 'afm',\n ),\n 'application/x-freearc' => \n array (\n 0 => 'arc',\n ),\n 'application/x-futuresplash' => \n array (\n 0 => 'spl',\n ),\n 'application/x-gca-compressed' => \n array (\n 0 => 'gca',\n ),\n 'application/x-glulx' => \n array (\n 0 => 'ulx',\n ),\n 'application/x-gnumeric' => \n array (\n 0 => 'gnumeric',\n ),\n 'application/x-gramps-xml' => \n array (\n 0 => 'gramps',\n ),\n 'application/x-gtar' => \n array (\n 0 => 'gtar',\n ),\n 'application/x-hdf' => \n array (\n 0 => 'hdf',\n ),\n 'application/x-httpd-php' => \n array (\n 0 => 'php',\n 1 => 'php4',\n 2 => 'php3',\n 3 => 'phtml',\n ),\n 'application/x-install-instructions' => \n array (\n 0 => 'install',\n ),\n 'application/x-iso9660-image' => \n array (\n 0 => 'iso',\n ),\n 'application/x-iwork-keynote-sffkey' => \n array (\n 0 => 'key',\n ),\n 'application/x-iwork-numbers-sffnumbers' => \n array (\n 0 => 'numbers',\n ),\n 'application/x-iwork-pages-sffpages' => \n array (\n 0 => 'pages',\n ),\n 'application/x-java-archive-diff' => \n array (\n 0 => 'jardiff',\n ),\n 'application/x-java-jnlp-file' => \n array (\n 0 => 'jnlp',\n ),\n 'application/x-keepass2' => \n array (\n 0 => 'kdbx',\n ),\n 'application/x-latex' => \n array (\n 0 => 'latex',\n ),\n 'application/x-lua-bytecode' => \n array (\n 0 => 'luac',\n ),\n 'application/x-lzh-compressed' => \n array (\n 0 => 'lzh',\n 1 => 'lha',\n ),\n 'application/x-makeself' => \n array (\n 0 => 'run',\n ),\n 'application/x-mie' => \n array (\n 0 => 'mie',\n ),\n 'application/x-mobipocket-ebook' => \n array (\n 0 => 'prc',\n 1 => 'mobi',\n ),\n 'application/x-ms-application' => \n array (\n 0 => 'application',\n ),\n 'application/x-ms-shortcut' => \n array (\n 0 => 'lnk',\n ),\n 'application/x-ms-wmd' => \n array (\n 0 => 'wmd',\n ),\n 'application/x-ms-wmz' => \n array (\n 0 => 'wmz',\n ),\n 'application/x-ms-xbap' => \n array (\n 0 => 'xbap',\n ),\n 'application/x-msaccess' => \n array (\n 0 => 'mdb',\n ),\n 'application/x-msbinder' => \n array (\n 0 => 'obd',\n ),\n 'application/x-mscardfile' => \n array (\n 0 => 'crd',\n ),\n 'application/x-msclip' => \n array (\n 0 => 'clp',\n ),\n 'application/x-msdos-program' => \n array (\n 0 => 'exe',\n ),\n 'application/x-msdownload' => \n array (\n 0 => 'exe',\n 1 => 'dll',\n 2 => 'com',\n 3 => 'bat',\n 4 => 'msi',\n ),\n 'application/x-msmediaview' => \n array (\n 0 => 'mvb',\n 1 => 'm13',\n 2 => 'm14',\n ),\n 'application/x-msmetafile' => \n array (\n 0 => 'wmf',\n 1 => 'wmz',\n 2 => 'emf',\n 3 => 'emz',\n ),\n 'application/x-msmoney' => \n array (\n 0 => 'mny',\n ),\n 'application/x-mspublisher' => \n array (\n 0 => 'pub',\n ),\n 'application/x-msschedule' => \n array (\n 0 => 'scd',\n ),\n 'application/x-msterminal' => \n array (\n 0 => 'trm',\n ),\n 'application/x-mswrite' => \n array (\n 0 => 'wri',\n ),\n 'application/x-netcdf' => \n array (\n 0 => 'nc',\n 1 => 'cdf',\n ),\n 'application/x-ns-proxy-autoconfig' => \n array (\n 0 => 'pac',\n ),\n 'application/x-nzb' => \n array (\n 0 => 'nzb',\n ),\n 'application/x-perl' => \n array (\n 0 => 'pl',\n 1 => 'pm',\n ),\n 'application/x-pilot' => \n array (\n 0 => 'prc',\n 1 => 'pdb',\n ),\n 'application/x-pkcs12' => \n array (\n 0 => 'p12',\n 1 => 'pfx',\n ),\n 'application/x-pkcs7-certificates' => \n array (\n 0 => 'p7b',\n 1 => 'spc',\n ),\n 'application/x-pkcs7-certreqresp' => \n array (\n 0 => 'p7r',\n ),\n 'application/x-rar-compressed' => \n array (\n 0 => 'rar',\n ),\n 'application/x-redhat-package-manager' => \n array (\n 0 => 'rpm',\n ),\n 'application/x-research-info-systems' => \n array (\n 0 => 'ris',\n ),\n 'application/x-sea' => \n array (\n 0 => 'sea',\n ),\n 'application/x-sh' => \n array (\n 0 => 'sh',\n ),\n 'application/x-shar' => \n array (\n 0 => 'shar',\n ),\n 'application/x-shockwave-flash' => \n array (\n 0 => 'swf',\n ),\n 'application/x-silverlight-app' => \n array (\n 0 => 'xap',\n ),\n 'application/x-sql' => \n array (\n 0 => 'sql',\n ),\n 'application/x-stuffit' => \n array (\n 0 => 'sit',\n ),\n 'application/x-stuffitx' => \n array (\n 0 => 'sitx',\n ),\n 'application/x-subrip' => \n array (\n 0 => 'srt',\n ),\n 'application/x-sv4cpio' => \n array (\n 0 => 'sv4cpio',\n ),\n 'application/x-sv4crc' => \n array (\n 0 => 'sv4crc',\n ),\n 'application/x-t3vm-image' => \n array (\n 0 => 't3',\n ),\n 'application/x-tads' => \n array (\n 0 => 'gam',\n ),\n 'application/x-tar' => \n array (\n 0 => 'tar',\n 1 => 'tgz',\n ),\n 'application/x-tcl' => \n array (\n 0 => 'tcl',\n 1 => 'tk',\n ),\n 'application/x-tex' => \n array (\n 0 => 'tex',\n ),\n 'application/x-tex-tfm' => \n array (\n 0 => 'tfm',\n ),\n 'application/x-texinfo' => \n array (\n 0 => 'texinfo',\n 1 => 'texi',\n ),\n 'application/x-tgif' => \n array (\n 0 => 'obj',\n ),\n 'application/x-ustar' => \n array (\n 0 => 'ustar',\n ),\n 'application/x-virtualbox-hdd' => \n array (\n 0 => 'hdd',\n ),\n 'application/x-virtualbox-ova' => \n array (\n 0 => 'ova',\n ),\n 'application/x-virtualbox-ovf' => \n array (\n 0 => 'ovf',\n ),\n 'application/x-virtualbox-vbox' => \n array (\n 0 => 'vbox',\n ),\n 'application/x-virtualbox-vbox-extpack' => \n array (\n 0 => 'vbox-extpack',\n ),\n 'application/x-virtualbox-vdi' => \n array (\n 0 => 'vdi',\n ),\n 'application/x-virtualbox-vhd' => \n array (\n 0 => 'vhd',\n ),\n 'application/x-virtualbox-vmdk' => \n array (\n 0 => 'vmdk',\n ),\n 'application/x-wais-source' => \n array (\n 0 => 'src',\n ),\n 'application/x-web-app-manifest+json' => \n array (\n 0 => 'webapp',\n ),\n 'application/x-x509-ca-cert' => \n array (\n 0 => 'der',\n 1 => 'crt',\n 2 => 'pem',\n ),\n 'application/x-xfig' => \n array (\n 0 => 'fig',\n ),\n 'application/x-xliff+xml' => \n array (\n 0 => 'xlf',\n ),\n 'application/x-xpinstall' => \n array (\n 0 => 'xpi',\n ),\n 'application/x-xz' => \n array (\n 0 => 'xz',\n ),\n 'application/x-zmachine' => \n array (\n 0 => 'z1',\n 1 => 'z2',\n 2 => 'z3',\n 3 => 'z4',\n 4 => 'z5',\n 5 => 'z6',\n 6 => 'z7',\n 7 => 'z8',\n ),\n 'application/xaml+xml' => \n array (\n 0 => 'xaml',\n ),\n 'application/xcap-att+xml' => \n array (\n 0 => 'xav',\n ),\n 'application/xcap-caps+xml' => \n array (\n 0 => 'xca',\n ),\n 'application/xcap-diff+xml' => \n array (\n 0 => 'xdf',\n ),\n 'application/xcap-el+xml' => \n array (\n 0 => 'xel',\n ),\n 'application/xcap-ns+xml' => \n array (\n 0 => 'xns',\n ),\n 'application/xenc+xml' => \n array (\n 0 => 'xenc',\n ),\n 'application/xfdf' => \n array (\n 0 => 'xfdf',\n ),\n 'application/xhtml+xml' => \n array (\n 0 => 'xhtml',\n 1 => 'xht',\n ),\n 'application/xliff+xml' => \n array (\n 0 => 'xlf',\n ),\n 'application/xml' => \n array (\n 0 => 'xml',\n 1 => 'xsl',\n 2 => 'xsd',\n 3 => 'rng',\n ),\n 'application/xml-dtd' => \n array (\n 0 => 'dtd',\n ),\n 'application/xop+xml' => \n array (\n 0 => 'xop',\n ),\n 'application/xproc+xml' => \n array (\n 0 => 'xpl',\n ),\n 'application/xslt+xml' => \n array (\n 0 => 'xsl',\n 1 => 'xslt',\n ),\n 'application/xspf+xml' => \n array (\n 0 => 'xspf',\n ),\n 'application/xv+xml' => \n array (\n 0 => 'mxml',\n 1 => 'xhvml',\n 2 => 'xvml',\n 3 => 'xvm',\n ),\n 'application/yang' => \n array (\n 0 => 'yang',\n ),\n 'application/yin+xml' => \n array (\n 0 => 'yin',\n ),\n 'application/zip' => \n array (\n 0 => 'zip',\n ),\n 'audio/3gpp' => \n array (\n 0 => '3gpp',\n ),\n 'audio/aac' => \n array (\n 0 => 'adts',\n 1 => 'aac',\n ),\n 'audio/adpcm' => \n array (\n 0 => 'adp',\n ),\n 'audio/amr' => \n array (\n 0 => 'amr',\n ),\n 'audio/basic' => \n array (\n 0 => 'au',\n 1 => 'snd',\n ),\n 'audio/midi' => \n array (\n 0 => 'mid',\n 1 => 'midi',\n 2 => 'kar',\n 3 => 'rmi',\n ),\n 'audio/mobile-xmf' => \n array (\n 0 => 'mxmf',\n ),\n 'audio/mp3' => \n array (\n 0 => 'mp3',\n ),\n 'audio/mp4' => \n array (\n 0 => 'm4a',\n 1 => 'mp4a',\n ),\n 'audio/mpeg' => \n array (\n 0 => 'mpga',\n 1 => 'mp2',\n 2 => 'mp2a',\n 3 => 'mp3',\n 4 => 'm2a',\n 5 => 'm3a',\n ),\n 'audio/ogg' => \n array (\n 0 => 'oga',\n 1 => 'ogg',\n 2 => 'spx',\n 3 => 'opus',\n ),\n 'audio/s3m' => \n array (\n 0 => 's3m',\n ),\n 'audio/silk' => \n array (\n 0 => 'sil',\n ),\n 'audio/vnd.dece.audio' => \n array (\n 0 => 'uva',\n 1 => 'uvva',\n ),\n 'audio/vnd.digital-winds' => \n array (\n 0 => 'eol',\n ),\n 'audio/vnd.dra' => \n array (\n 0 => 'dra',\n ),\n 'audio/vnd.dts' => \n array (\n 0 => 'dts',\n ),\n 'audio/vnd.dts.hd' => \n array (\n 0 => 'dtshd',\n ),\n 'audio/vnd.lucent.voice' => \n array (\n 0 => 'lvp',\n ),\n 'audio/vnd.ms-playready.media.pya' => \n array (\n 0 => 'pya',\n ),\n 'audio/vnd.nuera.ecelp4800' => \n array (\n 0 => 'ecelp4800',\n ),\n 'audio/vnd.nuera.ecelp7470' => \n array (\n 0 => 'ecelp7470',\n ),\n 'audio/vnd.nuera.ecelp9600' => \n array (\n 0 => 'ecelp9600',\n ),\n 'audio/vnd.rip' => \n array (\n 0 => 'rip',\n ),\n 'audio/wav' => \n array (\n 0 => 'wav',\n ),\n 'audio/wave' => \n array (\n 0 => 'wav',\n ),\n 'audio/webm' => \n array (\n 0 => 'weba',\n ),\n 'audio/x-aac' => \n array (\n 0 => 'aac',\n ),\n 'audio/x-aiff' => \n array (\n 0 => 'aif',\n 1 => 'aiff',\n 2 => 'aifc',\n ),\n 'audio/x-caf' => \n array (\n 0 => 'caf',\n ),\n 'audio/x-flac' => \n array (\n 0 => 'flac',\n ),\n 'audio/x-m4a' => \n array (\n 0 => 'm4a',\n ),\n 'audio/x-matroska' => \n array (\n 0 => 'mka',\n ),\n 'audio/x-mpegurl' => \n array (\n 0 => 'm3u',\n ),\n 'audio/x-ms-wax' => \n array (\n 0 => 'wax',\n ),\n 'audio/x-ms-wma' => \n array (\n 0 => 'wma',\n ),\n 'audio/x-pn-realaudio' => \n array (\n 0 => 'ram',\n 1 => 'ra',\n 2 => 'rm',\n ),\n 'audio/x-pn-realaudio-plugin' => \n array (\n 0 => 'rmp',\n 1 => 'rpm',\n ),\n 'audio/x-realaudio' => \n array (\n 0 => 'ra',\n ),\n 'audio/x-wav' => \n array (\n 0 => 'wav',\n ),\n 'audio/xm' => \n array (\n 0 => 'xm',\n ),\n 'chemical/x-cdx' => \n array (\n 0 => 'cdx',\n ),\n 'chemical/x-cif' => \n array (\n 0 => 'cif',\n ),\n 'chemical/x-cmdf' => \n array (\n 0 => 'cmdf',\n ),\n 'chemical/x-cml' => \n array (\n 0 => 'cml',\n ),\n 'chemical/x-csml' => \n array (\n 0 => 'csml',\n ),\n 'chemical/x-xyz' => \n array (\n 0 => 'xyz',\n ),\n 'font/collection' => \n array (\n 0 => 'ttc',\n ),\n 'font/otf' => \n array (\n 0 => 'otf',\n ),\n 'font/ttf' => \n array (\n 0 => 'ttf',\n ),\n 'font/woff' => \n array (\n 0 => 'woff',\n ),\n 'font/woff2' => \n array (\n 0 => 'woff2',\n ),\n 'image/aces' => \n array (\n 0 => 'exr',\n ),\n 'image/apng' => \n array (\n 0 => 'apng',\n ),\n 'image/avci' => \n array (\n 0 => 'avci',\n ),\n 'image/avcs' => \n array (\n 0 => 'avcs',\n ),\n 'image/avif' => \n array (\n 0 => 'avif',\n ),\n 'image/bmp' => \n array (\n 0 => 'bmp',\n 1 => 'dib',\n ),\n 'image/cgm' => \n array (\n 0 => 'cgm',\n ),\n 'image/dicom-rle' => \n array (\n 0 => 'drle',\n ),\n 'image/dpx' => \n array (\n 0 => 'dpx',\n ),\n 'image/emf' => \n array (\n 0 => 'emf',\n ),\n 'image/fits' => \n array (\n 0 => 'fits',\n ),\n 'image/g3fax' => \n array (\n 0 => 'g3',\n ),\n 'image/gif' => \n array (\n 0 => 'gif',\n ),\n 'image/heic' => \n array (\n 0 => 'heic',\n ),\n 'image/heic-sequence' => \n array (\n 0 => 'heics',\n ),\n 'image/heif' => \n array (\n 0 => 'heif',\n ),\n 'image/heif-sequence' => \n array (\n 0 => 'heifs',\n ),\n 'image/hej2k' => \n array (\n 0 => 'hej2',\n ),\n 'image/hsj2' => \n array (\n 0 => 'hsj2',\n ),\n 'image/ief' => \n array (\n 0 => 'ief',\n ),\n 'image/jls' => \n array (\n 0 => 'jls',\n ),\n 'image/jp2' => \n array (\n 0 => 'jp2',\n 1 => 'jpg2',\n ),\n 'image/jpeg' => \n array (\n 0 => 'jpeg',\n 1 => 'jpg',\n 2 => 'jpe',\n ),\n 'image/jph' => \n array (\n 0 => 'jph',\n ),\n 'image/jphc' => \n array (\n 0 => 'jhc',\n ),\n 'image/jpm' => \n array (\n 0 => 'jpm',\n 1 => 'jpgm',\n ),\n 'image/jpx' => \n array (\n 0 => 'jpx',\n 1 => 'jpf',\n ),\n 'image/jxr' => \n array (\n 0 => 'jxr',\n ),\n 'image/jxra' => \n array (\n 0 => 'jxra',\n ),\n 'image/jxrs' => \n array (\n 0 => 'jxrs',\n ),\n 'image/jxs' => \n array (\n 0 => 'jxs',\n ),\n 'image/jxsc' => \n array (\n 0 => 'jxsc',\n ),\n 'image/jxsi' => \n array (\n 0 => 'jxsi',\n ),\n 'image/jxss' => \n array (\n 0 => 'jxss',\n ),\n 'image/ktx' => \n array (\n 0 => 'ktx',\n ),\n 'image/ktx2' => \n array (\n 0 => 'ktx2',\n ),\n 'image/png' => \n array (\n 0 => 'png',\n ),\n 'image/prs.btif' => \n array (\n 0 => 'btif',\n 1 => 'btf',\n ),\n 'image/prs.pti' => \n array (\n 0 => 'pti',\n ),\n 'image/sgi' => \n array (\n 0 => 'sgi',\n ),\n 'image/svg+xml' => \n array (\n 0 => 'svg',\n 1 => 'svgz',\n ),\n 'image/t38' => \n array (\n 0 => 't38',\n ),\n 'image/tiff' => \n array (\n 0 => 'tif',\n 1 => 'tiff',\n ),\n 'image/tiff-fx' => \n array (\n 0 => 'tfx',\n ),\n 'image/vnd.adobe.photoshop' => \n array (\n 0 => 'psd',\n ),\n 'image/vnd.airzip.accelerator.azv' => \n array (\n 0 => 'azv',\n ),\n 'image/vnd.dece.graphic' => \n array (\n 0 => 'uvi',\n 1 => 'uvvi',\n 2 => 'uvg',\n 3 => 'uvvg',\n ),\n 'image/vnd.djvu' => \n array (\n 0 => 'djvu',\n 1 => 'djv',\n ),\n 'image/vnd.dvb.subtitle' => \n array (\n 0 => 'sub',\n ),\n 'image/vnd.dwg' => \n array (\n 0 => 'dwg',\n ),\n 'image/vnd.dxf' => \n array (\n 0 => 'dxf',\n ),\n 'image/vnd.fastbidsheet' => \n array (\n 0 => 'fbs',\n ),\n 'image/vnd.fpx' => \n array (\n 0 => 'fpx',\n ),\n 'image/vnd.fst' => \n array (\n 0 => 'fst',\n ),\n 'image/vnd.fujixerox.edmics-mmr' => \n array (\n 0 => 'mmr',\n ),\n 'image/vnd.fujixerox.edmics-rlc' => \n array (\n 0 => 'rlc',\n ),\n 'image/vnd.microsoft.icon' => \n array (\n 0 => 'ico',\n ),\n 'image/vnd.ms-dds' => \n array (\n 0 => 'dds',\n ),\n 'image/vnd.ms-modi' => \n array (\n 0 => 'mdi',\n ),\n 'image/vnd.ms-photo' => \n array (\n 0 => 'wdp',\n ),\n 'image/vnd.net-fpx' => \n array (\n 0 => 'npx',\n ),\n 'image/vnd.pco.b16' => \n array (\n 0 => 'b16',\n ),\n 'image/vnd.tencent.tap' => \n array (\n 0 => 'tap',\n ),\n 'image/vnd.valve.source.texture' => \n array (\n 0 => 'vtf',\n ),\n 'image/vnd.wap.wbmp' => \n array (\n 0 => 'wbmp',\n ),\n 'image/vnd.xiff' => \n array (\n 0 => 'xif',\n ),\n 'image/vnd.zbrush.pcx' => \n array (\n 0 => 'pcx',\n ),\n 'image/webp' => \n array (\n 0 => 'webp',\n ),\n 'image/wmf' => \n array (\n 0 => 'wmf',\n ),\n 'image/x-3ds' => \n array (\n 0 => '3ds',\n ),\n 'image/x-cmu-raster' => \n array (\n 0 => 'ras',\n ),\n 'image/x-cmx' => \n array (\n 0 => 'cmx',\n ),\n 'image/x-freehand' => \n array (\n 0 => 'fh',\n 1 => 'fhc',\n 2 => 'fh4',\n 3 => 'fh5',\n 4 => 'fh7',\n ),\n 'image/x-icon' => \n array (\n 0 => 'ico',\n ),\n 'image/x-jng' => \n array (\n 0 => 'jng',\n ),\n 'image/x-mrsid-image' => \n array (\n 0 => 'sid',\n ),\n 'image/x-ms-bmp' => \n array (\n 0 => 'bmp',\n ),\n 'image/x-pcx' => \n array (\n 0 => 'pcx',\n ),\n 'image/x-pict' => \n array (\n 0 => 'pic',\n 1 => 'pct',\n ),\n 'image/x-portable-anymap' => \n array (\n 0 => 'pnm',\n ),\n 'image/x-portable-bitmap' => \n array (\n 0 => 'pbm',\n ),\n 'image/x-portable-graymap' => \n array (\n 0 => 'pgm',\n ),\n 'image/x-portable-pixmap' => \n array (\n 0 => 'ppm',\n ),\n 'image/x-rgb' => \n array (\n 0 => 'rgb',\n ),\n 'image/x-tga' => \n array (\n 0 => 'tga',\n ),\n 'image/x-xbitmap' => \n array (\n 0 => 'xbm',\n ),\n 'image/x-xpixmap' => \n array (\n 0 => 'xpm',\n ),\n 'image/x-xwindowdump' => \n array (\n 0 => 'xwd',\n ),\n 'message/disposition-notification' => \n array (\n 0 => 'disposition-notification',\n ),\n 'message/global' => \n array (\n 0 => 'u8msg',\n ),\n 'message/global-delivery-status' => \n array (\n 0 => 'u8dsn',\n ),\n 'message/global-disposition-notification' => \n array (\n 0 => 'u8mdn',\n ),\n 'message/global-headers' => \n array (\n 0 => 'u8hdr',\n ),\n 'message/rfc822' => \n array (\n 0 => 'eml',\n 1 => 'mime',\n ),\n 'message/vnd.wfa.wsc' => \n array (\n 0 => 'wsc',\n ),\n 'model/3mf' => \n array (\n 0 => '3mf',\n ),\n 'model/gltf+json' => \n array (\n 0 => 'gltf',\n ),\n 'model/gltf-binary' => \n array (\n 0 => 'glb',\n ),\n 'model/iges' => \n array (\n 0 => 'igs',\n 1 => 'iges',\n ),\n 'model/jt' => \n array (\n 0 => 'jt',\n ),\n 'model/mesh' => \n array (\n 0 => 'msh',\n 1 => 'mesh',\n 2 => 'silo',\n ),\n 'model/mtl' => \n array (\n 0 => 'mtl',\n ),\n 'model/obj' => \n array (\n 0 => 'obj',\n ),\n 'model/prc' => \n array (\n 0 => 'prc',\n ),\n 'model/step+xml' => \n array (\n 0 => 'stpx',\n ),\n 'model/step+zip' => \n array (\n 0 => 'stpz',\n ),\n 'model/step-xml+zip' => \n array (\n 0 => 'stpxz',\n ),\n 'model/stl' => \n array (\n 0 => 'stl',\n ),\n 'model/u3d' => \n array (\n 0 => 'u3d',\n ),\n 'model/vnd.cld' => \n array (\n 0 => 'cld',\n ),\n 'model/vnd.collada+xml' => \n array (\n 0 => 'dae',\n ),\n 'model/vnd.dwf' => \n array (\n 0 => 'dwf',\n ),\n 'model/vnd.gdl' => \n array (\n 0 => 'gdl',\n ),\n 'model/vnd.gtw' => \n array (\n 0 => 'gtw',\n ),\n 'model/vnd.mts' => \n array (\n 0 => 'mts',\n ),\n 'model/vnd.opengex' => \n array (\n 0 => 'ogex',\n ),\n 'model/vnd.parasolid.transmit.binary' => \n array (\n 0 => 'x_b',\n ),\n 'model/vnd.parasolid.transmit.text' => \n array (\n 0 => 'x_t',\n ),\n 'model/vnd.pytha.pyox' => \n array (\n 0 => 'pyo',\n 1 => 'pyox',\n ),\n 'model/vnd.sap.vds' => \n array (\n 0 => 'vds',\n ),\n 'model/vnd.usda' => \n array (\n 0 => 'usda',\n ),\n 'model/vnd.usdz+zip' => \n array (\n 0 => 'usdz',\n ),\n 'model/vnd.valve.source.compiled-map' => \n array (\n 0 => 'bsp',\n ),\n 'model/vnd.vtu' => \n array (\n 0 => 'vtu',\n ),\n 'model/vrml' => \n array (\n 0 => 'wrl',\n 1 => 'vrml',\n ),\n 'model/x3d+binary' => \n array (\n 0 => 'x3db',\n 1 => 'x3dbz',\n ),\n 'model/x3d+fastinfoset' => \n array (\n 0 => 'x3db',\n ),\n 'model/x3d+vrml' => \n array (\n 0 => 'x3dv',\n 1 => 'x3dvz',\n ),\n 'model/x3d+xml' => \n array (\n 0 => 'x3d',\n 1 => 'x3dz',\n ),\n 'model/x3d-vrml' => \n array (\n 0 => 'x3dv',\n ),\n 'text/cache-manifest' => \n array (\n 0 => 'appcache',\n 1 => 'manifest',\n ),\n 'text/calendar' => \n array (\n 0 => 'ics',\n 1 => 'ifb',\n ),\n 'text/coffeescript' => \n array (\n 0 => 'coffee',\n 1 => 'litcoffee',\n ),\n 'text/css' => \n array (\n 0 => 'css',\n ),\n 'text/csv' => \n array (\n 0 => 'csv',\n ),\n 'text/html' => \n array (\n 0 => 'html',\n 1 => 'htm',\n 2 => 'shtml',\n ),\n 'text/jade' => \n array (\n 0 => 'jade',\n ),\n 'text/javascript' => \n array (\n 0 => 'js',\n 1 => 'mjs',\n ),\n 'text/jsx' => \n array (\n 0 => 'jsx',\n ),\n 'text/less' => \n array (\n 0 => 'less',\n ),\n 'text/markdown' => \n array (\n 0 => 'md',\n 1 => 'markdown',\n ),\n 'text/mathml' => \n array (\n 0 => 'mml',\n ),\n 'text/mdx' => \n array (\n 0 => 'mdx',\n ),\n 'text/n3' => \n array (\n 0 => 'n3',\n ),\n 'text/plain' => \n array (\n 0 => 'txt',\n 1 => 'text',\n 2 => 'conf',\n 3 => 'def',\n 4 => 'list',\n 5 => 'log',\n 6 => 'in',\n 7 => 'ini',\n 8 => 'm3u',\n ),\n 'text/prs.lines.tag' => \n array (\n 0 => 'dsc',\n ),\n 'text/richtext' => \n array (\n 0 => 'rtx',\n ),\n 'text/rtf' => \n array (\n 0 => 'rtf',\n ),\n 'text/sgml' => \n array (\n 0 => 'sgml',\n 1 => 'sgm',\n ),\n 'text/shex' => \n array (\n 0 => 'shex',\n ),\n 'text/slim' => \n array (\n 0 => 'slim',\n 1 => 'slm',\n ),\n 'text/spdx' => \n array (\n 0 => 'spdx',\n ),\n 'text/stylus' => \n array (\n 0 => 'stylus',\n 1 => 'styl',\n ),\n 'text/tab-separated-values' => \n array (\n 0 => 'tsv',\n ),\n 'text/troff' => \n array (\n 0 => 't',\n 1 => 'tr',\n 2 => 'roff',\n 3 => 'man',\n 4 => 'me',\n 5 => 'ms',\n ),\n 'text/turtle' => \n array (\n 0 => 'ttl',\n ),\n 'text/uri-list' => \n array (\n 0 => 'uri',\n 1 => 'uris',\n 2 => 'urls',\n ),\n 'text/vcard' => \n array (\n 0 => 'vcard',\n ),\n 'text/vnd.curl' => \n array (\n 0 => 'curl',\n ),\n 'text/vnd.curl.dcurl' => \n array (\n 0 => 'dcurl',\n ),\n 'text/vnd.curl.mcurl' => \n array (\n 0 => 'mcurl',\n ),\n 'text/vnd.curl.scurl' => \n array (\n 0 => 'scurl',\n ),\n 'text/vnd.dvb.subtitle' => \n array (\n 0 => 'sub',\n ),\n 'text/vnd.familysearch.gedcom' => \n array (\n 0 => 'ged',\n ),\n 'text/vnd.fly' => \n array (\n 0 => 'fly',\n ),\n 'text/vnd.fmi.flexstor' => \n array (\n 0 => 'flx',\n ),\n 'text/vnd.graphviz' => \n array (\n 0 => 'gv',\n ),\n 'text/vnd.in3d.3dml' => \n array (\n 0 => '3dml',\n ),\n 'text/vnd.in3d.spot' => \n array (\n 0 => 'spot',\n ),\n 'text/vnd.sun.j2me.app-descriptor' => \n array (\n 0 => 'jad',\n ),\n 'text/vnd.wap.wml' => \n array (\n 0 => 'wml',\n ),\n 'text/vnd.wap.wmlscript' => \n array (\n 0 => 'wmls',\n ),\n 'text/vtt' => \n array (\n 0 => 'vtt',\n ),\n 'text/wgsl' => \n array (\n 0 => 'wgsl',\n ),\n 'text/x-asm' => \n array (\n 0 => 's',\n 1 => 'asm',\n ),\n 'text/x-c' => \n array (\n 0 => 'c',\n 1 => 'cc',\n 2 => 'cxx',\n 3 => 'cpp',\n 4 => 'h',\n 5 => 'hh',\n 6 => 'dic',\n ),\n 'text/x-component' => \n array (\n 0 => 'htc',\n ),\n 'text/x-fortran' => \n array (\n 0 => 'f',\n 1 => 'for',\n 2 => 'f77',\n 3 => 'f90',\n ),\n 'text/x-handlebars-template' => \n array (\n 0 => 'hbs',\n ),\n 'text/x-java-source' => \n array (\n 0 => 'java',\n ),\n 'text/x-lua' => \n array (\n 0 => 'lua',\n ),\n 'text/x-markdown' => \n array (\n 0 => 'mkd',\n ),\n 'text/x-nfo' => \n array (\n 0 => 'nfo',\n ),\n 'text/x-opml' => \n array (\n 0 => 'opml',\n ),\n 'text/x-org' => \n array (\n 0 => 'org',\n ),\n 'text/x-pascal' => \n array (\n 0 => 'p',\n 1 => 'pas',\n ),\n 'text/x-processing' => \n array (\n 0 => 'pde',\n ),\n 'text/x-sass' => \n array (\n 0 => 'sass',\n ),\n 'text/x-scss' => \n array (\n 0 => 'scss',\n ),\n 'text/x-setext' => \n array (\n 0 => 'etx',\n ),\n 'text/x-sfv' => \n array (\n 0 => 'sfv',\n ),\n 'text/x-suse-ymp' => \n array (\n 0 => 'ymp',\n ),\n 'text/x-uuencode' => \n array (\n 0 => 'uu',\n ),\n 'text/x-vcalendar' => \n array (\n 0 => 'vcs',\n ),\n 'text/x-vcard' => \n array (\n 0 => 'vcf',\n ),\n 'text/xml' => \n array (\n 0 => 'xml',\n ),\n 'text/yaml' => \n array (\n 0 => 'yaml',\n 1 => 'yml',\n ),\n 'video/3gpp' => \n array (\n 0 => '3gp',\n 1 => '3gpp',\n ),\n 'video/3gpp2' => \n array (\n 0 => '3g2',\n ),\n 'video/h261' => \n array (\n 0 => 'h261',\n ),\n 'video/h263' => \n array (\n 0 => 'h263',\n ),\n 'video/h264' => \n array (\n 0 => 'h264',\n ),\n 'video/iso.segment' => \n array (\n 0 => 'm4s',\n ),\n 'video/jpeg' => \n array (\n 0 => 'jpgv',\n ),\n 'video/jpm' => \n array (\n 0 => 'jpm',\n 1 => 'jpgm',\n ),\n 'video/mj2' => \n array (\n 0 => 'mj2',\n 1 => 'mjp2',\n ),\n 'video/mp2t' => \n array (\n 0 => 'ts',\n ),\n 'video/mp4' => \n array (\n 0 => 'mp4',\n 1 => 'mp4v',\n 2 => 'mpg4',\n 3 => 'f4v',\n ),\n 'video/mpeg' => \n array (\n 0 => 'mpeg',\n 1 => 'mpg',\n 2 => 'mpe',\n 3 => 'm1v',\n 4 => 'm2v',\n ),\n 'video/ogg' => \n array (\n 0 => 'ogv',\n ),\n 'video/quicktime' => \n array (\n 0 => 'qt',\n 1 => 'mov',\n ),\n 'video/vnd.dece.hd' => \n array (\n 0 => 'uvh',\n 1 => 'uvvh',\n ),\n 'video/vnd.dece.mobile' => \n array (\n 0 => 'uvm',\n 1 => 'uvvm',\n ),\n 'video/vnd.dece.pd' => \n array (\n 0 => 'uvp',\n 1 => 'uvvp',\n ),\n 'video/vnd.dece.sd' => \n array (\n 0 => 'uvs',\n 1 => 'uvvs',\n ),\n 'video/vnd.dece.video' => \n array (\n 0 => 'uvv',\n 1 => 'uvvv',\n ),\n 'video/vnd.dvb.file' => \n array (\n 0 => 'dvb',\n ),\n 'video/vnd.fvt' => \n array (\n 0 => 'fvt',\n ),\n 'video/vnd.mpegurl' => \n array (\n 0 => 'mxu',\n 1 => 'm4u',\n ),\n 'video/vnd.ms-playready.media.pyv' => \n array (\n 0 => 'pyv',\n ),\n 'video/vnd.uvvu.mp4' => \n array (\n 0 => 'uvu',\n 1 => 'uvvu',\n ),\n 'video/vnd.vivo' => \n array (\n 0 => 'viv',\n ),\n 'video/webm' => \n array (\n 0 => 'webm',\n ),\n 'video/x-f4v' => \n array (\n 0 => 'f4v',\n ),\n 'video/x-fli' => \n array (\n 0 => 'fli',\n ),\n 'video/x-flv' => \n array (\n 0 => 'flv',\n ),\n 'video/x-m4v' => \n array (\n 0 => 'm4v',\n ),\n 'video/x-matroska' => \n array (\n 0 => 'mkv',\n 1 => 'mk3d',\n 2 => 'mks',\n ),\n 'video/x-mng' => \n array (\n 0 => 'mng',\n ),\n 'video/x-ms-asf' => \n array (\n 0 => 'asf',\n 1 => 'asx',\n ),\n 'video/x-ms-vob' => \n array (\n 0 => 'vob',\n ),\n 'video/x-ms-wm' => \n array (\n 0 => 'wm',\n ),\n 'video/x-ms-wmv' => \n array (\n 0 => 'wmv',\n ),\n 'video/x-ms-wmx' => \n array (\n 0 => 'wmx',\n ),\n 'video/x-ms-wvx' => \n array (\n 0 => 'wvx',\n ),\n 'video/x-msvideo' => \n array (\n 0 => 'avi',\n ),\n 'video/x-sgi-movie' => \n array (\n 0 => 'movie',\n ),\n 'video/x-smv' => \n array (\n 0 => 'smv',\n ),\n 'x-conference/x-cooltalk' => \n array (\n 0 => 'ice',\n ),\n 'application/x-photoshop' => \n array (\n 0 => 'psd',\n ),\n 'application/smil' => \n array (\n 0 => 'smi',\n 1 => 'smil',\n ),\n 'application/powerpoint' => \n array (\n 0 => 'ppt',\n ),\n 'application/vnd.ms-powerpoint.addin.macroEnabled.12' => \n array (\n 0 => 'ppam',\n ),\n 'application/vnd.ms-powerpoint.presentation.macroEnabled.12' => \n array (\n 0 => 'pptm',\n 1 => 'potm',\n ),\n 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12' => \n array (\n 0 => 'ppsm',\n ),\n 'application/wbxml' => \n array (\n 0 => 'wbxml',\n ),\n 'application/wmlc' => \n array (\n 0 => 'wmlc',\n ),\n 'application/x-httpd-php-source' => \n array (\n 0 => 'phps',\n ),\n 'application/x-compress' => \n array (\n 0 => 'z',\n ),\n 'application/x-rar' => \n array (\n 0 => 'rar',\n ),\n 'video/vnd.rn-realvideo' => \n array (\n 0 => 'rv',\n ),\n 'application/vnd.ms-word.template.macroEnabled.12' => \n array (\n 0 => 'docm',\n 1 => 'dotm',\n ),\n 'application/vnd.ms-excel.sheet.macroEnabled.12' => \n array (\n 0 => 'xlsm',\n ),\n 'application/vnd.ms-excel.template.macroEnabled.12' => \n array (\n 0 => 'xltm',\n ),\n 'application/vnd.ms-excel.addin.macroEnabled.12' => \n array (\n 0 => 'xlam',\n ),\n 'application/vnd.ms-excel.sheet.binary.macroEnabled.12' => \n array (\n 0 => 'xlsb',\n ),\n 'application/excel' => \n array (\n 0 => 'xl',\n ),\n 'application/x-x509-user-cert' => \n array (\n 0 => 'pem',\n ),\n 'application/x-pkcs10' => \n array (\n 0 => 'p10',\n ),\n 'application/x-pkcs7-signature' => \n array (\n 0 => 'p7a',\n ),\n 'application/pgp' => \n array (\n 0 => 'pgp',\n ),\n 'application/gpg-keys' => \n array (\n 0 => 'gpg',\n ),\n 'application/x-pkcs7' => \n array (\n 0 => 'rsa',\n ),\n 'video/3gp' => \n array (\n 0 => '3gp',\n ),\n 'audio/acc' => \n array (\n 0 => 'aac',\n ),\n 'application/vnd.mpegurl' => \n array (\n 0 => 'm4u',\n ),\n 'application/videolan' => \n array (\n 0 => 'vlc',\n ),\n 'audio/x-au' => \n array (\n 0 => 'au',\n ),\n 'audio/ac3' => \n array (\n 0 => 'ac3',\n ),\n 'text/x-scriptzsh' => \n array (\n 0 => 'zsh',\n ),\n 'application/cdr' => \n array (\n 0 => 'cdr',\n ),\n 'application/STEP' => \n array (\n 0 => 'step',\n 1 => 'stp',\n ),\n 'application/x-ndjson' => \n array (\n 0 => 'ndjson',\n ),\n 'application/braille' => \n array (\n 0 => 'brf',\n ),\n);

Methods

+
const MIME_TYPES_FOR_EXTENSIONS = array (\n '1km' => 'application/vnd.1000minds.decision-model+xml',\n '3dml' => 'text/vnd.in3d.3dml',\n '3ds' => 'image/x-3ds',\n '3g2' => 'video/3gpp2',\n '3gp' => 'video/3gp',\n '3gpp' => 'video/3gpp',\n '3mf' => 'model/3mf',\n '7z' => 'application/x-7z-compressed',\n '7zip' => 'application/x-7z-compressed',\n 123 => 'application/vnd.lotus-1-2-3',\n 'aab' => 'application/x-authorware-bin',\n 'aac' => 'audio/acc',\n 'aam' => 'application/x-authorware-map',\n 'aas' => 'application/x-authorware-seg',\n 'abw' => 'application/x-abiword',\n 'ac' => 'application/vnd.nokia.n-gage.ac+xml',\n 'ac3' => 'audio/ac3',\n 'acc' => 'application/vnd.americandynamics.acc',\n 'ace' => 'application/x-ace-compressed',\n 'acu' => 'application/vnd.acucobol',\n 'acutc' => 'application/vnd.acucorp',\n 'adp' => 'audio/adpcm',\n 'adts' => 'audio/aac',\n 'aep' => 'application/vnd.audiograph',\n 'afm' => 'application/x-font-type1',\n 'afp' => 'application/vnd.ibm.modcap',\n 'age' => 'application/vnd.age',\n 'ahead' => 'application/vnd.ahead.space',\n 'ai' => 'application/pdf',\n 'aif' => 'audio/x-aiff',\n 'aifc' => 'audio/x-aiff',\n 'aiff' => 'audio/x-aiff',\n 'air' => 'application/vnd.adobe.air-application-installer-package+zip',\n 'ait' => 'application/vnd.dvb.ait',\n 'ami' => 'application/vnd.amiga.ami',\n 'aml' => 'application/automationml-aml+xml',\n 'amlx' => 'application/automationml-amlx+zip',\n 'amr' => 'audio/amr',\n 'apk' => 'application/vnd.android.package-archive',\n 'apng' => 'image/apng',\n 'appcache' => 'text/cache-manifest',\n 'appinstaller' => 'application/appinstaller',\n 'application' => 'application/x-ms-application',\n 'appx' => 'application/appx',\n 'appxbundle' => 'application/appxbundle',\n 'apr' => 'application/vnd.lotus-approach',\n 'arc' => 'application/x-freearc',\n 'arj' => 'application/x-arj',\n 'asc' => 'application/pgp-signature',\n 'asf' => 'video/x-ms-asf',\n 'asm' => 'text/x-asm',\n 'aso' => 'application/vnd.accpac.simply.aso',\n 'asx' => 'video/x-ms-asf',\n 'atc' => 'application/vnd.acucorp',\n 'atom' => 'application/atom+xml',\n 'atomcat' => 'application/atomcat+xml',\n 'atomdeleted' => 'application/atomdeleted+xml',\n 'atomsvc' => 'application/atomsvc+xml',\n 'atx' => 'application/vnd.antix.game-component',\n 'au' => 'audio/x-au',\n 'avci' => 'image/avci',\n 'avcs' => 'image/avcs',\n 'avi' => 'video/x-msvideo',\n 'avif' => 'image/avif',\n 'aw' => 'application/applixware',\n 'azf' => 'application/vnd.airzip.filesecure.azf',\n 'azs' => 'application/vnd.airzip.filesecure.azs',\n 'azv' => 'image/vnd.airzip.accelerator.azv',\n 'azw' => 'application/vnd.amazon.ebook',\n 'b16' => 'image/vnd.pco.b16',\n 'bat' => 'application/x-msdownload',\n 'bcpio' => 'application/x-bcpio',\n 'bdf' => 'application/x-font-bdf',\n 'bdm' => 'application/vnd.syncml.dm+wbxml',\n 'bdoc' => 'application/x-bdoc',\n 'bed' => 'application/vnd.realvnc.bed',\n 'bh2' => 'application/vnd.fujitsu.oasysprs',\n 'bin' => 'application/octet-stream',\n 'blb' => 'application/x-blorb',\n 'blorb' => 'application/x-blorb',\n 'bmi' => 'application/vnd.bmi',\n 'bmml' => 'application/vnd.balsamiq.bmml+xml',\n 'bmp' => 'image/bmp',\n 'book' => 'application/vnd.framemaker',\n 'box' => 'application/vnd.previewsystems.box',\n 'boz' => 'application/x-bzip2',\n 'bpk' => 'application/octet-stream',\n 'bpmn' => 'application/octet-stream',\n 'brf' => 'application/braille',\n 'bsp' => 'model/vnd.valve.source.compiled-map',\n 'btf' => 'image/prs.btif',\n 'btif' => 'image/prs.btif',\n 'buffer' => 'application/octet-stream',\n 'bz' => 'application/x-bzip',\n 'bz2' => 'application/x-bzip2',\n 'c' => 'text/x-c',\n 'c4d' => 'application/vnd.clonk.c4group',\n 'c4f' => 'application/vnd.clonk.c4group',\n 'c4g' => 'application/vnd.clonk.c4group',\n 'c4p' => 'application/vnd.clonk.c4group',\n 'c4u' => 'application/vnd.clonk.c4group',\n 'c11amc' => 'application/vnd.cluetrust.cartomobile-config',\n 'c11amz' => 'application/vnd.cluetrust.cartomobile-config-pkg',\n 'cab' => 'application/vnd.ms-cab-compressed',\n 'caf' => 'audio/x-caf',\n 'cap' => 'application/vnd.tcpdump.pcap',\n 'car' => 'application/vnd.curl.car',\n 'cat' => 'application/vnd.ms-pki.seccat',\n 'cb7' => 'application/x-cbr',\n 'cba' => 'application/x-cbr',\n 'cbr' => 'application/x-cbr',\n 'cbt' => 'application/x-cbr',\n 'cbz' => 'application/x-cbr',\n 'cc' => 'text/x-c',\n 'cco' => 'application/x-cocoa',\n 'cct' => 'application/x-director',\n 'ccxml' => 'application/ccxml+xml',\n 'cdbcmsg' => 'application/vnd.contact.cmsg',\n 'cdf' => 'application/x-netcdf',\n 'cdfx' => 'application/cdfx+xml',\n 'cdkey' => 'application/vnd.mediastation.cdkey',\n 'cdmia' => 'application/cdmi-capability',\n 'cdmic' => 'application/cdmi-container',\n 'cdmid' => 'application/cdmi-domain',\n 'cdmio' => 'application/cdmi-object',\n 'cdmiq' => 'application/cdmi-queue',\n 'cdr' => 'application/cdr',\n 'cdx' => 'chemical/x-cdx',\n 'cdxml' => 'application/vnd.chemdraw+xml',\n 'cdy' => 'application/vnd.cinderella',\n 'cer' => 'application/pkix-cert',\n 'cfs' => 'application/x-cfs-compressed',\n 'cgm' => 'image/cgm',\n 'chat' => 'application/x-chat',\n 'chm' => 'application/vnd.ms-htmlhelp',\n 'chrt' => 'application/vnd.kde.kchart',\n 'cif' => 'chemical/x-cif',\n 'cii' => 'application/vnd.anser-web-certificate-issue-initiation',\n 'cil' => 'application/vnd.ms-artgalry',\n 'cjs' => 'application/node',\n 'cla' => 'application/vnd.claymore',\n 'class' => 'application/octet-stream',\n 'cld' => 'model/vnd.cld',\n 'clkk' => 'application/vnd.crick.clicker.keyboard',\n 'clkp' => 'application/vnd.crick.clicker.palette',\n 'clkt' => 'application/vnd.crick.clicker.template',\n 'clkw' => 'application/vnd.crick.clicker.wordbank',\n 'clkx' => 'application/vnd.crick.clicker',\n 'clp' => 'application/x-msclip',\n 'cmc' => 'application/vnd.cosmocaller',\n 'cmdf' => 'chemical/x-cmdf',\n 'cml' => 'chemical/x-cml',\n 'cmp' => 'application/vnd.yellowriver-custom-menu',\n 'cmx' => 'image/x-cmx',\n 'cod' => 'application/vnd.rim.cod',\n 'coffee' => 'text/coffeescript',\n 'com' => 'application/x-msdownload',\n 'conf' => 'text/plain',\n 'cpio' => 'application/x-cpio',\n 'cpl' => 'application/cpl+xml',\n 'cpp' => 'text/x-c',\n 'cpt' => 'application/mac-compactpro',\n 'crd' => 'application/x-mscardfile',\n 'crl' => 'application/pkix-crl',\n 'crt' => 'application/x-x509-ca-cert',\n 'crx' => 'application/x-chrome-extension',\n 'cryptonote' => 'application/vnd.rig.cryptonote',\n 'csh' => 'application/x-csh',\n 'csl' => 'application/vnd.citationstyles.style+xml',\n 'csml' => 'chemical/x-csml',\n 'csp' => 'application/vnd.commonspace',\n 'csr' => 'application/octet-stream',\n 'css' => 'text/css',\n 'cst' => 'application/x-director',\n 'csv' => 'text/csv',\n 'cu' => 'application/cu-seeme',\n 'curl' => 'text/vnd.curl',\n 'cwl' => 'application/cwl',\n 'cww' => 'application/prs.cww',\n 'cxt' => 'application/x-director',\n 'cxx' => 'text/x-c',\n 'dae' => 'model/vnd.collada+xml',\n 'daf' => 'application/vnd.mobius.daf',\n 'dart' => 'application/vnd.dart',\n 'dataless' => 'application/vnd.fdsn.seed',\n 'davmount' => 'application/davmount+xml',\n 'dbf' => 'application/vnd.dbf',\n 'dbk' => 'application/docbook+xml',\n 'dcr' => 'application/x-director',\n 'dcurl' => 'text/vnd.curl.dcurl',\n 'dd2' => 'application/vnd.oma.dd2+xml',\n 'ddd' => 'application/vnd.fujixerox.ddd',\n 'ddf' => 'application/vnd.syncml.dmddf+xml',\n 'dds' => 'image/vnd.ms-dds',\n 'deb' => 'application/x-debian-package',\n 'def' => 'text/plain',\n 'deploy' => 'application/octet-stream',\n 'der' => 'application/x-x509-ca-cert',\n 'dfac' => 'application/vnd.dreamfactory',\n 'dgc' => 'application/x-dgc-compressed',\n 'dib' => 'image/bmp',\n 'dic' => 'text/x-c',\n 'dir' => 'application/x-director',\n 'dis' => 'application/vnd.mobius.dis',\n 'disposition-notification' => 'message/disposition-notification',\n 'dist' => 'application/octet-stream',\n 'distz' => 'application/octet-stream',\n 'djv' => 'image/vnd.djvu',\n 'djvu' => 'image/vnd.djvu',\n 'dll' => 'application/octet-stream',\n 'dmg' => 'application/x-apple-diskimage',\n 'dmn' => 'application/octet-stream',\n 'dmp' => 'application/vnd.tcpdump.pcap',\n 'dms' => 'application/octet-stream',\n 'dna' => 'application/vnd.dna',\n 'doc' => 'application/msword',\n 'docm' => 'application/vnd.ms-word.template.macroEnabled.12',\n 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'dot' => 'application/msword',\n 'dotm' => 'application/vnd.ms-word.template.macroEnabled.12',\n 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n 'dp' => 'application/vnd.osgi.dp',\n 'dpg' => 'application/vnd.dpgraph',\n 'dpx' => 'image/dpx',\n 'dra' => 'audio/vnd.dra',\n 'drle' => 'image/dicom-rle',\n 'dsc' => 'text/prs.lines.tag',\n 'dssc' => 'application/dssc+der',\n 'dst' => 'application/octet-stream',\n 'dtb' => 'application/x-dtbook+xml',\n 'dtd' => 'application/xml-dtd',\n 'dts' => 'audio/vnd.dts',\n 'dtshd' => 'audio/vnd.dts.hd',\n 'dump' => 'application/octet-stream',\n 'dvb' => 'video/vnd.dvb.file',\n 'dvi' => 'application/x-dvi',\n 'dwd' => 'application/atsc-dwd+xml',\n 'dwf' => 'model/vnd.dwf',\n 'dwg' => 'image/vnd.dwg',\n 'dxf' => 'image/vnd.dxf',\n 'dxp' => 'application/vnd.spotfire.dxp',\n 'dxr' => 'application/x-director',\n 'ear' => 'application/java-archive',\n 'ecelp4800' => 'audio/vnd.nuera.ecelp4800',\n 'ecelp7470' => 'audio/vnd.nuera.ecelp7470',\n 'ecelp9600' => 'audio/vnd.nuera.ecelp9600',\n 'ecma' => 'application/ecmascript',\n 'edm' => 'application/vnd.novadigm.edm',\n 'edx' => 'application/vnd.novadigm.edx',\n 'efif' => 'application/vnd.picsel',\n 'ei6' => 'application/vnd.pg.osasli',\n 'elc' => 'application/octet-stream',\n 'emf' => 'image/emf',\n 'eml' => 'message/rfc822',\n 'emma' => 'application/emma+xml',\n 'emotionml' => 'application/emotionml+xml',\n 'emz' => 'application/x-msmetafile',\n 'eol' => 'audio/vnd.digital-winds',\n 'eot' => 'application/vnd.ms-fontobject',\n 'eps' => 'application/postscript',\n 'epub' => 'application/epub+zip',\n 'es3' => 'application/vnd.eszigno3+xml',\n 'esa' => 'application/vnd.osgi.subsystem',\n 'esf' => 'application/vnd.epson.esf',\n 'et3' => 'application/vnd.eszigno3+xml',\n 'etx' => 'text/x-setext',\n 'eva' => 'application/x-eva',\n 'evy' => 'application/x-envoy',\n 'exe' => 'application/octet-stream',\n 'exi' => 'application/exi',\n 'exp' => 'application/express',\n 'exr' => 'image/aces',\n 'ext' => 'application/vnd.novadigm.ext',\n 'ez' => 'application/andrew-inset',\n 'ez2' => 'application/vnd.ezpix-album',\n 'ez3' => 'application/vnd.ezpix-package',\n 'f' => 'text/x-fortran',\n 'f4v' => 'video/mp4',\n 'f77' => 'text/x-fortran',\n 'f90' => 'text/x-fortran',\n 'fbs' => 'image/vnd.fastbidsheet',\n 'fcdt' => 'application/vnd.adobe.formscentral.fcdt',\n 'fcs' => 'application/vnd.isac.fcs',\n 'fdf' => 'application/vnd.fdf',\n 'fdt' => 'application/fdt+xml',\n 'fe_launch' => 'application/vnd.denovo.fcselayout-link',\n 'fg5' => 'application/vnd.fujitsu.oasysgp',\n 'fgd' => 'application/x-director',\n 'fh' => 'image/x-freehand',\n 'fh4' => 'image/x-freehand',\n 'fh5' => 'image/x-freehand',\n 'fh7' => 'image/x-freehand',\n 'fhc' => 'image/x-freehand',\n 'fig' => 'application/x-xfig',\n 'fits' => 'image/fits',\n 'flac' => 'audio/x-flac',\n 'fli' => 'video/x-fli',\n 'flo' => 'application/vnd.micrografx.flo',\n 'flv' => 'video/x-flv',\n 'flw' => 'application/vnd.kde.kivio',\n 'flx' => 'text/vnd.fmi.flexstor',\n 'fly' => 'text/vnd.fly',\n 'fm' => 'application/vnd.framemaker',\n 'fnc' => 'application/vnd.frogans.fnc',\n 'fo' => 'application/vnd.software602.filler.form+xml',\n 'for' => 'text/x-fortran',\n 'fpx' => 'image/vnd.fpx',\n 'frame' => 'application/vnd.framemaker',\n 'fsc' => 'application/vnd.fsc.weblaunch',\n 'fst' => 'image/vnd.fst',\n 'ftc' => 'application/vnd.fluxtime.clip',\n 'fti' => 'application/vnd.anser-web-funds-transfer-initiation',\n 'fvt' => 'video/vnd.fvt',\n 'fxp' => 'application/vnd.adobe.fxp',\n 'fxpl' => 'application/vnd.adobe.fxp',\n 'fzs' => 'application/vnd.fuzzysheet',\n 'g2w' => 'application/vnd.geoplan',\n 'g3' => 'image/g3fax',\n 'g3w' => 'application/vnd.geospace',\n 'gac' => 'application/vnd.groove-account',\n 'gam' => 'application/x-tads',\n 'gbr' => 'application/rpki-ghostbusters',\n 'gca' => 'application/x-gca-compressed',\n 'gdl' => 'model/vnd.gdl',\n 'gdoc' => 'application/vnd.google-apps.document',\n 'ged' => 'text/vnd.familysearch.gedcom',\n 'geo' => 'application/vnd.dynageo',\n 'geojson' => 'application/geo+json',\n 'gex' => 'application/vnd.geometry-explorer',\n 'ggb' => 'application/vnd.geogebra.file',\n 'ggt' => 'application/vnd.geogebra.tool',\n 'ghf' => 'application/vnd.groove-help',\n 'gif' => 'image/gif',\n 'gim' => 'application/vnd.groove-identity-message',\n 'glb' => 'model/gltf-binary',\n 'gltf' => 'model/gltf+json',\n 'gml' => 'application/gml+xml',\n 'gmx' => 'application/vnd.gmx',\n 'gnumeric' => 'application/x-gnumeric',\n 'gpg' => 'application/gpg-keys',\n 'gph' => 'application/vnd.flographit',\n 'gpx' => 'application/gpx+xml',\n 'gqf' => 'application/vnd.grafeq',\n 'gqs' => 'application/vnd.grafeq',\n 'gram' => 'application/srgs',\n 'gramps' => 'application/x-gramps-xml',\n 'gre' => 'application/vnd.geometry-explorer',\n 'grv' => 'application/vnd.groove-injector',\n 'grxml' => 'application/srgs+xml',\n 'gsf' => 'application/x-font-ghostscript',\n 'gsheet' => 'application/vnd.google-apps.spreadsheet',\n 'gslides' => 'application/vnd.google-apps.presentation',\n 'gtar' => 'application/x-gtar',\n 'gtm' => 'application/vnd.groove-tool-message',\n 'gtw' => 'model/vnd.gtw',\n 'gv' => 'text/vnd.graphviz',\n 'gxf' => 'application/gxf',\n 'gxt' => 'application/vnd.geonext',\n 'gz' => 'application/gzip',\n 'gzip' => 'application/gzip',\n 'h' => 'text/x-c',\n 'h261' => 'video/h261',\n 'h263' => 'video/h263',\n 'h264' => 'video/h264',\n 'hal' => 'application/vnd.hal+xml',\n 'hbci' => 'application/vnd.hbci',\n 'hbs' => 'text/x-handlebars-template',\n 'hdd' => 'application/x-virtualbox-hdd',\n 'hdf' => 'application/x-hdf',\n 'heic' => 'image/heic',\n 'heics' => 'image/heic-sequence',\n 'heif' => 'image/heif',\n 'heifs' => 'image/heif-sequence',\n 'hej2' => 'image/hej2k',\n 'held' => 'application/atsc-held+xml',\n 'hh' => 'text/x-c',\n 'hjson' => 'application/hjson',\n 'hlp' => 'application/winhlp',\n 'hpgl' => 'application/vnd.hp-hpgl',\n 'hpid' => 'application/vnd.hp-hpid',\n 'hps' => 'application/vnd.hp-hps',\n 'hqx' => 'application/mac-binhex40',\n 'hsj2' => 'image/hsj2',\n 'htc' => 'text/x-component',\n 'htke' => 'application/vnd.kenameaapp',\n 'htm' => 'text/html',\n 'html' => 'text/html',\n 'hvd' => 'application/vnd.yamaha.hv-dic',\n 'hvp' => 'application/vnd.yamaha.hv-voice',\n 'hvs' => 'application/vnd.yamaha.hv-script',\n 'i2g' => 'application/vnd.intergeo',\n 'icc' => 'application/vnd.iccprofile',\n 'ice' => 'x-conference/x-cooltalk',\n 'icm' => 'application/vnd.iccprofile',\n 'ico' => 'image/x-icon',\n 'ics' => 'text/calendar',\n 'ief' => 'image/ief',\n 'ifb' => 'text/calendar',\n 'ifm' => 'application/vnd.shana.informed.formdata',\n 'iges' => 'model/iges',\n 'igl' => 'application/vnd.igloader',\n 'igm' => 'application/vnd.insors.igm',\n 'igs' => 'model/iges',\n 'igx' => 'application/vnd.micrografx.igx',\n 'iif' => 'application/vnd.shana.informed.interchange',\n 'img' => 'application/octet-stream',\n 'imp' => 'application/vnd.accpac.simply.imp',\n 'ims' => 'application/vnd.ms-ims',\n 'in' => 'text/plain',\n 'ini' => 'text/plain',\n 'ink' => 'application/inkml+xml',\n 'inkml' => 'application/inkml+xml',\n 'install' => 'application/x-install-instructions',\n 'iota' => 'application/vnd.astraea-software.iota',\n 'ipfix' => 'application/ipfix',\n 'ipk' => 'application/vnd.shana.informed.package',\n 'irm' => 'application/vnd.ibm.rights-management',\n 'irp' => 'application/vnd.irepository.package+xml',\n 'iso' => 'application/x-iso9660-image',\n 'itp' => 'application/vnd.shana.informed.formtemplate',\n 'its' => 'application/its+xml',\n 'ivp' => 'application/vnd.immervision-ivp',\n 'ivu' => 'application/vnd.immervision-ivu',\n 'jad' => 'text/vnd.sun.j2me.app-descriptor',\n 'jade' => 'text/jade',\n 'jam' => 'application/vnd.jam',\n 'jar' => 'application/java-archive',\n 'jardiff' => 'application/x-java-archive-diff',\n 'java' => 'text/x-java-source',\n 'jhc' => 'image/jphc',\n 'jisp' => 'application/vnd.jisp',\n 'jls' => 'image/jls',\n 'jlt' => 'application/vnd.hp-jlyt',\n 'jng' => 'image/x-jng',\n 'jnlp' => 'application/x-java-jnlp-file',\n 'joda' => 'application/vnd.joost.joda-archive',\n 'jp2' => 'image/jp2',\n 'jpe' => 'image/jpeg',\n 'jpeg' => 'image/jpeg',\n 'jpf' => 'image/jpx',\n 'jpg' => 'image/jpeg',\n 'jpg2' => 'image/jp2',\n 'jpgm' => 'video/jpm',\n 'jpgv' => 'video/jpeg',\n 'jph' => 'image/jph',\n 'jpm' => 'video/jpm',\n 'jpx' => 'image/jpx',\n 'js' => 'application/javascript',\n 'json' => 'application/json',\n 'json5' => 'application/json5',\n 'jsonld' => 'application/ld+json',\n 'jsonml' => 'application/jsonml+json',\n 'jsx' => 'text/jsx',\n 'jt' => 'model/jt',\n 'jxr' => 'image/jxr',\n 'jxra' => 'image/jxra',\n 'jxrs' => 'image/jxrs',\n 'jxs' => 'image/jxs',\n 'jxsc' => 'image/jxsc',\n 'jxsi' => 'image/jxsi',\n 'jxss' => 'image/jxss',\n 'kar' => 'audio/midi',\n 'karbon' => 'application/vnd.kde.karbon',\n 'kdb' => 'application/octet-stream',\n 'kdbx' => 'application/x-keepass2',\n 'key' => 'application/x-iwork-keynote-sffkey',\n 'kfo' => 'application/vnd.kde.kformula',\n 'kia' => 'application/vnd.kidspiration',\n 'kml' => 'application/vnd.google-earth.kml+xml',\n 'kmz' => 'application/vnd.google-earth.kmz',\n 'kne' => 'application/vnd.kinar',\n 'knp' => 'application/vnd.kinar',\n 'kon' => 'application/vnd.kde.kontour',\n 'kpr' => 'application/vnd.kde.kpresenter',\n 'kpt' => 'application/vnd.kde.kpresenter',\n 'kpxx' => 'application/vnd.ds-keypoint',\n 'ksp' => 'application/vnd.kde.kspread',\n 'ktr' => 'application/vnd.kahootz',\n 'ktx' => 'image/ktx',\n 'ktx2' => 'image/ktx2',\n 'ktz' => 'application/vnd.kahootz',\n 'kwd' => 'application/vnd.kde.kword',\n 'kwt' => 'application/vnd.kde.kword',\n 'lasxml' => 'application/vnd.las.las+xml',\n 'latex' => 'application/x-latex',\n 'lbd' => 'application/vnd.llamagraphics.life-balance.desktop',\n 'lbe' => 'application/vnd.llamagraphics.life-balance.exchange+xml',\n 'les' => 'application/vnd.hhe.lesson-player',\n 'less' => 'text/less',\n 'lgr' => 'application/lgr+xml',\n 'lha' => 'application/octet-stream',\n 'link66' => 'application/vnd.route66.link66+xml',\n 'list' => 'text/plain',\n 'list3820' => 'application/vnd.ibm.modcap',\n 'listafp' => 'application/vnd.ibm.modcap',\n 'litcoffee' => 'text/coffeescript',\n 'lnk' => 'application/x-ms-shortcut',\n 'log' => 'text/plain',\n 'lostxml' => 'application/lost+xml',\n 'lrf' => 'application/octet-stream',\n 'lrm' => 'application/vnd.ms-lrm',\n 'ltf' => 'application/vnd.frogans.ltf',\n 'lua' => 'text/x-lua',\n 'luac' => 'application/x-lua-bytecode',\n 'lvp' => 'audio/vnd.lucent.voice',\n 'lwp' => 'application/vnd.lotus-wordpro',\n 'lzh' => 'application/octet-stream',\n 'm1v' => 'video/mpeg',\n 'm2a' => 'audio/mpeg',\n 'm2v' => 'video/mpeg',\n 'm3a' => 'audio/mpeg',\n 'm3u' => 'text/plain',\n 'm3u8' => 'application/vnd.apple.mpegurl',\n 'm4a' => 'audio/x-m4a',\n 'm4p' => 'application/mp4',\n 'm4s' => 'video/iso.segment',\n 'm4u' => 'application/vnd.mpegurl',\n 'm4v' => 'video/x-m4v',\n 'm13' => 'application/x-msmediaview',\n 'm14' => 'application/x-msmediaview',\n 'm21' => 'application/mp21',\n 'ma' => 'application/mathematica',\n 'mads' => 'application/mads+xml',\n 'maei' => 'application/mmt-aei+xml',\n 'mag' => 'application/vnd.ecowin.chart',\n 'maker' => 'application/vnd.framemaker',\n 'man' => 'text/troff',\n 'manifest' => 'text/cache-manifest',\n 'map' => 'application/json',\n 'mar' => 'application/octet-stream',\n 'markdown' => 'text/markdown',\n 'mathml' => 'application/mathml+xml',\n 'mb' => 'application/mathematica',\n 'mbk' => 'application/vnd.mobius.mbk',\n 'mbox' => 'application/mbox',\n 'mc1' => 'application/vnd.medcalcdata',\n 'mcd' => 'application/vnd.mcd',\n 'mcurl' => 'text/vnd.curl.mcurl',\n 'md' => 'text/markdown',\n 'mdb' => 'application/x-msaccess',\n 'mdi' => 'image/vnd.ms-modi',\n 'mdx' => 'text/mdx',\n 'me' => 'text/troff',\n 'mesh' => 'model/mesh',\n 'meta4' => 'application/metalink4+xml',\n 'metalink' => 'application/metalink+xml',\n 'mets' => 'application/mets+xml',\n 'mfm' => 'application/vnd.mfmp',\n 'mft' => 'application/rpki-manifest',\n 'mgp' => 'application/vnd.osgeo.mapguide.package',\n 'mgz' => 'application/vnd.proteus.magazine',\n 'mid' => 'audio/midi',\n 'midi' => 'audio/midi',\n 'mie' => 'application/x-mie',\n 'mif' => 'application/vnd.mif',\n 'mime' => 'message/rfc822',\n 'mj2' => 'video/mj2',\n 'mjp2' => 'video/mj2',\n 'mjs' => 'text/javascript',\n 'mk3d' => 'video/x-matroska',\n 'mka' => 'audio/x-matroska',\n 'mkd' => 'text/x-markdown',\n 'mks' => 'video/x-matroska',\n 'mkv' => 'video/x-matroska',\n 'mlp' => 'application/vnd.dolby.mlp',\n 'mmd' => 'application/vnd.chipnuts.karaoke-mmd',\n 'mmf' => 'application/vnd.smaf',\n 'mml' => 'text/mathml',\n 'mmr' => 'image/vnd.fujixerox.edmics-mmr',\n 'mng' => 'video/x-mng',\n 'mny' => 'application/x-msmoney',\n 'mobi' => 'application/x-mobipocket-ebook',\n 'mods' => 'application/mods+xml',\n 'mov' => 'video/quicktime',\n 'movie' => 'video/x-sgi-movie',\n 'mp2' => 'audio/mpeg',\n 'mp2a' => 'audio/mpeg',\n 'mp3' => 'audio/mpeg',\n 'mp4' => 'video/mp4',\n 'mp4a' => 'audio/mp4',\n 'mp4s' => 'application/mp4',\n 'mp4v' => 'video/mp4',\n 'mp21' => 'application/mp21',\n 'mpc' => 'application/vnd.mophun.certificate',\n 'mpd' => 'application/dash+xml',\n 'mpe' => 'video/mpeg',\n 'mpeg' => 'video/mpeg',\n 'mpf' => 'application/media-policy-dataset+xml',\n 'mpg' => 'video/mpeg',\n 'mpg4' => 'video/mp4',\n 'mpga' => 'audio/mpeg',\n 'mpkg' => 'application/vnd.apple.installer+xml',\n 'mpm' => 'application/vnd.blueice.multipass',\n 'mpn' => 'application/vnd.mophun.application',\n 'mpp' => 'application/vnd.ms-project',\n 'mpt' => 'application/vnd.ms-project',\n 'mpy' => 'application/vnd.ibm.minipay',\n 'mqy' => 'application/vnd.mobius.mqy',\n 'mrc' => 'application/marc',\n 'mrcx' => 'application/marcxml+xml',\n 'ms' => 'text/troff',\n 'mscml' => 'application/mediaservercontrol+xml',\n 'mseed' => 'application/vnd.fdsn.mseed',\n 'mseq' => 'application/vnd.mseq',\n 'msf' => 'application/vnd.epson.msf',\n 'msg' => 'application/vnd.ms-outlook',\n 'msh' => 'model/mesh',\n 'msi' => 'application/x-msdownload',\n 'msix' => 'application/msix',\n 'msixbundle' => 'application/msixbundle',\n 'msl' => 'application/vnd.mobius.msl',\n 'msm' => 'application/octet-stream',\n 'msp' => 'application/octet-stream',\n 'msty' => 'application/vnd.muvee.style',\n 'mtl' => 'model/mtl',\n 'mts' => 'model/vnd.mts',\n 'mus' => 'application/vnd.musician',\n 'musd' => 'application/mmt-usd+xml',\n 'musicxml' => 'application/vnd.recordare.musicxml+xml',\n 'mvb' => 'application/x-msmediaview',\n 'mvt' => 'application/vnd.mapbox-vector-tile',\n 'mwf' => 'application/vnd.mfer',\n 'mxf' => 'application/mxf',\n 'mxl' => 'application/vnd.recordare.musicxml',\n 'mxmf' => 'audio/mobile-xmf',\n 'mxml' => 'application/xv+xml',\n 'mxs' => 'application/vnd.triscape.mxs',\n 'mxu' => 'video/vnd.mpegurl',\n 'n-gage' => 'application/vnd.nokia.n-gage.symbian.install',\n 'n3' => 'text/n3',\n 'nb' => 'application/mathematica',\n 'nbp' => 'application/vnd.wolfram.player',\n 'nc' => 'application/x-netcdf',\n 'ncx' => 'application/x-dtbncx+xml',\n 'ndjson' => 'application/x-ndjson',\n 'nfo' => 'text/x-nfo',\n 'ngdat' => 'application/vnd.nokia.n-gage.data',\n 'nitf' => 'application/vnd.nitf',\n 'nlu' => 'application/vnd.neurolanguage.nlu',\n 'nml' => 'application/vnd.enliven',\n 'nnd' => 'application/vnd.noblenet-directory',\n 'nns' => 'application/vnd.noblenet-sealer',\n 'nnw' => 'application/vnd.noblenet-web',\n 'npx' => 'image/vnd.net-fpx',\n 'nq' => 'application/n-quads',\n 'nsc' => 'application/x-conference',\n 'nsf' => 'application/vnd.lotus-notes',\n 'nt' => 'application/n-triples',\n 'ntf' => 'application/vnd.nitf',\n 'numbers' => 'application/x-iwork-numbers-sffnumbers',\n 'nzb' => 'application/x-nzb',\n 'oa2' => 'application/vnd.fujitsu.oasys2',\n 'oa3' => 'application/vnd.fujitsu.oasys3',\n 'oas' => 'application/vnd.fujitsu.oasys',\n 'obd' => 'application/x-msbinder',\n 'obgx' => 'application/vnd.openblox.game+xml',\n 'obj' => 'model/obj',\n 'oda' => 'application/oda',\n 'odb' => 'application/vnd.oasis.opendocument.database',\n 'odc' => 'application/vnd.oasis.opendocument.chart',\n 'odf' => 'application/vnd.oasis.opendocument.formula',\n 'odft' => 'application/vnd.oasis.opendocument.formula-template',\n 'odg' => 'application/vnd.oasis.opendocument.graphics',\n 'odi' => 'application/vnd.oasis.opendocument.image',\n 'odm' => 'application/vnd.oasis.opendocument.text-master',\n 'odp' => 'application/vnd.oasis.opendocument.presentation',\n 'ods' => 'application/vnd.oasis.opendocument.spreadsheet',\n 'odt' => 'application/vnd.oasis.opendocument.text',\n 'oga' => 'audio/ogg',\n 'ogex' => 'model/vnd.opengex',\n 'ogg' => 'audio/ogg',\n 'ogv' => 'video/ogg',\n 'ogx' => 'application/ogg',\n 'omdoc' => 'application/omdoc+xml',\n 'onepkg' => 'application/onenote',\n 'onetmp' => 'application/onenote',\n 'onetoc' => 'application/onenote',\n 'onetoc2' => 'application/onenote',\n 'opf' => 'application/oebps-package+xml',\n 'opml' => 'text/x-opml',\n 'oprc' => 'application/vnd.palm',\n 'opus' => 'audio/ogg',\n 'org' => 'text/x-org',\n 'osf' => 'application/vnd.yamaha.openscoreformat',\n 'osfpvg' => 'application/vnd.yamaha.openscoreformat.osfpvg+xml',\n 'osm' => 'application/vnd.openstreetmap.data+xml',\n 'otc' => 'application/vnd.oasis.opendocument.chart-template',\n 'otf' => 'font/otf',\n 'otg' => 'application/vnd.oasis.opendocument.graphics-template',\n 'oth' => 'application/vnd.oasis.opendocument.text-web',\n 'oti' => 'application/vnd.oasis.opendocument.image-template',\n 'otp' => 'application/vnd.oasis.opendocument.presentation-template',\n 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template',\n 'ott' => 'application/vnd.oasis.opendocument.text-template',\n 'ova' => 'application/x-virtualbox-ova',\n 'ovf' => 'application/x-virtualbox-ovf',\n 'owl' => 'application/rdf+xml',\n 'oxps' => 'application/oxps',\n 'oxt' => 'application/vnd.openofficeorg.extension',\n 'p' => 'text/x-pascal',\n 'p7a' => 'application/x-pkcs7-signature',\n 'p7b' => 'application/x-pkcs7-certificates',\n 'p7c' => 'application/pkcs7-mime',\n 'p7m' => 'application/pkcs7-mime',\n 'p7r' => 'application/x-pkcs7-certreqresp',\n 'p7s' => 'application/pkcs7-signature',\n 'p8' => 'application/pkcs8',\n 'p10' => 'application/x-pkcs10',\n 'p12' => 'application/x-pkcs12',\n 'pac' => 'application/x-ns-proxy-autoconfig',\n 'pages' => 'application/x-iwork-pages-sffpages',\n 'pas' => 'text/x-pascal',\n 'paw' => 'application/vnd.pawaafile',\n 'pbd' => 'application/vnd.powerbuilder6',\n 'pbm' => 'image/x-portable-bitmap',\n 'pcap' => 'application/vnd.tcpdump.pcap',\n 'pcf' => 'application/x-font-pcf',\n 'pcl' => 'application/vnd.hp-pcl',\n 'pclxl' => 'application/vnd.hp-pclxl',\n 'pct' => 'image/x-pict',\n 'pcurl' => 'application/vnd.curl.pcurl',\n 'pcx' => 'image/x-pcx',\n 'pdb' => 'application/x-pilot',\n 'pde' => 'text/x-processing',\n 'pdf' => 'application/pdf',\n 'pem' => 'application/x-x509-user-cert',\n 'pfa' => 'application/x-font-type1',\n 'pfb' => 'application/x-font-type1',\n 'pfm' => 'application/x-font-type1',\n 'pfr' => 'application/font-tdpfr',\n 'pfx' => 'application/x-pkcs12',\n 'pgm' => 'image/x-portable-graymap',\n 'pgn' => 'application/x-chess-pgn',\n 'pgp' => 'application/pgp',\n 'phar' => 'application/octet-stream',\n 'php' => 'application/x-httpd-php',\n 'php3' => 'application/x-httpd-php',\n 'php4' => 'application/x-httpd-php',\n 'phps' => 'application/x-httpd-php-source',\n 'phtml' => 'application/x-httpd-php',\n 'pic' => 'image/x-pict',\n 'pkg' => 'application/octet-stream',\n 'pki' => 'application/pkixcmp',\n 'pkipath' => 'application/pkix-pkipath',\n 'pkpass' => 'application/vnd.apple.pkpass',\n 'pl' => 'application/x-perl',\n 'plb' => 'application/vnd.3gpp.pic-bw-large',\n 'plc' => 'application/vnd.mobius.plc',\n 'plf' => 'application/vnd.pocketlearn',\n 'pls' => 'application/pls+xml',\n 'pm' => 'application/x-perl',\n 'pml' => 'application/vnd.ctc-posml',\n 'png' => 'image/png',\n 'pnm' => 'image/x-portable-anymap',\n 'portpkg' => 'application/vnd.macports.portpkg',\n 'pot' => 'application/vnd.ms-powerpoint',\n 'potm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',\n 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template',\n 'ppa' => 'application/vnd.ms-powerpoint',\n 'ppam' => 'application/vnd.ms-powerpoint.addin.macroEnabled.12',\n 'ppd' => 'application/vnd.cups-ppd',\n 'ppm' => 'image/x-portable-pixmap',\n 'pps' => 'application/vnd.ms-powerpoint',\n 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12',\n 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',\n 'ppt' => 'application/powerpoint',\n 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',\n 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'pqa' => 'application/vnd.palm',\n 'prc' => 'model/prc',\n 'pre' => 'application/vnd.lotus-freelance',\n 'prf' => 'application/pics-rules',\n 'provx' => 'application/provenance+xml',\n 'ps' => 'application/postscript',\n 'psb' => 'application/vnd.3gpp.pic-bw-small',\n 'psd' => 'application/x-photoshop',\n 'psf' => 'application/x-font-linux-psf',\n 'pskcxml' => 'application/pskc+xml',\n 'pti' => 'image/prs.pti',\n 'ptid' => 'application/vnd.pvi.ptid1',\n 'pub' => 'application/x-mspublisher',\n 'pv' => 'application/octet-stream',\n 'pvb' => 'application/vnd.3gpp.pic-bw-var',\n 'pwn' => 'application/vnd.3m.post-it-notes',\n 'pxf' => 'application/octet-stream',\n 'pya' => 'audio/vnd.ms-playready.media.pya',\n 'pyo' => 'model/vnd.pytha.pyox',\n 'pyox' => 'model/vnd.pytha.pyox',\n 'pyv' => 'video/vnd.ms-playready.media.pyv',\n 'qam' => 'application/vnd.epson.quickanime',\n 'qbo' => 'application/vnd.intu.qbo',\n 'qfx' => 'application/vnd.intu.qfx',\n 'qps' => 'application/vnd.publishare-delta-tree',\n 'qt' => 'video/quicktime',\n 'qwd' => 'application/vnd.quark.quarkxpress',\n 'qwt' => 'application/vnd.quark.quarkxpress',\n 'qxb' => 'application/vnd.quark.quarkxpress',\n 'qxd' => 'application/vnd.quark.quarkxpress',\n 'qxl' => 'application/vnd.quark.quarkxpress',\n 'qxt' => 'application/vnd.quark.quarkxpress',\n 'ra' => 'audio/x-realaudio',\n 'ram' => 'audio/x-pn-realaudio',\n 'raml' => 'application/raml+yaml',\n 'rapd' => 'application/route-apd+xml',\n 'rar' => 'application/x-rar',\n 'ras' => 'image/x-cmu-raster',\n 'rcprofile' => 'application/vnd.ipunplugged.rcprofile',\n 'rdf' => 'application/rdf+xml',\n 'rdz' => 'application/vnd.data-vision.rdz',\n 'relo' => 'application/p2p-overlay+xml',\n 'rep' => 'application/vnd.businessobjects',\n 'res' => 'application/x-dtbresource+xml',\n 'rgb' => 'image/x-rgb',\n 'rif' => 'application/reginfo+xml',\n 'rip' => 'audio/vnd.rip',\n 'ris' => 'application/x-research-info-systems',\n 'rl' => 'application/resource-lists+xml',\n 'rlc' => 'image/vnd.fujixerox.edmics-rlc',\n 'rld' => 'application/resource-lists-diff+xml',\n 'rm' => 'audio/x-pn-realaudio',\n 'rmi' => 'audio/midi',\n 'rmp' => 'audio/x-pn-realaudio-plugin',\n 'rms' => 'application/vnd.jcp.javame.midlet-rms',\n 'rmvb' => 'application/vnd.rn-realmedia-vbr',\n 'rnc' => 'application/relax-ng-compact-syntax',\n 'rng' => 'application/xml',\n 'roa' => 'application/rpki-roa',\n 'roff' => 'text/troff',\n 'rp9' => 'application/vnd.cloanto.rp9',\n 'rpm' => 'audio/x-pn-realaudio-plugin',\n 'rpss' => 'application/vnd.nokia.radio-presets',\n 'rpst' => 'application/vnd.nokia.radio-preset',\n 'rq' => 'application/sparql-query',\n 'rs' => 'application/rls-services+xml',\n 'rsa' => 'application/x-pkcs7',\n 'rsat' => 'application/atsc-rsat+xml',\n 'rsd' => 'application/rsd+xml',\n 'rsheet' => 'application/urc-ressheet+xml',\n 'rss' => 'application/rss+xml',\n 'rtf' => 'text/rtf',\n 'rtx' => 'text/richtext',\n 'run' => 'application/x-makeself',\n 'rusd' => 'application/route-usd+xml',\n 'rv' => 'video/vnd.rn-realvideo',\n 's' => 'text/x-asm',\n 's3m' => 'audio/s3m',\n 'saf' => 'application/vnd.yamaha.smaf-audio',\n 'sass' => 'text/x-sass',\n 'sbml' => 'application/sbml+xml',\n 'sc' => 'application/vnd.ibm.secure-container',\n 'scd' => 'application/x-msschedule',\n 'scm' => 'application/vnd.lotus-screencam',\n 'scq' => 'application/scvp-cv-request',\n 'scs' => 'application/scvp-cv-response',\n 'scss' => 'text/x-scss',\n 'scurl' => 'text/vnd.curl.scurl',\n 'sda' => 'application/vnd.stardivision.draw',\n 'sdc' => 'application/vnd.stardivision.calc',\n 'sdd' => 'application/vnd.stardivision.impress',\n 'sdkd' => 'application/vnd.solent.sdkm+xml',\n 'sdkm' => 'application/vnd.solent.sdkm+xml',\n 'sdp' => 'application/sdp',\n 'sdw' => 'application/vnd.stardivision.writer',\n 'sea' => 'application/octet-stream',\n 'see' => 'application/vnd.seemail',\n 'seed' => 'application/vnd.fdsn.seed',\n 'sema' => 'application/vnd.sema',\n 'semd' => 'application/vnd.semd',\n 'semf' => 'application/vnd.semf',\n 'senmlx' => 'application/senml+xml',\n 'sensmlx' => 'application/sensml+xml',\n 'ser' => 'application/java-serialized-object',\n 'setpay' => 'application/set-payment-initiation',\n 'setreg' => 'application/set-registration-initiation',\n 'sfd-hdstx' => 'application/vnd.hydrostatix.sof-data',\n 'sfs' => 'application/vnd.spotfire.sfs',\n 'sfv' => 'text/x-sfv',\n 'sgi' => 'image/sgi',\n 'sgl' => 'application/vnd.stardivision.writer-global',\n 'sgm' => 'text/sgml',\n 'sgml' => 'text/sgml',\n 'sh' => 'application/x-sh',\n 'shar' => 'application/x-shar',\n 'shex' => 'text/shex',\n 'shf' => 'application/shf+xml',\n 'shtml' => 'text/html',\n 'sid' => 'image/x-mrsid-image',\n 'sieve' => 'application/sieve',\n 'sig' => 'application/pgp-signature',\n 'sil' => 'audio/silk',\n 'silo' => 'model/mesh',\n 'sis' => 'application/vnd.symbian.install',\n 'sisx' => 'application/vnd.symbian.install',\n 'sit' => 'application/x-stuffit',\n 'sitx' => 'application/x-stuffitx',\n 'siv' => 'application/sieve',\n 'skd' => 'application/vnd.koan',\n 'skm' => 'application/vnd.koan',\n 'skp' => 'application/vnd.koan',\n 'skt' => 'application/vnd.koan',\n 'sldm' => 'application/vnd.ms-powerpoint.slide.macroenabled.12',\n 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide',\n 'slim' => 'text/slim',\n 'slm' => 'text/slim',\n 'sls' => 'application/route-s-tsid+xml',\n 'slt' => 'application/vnd.epson.salt',\n 'sm' => 'application/vnd.stepmania.stepchart',\n 'smf' => 'application/vnd.stardivision.math',\n 'smi' => 'application/smil',\n 'smil' => 'application/smil',\n 'smv' => 'video/x-smv',\n 'smzip' => 'application/vnd.stepmania.package',\n 'snd' => 'audio/basic',\n 'snf' => 'application/x-font-snf',\n 'so' => 'application/octet-stream',\n 'spc' => 'application/x-pkcs7-certificates',\n 'spdx' => 'text/spdx',\n 'spf' => 'application/vnd.yamaha.smaf-phrase',\n 'spl' => 'application/x-futuresplash',\n 'spot' => 'text/vnd.in3d.spot',\n 'spp' => 'application/scvp-vp-response',\n 'spq' => 'application/scvp-vp-request',\n 'spx' => 'audio/ogg',\n 'sql' => 'application/x-sql',\n 'src' => 'application/x-wais-source',\n 'srt' => 'application/x-subrip',\n 'sru' => 'application/sru+xml',\n 'srx' => 'application/sparql-results+xml',\n 'ssdl' => 'application/ssdl+xml',\n 'sse' => 'application/vnd.kodak-descriptor',\n 'ssf' => 'application/vnd.epson.ssf',\n 'ssml' => 'application/ssml+xml',\n 'sst' => 'application/octet-stream',\n 'st' => 'application/vnd.sailingtracker.track',\n 'stc' => 'application/vnd.sun.xml.calc.template',\n 'std' => 'application/vnd.sun.xml.draw.template',\n 'step' => 'application/STEP',\n 'stf' => 'application/vnd.wt.stf',\n 'sti' => 'application/vnd.sun.xml.impress.template',\n 'stk' => 'application/hyperstudio',\n 'stl' => 'model/stl',\n 'stp' => 'application/STEP',\n 'stpx' => 'model/step+xml',\n 'stpxz' => 'model/step-xml+zip',\n 'stpz' => 'model/step+zip',\n 'str' => 'application/vnd.pg.format',\n 'stw' => 'application/vnd.sun.xml.writer.template',\n 'styl' => 'text/stylus',\n 'stylus' => 'text/stylus',\n 'sub' => 'text/vnd.dvb.subtitle',\n 'sus' => 'application/vnd.sus-calendar',\n 'susp' => 'application/vnd.sus-calendar',\n 'sv4cpio' => 'application/x-sv4cpio',\n 'sv4crc' => 'application/x-sv4crc',\n 'svc' => 'application/vnd.dvb.service',\n 'svd' => 'application/vnd.svd',\n 'svg' => 'image/svg+xml',\n 'svgz' => 'image/svg+xml',\n 'swa' => 'application/x-director',\n 'swf' => 'application/x-shockwave-flash',\n 'swi' => 'application/vnd.aristanetworks.swi',\n 'swidtag' => 'application/swid+xml',\n 'sxc' => 'application/vnd.sun.xml.calc',\n 'sxd' => 'application/vnd.sun.xml.draw',\n 'sxg' => 'application/vnd.sun.xml.writer.global',\n 'sxi' => 'application/vnd.sun.xml.impress',\n 'sxm' => 'application/vnd.sun.xml.math',\n 'sxw' => 'application/vnd.sun.xml.writer',\n 't' => 'text/troff',\n 't3' => 'application/x-t3vm-image',\n 't38' => 'image/t38',\n 'taglet' => 'application/vnd.mynfc',\n 'tao' => 'application/vnd.tao.intent-module-archive',\n 'tap' => 'image/vnd.tencent.tap',\n 'tar' => 'application/x-tar',\n 'tcap' => 'application/vnd.3gpp2.tcap',\n 'tcl' => 'application/x-tcl',\n 'td' => 'application/urc-targetdesc+xml',\n 'teacher' => 'application/vnd.smart.teacher',\n 'tei' => 'application/tei+xml',\n 'teicorpus' => 'application/tei+xml',\n 'tex' => 'application/x-tex',\n 'texi' => 'application/x-texinfo',\n 'texinfo' => 'application/x-texinfo',\n 'text' => 'text/plain',\n 'tfi' => 'application/thraud+xml',\n 'tfm' => 'application/x-tex-tfm',\n 'tfx' => 'image/tiff-fx',\n 'tga' => 'image/x-tga',\n 'tgz' => 'application/x-tar',\n 'thmx' => 'application/vnd.ms-officetheme',\n 'tif' => 'image/tiff',\n 'tiff' => 'image/tiff',\n 'tk' => 'application/x-tcl',\n 'tmo' => 'application/vnd.tmobile-livetv',\n 'toml' => 'application/toml',\n 'torrent' => 'application/x-bittorrent',\n 'tpl' => 'application/vnd.groove-tool-template',\n 'tpt' => 'application/vnd.trid.tpt',\n 'tr' => 'text/troff',\n 'tra' => 'application/vnd.trueapp',\n 'trig' => 'application/trig',\n 'trm' => 'application/x-msterminal',\n 'ts' => 'video/mp2t',\n 'tsd' => 'application/timestamped-data',\n 'tsv' => 'text/tab-separated-values',\n 'ttc' => 'font/collection',\n 'ttf' => 'font/ttf',\n 'ttl' => 'text/turtle',\n 'ttml' => 'application/ttml+xml',\n 'twd' => 'application/vnd.simtech-mindmapper',\n 'twds' => 'application/vnd.simtech-mindmapper',\n 'txd' => 'application/vnd.genomatix.tuxedo',\n 'txf' => 'application/vnd.mobius.txf',\n 'txt' => 'text/plain',\n 'u3d' => 'model/u3d',\n 'u8dsn' => 'message/global-delivery-status',\n 'u8hdr' => 'message/global-headers',\n 'u8mdn' => 'message/global-disposition-notification',\n 'u8msg' => 'message/global',\n 'u32' => 'application/x-authorware-bin',\n 'ubj' => 'application/ubjson',\n 'udeb' => 'application/x-debian-package',\n 'ufd' => 'application/vnd.ufdl',\n 'ufdl' => 'application/vnd.ufdl',\n 'ulx' => 'application/x-glulx',\n 'umj' => 'application/vnd.umajin',\n 'unityweb' => 'application/vnd.unity',\n 'uo' => 'application/vnd.uoml+xml',\n 'uoml' => 'application/vnd.uoml+xml',\n 'uri' => 'text/uri-list',\n 'uris' => 'text/uri-list',\n 'urls' => 'text/uri-list',\n 'usda' => 'model/vnd.usda',\n 'usdz' => 'model/vnd.usdz+zip',\n 'ustar' => 'application/x-ustar',\n 'utz' => 'application/vnd.uiq.theme',\n 'uu' => 'text/x-uuencode',\n 'uva' => 'audio/vnd.dece.audio',\n 'uvd' => 'application/vnd.dece.data',\n 'uvf' => 'application/vnd.dece.data',\n 'uvg' => 'image/vnd.dece.graphic',\n 'uvh' => 'video/vnd.dece.hd',\n 'uvi' => 'image/vnd.dece.graphic',\n 'uvm' => 'video/vnd.dece.mobile',\n 'uvp' => 'video/vnd.dece.pd',\n 'uvs' => 'video/vnd.dece.sd',\n 'uvt' => 'application/vnd.dece.ttml+xml',\n 'uvu' => 'video/vnd.uvvu.mp4',\n 'uvv' => 'video/vnd.dece.video',\n 'uvva' => 'audio/vnd.dece.audio',\n 'uvvd' => 'application/vnd.dece.data',\n 'uvvf' => 'application/vnd.dece.data',\n 'uvvg' => 'image/vnd.dece.graphic',\n 'uvvh' => 'video/vnd.dece.hd',\n 'uvvi' => 'image/vnd.dece.graphic',\n 'uvvm' => 'video/vnd.dece.mobile',\n 'uvvp' => 'video/vnd.dece.pd',\n 'uvvs' => 'video/vnd.dece.sd',\n 'uvvt' => 'application/vnd.dece.ttml+xml',\n 'uvvu' => 'video/vnd.uvvu.mp4',\n 'uvvv' => 'video/vnd.dece.video',\n 'uvvx' => 'application/vnd.dece.unspecified',\n 'uvvz' => 'application/vnd.dece.zip',\n 'uvx' => 'application/vnd.dece.unspecified',\n 'uvz' => 'application/vnd.dece.zip',\n 'vbox' => 'application/x-virtualbox-vbox',\n 'vbox-extpack' => 'application/x-virtualbox-vbox-extpack',\n 'vcard' => 'text/vcard',\n 'vcd' => 'application/x-cdlink',\n 'vcf' => 'text/x-vcard',\n 'vcg' => 'application/vnd.groove-vcard',\n 'vcs' => 'text/x-vcalendar',\n 'vcx' => 'application/vnd.vcx',\n 'vdi' => 'application/x-virtualbox-vdi',\n 'vds' => 'model/vnd.sap.vds',\n 'vhd' => 'application/x-virtualbox-vhd',\n 'vis' => 'application/vnd.visionary',\n 'viv' => 'video/vnd.vivo',\n 'vlc' => 'application/videolan',\n 'vmdk' => 'application/x-virtualbox-vmdk',\n 'vob' => 'video/x-ms-vob',\n 'vor' => 'application/vnd.stardivision.writer',\n 'vox' => 'application/x-authorware-bin',\n 'vrml' => 'model/vrml',\n 'vsd' => 'application/vnd.visio',\n 'vsf' => 'application/vnd.vsf',\n 'vss' => 'application/vnd.visio',\n 'vst' => 'application/vnd.visio',\n 'vsw' => 'application/vnd.visio',\n 'vtf' => 'image/vnd.valve.source.texture',\n 'vtt' => 'text/vtt',\n 'vtu' => 'model/vnd.vtu',\n 'vxml' => 'application/voicexml+xml',\n 'w3d' => 'application/x-director',\n 'wad' => 'application/x-doom',\n 'wadl' => 'application/vnd.sun.wadl+xml',\n 'war' => 'application/java-archive',\n 'wasm' => 'application/wasm',\n 'wav' => 'audio/x-wav',\n 'wax' => 'audio/x-ms-wax',\n 'wbmp' => 'image/vnd.wap.wbmp',\n 'wbs' => 'application/vnd.criticaltools.wbs+xml',\n 'wbxml' => 'application/wbxml',\n 'wcm' => 'application/vnd.ms-works',\n 'wdb' => 'application/vnd.ms-works',\n 'wdp' => 'image/vnd.ms-photo',\n 'weba' => 'audio/webm',\n 'webapp' => 'application/x-web-app-manifest+json',\n 'webm' => 'video/webm',\n 'webmanifest' => 'application/manifest+json',\n 'webp' => 'image/webp',\n 'wg' => 'application/vnd.pmi.widget',\n 'wgsl' => 'text/wgsl',\n 'wgt' => 'application/widget',\n 'wif' => 'application/watcherinfo+xml',\n 'wks' => 'application/vnd.ms-works',\n 'wm' => 'video/x-ms-wm',\n 'wma' => 'audio/x-ms-wma',\n 'wmd' => 'application/x-ms-wmd',\n 'wmf' => 'image/wmf',\n 'wml' => 'text/vnd.wap.wml',\n 'wmlc' => 'application/wmlc',\n 'wmls' => 'text/vnd.wap.wmlscript',\n 'wmlsc' => 'application/vnd.wap.wmlscriptc',\n 'wmv' => 'video/x-ms-wmv',\n 'wmx' => 'video/x-ms-wmx',\n 'wmz' => 'application/x-msmetafile',\n 'woff' => 'font/woff',\n 'woff2' => 'font/woff2',\n 'word' => 'application/msword',\n 'wpd' => 'application/vnd.wordperfect',\n 'wpl' => 'application/vnd.ms-wpl',\n 'wps' => 'application/vnd.ms-works',\n 'wqd' => 'application/vnd.wqd',\n 'wri' => 'application/x-mswrite',\n 'wrl' => 'model/vrml',\n 'wsc' => 'message/vnd.wfa.wsc',\n 'wsdl' => 'application/wsdl+xml',\n 'wspolicy' => 'application/wspolicy+xml',\n 'wtb' => 'application/vnd.webturbo',\n 'wvx' => 'video/x-ms-wvx',\n 'x3d' => 'model/x3d+xml',\n 'x3db' => 'model/x3d+fastinfoset',\n 'x3dbz' => 'model/x3d+binary',\n 'x3dv' => 'model/x3d-vrml',\n 'x3dvz' => 'model/x3d+vrml',\n 'x3dz' => 'model/x3d+xml',\n 'x32' => 'application/x-authorware-bin',\n 'x_b' => 'model/vnd.parasolid.transmit.binary',\n 'x_t' => 'model/vnd.parasolid.transmit.text',\n 'xaml' => 'application/xaml+xml',\n 'xap' => 'application/x-silverlight-app',\n 'xar' => 'application/vnd.xara',\n 'xav' => 'application/xcap-att+xml',\n 'xbap' => 'application/x-ms-xbap',\n 'xbd' => 'application/vnd.fujixerox.docuworks.binder',\n 'xbm' => 'image/x-xbitmap',\n 'xca' => 'application/xcap-caps+xml',\n 'xcs' => 'application/calendar+xml',\n 'xdf' => 'application/xcap-diff+xml',\n 'xdm' => 'application/vnd.syncml.dm+xml',\n 'xdp' => 'application/vnd.adobe.xdp+xml',\n 'xdssc' => 'application/dssc+xml',\n 'xdw' => 'application/vnd.fujixerox.docuworks',\n 'xel' => 'application/xcap-el+xml',\n 'xenc' => 'application/xenc+xml',\n 'xer' => 'application/patch-ops-error+xml',\n 'xfdf' => 'application/xfdf',\n 'xfdl' => 'application/vnd.xfdl',\n 'xht' => 'application/xhtml+xml',\n 'xhtm' => 'application/vnd.pwg-xhtml-print+xml',\n 'xhtml' => 'application/xhtml+xml',\n 'xhvml' => 'application/xv+xml',\n 'xif' => 'image/vnd.xiff',\n 'xl' => 'application/excel',\n 'xla' => 'application/vnd.ms-excel',\n 'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12',\n 'xlc' => 'application/vnd.ms-excel',\n 'xlf' => 'application/xliff+xml',\n 'xlm' => 'application/vnd.ms-excel',\n 'xls' => 'application/vnd.ms-excel',\n 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12',\n 'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12',\n 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'xlt' => 'application/vnd.ms-excel',\n 'xltm' => 'application/vnd.ms-excel.template.macroEnabled.12',\n 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n 'xlw' => 'application/vnd.ms-excel',\n 'xm' => 'audio/xm',\n 'xml' => 'application/xml',\n 'xns' => 'application/xcap-ns+xml',\n 'xo' => 'application/vnd.olpc-sugar',\n 'xop' => 'application/xop+xml',\n 'xpi' => 'application/x-xpinstall',\n 'xpl' => 'application/xproc+xml',\n 'xpm' => 'image/x-xpixmap',\n 'xpr' => 'application/vnd.is-xpr',\n 'xps' => 'application/vnd.ms-xpsdocument',\n 'xpw' => 'application/vnd.intercon.formnet',\n 'xpx' => 'application/vnd.intercon.formnet',\n 'xsd' => 'application/xml',\n 'xsf' => 'application/prs.xsf+xml',\n 'xsl' => 'application/xml',\n 'xslt' => 'application/xslt+xml',\n 'xsm' => 'application/vnd.syncml+xml',\n 'xspf' => 'application/xspf+xml',\n 'xul' => 'application/vnd.mozilla.xul+xml',\n 'xvm' => 'application/xv+xml',\n 'xvml' => 'application/xv+xml',\n 'xwd' => 'image/x-xwindowdump',\n 'xyz' => 'chemical/x-xyz',\n 'xz' => 'application/x-xz',\n 'yaml' => 'text/yaml',\n 'yang' => 'application/yang',\n 'yin' => 'application/yin+xml',\n 'yml' => 'text/yaml',\n 'ymp' => 'text/x-suse-ymp',\n 'z' => 'application/x-compress',\n 'z1' => 'application/x-zmachine',\n 'z2' => 'application/x-zmachine',\n 'z3' => 'application/x-zmachine',\n 'z4' => 'application/x-zmachine',\n 'z5' => 'application/x-zmachine',\n 'z6' => 'application/x-zmachine',\n 'z7' => 'application/x-zmachine',\n 'z8' => 'application/x-zmachine',\n 'zaz' => 'application/vnd.zzazz.deck+xml',\n 'zip' => 'application/zip',\n 'zir' => 'application/vnd.zul',\n 'zirz' => 'application/vnd.zul',\n 'zmm' => 'application/vnd.handheld-entertainment+xml',\n 'zsh' => 'text/x-scriptzsh',\n);
const EXTENSIONS_FOR_MIME_TYPES = array (\n 'application/andrew-inset' => \n array (\n 0 => 'ez',\n ),\n 'application/appinstaller' => \n array (\n 0 => 'appinstaller',\n ),\n 'application/applixware' => \n array (\n 0 => 'aw',\n ),\n 'application/appx' => \n array (\n 0 => 'appx',\n ),\n 'application/appxbundle' => \n array (\n 0 => 'appxbundle',\n ),\n 'application/atom+xml' => \n array (\n 0 => 'atom',\n ),\n 'application/atomcat+xml' => \n array (\n 0 => 'atomcat',\n ),\n 'application/atomdeleted+xml' => \n array (\n 0 => 'atomdeleted',\n ),\n 'application/atomsvc+xml' => \n array (\n 0 => 'atomsvc',\n ),\n 'application/atsc-dwd+xml' => \n array (\n 0 => 'dwd',\n ),\n 'application/atsc-held+xml' => \n array (\n 0 => 'held',\n ),\n 'application/atsc-rsat+xml' => \n array (\n 0 => 'rsat',\n ),\n 'application/automationml-aml+xml' => \n array (\n 0 => 'aml',\n ),\n 'application/automationml-amlx+zip' => \n array (\n 0 => 'amlx',\n ),\n 'application/bdoc' => \n array (\n 0 => 'bdoc',\n ),\n 'application/calendar+xml' => \n array (\n 0 => 'xcs',\n ),\n 'application/ccxml+xml' => \n array (\n 0 => 'ccxml',\n ),\n 'application/cdfx+xml' => \n array (\n 0 => 'cdfx',\n ),\n 'application/cdmi-capability' => \n array (\n 0 => 'cdmia',\n ),\n 'application/cdmi-container' => \n array (\n 0 => 'cdmic',\n ),\n 'application/cdmi-domain' => \n array (\n 0 => 'cdmid',\n ),\n 'application/cdmi-object' => \n array (\n 0 => 'cdmio',\n ),\n 'application/cdmi-queue' => \n array (\n 0 => 'cdmiq',\n ),\n 'application/cpl+xml' => \n array (\n 0 => 'cpl',\n ),\n 'application/cu-seeme' => \n array (\n 0 => 'cu',\n ),\n 'application/cwl' => \n array (\n 0 => 'cwl',\n ),\n 'application/dash+xml' => \n array (\n 0 => 'mpd',\n ),\n 'application/dash-patch+xml' => \n array (\n 0 => 'mpp',\n ),\n 'application/davmount+xml' => \n array (\n 0 => 'davmount',\n ),\n 'application/docbook+xml' => \n array (\n 0 => 'dbk',\n ),\n 'application/dssc+der' => \n array (\n 0 => 'dssc',\n ),\n 'application/dssc+xml' => \n array (\n 0 => 'xdssc',\n ),\n 'application/ecmascript' => \n array (\n 0 => 'ecma',\n ),\n 'application/emma+xml' => \n array (\n 0 => 'emma',\n ),\n 'application/emotionml+xml' => \n array (\n 0 => 'emotionml',\n ),\n 'application/epub+zip' => \n array (\n 0 => 'epub',\n ),\n 'application/exi' => \n array (\n 0 => 'exi',\n ),\n 'application/express' => \n array (\n 0 => 'exp',\n ),\n 'application/fdf' => \n array (\n 0 => 'fdf',\n ),\n 'application/fdt+xml' => \n array (\n 0 => 'fdt',\n ),\n 'application/font-tdpfr' => \n array (\n 0 => 'pfr',\n ),\n 'application/geo+json' => \n array (\n 0 => 'geojson',\n ),\n 'application/gml+xml' => \n array (\n 0 => 'gml',\n ),\n 'application/gpx+xml' => \n array (\n 0 => 'gpx',\n ),\n 'application/gxf' => \n array (\n 0 => 'gxf',\n ),\n 'application/gzip' => \n array (\n 0 => 'gz',\n 1 => 'gzip',\n ),\n 'application/hjson' => \n array (\n 0 => 'hjson',\n ),\n 'application/hyperstudio' => \n array (\n 0 => 'stk',\n ),\n 'application/inkml+xml' => \n array (\n 0 => 'ink',\n 1 => 'inkml',\n ),\n 'application/ipfix' => \n array (\n 0 => 'ipfix',\n ),\n 'application/its+xml' => \n array (\n 0 => 'its',\n ),\n 'application/java-archive' => \n array (\n 0 => 'jar',\n 1 => 'war',\n 2 => 'ear',\n ),\n 'application/java-serialized-object' => \n array (\n 0 => 'ser',\n ),\n 'application/java-vm' => \n array (\n 0 => 'class',\n ),\n 'application/javascript' => \n array (\n 0 => 'js',\n ),\n 'application/json' => \n array (\n 0 => 'json',\n 1 => 'map',\n ),\n 'application/json5' => \n array (\n 0 => 'json5',\n ),\n 'application/jsonml+json' => \n array (\n 0 => 'jsonml',\n ),\n 'application/ld+json' => \n array (\n 0 => 'jsonld',\n ),\n 'application/lgr+xml' => \n array (\n 0 => 'lgr',\n ),\n 'application/lost+xml' => \n array (\n 0 => 'lostxml',\n ),\n 'application/mac-binhex40' => \n array (\n 0 => 'hqx',\n ),\n 'application/mac-compactpro' => \n array (\n 0 => 'cpt',\n ),\n 'application/mads+xml' => \n array (\n 0 => 'mads',\n ),\n 'application/manifest+json' => \n array (\n 0 => 'webmanifest',\n ),\n 'application/marc' => \n array (\n 0 => 'mrc',\n ),\n 'application/marcxml+xml' => \n array (\n 0 => 'mrcx',\n ),\n 'application/mathematica' => \n array (\n 0 => 'ma',\n 1 => 'nb',\n 2 => 'mb',\n ),\n 'application/mathml+xml' => \n array (\n 0 => 'mathml',\n ),\n 'application/mbox' => \n array (\n 0 => 'mbox',\n ),\n 'application/media-policy-dataset+xml' => \n array (\n 0 => 'mpf',\n ),\n 'application/mediaservercontrol+xml' => \n array (\n 0 => 'mscml',\n ),\n 'application/metalink+xml' => \n array (\n 0 => 'metalink',\n ),\n 'application/metalink4+xml' => \n array (\n 0 => 'meta4',\n ),\n 'application/mets+xml' => \n array (\n 0 => 'mets',\n ),\n 'application/mmt-aei+xml' => \n array (\n 0 => 'maei',\n ),\n 'application/mmt-usd+xml' => \n array (\n 0 => 'musd',\n ),\n 'application/mods+xml' => \n array (\n 0 => 'mods',\n ),\n 'application/mp21' => \n array (\n 0 => 'm21',\n 1 => 'mp21',\n ),\n 'application/mp4' => \n array (\n 0 => 'mp4',\n 1 => 'mpg4',\n 2 => 'mp4s',\n 3 => 'm4p',\n ),\n 'application/msix' => \n array (\n 0 => 'msix',\n ),\n 'application/msixbundle' => \n array (\n 0 => 'msixbundle',\n ),\n 'application/msword' => \n array (\n 0 => 'doc',\n 1 => 'dot',\n 2 => 'word',\n ),\n 'application/mxf' => \n array (\n 0 => 'mxf',\n ),\n 'application/n-quads' => \n array (\n 0 => 'nq',\n ),\n 'application/n-triples' => \n array (\n 0 => 'nt',\n ),\n 'application/node' => \n array (\n 0 => 'cjs',\n ),\n 'application/octet-stream' => \n array (\n 0 => 'bin',\n 1 => 'dms',\n 2 => 'lrf',\n 3 => 'mar',\n 4 => 'so',\n 5 => 'dist',\n 6 => 'distz',\n 7 => 'pkg',\n 8 => 'bpk',\n 9 => 'dump',\n 10 => 'elc',\n 11 => 'deploy',\n 12 => 'exe',\n 13 => 'dll',\n 14 => 'deb',\n 15 => 'dmg',\n 16 => 'iso',\n 17 => 'img',\n 18 => 'msi',\n 19 => 'msp',\n 20 => 'msm',\n 21 => 'buffer',\n 22 => 'phar',\n 23 => 'lha',\n 24 => 'lzh',\n 25 => 'class',\n 26 => 'sea',\n 27 => 'dmn',\n 28 => 'bpmn',\n 29 => 'kdb',\n 30 => 'sst',\n 31 => 'csr',\n 32 => 'dst',\n 33 => 'pv',\n 34 => 'pxf',\n ),\n 'application/oda' => \n array (\n 0 => 'oda',\n ),\n 'application/oebps-package+xml' => \n array (\n 0 => 'opf',\n ),\n 'application/ogg' => \n array (\n 0 => 'ogx',\n ),\n 'application/omdoc+xml' => \n array (\n 0 => 'omdoc',\n ),\n 'application/onenote' => \n array (\n 0 => 'onetoc',\n 1 => 'onetoc2',\n 2 => 'onetmp',\n 3 => 'onepkg',\n ),\n 'application/oxps' => \n array (\n 0 => 'oxps',\n ),\n 'application/p2p-overlay+xml' => \n array (\n 0 => 'relo',\n ),\n 'application/patch-ops-error+xml' => \n array (\n 0 => 'xer',\n ),\n 'application/pdf' => \n array (\n 0 => 'pdf',\n 1 => 'ai',\n ),\n 'application/pgp-encrypted' => \n array (\n 0 => 'pgp',\n ),\n 'application/pgp-keys' => \n array (\n 0 => 'asc',\n ),\n 'application/pgp-signature' => \n array (\n 0 => 'sig',\n 1 => 'asc',\n ),\n 'application/pics-rules' => \n array (\n 0 => 'prf',\n ),\n 'application/pkcs10' => \n array (\n 0 => 'p10',\n ),\n 'application/pkcs7-mime' => \n array (\n 0 => 'p7m',\n 1 => 'p7c',\n ),\n 'application/pkcs7-signature' => \n array (\n 0 => 'p7s',\n ),\n 'application/pkcs8' => \n array (\n 0 => 'p8',\n ),\n 'application/pkix-attr-cert' => \n array (\n 0 => 'ac',\n ),\n 'application/pkix-cert' => \n array (\n 0 => 'cer',\n ),\n 'application/pkix-crl' => \n array (\n 0 => 'crl',\n ),\n 'application/pkix-pkipath' => \n array (\n 0 => 'pkipath',\n ),\n 'application/pkixcmp' => \n array (\n 0 => 'pki',\n ),\n 'application/pls+xml' => \n array (\n 0 => 'pls',\n ),\n 'application/postscript' => \n array (\n 0 => 'ai',\n 1 => 'eps',\n 2 => 'ps',\n ),\n 'application/provenance+xml' => \n array (\n 0 => 'provx',\n ),\n 'application/prs.cww' => \n array (\n 0 => 'cww',\n ),\n 'application/prs.xsf+xml' => \n array (\n 0 => 'xsf',\n ),\n 'application/pskc+xml' => \n array (\n 0 => 'pskcxml',\n ),\n 'application/raml+yaml' => \n array (\n 0 => 'raml',\n ),\n 'application/rdf+xml' => \n array (\n 0 => 'rdf',\n 1 => 'owl',\n ),\n 'application/reginfo+xml' => \n array (\n 0 => 'rif',\n ),\n 'application/relax-ng-compact-syntax' => \n array (\n 0 => 'rnc',\n ),\n 'application/resource-lists+xml' => \n array (\n 0 => 'rl',\n ),\n 'application/resource-lists-diff+xml' => \n array (\n 0 => 'rld',\n ),\n 'application/rls-services+xml' => \n array (\n 0 => 'rs',\n ),\n 'application/route-apd+xml' => \n array (\n 0 => 'rapd',\n ),\n 'application/route-s-tsid+xml' => \n array (\n 0 => 'sls',\n ),\n 'application/route-usd+xml' => \n array (\n 0 => 'rusd',\n ),\n 'application/rpki-ghostbusters' => \n array (\n 0 => 'gbr',\n ),\n 'application/rpki-manifest' => \n array (\n 0 => 'mft',\n ),\n 'application/rpki-roa' => \n array (\n 0 => 'roa',\n ),\n 'application/rsd+xml' => \n array (\n 0 => 'rsd',\n ),\n 'application/rss+xml' => \n array (\n 0 => 'rss',\n ),\n 'application/rtf' => \n array (\n 0 => 'rtf',\n ),\n 'application/sbml+xml' => \n array (\n 0 => 'sbml',\n ),\n 'application/scvp-cv-request' => \n array (\n 0 => 'scq',\n ),\n 'application/scvp-cv-response' => \n array (\n 0 => 'scs',\n ),\n 'application/scvp-vp-request' => \n array (\n 0 => 'spq',\n ),\n 'application/scvp-vp-response' => \n array (\n 0 => 'spp',\n ),\n 'application/sdp' => \n array (\n 0 => 'sdp',\n ),\n 'application/senml+xml' => \n array (\n 0 => 'senmlx',\n ),\n 'application/sensml+xml' => \n array (\n 0 => 'sensmlx',\n ),\n 'application/set-payment-initiation' => \n array (\n 0 => 'setpay',\n ),\n 'application/set-registration-initiation' => \n array (\n 0 => 'setreg',\n ),\n 'application/shf+xml' => \n array (\n 0 => 'shf',\n ),\n 'application/sieve' => \n array (\n 0 => 'siv',\n 1 => 'sieve',\n ),\n 'application/smil+xml' => \n array (\n 0 => 'smi',\n 1 => 'smil',\n ),\n 'application/sparql-query' => \n array (\n 0 => 'rq',\n ),\n 'application/sparql-results+xml' => \n array (\n 0 => 'srx',\n ),\n 'application/sql' => \n array (\n 0 => 'sql',\n ),\n 'application/srgs' => \n array (\n 0 => 'gram',\n ),\n 'application/srgs+xml' => \n array (\n 0 => 'grxml',\n ),\n 'application/sru+xml' => \n array (\n 0 => 'sru',\n ),\n 'application/ssdl+xml' => \n array (\n 0 => 'ssdl',\n ),\n 'application/ssml+xml' => \n array (\n 0 => 'ssml',\n ),\n 'application/swid+xml' => \n array (\n 0 => 'swidtag',\n ),\n 'application/tei+xml' => \n array (\n 0 => 'tei',\n 1 => 'teicorpus',\n ),\n 'application/thraud+xml' => \n array (\n 0 => 'tfi',\n ),\n 'application/timestamped-data' => \n array (\n 0 => 'tsd',\n ),\n 'application/toml' => \n array (\n 0 => 'toml',\n ),\n 'application/trig' => \n array (\n 0 => 'trig',\n ),\n 'application/ttml+xml' => \n array (\n 0 => 'ttml',\n ),\n 'application/ubjson' => \n array (\n 0 => 'ubj',\n ),\n 'application/urc-ressheet+xml' => \n array (\n 0 => 'rsheet',\n ),\n 'application/urc-targetdesc+xml' => \n array (\n 0 => 'td',\n ),\n 'application/vnd.1000minds.decision-model+xml' => \n array (\n 0 => '1km',\n ),\n 'application/vnd.3gpp.pic-bw-large' => \n array (\n 0 => 'plb',\n ),\n 'application/vnd.3gpp.pic-bw-small' => \n array (\n 0 => 'psb',\n ),\n 'application/vnd.3gpp.pic-bw-var' => \n array (\n 0 => 'pvb',\n ),\n 'application/vnd.3gpp2.tcap' => \n array (\n 0 => 'tcap',\n ),\n 'application/vnd.3m.post-it-notes' => \n array (\n 0 => 'pwn',\n ),\n 'application/vnd.accpac.simply.aso' => \n array (\n 0 => 'aso',\n ),\n 'application/vnd.accpac.simply.imp' => \n array (\n 0 => 'imp',\n ),\n 'application/vnd.acucobol' => \n array (\n 0 => 'acu',\n ),\n 'application/vnd.acucorp' => \n array (\n 0 => 'atc',\n 1 => 'acutc',\n ),\n 'application/vnd.adobe.air-application-installer-package+zip' => \n array (\n 0 => 'air',\n ),\n 'application/vnd.adobe.formscentral.fcdt' => \n array (\n 0 => 'fcdt',\n ),\n 'application/vnd.adobe.fxp' => \n array (\n 0 => 'fxp',\n 1 => 'fxpl',\n ),\n 'application/vnd.adobe.xdp+xml' => \n array (\n 0 => 'xdp',\n ),\n 'application/vnd.adobe.xfdf' => \n array (\n 0 => 'xfdf',\n ),\n 'application/vnd.age' => \n array (\n 0 => 'age',\n ),\n 'application/vnd.ahead.space' => \n array (\n 0 => 'ahead',\n ),\n 'application/vnd.airzip.filesecure.azf' => \n array (\n 0 => 'azf',\n ),\n 'application/vnd.airzip.filesecure.azs' => \n array (\n 0 => 'azs',\n ),\n 'application/vnd.amazon.ebook' => \n array (\n 0 => 'azw',\n ),\n 'application/vnd.americandynamics.acc' => \n array (\n 0 => 'acc',\n ),\n 'application/vnd.amiga.ami' => \n array (\n 0 => 'ami',\n ),\n 'application/vnd.android.package-archive' => \n array (\n 0 => 'apk',\n ),\n 'application/vnd.anser-web-certificate-issue-initiation' => \n array (\n 0 => 'cii',\n ),\n 'application/vnd.anser-web-funds-transfer-initiation' => \n array (\n 0 => 'fti',\n ),\n 'application/vnd.antix.game-component' => \n array (\n 0 => 'atx',\n ),\n 'application/vnd.apple.installer+xml' => \n array (\n 0 => 'mpkg',\n ),\n 'application/vnd.apple.keynote' => \n array (\n 0 => 'key',\n ),\n 'application/vnd.apple.mpegurl' => \n array (\n 0 => 'm3u8',\n ),\n 'application/vnd.apple.numbers' => \n array (\n 0 => 'numbers',\n ),\n 'application/vnd.apple.pages' => \n array (\n 0 => 'pages',\n ),\n 'application/vnd.apple.pkpass' => \n array (\n 0 => 'pkpass',\n ),\n 'application/vnd.aristanetworks.swi' => \n array (\n 0 => 'swi',\n ),\n 'application/vnd.astraea-software.iota' => \n array (\n 0 => 'iota',\n ),\n 'application/vnd.audiograph' => \n array (\n 0 => 'aep',\n ),\n 'application/vnd.balsamiq.bmml+xml' => \n array (\n 0 => 'bmml',\n ),\n 'application/vnd.blueice.multipass' => \n array (\n 0 => 'mpm',\n ),\n 'application/vnd.bmi' => \n array (\n 0 => 'bmi',\n ),\n 'application/vnd.businessobjects' => \n array (\n 0 => 'rep',\n ),\n 'application/vnd.chemdraw+xml' => \n array (\n 0 => 'cdxml',\n ),\n 'application/vnd.chipnuts.karaoke-mmd' => \n array (\n 0 => 'mmd',\n ),\n 'application/vnd.cinderella' => \n array (\n 0 => 'cdy',\n ),\n 'application/vnd.citationstyles.style+xml' => \n array (\n 0 => 'csl',\n ),\n 'application/vnd.claymore' => \n array (\n 0 => 'cla',\n ),\n 'application/vnd.cloanto.rp9' => \n array (\n 0 => 'rp9',\n ),\n 'application/vnd.clonk.c4group' => \n array (\n 0 => 'c4g',\n 1 => 'c4d',\n 2 => 'c4f',\n 3 => 'c4p',\n 4 => 'c4u',\n ),\n 'application/vnd.cluetrust.cartomobile-config' => \n array (\n 0 => 'c11amc',\n ),\n 'application/vnd.cluetrust.cartomobile-config-pkg' => \n array (\n 0 => 'c11amz',\n ),\n 'application/vnd.commonspace' => \n array (\n 0 => 'csp',\n ),\n 'application/vnd.contact.cmsg' => \n array (\n 0 => 'cdbcmsg',\n ),\n 'application/vnd.cosmocaller' => \n array (\n 0 => 'cmc',\n ),\n 'application/vnd.crick.clicker' => \n array (\n 0 => 'clkx',\n ),\n 'application/vnd.crick.clicker.keyboard' => \n array (\n 0 => 'clkk',\n ),\n 'application/vnd.crick.clicker.palette' => \n array (\n 0 => 'clkp',\n ),\n 'application/vnd.crick.clicker.template' => \n array (\n 0 => 'clkt',\n ),\n 'application/vnd.crick.clicker.wordbank' => \n array (\n 0 => 'clkw',\n ),\n 'application/vnd.criticaltools.wbs+xml' => \n array (\n 0 => 'wbs',\n ),\n 'application/vnd.ctc-posml' => \n array (\n 0 => 'pml',\n ),\n 'application/vnd.cups-ppd' => \n array (\n 0 => 'ppd',\n ),\n 'application/vnd.curl.car' => \n array (\n 0 => 'car',\n ),\n 'application/vnd.curl.pcurl' => \n array (\n 0 => 'pcurl',\n ),\n 'application/vnd.dart' => \n array (\n 0 => 'dart',\n ),\n 'application/vnd.data-vision.rdz' => \n array (\n 0 => 'rdz',\n ),\n 'application/vnd.dbf' => \n array (\n 0 => 'dbf',\n ),\n 'application/vnd.dece.data' => \n array (\n 0 => 'uvf',\n 1 => 'uvvf',\n 2 => 'uvd',\n 3 => 'uvvd',\n ),\n 'application/vnd.dece.ttml+xml' => \n array (\n 0 => 'uvt',\n 1 => 'uvvt',\n ),\n 'application/vnd.dece.unspecified' => \n array (\n 0 => 'uvx',\n 1 => 'uvvx',\n ),\n 'application/vnd.dece.zip' => \n array (\n 0 => 'uvz',\n 1 => 'uvvz',\n ),\n 'application/vnd.denovo.fcselayout-link' => \n array (\n 0 => 'fe_launch',\n ),\n 'application/vnd.dna' => \n array (\n 0 => 'dna',\n ),\n 'application/vnd.dolby.mlp' => \n array (\n 0 => 'mlp',\n ),\n 'application/vnd.dpgraph' => \n array (\n 0 => 'dpg',\n ),\n 'application/vnd.dreamfactory' => \n array (\n 0 => 'dfac',\n ),\n 'application/vnd.ds-keypoint' => \n array (\n 0 => 'kpxx',\n ),\n 'application/vnd.dvb.ait' => \n array (\n 0 => 'ait',\n ),\n 'application/vnd.dvb.service' => \n array (\n 0 => 'svc',\n ),\n 'application/vnd.dynageo' => \n array (\n 0 => 'geo',\n ),\n 'application/vnd.ecowin.chart' => \n array (\n 0 => 'mag',\n ),\n 'application/vnd.enliven' => \n array (\n 0 => 'nml',\n ),\n 'application/vnd.epson.esf' => \n array (\n 0 => 'esf',\n ),\n 'application/vnd.epson.msf' => \n array (\n 0 => 'msf',\n ),\n 'application/vnd.epson.quickanime' => \n array (\n 0 => 'qam',\n ),\n 'application/vnd.epson.salt' => \n array (\n 0 => 'slt',\n ),\n 'application/vnd.epson.ssf' => \n array (\n 0 => 'ssf',\n ),\n 'application/vnd.eszigno3+xml' => \n array (\n 0 => 'es3',\n 1 => 'et3',\n ),\n 'application/vnd.ezpix-album' => \n array (\n 0 => 'ez2',\n ),\n 'application/vnd.ezpix-package' => \n array (\n 0 => 'ez3',\n ),\n 'application/vnd.fdf' => \n array (\n 0 => 'fdf',\n ),\n 'application/vnd.fdsn.mseed' => \n array (\n 0 => 'mseed',\n ),\n 'application/vnd.fdsn.seed' => \n array (\n 0 => 'seed',\n 1 => 'dataless',\n ),\n 'application/vnd.flographit' => \n array (\n 0 => 'gph',\n ),\n 'application/vnd.fluxtime.clip' => \n array (\n 0 => 'ftc',\n ),\n 'application/vnd.framemaker' => \n array (\n 0 => 'fm',\n 1 => 'frame',\n 2 => 'maker',\n 3 => 'book',\n ),\n 'application/vnd.frogans.fnc' => \n array (\n 0 => 'fnc',\n ),\n 'application/vnd.frogans.ltf' => \n array (\n 0 => 'ltf',\n ),\n 'application/vnd.fsc.weblaunch' => \n array (\n 0 => 'fsc',\n ),\n 'application/vnd.fujitsu.oasys' => \n array (\n 0 => 'oas',\n ),\n 'application/vnd.fujitsu.oasys2' => \n array (\n 0 => 'oa2',\n ),\n 'application/vnd.fujitsu.oasys3' => \n array (\n 0 => 'oa3',\n ),\n 'application/vnd.fujitsu.oasysgp' => \n array (\n 0 => 'fg5',\n ),\n 'application/vnd.fujitsu.oasysprs' => \n array (\n 0 => 'bh2',\n ),\n 'application/vnd.fujixerox.ddd' => \n array (\n 0 => 'ddd',\n ),\n 'application/vnd.fujixerox.docuworks' => \n array (\n 0 => 'xdw',\n ),\n 'application/vnd.fujixerox.docuworks.binder' => \n array (\n 0 => 'xbd',\n ),\n 'application/vnd.fuzzysheet' => \n array (\n 0 => 'fzs',\n ),\n 'application/vnd.genomatix.tuxedo' => \n array (\n 0 => 'txd',\n ),\n 'application/vnd.geogebra.file' => \n array (\n 0 => 'ggb',\n ),\n 'application/vnd.geogebra.tool' => \n array (\n 0 => 'ggt',\n ),\n 'application/vnd.geometry-explorer' => \n array (\n 0 => 'gex',\n 1 => 'gre',\n ),\n 'application/vnd.geonext' => \n array (\n 0 => 'gxt',\n ),\n 'application/vnd.geoplan' => \n array (\n 0 => 'g2w',\n ),\n 'application/vnd.geospace' => \n array (\n 0 => 'g3w',\n ),\n 'application/vnd.gmx' => \n array (\n 0 => 'gmx',\n ),\n 'application/vnd.google-apps.document' => \n array (\n 0 => 'gdoc',\n ),\n 'application/vnd.google-apps.presentation' => \n array (\n 0 => 'gslides',\n ),\n 'application/vnd.google-apps.spreadsheet' => \n array (\n 0 => 'gsheet',\n ),\n 'application/vnd.google-earth.kml+xml' => \n array (\n 0 => 'kml',\n ),\n 'application/vnd.google-earth.kmz' => \n array (\n 0 => 'kmz',\n ),\n 'application/vnd.grafeq' => \n array (\n 0 => 'gqf',\n 1 => 'gqs',\n ),\n 'application/vnd.groove-account' => \n array (\n 0 => 'gac',\n ),\n 'application/vnd.groove-help' => \n array (\n 0 => 'ghf',\n ),\n 'application/vnd.groove-identity-message' => \n array (\n 0 => 'gim',\n ),\n 'application/vnd.groove-injector' => \n array (\n 0 => 'grv',\n ),\n 'application/vnd.groove-tool-message' => \n array (\n 0 => 'gtm',\n ),\n 'application/vnd.groove-tool-template' => \n array (\n 0 => 'tpl',\n ),\n 'application/vnd.groove-vcard' => \n array (\n 0 => 'vcg',\n ),\n 'application/vnd.hal+xml' => \n array (\n 0 => 'hal',\n ),\n 'application/vnd.handheld-entertainment+xml' => \n array (\n 0 => 'zmm',\n ),\n 'application/vnd.hbci' => \n array (\n 0 => 'hbci',\n ),\n 'application/vnd.hhe.lesson-player' => \n array (\n 0 => 'les',\n ),\n 'application/vnd.hp-hpgl' => \n array (\n 0 => 'hpgl',\n ),\n 'application/vnd.hp-hpid' => \n array (\n 0 => 'hpid',\n ),\n 'application/vnd.hp-hps' => \n array (\n 0 => 'hps',\n ),\n 'application/vnd.hp-jlyt' => \n array (\n 0 => 'jlt',\n ),\n 'application/vnd.hp-pcl' => \n array (\n 0 => 'pcl',\n ),\n 'application/vnd.hp-pclxl' => \n array (\n 0 => 'pclxl',\n ),\n 'application/vnd.hydrostatix.sof-data' => \n array (\n 0 => 'sfd-hdstx',\n ),\n 'application/vnd.ibm.minipay' => \n array (\n 0 => 'mpy',\n ),\n 'application/vnd.ibm.modcap' => \n array (\n 0 => 'afp',\n 1 => 'listafp',\n 2 => 'list3820',\n ),\n 'application/vnd.ibm.rights-management' => \n array (\n 0 => 'irm',\n ),\n 'application/vnd.ibm.secure-container' => \n array (\n 0 => 'sc',\n ),\n 'application/vnd.iccprofile' => \n array (\n 0 => 'icc',\n 1 => 'icm',\n ),\n 'application/vnd.igloader' => \n array (\n 0 => 'igl',\n ),\n 'application/vnd.immervision-ivp' => \n array (\n 0 => 'ivp',\n ),\n 'application/vnd.immervision-ivu' => \n array (\n 0 => 'ivu',\n ),\n 'application/vnd.insors.igm' => \n array (\n 0 => 'igm',\n ),\n 'application/vnd.intercon.formnet' => \n array (\n 0 => 'xpw',\n 1 => 'xpx',\n ),\n 'application/vnd.intergeo' => \n array (\n 0 => 'i2g',\n ),\n 'application/vnd.intu.qbo' => \n array (\n 0 => 'qbo',\n ),\n 'application/vnd.intu.qfx' => \n array (\n 0 => 'qfx',\n ),\n 'application/vnd.ipunplugged.rcprofile' => \n array (\n 0 => 'rcprofile',\n ),\n 'application/vnd.irepository.package+xml' => \n array (\n 0 => 'irp',\n ),\n 'application/vnd.is-xpr' => \n array (\n 0 => 'xpr',\n ),\n 'application/vnd.isac.fcs' => \n array (\n 0 => 'fcs',\n ),\n 'application/vnd.jam' => \n array (\n 0 => 'jam',\n ),\n 'application/vnd.jcp.javame.midlet-rms' => \n array (\n 0 => 'rms',\n ),\n 'application/vnd.jisp' => \n array (\n 0 => 'jisp',\n ),\n 'application/vnd.joost.joda-archive' => \n array (\n 0 => 'joda',\n ),\n 'application/vnd.kahootz' => \n array (\n 0 => 'ktz',\n 1 => 'ktr',\n ),\n 'application/vnd.kde.karbon' => \n array (\n 0 => 'karbon',\n ),\n 'application/vnd.kde.kchart' => \n array (\n 0 => 'chrt',\n ),\n 'application/vnd.kde.kformula' => \n array (\n 0 => 'kfo',\n ),\n 'application/vnd.kde.kivio' => \n array (\n 0 => 'flw',\n ),\n 'application/vnd.kde.kontour' => \n array (\n 0 => 'kon',\n ),\n 'application/vnd.kde.kpresenter' => \n array (\n 0 => 'kpr',\n 1 => 'kpt',\n ),\n 'application/vnd.kde.kspread' => \n array (\n 0 => 'ksp',\n ),\n 'application/vnd.kde.kword' => \n array (\n 0 => 'kwd',\n 1 => 'kwt',\n ),\n 'application/vnd.kenameaapp' => \n array (\n 0 => 'htke',\n ),\n 'application/vnd.kidspiration' => \n array (\n 0 => 'kia',\n ),\n 'application/vnd.kinar' => \n array (\n 0 => 'kne',\n 1 => 'knp',\n ),\n 'application/vnd.koan' => \n array (\n 0 => 'skp',\n 1 => 'skd',\n 2 => 'skt',\n 3 => 'skm',\n ),\n 'application/vnd.kodak-descriptor' => \n array (\n 0 => 'sse',\n ),\n 'application/vnd.las.las+xml' => \n array (\n 0 => 'lasxml',\n ),\n 'application/vnd.llamagraphics.life-balance.desktop' => \n array (\n 0 => 'lbd',\n ),\n 'application/vnd.llamagraphics.life-balance.exchange+xml' => \n array (\n 0 => 'lbe',\n ),\n 'application/vnd.lotus-1-2-3' => \n array (\n 0 => '123',\n ),\n 'application/vnd.lotus-approach' => \n array (\n 0 => 'apr',\n ),\n 'application/vnd.lotus-freelance' => \n array (\n 0 => 'pre',\n ),\n 'application/vnd.lotus-notes' => \n array (\n 0 => 'nsf',\n ),\n 'application/vnd.lotus-organizer' => \n array (\n 0 => 'org',\n ),\n 'application/vnd.lotus-screencam' => \n array (\n 0 => 'scm',\n ),\n 'application/vnd.lotus-wordpro' => \n array (\n 0 => 'lwp',\n ),\n 'application/vnd.macports.portpkg' => \n array (\n 0 => 'portpkg',\n ),\n 'application/vnd.mapbox-vector-tile' => \n array (\n 0 => 'mvt',\n ),\n 'application/vnd.mcd' => \n array (\n 0 => 'mcd',\n ),\n 'application/vnd.medcalcdata' => \n array (\n 0 => 'mc1',\n ),\n 'application/vnd.mediastation.cdkey' => \n array (\n 0 => 'cdkey',\n ),\n 'application/vnd.mfer' => \n array (\n 0 => 'mwf',\n ),\n 'application/vnd.mfmp' => \n array (\n 0 => 'mfm',\n ),\n 'application/vnd.micrografx.flo' => \n array (\n 0 => 'flo',\n ),\n 'application/vnd.micrografx.igx' => \n array (\n 0 => 'igx',\n ),\n 'application/vnd.mif' => \n array (\n 0 => 'mif',\n ),\n 'application/vnd.mobius.daf' => \n array (\n 0 => 'daf',\n ),\n 'application/vnd.mobius.dis' => \n array (\n 0 => 'dis',\n ),\n 'application/vnd.mobius.mbk' => \n array (\n 0 => 'mbk',\n ),\n 'application/vnd.mobius.mqy' => \n array (\n 0 => 'mqy',\n ),\n 'application/vnd.mobius.msl' => \n array (\n 0 => 'msl',\n ),\n 'application/vnd.mobius.plc' => \n array (\n 0 => 'plc',\n ),\n 'application/vnd.mobius.txf' => \n array (\n 0 => 'txf',\n ),\n 'application/vnd.mophun.application' => \n array (\n 0 => 'mpn',\n ),\n 'application/vnd.mophun.certificate' => \n array (\n 0 => 'mpc',\n ),\n 'application/vnd.mozilla.xul+xml' => \n array (\n 0 => 'xul',\n ),\n 'application/vnd.ms-artgalry' => \n array (\n 0 => 'cil',\n ),\n 'application/vnd.ms-cab-compressed' => \n array (\n 0 => 'cab',\n ),\n 'application/vnd.ms-excel' => \n array (\n 0 => 'xls',\n 1 => 'xlm',\n 2 => 'xla',\n 3 => 'xlc',\n 4 => 'xlt',\n 5 => 'xlw',\n ),\n 'application/vnd.ms-excel.addin.macroenabled.12' => \n array (\n 0 => 'xlam',\n ),\n 'application/vnd.ms-excel.sheet.binary.macroenabled.12' => \n array (\n 0 => 'xlsb',\n ),\n 'application/vnd.ms-excel.sheet.macroenabled.12' => \n array (\n 0 => 'xlsm',\n ),\n 'application/vnd.ms-excel.template.macroenabled.12' => \n array (\n 0 => 'xltm',\n ),\n 'application/vnd.ms-fontobject' => \n array (\n 0 => 'eot',\n ),\n 'application/vnd.ms-htmlhelp' => \n array (\n 0 => 'chm',\n ),\n 'application/vnd.ms-ims' => \n array (\n 0 => 'ims',\n ),\n 'application/vnd.ms-lrm' => \n array (\n 0 => 'lrm',\n ),\n 'application/vnd.ms-officetheme' => \n array (\n 0 => 'thmx',\n ),\n 'application/vnd.ms-outlook' => \n array (\n 0 => 'msg',\n ),\n 'application/vnd.ms-pki.seccat' => \n array (\n 0 => 'cat',\n ),\n 'application/vnd.ms-pki.stl' => \n array (\n 0 => 'stl',\n ),\n 'application/vnd.ms-powerpoint' => \n array (\n 0 => 'ppt',\n 1 => 'pps',\n 2 => 'pot',\n 3 => 'ppa',\n ),\n 'application/vnd.ms-powerpoint.addin.macroenabled.12' => \n array (\n 0 => 'ppam',\n ),\n 'application/vnd.ms-powerpoint.presentation.macroenabled.12' => \n array (\n 0 => 'pptm',\n ),\n 'application/vnd.ms-powerpoint.slide.macroenabled.12' => \n array (\n 0 => 'sldm',\n ),\n 'application/vnd.ms-powerpoint.slideshow.macroenabled.12' => \n array (\n 0 => 'ppsm',\n ),\n 'application/vnd.ms-powerpoint.template.macroenabled.12' => \n array (\n 0 => 'potm',\n ),\n 'application/vnd.ms-project' => \n array (\n 0 => 'mpp',\n 1 => 'mpt',\n ),\n 'application/vnd.ms-word.document.macroenabled.12' => \n array (\n 0 => 'docm',\n ),\n 'application/vnd.ms-word.template.macroenabled.12' => \n array (\n 0 => 'dotm',\n ),\n 'application/vnd.ms-works' => \n array (\n 0 => 'wps',\n 1 => 'wks',\n 2 => 'wcm',\n 3 => 'wdb',\n ),\n 'application/vnd.ms-wpl' => \n array (\n 0 => 'wpl',\n ),\n 'application/vnd.ms-xpsdocument' => \n array (\n 0 => 'xps',\n ),\n 'application/vnd.mseq' => \n array (\n 0 => 'mseq',\n ),\n 'application/vnd.musician' => \n array (\n 0 => 'mus',\n ),\n 'application/vnd.muvee.style' => \n array (\n 0 => 'msty',\n ),\n 'application/vnd.mynfc' => \n array (\n 0 => 'taglet',\n ),\n 'application/vnd.neurolanguage.nlu' => \n array (\n 0 => 'nlu',\n ),\n 'application/vnd.nitf' => \n array (\n 0 => 'ntf',\n 1 => 'nitf',\n ),\n 'application/vnd.noblenet-directory' => \n array (\n 0 => 'nnd',\n ),\n 'application/vnd.noblenet-sealer' => \n array (\n 0 => 'nns',\n ),\n 'application/vnd.noblenet-web' => \n array (\n 0 => 'nnw',\n ),\n 'application/vnd.nokia.n-gage.ac+xml' => \n array (\n 0 => 'ac',\n ),\n 'application/vnd.nokia.n-gage.data' => \n array (\n 0 => 'ngdat',\n ),\n 'application/vnd.nokia.n-gage.symbian.install' => \n array (\n 0 => 'n-gage',\n ),\n 'application/vnd.nokia.radio-preset' => \n array (\n 0 => 'rpst',\n ),\n 'application/vnd.nokia.radio-presets' => \n array (\n 0 => 'rpss',\n ),\n 'application/vnd.novadigm.edm' => \n array (\n 0 => 'edm',\n ),\n 'application/vnd.novadigm.edx' => \n array (\n 0 => 'edx',\n ),\n 'application/vnd.novadigm.ext' => \n array (\n 0 => 'ext',\n ),\n 'application/vnd.oasis.opendocument.chart' => \n array (\n 0 => 'odc',\n ),\n 'application/vnd.oasis.opendocument.chart-template' => \n array (\n 0 => 'otc',\n ),\n 'application/vnd.oasis.opendocument.database' => \n array (\n 0 => 'odb',\n ),\n 'application/vnd.oasis.opendocument.formula' => \n array (\n 0 => 'odf',\n ),\n 'application/vnd.oasis.opendocument.formula-template' => \n array (\n 0 => 'odft',\n ),\n 'application/vnd.oasis.opendocument.graphics' => \n array (\n 0 => 'odg',\n ),\n 'application/vnd.oasis.opendocument.graphics-template' => \n array (\n 0 => 'otg',\n ),\n 'application/vnd.oasis.opendocument.image' => \n array (\n 0 => 'odi',\n ),\n 'application/vnd.oasis.opendocument.image-template' => \n array (\n 0 => 'oti',\n ),\n 'application/vnd.oasis.opendocument.presentation' => \n array (\n 0 => 'odp',\n ),\n 'application/vnd.oasis.opendocument.presentation-template' => \n array (\n 0 => 'otp',\n ),\n 'application/vnd.oasis.opendocument.spreadsheet' => \n array (\n 0 => 'ods',\n ),\n 'application/vnd.oasis.opendocument.spreadsheet-template' => \n array (\n 0 => 'ots',\n ),\n 'application/vnd.oasis.opendocument.text' => \n array (\n 0 => 'odt',\n ),\n 'application/vnd.oasis.opendocument.text-master' => \n array (\n 0 => 'odm',\n ),\n 'application/vnd.oasis.opendocument.text-template' => \n array (\n 0 => 'ott',\n ),\n 'application/vnd.oasis.opendocument.text-web' => \n array (\n 0 => 'oth',\n ),\n 'application/vnd.olpc-sugar' => \n array (\n 0 => 'xo',\n ),\n 'application/vnd.oma.dd2+xml' => \n array (\n 0 => 'dd2',\n ),\n 'application/vnd.openblox.game+xml' => \n array (\n 0 => 'obgx',\n ),\n 'application/vnd.openofficeorg.extension' => \n array (\n 0 => 'oxt',\n ),\n 'application/vnd.openstreetmap.data+xml' => \n array (\n 0 => 'osm',\n ),\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation' => \n array (\n 0 => 'pptx',\n ),\n 'application/vnd.openxmlformats-officedocument.presentationml.slide' => \n array (\n 0 => 'sldx',\n ),\n 'application/vnd.openxmlformats-officedocument.presentationml.slideshow' => \n array (\n 0 => 'ppsx',\n ),\n 'application/vnd.openxmlformats-officedocument.presentationml.template' => \n array (\n 0 => 'potx',\n ),\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => \n array (\n 0 => 'xlsx',\n ),\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.template' => \n array (\n 0 => 'xltx',\n ),\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => \n array (\n 0 => 'docx',\n ),\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.template' => \n array (\n 0 => 'dotx',\n ),\n 'application/vnd.osgeo.mapguide.package' => \n array (\n 0 => 'mgp',\n ),\n 'application/vnd.osgi.dp' => \n array (\n 0 => 'dp',\n ),\n 'application/vnd.osgi.subsystem' => \n array (\n 0 => 'esa',\n ),\n 'application/vnd.palm' => \n array (\n 0 => 'pdb',\n 1 => 'pqa',\n 2 => 'oprc',\n ),\n 'application/vnd.pawaafile' => \n array (\n 0 => 'paw',\n ),\n 'application/vnd.pg.format' => \n array (\n 0 => 'str',\n ),\n 'application/vnd.pg.osasli' => \n array (\n 0 => 'ei6',\n ),\n 'application/vnd.picsel' => \n array (\n 0 => 'efif',\n ),\n 'application/vnd.pmi.widget' => \n array (\n 0 => 'wg',\n ),\n 'application/vnd.pocketlearn' => \n array (\n 0 => 'plf',\n ),\n 'application/vnd.powerbuilder6' => \n array (\n 0 => 'pbd',\n ),\n 'application/vnd.previewsystems.box' => \n array (\n 0 => 'box',\n ),\n 'application/vnd.proteus.magazine' => \n array (\n 0 => 'mgz',\n ),\n 'application/vnd.publishare-delta-tree' => \n array (\n 0 => 'qps',\n ),\n 'application/vnd.pvi.ptid1' => \n array (\n 0 => 'ptid',\n ),\n 'application/vnd.pwg-xhtml-print+xml' => \n array (\n 0 => 'xhtm',\n ),\n 'application/vnd.quark.quarkxpress' => \n array (\n 0 => 'qxd',\n 1 => 'qxt',\n 2 => 'qwd',\n 3 => 'qwt',\n 4 => 'qxl',\n 5 => 'qxb',\n ),\n 'application/vnd.rar' => \n array (\n 0 => 'rar',\n ),\n 'application/vnd.realvnc.bed' => \n array (\n 0 => 'bed',\n ),\n 'application/vnd.recordare.musicxml' => \n array (\n 0 => 'mxl',\n ),\n 'application/vnd.recordare.musicxml+xml' => \n array (\n 0 => 'musicxml',\n ),\n 'application/vnd.rig.cryptonote' => \n array (\n 0 => 'cryptonote',\n ),\n 'application/vnd.rim.cod' => \n array (\n 0 => 'cod',\n ),\n 'application/vnd.rn-realmedia' => \n array (\n 0 => 'rm',\n ),\n 'application/vnd.rn-realmedia-vbr' => \n array (\n 0 => 'rmvb',\n ),\n 'application/vnd.route66.link66+xml' => \n array (\n 0 => 'link66',\n ),\n 'application/vnd.sailingtracker.track' => \n array (\n 0 => 'st',\n ),\n 'application/vnd.seemail' => \n array (\n 0 => 'see',\n ),\n 'application/vnd.sema' => \n array (\n 0 => 'sema',\n ),\n 'application/vnd.semd' => \n array (\n 0 => 'semd',\n ),\n 'application/vnd.semf' => \n array (\n 0 => 'semf',\n ),\n 'application/vnd.shana.informed.formdata' => \n array (\n 0 => 'ifm',\n ),\n 'application/vnd.shana.informed.formtemplate' => \n array (\n 0 => 'itp',\n ),\n 'application/vnd.shana.informed.interchange' => \n array (\n 0 => 'iif',\n ),\n 'application/vnd.shana.informed.package' => \n array (\n 0 => 'ipk',\n ),\n 'application/vnd.simtech-mindmapper' => \n array (\n 0 => 'twd',\n 1 => 'twds',\n ),\n 'application/vnd.smaf' => \n array (\n 0 => 'mmf',\n ),\n 'application/vnd.smart.teacher' => \n array (\n 0 => 'teacher',\n ),\n 'application/vnd.software602.filler.form+xml' => \n array (\n 0 => 'fo',\n ),\n 'application/vnd.solent.sdkm+xml' => \n array (\n 0 => 'sdkm',\n 1 => 'sdkd',\n ),\n 'application/vnd.spotfire.dxp' => \n array (\n 0 => 'dxp',\n ),\n 'application/vnd.spotfire.sfs' => \n array (\n 0 => 'sfs',\n ),\n 'application/vnd.stardivision.calc' => \n array (\n 0 => 'sdc',\n ),\n 'application/vnd.stardivision.draw' => \n array (\n 0 => 'sda',\n ),\n 'application/vnd.stardivision.impress' => \n array (\n 0 => 'sdd',\n ),\n 'application/vnd.stardivision.math' => \n array (\n 0 => 'smf',\n ),\n 'application/vnd.stardivision.writer' => \n array (\n 0 => 'sdw',\n 1 => 'vor',\n ),\n 'application/vnd.stardivision.writer-global' => \n array (\n 0 => 'sgl',\n ),\n 'application/vnd.stepmania.package' => \n array (\n 0 => 'smzip',\n ),\n 'application/vnd.stepmania.stepchart' => \n array (\n 0 => 'sm',\n ),\n 'application/vnd.sun.wadl+xml' => \n array (\n 0 => 'wadl',\n ),\n 'application/vnd.sun.xml.calc' => \n array (\n 0 => 'sxc',\n ),\n 'application/vnd.sun.xml.calc.template' => \n array (\n 0 => 'stc',\n ),\n 'application/vnd.sun.xml.draw' => \n array (\n 0 => 'sxd',\n ),\n 'application/vnd.sun.xml.draw.template' => \n array (\n 0 => 'std',\n ),\n 'application/vnd.sun.xml.impress' => \n array (\n 0 => 'sxi',\n ),\n 'application/vnd.sun.xml.impress.template' => \n array (\n 0 => 'sti',\n ),\n 'application/vnd.sun.xml.math' => \n array (\n 0 => 'sxm',\n ),\n 'application/vnd.sun.xml.writer' => \n array (\n 0 => 'sxw',\n ),\n 'application/vnd.sun.xml.writer.global' => \n array (\n 0 => 'sxg',\n ),\n 'application/vnd.sun.xml.writer.template' => \n array (\n 0 => 'stw',\n ),\n 'application/vnd.sus-calendar' => \n array (\n 0 => 'sus',\n 1 => 'susp',\n ),\n 'application/vnd.svd' => \n array (\n 0 => 'svd',\n ),\n 'application/vnd.symbian.install' => \n array (\n 0 => 'sis',\n 1 => 'sisx',\n ),\n 'application/vnd.syncml+xml' => \n array (\n 0 => 'xsm',\n ),\n 'application/vnd.syncml.dm+wbxml' => \n array (\n 0 => 'bdm',\n ),\n 'application/vnd.syncml.dm+xml' => \n array (\n 0 => 'xdm',\n ),\n 'application/vnd.syncml.dmddf+xml' => \n array (\n 0 => 'ddf',\n ),\n 'application/vnd.tao.intent-module-archive' => \n array (\n 0 => 'tao',\n ),\n 'application/vnd.tcpdump.pcap' => \n array (\n 0 => 'pcap',\n 1 => 'cap',\n 2 => 'dmp',\n ),\n 'application/vnd.tmobile-livetv' => \n array (\n 0 => 'tmo',\n ),\n 'application/vnd.trid.tpt' => \n array (\n 0 => 'tpt',\n ),\n 'application/vnd.triscape.mxs' => \n array (\n 0 => 'mxs',\n ),\n 'application/vnd.trueapp' => \n array (\n 0 => 'tra',\n ),\n 'application/vnd.ufdl' => \n array (\n 0 => 'ufd',\n 1 => 'ufdl',\n ),\n 'application/vnd.uiq.theme' => \n array (\n 0 => 'utz',\n ),\n 'application/vnd.umajin' => \n array (\n 0 => 'umj',\n ),\n 'application/vnd.unity' => \n array (\n 0 => 'unityweb',\n ),\n 'application/vnd.uoml+xml' => \n array (\n 0 => 'uoml',\n 1 => 'uo',\n ),\n 'application/vnd.vcx' => \n array (\n 0 => 'vcx',\n ),\n 'application/vnd.visio' => \n array (\n 0 => 'vsd',\n 1 => 'vst',\n 2 => 'vss',\n 3 => 'vsw',\n ),\n 'application/vnd.visionary' => \n array (\n 0 => 'vis',\n ),\n 'application/vnd.vsf' => \n array (\n 0 => 'vsf',\n ),\n 'application/vnd.wap.wbxml' => \n array (\n 0 => 'wbxml',\n ),\n 'application/vnd.wap.wmlc' => \n array (\n 0 => 'wmlc',\n ),\n 'application/vnd.wap.wmlscriptc' => \n array (\n 0 => 'wmlsc',\n ),\n 'application/vnd.webturbo' => \n array (\n 0 => 'wtb',\n ),\n 'application/vnd.wolfram.player' => \n array (\n 0 => 'nbp',\n ),\n 'application/vnd.wordperfect' => \n array (\n 0 => 'wpd',\n ),\n 'application/vnd.wqd' => \n array (\n 0 => 'wqd',\n ),\n 'application/vnd.wt.stf' => \n array (\n 0 => 'stf',\n ),\n 'application/vnd.xara' => \n array (\n 0 => 'xar',\n ),\n 'application/vnd.xfdl' => \n array (\n 0 => 'xfdl',\n ),\n 'application/vnd.yamaha.hv-dic' => \n array (\n 0 => 'hvd',\n ),\n 'application/vnd.yamaha.hv-script' => \n array (\n 0 => 'hvs',\n ),\n 'application/vnd.yamaha.hv-voice' => \n array (\n 0 => 'hvp',\n ),\n 'application/vnd.yamaha.openscoreformat' => \n array (\n 0 => 'osf',\n ),\n 'application/vnd.yamaha.openscoreformat.osfpvg+xml' => \n array (\n 0 => 'osfpvg',\n ),\n 'application/vnd.yamaha.smaf-audio' => \n array (\n 0 => 'saf',\n ),\n 'application/vnd.yamaha.smaf-phrase' => \n array (\n 0 => 'spf',\n ),\n 'application/vnd.yellowriver-custom-menu' => \n array (\n 0 => 'cmp',\n ),\n 'application/vnd.zul' => \n array (\n 0 => 'zir',\n 1 => 'zirz',\n ),\n 'application/vnd.zzazz.deck+xml' => \n array (\n 0 => 'zaz',\n ),\n 'application/voicexml+xml' => \n array (\n 0 => 'vxml',\n ),\n 'application/wasm' => \n array (\n 0 => 'wasm',\n ),\n 'application/watcherinfo+xml' => \n array (\n 0 => 'wif',\n ),\n 'application/widget' => \n array (\n 0 => 'wgt',\n ),\n 'application/winhlp' => \n array (\n 0 => 'hlp',\n ),\n 'application/wsdl+xml' => \n array (\n 0 => 'wsdl',\n ),\n 'application/wspolicy+xml' => \n array (\n 0 => 'wspolicy',\n ),\n 'application/x-7z-compressed' => \n array (\n 0 => '7z',\n 1 => '7zip',\n ),\n 'application/x-abiword' => \n array (\n 0 => 'abw',\n ),\n 'application/x-ace-compressed' => \n array (\n 0 => 'ace',\n ),\n 'application/x-apple-diskimage' => \n array (\n 0 => 'dmg',\n ),\n 'application/x-arj' => \n array (\n 0 => 'arj',\n ),\n 'application/x-authorware-bin' => \n array (\n 0 => 'aab',\n 1 => 'x32',\n 2 => 'u32',\n 3 => 'vox',\n ),\n 'application/x-authorware-map' => \n array (\n 0 => 'aam',\n ),\n 'application/x-authorware-seg' => \n array (\n 0 => 'aas',\n ),\n 'application/x-bcpio' => \n array (\n 0 => 'bcpio',\n ),\n 'application/x-bdoc' => \n array (\n 0 => 'bdoc',\n ),\n 'application/x-bittorrent' => \n array (\n 0 => 'torrent',\n ),\n 'application/x-blorb' => \n array (\n 0 => 'blb',\n 1 => 'blorb',\n ),\n 'application/x-bzip' => \n array (\n 0 => 'bz',\n ),\n 'application/x-bzip2' => \n array (\n 0 => 'bz2',\n 1 => 'boz',\n ),\n 'application/x-cbr' => \n array (\n 0 => 'cbr',\n 1 => 'cba',\n 2 => 'cbt',\n 3 => 'cbz',\n 4 => 'cb7',\n ),\n 'application/x-cdlink' => \n array (\n 0 => 'vcd',\n ),\n 'application/x-cfs-compressed' => \n array (\n 0 => 'cfs',\n ),\n 'application/x-chat' => \n array (\n 0 => 'chat',\n ),\n 'application/x-chess-pgn' => \n array (\n 0 => 'pgn',\n ),\n 'application/x-chrome-extension' => \n array (\n 0 => 'crx',\n ),\n 'application/x-cocoa' => \n array (\n 0 => 'cco',\n ),\n 'application/x-conference' => \n array (\n 0 => 'nsc',\n ),\n 'application/x-cpio' => \n array (\n 0 => 'cpio',\n ),\n 'application/x-csh' => \n array (\n 0 => 'csh',\n ),\n 'application/x-debian-package' => \n array (\n 0 => 'deb',\n 1 => 'udeb',\n ),\n 'application/x-dgc-compressed' => \n array (\n 0 => 'dgc',\n ),\n 'application/x-director' => \n array (\n 0 => 'dir',\n 1 => 'dcr',\n 2 => 'dxr',\n 3 => 'cst',\n 4 => 'cct',\n 5 => 'cxt',\n 6 => 'w3d',\n 7 => 'fgd',\n 8 => 'swa',\n ),\n 'application/x-doom' => \n array (\n 0 => 'wad',\n ),\n 'application/x-dtbncx+xml' => \n array (\n 0 => 'ncx',\n ),\n 'application/x-dtbook+xml' => \n array (\n 0 => 'dtb',\n ),\n 'application/x-dtbresource+xml' => \n array (\n 0 => 'res',\n ),\n 'application/x-dvi' => \n array (\n 0 => 'dvi',\n ),\n 'application/x-envoy' => \n array (\n 0 => 'evy',\n ),\n 'application/x-eva' => \n array (\n 0 => 'eva',\n ),\n 'application/x-font-bdf' => \n array (\n 0 => 'bdf',\n ),\n 'application/x-font-ghostscript' => \n array (\n 0 => 'gsf',\n ),\n 'application/x-font-linux-psf' => \n array (\n 0 => 'psf',\n ),\n 'application/x-font-pcf' => \n array (\n 0 => 'pcf',\n ),\n 'application/x-font-snf' => \n array (\n 0 => 'snf',\n ),\n 'application/x-font-type1' => \n array (\n 0 => 'pfa',\n 1 => 'pfb',\n 2 => 'pfm',\n 3 => 'afm',\n ),\n 'application/x-freearc' => \n array (\n 0 => 'arc',\n ),\n 'application/x-futuresplash' => \n array (\n 0 => 'spl',\n ),\n 'application/x-gca-compressed' => \n array (\n 0 => 'gca',\n ),\n 'application/x-glulx' => \n array (\n 0 => 'ulx',\n ),\n 'application/x-gnumeric' => \n array (\n 0 => 'gnumeric',\n ),\n 'application/x-gramps-xml' => \n array (\n 0 => 'gramps',\n ),\n 'application/x-gtar' => \n array (\n 0 => 'gtar',\n ),\n 'application/x-hdf' => \n array (\n 0 => 'hdf',\n ),\n 'application/x-httpd-php' => \n array (\n 0 => 'php',\n 1 => 'php4',\n 2 => 'php3',\n 3 => 'phtml',\n ),\n 'application/x-install-instructions' => \n array (\n 0 => 'install',\n ),\n 'application/x-iso9660-image' => \n array (\n 0 => 'iso',\n ),\n 'application/x-iwork-keynote-sffkey' => \n array (\n 0 => 'key',\n ),\n 'application/x-iwork-numbers-sffnumbers' => \n array (\n 0 => 'numbers',\n ),\n 'application/x-iwork-pages-sffpages' => \n array (\n 0 => 'pages',\n ),\n 'application/x-java-archive-diff' => \n array (\n 0 => 'jardiff',\n ),\n 'application/x-java-jnlp-file' => \n array (\n 0 => 'jnlp',\n ),\n 'application/x-keepass2' => \n array (\n 0 => 'kdbx',\n ),\n 'application/x-latex' => \n array (\n 0 => 'latex',\n ),\n 'application/x-lua-bytecode' => \n array (\n 0 => 'luac',\n ),\n 'application/x-lzh-compressed' => \n array (\n 0 => 'lzh',\n 1 => 'lha',\n ),\n 'application/x-makeself' => \n array (\n 0 => 'run',\n ),\n 'application/x-mie' => \n array (\n 0 => 'mie',\n ),\n 'application/x-mobipocket-ebook' => \n array (\n 0 => 'prc',\n 1 => 'mobi',\n ),\n 'application/x-ms-application' => \n array (\n 0 => 'application',\n ),\n 'application/x-ms-shortcut' => \n array (\n 0 => 'lnk',\n ),\n 'application/x-ms-wmd' => \n array (\n 0 => 'wmd',\n ),\n 'application/x-ms-wmz' => \n array (\n 0 => 'wmz',\n ),\n 'application/x-ms-xbap' => \n array (\n 0 => 'xbap',\n ),\n 'application/x-msaccess' => \n array (\n 0 => 'mdb',\n ),\n 'application/x-msbinder' => \n array (\n 0 => 'obd',\n ),\n 'application/x-mscardfile' => \n array (\n 0 => 'crd',\n ),\n 'application/x-msclip' => \n array (\n 0 => 'clp',\n ),\n 'application/x-msdos-program' => \n array (\n 0 => 'exe',\n ),\n 'application/x-msdownload' => \n array (\n 0 => 'exe',\n 1 => 'dll',\n 2 => 'com',\n 3 => 'bat',\n 4 => 'msi',\n ),\n 'application/x-msmediaview' => \n array (\n 0 => 'mvb',\n 1 => 'm13',\n 2 => 'm14',\n ),\n 'application/x-msmetafile' => \n array (\n 0 => 'wmf',\n 1 => 'wmz',\n 2 => 'emf',\n 3 => 'emz',\n ),\n 'application/x-msmoney' => \n array (\n 0 => 'mny',\n ),\n 'application/x-mspublisher' => \n array (\n 0 => 'pub',\n ),\n 'application/x-msschedule' => \n array (\n 0 => 'scd',\n ),\n 'application/x-msterminal' => \n array (\n 0 => 'trm',\n ),\n 'application/x-mswrite' => \n array (\n 0 => 'wri',\n ),\n 'application/x-netcdf' => \n array (\n 0 => 'nc',\n 1 => 'cdf',\n ),\n 'application/x-ns-proxy-autoconfig' => \n array (\n 0 => 'pac',\n ),\n 'application/x-nzb' => \n array (\n 0 => 'nzb',\n ),\n 'application/x-perl' => \n array (\n 0 => 'pl',\n 1 => 'pm',\n ),\n 'application/x-pilot' => \n array (\n 0 => 'prc',\n 1 => 'pdb',\n ),\n 'application/x-pkcs12' => \n array (\n 0 => 'p12',\n 1 => 'pfx',\n ),\n 'application/x-pkcs7-certificates' => \n array (\n 0 => 'p7b',\n 1 => 'spc',\n ),\n 'application/x-pkcs7-certreqresp' => \n array (\n 0 => 'p7r',\n ),\n 'application/x-rar-compressed' => \n array (\n 0 => 'rar',\n ),\n 'application/x-redhat-package-manager' => \n array (\n 0 => 'rpm',\n ),\n 'application/x-research-info-systems' => \n array (\n 0 => 'ris',\n ),\n 'application/x-sea' => \n array (\n 0 => 'sea',\n ),\n 'application/x-sh' => \n array (\n 0 => 'sh',\n ),\n 'application/x-shar' => \n array (\n 0 => 'shar',\n ),\n 'application/x-shockwave-flash' => \n array (\n 0 => 'swf',\n ),\n 'application/x-silverlight-app' => \n array (\n 0 => 'xap',\n ),\n 'application/x-sql' => \n array (\n 0 => 'sql',\n ),\n 'application/x-stuffit' => \n array (\n 0 => 'sit',\n ),\n 'application/x-stuffitx' => \n array (\n 0 => 'sitx',\n ),\n 'application/x-subrip' => \n array (\n 0 => 'srt',\n ),\n 'application/x-sv4cpio' => \n array (\n 0 => 'sv4cpio',\n ),\n 'application/x-sv4crc' => \n array (\n 0 => 'sv4crc',\n ),\n 'application/x-t3vm-image' => \n array (\n 0 => 't3',\n ),\n 'application/x-tads' => \n array (\n 0 => 'gam',\n ),\n 'application/x-tar' => \n array (\n 0 => 'tar',\n 1 => 'tgz',\n ),\n 'application/x-tcl' => \n array (\n 0 => 'tcl',\n 1 => 'tk',\n ),\n 'application/x-tex' => \n array (\n 0 => 'tex',\n ),\n 'application/x-tex-tfm' => \n array (\n 0 => 'tfm',\n ),\n 'application/x-texinfo' => \n array (\n 0 => 'texinfo',\n 1 => 'texi',\n ),\n 'application/x-tgif' => \n array (\n 0 => 'obj',\n ),\n 'application/x-ustar' => \n array (\n 0 => 'ustar',\n ),\n 'application/x-virtualbox-hdd' => \n array (\n 0 => 'hdd',\n ),\n 'application/x-virtualbox-ova' => \n array (\n 0 => 'ova',\n ),\n 'application/x-virtualbox-ovf' => \n array (\n 0 => 'ovf',\n ),\n 'application/x-virtualbox-vbox' => \n array (\n 0 => 'vbox',\n ),\n 'application/x-virtualbox-vbox-extpack' => \n array (\n 0 => 'vbox-extpack',\n ),\n 'application/x-virtualbox-vdi' => \n array (\n 0 => 'vdi',\n ),\n 'application/x-virtualbox-vhd' => \n array (\n 0 => 'vhd',\n ),\n 'application/x-virtualbox-vmdk' => \n array (\n 0 => 'vmdk',\n ),\n 'application/x-wais-source' => \n array (\n 0 => 'src',\n ),\n 'application/x-web-app-manifest+json' => \n array (\n 0 => 'webapp',\n ),\n 'application/x-x509-ca-cert' => \n array (\n 0 => 'der',\n 1 => 'crt',\n 2 => 'pem',\n ),\n 'application/x-xfig' => \n array (\n 0 => 'fig',\n ),\n 'application/x-xliff+xml' => \n array (\n 0 => 'xlf',\n ),\n 'application/x-xpinstall' => \n array (\n 0 => 'xpi',\n ),\n 'application/x-xz' => \n array (\n 0 => 'xz',\n ),\n 'application/x-zmachine' => \n array (\n 0 => 'z1',\n 1 => 'z2',\n 2 => 'z3',\n 3 => 'z4',\n 4 => 'z5',\n 5 => 'z6',\n 6 => 'z7',\n 7 => 'z8',\n ),\n 'application/xaml+xml' => \n array (\n 0 => 'xaml',\n ),\n 'application/xcap-att+xml' => \n array (\n 0 => 'xav',\n ),\n 'application/xcap-caps+xml' => \n array (\n 0 => 'xca',\n ),\n 'application/xcap-diff+xml' => \n array (\n 0 => 'xdf',\n ),\n 'application/xcap-el+xml' => \n array (\n 0 => 'xel',\n ),\n 'application/xcap-ns+xml' => \n array (\n 0 => 'xns',\n ),\n 'application/xenc+xml' => \n array (\n 0 => 'xenc',\n ),\n 'application/xfdf' => \n array (\n 0 => 'xfdf',\n ),\n 'application/xhtml+xml' => \n array (\n 0 => 'xhtml',\n 1 => 'xht',\n ),\n 'application/xliff+xml' => \n array (\n 0 => 'xlf',\n ),\n 'application/xml' => \n array (\n 0 => 'xml',\n 1 => 'xsl',\n 2 => 'xsd',\n 3 => 'rng',\n ),\n 'application/xml-dtd' => \n array (\n 0 => 'dtd',\n ),\n 'application/xop+xml' => \n array (\n 0 => 'xop',\n ),\n 'application/xproc+xml' => \n array (\n 0 => 'xpl',\n ),\n 'application/xslt+xml' => \n array (\n 0 => 'xsl',\n 1 => 'xslt',\n ),\n 'application/xspf+xml' => \n array (\n 0 => 'xspf',\n ),\n 'application/xv+xml' => \n array (\n 0 => 'mxml',\n 1 => 'xhvml',\n 2 => 'xvml',\n 3 => 'xvm',\n ),\n 'application/yang' => \n array (\n 0 => 'yang',\n ),\n 'application/yin+xml' => \n array (\n 0 => 'yin',\n ),\n 'application/zip' => \n array (\n 0 => 'zip',\n ),\n 'audio/3gpp' => \n array (\n 0 => '3gpp',\n ),\n 'audio/aac' => \n array (\n 0 => 'adts',\n 1 => 'aac',\n ),\n 'audio/adpcm' => \n array (\n 0 => 'adp',\n ),\n 'audio/amr' => \n array (\n 0 => 'amr',\n ),\n 'audio/basic' => \n array (\n 0 => 'au',\n 1 => 'snd',\n ),\n 'audio/midi' => \n array (\n 0 => 'mid',\n 1 => 'midi',\n 2 => 'kar',\n 3 => 'rmi',\n ),\n 'audio/mobile-xmf' => \n array (\n 0 => 'mxmf',\n ),\n 'audio/mp3' => \n array (\n 0 => 'mp3',\n ),\n 'audio/mp4' => \n array (\n 0 => 'm4a',\n 1 => 'mp4a',\n ),\n 'audio/mpeg' => \n array (\n 0 => 'mpga',\n 1 => 'mp2',\n 2 => 'mp2a',\n 3 => 'mp3',\n 4 => 'm2a',\n 5 => 'm3a',\n ),\n 'audio/ogg' => \n array (\n 0 => 'oga',\n 1 => 'ogg',\n 2 => 'spx',\n 3 => 'opus',\n ),\n 'audio/s3m' => \n array (\n 0 => 's3m',\n ),\n 'audio/silk' => \n array (\n 0 => 'sil',\n ),\n 'audio/vnd.dece.audio' => \n array (\n 0 => 'uva',\n 1 => 'uvva',\n ),\n 'audio/vnd.digital-winds' => \n array (\n 0 => 'eol',\n ),\n 'audio/vnd.dra' => \n array (\n 0 => 'dra',\n ),\n 'audio/vnd.dts' => \n array (\n 0 => 'dts',\n ),\n 'audio/vnd.dts.hd' => \n array (\n 0 => 'dtshd',\n ),\n 'audio/vnd.lucent.voice' => \n array (\n 0 => 'lvp',\n ),\n 'audio/vnd.ms-playready.media.pya' => \n array (\n 0 => 'pya',\n ),\n 'audio/vnd.nuera.ecelp4800' => \n array (\n 0 => 'ecelp4800',\n ),\n 'audio/vnd.nuera.ecelp7470' => \n array (\n 0 => 'ecelp7470',\n ),\n 'audio/vnd.nuera.ecelp9600' => \n array (\n 0 => 'ecelp9600',\n ),\n 'audio/vnd.rip' => \n array (\n 0 => 'rip',\n ),\n 'audio/wav' => \n array (\n 0 => 'wav',\n ),\n 'audio/wave' => \n array (\n 0 => 'wav',\n ),\n 'audio/webm' => \n array (\n 0 => 'weba',\n ),\n 'audio/x-aac' => \n array (\n 0 => 'aac',\n ),\n 'audio/x-aiff' => \n array (\n 0 => 'aif',\n 1 => 'aiff',\n 2 => 'aifc',\n ),\n 'audio/x-caf' => \n array (\n 0 => 'caf',\n ),\n 'audio/x-flac' => \n array (\n 0 => 'flac',\n ),\n 'audio/x-m4a' => \n array (\n 0 => 'm4a',\n ),\n 'audio/x-matroska' => \n array (\n 0 => 'mka',\n ),\n 'audio/x-mpegurl' => \n array (\n 0 => 'm3u',\n ),\n 'audio/x-ms-wax' => \n array (\n 0 => 'wax',\n ),\n 'audio/x-ms-wma' => \n array (\n 0 => 'wma',\n ),\n 'audio/x-pn-realaudio' => \n array (\n 0 => 'ram',\n 1 => 'ra',\n 2 => 'rm',\n ),\n 'audio/x-pn-realaudio-plugin' => \n array (\n 0 => 'rmp',\n 1 => 'rpm',\n ),\n 'audio/x-realaudio' => \n array (\n 0 => 'ra',\n ),\n 'audio/x-wav' => \n array (\n 0 => 'wav',\n ),\n 'audio/xm' => \n array (\n 0 => 'xm',\n ),\n 'chemical/x-cdx' => \n array (\n 0 => 'cdx',\n ),\n 'chemical/x-cif' => \n array (\n 0 => 'cif',\n ),\n 'chemical/x-cmdf' => \n array (\n 0 => 'cmdf',\n ),\n 'chemical/x-cml' => \n array (\n 0 => 'cml',\n ),\n 'chemical/x-csml' => \n array (\n 0 => 'csml',\n ),\n 'chemical/x-xyz' => \n array (\n 0 => 'xyz',\n ),\n 'font/collection' => \n array (\n 0 => 'ttc',\n ),\n 'font/otf' => \n array (\n 0 => 'otf',\n ),\n 'font/ttf' => \n array (\n 0 => 'ttf',\n ),\n 'font/woff' => \n array (\n 0 => 'woff',\n ),\n 'font/woff2' => \n array (\n 0 => 'woff2',\n ),\n 'image/aces' => \n array (\n 0 => 'exr',\n ),\n 'image/apng' => \n array (\n 0 => 'apng',\n ),\n 'image/avci' => \n array (\n 0 => 'avci',\n ),\n 'image/avcs' => \n array (\n 0 => 'avcs',\n ),\n 'image/avif' => \n array (\n 0 => 'avif',\n ),\n 'image/bmp' => \n array (\n 0 => 'bmp',\n 1 => 'dib',\n ),\n 'image/cgm' => \n array (\n 0 => 'cgm',\n ),\n 'image/dicom-rle' => \n array (\n 0 => 'drle',\n ),\n 'image/dpx' => \n array (\n 0 => 'dpx',\n ),\n 'image/emf' => \n array (\n 0 => 'emf',\n ),\n 'image/fits' => \n array (\n 0 => 'fits',\n ),\n 'image/g3fax' => \n array (\n 0 => 'g3',\n ),\n 'image/gif' => \n array (\n 0 => 'gif',\n ),\n 'image/heic' => \n array (\n 0 => 'heic',\n ),\n 'image/heic-sequence' => \n array (\n 0 => 'heics',\n ),\n 'image/heif' => \n array (\n 0 => 'heif',\n ),\n 'image/heif-sequence' => \n array (\n 0 => 'heifs',\n ),\n 'image/hej2k' => \n array (\n 0 => 'hej2',\n ),\n 'image/hsj2' => \n array (\n 0 => 'hsj2',\n ),\n 'image/ief' => \n array (\n 0 => 'ief',\n ),\n 'image/jls' => \n array (\n 0 => 'jls',\n ),\n 'image/jp2' => \n array (\n 0 => 'jp2',\n 1 => 'jpg2',\n ),\n 'image/jpeg' => \n array (\n 0 => 'jpeg',\n 1 => 'jpg',\n 2 => 'jpe',\n ),\n 'image/jph' => \n array (\n 0 => 'jph',\n ),\n 'image/jphc' => \n array (\n 0 => 'jhc',\n ),\n 'image/jpm' => \n array (\n 0 => 'jpm',\n 1 => 'jpgm',\n ),\n 'image/jpx' => \n array (\n 0 => 'jpx',\n 1 => 'jpf',\n ),\n 'image/jxr' => \n array (\n 0 => 'jxr',\n ),\n 'image/jxra' => \n array (\n 0 => 'jxra',\n ),\n 'image/jxrs' => \n array (\n 0 => 'jxrs',\n ),\n 'image/jxs' => \n array (\n 0 => 'jxs',\n ),\n 'image/jxsc' => \n array (\n 0 => 'jxsc',\n ),\n 'image/jxsi' => \n array (\n 0 => 'jxsi',\n ),\n 'image/jxss' => \n array (\n 0 => 'jxss',\n ),\n 'image/ktx' => \n array (\n 0 => 'ktx',\n ),\n 'image/ktx2' => \n array (\n 0 => 'ktx2',\n ),\n 'image/png' => \n array (\n 0 => 'png',\n ),\n 'image/prs.btif' => \n array (\n 0 => 'btif',\n 1 => 'btf',\n ),\n 'image/prs.pti' => \n array (\n 0 => 'pti',\n ),\n 'image/sgi' => \n array (\n 0 => 'sgi',\n ),\n 'image/svg+xml' => \n array (\n 0 => 'svg',\n 1 => 'svgz',\n ),\n 'image/t38' => \n array (\n 0 => 't38',\n ),\n 'image/tiff' => \n array (\n 0 => 'tif',\n 1 => 'tiff',\n ),\n 'image/tiff-fx' => \n array (\n 0 => 'tfx',\n ),\n 'image/vnd.adobe.photoshop' => \n array (\n 0 => 'psd',\n ),\n 'image/vnd.airzip.accelerator.azv' => \n array (\n 0 => 'azv',\n ),\n 'image/vnd.dece.graphic' => \n array (\n 0 => 'uvi',\n 1 => 'uvvi',\n 2 => 'uvg',\n 3 => 'uvvg',\n ),\n 'image/vnd.djvu' => \n array (\n 0 => 'djvu',\n 1 => 'djv',\n ),\n 'image/vnd.dvb.subtitle' => \n array (\n 0 => 'sub',\n ),\n 'image/vnd.dwg' => \n array (\n 0 => 'dwg',\n ),\n 'image/vnd.dxf' => \n array (\n 0 => 'dxf',\n ),\n 'image/vnd.fastbidsheet' => \n array (\n 0 => 'fbs',\n ),\n 'image/vnd.fpx' => \n array (\n 0 => 'fpx',\n ),\n 'image/vnd.fst' => \n array (\n 0 => 'fst',\n ),\n 'image/vnd.fujixerox.edmics-mmr' => \n array (\n 0 => 'mmr',\n ),\n 'image/vnd.fujixerox.edmics-rlc' => \n array (\n 0 => 'rlc',\n ),\n 'image/vnd.microsoft.icon' => \n array (\n 0 => 'ico',\n ),\n 'image/vnd.ms-dds' => \n array (\n 0 => 'dds',\n ),\n 'image/vnd.ms-modi' => \n array (\n 0 => 'mdi',\n ),\n 'image/vnd.ms-photo' => \n array (\n 0 => 'wdp',\n ),\n 'image/vnd.net-fpx' => \n array (\n 0 => 'npx',\n ),\n 'image/vnd.pco.b16' => \n array (\n 0 => 'b16',\n ),\n 'image/vnd.tencent.tap' => \n array (\n 0 => 'tap',\n ),\n 'image/vnd.valve.source.texture' => \n array (\n 0 => 'vtf',\n ),\n 'image/vnd.wap.wbmp' => \n array (\n 0 => 'wbmp',\n ),\n 'image/vnd.xiff' => \n array (\n 0 => 'xif',\n ),\n 'image/vnd.zbrush.pcx' => \n array (\n 0 => 'pcx',\n ),\n 'image/webp' => \n array (\n 0 => 'webp',\n ),\n 'image/wmf' => \n array (\n 0 => 'wmf',\n ),\n 'image/x-3ds' => \n array (\n 0 => '3ds',\n ),\n 'image/x-cmu-raster' => \n array (\n 0 => 'ras',\n ),\n 'image/x-cmx' => \n array (\n 0 => 'cmx',\n ),\n 'image/x-freehand' => \n array (\n 0 => 'fh',\n 1 => 'fhc',\n 2 => 'fh4',\n 3 => 'fh5',\n 4 => 'fh7',\n ),\n 'image/x-icon' => \n array (\n 0 => 'ico',\n ),\n 'image/x-jng' => \n array (\n 0 => 'jng',\n ),\n 'image/x-mrsid-image' => \n array (\n 0 => 'sid',\n ),\n 'image/x-ms-bmp' => \n array (\n 0 => 'bmp',\n ),\n 'image/x-pcx' => \n array (\n 0 => 'pcx',\n ),\n 'image/x-pict' => \n array (\n 0 => 'pic',\n 1 => 'pct',\n ),\n 'image/x-portable-anymap' => \n array (\n 0 => 'pnm',\n ),\n 'image/x-portable-bitmap' => \n array (\n 0 => 'pbm',\n ),\n 'image/x-portable-graymap' => \n array (\n 0 => 'pgm',\n ),\n 'image/x-portable-pixmap' => \n array (\n 0 => 'ppm',\n ),\n 'image/x-rgb' => \n array (\n 0 => 'rgb',\n ),\n 'image/x-tga' => \n array (\n 0 => 'tga',\n ),\n 'image/x-xbitmap' => \n array (\n 0 => 'xbm',\n ),\n 'image/x-xpixmap' => \n array (\n 0 => 'xpm',\n ),\n 'image/x-xwindowdump' => \n array (\n 0 => 'xwd',\n ),\n 'message/disposition-notification' => \n array (\n 0 => 'disposition-notification',\n ),\n 'message/global' => \n array (\n 0 => 'u8msg',\n ),\n 'message/global-delivery-status' => \n array (\n 0 => 'u8dsn',\n ),\n 'message/global-disposition-notification' => \n array (\n 0 => 'u8mdn',\n ),\n 'message/global-headers' => \n array (\n 0 => 'u8hdr',\n ),\n 'message/rfc822' => \n array (\n 0 => 'eml',\n 1 => 'mime',\n ),\n 'message/vnd.wfa.wsc' => \n array (\n 0 => 'wsc',\n ),\n 'model/3mf' => \n array (\n 0 => '3mf',\n ),\n 'model/gltf+json' => \n array (\n 0 => 'gltf',\n ),\n 'model/gltf-binary' => \n array (\n 0 => 'glb',\n ),\n 'model/iges' => \n array (\n 0 => 'igs',\n 1 => 'iges',\n ),\n 'model/jt' => \n array (\n 0 => 'jt',\n ),\n 'model/mesh' => \n array (\n 0 => 'msh',\n 1 => 'mesh',\n 2 => 'silo',\n ),\n 'model/mtl' => \n array (\n 0 => 'mtl',\n ),\n 'model/obj' => \n array (\n 0 => 'obj',\n ),\n 'model/prc' => \n array (\n 0 => 'prc',\n ),\n 'model/step+xml' => \n array (\n 0 => 'stpx',\n ),\n 'model/step+zip' => \n array (\n 0 => 'stpz',\n ),\n 'model/step-xml+zip' => \n array (\n 0 => 'stpxz',\n ),\n 'model/stl' => \n array (\n 0 => 'stl',\n ),\n 'model/u3d' => \n array (\n 0 => 'u3d',\n ),\n 'model/vnd.cld' => \n array (\n 0 => 'cld',\n ),\n 'model/vnd.collada+xml' => \n array (\n 0 => 'dae',\n ),\n 'model/vnd.dwf' => \n array (\n 0 => 'dwf',\n ),\n 'model/vnd.gdl' => \n array (\n 0 => 'gdl',\n ),\n 'model/vnd.gtw' => \n array (\n 0 => 'gtw',\n ),\n 'model/vnd.mts' => \n array (\n 0 => 'mts',\n ),\n 'model/vnd.opengex' => \n array (\n 0 => 'ogex',\n ),\n 'model/vnd.parasolid.transmit.binary' => \n array (\n 0 => 'x_b',\n ),\n 'model/vnd.parasolid.transmit.text' => \n array (\n 0 => 'x_t',\n ),\n 'model/vnd.pytha.pyox' => \n array (\n 0 => 'pyo',\n 1 => 'pyox',\n ),\n 'model/vnd.sap.vds' => \n array (\n 0 => 'vds',\n ),\n 'model/vnd.usda' => \n array (\n 0 => 'usda',\n ),\n 'model/vnd.usdz+zip' => \n array (\n 0 => 'usdz',\n ),\n 'model/vnd.valve.source.compiled-map' => \n array (\n 0 => 'bsp',\n ),\n 'model/vnd.vtu' => \n array (\n 0 => 'vtu',\n ),\n 'model/vrml' => \n array (\n 0 => 'wrl',\n 1 => 'vrml',\n ),\n 'model/x3d+binary' => \n array (\n 0 => 'x3db',\n 1 => 'x3dbz',\n ),\n 'model/x3d+fastinfoset' => \n array (\n 0 => 'x3db',\n ),\n 'model/x3d+vrml' => \n array (\n 0 => 'x3dv',\n 1 => 'x3dvz',\n ),\n 'model/x3d+xml' => \n array (\n 0 => 'x3d',\n 1 => 'x3dz',\n ),\n 'model/x3d-vrml' => \n array (\n 0 => 'x3dv',\n ),\n 'text/cache-manifest' => \n array (\n 0 => 'appcache',\n 1 => 'manifest',\n ),\n 'text/calendar' => \n array (\n 0 => 'ics',\n 1 => 'ifb',\n ),\n 'text/coffeescript' => \n array (\n 0 => 'coffee',\n 1 => 'litcoffee',\n ),\n 'text/css' => \n array (\n 0 => 'css',\n ),\n 'text/csv' => \n array (\n 0 => 'csv',\n ),\n 'text/html' => \n array (\n 0 => 'html',\n 1 => 'htm',\n 2 => 'shtml',\n ),\n 'text/jade' => \n array (\n 0 => 'jade',\n ),\n 'text/javascript' => \n array (\n 0 => 'js',\n 1 => 'mjs',\n ),\n 'text/jsx' => \n array (\n 0 => 'jsx',\n ),\n 'text/less' => \n array (\n 0 => 'less',\n ),\n 'text/markdown' => \n array (\n 0 => 'md',\n 1 => 'markdown',\n ),\n 'text/mathml' => \n array (\n 0 => 'mml',\n ),\n 'text/mdx' => \n array (\n 0 => 'mdx',\n ),\n 'text/n3' => \n array (\n 0 => 'n3',\n ),\n 'text/plain' => \n array (\n 0 => 'txt',\n 1 => 'text',\n 2 => 'conf',\n 3 => 'def',\n 4 => 'list',\n 5 => 'log',\n 6 => 'in',\n 7 => 'ini',\n 8 => 'm3u',\n ),\n 'text/prs.lines.tag' => \n array (\n 0 => 'dsc',\n ),\n 'text/richtext' => \n array (\n 0 => 'rtx',\n ),\n 'text/rtf' => \n array (\n 0 => 'rtf',\n ),\n 'text/sgml' => \n array (\n 0 => 'sgml',\n 1 => 'sgm',\n ),\n 'text/shex' => \n array (\n 0 => 'shex',\n ),\n 'text/slim' => \n array (\n 0 => 'slim',\n 1 => 'slm',\n ),\n 'text/spdx' => \n array (\n 0 => 'spdx',\n ),\n 'text/stylus' => \n array (\n 0 => 'stylus',\n 1 => 'styl',\n ),\n 'text/tab-separated-values' => \n array (\n 0 => 'tsv',\n ),\n 'text/troff' => \n array (\n 0 => 't',\n 1 => 'tr',\n 2 => 'roff',\n 3 => 'man',\n 4 => 'me',\n 5 => 'ms',\n ),\n 'text/turtle' => \n array (\n 0 => 'ttl',\n ),\n 'text/uri-list' => \n array (\n 0 => 'uri',\n 1 => 'uris',\n 2 => 'urls',\n ),\n 'text/vcard' => \n array (\n 0 => 'vcard',\n ),\n 'text/vnd.curl' => \n array (\n 0 => 'curl',\n ),\n 'text/vnd.curl.dcurl' => \n array (\n 0 => 'dcurl',\n ),\n 'text/vnd.curl.mcurl' => \n array (\n 0 => 'mcurl',\n ),\n 'text/vnd.curl.scurl' => \n array (\n 0 => 'scurl',\n ),\n 'text/vnd.dvb.subtitle' => \n array (\n 0 => 'sub',\n ),\n 'text/vnd.familysearch.gedcom' => \n array (\n 0 => 'ged',\n ),\n 'text/vnd.fly' => \n array (\n 0 => 'fly',\n ),\n 'text/vnd.fmi.flexstor' => \n array (\n 0 => 'flx',\n ),\n 'text/vnd.graphviz' => \n array (\n 0 => 'gv',\n ),\n 'text/vnd.in3d.3dml' => \n array (\n 0 => '3dml',\n ),\n 'text/vnd.in3d.spot' => \n array (\n 0 => 'spot',\n ),\n 'text/vnd.sun.j2me.app-descriptor' => \n array (\n 0 => 'jad',\n ),\n 'text/vnd.wap.wml' => \n array (\n 0 => 'wml',\n ),\n 'text/vnd.wap.wmlscript' => \n array (\n 0 => 'wmls',\n ),\n 'text/vtt' => \n array (\n 0 => 'vtt',\n ),\n 'text/wgsl' => \n array (\n 0 => 'wgsl',\n ),\n 'text/x-asm' => \n array (\n 0 => 's',\n 1 => 'asm',\n ),\n 'text/x-c' => \n array (\n 0 => 'c',\n 1 => 'cc',\n 2 => 'cxx',\n 3 => 'cpp',\n 4 => 'h',\n 5 => 'hh',\n 6 => 'dic',\n ),\n 'text/x-component' => \n array (\n 0 => 'htc',\n ),\n 'text/x-fortran' => \n array (\n 0 => 'f',\n 1 => 'for',\n 2 => 'f77',\n 3 => 'f90',\n ),\n 'text/x-handlebars-template' => \n array (\n 0 => 'hbs',\n ),\n 'text/x-java-source' => \n array (\n 0 => 'java',\n ),\n 'text/x-lua' => \n array (\n 0 => 'lua',\n ),\n 'text/x-markdown' => \n array (\n 0 => 'mkd',\n ),\n 'text/x-nfo' => \n array (\n 0 => 'nfo',\n ),\n 'text/x-opml' => \n array (\n 0 => 'opml',\n ),\n 'text/x-org' => \n array (\n 0 => 'org',\n ),\n 'text/x-pascal' => \n array (\n 0 => 'p',\n 1 => 'pas',\n ),\n 'text/x-processing' => \n array (\n 0 => 'pde',\n ),\n 'text/x-sass' => \n array (\n 0 => 'sass',\n ),\n 'text/x-scss' => \n array (\n 0 => 'scss',\n ),\n 'text/x-setext' => \n array (\n 0 => 'etx',\n ),\n 'text/x-sfv' => \n array (\n 0 => 'sfv',\n ),\n 'text/x-suse-ymp' => \n array (\n 0 => 'ymp',\n ),\n 'text/x-uuencode' => \n array (\n 0 => 'uu',\n ),\n 'text/x-vcalendar' => \n array (\n 0 => 'vcs',\n ),\n 'text/x-vcard' => \n array (\n 0 => 'vcf',\n ),\n 'text/xml' => \n array (\n 0 => 'xml',\n ),\n 'text/yaml' => \n array (\n 0 => 'yaml',\n 1 => 'yml',\n ),\n 'video/3gpp' => \n array (\n 0 => '3gp',\n 1 => '3gpp',\n ),\n 'video/3gpp2' => \n array (\n 0 => '3g2',\n ),\n 'video/h261' => \n array (\n 0 => 'h261',\n ),\n 'video/h263' => \n array (\n 0 => 'h263',\n ),\n 'video/h264' => \n array (\n 0 => 'h264',\n ),\n 'video/iso.segment' => \n array (\n 0 => 'm4s',\n ),\n 'video/jpeg' => \n array (\n 0 => 'jpgv',\n ),\n 'video/jpm' => \n array (\n 0 => 'jpm',\n 1 => 'jpgm',\n ),\n 'video/mj2' => \n array (\n 0 => 'mj2',\n 1 => 'mjp2',\n ),\n 'video/mp2t' => \n array (\n 0 => 'ts',\n ),\n 'video/mp4' => \n array (\n 0 => 'mp4',\n 1 => 'mp4v',\n 2 => 'mpg4',\n 3 => 'f4v',\n ),\n 'video/mpeg' => \n array (\n 0 => 'mpeg',\n 1 => 'mpg',\n 2 => 'mpe',\n 3 => 'm1v',\n 4 => 'm2v',\n ),\n 'video/ogg' => \n array (\n 0 => 'ogv',\n ),\n 'video/quicktime' => \n array (\n 0 => 'qt',\n 1 => 'mov',\n ),\n 'video/vnd.dece.hd' => \n array (\n 0 => 'uvh',\n 1 => 'uvvh',\n ),\n 'video/vnd.dece.mobile' => \n array (\n 0 => 'uvm',\n 1 => 'uvvm',\n ),\n 'video/vnd.dece.pd' => \n array (\n 0 => 'uvp',\n 1 => 'uvvp',\n ),\n 'video/vnd.dece.sd' => \n array (\n 0 => 'uvs',\n 1 => 'uvvs',\n ),\n 'video/vnd.dece.video' => \n array (\n 0 => 'uvv',\n 1 => 'uvvv',\n ),\n 'video/vnd.dvb.file' => \n array (\n 0 => 'dvb',\n ),\n 'video/vnd.fvt' => \n array (\n 0 => 'fvt',\n ),\n 'video/vnd.mpegurl' => \n array (\n 0 => 'mxu',\n 1 => 'm4u',\n ),\n 'video/vnd.ms-playready.media.pyv' => \n array (\n 0 => 'pyv',\n ),\n 'video/vnd.uvvu.mp4' => \n array (\n 0 => 'uvu',\n 1 => 'uvvu',\n ),\n 'video/vnd.vivo' => \n array (\n 0 => 'viv',\n ),\n 'video/webm' => \n array (\n 0 => 'webm',\n ),\n 'video/x-f4v' => \n array (\n 0 => 'f4v',\n ),\n 'video/x-fli' => \n array (\n 0 => 'fli',\n ),\n 'video/x-flv' => \n array (\n 0 => 'flv',\n ),\n 'video/x-m4v' => \n array (\n 0 => 'm4v',\n ),\n 'video/x-matroska' => \n array (\n 0 => 'mkv',\n 1 => 'mk3d',\n 2 => 'mks',\n ),\n 'video/x-mng' => \n array (\n 0 => 'mng',\n ),\n 'video/x-ms-asf' => \n array (\n 0 => 'asf',\n 1 => 'asx',\n ),\n 'video/x-ms-vob' => \n array (\n 0 => 'vob',\n ),\n 'video/x-ms-wm' => \n array (\n 0 => 'wm',\n ),\n 'video/x-ms-wmv' => \n array (\n 0 => 'wmv',\n ),\n 'video/x-ms-wmx' => \n array (\n 0 => 'wmx',\n ),\n 'video/x-ms-wvx' => \n array (\n 0 => 'wvx',\n ),\n 'video/x-msvideo' => \n array (\n 0 => 'avi',\n ),\n 'video/x-sgi-movie' => \n array (\n 0 => 'movie',\n ),\n 'video/x-smv' => \n array (\n 0 => 'smv',\n ),\n 'x-conference/x-cooltalk' => \n array (\n 0 => 'ice',\n ),\n 'application/x-photoshop' => \n array (\n 0 => 'psd',\n ),\n 'application/smil' => \n array (\n 0 => 'smi',\n 1 => 'smil',\n ),\n 'application/powerpoint' => \n array (\n 0 => 'ppt',\n ),\n 'application/vnd.ms-powerpoint.addin.macroEnabled.12' => \n array (\n 0 => 'ppam',\n ),\n 'application/vnd.ms-powerpoint.presentation.macroEnabled.12' => \n array (\n 0 => 'pptm',\n 1 => 'potm',\n ),\n 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12' => \n array (\n 0 => 'ppsm',\n ),\n 'application/wbxml' => \n array (\n 0 => 'wbxml',\n ),\n 'application/wmlc' => \n array (\n 0 => 'wmlc',\n ),\n 'application/x-httpd-php-source' => \n array (\n 0 => 'phps',\n ),\n 'application/x-compress' => \n array (\n 0 => 'z',\n ),\n 'application/x-rar' => \n array (\n 0 => 'rar',\n ),\n 'video/vnd.rn-realvideo' => \n array (\n 0 => 'rv',\n ),\n 'application/vnd.ms-word.template.macroEnabled.12' => \n array (\n 0 => 'docm',\n 1 => 'dotm',\n ),\n 'application/vnd.ms-excel.sheet.macroEnabled.12' => \n array (\n 0 => 'xlsm',\n ),\n 'application/vnd.ms-excel.template.macroEnabled.12' => \n array (\n 0 => 'xltm',\n ),\n 'application/vnd.ms-excel.addin.macroEnabled.12' => \n array (\n 0 => 'xlam',\n ),\n 'application/vnd.ms-excel.sheet.binary.macroEnabled.12' => \n array (\n 0 => 'xlsb',\n ),\n 'application/excel' => \n array (\n 0 => 'xl',\n ),\n 'application/x-x509-user-cert' => \n array (\n 0 => 'pem',\n ),\n 'application/x-pkcs10' => \n array (\n 0 => 'p10',\n ),\n 'application/x-pkcs7-signature' => \n array (\n 0 => 'p7a',\n ),\n 'application/pgp' => \n array (\n 0 => 'pgp',\n ),\n 'application/gpg-keys' => \n array (\n 0 => 'gpg',\n ),\n 'application/x-pkcs7' => \n array (\n 0 => 'rsa',\n ),\n 'video/3gp' => \n array (\n 0 => '3gp',\n ),\n 'audio/acc' => \n array (\n 0 => 'aac',\n ),\n 'application/vnd.mpegurl' => \n array (\n 0 => 'm4u',\n ),\n 'application/videolan' => \n array (\n 0 => 'vlc',\n ),\n 'audio/x-au' => \n array (\n 0 => 'au',\n ),\n 'audio/ac3' => \n array (\n 0 => 'ac3',\n ),\n 'text/x-scriptzsh' => \n array (\n 0 => 'zsh',\n ),\n 'application/cdr' => \n array (\n 0 => 'cdr',\n ),\n 'application/STEP' => \n array (\n 0 => 'step',\n 1 => 'stp',\n ),\n 'application/x-ndjson' => \n array (\n 0 => 'ndjson',\n ),\n 'application/braille' => \n array (\n 0 => 'brf',\n ),\n);

Methods

1. lookupMimeType

Declaration

@@ -5598,7 +5658,7 @@

Return

MagicObject\Database\PicoDatabase

Declaration

-
class PicoDatabase +
class PicoDatabase implements Stringable { }
@@ -5622,18 +5682,11 @@

Description

  • Executing various SQL commands (INSERT, UPDATE, DELETE, etc.).
  • Transaction management with commit and rollback functionality.
  • Fetching results in different formats (array, object, etc.).
  • -
  • -

    Generating unique IDs and retrieving the last inserted ID.

    -

    Example:

    -
    <?php
    -$db = new PicoDatabase($credentials);
    -$db->connect();
    -$result = $db->fetch("SELECT * FROM users WHERE id = ?", 123);
    -
  • +
  • Generating unique IDs and retrieving the last inserted ID.
  • Constants

    -
    const QUERY_INSERT = "insert";
    const QUERY_UPDATE = "update";
    const QUERY_DELETE = "delete";
    const QUERY_TRANSACTION = "transaction";
    const DATABASE_NONECTION_IS_NULL = "Database connection is null";

    Properties

    +
    const QUERY_INSERT = 'insert';
    const QUERY_UPDATE = 'update';
    const QUERY_DELETE = 'delete';
    const QUERY_TRANSACTION = 'transaction';
    const DATABASE_NONECTION_IS_NULL = 'Database connection is null';

    Properties

    1. databaseCredentials

    Declaration

    @@ -5673,7 +5726,7 @@

    Description

    5. databaseType

    Declaration

    -
    protected string $databaseType = '';
    +
    protected string $databaseType = '';

    Description

    Database type.

    @@ -5858,7 +5911,6 @@

    Parameters

    6. connect

    Declaration

    public function connect(
    -    int $timeout,
        bool $withDatabase = true
    ) : bool
    {
    }
    @@ -5867,8 +5919,6 @@

    Description

    Establishes a connection to the specified database type. Optionally selects a database if the connection is to an RDMS and the flag is set.

    Parameters

    -
    $timeout
    -

    Connection timeout in seconds.

    $withDatabase

    Flag to select the database when connected (default is true).

    Return

    @@ -6130,7 +6180,7 @@

    Return

    17. setTimeZone

    Declaration

    public function setTimeZone(
    -    string $timeZoneOffset
    +    string $timezone
    ) : self
    {
    }

    Description

    @@ -6140,7 +6190,7 @@

    Description

    The method generates the appropriate SQL command based on the type of the database (e.g., PostgreSQL, MySQL, etc.) and executes it to apply the time zone setting.

    Parameters

    -
    $timeZoneOffset
    +
    $timezone

    The time zone offset to set for the session. It can either be a valid UTC offset (e.g., '+00:00') or a named time zone (e.g., 'Europe/London').

    Return

    @@ -6551,7 +6601,43 @@

    Return

    -
    38. lastInsertId
    +
    38. generateUUID
    +

    Declaration

    +
    public function generateUUID() : string
    {
    }
    +
    +

    Description

    +

    Generate a random UUID (Universally Unique Identifier) version 4.

    +

    This function creates a 128-bit UUID using random bytes and applies +the proper version (4) and variant (RFC 4122) bits. The result is +formatted as a canonical string representation: +xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

    +

    Example output: +ad271d69-6c5a-4002-b2d2-3e0f84f7dfa3

    +

    Return

    +
    string
    +

    A UUID v4 string in standard format.

    +
    +
    +
    +
    39. generateTimeBasedId
    +

    Declaration

    +
    public function generateTimeBasedId() : string
    {
    }
    +
    +

    Description

    +

    Generates a unique hexadecimal ID based on the current epoch time in nanoseconds +combined with a 3-hex-digit random suffix.

    +

    The ID consists of:

    +
      +
    • A 17-character hexadecimal timestamp derived from microtime()
    • +
    • A 3-character hexadecimal random value
    • +
    +

    Return

    +
    string
    +

    Unique hexadecimal identifier

    +
    +
    +
    +
    40. lastInsertId

    Declaration

    public function lastInsertId(
        string|null $name = null
    @@ -6571,7 +6657,7 @@

    Return

    -
    39. getDatabaseCredentials
    +
    41. getDatabaseCredentials

    Declaration

    public function getDatabaseCredentials() : SecretObject
    {
    }
    @@ -6585,7 +6671,7 @@

    Return

    -
    40. isConnected
    +
    42. isConnected

    Declaration

    public function isConnected() : bool
    {
    }
    @@ -6599,7 +6685,7 @@

    Return

    -
    41. getDatabaseType
    +
    43. getDatabaseType

    Declaration

    public function getDatabaseType() : string
    {
    }
    @@ -6619,7 +6705,7 @@

    Return

    -
    42. getDatabaseTimeZone
    +
    44. getDatabaseTimeZone

    Declaration

    public function getDatabaseTimeZone() : string
    {
    }
    @@ -6633,7 +6719,7 @@

    Return

    -
    43. getDatabaseTimeZoneOffset
    +
    45. getDatabaseTimeZoneOffset

    Declaration

    public function getDatabaseTimeZoneOffset() : string
    {
    }
    @@ -6648,7 +6734,7 @@

    Return

    -
    44. __toString
    +
    46. __toString

    Declaration

    public function __toString() : string
    {
    }
    @@ -6662,7 +6748,7 @@

    Return

    -
    45. getCallbackExecuteQuery
    +
    47. getCallbackExecuteQuery

    Declaration

    public function getCallbackExecuteQuery() : callable|null
    {
    }
    @@ -6676,7 +6762,7 @@

    Return

    -
    46. setCallbackExecuteQuery
    +
    48. setCallbackExecuteQuery

    Declaration

    public function setCallbackExecuteQuery(
        callable|null $callbackExecuteQuery
    @@ -6695,7 +6781,7 @@

    Return

    -
    47. getCallbackDebugQuery
    +
    49. getCallbackDebugQuery

    Declaration

    public function getCallbackDebugQuery() : callable|null
    {
    }
    @@ -6709,7 +6795,7 @@

    Return

    -
    48. setCallbackDebugQuery
    +
    50. setCallbackDebugQuery

    Declaration

    public function setCallbackDebugQuery(
        callable|null $callbackDebugQuery
    @@ -6728,7 +6814,7 @@

    Return

    -
    49. isPdoConnected
    +
    51. isPdoConnected

    Declaration

    public function isPdoConnected() : bool
    {
    }
    @@ -6747,7 +6833,7 @@

    Return

    MagicObject\Database\PicoDatabaseCredentials

    Declaration

    -
    class PicoDatabaseCredentials extends MagicObject\SecretObject +
    class PicoDatabaseCredentials extends MagicObject\SecretObject implements Stringable { }
    @@ -7046,7 +7132,7 @@

    Description

    Database persistence

    Constants

    -
    const ANNOTATION_TABLE = "Table";
    const ANNOTATION_CACHE = "Cache";
    const ANNOTATION_COLUMN = "Column";
    const ANNOTATION_JOIN_COLUMN = "JoinColumn";
    const ANNOTATION_VAR = "var";
    const ANNOTATION_ID = "Id";
    const ANNOTATION_GENERATED_VALUE = "GeneratedValue";
    const ANNOTATION_NOT_NULL = "NotNull";
    const ANNOTATION_DEFAULT_COLUMN = "DefaultColumn";
    const ANNOTATION_JSON_FORMAT = "JsonFormat";
    const ANNOTATION_PACKAGE = "package";
    const SQL_DATE_TIME_FORMAT = "SqlDateTimeFormat";
    const KEY_NAME = "name";
    const KEY_REFERENCE_COLUMN_NAME = "referenceColumnName";
    const KEY_NULL = "null";
    const KEY_NOT_NULL = "notnull";
    const KEY_NULLABLE = "nullable";
    const KEY_INSERTABLE = "insertable";
    const KEY_UPDATABLE = "updatable";
    const KEY_STRATEGY = "strategy";
    const KEY_GENERATOR = "generator";
    const KEY_PROPERTY_TYPE = "propertyType";
    const KEY_VALUE = "value";
    const KEY_TYPE = "type";
    const KEY_ENABLE = "enable";
    const KEY_ENTITY_OBJECT = "entityObject";
    const VALUE_TRUE = "true";
    const VALUE_FALSE = "false";
    const ORDER_ASC = "asc";
    const ORDER_DESC = "desc";
    const MESSAGE_NO_PRIMARY_KEY_DEFINED = "No primary key is defined.";
    const MESSAGE_NO_RECORD_FOUND = "No records found.";
    const MESSAGE_INVALID_FILTER = "Invalid filter";
    const SQL_DATETIME_FORMAT = "Y-m-d H:i:s";
    const DATE_TIME_FORMAT = "datetimeformat";
    const NAMESPACE_SEPARATOR = "\\";
    const JOIN_TABLE_SUBFIX = "__jn__";
    const MAX_LINE_LENGTH = 80;
    const COMMA = ", ";
    const COMMA_RETURN = ", \r\n";
    const INLINE_TRIM = " \r\n\t ";
    const ALWAYS_TRUE = "(1=1)";

    Properties

    +
    const ANNOTATION_TABLE = 'Table';
    const ANNOTATION_CACHE = 'Cache';
    const ANNOTATION_COLUMN = 'Column';
    const ANNOTATION_JOIN_COLUMN = 'JoinColumn';
    const ANNOTATION_VAR = 'var';
    const ANNOTATION_ID = 'Id';
    const ANNOTATION_GENERATED_VALUE = 'GeneratedValue';
    const ANNOTATION_NOT_NULL = 'NotNull';
    const ANNOTATION_DEFAULT_COLUMN = 'DefaultColumn';
    const ANNOTATION_JSON_FORMAT = 'JsonFormat';
    const ANNOTATION_PACKAGE = 'package';
    const SQL_DATE_TIME_FORMAT = 'SqlDateTimeFormat';
    const KEY_NAME = 'name';
    const KEY_REFERENCE_COLUMN_NAME = 'referenceColumnName';
    const KEY_NULL = 'null';
    const KEY_NOT_NULL = 'notnull';
    const KEY_NULLABLE = 'nullable';
    const KEY_INSERTABLE = 'insertable';
    const KEY_UPDATABLE = 'updatable';
    const KEY_STRATEGY = 'strategy';
    const KEY_GENERATOR = 'generator';
    const KEY_PROPERTY_TYPE = 'propertyType';
    const KEY_VALUE = 'value';
    const KEY_TYPE = 'type';
    const KEY_ENABLE = 'enable';
    const KEY_ENTITY_OBJECT = 'entityObject';
    const VALUE_TRUE = 'true';
    const VALUE_FALSE = 'false';
    const ORDER_ASC = 'asc';
    const ORDER_DESC = 'desc';
    const MESSAGE_NO_PRIMARY_KEY_DEFINED = 'No primary key is defined.';
    const MESSAGE_NO_RECORD_FOUND = 'No records found.';
    const MESSAGE_INVALID_FILTER = 'Invalid filter';
    const SQL_DATETIME_FORMAT = 'Y-m-d H:i:s';
    const DATE_TIME_FORMAT = 'datetimeformat';
    const NAMESPACE_SEPARATOR = '\\';
    const JOIN_TABLE_SUBFIX = '__jn__';
    const MAX_LINE_LENGTH = 80;
    const COMMA = ', ';
    const COMMA_RETURN = ', \r\n';
    const INLINE_TRIM = ' \r\n\t ';
    const ALWAYS_TRUE = '(1=1)';
    const IS_NULL = ' is null';
    const CLAUSE_AND = ' and ';

    Properties

    1. database

    Declaration

    @@ -7068,7 +7154,7 @@

    Description

    3. className

    Declaration

    -
    protected string $className = '';
    +
    protected string $className = '';

    Description

    Class name

    @@ -7104,7 +7190,7 @@

    Description

    7. namespaceName

    Declaration

    -
    private string $namespaceName = '';
    +
    private string $namespaceName = '';

    Description

    Get namespace of class

    @@ -7737,19 +7823,26 @@

    Return

    Declaration

    private function getSet(
        PicoTableInfo $info,
    -    PicoDatabaseQueryBuilder $queryBuilder
    +    PicoDatabaseQueryBuilder $queryBuilder,
    +    string[]|null $skippedColumns = null
    ) : string
    {
    }

    Description

    -

    Construct the SET statement for an SQL update operation.

    +

    Construct the SET clause for an SQL UPDATE operation.

    +

    Iterates over the table columns, applies value escaping, and builds +the assignment expressions for the update statement. Columns that +are marked as non-updatable or explicitly skipped will be excluded. +Null columns are explicitly set to NULL.

    Parameters

    $info

    Table information containing column definitions.

    $queryBuilder
    -

    Query builder for escaping values.

    +

    Query builder used to escape values safely.

    +
    $skippedColumns
    +

    Columns to skip from being updated (optional).

    Return

    string
    -

    The constructed SET clause for the update statement.

    +

    The constructed SET clause for the UPDATE statement.

    Throws

    NoUpdatableColumnException

    If no updatable columns are found.

    @@ -7779,7 +7872,38 @@

    Throws

    -
    25. getPrimaryKeys
    +
    25. getWhereWithColumns
    +

    Declaration

    +
    private function getWhereWithColumns(
    +    PicoTableInfo $info,
    +    PicoDatabaseQueryBuilder $queryBuilder
    +) : stdClass
    {
    }
    +
    +

    Description

    +

    Builds a WHERE clause based on the table's primary key columns.

    +

    This method constructs a WHERE clause for an SQL query using the primary keys +defined in the provided table information. It retrieves the values from the +current object, escapes them using the query builder, and generates conditions +for each primary key. If a value is null, the condition will use "IS NULL".

    +

    Parameters

    +
    $info
    +

    Table information containing primary key definitions.

    +
    $queryBuilder
    +

    Query builder used to escape values safely.

    +

    Return

    +
    stdClass
    +

    An object containing:

    +
      +
    • columns: associative array of column names and their values
    • +
    • whereClause: the constructed WHERE clause string
    • +
    +

    Throws

    +
    NoPrimaryKeyDefinedException
    +

    If no primary keys are defined in the table.

    +
    +
    +
    +
    26. getPrimaryKeys

    Declaration

    public function getPrimaryKeys(
        PicoTableInfo|null $info = null
    @@ -7799,7 +7923,7 @@

    Throws

    -
    26. getColumns
    +
    27. getColumns

    Declaration

    public function getColumns(
        PicoTableInfo|null $info = null
    @@ -7819,7 +7943,7 @@

    Throws

    -
    27. getJoinSources
    +
    28. getJoinSources

    Declaration

    public function getJoinSources(
        PicoTableInfo|null $info = null
    @@ -7839,7 +7963,7 @@

    Throws

    -
    28. isPrimaryKeys
    +
    29. isPrimaryKeys

    Declaration

    public function isPrimaryKeys(
        string $columnName,
    @@ -7859,7 +7983,7 @@

    Return

    -
    29. getPrimaryKeyAutoIncrement
    +
    30. getPrimaryKeyAutoIncrement

    Declaration

    public function getPrimaryKeyAutoIncrement(
        PicoTableInfo $info
    @@ -7876,7 +8000,7 @@

    Return

    -
    30. addGeneratedValue
    +
    31. addGeneratedValue

    Declaration

    private function addGeneratedValue(
        PicoTableInfo $info,
    @@ -7896,7 +8020,34 @@

    Return

    -
    31. setGeneratedValue
    +
    32. shouldGenerateValueOnFirstCall
    +

    Declaration

    +
    private function shouldGenerateValueOnFirstCall(
    +    bool $firstCall,
    +    string $prop
    +) : bool
    {
    }
    +
    +

    Description

    +

    Determines whether a value should be generated for the given property +during the first invocation of the generation process.

    +

    A value will be generated only if:

    +
      +
    • This is the first call of the generation lifecycle
    • +
    • The specified property does not yet have a value (null or empty string)
    • +
    • No generated value has been assigned previously
    • +
    +

    Parameters

    +
    $firstCall
    +

    Indicates whether this is the first call in the generation lifecycle.

    +
    $prop
    +

    The property name to be evaluated.

    +

    Return

    +
    bool
    +

    Returns true if a new value should be generated; false otherwise.

    +
    +
    +
    +
    33. setGeneratedValue

    Declaration

    private function setGeneratedValue(
        string $prop,
    @@ -7919,7 +8070,7 @@

    Return

    -
    32. insert
    +
    34. insert

    Declaration

    public function insert(
        bool $includeNull = false
    @@ -7936,7 +8087,7 @@

    Return

    -
    33. insertQuery
    +
    35. insertQuery

    Declaration

    public function insertQuery(
        bool $includeNull = false
    @@ -7953,7 +8104,7 @@

    Return

    -
    34. _insert
    +
    36. _insert

    Declaration

    private function _insert(
        PicoTableInfo|null $info = null,
    @@ -7973,7 +8124,7 @@

    Return

    -
    35. _insertQuery
    +
    37. _insertQuery

    Declaration

    private function _insertQuery(
        PicoTableInfo|null $info = null,
    @@ -7996,7 +8147,7 @@

    Throws

    -
    36. fixInsertableValues
    +
    38. fixInsertableValues

    Declaration

    private function fixInsertableValues(
        array $values,
    @@ -8019,7 +8170,7 @@

    Throws

    -
    37. isRequireGenerateValue
    +
    39. isRequireGenerateValue

    Declaration

    private function isRequireGenerateValue(
        string $strategy,
    @@ -8039,7 +8190,7 @@

    Return

    -
    38. createStatementFields
    +
    40. createStatementFields

    Declaration

    public function createStatementFields(
        array $values
    @@ -8056,7 +8207,7 @@

    Return

    -
    39. createStatementValues
    +
    41. createStatementValues

    Declaration

    public function createStatementValues(
        array $values
    @@ -8073,7 +8224,7 @@

    Return

    -
    40. getColumnNames
    +
    42. getColumnNames

    Declaration

    private function getColumnNames(
        string $propertyNames,
    @@ -8096,7 +8247,7 @@

    Throws

    -
    41. getColumnMap
    +
    43. getColumnMap

    Declaration

    private function getColumnMap(
        PicoTableInfo $info
    @@ -8113,7 +8264,7 @@

    Return

    -
    42. fixComparison
    +
    44. fixComparison

    Declaration

    private function fixComparison(
        string $column
    @@ -8130,7 +8281,7 @@

    Return

    -
    43. createWhereFromArgs
    +
    45. createWhereFromArgs

    Declaration

    private function createWhereFromArgs(
        PicoTableInfo $info,
    @@ -8153,7 +8304,7 @@

    Return

    -
    44. getTableOf
    +
    46. getTableOf

    Declaration

    private function getTableOf(
        string|null $entityName,
    @@ -8176,7 +8327,7 @@

    Throws

    -
    45. getPrimaryKeyOf
    +
    47. getPrimaryKeyOf

    Declaration

    private function getPrimaryKeyOf(
        string $entityName,
    @@ -8199,7 +8350,7 @@

    Throws

    -
    46. getColumnMapOf
    +
    48. getColumnMapOf

    Declaration

    private function getColumnMapOf(
        string $entityName,
    @@ -8222,7 +8373,7 @@

    Throws

    -
    47. getJoinSource
    +
    49. getJoinSource

    Declaration

    private function getJoinSource(
        string|null $parentName,
    @@ -8251,7 +8402,7 @@

    Return

    -
    48. createWhereFromSpecification
    +
    50. createWhereFromSpecification

    Declaration

    protected function createWhereFromSpecification(
        PicoDatabaseQueryBuilder $sqlQuery,
    @@ -8274,7 +8425,7 @@

    Return

    -
    49. joinStringArray
    +
    51. joinStringArray

    Declaration

    private function joinStringArray(
        string[] $arr,
    @@ -8301,7 +8452,7 @@

    Return

    -
    50. splitChunk
    +
    52. splitChunk

    Declaration

    private function splitChunk(
        string[] $arr,
    @@ -8324,7 +8475,7 @@

    Return

    -
    51. addWhere
    +
    53. addWhere

    Declaration

    private function addWhere(
        array $arr,
    @@ -8353,7 +8504,7 @@

    Return

    -
    52. constructSpecificationQuery
    +
    54. constructSpecificationQuery

    Declaration

    private function constructSpecificationQuery(
        PicoDatabaseQueryBuilder $sqlQuery,
    @@ -8379,7 +8530,7 @@

    Return

    -
    53. contructComparisonValue
    +
    55. contructComparisonValue

    Declaration

    private function contructComparisonValue(
        PicoDatabaseQueryBuilder $sqlQuery,
    @@ -8399,7 +8550,7 @@

    Return

    -
    54. formatColumn
    +
    56. formatColumn

    Declaration

    private function formatColumn(
        string $column,
    @@ -8419,7 +8570,7 @@

    Return

    -
    55. createOrderBy
    +
    57. createOrderBy

    Declaration

    private function createOrderBy(
        PicoTableInfo $info,
    @@ -8439,7 +8590,7 @@

    Return

    -
    56. createOrderByQuery
    +
    58. createOrderByQuery

    Declaration

    public function createOrderByQuery(
        PicoSortable $order,
    @@ -8459,7 +8610,7 @@

    Return

    -
    57. createSortWithoutMapping
    +
    59. createSortWithoutMapping

    Declaration

    private function createSortWithoutMapping(
        PicoSortable $order,
    @@ -8479,7 +8630,7 @@

    Return

    -
    58. createSortWithMapping
    +
    60. createSortWithMapping

    Declaration

    private function createSortWithMapping(
        PicoSortable $order,
    @@ -8499,7 +8650,7 @@

    Return

    -
    59. isValidPrimaryKeyValues
    +
    61. isValidPrimaryKeyValues

    Declaration

    private function isValidPrimaryKeyValues(
        string[] $primaryKeys,
    @@ -8519,7 +8670,7 @@

    Return

    -
    60. toArray
    +
    62. toArray

    Declaration

    private function toArray(
        mixed $propertyValues
    @@ -8536,7 +8687,7 @@

    Return

    -
    61. getAllColumns
    +
    63. getAllColumns

    Declaration

    private function getAllColumns(
        PicoTableInfo $info
    @@ -8553,7 +8704,7 @@

    Return

    -
    62. find
    +
    64. find

    Declaration

    public function find(
        mixed $propertyValues
    @@ -8580,7 +8731,7 @@

    Throws

    -
    63. createWhereByPrimaryKeys
    +
    65. createWhereByPrimaryKeys

    Declaration

    private function createWhereByPrimaryKeys(
        PicoDatabaseQueryBuilder $queryBuilder,
    @@ -8608,7 +8759,7 @@

    Throws

    -
    64. setSpecification
    +
    66. setSpecification

    Declaration

    private function setSpecification(
        PicoDatabaseQueryBuilder $sqlQuery,
    @@ -8631,7 +8782,7 @@

    Return

    -
    65. setPageable
    +
    67. setPageable

    Declaration

    private function setPageable(
        PicoDatabaseQueryBuilder $sqlQuery,
    @@ -8651,7 +8802,7 @@

    Return

    -
    66. setSortable
    +
    68. setSortable

    Declaration

    private function setSortable(
        PicoDatabaseQueryBuilder $sqlQuery,
    @@ -8677,7 +8828,7 @@

    Return

    -
    67. setOrdeBy
    +
    69. setOrdeBy

    Declaration

    private function setOrdeBy(
        PicoDatabaseQueryBuilder $sqlQuery,
    @@ -8697,7 +8848,7 @@

    Return

    -
    68. addJoinQuery
    +
    70. addJoinQuery

    Declaration

    protected function addJoinQuery(
        PicoDatabaseQueryBuilder $sqlQuery,
    @@ -8717,7 +8868,7 @@

    Return

    -
    69. isRequireJoin
    +
    71. isRequireJoin

    Declaration

    protected function isRequireJoin(
        PicoSpecification $specification,
    @@ -8743,7 +8894,7 @@

    Return

    -
    70. isRequireJoinFromPageableAndSortable
    +
    72. isRequireJoinFromPageableAndSortable

    Declaration

    private function isRequireJoinFromPageableAndSortable(
        PicoPageable|null $pageable,
    @@ -8766,7 +8917,7 @@

    Return

    -
    71. isRequireJoinFromSpecification
    +
    73. isRequireJoinFromSpecification

    Declaration

    private function isRequireJoinFromSpecification(
        PicoSpecification $specification
    @@ -8783,7 +8934,7 @@

    Return

    -
    72. createPDOStatement
    +
    74. createPDOStatement

    Declaration

    public function createPDOStatement(
        PicoSpecification $specification,
    @@ -8815,7 +8966,7 @@

    Throws

    -
    73. findAllQuery
    +
    75. findAllQuery

    Declaration

    public function findAllQuery(
        PicoSpecification|null $specification,
    @@ -8841,7 +8992,7 @@

    Return

    -
    74. findSpecificQuery
    +
    76. findSpecificQuery

    Declaration

    public function findSpecificQuery(
        string $selected,
    @@ -8870,7 +9021,7 @@

    Return

    -
    75. findOne
    +
    77. findOne

    Declaration

    public function findOne(
        PicoSpecification|null $specification,
    @@ -8900,7 +9051,7 @@

    Throws

    -
    76. findAll
    +
    78. findAll

    Declaration

    public function findAll(
        PicoSpecification|null $specification,
    @@ -8931,7 +9082,7 @@

    Throws

    -
    77. findOneWithPrimaryKeyValue
    +
    79. findOneWithPrimaryKeyValue

    Declaration

    public function findOneWithPrimaryKeyValue(
        mixed $primaryKeyVal,
    @@ -8954,7 +9105,7 @@

    Throws

    -
    78. findSpecificWithSubquery
    +
    80. findSpecificWithSubquery

    Declaration

    public function findSpecificWithSubquery(
        string $selected,
    @@ -8986,7 +9137,7 @@

    Throws

    -
    79. subquery
    +
    81. subquery

    Declaration

    public function subquery(
        PicoTableInfo $info,
    @@ -9006,7 +9157,7 @@

    Return

    -
    80. joinString
    +
    82. joinString

    Declaration

    public function joinString(
        string $string1,
    @@ -9029,7 +9180,7 @@

    Return

    -
    81. findSpecific
    +
    83. findSpecific

    Declaration

    public function findSpecific(
        string $selected,
    @@ -9058,7 +9209,7 @@

    Throws

    -
    82. findByQuery
    +
    84. findByQuery

    Declaration

    public function findByQuery(
        string $propertyName,
    @@ -9093,7 +9244,7 @@

    Throws

    -
    83. findBy
    +
    85. findBy

    Declaration

    public function findBy(
        string $propertyName,
    @@ -9125,7 +9276,7 @@

    Throws

    -
    84. existsBy
    +
    86. existsBy

    Declaration

    public function existsBy(
        string $propertyName,
    @@ -9145,7 +9296,7 @@

    Return

    -
    85. countAll
    +
    87. countAll

    Declaration

    public function countAll(
        PicoSpecification|null $specification = null
    @@ -9167,7 +9318,7 @@

    Throws

    -
    86. countBy
    +
    88. countBy

    Declaration

    public function countBy(
        string $propertyName,
    @@ -9190,7 +9341,7 @@

    Throws

    -
    87. deleteBy
    +
    89. deleteBy

    Declaration

    public function deleteBy(
        string $propertyName,
    @@ -9213,7 +9364,7 @@

    Throws

    -
    88. deleteByPrimaryKey
    +
    90. deleteByPrimaryKey

    Declaration

    public function deleteByPrimaryKey(
        mixed $propertyValues
    @@ -9237,7 +9388,7 @@

    Return

    -
    89. deleteByPrimaryKeyQuery
    +
    91. deleteByPrimaryKeyQuery

    Declaration

    public function deleteByPrimaryKeyQuery(
        mixed $propertyValues
    @@ -9263,7 +9414,7 @@

    Throws

    -
    90. findOneBy
    +
    92. findOneBy

    Declaration

    public function findOneBy(
        string $propertyName,
    @@ -9295,7 +9446,7 @@

    Throws

    -
    91. getRealClassName
    +
    93. getRealClassName

    Declaration

    private function getRealClassName(
        string $classNameJoin,
    @@ -9318,7 +9469,7 @@

    Return

    -
    92. getRealClassNameWithoutPackage
    +
    94. getRealClassNameWithoutPackage

    Declaration

    private function getRealClassNameWithoutPackage(
        string $classNameJoin
    @@ -9338,7 +9489,7 @@

    Return

    -
    93. getReferenceColumnName
    +
    95. getReferenceColumnName

    Declaration

    private function getReferenceColumnName(
        array $join
    @@ -9357,7 +9508,7 @@

    Return

    -
    94. getJoinKeyName
    +
    96. getJoinKeyName

    Declaration

    private function getJoinKeyName(
        string $classNameJoin,
    @@ -9382,7 +9533,7 @@

    Return

    -
    95. prepareJoinCache
    +
    97. prepareJoinCache

    Declaration

    private function prepareJoinCache(
        string $classNameJoin
    @@ -9402,7 +9553,7 @@

    Return

    -
    96. getJoinData
    +
    98. getJoinData

    Declaration

    private function getJoinData(
        string $classNameJoin,
    @@ -9431,7 +9582,7 @@

    Return

    -
    97. join
    +
    99. join

    Declaration

    public function join(
        mixed $data,
    @@ -9457,7 +9608,7 @@

    Return

    -
    98. addProperty
    +
    100. addProperty

    Declaration

    private function addProperty(
        array|object $data,
    @@ -9482,7 +9633,7 @@

    Return

    -
    99. isValidFilter
    +
    101. isValidFilter

    Declaration

    private function isValidFilter(
        string $filter
    @@ -9500,7 +9651,7 @@

    Return

    -
    100. notNullAndNotEmptyAndNotSpace
    +
    102. notNullAndNotEmptyAndNotSpace

    Declaration

    private function notNullAndNotEmptyAndNotSpace(
        string $value
    @@ -9519,7 +9670,7 @@

    Return

    -
    101. fixDataType
    +
    103. fixDataType

    Declaration

    public function fixDataType(
        array $data,
    @@ -9542,7 +9693,7 @@

    Return

    -
    102. fixData
    +
    104. fixData

    Declaration

    public function fixData(
        mixed $value,
    @@ -9564,7 +9715,7 @@

    Return

    -
    103. boolval
    +
    105. boolval

    Declaration

    private function boolval(
        mixed $value
    @@ -9583,7 +9734,7 @@

    Return

    -
    104. intval
    +
    106. intval

    Declaration

    private function intval(
        mixed $value
    @@ -9602,7 +9753,7 @@

    Return

    -
    105. doubleval
    +
    107. doubleval

    Declaration

    private function doubleval(
        mixed $value
    @@ -9621,7 +9772,7 @@

    Return

    -
    106. fixInput
    +
    108. fixInput

    Declaration

    private function fixInput(
        mixed $value,
    @@ -9645,7 +9796,7 @@

    Return

    -
    107. fixTimeZone
    +
    109. fixTimeZone

    Declaration

    private function fixTimeZone(
        mixed $value,
    @@ -9674,7 +9825,7 @@

    Return

    -
    108. isDateTimeNull
    +
    110. isDateTimeNull

    Declaration

    private function isDateTimeNull(
        string $value
    @@ -9692,7 +9843,7 @@

    Return

    -
    109. createTypeMap
    +
    111. createTypeMap

    Declaration

    private function createTypeMap(
        PicoTableInfo $info
    @@ -9711,7 +9862,7 @@

    Return

    -
    110. select
    +
    112. select

    Declaration

    public function select() : mixed
    {
    }
    @@ -9728,7 +9879,7 @@

    Throws

    -
    111. selectAll
    +
    113. selectAll

    Declaration

    public function selectAll() : array
    {
    }
    @@ -9745,7 +9896,7 @@

    Throws

    -
    112. selectQuery
    +
    114. selectQuery

    Declaration

    public function selectQuery() : PicoDatabaseQueryBuilder
    {
    }
    @@ -9762,7 +9913,7 @@

    Throws

    -
    113. _select
    +
    115. _select

    Declaration

    private function _select(
        PicoTableInfo|null $info = null,
    @@ -9803,7 +9954,7 @@

    Throws

    -
    114. _selectAll
    +
    116. _selectAll

    Declaration

    private function _selectAll(
        PicoTableInfo|null $info = null,
    @@ -9844,7 +9995,7 @@

    Throws

    -
    115. _selectQuery
    +
    117. _selectQuery

    Declaration

    private function _selectQuery(
        PicoTableInfo|null $info = null,
    @@ -9874,7 +10025,7 @@

    Throws

    -
    116. update
    +
    118. update

    Declaration

    public function update(
        bool $includeNull = false
    @@ -9882,21 +10033,24 @@

    Declaration

    Description

    Updates records in the database.

    -

    This method constructs and executes an update query to modify records in the -specified table. It accepts an optional flag to include null values in the update.

    +

    This method constructs and executes an UPDATE query to modify records in the +specified table. It accepts an optional flag to include null values in the update, +and automatically skips columns used in the WHERE clause.

    Parameters

    $includeNull

    Optional. If true, null values are included in the update.

    Return

    PDOStatement
    -

    The executed update statement.

    +

    The executed UPDATE statement.

    Throws

    EntityException

    If an error occurs during the update process.

    +
    InvalidFilterException
    +

    If the provided filter is invalid.

    -
    117. updateQuery
    +
    119. updateQuery

    Declaration

    public function updateQuery(
        bool $includeNull = false
    @@ -9918,56 +10072,63 @@

    Throws

    -
    118. _update
    +
    120. _update

    Declaration

    private function _update(
        PicoTableInfo|null $info = null,
        PicoDatabaseQueryBuilder|null $queryBuilder = null,
    -    string|null $where = null
    +    string|null $where = null,
    +    string[]|null $skippedColumns = null
    ) : PDOStatement
    {
    }

    Description

    Updates a record in the database based on primary keys.

    -

    This method constructs and executes an update query using the provided table information -and filtering criteria.

    +

    This method constructs and executes an UPDATE query using the provided table information, +filtering criteria, and optional skipped columns.

    Parameters

    $info
    -

    The table information. If null, fetched internally.

    +

    The table information. If null, it is fetched internally.

    $queryBuilder
    -

    The query builder. If null, created internally.

    +

    The query builder. If null, it is created internally.

    $where
    -

    The where clause for the query. If null, fetched internally.

    +

    The WHERE clause for the query. If null, it is generated internally.

    +
    $skippedColumns
    +

    Columns to skip from being updated. If null, determined internally.

    Return

    PDOStatement
    -

    The executed update statement.

    +

    The executed UPDATE statement.

    Throws

    InvalidFilterException

    If the provided filter is invalid.

    -
    119. _updateQuery
    +
    121. _updateQuery

    Declaration

    private function _updateQuery(
        PicoTableInfo|null $info = null,
        PicoDatabaseQueryBuilder|null $queryBuilder = null,
    -    string|null $where = null
    +    string|null $where = null,
    +    string[]|null $skippedColumns = null
    ) : PicoDatabaseQueryBuilder
    {
    }

    Description

    -

    Prepares an update query without executing it.

    -

    This method constructs an update query using the specified table information and filtering criteria, -returning the query builder for further modifications.

    +

    Prepares an SQL UPDATE query without executing it.

    +

    This method constructs an UPDATE query using the specified table information, +filtering criteria, and optional skipped columns. It returns the query builder +for further modifications before execution.

    Parameters

    $info
    -

    The table information. If null, fetched internally.

    +

    The table information. If null, it is fetched internally.

    $queryBuilder
    -

    The query builder. If null, created internally.

    +

    The query builder. If null, it is created internally.

    $where
    -

    The where clause for the query. If null, fetched internally.

    +

    The WHERE clause for the query. If null, it is generated internally.

    +
    $skippedColumns
    +

    Columns to skip from being updated. If null, determined internally.

    Return

    PicoDatabaseQueryBuilder
    -

    The query builder with the update query prepared.

    +

    The query builder with the UPDATE query prepared.

    Throws

    InvalidFilterException

    If the provided filter is invalid.

    @@ -9976,7 +10137,7 @@

    Throws

    -
    120. delete
    +
    122. delete

    Declaration

    public function delete() : PDOStatement
    {
    }
    @@ -9993,7 +10154,7 @@

    Throws

    -
    121. deleteQuery
    +
    123. deleteQuery

    Declaration

    public function deleteQuery() : PicoDatabaseQueryBuilder
    {
    }
    @@ -10010,7 +10171,7 @@

    Throws

    -
    122. _delete
    +
    124. _delete

    Declaration

    private function _delete(
        PicoTableInfo|null $info = null,
    @@ -10035,7 +10196,7 @@

    Return

    -
    123. _deleteQuery
    +
    125. _deleteQuery

    Declaration

    private function _deleteQuery(
        PicoTableInfo|null $info = null,
    @@ -10065,7 +10226,7 @@

    Throws

    -
    124. whereWithSpecification
    +
    126. whereWithSpecification

    Declaration

    public function whereWithSpecification(
        PicoSpecification $specification
    @@ -10084,7 +10245,7 @@

    Return

    -
    125. isArray
    +
    127. isArray

    Declaration

    public static function isArray(
        mixed $value
    @@ -10102,7 +10263,7 @@

    Return

    -
    126. isNotEmpty
    +
    128. isNotEmpty

    Declaration

    public static function isNotEmpty(
        mixed $input
    @@ -10121,7 +10282,7 @@

    Return

    -
    127. getTimeZoneOffset
    +
    129. getTimeZoneOffset

    Declaration

    public function getTimeZoneOffset() : string
    {
    }
    @@ -10133,7 +10294,7 @@

    Return

    -
    128. setTimeZoneOffset
    +
    130. setTimeZoneOffset

    Declaration

    public function setTimeZoneOffset(
        string $timeZoneOffset
    @@ -10150,7 +10311,7 @@

    Return

    -
    129. getTimeZoneOffsetSystem
    +
    131. getTimeZoneOffsetSystem

    Declaration

    public function getTimeZoneOffsetSystem() : string
    {
    }
    @@ -10164,7 +10325,7 @@

    Return

    -
    130. setTimeZoneOffsetSystem
    +
    132. setTimeZoneOffsetSystem

    Declaration

    public function setTimeZoneOffsetSystem(
        string $timeZoneOffsetSystem
    @@ -10184,7 +10345,7 @@

    Return

    -
    131. getTimeZone
    +
    133. getTimeZone

    Declaration

    public function getTimeZone() : string
    {
    }
    @@ -10198,7 +10359,7 @@

    Return

    -
    132. setTimeZone
    +
    134. setTimeZone

    Declaration

    public function setTimeZone(
        string $timeZone
    @@ -10217,7 +10378,7 @@

    Return

    -
    133. getTimeZoneSystem
    +
    135. getTimeZoneSystem

    Declaration

    public function getTimeZoneSystem() : string
    {
    }
    @@ -10231,7 +10392,7 @@

    Return

    -
    134. setTimeZoneSystem
    +
    136. setTimeZoneSystem

    Declaration

    public function setTimeZoneSystem(
        string $timeZoneSystem
    @@ -10253,7 +10414,7 @@

    Return

    MagicObject\Database\PicoDatabasePersistenceExtended

    Declaration

    -
    class PicoDatabasePersistenceExtended extends MagicObject\Database\PicoDatabasePersistence +
    class PicoDatabasePersistenceExtended extends MagicObject\Database\PicoDatabasePersistence implements Stringable { }
    @@ -10301,7 +10462,7 @@

    Description

    4. className

    Declaration

    -
    protected string $className = '';
    +
    protected string $className = '';

    Description

    Class name

    @@ -10531,7 +10692,7 @@

    Return

    MagicObject\Database\PicoDatabaseQueryBuilder

    Declaration

    -
    class PicoDatabaseQueryBuilder +
    class PicoDatabaseQueryBuilder implements Stringable { }
    @@ -10562,13 +10723,13 @@

    Description

    ; $data = $db->fetch($query); echo $data['client_id']."\r\n"; // Client ID - echo $data['name']."\r\n"; // Client name + echo $data['name']."\r\n"; // Client name

    Properties

    1. buffer

    Declaration

    -
    private string $buffer = '';
    +
    private string $buffer = '';

    Description

    Buffer to hold the constructed SQL query.

    @@ -10604,7 +10765,7 @@

    Description

    5. databaseType

    Declaration

    -
    private string $databaseType = 'mysql';
    +
    private string $databaseType = 'mysql';

    Description

    The type of database being used.

    @@ -11241,27 +11402,59 @@

    Declaration

    ) : string
    {
    }

    Description

    -

    Escapes a raw SQL query string to be safely used in an SQL statement, -including handling of single quotes, backslashes, and line breaks, -based on the active database type.

    -

    This function does not quote the entire string with ' — it is intended -for use in building safe query fragments or inline strings.

    +

    Escapes a raw SQL string value so it can be safely embedded inside +an SQL statement according to the active database dialect.

    +

    This method performs SQL literal escaping only and does NOT:

    +
      +
    • +

      Add surrounding quotes ('...')

      +
    • +
    • +

      Escape or transform newline characters (\n, \r)

      +
    • +
    • +

      Replace or normalize whitespace

      +

      Newline characters are preserved as-is and stored correctly +in the database. This avoids issues where line breaks would be +converted into literal \n sequences.

      Behavior per database:

      +
    • +
    • +

      MySQL / MariaDB:

        -
      • MySQL/MariaDB: Escapes ' as \' and \ as \\
      • -
      • PostgreSQL : Escapes ' as '' and \ as \\ (assumes use with E'' literals)
      • -
      • SQLite : Escapes ' as ''; backslash is literal
      • +
      • Escapes single quote ' as \'
      • +
      • Escapes backslash \ as \\
      • +
      +
    • -

      SQL Server : Escapes ' as ''; backslash is literal

      -

      All RDBMS: Converts \r and \n into \\r and \\n

      +

      PostgreSQL:

      +
        +
      • Escapes single quote ' as ''
      • +
      • Escapes backslash \ as \\
      • +
      • Intended for standard string literals (NOT E'' unless handled externally)
      • +
      +
    • +
    • +

      SQLite:

      +
        +
      • Escapes single quote ' as ''
      • +
      • Backslash is treated as a literal character
      • +
      +
    • +
    • +

      SQL Server:

      +
        +
      • Escapes single quote ' as ''
      • +
      • Backslash is treated as a literal character
      • +

    Parameters

    $query
    -

    The raw SQL string to be escaped.

    +

    Raw SQL string value to escape.

    Return

    string
    -

    The escaped SQL string, safe for inclusion in SQL statements.

    +

    Escaped SQL string safe for inclusion inside a quoted SQL literal.

    @@ -11543,7 +11736,7 @@

    Return

    MagicObject\Database\PicoDatabaseQueryTemplate

    Declaration

    -
    class PicoDatabaseQueryTemplate +
    class PicoDatabaseQueryTemplate implements Stringable { }
    @@ -11649,7 +11842,7 @@

    Description

    and for handling column attributes like nullable, primary, and notnull.

    Constants

    -
    const ANNOTATION_TABLE = "Table";
    const ANNOTATION_COLUMN = "Column";
    const ANNOTATION_ID = "Id";
    const KEY_NAME = "name";
    const KEY_TYPE = "type";
    const KEY_NULL = "null";
    const KEY_NOT_NULL = "notnull";
    const KEY_NULLABLE = "nullable";
    const KEY_PRIMARY = "primary";

    Properties

    +
    const ANNOTATION_TABLE = 'Table';
    const ANNOTATION_COLUMN = 'Column';
    const ANNOTATION_ID = 'Id';
    const KEY_NAME = 'name';
    const KEY_TYPE = 'type';
    const KEY_NULL = 'null';
    const KEY_NOT_NULL = 'notnull';
    const KEY_NULLABLE = 'nullable';
    const KEY_PRIMARY = 'primary';

    Properties

    1. object

    Declaration

    @@ -11662,7 +11855,7 @@

    Description

    2. className

    Declaration

    -
    private string $className = '';
    +
    private string $className = '';

    Description

    The name of the class representing the table.

    @@ -11822,7 +12015,7 @@

    Description

    Constants

    -
    const DATABASE_TYPE_MYSQL = "mysql";
    const DATABASE_TYPE_MARIADB = "mariadb";
    const DATABASE_TYPE_POSTGRESQL = "postgresql";
    const DATABASE_TYPE_PGSQL = "pgsql";
    const DATABASE_TYPE_SQLITE = "sqlite";
    const DATABASE_TYPE_SQLSERVER = "sqlsrv";
    +
    const DATABASE_TYPE_MYSQL = 'mysql';
    const DATABASE_TYPE_MARIADB = 'mariadb';
    const DATABASE_TYPE_POSTGRESQL = 'postgresql';
    const DATABASE_TYPE_PGSQL = 'pgsql';
    const DATABASE_TYPE_SQLITE = 'sqlite';
    const DATABASE_TYPE_SQLSERVER = 'sqlsrv';

    MagicObject\Database\PicoDataComparation

    Declaration

    @@ -11850,11 +12043,11 @@

    Description

    applied to values of various types, including strings, booleans, and numbers.

    Constants

    -
    const EQUALS = "=";
    const NOT_EQUALS = "!=";
    const IN = "IN";
    const BETWEEN = "BETWEEN";
    const NOT_IN = "NOT IN";
    const IS = "IS";
    const IS_NOT = "IS NOT";
    const LIKE = "LIKE ";
    const NOT_LIKE = "NOT LIKE";
    const LESS_THAN = "<";
    const GREATER_THAN = ">";
    const LESS_THAN_OR_EQUALS = "<=";
    const GREATER_THAN_OR_EQUALS = ">=";
    const TYPE_STRING = "string";
    const TYPE_BOOLEAN = "boolean";
    const TYPE_NUMERIC = "numeric";
    const TYPE_NULL = "null";

    Properties

    +
    const EQUALS = '=';
    const NOT_EQUALS = '!=';
    const IN = 'IN';
    const BETWEEN = 'BETWEEN';
    const NOT_IN = 'NOT IN';
    const IS = 'IS';
    const IS_NOT = 'IS NOT';
    const LIKE = 'LIKE ';
    const NOT_LIKE = 'NOT LIKE';
    const LESS_THAN = '<';
    const GREATER_THAN = '>';
    const LESS_THAN_OR_EQUALS = '<=';
    const GREATER_THAN_OR_EQUALS = '>=';
    const TYPE_STRING = 'string';
    const TYPE_BOOLEAN = 'boolean';
    const TYPE_NUMERIC = 'numeric';
    const TYPE_NULL = 'null';

    Properties

    1. comparison

    Declaration

    -
    private string $comparison = '=';
    +
    private string $comparison = '=';

    Description

    The comparison operator.

    @@ -11872,7 +12065,7 @@

    Description

    3. type

    Declaration

    -
    private string $type = 'null';
    +
    private string $type = 'null';

    Description

    The type of the value.

    @@ -12265,7 +12458,7 @@

    Description

    5. functionFormat

    Declaration

    -
    private string $functionFormat = '%s';
    +
    private string $functionFormat = '%s';

    Description

    The function format for the field.

    @@ -12377,7 +12570,7 @@

    Description

    Provides methods to retrieve and filter entity metadata, including labels, columns, and other attributes.

    Constants

    -
    const ANNOTATION_TABLE = "Table";
    const ANNOTATION_LABEL = "label";
    const ANNOTATION_COLUMN = "Column";
    const ANNOTATION_JOIN_COLUMN = "JoinColumn";
    const ANNOTATION_VAR = "var";
    const ANNOTATION_ID = "Id";
    const ANNOTATION_GENERATED_VALUE = "GeneratedValue";
    const ANNOTATION_NOT_NULL = "NotNull";
    const ANNOTATION_DEFAULT_COLUMN = "DefaultColumn";
    const KEY_NAME = "name";
    const KEY_NULL = "null";
    const KEY_NOT_NULL = "notnull";
    const KEY_NULLABLE = "nullable";
    const KEY_INSERTABLE = "insertable";
    const KEY_UPDATABLE = "updatable";
    const KEY_STRATEGY = "strategy";
    const KEY_GENERATOR = "generator";
    const KEY_PROPERTY_TYPE = "propertyType";
    const KEY_VALUE = "value";
    const KEY_ENTITY_OBJECT = "entityObject";
    const VALUE_TRUE = "true";
    const VALUE_FALSE = "false";

    Properties

    +
    const ANNOTATION_TABLE = 'Table';
    const ANNOTATION_LABEL = 'label';
    const ANNOTATION_COLUMN = 'Column';
    const ANNOTATION_JOIN_COLUMN = 'JoinColumn';
    const ANNOTATION_VAR = 'var';
    const ANNOTATION_ID = 'Id';
    const ANNOTATION_GENERATED_VALUE = 'GeneratedValue';
    const ANNOTATION_NOT_NULL = 'NotNull';
    const ANNOTATION_DEFAULT_COLUMN = 'DefaultColumn';
    const KEY_NAME = 'name';
    const KEY_NULL = 'null';
    const KEY_NOT_NULL = 'notnull';
    const KEY_NULLABLE = 'nullable';
    const KEY_INSERTABLE = 'insertable';
    const KEY_UPDATABLE = 'updatable';
    const KEY_STRATEGY = 'strategy';
    const KEY_GENERATOR = 'generator';
    const KEY_PROPERTY_TYPE = 'propertyType';
    const KEY_VALUE = 'value';
    const KEY_ENTITY_OBJECT = 'entityObject';
    const VALUE_TRUE = 'true';
    const VALUE_FALSE = 'false';

    Properties

    1. className

    Declaration

    @@ -12493,7 +12686,7 @@

    Return

    MagicObject\Database\PicoJoinMap

    Declaration

    -
    class PicoJoinMap +
    class PicoJoinMap implements Stringable { }
    @@ -12661,7 +12854,7 @@

    Return

    MagicObject\Database\PicoLimit

    Declaration

    -
    class PicoLimit +
    class PicoLimit implements Stringable { }
    @@ -12836,7 +13029,7 @@

    Return

    MagicObject\Database\PicoPage

    Declaration

    -
    class PicoPage +
    class PicoPage implements Stringable { }
    @@ -13018,7 +13211,7 @@

    Return

    MagicObject\Database\PicoPageable

    Declaration

    -
    class PicoPageable +
    class PicoPageable implements Stringable { }
    @@ -13256,7 +13449,7 @@

    Return

    MagicObject\Database\PicoPageControl

    Declaration

    -
    class PicoPageControl +
    class PicoPageControl implements Stringable { }
    @@ -13344,7 +13537,7 @@

    Description

    8. formatPageNumber

    Declaration

    -
    private string $formatPageNumber = '<span class="page-selector page-selector-number%s" data-page-number="%d"><a href="%s">%s</a></span>';
    +
    private string $formatPageNumber = '<span class="page-selector page-selector-number%s" data-page-number="%d"><a href="%s">%s</a></span>';

    Description

    Template for rendering a specific page number in pagination.

    @@ -13353,7 +13546,7 @@

    Description

    9. formatStepOne

    Declaration

    -
    private string $formatStepOne = '<span class="page-selector page-selector-step-one%s" data-page-number="%d"><a href="%s">%s</a></span>';
    +
    private string $formatStepOne = '<span class="page-selector page-selector-step-one%s" data-page-number="%d"><a href="%s">%s</a></span>';

    Description

    Template for rendering navigation buttons like "next" or "prev" in pagination.

    @@ -13362,7 +13555,7 @@

    Description

    10. formatStartEnd

    Declaration

    -
    private string $formatStartEnd = '<span class="page-selector page-selector-end%s" data-page-number="%d"><a href="%s">%s</a></span>';
    +
    private string $formatStartEnd = '<span class="page-selector page-selector-end%s" data-page-number="%d"><a href="%s">%s</a></span>';

    Description

    Template for rendering navigation buttons like "first" or "last" in pagination.

    @@ -13715,7 +13908,7 @@

    Return

    MagicObject\Database\PicoPageData

    Declaration

    -
    class PicoPageData +
    class PicoPageData implements Stringable { }
    @@ -13742,7 +13935,7 @@

    Key Features

    Constants

    -
    const RESULT = "result";
    const PAGEABLE = "pageable";

    Properties

    +
    const RESULT = 'result';
    const PAGEABLE = 'pageable';

    Properties

    1. result

    Declaration

    @@ -14005,7 +14198,41 @@

    Return

    -
    7. getPageNumber
    +
    7. getResultAsArray
    +

    Declaration

    +
    public function getResultAsArray() : array
    {
    }
    +
    +

    Description

    +

    Get the result as an array of stdClass objects or plain values.

    +

    This method converts the internal result set, which may consist of MagicObject instances, +into a plain PHP array. Each MagicObject is recursively converted to a stdClass object +or a scalar value.

    +

    Return

    +
    array
    +

    The result set as a plain PHP array.

    +
    +
    +
    +
    8. magicObjectToArray
    +

    Declaration

    +
    protected function magicObjectToArray(
    +    mixed $data
    +) : mixed
    {
    }
    +
    +

    Description

    +

    Recursively converts a MagicObject, an object, or an array of them into a plain PHP array or stdClass object.

    +

    This method is useful for serialization or for passing the data to components +that expect standard PHP types instead of MagicObject instances.

    +

    Parameters

    +
    $data
    +

    The data to convert. Can be a MagicObject, an array, an object, or a scalar value.

    +

    Return

    +
    mixed
    +

    The converted data as a plain PHP array, stdClass object, or scalar value.

    +
    +
    +
    +
    9. getPageNumber

    Declaration

    public function getPageNumber() : int
    {
    }
    @@ -14017,7 +14244,7 @@

    Return

    -
    8. getTotalPage
    +
    10. getTotalPage

    Declaration

    public function getTotalPage() : int
    {
    }
    @@ -14029,7 +14256,7 @@

    Return

    -
    9. getPageSize
    +
    11. getPageSize

    Declaration

    public function getPageSize() : int
    {
    }
    @@ -14041,7 +14268,7 @@

    Return

    -
    10. __toString
    +
    12. __toString

    Declaration

    public function __toString() : string
    {
    }
    @@ -14055,7 +14282,7 @@

    Return

    -
    11. getExecutionTime
    +
    13. getExecutionTime

    Declaration

    public function getExecutionTime() : float
    {
    }
    @@ -14067,7 +14294,7 @@

    Return

    -
    12. getPagination
    +
    14. getPagination

    Declaration

    public function getPagination() : array
    {
    }
    @@ -14079,7 +14306,7 @@

    Return

    -
    13. getPageControl
    +
    15. getPageControl

    Declaration

    public function getPageControl(
        string $parameterName = 'page',
    @@ -14099,7 +14326,7 @@

    Return

    -
    14. getTotalResult
    +
    16. getTotalResult

    Declaration

    public function getTotalResult() : int
    {
    }
    @@ -14111,7 +14338,7 @@

    Return

    -
    15. getPageable
    +
    17. getPageable

    Declaration

    public function getPageable() : PicoPageable|null
    {
    }
    @@ -14123,7 +14350,7 @@

    Return

    -
    16. getDataOffset
    +
    18. getDataOffset

    Declaration

    public function getDataOffset() : int
    {
    }
    @@ -14135,7 +14362,7 @@

    Return

    -
    17. getPDOStatement
    +
    19. getPDOStatement

    Declaration

    public function getPDOStatement() : PDOStatement
    {
    }
    @@ -14150,7 +14377,7 @@

    Throws

    -
    18. fetch
    +
    20. fetch

    Declaration

    public function fetch() : MagicObject|mixed
    {
    }
    @@ -14165,7 +14392,7 @@

    Throws

    -
    19. applySubqueryResult
    +
    21. applySubqueryResult

    Declaration

    public function applySubqueryResult(
        array $row
    @@ -14183,7 +14410,7 @@

    Return

    -
    20. getFindOption
    +
    22. getFindOption

    Declaration

    public function getFindOption() : int
    {
    }
    @@ -14195,7 +14422,7 @@

    Return

    -
    21. setFindOption
    +
    23. setFindOption

    Declaration

    public function setFindOption(
        int $findOption
    @@ -14215,7 +14442,7 @@

    Return

    MagicObject\Database\PicoPredicate

    Declaration

    -
    class PicoPredicate +
    class PicoPredicate implements Stringable { }
    @@ -14257,7 +14484,8 @@

    Return

    Declaration

    public function __construct(
        string|null $field = null,
    -    mixed|null $value = null
    +    mixed|null $value = null,
    +    string|null $operator = null
    )
    {
    }

    Description

    @@ -14269,6 +14497,8 @@

    Parameters

    The name of the field.

    $value

    The value to compare against.

    +
    $operator
    +

    The operator

    @@ -14813,7 +15043,7 @@

    Return

    MagicObject\Database\PicoSort

    Declaration

    -
    class PicoSort +
    class PicoSort implements Stringable { }
    @@ -14833,11 +15063,11 @@

    Description

    direction of sorting (ascending or descending).

    Constants

    -
    const ORDER_TYPE_ASC = "asc";
    const ORDER_TYPE_DESC = "desc";
    const SORT_BY = "sortBy";

    Properties

    +
    const ORDER_TYPE_ASC = 'asc';
    const ORDER_TYPE_DESC = 'desc';
    const SORT_BY = 'sortBy';

    Properties

    1. sortBy

    Declaration

    -
    private string $sortBy = '';
    +
    private string $sortBy = '';

    Description

    The field to sort by.

    @@ -14846,7 +15076,7 @@

    Description

    2. sortType

    Declaration

    -
    private string $sortType = '';
    +
    private string $sortType = '';

    Description

    The type of sorting (ascending or descending).

    @@ -14944,7 +15174,7 @@

    Description

    Supported Dynamic Method:

    • -

      sortBy<FieldName>(sortType):

      +

      sortBy<FieldName>(sortType):

      • Example: $obj->sortByName('asc')
      • Sets the sorting field to name
      • @@ -15026,7 +15256,7 @@

        Return

        MagicObject\Database\PicoSortable

        Declaration

        -
        class PicoSortable +
        class PicoSortable implements Stringable { }
        @@ -15288,7 +15518,7 @@

        Return

        MagicObject\Database\PicoSpecification

        Declaration

        -
        class PicoSpecification +
        class PicoSpecification implements Stringable { }
        @@ -15307,7 +15537,7 @@

        Description

        allowing for the combination of predicates using logical operators (AND, OR).

        Constants

        -
        const LOGIC_AND = "AND";
        const LOGIC_OR = "OR";

        Properties

        +
        const LOGIC_AND = 'AND';
        const LOGIC_OR = 'OR';

        Properties

        1. parentFilterLogic

        Declaration

        @@ -15338,7 +15568,7 @@

        Description

        4. defaultLogic

        Declaration

        -
        private string $defaultLogic = 'AND';
        +
        private string $defaultLogic = 'AND';

        Description

        Default logic for combining predicates (AND/OR).

        @@ -15482,7 +15712,40 @@

        Return

        -
        8. addFilter
        +
        8. addPredicateArray
        +

        Declaration

        +
        private function addPredicateArray(
        +    array $predicate,
        +    string $logic
        +) : void
        {
        }
        +
        +

        Description

        +

        Adds a predicate condition from an array representation.

        +

        This helper method converts an array into a PicoPredicate and applies it +with the specified logical operator (AND/OR).

        +

        Expected array formats:

        +
          +
        • [field, value] → Creates an equality predicate.
        • +
        • [field, value, operator] → Creates a predicate with the given operator.
        • +
        +

        Parameters

        +
        $predicate
        +

        The array representing the condition. +Must contain at least two elements:

        +
          +
        • index 0: column name (string)
        • +
        • index 1: value
        • +
        • index 2: operator (optional)
        • +
        +
        $logic
        +

        The logical operator to apply (e.g., self::LOGIC_AND, self::LOGIC_OR).

        +

        Return

        +
        void
        +
        +
        +
        +
        +
        9. addFilter

        Declaration

        private function addFilter(
            PicoSpecification|PicoPredicate|array|string $predicate,
        @@ -15513,7 +15776,7 @@

        Return

        -
        9. addFilterByArray
        +
        10. addFilterByArray

        Declaration

        private function addFilterByArray(
            array $predicate,
        @@ -15533,7 +15796,7 @@

        Return

        -
        10. addSubFilter
        +
        11. addSubFilter

        Declaration

        private function addSubFilter(
            PicoSpecification|array $predicate,
        @@ -15553,7 +15816,7 @@

        Return

        -
        11. isEmpty
        +
        12. isEmpty

        Declaration

        public function isEmpty() : bool
        {
        }
        @@ -15565,7 +15828,7 @@

        Return

        -
        12. isArray
        +
        13. isArray

        Declaration

        public static function isArray(
            mixed $array
        @@ -15582,7 +15845,7 @@

        Return

        -
        13. isValueEmpty
        +
        14. isValueEmpty

        Declaration

        public static function isValueEmpty(
            mixed $value
        @@ -15599,7 +15862,7 @@

        Return

        -
        14. getSpecifications
        +
        15. getSpecifications

        Declaration

        public function getSpecifications() : PicoPredicate[]
        {
        }
        @@ -15611,7 +15874,7 @@

        Return

        -
        15. getParentFilterLogic
        +
        16. getParentFilterLogic

        Declaration

        public function getParentFilterLogic() : string|null
        {
        }
        @@ -15623,7 +15886,7 @@

        Return

        -
        16. setParentFilterLogic
        +
        17. setParentFilterLogic

        Declaration

        public function setParentFilterLogic(
            string $parentFilterLogic
        @@ -15640,7 +15903,7 @@

        Return

        -
        17. getWhere
        +
        18. getWhere

        Declaration

        private function getWhere(
            PicoSpecification[] $specifications
        @@ -15657,7 +15920,7 @@

        Return

        -
        18. getColumnName
        +
        19. getColumnName

        Declaration

        private function getColumnName(
            string $field,
        @@ -15678,7 +15941,7 @@

        Return

        -
        19. createWhereFromSpecification
        +
        20. createWhereFromSpecification

        Declaration

        private function createWhereFromSpecification(
            PicoSpecification $specification
        @@ -15695,7 +15958,7 @@

        Return

        -
        20. hasValue
        +
        21. hasValue

        Declaration

        private function hasValue(
            mixed $specification
        @@ -15712,7 +15975,7 @@

        Return

        -
        21. __call
        +
        22. __call

        Declaration

        public function __call(
            string $method,
        @@ -15750,7 +16013,7 @@

        Return

        -
        22. __set
        +
        23. __set

        Declaration

        public function __set(
            string $field,
        @@ -15767,7 +16030,7 @@

        Parameters

        -
        23. addPredicate
        +
        24. addPredicate

        Declaration

        private function addPredicate(
            string $field,
        @@ -15787,7 +16050,7 @@

        Return

        -
        24. __toString
        +
        25. __toString

        Declaration

        public function __toString() : string
        {
        }
        @@ -15800,7 +16063,7 @@

        Return

        -
        25. fromUserInput
        +
        26. fromUserInput

        Declaration

        public static function fromUserInput(
            PicoRequestBase $request,
        @@ -15820,7 +16083,7 @@

        Return

        -
        26. isValidFilter
        +
        27. isValidFilter

        Declaration

        private static function isValidFilter(
            mixed $filterValue,
        @@ -15842,7 +16105,7 @@

        Return

        -
        27. toLowerCase
        +
        28. toLowerCase

        Declaration

        public static function toLowerCase(
            array $input
        @@ -15859,7 +16122,7 @@

        Return

        -
        28. fixInput
        +
        29. fixInput

        Declaration

        private static function fixInput(
            mixed $filterValue,
        @@ -15883,7 +16146,48 @@

        Return

        -
        29. fullTextSearch
        +
        30. fixInputArrayBoolean
        +

        Declaration

        +
        private static function fixInputArrayBoolean(
        +    array|string $value
        +) : array|bool
        {
        }
        +
        +

        Description

        +

        Normalizes boolean values within an array.

        +

        This method iterates through the array and converts each element +into a proper boolean value if possible. If the input is a string, +it is also normalized into a boolean.

        +

        Parameters

        +
        $value
        +

        The array or string containing raw boolean-like values.

        +

        Return

        +
        array|bool
        +

        The normalized array of booleans, or a single boolean if input was a string.

        +
        +
        +
        +
        31. fixInputBoolean
        +

        Declaration

        +
        private static function fixInputBoolean(
        +    mixed $value
        +) : bool|mixed
        {
        }
        +
        +

        Description

        +

        Converts a raw input into a boolean value.

        +

        This method interprets common string representations of boolean values +such as "true", "false", "yes", "no", "1", and "0". If the input +matches one of these values, it is converted into a boolean. +Otherwise, the original value is returned unchanged.

        +

        Parameters

        +
        $value
        +

        The raw input value to be normalized.

        +

        Return

        +
        bool|mixed
        +

        A boolean value if conversion is possible, otherwise the original input.

        +
        +
        +
        +
        32. fullTextSearch

        Declaration

        public static function fullTextSearch(
            string $columnName,
        @@ -15903,7 +16207,7 @@

        Return

        -
        30. fullTextSearchArray
        +
        33. fullTextSearchArray

        Declaration

        public static function fullTextSearchArray(
            string $columnName,
        @@ -15925,7 +16229,7 @@

        Return

        -
        31. filter
        +
        34. filter

        Declaration

        public static function filter(
            string $columnName,
        @@ -15945,7 +16249,7 @@

        Return

        -
        32. getDefaultLogic
        +
        35. getDefaultLogic

        Declaration

        public function getDefaultLogic() : string
        {
        }
        @@ -15957,7 +16261,7 @@

        Return

        -
        33. setDefaultLogic
        +
        36. setDefaultLogic

        Declaration

        public function setDefaultLogic(
            string $defaultLogic
        @@ -15974,7 +16278,7 @@

        Return

        -
        34. setDefaultLogicAnd
        +
        37. setDefaultLogicAnd

        Declaration

        public function setDefaultLogicAnd() : self
        {
        }
        @@ -15986,7 +16290,7 @@

        Return

        -
        35. setDefaultLogicOr
        +
        38. setDefaultLogicOr

        Declaration

        public function setDefaultLogicOr() : self
        {
        }
        @@ -15998,7 +16302,7 @@

        Return

        -
        36. getRequireJoin
        +
        39. getRequireJoin

        Declaration

        public function getRequireJoin() : bool
        {
        }
        @@ -16013,7 +16317,7 @@

        Return

        MagicObject\Database\PicoSpecificationFilter

        Declaration

        -
        class PicoSpecificationFilter +
        class PicoSpecificationFilter implements Stringable { }
        @@ -16032,7 +16336,7 @@

        Description

        and providing methods to convert values based on the defined type.

        Constants

        -
        const DATA_TYPE_NUMBER = "number";
        const DATA_TYPE_STRING = "string";
        const DATA_TYPE_BOOLEAN = "boolean";
        const DATA_TYPE_ARRAY_NUMBER = "number[]";
        const DATA_TYPE_ARRAY_STRING = "string[]";
        const DATA_TYPE_ARRAY_BOOLEAN = "boolean[]";
        const DATA_TYPE_FULLTEXT = "fulltext";
        const DATA_TYPE_TEXT_EQUALS = "textequals";

        Properties

        +
        const DATA_TYPE_NUMBER = 'number';
        const DATA_TYPE_STRING = 'string';
        const DATA_TYPE_BOOLEAN = 'boolean';
        const DATA_TYPE_ARRAY_NUMBER = 'number[]';
        const DATA_TYPE_ARRAY_STRING = 'string[]';
        const DATA_TYPE_ARRAY_BOOLEAN = 'boolean[]';
        const DATA_TYPE_FULLTEXT = 'fulltext';
        const DATA_TYPE_TEXT_EQUALS = 'textequals';

        Properties

        1. columnName

        Declaration

        @@ -16308,7 +16612,7 @@

        Return

        MagicObject\Database\PicoSqlite

        Declaration

        -
        class PicoSqlite extends MagicObject\Database\PicoDatabase +
        class PicoSqlite extends MagicObject\Database\PicoDatabase implements Stringable { }
        @@ -16333,7 +16637,7 @@

        Description

        This class extends the PicoDatabase class, which provides additional database interaction capabilities.

        Constants

        -
        const LOGIC_AND = " and ";

        Properties

        +
        const LOGIC_AND = ' and ';

        Properties

        1. databaseFilePath

        Declaration

        @@ -16382,7 +16686,7 @@

        Description

        6. databaseType

        Declaration

        -
        protected string $databaseType = '';
        +
        protected string $databaseType = '';

        Description

        Database type.

        @@ -16532,7 +16836,7 @@

        Return

        MagicObject\Database\PicoSqlJson

        Declaration

        -
        class PicoSqlJson +
        class PicoSqlJson implements Stringable { }
        @@ -16594,7 +16898,7 @@

        Return

        MagicObject\Database\PicoTableInfo

        Declaration

        -
        class PicoTableInfo +
        class PicoTableInfo implements Stringable { }
        @@ -17098,7 +17402,7 @@

        Return

        MagicObject\Database\PicoTableInfoExtended

        Declaration

        -
        class PicoTableInfoExtended extends MagicObject\Database\PicoTableInfo +
        class PicoTableInfoExtended extends MagicObject\Database\PicoTableInfo implements Stringable { }
        @@ -17118,7 +17422,7 @@

        Description

        default values, and not-null columns.

        Constants

        -
        const NAME = "name";
        const PREV_NAME = "prevColumnName";
        const ELEMENT = "element";

        Properties

        +
        const NAME = 'name';
        const PREV_NAME = 'prevColumnName';
        const ELEMENT = 'element';

        Properties

        1. tableName

        Declaration

        @@ -17428,7 +17732,7 @@

        Return

        MagicObject\DataLabel\PicoDataLabel

        Declaration

        -
        class PicoDataLabel extends MagicObject\SetterGetter +
        class PicoDataLabel extends MagicObject\SetterGetter implements Stringable { }
        @@ -17446,7 +17750,7 @@

        Description

        This class uses annotations to define properties and their metadata.

        Constants

        -
        const ANNOTATION_PROPERTIES = "Properties";
        const ANNOTATION_TABLE = "Table";
        const KEY_NAME = "name";
        const ANNOTATION_VAR = "var";

        Properties

        +
        const ANNOTATION_PROPERTIES = 'Properties';
        const ANNOTATION_TABLE = 'Table';
        const KEY_NAME = 'name';
        const ANNOTATION_VAR = 'var';

        Properties

        1. classParams

        Declaration

        @@ -17459,7 +17763,7 @@

        Description

        2. className

        Declaration

        -
        private string $className = '';
        +
        private string $className = '';

        Description

        Name of the class.

        @@ -17541,7 +17845,7 @@

        Description

        MagicObject\Exceptions\ClassNotFoundException

        Declaration

        -
        class ClassNotFoundException extends Exception implements Throwable +
        class ClassNotFoundException extends Exception implements Throwable, Stringable { }
        @@ -17589,7 +17893,7 @@

        Return

        MagicObject\Exceptions\CurlException

        Declaration

        -
        class CurlException extends Exception implements Throwable +
        class CurlException extends Exception implements Throwable, Stringable { }
        @@ -17639,7 +17943,7 @@

        Return

        MagicObject\Exceptions\DatabaseConversionException

        Declaration

        -
        class DatabaseConversionException extends Exception implements Throwable +
        class DatabaseConversionException extends Exception implements Throwable, Stringable { }
        @@ -17686,7 +17990,7 @@

        Return

        MagicObject\Exceptions\DataRetrievalException

        Declaration

        -
        class DataRetrievalException extends Exception implements Throwable +
        class DataRetrievalException extends Exception implements Throwable, Stringable { }
        @@ -17732,7 +18036,7 @@

        Return

        MagicObject\Exceptions\EmptyResultException

        Declaration

        -
        class EmptyResultException extends Exception implements Throwable +
        class EmptyResultException extends Exception implements Throwable, Stringable { }
        @@ -17778,7 +18082,7 @@

        Return

        MagicObject\Exceptions\EntityException

        Declaration

        -
        class EntityException extends Exception implements Throwable +
        class EntityException extends Exception implements Throwable, Stringable { }
        @@ -17824,7 +18128,7 @@

        Return

        MagicObject\Exceptions\ErrorConnectionException

        Declaration

        -
        class ErrorConnectionException extends Exception implements Throwable +
        class ErrorConnectionException extends Exception implements Throwable, Stringable { }
        @@ -17872,7 +18176,7 @@

        Return

        MagicObject\Exceptions\FileNotFoundException

        Declaration

        -
        class FileNotFoundException extends Exception implements Throwable +
        class FileNotFoundException extends Exception implements Throwable, Stringable { }
        @@ -17918,7 +18222,7 @@

        Return

        MagicObject\Exceptions\FindOptionException

        Declaration

        -
        class FindOptionException extends Exception implements Throwable +
        class FindOptionException extends Exception implements Throwable, Stringable { }
        @@ -17965,7 +18269,7 @@

        Return

        MagicObject\Exceptions\InvalidAddressException

        Declaration

        -
        class InvalidAddressException extends Exception implements Throwable +
        class InvalidAddressException extends Exception implements Throwable, Stringable { }
        @@ -18013,7 +18317,7 @@

        Return

        MagicObject\Exceptions\InvalidAnnotationException

        Declaration

        -
        class InvalidAnnotationException extends Exception implements Throwable +
        class InvalidAnnotationException extends Exception implements Throwable, Stringable { }
        @@ -18060,7 +18364,7 @@

        Return

        MagicObject\Exceptions\InvalidClassException

        Declaration

        -
        class InvalidClassException extends Exception implements Throwable +
        class InvalidClassException extends Exception implements Throwable, Stringable { }
        @@ -18107,7 +18411,7 @@

        Return

        MagicObject\Exceptions\InvalidDatabaseConfiguration

        Declaration

        -
        class InvalidDatabaseConfiguration extends Exception implements Throwable +
        class InvalidDatabaseConfiguration extends Exception implements Throwable, Stringable { }
        @@ -18153,7 +18457,7 @@

        Return

        MagicObject\Exceptions\InvalidFileAccessException

        Declaration

        -
        class InvalidFileAccessException extends Exception implements Throwable +
        class InvalidFileAccessException extends Exception implements Throwable, Stringable { }
        @@ -18197,7 +18501,7 @@

        Return

        MagicObject\Exceptions\InvalidFileFormatException

        Declaration

        -
        class InvalidFileFormatException extends Exception implements Throwable +
        class InvalidFileFormatException extends Exception implements Throwable, Stringable { }
        @@ -18245,7 +18549,7 @@

        Return

        MagicObject\Exceptions\InvalidFilterException

        Declaration

        -
        class InvalidFilterException extends Exception implements Throwable +
        class InvalidFilterException extends Exception implements Throwable, Stringable { }
        @@ -18292,7 +18596,7 @@

        Return

        MagicObject\Exceptions\InvalidInputFormatException

        Declaration

        -
        class InvalidInputFormatException extends Exception implements Throwable +
        class InvalidInputFormatException extends Exception implements Throwable, Stringable { }
        @@ -18340,7 +18644,7 @@

        Return

        MagicObject\Exceptions\InvalidParameterException

        Declaration

        -
        class InvalidParameterException extends Exception implements Throwable +
        class InvalidParameterException extends Exception implements Throwable, Stringable { }
        @@ -18387,7 +18691,7 @@

        Return

        MagicObject\Exceptions\InvalidPolygonException

        Declaration

        -
        class InvalidPolygonException extends Exception implements Throwable +
        class InvalidPolygonException extends Exception implements Throwable, Stringable { }
        @@ -18435,7 +18739,7 @@

        Return

        MagicObject\Exceptions\InvalidQueryInputException

        Declaration

        -
        class InvalidQueryInputException extends Exception implements Throwable +
        class InvalidQueryInputException extends Exception implements Throwable, Stringable { }
        @@ -18495,7 +18799,7 @@

        Return

        MagicObject\Exceptions\InvalidReturnTypeException

        Declaration

        -
        class InvalidReturnTypeException extends Exception implements Throwable +
        class InvalidReturnTypeException extends Exception implements Throwable, Stringable { }
        @@ -18539,7 +18843,7 @@

        Return

        MagicObject\Exceptions\InvalidValueException

        Declaration

        -
        class InvalidValueException extends Exception implements Throwable +
        class InvalidValueException extends Exception implements Throwable, Stringable { }
        @@ -18596,7 +18900,7 @@

        Return

        MagicObject\Exceptions\MandatoryTableNameException

        Declaration

        -
        class MandatoryTableNameException extends Exception implements Throwable +
        class MandatoryTableNameException extends Exception implements Throwable, Stringable { }
        @@ -18644,7 +18948,7 @@

        Return

        MagicObject\Exceptions\NoColumnMatchException

        Declaration

        -
        class NoColumnMatchException extends Exception implements Throwable +
        class NoColumnMatchException extends Exception implements Throwable, Stringable { }
        @@ -18693,7 +18997,7 @@

        Return

        MagicObject\Exceptions\NoColumnUpdatedException

        Declaration

        -
        class NoColumnUpdatedException extends Exception implements Throwable +
        class NoColumnUpdatedException extends Exception implements Throwable, Stringable { }
        @@ -18742,7 +19046,7 @@

        Return

        MagicObject\Exceptions\NoDatabaseConnectionException

        Declaration

        -
        class NoDatabaseConnectionException extends Exception implements Throwable +
        class NoDatabaseConnectionException extends Exception implements Throwable, Stringable { }
        @@ -18791,7 +19095,7 @@

        Return

        MagicObject\Exceptions\NoInsertableColumnException

        Declaration

        -
        class NoInsertableColumnException extends Exception implements Throwable +
        class NoInsertableColumnException extends Exception implements Throwable, Stringable { }
        @@ -18841,7 +19145,7 @@

        Return

        MagicObject\Exceptions\NoPrimaryKeyDefinedException

        Declaration

        -
        class NoPrimaryKeyDefinedException extends Exception implements Throwable +
        class NoPrimaryKeyDefinedException extends Exception implements Throwable, Stringable { }
        @@ -18890,7 +19194,7 @@

        Return

        MagicObject\Exceptions\NoRecordFoundException

        Declaration

        -
        class NoRecordFoundException extends Exception implements Throwable +
        class NoRecordFoundException extends Exception implements Throwable, Stringable { }
        @@ -18940,7 +19244,7 @@

        Return

        MagicObject\Exceptions\NotNullColumnException

        Declaration

        -
        class NotNullColumnException extends Exception implements Throwable +
        class NotNullColumnException extends Exception implements Throwable, Stringable { }
        @@ -18990,7 +19294,7 @@

        Return

        MagicObject\Exceptions\NoUpdatableColumnException

        Declaration

        -
        class NoUpdatableColumnException extends Exception implements Throwable +
        class NoUpdatableColumnException extends Exception implements Throwable, Stringable { }
        @@ -19040,7 +19344,7 @@

        Return

        MagicObject\Exceptions\NullPointerException

        Declaration

        -
        class NullPointerException extends Exception implements Throwable +
        class NullPointerException extends Exception implements Throwable, Stringable { }
        @@ -19090,7 +19394,7 @@

        Return

        MagicObject\Exceptions\ObjectParsingError

        Declaration

        -
        class ObjectParsingError extends Exception implements Throwable +
        class ObjectParsingError extends Exception implements Throwable, Stringable { }
        @@ -19128,7 +19432,7 @@

        Return

        MagicObject\Exceptions\UnknownErrorException

        Declaration

        -
        class UnknownErrorException extends Exception implements Throwable +
        class UnknownErrorException extends Exception implements Throwable, Stringable { }
        @@ -19178,7 +19482,7 @@

        Return

        MagicObject\Exceptions\UnsupportedDatabaseException

        Declaration

        -
        class UnsupportedDatabaseException extends Exception implements Throwable +
        class UnsupportedDatabaseException extends Exception implements Throwable, Stringable { }
        @@ -19228,7 +19532,7 @@

        Return

        MagicObject\Exceptions\YamlException

        Declaration

        -
        class YamlException extends Exception implements Throwable +
        class YamlException extends Exception implements Throwable, Stringable { }
        @@ -19276,7 +19580,7 @@

        Return

        MagicObject\Exceptions\ZeroArgumentException

        Declaration

        -
        class ZeroArgumentException extends InvalidArgumentException implements Throwable +
        class ZeroArgumentException extends InvalidArgumentException implements Throwable, Stringable { }
        @@ -19652,7 +19956,7 @@

        Return

        MagicObject\File\PicoUploadFile

        Declaration

        -
        class PicoUploadFile +
        class PicoUploadFile implements Stringable { }
        @@ -19815,7 +20119,7 @@

        Return

        MagicObject\File\PicoUploadFileContainer

        Declaration

        -
        class PicoUploadFileContainer +
        class PicoUploadFileContainer implements Stringable { }
        @@ -20210,7 +20514,7 @@

        Description

        2. picoTableName

        Declaration

        -
        protected string $picoTableName = '';
        +
        protected string $picoTableName = '';

        Description

        Table name

        @@ -20227,7 +20531,172 @@

        Description

        Methods

        -
        1. dumpStructure
        +
        1. getDatabaseDumpTool
        +

        Declaration

        +
        private function getDatabaseDumpTool(
        +    string $databaseType
        +) : PicoDatabaseUtilBase|string
        {
        }
        +
        +

        Description

        +

        Instantiates the appropriate database dump utility based on the database type.

        +

        This factory method maps specific database engines to their respective +utility classes (MySQL, PostgreSQL, SQLite, or SQL Server) to handle +database-specific dumping operations.

        +

        Parameters

        +
        $databaseType
        +

        The type of database (e.g., MySQL, PostgreSQL, SQLite).

        +

        Return

        +
        PicoDatabaseUtilBase|string
        +

        Returns an instance of the database utility tool +or an empty string if the database type is not supported.

        +
        +
        +
        +
        2. dumpStructureFromSchema
        +

        Declaration

        +
        public function dumpStructureFromSchema(
        +    array $entity,
        +    string $databaseType,
        +    bool $createIfNotExists = false,
        +    bool $dropIfExists = false,
        +    string $engine = 'InnoDB',
        +    string $charset = 'utf8mb4'
        +) : string
        {
        }
        +
        +

        Description

        +

        Generates a SQL CREATE TABLE statement based on the provided entity schema.

        +
          +
        • This method detects the database type and utilizes the appropriate utility +class to format columns, primary keys, and auto-increment constraints. +It supports MySQL, MariaDB, PostgreSQL, SQLite, and SQL Server.
        • +
        +

        Parameters

        +
        $entity
        +

        The entity schema containing 'name' and 'columns' (an array of column definitions).

        +
        $databaseType
        +

        The type of database (e.g., PicoDatabaseType::DATABASE_TYPE_MARIADB).

        +
        $createIfNotExists
        +

        Whether to add the "IF NOT EXISTS" clause to the CREATE statement.

        +
        $dropIfExists
        +

        Whether to prepend a commented-out "DROP TABLE IF EXISTS" statement.

        +
        $engine
        +

        The storage engine to use (default is 'InnoDB', primarily for MySQL/MariaDB).

        +
        $charset
        +

        The character set for the table (default is 'utf8mb4').

        +

        Return

        +
        string
        +

        The generated SQL DDL statement or an empty string if the database type is unsupported.

        +
        +
        +
        +
        3. dumpDataFromSchema
        +

        Declaration

        +
        public function dumpDataFromSchema(
        +    array $entity,
        +    string $databaseType,
        +    int $batchSize = 100
        +) : string
        {
        }
        +
        +

        Description

        +

        Dumps data from a schema entity into batched SQL INSERT statements.

        +

        Parameters

        +
        $entity
        +

        The entity containing table name, columns, and data.

        +
        $databaseType
        +

        The database type (e.g., MySQL, PostgreSQL).

        +
        $batchSize
        +

        Number of records per INSERT statement.

        +

        Return

        +
        string
        +

        The generated SQL script.

        +
        +
        +
        +
        4. prepareColumnInfo
        +

        Declaration

        +
        private function prepareColumnInfo(
        +    array $entity
        +) : array
        {
        }
        +
        +

        Description

        +

        Prepares and normalizes column metadata from the entity schema.

        +

        This method iterates through the column definitions of an entity and +transforms them into a structured associative array of column information, +indexed by the column names.

        +

        Parameters

        +
        $entity
        +

        The entity schema containing the 'columns' definition.

        +

        Return

        +
        array +

        \stdClass> An associative array where keys are column names +and values are column metadata objects.

        +
        +
        +
        +
        5. fixData
        +

        Declaration

        +
        public function fixData(
        +    array $data,
        +    array $columnInfo,
        +    bool $isPgSql,
        +    bool $isSqlite,
        +    bool $isSqlServer
        +) : array
        {
        }
        +
        +

        Description

        +

        Formats raw data values based on column metadata and database requirements.

        +

        Parameters

        +
        $data
        +

        Associative array of column => value.

        +
        $columnInfo
        +

        Metadata for each column.

        +
        $isPgSql
        +

        Whether the target database is PostgreSQL.

        +
        $isSqlite
        +

        Whether the target database is SQLite.

        +
        $isSqlServer
        +

        Whether the target database is SQL Server.

        +

        Return

        +
        array
        +

        The formatted data array.

        +
        +
        +
        +
        6. toBoolean
        +

        Declaration

        +
        public function toBoolean(
        +    mixed $value
        +) : bool
        {
        }
        +
        +

        Description

        +

        Converts a value to a boolean representation.

        +

        Parameters

        +
        $value
        +

        The value to check.

        +

        Return

        +
        bool
        +
        +
        +
        +
        +
        7. getColumnInfo
        +

        Declaration

        +
        public function getColumnInfo(
        +    array $column
        +) : stdClass
        {
        }
        +
        +

        Description

        +

        Normalizes column metadata into a standard object.

        +

        Parameters

        +
        $column
        +

        The column definition from schema.

        +

        Return

        +
        stdClass
        +
        +
        +
        +
        +
        8. dumpStructure

        Declaration

        public function dumpStructure(
            MagicObject $entity,
        @@ -20259,7 +20728,7 @@

        Return

        -
        2. dumpStructureTable
        +
        9. dumpStructureTable

        Declaration

        public function dumpStructureTable(
            PicoTableInfo $tableInfo,
        @@ -20291,7 +20760,41 @@

        Return

        -
        3. getTableInfo
        +
        10. normalizeDbType
        +

        Declaration

        +
        public function normalizeDbType(
        +    string $dbType
        +) : string
        {
        }
        +
        +

        Description

        +

        Normalize a database-specific column type into a generic type.

        +

        Supported DBMS: MySQL, MariaDB, PostgreSQL, SQLite, SQL Server

        +

        Possible return values:

        +
          +
        • string
        • +
        • integer
        • +
        • float
        • +
        • boolean
        • +
        • date
        • +
        • time
        • +
        • datetime
        • +
        • binary
        • +
        • json
        • +
        • uuid
        • +
        • enum
        • +
        • geometry
        • +
        • unknown
        • +
        +

        Parameters

        +
        $dbType
        +

        The raw column type from the database (e.g., VARCHAR(255), INT, NUMERIC(10,2), TEXT, etc.)

        +

        Return

        +
        string
        +

        One of the normalized type names listed above.

        +
        +
        +
        +
        11. getTableInfo

        Declaration

        public function getTableInfo(
            MagicObject $entity
        @@ -20308,7 +20811,7 @@

        Return

        -
        4. updateQueryAlterTableAddColumn
        +
        12. updateQueryAlterTableAddColumn

        Declaration

        public function updateQueryAlterTableAddColumn(
            string $query,
        @@ -20331,7 +20834,7 @@

        Return

        -
        5. updateQueryAlterTableNullable
        +
        13. updateQueryAlterTableNullable

        Declaration

        public function updateQueryAlterTableNullable(
            string $query,
        @@ -20351,7 +20854,7 @@

        Return

        -
        6. updateQueryAlterTableDefaultValue
        +
        14. updateQueryAlterTableDefaultValue

        Declaration

        public function updateQueryAlterTableDefaultValue(
            string $query,
        @@ -20384,7 +20887,7 @@

        Return

        -
        7. fixDefaultValue
        +
        15. fixDefaultValue

        Declaration

        public function fixDefaultValue(
            mixed $defaultValue,
        @@ -20410,7 +20913,7 @@

        Return

        -
        8. createAlterTableAdd
        +
        16. createAlterTableAdd

        Declaration

        public function createAlterTableAdd(
            MagicObject|MagicObject[] $entity,
        @@ -20449,7 +20952,7 @@

        Return

        -
        9. getDatabase
        +
        17. getDatabase

        Declaration

        private function getDatabase(
            PicoDatabase|null $database,
        @@ -20469,7 +20972,7 @@

        Return

        -
        10. getDatabaseType
        +
        18. getDatabaseType

        Declaration

        public function getDatabaseType(
            PicoDatabase $database
        @@ -20486,7 +20989,7 @@

        Return

        -
        11. getTableName
        +
        19. getTableName

        Declaration

        private function getTableName(
            string|null $tableName,
        @@ -20506,7 +21009,7 @@

        Return

        -
        12. createQueryAlterTable
        +
        20. createQueryAlterTable

        Declaration

        public function createQueryAlterTable(
            string $tableName,
        @@ -20529,7 +21032,7 @@

        Return

        -
        13. getColumnNameList
        +
        21. getColumnNameList

        Declaration

        public function getColumnNameList(
            MagicObject[] $entities
        @@ -20548,7 +21051,7 @@

        Return

        -
        14. createAlterTableAddFromEntities
        +
        22. createAlterTableAddFromEntities

        Declaration

        public function createAlterTableAddFromEntities(
            MagicObject[] $entities,
        @@ -20592,7 +21095,7 @@

        Return

        -
        15. createAlterTableAddFromEntity
        +
        23. createAlterTableAddFromEntity

        Declaration

        public function createAlterTableAddFromEntity(
            MagicObject $entity,
        @@ -20620,7 +21123,7 @@

        Return

        -
        16. addPrimaryKey
        +
        24. addPrimaryKey

        Declaration

        private function addPrimaryKey(
            string[] $queryAlter,
        @@ -20646,7 +21149,7 @@

        Return

        -
        17. addAutoIncrement
        +
        25. addAutoIncrement

        Declaration

        private function addAutoIncrement(
            string[] $queryAlter,
        @@ -20675,7 +21178,7 @@

        Return

        -
        18. getAutoIncrementKey
        +
        26. getAutoIncrementKey

        Declaration

        public function getAutoIncrementKey(
            PicoTableInfo $tableInfo
        @@ -20692,7 +21195,7 @@

        Return

        -
        19. getMergedTableInfoOld
        +
        27. getMergedTableInfoOld

        Declaration

        public function getMergedTableInfoOld(
            MagicObject[] $entities
        @@ -20709,7 +21212,7 @@

        Return

        -
        20. getMergedTableInfo
        +
        28. getMergedTableInfo

        Declaration

        public function getMergedTableInfo(
            MagicObject[] $entities
        @@ -20726,7 +21229,7 @@

        Return

        -
        21. dumpData
        +
        29. dumpData

        Declaration

        public function dumpData(
            MagicObject|PicoPageData $data,
        @@ -20795,7 +21298,7 @@

        Description

        2. baseDir

        Declaration

        -
        protected string $baseDir = '';
        +
        protected string $baseDir = '';

        Description

        Base directory for saving generated DTO files.

        @@ -20804,7 +21307,7 @@

        Description

        3. baseNamespaceDto

        Declaration

        -
        protected string $baseNamespaceDto = '';
        +
        protected string $baseNamespaceDto = '';

        Description

        Base namespace for the generated DTOs.

        @@ -20813,7 +21316,7 @@

        Description

        4. tableName

        Declaration

        -
        protected string $tableName = '';
        +
        protected string $tableName = '';

        Description

        Table name to generate DTO for.

        @@ -21032,7 +21535,7 @@

        Description

        Users must provide appropriate parameters so that the entity class can be directly used in the application.

        Constants

        -
        const TYPE_CHARACTER_VARYING = "character varying";
        const TYPE_TINYINT_1 = "tinyint(1)";
        const TYPE_VARCHAR_255 = "varchar(255)";
        const TYPE_TIMESTAMP_WITH_TIME_ZONE = "timestamp with time zone";
        const TYPE_TIMESTAMP_WITHOUT_TIME_ZONE = "timestamp without time zone";

        Properties

        +
        const TYPE_CHARACTER_VARYING = 'character varying';
        const TYPE_TINYINT_1 = 'tinyint(1)';
        const TYPE_VARCHAR_255 = 'varchar(255)';
        const TYPE_TIMESTAMP_WITH_TIME_ZONE = 'timestamp with time zone';
        const TYPE_TIMESTAMP_WITHOUT_TIME_ZONE = 'timestamp without time zone';

        Properties

        1. database

        Declaration

        @@ -21045,7 +21548,7 @@

        Description

        2. baseDir

        Declaration

        -
        protected string $baseDir = '';
        +
        protected string $baseDir = '';

        Description

        Base directory for generated files.

        @@ -21054,7 +21557,7 @@

        Description

        3. baseNamespace

        Declaration

        -
        protected string $baseNamespace = '';
        +
        protected string $baseNamespace = '';

        Description

        Base namespace for the entity classes.

        @@ -21063,7 +21566,7 @@

        Description

        4. tableName

        Declaration

        -
        protected string $tableName = '';
        +
        protected string $tableName = '';

        Description

        Table name for which the entity is generated.

        @@ -21381,7 +21884,7 @@

        Return

        MagicObject\Language\PicoEntityLanguage

        Declaration

        -
        class PicoEntityLanguage +
        class PicoEntityLanguage implements Stringable { }
        @@ -21400,7 +21903,7 @@

        Description

        labels and handling different language options.

        Constants

        -
        const ANNOTATION_TABLE = "Table";
        const ANNOTATION_LANGUAGE = "Language";

        Properties

        +
        const ANNOTATION_TABLE = 'Table';
        const ANNOTATION_LANGUAGE = 'Language';

        Properties

        2. _currentLanguage

        Declaration

        @@ -21440,7 +21943,7 @@

        Description

        6. _entityClassName

        Declaration

        -
        private string $_entityClassName = '';
        +
        private string $_entityClassName = '';

        Description

        Entity class name.

        @@ -21449,7 +21952,7 @@

        Description

        7. _entityLanguage

        Declaration

        -
        private string $_entityLanguage = '';
        +
        private string $_entityLanguage = '';

        Description

        Entity language code.

        @@ -22122,7 +22625,7 @@

        Description

        5. orderType

        Declaration

        -
        private string $orderType = '';
        +
        private string $orderType = '';

        Description

        Type of order (ASC or DESC).

        @@ -22566,7 +23069,7 @@

        Return

        MagicObject\Request\InputCookie

        Declaration

        -
        class InputCookie extends MagicObject\Request\PicoRequestBase +
        class InputCookie extends MagicObject\Request\PicoRequestBase implements Stringable { }
        @@ -22635,7 +23138,7 @@

        Return

        MagicObject\Request\InputEnv

        Declaration

        -
        class InputEnv extends MagicObject\Request\PicoRequestBase +
        class InputEnv extends MagicObject\Request\PicoRequestBase implements Stringable { }
        @@ -22690,7 +23193,7 @@

        Description

        MagicObject\Request\InputFiles

        Declaration

        -
        class InputFiles extends MagicObject\File\PicoUploadFile +
        class InputFiles extends MagicObject\File\PicoUploadFile implements Stringable { }
        @@ -22704,7 +23207,7 @@

        Package

        MagicObject\Request\InputGet

        Declaration

        -
        class InputGet extends MagicObject\Request\PicoRequestBase +
        class InputGet extends MagicObject\Request\PicoRequestBase implements Stringable { }
        @@ -22772,7 +23275,7 @@

        Return

        MagicObject\Request\InputPost

        Declaration

        -
        class InputPost extends MagicObject\Request\PicoRequestBase +
        class InputPost extends MagicObject\Request\PicoRequestBase implements Stringable { }
        @@ -22840,7 +23343,7 @@

        Return

        MagicObject\Request\InputRequest

        Declaration

        -
        class InputRequest extends MagicObject\Request\PicoRequestBase +
        class InputRequest extends MagicObject\Request\PicoRequestBase implements Stringable { }
        @@ -22895,7 +23398,7 @@

        Description

        MagicObject\Request\InputServer

        Declaration

        -
        class InputServer extends MagicObject\Request\PicoRequestBase +
        class InputServer extends MagicObject\Request\PicoRequestBase implements Stringable { }
        @@ -23036,7 +23539,7 @@

        Return

        MagicObject\Request\InputSessions

        Declaration

        -
        class InputSessions extends MagicObject\Session\PicoSession +
        class InputSessions extends MagicObject\Session\PicoSession implements Stringable { }
        @@ -23097,7 +23600,7 @@

        Constants

        MagicObject\Request\PicoRequest

        Declaration

        -
        class PicoRequest extends MagicObject\Request\PicoRequestBase +
        class PicoRequest extends MagicObject\Request\PicoRequestBase implements Stringable { }
        @@ -23116,7 +23619,7 @@

        Description

        various types of HTTP requests (GET, POST, COOKIE, ENV, SERVER).

        Constants

        -
        const ACTION_DETAIL = "detail";
        const ACTION_EDIT = "edit";
        const ACTION_ADD = "add";

        Properties

        +
        const ACTION_DETAIL = 'detail';
        const ACTION_EDIT = 'edit';
        const ACTION_ADD = 'add';

        Properties

        1. _forceScalar

        Declaration

        @@ -23200,7 +23703,7 @@

        Return

        MagicObject\Request\PicoRequestBase

        Declaration

        -
        class PicoRequestBase extends stdClass +
        class PicoRequestBase extends stdClass implements Stringable { }
        @@ -23218,7 +23721,7 @@

        Description

        and request type checking (GET, POST, AJAX, etc.).

        Constants

        -
        const JSON = "JSON";

        Properties

        +
        const JSON = 'JSON';

        Properties

        1. _classParams

        Declaration

        @@ -23915,7 +24418,7 @@

        Return

        MagicObject\Response\Generated\JSONSelectOption

        Declaration

        -
        class JSONSelectOption +
        class JSONSelectOption implements Stringable { }
        @@ -24008,7 +24511,7 @@

        Return

        MagicObject\Response\Generated\PicoSelectOption

        Declaration

        -
        class PicoSelectOption +
        class PicoSelectOption implements Stringable { }
        @@ -24194,7 +24697,7 @@

        Description

        Handles sending HTTP responses with various content types and status codes.

        Constants

        -
        const APPLICATION_JSON = "application/json";

        Methods

        +
        const APPLICATION_JSON = 'application/json';

        Methods

        1. sendJSON

        Declaration

        @@ -24425,11 +24928,11 @@

        Description

        WARNING: Use your own key instead of using default key

        Constants

        -
        const RANDOM_KEY_1 = "68e656b251e67e8358bef8483ab0d51c";
        const RANDOM_KEY_2 = "6619f3e7a1a9f0e75838d41ff368f728";
        +
        const RANDOM_KEY_1 = '68e656b251e67e8358bef8483ab0d51c';
        const RANDOM_KEY_2 = '6619f3e7a1a9f0e75838d41ff368f728';

        MagicObject\Session\PicoSession

        Declaration

        -
        class PicoSession +
        class PicoSession implements Stringable { }
        @@ -24449,7 +24952,7 @@

        Description

        configuration, and the ability to store/retrieve session data.

        Constants

        -
        const SESSION_STARTED = true;
        const SESSION_NOT_STARTED = false;
        const SAME_SITE_LAX = "Lax";
        const SAME_SITE_STRICT = "Strict";
        const SAME_SITE_NONE = "None";

        Properties

        +
        const SESSION_STARTED = true;
        const SESSION_NOT_STARTED = false;
        const SAME_SITE_LAX = 'Lax';
        const SAME_SITE_STRICT = 'Strict';
        const SAME_SITE_NONE = 'None';

        Properties

        1. _sessionState

        Declaration

        @@ -24932,7 +25435,7 @@

        Description

        2. table

        Declaration

        -
        private string $table = 'sessions';
        +
        private string $table = 'sessions';

        Description

        Table name used for storing session data.

        @@ -25148,7 +25651,7 @@

        Return

        MagicObject\Util\ClassUtil\ExtendedReflectionClass

        Declaration

        -
        class ExtendedReflectionClass extends ReflectionClass implements Reflector +
        class ExtendedReflectionClass extends ReflectionClass implements Reflector, Stringable { }
        @@ -25314,7 +25817,7 @@

        Description

        that rely on annotations for configuration, routing, or metadata purposes.

        Constants

        -
        const METHOD = "method";
        const PROPERTY = "property";

        Properties

        +
        const METHOD = 'method';
        const PROPERTY = 'property';

        Properties

        1. rawDocBlock

        Declaration

        @@ -25336,7 +25839,7 @@

        Description

        3. keyPattern

        Declaration

        -
        private string $keyPattern = '[A-z0-9\\_\\-]+';
        +
        private string $keyPattern = '[A-z0-9\\_\\-]+';

        Description

        Key pattern

        @@ -25345,9 +25848,9 @@

        Description

        4. endPattern

        Declaration

        -
        private string $endPattern = '[ ]*(?:@| +
        private string $endPattern = '[ ]*(?:@| | -)';
        +)'
        ;

        Description

        End pattern

        @@ -26129,31 +26632,31 @@

        Package

    Constants

    -
    const TYPE_TINYINT_1 = "tinyint(1)";
    const TYPE_DOUBLE_PRECISION = "double precision";
    const TYPE_CHARACTER_VARYING = "character varying";

    Properties

    +
    const TYPE_TINYINT_1 = 'tinyint(1)';
    const TYPE_DOUBLE_PRECISION = 'double precision';
    const TYPE_CHARACTER_VARYING = 'character varying';

    Properties

    1. mysqlToPostgresql

    Declaration

    private array $mysqlToPostgresql = array ( - 'tinyint(1)' => 'boolean', - 'tinyint' => 'smallint', - 'smallint' => 'smallint', - 'int' => 'integer', - 'bigint' => 'bigint', - 'float' => 'real', - 'double' => 'double precision', - 'decimal' => 'numeric', - 'varchar' => 'character varying', - 'char' => 'character', - 'text' => 'text', - 'longtext' => 'text', - 'tinytext' => 'text', - 'datetime' => 'timestamp', - 'timestamp' => 'timestamp with time zone', - 'date' => 'date', - 'time' => 'time', - 'year' => 'smallint', - 'json' => 'jsonb', - 'uuid' => 'uuid', + 'tinyint(1)' => 'boolean', + 'tinyint' => 'smallint', + 'smallint' => 'smallint', + 'int' => 'integer', + 'bigint' => 'bigint', + 'float' => 'real', + 'double' => 'double precision', + 'decimal' => 'numeric', + 'varchar' => 'character varying', + 'char' => 'character', + 'text' => 'text', + 'longtext' => 'text', + 'tinytext' => 'text', + 'datetime' => 'timestamp', + 'timestamp' => 'timestamp with time zone', + 'date' => 'date', + 'time' => 'time', + 'year' => 'smallint', + 'json' => 'jsonb', + 'uuid' => 'uuid', );

    Description

    @@ -26164,26 +26667,26 @@

    Description

    2. mysqlToSQLite

    Declaration

    private array $mysqlToSQLite = array ( - 'tinyint(1)' => 'INTEGER', - 'tinyint' => 'INTEGER', - 'smallint' => 'INTEGER', - 'int' => 'INTEGER', - 'bigint' => 'INTEGER', - 'float' => 'REAL', - 'double' => 'REAL', - 'decimal' => 'REAL', - 'varchar' => 'NVARCHAR', - 'char' => 'TEXT', - 'longtext' => 'TEXT', - 'text' => 'TEXT', - 'tinytext' => 'TEXT', - 'datetime' => 'DATETIME', - 'timestamp' => 'TIMESTAMP', - 'date' => 'DATE', - 'time' => 'TIME', - 'year' => 'INTEGER', - 'json' => 'TEXT', - 'uuid' => 'TEXT', + 'tinyint(1)' => 'INTEGER', + 'tinyint' => 'INTEGER', + 'smallint' => 'INTEGER', + 'int' => 'INTEGER', + 'bigint' => 'INTEGER', + 'float' => 'REAL', + 'double' => 'REAL', + 'decimal' => 'REAL', + 'varchar' => 'NVARCHAR', + 'char' => 'TEXT', + 'longtext' => 'TEXT', + 'text' => 'TEXT', + 'tinytext' => 'TEXT', + 'datetime' => 'DATETIME', + 'timestamp' => 'TIMESTAMP', + 'date' => 'DATE', + 'time' => 'TIME', + 'year' => 'INTEGER', + 'json' => 'TEXT', + 'uuid' => 'TEXT', );

    Description

    @@ -26194,22 +26697,22 @@

    Description

    3. postgresqlToMySQL

    Declaration

    private array $postgresqlToMySQL = array ( - 'boolean' => 'tinyint(1)', - 'smallint' => 'smallint', - 'integer' => 'int', - 'bigint' => 'bigint', - 'real' => 'float', - 'double precision' => 'double', - 'character varying' => 'varchar', - 'character' => 'char', - 'text' => 'text', - 'timestamp' => 'datetime', - 'timestamp with time zone' => 'timestamp', - 'timestamptz' => 'timestamp', - 'date' => 'date', - 'time' => 'time', - 'jsonb' => 'json', - 'uuid' => 'uuid', + 'boolean' => 'tinyint(1)', + 'smallint' => 'smallint', + 'integer' => 'int', + 'bigint' => 'bigint', + 'real' => 'float', + 'double precision' => 'double', + 'character varying' => 'varchar', + 'character' => 'char', + 'text' => 'text', + 'timestamp' => 'datetime', + 'timestamp with time zone' => 'timestamp', + 'timestamptz' => 'timestamp', + 'date' => 'date', + 'time' => 'time', + 'jsonb' => 'json', + 'uuid' => 'uuid', );

    Description

    @@ -26220,21 +26723,21 @@

    Description

    4. postgresqlToSQLite

    Declaration

    private array $postgresqlToSQLite = array ( - 'boolean' => 'INTEGER', - 'smallint' => 'INTEGER', - 'integer' => 'INTEGER', - 'bigint' => 'INTEGER', - 'real' => 'REAL', - 'double precision' => 'REAL', - 'character varying' => 'TEXT', - 'character' => 'TEXT', - 'text' => 'TEXT', - 'timestamp' => 'TIMESTAMP', - 'datetime' => 'DATETIME', - 'date' => 'DATE', - 'time' => 'TIME', - 'jsonb' => 'TEXT', - 'uuid' => 'TEXT', + 'boolean' => 'INTEGER', + 'smallint' => 'INTEGER', + 'integer' => 'INTEGER', + 'bigint' => 'INTEGER', + 'real' => 'REAL', + 'double precision' => 'REAL', + 'character varying' => 'TEXT', + 'character' => 'TEXT', + 'text' => 'TEXT', + 'timestamp' => 'TIMESTAMP', + 'datetime' => 'DATETIME', + 'date' => 'DATE', + 'time' => 'TIME', + 'jsonb' => 'TEXT', + 'uuid' => 'TEXT', );

    Description

    @@ -26245,11 +26748,11 @@

    Description

    5. sqliteToMySQL

    Declaration

    private array $sqliteToMySQL = array ( - 'NVARCHAR' => 'varchar', - 'INTEGER' => 'int', - 'REAL' => 'float', - 'TEXT' => 'text', - 'BLOB' => 'blob', + 'NVARCHAR' => 'varchar', + 'INTEGER' => 'int', + 'REAL' => 'float', + 'TEXT' => 'text', + 'BLOB' => 'blob', );

    Description

    @@ -26260,11 +26763,11 @@

    Description

    6. sqliteToPostgresql

    Declaration

    private array $sqliteToPostgresql = array ( - 'NVARCHAR' => 'character varying', - 'INTEGER' => 'integer', - 'REAL' => 'real', - 'TEXT' => 'text', - 'BLOB' => 'bytea', + 'NVARCHAR' => 'character varying', + 'INTEGER' => 'integer', + 'REAL' => 'real', + 'TEXT' => 'text', + 'BLOB' => 'bytea', );

    Description

    @@ -27108,7 +27611,7 @@

    Package

    Constants

    -
    const INVALID_CREATE_TABLE_STATEMENT_MYSQL = "Invalid MySQL CREATE TABLE statement format.";

    Properties

    +
    const INVALID_CREATE_TABLE_STATEMENT_MYSQL = 'Invalid MySQL CREATE TABLE statement format.';

    Properties

    1. dbToSqlite

    Declaration

    @@ -27892,7 +28395,7 @@

    Description

    and manage data types, ensuring safe and efficient interactions with the database.

    Constants

    -
    const INLINE_TRIM = " \r\n\t ";

    Methods

    +
    const INLINE_TRIM = ' \r\n\t ';

    Methods

    2. specificationFromParams

    Declaration

    @@ -28255,9 +28758,30 @@

    Declaration

    { }

    Constants

    -
    const KEY_PRIMARY_KEY = "primary_key";
    const KEY_NULLABLE = "nullable";
    const KEY_AUTO_INCREMENT = "auto_increment";

    Methods

    +
    const KEY_PRIMARY_KEY = 'primary_key';
    const KEY_NULLABLE = 'nullable';
    const KEY_AUTO_INCREMENT = 'auto_increment';

    Methods

    +
    +
    1. getPrimaryKeyNames
    +

    Declaration

    +
    public function getPrimaryKeyNames(
    +    array[] $primaryKeys
    +) : string[]
    {
    }
    +
    +

    Description

    +

    Extracts column names from an array of primary key definitions.

    +

    This helper method iterates through a list of primary key attribute arrays +and retrieves only the 'name' identifier for each column. It is typically +used to determine if a table has a composite primary key.

    +

    Parameters

    +
    $primaryKeys
    +

    An array of associative arrays, where each element +must contain a 'name' key representing the column name.

    +

    Return

    +
    string[]
    +

    An array containing only the names of the primary key columns.

    +
    +
    -
    1. getAutoIncrementKey
    +
    2. getAutoIncrementKey

    Declaration

    public function getAutoIncrementKey(
        PicoTableInfo $tableInfo
    @@ -28274,7 +28798,7 @@

    Return

    -
    2. isFetchingDataNotRequired
    +
    3. isFetchingDataNotRequired

    Declaration

    private function isFetchingDataNotRequired(
        MagicObject $data,
    @@ -28303,7 +28827,7 @@

    Return

    -
    3. isArrayMagicObject
    +
    4. isArrayMagicObject

    Declaration

    private function isArrayMagicObject(
        mixed $data
    @@ -28323,7 +28847,7 @@

    Return

    -
    4. isCallbackFunction
    +
    5. isCallbackFunction

    Declaration

    private function isCallbackFunction(
        mixed $callbackFunction
    @@ -28342,7 +28866,7 @@

    Return

    -
    5. getRecords
    +
    6. getRecords

    Declaration

    private function getRecords(
        string $picoTableName,
    @@ -28378,7 +28902,7 @@

    Return

    -
    6. dumpData
    +
    7. dumpData

    Declaration

    public function dumpData(
        array $columns,
    @@ -28413,7 +28937,7 @@

    Return

    -
    7. dumpRecords
    +
    8. dumpRecords

    Declaration

    public function dumpRecords(
        array $columns,
    @@ -28438,7 +28962,7 @@

    Return

    -
    8. getMaxRecord
    +
    9. getMaxRecord

    Declaration

    public function getMaxRecord(
        SecretObject $tableInfo,
    @@ -28461,7 +28985,7 @@

    Return

    -
    9. processDataMapping
    +
    10. processDataMapping

    Declaration

    public function processDataMapping(
        mixed[] $data,
    @@ -28487,7 +29011,7 @@

    Return

    -
    10. createMapTemplate
    +
    11. createMapTemplate

    Declaration

    public function createMapTemplate(
        PicoDatabase $databaseSource,
    @@ -28513,7 +29037,7 @@

    Return

    -
    11. updateConfigTable
    +
    12. updateConfigTable

    Declaration

    public function updateConfigTable(
        PicoDatabase $databaseSource,
    @@ -28548,7 +29072,7 @@

    Return

    -
    12. importDataTable
    +
    13. importDataTable

    Declaration

    public function importDataTable(
        PicoDatabase $databaseSource,
    @@ -28587,7 +29111,7 @@

    Return

    -
    13. importData
    +
    14. importData

    Declaration

    public function importData(
        SecretObject $config,
    @@ -28642,7 +29166,7 @@

    Return

    -
    14. shoudCreatePreImportScript
    +
    15. shoudCreatePreImportScript

    Declaration

    public function shoudCreatePreImportScript(
        string $tableNameTarget,
    @@ -28675,7 +29199,7 @@

    Return

    -
    15. fixData
    +
    16. fixData

    Declaration

    public function fixData(
        mixed $value
    @@ -28694,7 +29218,7 @@

    Return

    -
    16. fixBooleanData
    +
    17. fixBooleanData

    Declaration

    public function fixBooleanData(
        mixed[] $data,
    @@ -28721,7 +29245,7 @@

    Return

    -
    17. fixIntegerData
    +
    18. fixIntegerData

    Declaration

    public function fixIntegerData(
        mixed[] $data,
    @@ -28747,7 +29271,7 @@

    Return

    -
    18. fixFloatData
    +
    19. fixFloatData

    Declaration

    public function fixFloatData(
        mixed[] $data,
    @@ -28773,7 +29297,7 @@

    Return

    -
    19. insert
    +
    20. insert

    Declaration

    public function insert(
        string $tableName,
    @@ -28797,7 +29321,7 @@

    Return

    -
    20. dumpRecord
    +
    21. dumpRecord

    Declaration

    public function dumpRecord(
        array $columns,
    @@ -28820,7 +29344,7 @@

    Return

    -
    21. fixImportData
    +
    22. fixImportData

    Declaration

    public function fixImportData(
        mixed[] $data,
    @@ -28843,7 +29367,7 @@

    Return

    -
    22. showColumns
    +
    23. showColumns

    Declaration

    public function showColumns(
        PicoDatabase $database,
    @@ -28868,7 +29392,7 @@

    Throws

    -
    23. convertMySqlToPostgreSql
    +
    24. convertMySqlToPostgreSql

    Declaration

    public function convertMySqlToPostgreSql(
        string $mysqlQuery
    @@ -28894,7 +29418,7 @@

    Throws

    -
    24. convertPostgreSqlToMySql
    +
    25. convertPostgreSqlToMySql

    Declaration

    public function convertPostgreSqlToMySql(
        string $postgresqlQuery
    @@ -28920,7 +29444,7 @@

    Throws

    -
    25. isNativeValue
    +
    26. isNativeValue

    Declaration

    public static function isNativeValue(
        string $defaultValue
    @@ -28939,7 +29463,7 @@

    Return

    -
    26. isTypeBoolean
    +
    27. isTypeBoolean

    Declaration

    public static function isTypeBoolean(
        string $type
    @@ -28958,7 +29482,7 @@

    Return

    -
    27. isTypeText
    +
    28. isTypeText

    Declaration

    public static function isTypeText(
        string $type
    @@ -28977,7 +29501,7 @@

    Return

    -
    28. isTypeInteger
    +
    29. isTypeInteger

    Declaration

    public static function isTypeInteger(
        string $type
    @@ -28996,7 +29520,7 @@

    Return

    -
    29. isTypeFloat
    +
    30. isTypeFloat

    Declaration

    public static function isTypeFloat(
        string $type
    @@ -29015,7 +29539,27 @@

    Return

    -
    30. isArray
    +
    31. isNullable
    +

    Declaration

    +
    public static function isNullable(
    +    array $column
    +) : bool
    {
    }
    +
    +

    Description

    +

    Determine whether a given column definition is marked as nullable.

    +

    This method checks the column metadata array for the KEY_NULLABLE flag. +It returns true if the flag is explicitly set to boolean true or +the string value "true" (case-insensitive, with surrounding whitespace trimmed).

    +

    Parameters

    +
    $column
    +

    The column definition array containing metadata keys.

    +

    Return

    +
    bool
    +

    Returns true if the column is nullable, false otherwise.

    +
    +
    +
    +
    32. isArray

    Declaration

    public static function isArray(
        mixed $value
    @@ -29033,7 +29577,7 @@

    Return

    -
    31. isNotEmpty
    +
    33. isNotEmpty

    Declaration

    public function isNotEmpty(
        array $array
    @@ -29363,33 +29907,7 @@

    Return

    -
    3. createColumn
    -

    Declaration

    -
    public function createColumn(
    -    array $column
    -) : string
    {
    }
    -
    -

    Description

    -

    Creates a column definition for a SQL statement.

    -

    This method constructs a SQL column definition based on the provided column details, -including the column name, data type, nullability, and default value. The resulting -definition is formatted for use in a CREATE TABLE statement.

    -

    Parameters

    -
    $column
    -

    An associative array containing details about the column:

    -
      -
    • string name: The name of the column.
    • -
    • string type: The data type of the column (e.g., VARCHAR, INT).
    • -
    • bool|string nullable: Indicates if the column allows NULL values (true or 'true' for NULL; otherwise, NOT NULL).
    • -
    • mixed defaultValue: The default value for the column (optional).
    • -
    -

    Return

    -
    string
    -

    The SQL column definition formatted as a string, suitable for inclusion in a CREATE TABLE statement.

    -
    -
    -
    -
    4. fixAutoIncrementType
    +
    3. fixAutoIncrementType

    Declaration

    private function fixAutoIncrementType(
        array $column,
    @@ -29420,9 +29938,9 @@

    Return

    -
    5. createColumnPostgre
    +
    4. createColumn

    Declaration

    -
    public function createColumnPostgre(
    +
    public function createColumn(
        array $column,
        array|null $autoIncrementKeys,
        array $primaryKeys
    @@ -29458,7 +29976,7 @@

    Return

    -
    6. fixDefaultValue
    +
    5. fixDefaultValue

    Declaration

    public function fixDefaultValue(
        mixed $defaultValue,
    @@ -29482,7 +30000,7 @@

    Return

    -
    9. autoConfigureImportData
    +
    8. autoConfigureImportData

    Declaration

    public function autoConfigureImportData(
        SecretObject $config
    @@ -29502,7 +30020,7 @@

    Return

    -
    11. getColumnType
    +
    10. getColumnType

    Declaration

    public function getColumnType(
        string $columnType
    @@ -29784,32 +30302,43 @@

    Return

    9. createColumn

    Declaration

    public function createColumn(
    -    array $column
    +    array $column,
    +    array $autoIncrementKeys,
    +    array $primaryKeys
    ) : string
    {
    }

    Description

    Creates a column definition for a SQL statement (SQLite).

    This method constructs a SQL column definition based on the provided column details, -including the column name, data type, nullability, default value, and primary key constraints. -The resulting definition is formatted for use in a CREATE TABLE statement, suitable for SQLite.

    -

    If the column is specified as a primary key with auto-increment, the column type is set to INTEGER, -and the PRIMARY KEY constraint is added with auto-increment behavior (SQLite uses INTEGER PRIMARY KEY AUTOINCREMENT).

    +including the name, data type, nullability, default value, and primary key constraints. +The resulting string is formatted specifically for SQLite CREATE TABLE statements.

    +
      +
    • Special SQLite handling:
    • +
    • If the column is a primary key with auto-increment, the type is forced to INTEGER +to trigger SQLite's internal rowid behavior.
    • +
    • If the table uses composite primary keys (multiple columns), the PRIMARY KEY +constraint is omitted from the individual column definition and should be +defined at the table level instead.
    • +

    Parameters

    $column
    -

    An associative array containing details about the column:

    +

    An associative array containing column details:

      -
    • string 'name': The name of the column.
    • -
    • string 'type': The data type of the column (e.g., VARCHAR, INT).
    • -
    • bool|string 'nullable': Indicates if the column allows NULL values -('true' or true for NULL; otherwise, NOT NULL).
    • -
    • mixed 'defaultValue': The default value for the column (optional).
    • -
    • bool 'primary_key': Whether the column is a primary key (optional).
    • -
    • bool 'auto_increment': Whether the column is auto-incrementing (optional).
    • +
    • string 'name': The column identifier.
    • +
    • string 'type': The source data type (e.g., from MySQL).
    • +
    • bool|string 'nullable': 'true' or true for NULL; otherwise NOT NULL.
    • +
    • mixed 'defaultValue': The default value (optional).
    • +
    • bool 'primary_key': Primary key flag.
    • +
    • bool 'auto_increment': Auto-increment flag.
    +
    $autoIncrementKeys
    +

    List of keys designated as auto-incrementing.

    +
    $primaryKeys
    +

    List of all primary key columns to determine if a +composite key (multiple PKs) exists.

    Return

    string
    -

    The SQL column definition formatted as a string, suitable for inclusion -in a CREATE TABLE statement.

    +

    The formatted SQL column definition string.

    @@ -29940,7 +30469,7 @@

    Description

    Constants

    -
    const TINYINT_1 = "tinyint(1)";

    Methods

    +
    const TINYINT_1 = 'tinyint(1)';

    Methods

    1. getColumnList

    Declaration

    @@ -30903,7 +31432,7 @@

    Description

    Constants

    -
    const KEY_COLUMN_NAME = "Field";
    const KEY_PRIMARY_KEY = "Key";
    const KEY_TYPE = "Type";
    const KEY_LENGTH = "Length";
    const KEY_NULLABLE = "Nullable";
    const KEY_DEFAULT = "Default";

    Properties

    +
    const KEY_COLUMN_NAME = 'Field';
    const KEY_PRIMARY_KEY = 'Key';
    const KEY_TYPE = 'Type';
    const KEY_LENGTH = 'Length';
    const KEY_NULLABLE = 'Nullable';
    const KEY_DEFAULT = 'Default';

    Properties

    1. typeList

    Declaration

    @@ -32781,7 +33310,7 @@

    Description

    MagicObject\Util\Image\ImageUtilException

    Declaration

    -
    class ImageUtilException extends Exception implements Throwable +
    class ImageUtilException extends Exception implements Throwable, Stringable { }
    @@ -32828,7 +33357,7 @@

    Description

    with this source code.

    Constants

    -
    const VERSION = "1.7.4";

    Properties

    +
    const VERSION = '1.7.4';

    Properties

    1. breaksEnabled

    Declaration

    @@ -32869,20 +33398,20 @@

    Description

    5. safeLinksWhitelist

    Declaration

    protected array $safeLinksWhitelist = array ( - 0 => 'http://', - 1 => 'https://', - 2 => 'ftp://', - 3 => 'ftps://', - 4 => 'mailto:', - 5 => 'data:image/png;base64,', - 6 => 'data:image/gif;base64,', - 7 => 'data:image/jpeg;base64,', - 8 => 'irc:', - 9 => 'ircs:', - 10 => 'git:', - 11 => 'ssh:', - 12 => 'news:', - 13 => 'steam:', + 0 => 'http://', + 1 => 'https://', + 2 => 'ftp://', + 3 => 'ftps://', + 4 => 'mailto:', + 5 => 'data:image/png;base64,', + 6 => 'data:image/gif;base64,', + 7 => 'data:image/jpeg;base64,', + 8 => 'irc:', + 9 => 'ircs:', + 10 => 'git:', + 11 => 'ssh:', + 12 => 'news:', + 13 => 'steam:', );

    Description

    @@ -32893,102 +33422,102 @@

    Description

    6. blockTypes

    Declaration

    protected array $blockTypes = array ( - '#' => + '#' => array ( - 0 => 'Header', + 0 => 'Header', ), - '*' => + '*' => array ( - 0 => 'Rule', - 1 => 'List', + 0 => 'Rule', + 1 => 'List', ), - '+' => + '+' => array ( - 0 => 'List', + 0 => 'List', ), - '-' => + '-' => array ( - 0 => 'SetextHeader', - 1 => 'Table', - 2 => 'Rule', - 3 => 'List', + 0 => 'SetextHeader', + 1 => 'Table', + 2 => 'Rule', + 3 => 'List', ), 0 => array ( - 0 => 'List', + 0 => 'List', ), 1 => array ( - 0 => 'List', + 0 => 'List', ), 2 => array ( - 0 => 'List', + 0 => 'List', ), 3 => array ( - 0 => 'List', + 0 => 'List', ), 4 => array ( - 0 => 'List', + 0 => 'List', ), 5 => array ( - 0 => 'List', + 0 => 'List', ), 6 => array ( - 0 => 'List', + 0 => 'List', ), 7 => array ( - 0 => 'List', + 0 => 'List', ), 8 => array ( - 0 => 'List', + 0 => 'List', ), 9 => array ( - 0 => 'List', + 0 => 'List', ), - ':' => + ':' => array ( - 0 => 'Table', + 0 => 'Table', ), - '<' => + '<' => array ( - 0 => 'Comment', - 1 => 'Markup', + 0 => 'Comment', + 1 => 'Markup', ), - '=' => + '=' => array ( - 0 => 'SetextHeader', + 0 => 'SetextHeader', ), - '>' => + '>' => array ( - 0 => 'Quote', + 0 => 'Quote', ), - '[' => + '[' => array ( - 0 => 'Reference', + 0 => 'Reference', ), - '_' => + '_' => array ( - 0 => 'Rule', + 0 => 'Rule', ), - '`' => + '`' => array ( - 0 => 'FencedCode', + 0 => 'FencedCode', ), - '|' => + '|' => array ( - 0 => 'Table', + 0 => 'Table', ), - '~' => + '~' => array ( - 0 => 'FencedCode', + 0 => 'FencedCode', ), );
    @@ -33000,7 +33529,7 @@

    Description

    7. unmarkedBlockTypes

    Declaration

    protected array $unmarkedBlockTypes = array ( - 0 => 'Code', + 0 => 'Code', );

    Description

    @@ -33011,56 +33540,56 @@

    Description

    8. inlineTypes

    Declaration

    protected $inlineTypes = array ( - '"' => + '"' => array ( - 0 => 'SpecialCharacter', + 0 => 'SpecialCharacter', ), - '!' => + '!' => array ( - 0 => 'Image', + 0 => 'Image', ), - '&' => + '&' => array ( - 0 => 'SpecialCharacter', + 0 => 'SpecialCharacter', ), - '*' => + '*' => array ( - 0 => 'Emphasis', + 0 => 'Emphasis', ), - ':' => + ':' => array ( - 0 => 'Url', + 0 => 'Url', ), - '<' => + '<' => array ( - 0 => 'UrlTag', - 1 => 'EmailTag', - 2 => 'Markup', - 3 => 'SpecialCharacter', + 0 => 'UrlTag', + 1 => 'EmailTag', + 2 => 'Markup', + 3 => 'SpecialCharacter', ), - '>' => + '>' => array ( - 0 => 'SpecialCharacter', + 0 => 'SpecialCharacter', ), - '[' => + '[' => array ( - 0 => 'Link', + 0 => 'Link', ), - '_' => + '_' => array ( - 0 => 'Emphasis', + 0 => 'Emphasis', ), - '`' => + '`' => array ( - 0 => 'Code', + 0 => 'Code', ), - '~' => + '~' => array ( - 0 => 'Strikethrough', + 0 => 'Strikethrough', ), - '\\' => + '\\' => array ( - 0 => 'EscapeSequence', + 0 => 'EscapeSequence', ), );
    @@ -33095,23 +33624,23 @@

    Declaration

    12. specialCharacters

    Declaration

    protected array List of special characters used in parsing. $specialCharacters = array ( - 0 => '\\', - 1 => '`', - 2 => '*', - 3 => '_', - 4 => '{', - 5 => '}', - 6 => '[', - 7 => ']', - 8 => '(', - 9 => ')', - 10 => '>', - 11 => '#', - 12 => '+', - 13 => '-', - 14 => '.', - 15 => '!', - 16 => '|', + 0 => '\\', + 1 => '`', + 2 => '*', + 3 => '_', + 4 => '{', + 5 => '}', + 6 => '[', + 7 => ']', + 8 => '(', + 9 => ')', + 10 => '>', + 11 => '#', + 12 => '+', + 13 => '-', + 14 => '.', + 15 => '!', + 16 => '|', );
    @@ -33120,8 +33649,8 @@

    Declaration

    13. strongRegex

    Declaration

    protected array Regular expressions for strong emphasis syntax. $strongRegex = array ( - '*' => '/^[*]{2}((?:\\\\\\*|[^*]|[*][^*]*[*])+?)[*]{2}(?![*])/s', - '_' => '/^__((?:\\\\_|[^_]|_[^_]*_)+?)__(?!_)/us', + '*' => '/^[*]{2}((?:\\\\\\*|[^*]|[*][^*]*[*])+?)[*]{2}(?![*])/s', + '_' => '/^__((?:\\\\_|[^_]|_[^_]*_)+?)__(?!_)/us', );
    @@ -33130,8 +33659,8 @@

    Declaration

    14. emRegex

    Declaration

    protected array Regular expressions for emphasis syntax. $emRegex = array ( - '*' => '/^[*]((?:\\\\\\*|[^*]|[*][*][^*]+?[*][*])+?)[*](?![*])/s', - '_' => '/^_((?:\\\\_|[^_]|__[^_]*__)+?)_(?!_)\\b/us', + '*' => '/^[*]((?:\\\\\\*|[^*]|[*][*][^*]+?[*][*])+?)[*](?![*])/s', + '_' => '/^_((?:\\\\_|[^_]|__[^_]*__)+?)_(?!_)\\b/us', );
    @@ -33139,7 +33668,7 @@

    Declaration

    15. regexHtmlAttribute

    Declaration

    -
    protected string Regular expression for validating HTML attributes. $regexHtmlAttribute = '[a-zA-Z_:][\\w:.-]*(?:\\s*=\\s*(?:[^"\'=<>`\\s]+|"[^"]*"|\'[^\']*\'))?';
    +
    protected string Regular expression for validating HTML attributes. $regexHtmlAttribute = '[a-zA-Z_:][\\w:.-]*(?:\\s*=\\s*(?:[^"\'=<>`\\s]+|"[^"]*"|\'[^\']*\'))?';
    @@ -33147,19 +33676,19 @@

    Declaration

    16. voidElements

    Declaration

    protected array List of void elements that do not have closing tags. $voidElements = array ( - 0 => 'area', - 1 => 'base', - 2 => 'br', - 3 => 'col', - 4 => 'command', - 5 => 'embed', - 6 => 'hr', - 7 => 'img', - 8 => 'input', - 9 => 'link', - 10 => 'meta', - 11 => 'param', - 12 => 'source', + 0 => 'area', + 1 => 'base', + 2 => 'br', + 3 => 'col', + 4 => 'command', + 5 => 'embed', + 6 => 'hr', + 7 => 'img', + 8 => 'input', + 9 => 'link', + 10 => 'meta', + 11 => 'param', + 12 => 'source', );
    @@ -33168,46 +33697,46 @@

    Declaration

    17. textLevelElements

    Declaration

    protected array List of text-level elements for inline formatting. $textLevelElements = array ( - 0 => 'a', - 1 => 'br', - 2 => 'bdo', - 3 => 'abbr', - 4 => 'blink', - 5 => 'nextid', - 6 => 'acronym', - 7 => 'basefont', - 8 => 'b', - 9 => 'em', - 10 => 'big', - 11 => 'cite', - 12 => 'small', - 13 => 'spacer', - 14 => 'listing', - 15 => 'i', - 16 => 'rp', - 17 => 'del', - 18 => 'code', - 19 => 'strike', - 20 => 'marquee', - 21 => 'q', - 22 => 'rt', - 23 => 'ins', - 24 => 'font', - 25 => 'strong', - 26 => 's', - 27 => 'tt', - 28 => 'kbd', - 29 => 'mark', - 30 => 'u', - 31 => 'xm', - 32 => 'sub', - 33 => 'nobr', - 34 => 'sup', - 35 => 'ruby', - 36 => 'var', - 37 => 'span', - 38 => 'wbr', - 39 => 'time', + 0 => 'a', + 1 => 'br', + 2 => 'bdo', + 3 => 'abbr', + 4 => 'blink', + 5 => 'nextid', + 6 => 'acronym', + 7 => 'basefont', + 8 => 'b', + 9 => 'em', + 10 => 'big', + 11 => 'cite', + 12 => 'small', + 13 => 'spacer', + 14 => 'listing', + 15 => 'i', + 16 => 'rp', + 17 => 'del', + 18 => 'code', + 19 => 'strike', + 20 => 'marquee', + 21 => 'q', + 22 => 'rt', + 23 => 'ins', + 24 => 'font', + 25 => 'strong', + 26 => 's', + 27 => 'tt', + 28 => 'kbd', + 29 => 'mark', + 30 => 'u', + 31 => 'xm', + 32 => 'sub', + 33 => 'nobr', + 34 => 'sup', + 35 => 'ruby', + 36 => 'var', + 37 => 'span', + 38 => 'wbr', + 39 => 'time', );
    @@ -34384,7 +34913,7 @@

    Description

    4. responseBody

    Declaration

    -
    private string $responseBody = '';
    +
    private string $responseBody = '';

    Description

    Response body from the last request

    @@ -35340,17 +35869,19 @@

    Return

    7. matchValue

    Declaration

    public static function matchValue(
    -    string $line
    +    array $matches
    ) : bool
    {
    }

    Description

    -

    Check if the line is invalid (empty or a comment).

    +

    Check whether the result of a regular expression match is valid.

    +

    Returns true if the match array is not empty and its first element +is set. Typically used to validate the output of preg_match().

    Parameters

    -
    $line
    -

    The line to check.

    +
    $matches
    +

    The array of regex match results.

    Return

    bool
    -

    true if the line is invalid, false otherwise.

    +

    True if the match result is valid, false otherwise.

    @@ -35464,7 +35995,7 @@

    Description

    Each constant corresponds to a specific locale, which can be used in applications to handle internationalization (i18n), localization (l10n), and formatting of data such as dates, currencies, and numbers, based on the user's regional settings.

    Constants

    -
    const EN_IE = "en_IE";
    const RO_MD = "ro_MD";
    const BR = "br";
    const EN_GY = "en_GY";
    const ES_GT = "es_GT";
    const SHI_TFNG_M = "shi-Tfng_M";
    const MR = "mr";
    const BS = "bs";
    const EN_AS = "en_AS";
    const KSF = "ksf";
    const BS_CYRL = "bs-Cyrl";
    const EN_PR = "en_PR";
    const MS = "ms";
    const SR_LATN_ME = "sr-Latn_ME";
    const MT = "mt";
    const HA = "ha";
    const NB_NO = "nb_NO";
    const EN_SE = "en_SE";
    const EN_BZ = "en_BZ";
    const PT_BR = "pt_BR";
    const OR_IN = "or_IN";
    const IS_IS = "is_IS";
    const MN_MN = "mn_MN";
    const AR_IQ = "ar_IQ";
    const HE = "he";
    const IT_SM = "it_SM";
    const EN_AT = "en_AT";
    const BAS = "bas";
    const CKB = "ckb";
    const MY = "my";
    const ZH_CN = "zh_CN";
    const MER = "mer";
    const KS_ARAB_IN = "ks-Arab_IN";
    const EN_JM = "en_JM";
    const DZ_BT = "dz_BT";
    const MS_ARAB_BN = "ms-Arab_BN";
    const CY_GB = "cy_GB";
    const SG = "sg";
    const IT_CH = "it_CH";
    const TEO_KE = "teo_KE";
    const DE_LU = "de_LU";
    const EN_US = "en_US";
    const HI = "hi";
    const HU_HU = "hu_HU";
    const UZ_LATN_UZ = "uz-Latn_UZ";
    const AF_NA = "af_NA";
    const SI = "si";
    const FR_BI = "fr_BI";
    const GA_IE = "ga_IE";
    const MFE = "mfe";
    const EN_CA = "en_CA";
    const NE_IN = "ne_IN";
    const RWK_TZ = "rwk_TZ";
    const EN_AU = "en_AU";
    const SK = "sk";
    const TEO = "teo";
    const EN_PT = "en_PT";
    const EN_NG = "en_NG";
    const SL = "sl";
    const TK_TM = "tk_TM";
    const TZM = "tzm";
    const EE_GH = "ee_GH";
    const KDE = "kde";
    const SN = "sn";
    const DYO_SN = "dyo_SN";
    const EN_SG = "en_SG";
    const MAS_TZ = "mas_TZ";
    const SO = "so";
    const NYN_UG = "nyn_UG";
    const BR_FR = "br_FR";
    const FR_BJ = "fr_BJ";
    const ES_IC = "es_IC";
    const PT_MZ = "pt_MZ";
    const HR = "hr";
    const AZ = "az";
    const SQ = "sq";
    const SR = "sr";
    const SW_KE = "sw_KE";
    const CA = "ca";
    const HU = "hu";
    const ET_EE = "et_EE";
    const LAG_TZ = "lag_TZ";
    const BN_IN = "bn_IN";
    const NB = "nb";
    const SV = "sv";
    const TH_TH = "th_TH";
    const ML_IN = "ml_IN";
    const SR_RS = "sr_RS";
    const SW = "sw";
    const ND = "nd";
    const TA_IN = "ta_IN";
    const FR_MQ = "fr_MQ";
    const HY = "hy";
    const EN_TO = "en_TO";
    const ES_AR = "es_AR";
    const NE = "ne";
    const PT_AO = "pt_AO";
    const NE_NP = "ne_NP";
    const AR_BH = "ar_BH";
    const EN_SI = "en_SI";
    const BO_IN = "bo_IN";
    const HI_IN = "hi_IN";
    const SEH = "seh";
    const DE_DE = "de_DE";
    const KO_KP = "ko_KP";
    const FR_BL = "fr_BL";
    const FR_MR = "fr_MR";
    const CA_AD = "ca_AD";
    const FA_IR = "fa_IR";
    const NL = "nl";
    const ES_PR = "es_PR";
    const EN_PW = "en_PW";
    const RN_BI = "rn_BI";
    const NN = "nn";
    const KK = "kk";
    const EN_DK = "en_DK";
    const SL_SI = "sl_SI";
    const DUA = "dua";
    const KEA = "kea";
    const MS_ARAB_MY = "ms-Arab_MY";
    const IG_NG = "ig_NG";
    const KLN = "kln";
    const YO = "yo";
    const FR_DZ = "fr_DZ";
    const SV_FI = "sv_FI";
    const FR_SY = "fr_SY";
    const RU_MD = "ru_MD";
    const EN_ZW = "en_ZW";
    const BRX_IN = "brx_IN";
    const SW_UG = "sw_UG";
    const FIL_PH = "fil_PH";
    const CS = "cs";
    const PT_GW = "pt_GW";
    const BN_BD = "bn_BD";
    const DE_AT = "de_AT";
    const FR_PF = "fr_PF";
    const LUO = "luo";
    const SK_SK = "sk_SK";
    const AR_001 = "ar_001";
    const ES_US = "es_US";
    const EN_SK = "en_SK";
    const TA = "ta";
    const FR_HT = "fr_HT";
    const MK_MK = "mk_MK";
    const OM_KE = "om_KE";
    const DA_DK = "da_DK";
    const EN_ME = "en_ME";
    const KO_KR = "ko_KR";
    const FF_SN = "ff_SN";
    const ID = "id";
    const EN_KY = "en_KY";
    const KDE_TZ = "kde_TZ";
    const SHI = "shi";
    const CY = "cy";
    const EN_ES = "en_ES";
    const MGH = "mgh";
    const EN_TR = "en_TR";
    const SR_ME = "sr_ME";
    const TE = "te";
    const FR_GN = "fr_GN";
    const FO_FO = "fo_FO";
    const EN_NL = "en_NL";
    const IG = "ig";
    const IT_IT = "it_IT";
    const UK_UA = "uk_UA";
    const TG = "tg";
    const EN_DM = "en_DM";
    const BM_ML = "bm_ML";
    const VAI = "vai";
    const EN_SL = "en_SL";
    const II = "ii";
    const EN_150 = "en_150";
    const SES = "ses";
    const TH = "th";
    const TI = "ti";
    const EN_IM = "en_IM";
    const RU_KZ = "ru_KZ";
    const FR_MU = "fr_MU";
    const IU_CANS_CA = "iu-Cans_CA";
    const CS_CZ = "cs_CZ";
    const AR_AE = "ar_AE";
    const TE_IN = "te_IN";
    const TK = "tk";
    const BRX = "brx";
    const HAW = "haw";
    const TZM_MA = "tzm_MA";
    const SO_DJ = "so_DJ";
    const UZ_UZ = "uz_UZ";
    const EN_BA = "en_BA";
    const TO = "to";
    const EN_MG = "en_MG";
    const EWO_CM = "ewo_CM";
    const AR_MR = "ar_MR";
    const NL_AW = "nl_AW";
    const EN_IN = "en_IN";
    const MGO = "mgo";
    const SN_ZW = "sn_ZW";
    const EN_CH = "en_CH";
    const EN_TT = "en_TT";
    const TR = "tr";
    const IS = "is";
    const FR_GP = "fr_GP";
    const LUY = "luy";
    const ES_NI = "es_NI";
    const PT_TL = "pt_TL";
    const IT = "it";
    const MS_ARAB = "ms-Arab";
    const DA = "da";
    const KLN_KE = "kln_KE";
    const IU = "iu";
    const EN_BB = "en_BB";
    const AR_DZ = "ar_DZ";
    const AR_SY = "ar_SY";
    const EN_MH = "en_MH";
    const MR_IN = "mr_IN";
    const EN_GB = "en_GB";
    const DE = "de";
    const FR_GQ = "fr_GQ";
    const EN_NO = "en_NO";
    const KY_KG = "ky_KG";
    const PT_PT = "pt_PT";
    const FR_RW = "fr_RW";
    const NUS_SD = "nus_SD";
    const ASA = "asa";
    const ZH = "zh";
    const HA_GH = "ha_GH";
    const BO_CN = "bo_CN";
    const KAM_KE = "kam_KE";
    const DUA_CM = "dua_CM";
    const KHQ_ML = "khq_ML";
    const UR_IN = "ur_IN";
    const EN_LC = "en_LC";
    const FR_TD = "fr_TD";
    const KSB_TZ = "ksb_TZ";
    const GU_IN = "gu_IN";
    const OM = "om";
    const JMC = "jmc";
    const RO_RO = "ro_RO";
    const JA_JP = "ja_JP";
    const LN_AO = "ln_AO";
    const SO_ET = "so_ET";
    const EN_GD = "en_GD";
    const NL_NL = "nl_NL";
    const ES_ES = "es_ES";
    const EN_VC = "en_VC";
    const OR = "or";
    const YO_NG = "yo_NG";
    const ES_PY = "es_PY";
    const MUA_CM = "mua_CM";
    const FA_AF = "fa_AF";
    const EN_HK = "en_HK";
    const JA = "ja";
    const LUO_KE = "luo_KE";
    const TWQ = "twq";
    const EN_BE = "en_BE";
    const ES_UY = "es_UY";
    const DJE_NE = "dje_NE";
    const LUY_KE = "luy_KE";
    const NAQ = "naq";
    const SI_LK = "si_LK";
    const ZU = "zu";
    const ZH_HANS_MO = "zh-Hans_MO";
    const FR_KM = "fr_KM";
    const ZH_HK = "zh_HK";
    const DZ = "dz";
    const SWC = "swc";
    const ASA_TZ = "asa_TZ";
    const JGO_CM = "jgo_CM";
    const AZ_CYRL = "az-Cyrl";
    const EWO = "ewo";
    const GV_GB = "gv_GB";
    const TI_ER = "ti_ER";
    const BE_BY = "be_BY";
    const EN_IS = "en_IS";
    const EN_CM = "en_CM";
    const UK = "uk";
    const CGG_UG = "cgg_UG";
    const NYN = "nyn";
    const TR_CY = "tr_CY";
    const DE_CH = "de_CH";
    const FR_TG = "fr_TG";
    const JMC_TZ = "jmc_TZ";
    const TA_LK = "ta_LK";
    const SO_SO = "so_SO";
    const ES_DO = "es_DO";
    const FR_LU = "fr_LU";
    const SHI_MA = "shi_MA";
    const EN_SS = "en_SS";
    const SWC_CD = "swc_CD";
    const KN_IN = "kn_IN";
    const HY_AM = "hy_AM";
    const EN_IT = "en_IT";
    const EN_GG = "en_GG";
    const FIL = "fil";
    const BAS_CM = "bas_CM";
    const EN_TZ = "en_TZ";
    const AR_TD = "ar_TD";
    const UR = "ur";
    const BEZ_TZ = "bez_TZ";
    const HAW_US = "haw_US";
    const FR_VU = "fr_VU";
    const PA = "pa";
    const BS_BA = "bs_BA";
    const EE_TG = "ee_TG";
    const TI_ET = "ti_ET";
    const SR_LATN_BA = "sr-Latn_BA";
    const EN_GH = "en_GH";
    const EE = "ee";
    const EN_VG = "en_VG";
    const SV_SE = "sv_SE";
    const KI_KE = "ki_KE";
    const ZH_HANS = "zh-Hans";
    const BEM = "bem";
    const UZ = "uz";
    const AR_YE = "ar_YE";
    const FR_NC = "fr_NC";
    const SEH_MZ = "seh_MZ";
    const RU_UA = "ru_UA";
    const FR_SC = "fr_SC";
    const AR_KM = "ar_KM";
    const EN_ZA = "en_ZA";
    const EN_GI = "en_GI";
    const MAS_KE = "mas_KE";
    const NN_NO = "nn_NO";
    const AR_EG = "ar_EG";
    const EL = "el";
    const EN_RO = "en_RO";
    const PL = "pl";
    const NL_BE = "nl_BE";
    const EN = "en";
    const UZ_LATN = "uz-Latn";
    const EO = "eo";
    const KOK = "kok";
    const MAS = "mas";
    const FR_FR = "fr_FR";
    const ROF = "rof";
    const EN_MP = "en_MP";
    const DE_BE = "de_BE";
    const HR_BA = "hr_BA";
    const AR_EH = "ar_EH";
    const ES_CL = "es_CL";
    const EN_AD = "en_AD";
    const ES = "es";
    const EN_VI = "en_VI";
    const PS = "ps";
    const ET = "et";
    const NL_SR = "nl_SR";
    const VAI_LATN = "vai-Latn";
    const PT = "pt";
    const EU = "eu";
    const KA = "ka";
    const FR_NE = "fr_NE";
    const EU_ES = "eu_ES";
    const MGH_MZ = "mgh_MZ";
    const ZU_ZA = "zu_ZA";
    const AR_SA = "ar_SA";
    const CHR_US = "chr_US";
    const CGG = "cgg";
    const SQ_MK = "sq_MK";
    const LAG = "lag";
    const AZ_AZ = "az_AZ";
    const ES_VE = "es_VE";
    const KS_ARAB = "ks-Arab";
    const EN_HR = "en_HR";
    const EL_GR = "el_GR";
    const EL_CY = "el_CY";
    const MFE_MU = "mfe_MU";
    const KI = "ki";
    const VI = "vi";
    const EN_KE = "en_KE";
    const RWK = "rwk";
    const BEZ = "bez";
    const KL = "kl";
    const ZH_HANT = "zh-Hant";
    const FR_CA = "fr_CA";
    const KM = "km";
    const ES_HN = "es_HN";
    const AGQ_CM = "agq_CM";
    const KN = "kn";
    const II_CN = "ii_CN";
    const MN = "mn";
    const EN_BM = "en_BM";
    const KO = "ko";
    const SV_AX = "sv_AX";
    const LN_CD = "ln_CD";
    const EN_GM = "en_GM";
    const IU_CANS = "iu-Cans";
    const FR_MA = "fr_MA";
    const ES_CO = "es_CO";
    const EN_AG = "en_AG";
    const GUZ_KE = "guz_KE";
    const KS = "ks";
    const ES_PA = "es_PA";
    const TWQ_NE = "twq_NE";
    const EN_NZ = "en_NZ";
    const FR_TN = "fr_TN";
    const FA = "fa";
    const EN_US_POSI = "en_US_POSI";
    const DAV_KE = "dav_KE";
    const EN_WS = "en_WS";
    const LT_LT = "lt_LT";
    const EN_SZ = "en_SZ";
    const AR_SD = "ar_SD";
    const ROF_TZ = "rof_TZ";
    const UZ_ARAB_AF = "uz-Arab_AF";
    const VI_VN = "vi_VN";
    const EN_MT = "en_MT";
    const KW = "kw";
    const YAV_CM = "yav_CM";
    const TA_MY = "ta_MY";
    const RU_KG = "ru_KG";
    const KAB = "kab";
    const KY = "ky";
    const FF = "ff";
    const EN_PG = "en_PG";
    const TO_TO = "to_TO";
    const AR_LY = "ar_LY";
    const JGO = "jgo";
    const EN_HU = "en_HU";
    const AF_ZA = "af_ZA";
    const EN_UG = "en_UG";
    const DE_LI = "de_LI";
    const FI = "fi";
    const ES_SV = "es_SV";
    const KHQ = "khq";
    const GSW = "gsw";
    const KSF_CM = "ksf_CM";
    const FR_DJ = "fr_DJ";
    const EN_MU = "en_MU";
    const LN_CF = "ln_CF";
    const KEA_CV = "kea_CV";
    const PL_PL = "pl_PL";
    const PA_ARAB = "pa-Arab";
    const FR_MC = "fr_MC";
    const SR_BA = "sr_BA";
    const SR_LATN = "sr-Latn";
    const EN_RU = "en_RU";
    const EN_PH = "en_PH";
    const SAQ = "saq";
    const AR_PS = "ar_PS";
    const FR_CD = "fr_CD";
    const BEM_ZM = "bem_ZM";
    const RU_RU = "ru_RU";
    const EN_FI = "en_FI";
    const FO = "fo";
    const SO_KE = "so_KE";
    const LN_CG = "ln_CG";
    const AR_OM = "ar_OM";
    const PT_ST = "pt_ST";
    const EN_KI = "en_KI";
    const KL_GL = "kl_GL";
    const FR = "fr";
    const ES_CR = "es_CR";
    const SES_ML = "ses_ML";
    const MER_KE = "mer_KE";
    const XOG = "xog";
    const XOG_UG = "xog_UG";
    const NL_SX = "nl_SX";
    const EN_FJ = "en_FJ";
    const MS_BN = "ms_BN";
    const EN_MW = "en_MW";
    const AR_MA = "ar_MA";
    const PT_MO = "pt_MO";
    const KAM = "kam";
    const EN_TC = "en_TC";
    const AF = "af";
    const AR_TN = "ar_TN";
    const AM_ET = "am_ET";
    const ES_PE = "es_PE";
    const SBP_TZ = "sbp_TZ";
    const FR_CF = "fr_CF";
    const VUN_TZ = "vun_TZ";
    const FR_RE = "fr_RE";
    const AR_JO = "ar_JO";
    const EBU = "ebu";
    const LG = "lg";
    const HA_NG = "ha_NG";
    const LV_LV = "lv_LV";
    const AK = "ak";
    const CHR = "chr";
    const AZ_CYRL_AZ = "az-Cyrl_AZ";
    const DAV = "dav";
    const EN_EE = "en_EE";
    const ES_419 = "es_419";
    const EBU_KE = "ebu_KE";
    const EN_CY = "en_CY";
    const FR_MF = "fr_MF";
    const EN_AL = "en_AL";
    const AM = "am";
    const EN_PK = "en_PK";
    const MGO_CM = "mgo_CM";
    const FR_CG = "fr_CG";
    const DJE = "dje";
    const EN_JE = "en_JE";
    const EN_LR = "en_LR";
    const DYO = "dyo";
    const LN = "ln";
    const AK_GH = "ak_GH";
    const PA_IN = "pa_IN";
    const AR_DJ = "ar_DJ";
    const EN_BS = "en_BS";
    const LO = "lo";
    const ZH_TW = "zh_TW";
    const LG_UG = "lg_UG";
    const AR_KW = "ar_KW";
    const AR = "ar";
    const BS_CYRL_BA = "bs-Cyrl_BA";
    const ES_EA = "es_EA";
    const FR_MG = "fr_MG";
    const CA_ES = "ca_ES";
    const AS = "as";
    const HE_IL = "he_IL";
    const ES_CU = "es_CU";
    const EN_CZ = "en_CZ";
    const EN_PL = "en_PL";
    const FR_GA = "fr_GA";
    const MG_MG = "mg_MG";
    const FR_CH = "fr_CH";
    const EN_LS = "en_LS";
    const LT = "lt";
    const MY_MM = "my_MM";
    const KK_KZ = "kk_KZ";
    const GA = "ga";
    const EN_FM = "en_FM";
    const LU = "lu";
    const PS_AF = "ps_AF";
    const NMG = "nmg";
    const ES_BO = "es_BO";
    const SBP = "sbp";
    const LV = "lv";
    const VUN = "vun";
    const FR_YT = "fr_YT";
    const KM_KH = "km_KH";
    const TEO_UG = "teo_UG";
    const FR_SN = "fr_SN";
    const OM_ET = "om_ET";
    const AR_ER = "ar_ER";
    const GSW_CH = "gsw_CH";
    const ES_PH = "es_PH";
    const FI_FI = "fi_FI";
    const TR_TR = "tr_TR";
    const FR_CI = "fr_CI";
    const EN_LT = "en_LT";
    const EN_UM = "en_UM";
    const UR_PK = "ur_PK";
    const HR_HR = "hr_HR";
    const NL_CW = "nl_CW";
    const EN_KN = "en_KN";
    const MS_MY = "ms_MY";
    const AR_IL = "ar_IL";
    const EN_ZM = "en_ZM";
    const ES_EC = "es_EC";
    const GL_ES = "gl_ES";
    const EN_GU = "en_GU";
    const GL = "gl";
    const NMG_CM = "nmg_CM";
    const ZH_MO = "zh_MO";
    const EN_NA = "en_NA";
    const HA_NE = "ha_NE";
    const MT_MT = "mt_MT";
    const RM = "rm";
    const KW_GB = "kw_GB";
    const ZH_SG = "zh_SG";
    const RN = "rn";
    const RO = "ro";
    const RM_CH = "rm_CH";
    const SAQ_KE = "saq_KE";
    const VAI_LR = "vai_LR";
    const KA_GE = "ka_GE";
    const ES_GQ = "es_GQ";
    const SR_LATN_RS = "sr-Latn_RS";
    const EN_VU = "en_VU";
    const ZH_HANS_HK = "zh-Hans_HK";
    const EN_LV = "en_LV";
    const AGQ = "agq";
    const GU = "gu";
    const LO_LA = "lo_LA";
    const RU = "ru";
    const EN_SB = "en_SB";
    const GV = "gv";
    const EN_BW = "en_BW";
    const YAV = "yav";
    const TA_SG = "ta_SG";
    const FR_BE = "fr_BE";
    const BG_BG = "bg_BG";
    const ES_MX = "es_MX";
    const RW = "rw";
    const BE = "be";
    const ND_ZW = "nd_ZW";
    const KAB_DZ = "kab_DZ";
    const MUA = "mua";
    const PT_CV = "pt_CV";
    const BG = "bg";
    const TG_TJ = "tg_TJ";
    const MS_SG = "ms_SG";
    const MG = "mg";
    const SG_CF = "sg_CF";
    const PA_ARAB_PK = "pa-Arab_PK";
    const SW_TZ = "sw_TZ";
    const EN_SC = "en_SC";
    const NUS = "nus";
    const SHI_TFNG = "shi-Tfng";
    const AR_QA = "ar_QA";
    const NAQ_NA = "naq_NA";
    const FR_BF = "fr_BF";
    const RW_RW = "rw_RW";
    const AS_IN = "as_IN";
    const GUZ = "guz";
    const KSB = "ksb";
    const FR_ML = "fr_ML";
    const MK = "mk";
    const KOK_IN = "kok_IN";
    const SQ_AL = "sq_AL";
    const ML = "ml";
    const FR_GF = "fr_GF";
    const BM = "bm";
    const LU_CD = "lu_CD";
    const FR_CM = "fr_CM";
    const BN = "bn";
    const AR_LB = "ar_LB";
    const ID_ID = "id_ID";
    const UZ_ARAB = "uz-Arab";
    const BO = "bo";
    const EN_FR = "en_FR";
    const EN_DE = "en_DE";
    const VAI_LATN_L = "vai-Latn_L";
    const AR_SO = "ar_SO";
    const RU_BY = "ru_BY";

    Methods

    +
    const EN_IE = 'en_IE';
    const RO_MD = 'ro_MD';
    const BR = 'br';
    const EN_GY = 'en_GY';
    const ES_GT = 'es_GT';
    const SHI_TFNG_M = 'shi-Tfng_M';
    const MR = 'mr';
    const BS = 'bs';
    const EN_AS = 'en_AS';
    const KSF = 'ksf';
    const BS_CYRL = 'bs-Cyrl';
    const EN_PR = 'en_PR';
    const MS = 'ms';
    const SR_LATN_ME = 'sr-Latn_ME';
    const MT = 'mt';
    const HA = 'ha';
    const NB_NO = 'nb_NO';
    const EN_SE = 'en_SE';
    const EN_BZ = 'en_BZ';
    const PT_BR = 'pt_BR';
    const OR_IN = 'or_IN';
    const IS_IS = 'is_IS';
    const MN_MN = 'mn_MN';
    const AR_IQ = 'ar_IQ';
    const HE = 'he';
    const IT_SM = 'it_SM';
    const EN_AT = 'en_AT';
    const BAS = 'bas';
    const CKB = 'ckb';
    const MY = 'my';
    const ZH_CN = 'zh_CN';
    const MER = 'mer';
    const KS_ARAB_IN = 'ks-Arab_IN';
    const EN_JM = 'en_JM';
    const DZ_BT = 'dz_BT';
    const MS_ARAB_BN = 'ms-Arab_BN';
    const CY_GB = 'cy_GB';
    const SG = 'sg';
    const IT_CH = 'it_CH';
    const TEO_KE = 'teo_KE';
    const DE_LU = 'de_LU';
    const EN_US = 'en_US';
    const HI = 'hi';
    const HU_HU = 'hu_HU';
    const UZ_LATN_UZ = 'uz-Latn_UZ';
    const AF_NA = 'af_NA';
    const SI = 'si';
    const FR_BI = 'fr_BI';
    const GA_IE = 'ga_IE';
    const MFE = 'mfe';
    const EN_CA = 'en_CA';
    const NE_IN = 'ne_IN';
    const RWK_TZ = 'rwk_TZ';
    const EN_AU = 'en_AU';
    const SK = 'sk';
    const TEO = 'teo';
    const EN_PT = 'en_PT';
    const EN_NG = 'en_NG';
    const SL = 'sl';
    const TK_TM = 'tk_TM';
    const TZM = 'tzm';
    const EE_GH = 'ee_GH';
    const KDE = 'kde';
    const SN = 'sn';
    const DYO_SN = 'dyo_SN';
    const EN_SG = 'en_SG';
    const MAS_TZ = 'mas_TZ';
    const SO = 'so';
    const NYN_UG = 'nyn_UG';
    const BR_FR = 'br_FR';
    const FR_BJ = 'fr_BJ';
    const ES_IC = 'es_IC';
    const PT_MZ = 'pt_MZ';
    const HR = 'hr';
    const AZ = 'az';
    const SQ = 'sq';
    const SR = 'sr';
    const SW_KE = 'sw_KE';
    const CA = 'ca';
    const HU = 'hu';
    const ET_EE = 'et_EE';
    const LAG_TZ = 'lag_TZ';
    const BN_IN = 'bn_IN';
    const NB = 'nb';
    const SV = 'sv';
    const TH_TH = 'th_TH';
    const ML_IN = 'ml_IN';
    const SR_RS = 'sr_RS';
    const SW = 'sw';
    const ND = 'nd';
    const TA_IN = 'ta_IN';
    const FR_MQ = 'fr_MQ';
    const HY = 'hy';
    const EN_TO = 'en_TO';
    const ES_AR = 'es_AR';
    const NE = 'ne';
    const PT_AO = 'pt_AO';
    const NE_NP = 'ne_NP';
    const AR_BH = 'ar_BH';
    const EN_SI = 'en_SI';
    const BO_IN = 'bo_IN';
    const HI_IN = 'hi_IN';
    const SEH = 'seh';
    const DE_DE = 'de_DE';
    const KO_KP = 'ko_KP';
    const FR_BL = 'fr_BL';
    const FR_MR = 'fr_MR';
    const CA_AD = 'ca_AD';
    const FA_IR = 'fa_IR';
    const NL = 'nl';
    const ES_PR = 'es_PR';
    const EN_PW = 'en_PW';
    const RN_BI = 'rn_BI';
    const NN = 'nn';
    const KK = 'kk';
    const EN_DK = 'en_DK';
    const SL_SI = 'sl_SI';
    const DUA = 'dua';
    const KEA = 'kea';
    const MS_ARAB_MY = 'ms-Arab_MY';
    const IG_NG = 'ig_NG';
    const KLN = 'kln';
    const YO = 'yo';
    const FR_DZ = 'fr_DZ';
    const SV_FI = 'sv_FI';
    const FR_SY = 'fr_SY';
    const RU_MD = 'ru_MD';
    const EN_ZW = 'en_ZW';
    const BRX_IN = 'brx_IN';
    const SW_UG = 'sw_UG';
    const FIL_PH = 'fil_PH';
    const CS = 'cs';
    const PT_GW = 'pt_GW';
    const BN_BD = 'bn_BD';
    const DE_AT = 'de_AT';
    const FR_PF = 'fr_PF';
    const LUO = 'luo';
    const SK_SK = 'sk_SK';
    const AR_001 = 'ar_001';
    const ES_US = 'es_US';
    const EN_SK = 'en_SK';
    const TA = 'ta';
    const FR_HT = 'fr_HT';
    const MK_MK = 'mk_MK';
    const OM_KE = 'om_KE';
    const DA_DK = 'da_DK';
    const EN_ME = 'en_ME';
    const KO_KR = 'ko_KR';
    const FF_SN = 'ff_SN';
    const ID = 'id';
    const EN_KY = 'en_KY';
    const KDE_TZ = 'kde_TZ';
    const SHI = 'shi';
    const CY = 'cy';
    const EN_ES = 'en_ES';
    const MGH = 'mgh';
    const EN_TR = 'en_TR';
    const SR_ME = 'sr_ME';
    const TE = 'te';
    const FR_GN = 'fr_GN';
    const FO_FO = 'fo_FO';
    const EN_NL = 'en_NL';
    const IG = 'ig';
    const IT_IT = 'it_IT';
    const UK_UA = 'uk_UA';
    const TG = 'tg';
    const EN_DM = 'en_DM';
    const BM_ML = 'bm_ML';
    const VAI = 'vai';
    const EN_SL = 'en_SL';
    const II = 'ii';
    const EN_150 = 'en_150';
    const SES = 'ses';
    const TH = 'th';
    const TI = 'ti';
    const EN_IM = 'en_IM';
    const RU_KZ = 'ru_KZ';
    const FR_MU = 'fr_MU';
    const IU_CANS_CA = 'iu-Cans_CA';
    const CS_CZ = 'cs_CZ';
    const AR_AE = 'ar_AE';
    const TE_IN = 'te_IN';
    const TK = 'tk';
    const BRX = 'brx';
    const HAW = 'haw';
    const TZM_MA = 'tzm_MA';
    const SO_DJ = 'so_DJ';
    const UZ_UZ = 'uz_UZ';
    const EN_BA = 'en_BA';
    const TO = 'to';
    const EN_MG = 'en_MG';
    const EWO_CM = 'ewo_CM';
    const AR_MR = 'ar_MR';
    const NL_AW = 'nl_AW';
    const EN_IN = 'en_IN';
    const MGO = 'mgo';
    const SN_ZW = 'sn_ZW';
    const EN_CH = 'en_CH';
    const EN_TT = 'en_TT';
    const TR = 'tr';
    const IS = 'is';
    const FR_GP = 'fr_GP';
    const LUY = 'luy';
    const ES_NI = 'es_NI';
    const PT_TL = 'pt_TL';
    const IT = 'it';
    const MS_ARAB = 'ms-Arab';
    const DA = 'da';
    const KLN_KE = 'kln_KE';
    const IU = 'iu';
    const EN_BB = 'en_BB';
    const AR_DZ = 'ar_DZ';
    const AR_SY = 'ar_SY';
    const EN_MH = 'en_MH';
    const MR_IN = 'mr_IN';
    const EN_GB = 'en_GB';
    const DE = 'de';
    const FR_GQ = 'fr_GQ';
    const EN_NO = 'en_NO';
    const KY_KG = 'ky_KG';
    const PT_PT = 'pt_PT';
    const FR_RW = 'fr_RW';
    const NUS_SD = 'nus_SD';
    const ASA = 'asa';
    const ZH = 'zh';
    const HA_GH = 'ha_GH';
    const BO_CN = 'bo_CN';
    const KAM_KE = 'kam_KE';
    const DUA_CM = 'dua_CM';
    const KHQ_ML = 'khq_ML';
    const UR_IN = 'ur_IN';
    const EN_LC = 'en_LC';
    const FR_TD = 'fr_TD';
    const KSB_TZ = 'ksb_TZ';
    const GU_IN = 'gu_IN';
    const OM = 'om';
    const JMC = 'jmc';
    const RO_RO = 'ro_RO';
    const JA_JP = 'ja_JP';
    const LN_AO = 'ln_AO';
    const SO_ET = 'so_ET';
    const EN_GD = 'en_GD';
    const NL_NL = 'nl_NL';
    const ES_ES = 'es_ES';
    const EN_VC = 'en_VC';
    const OR = 'or';
    const YO_NG = 'yo_NG';
    const ES_PY = 'es_PY';
    const MUA_CM = 'mua_CM';
    const FA_AF = 'fa_AF';
    const EN_HK = 'en_HK';
    const JA = 'ja';
    const LUO_KE = 'luo_KE';
    const TWQ = 'twq';
    const EN_BE = 'en_BE';
    const ES_UY = 'es_UY';
    const DJE_NE = 'dje_NE';
    const LUY_KE = 'luy_KE';
    const NAQ = 'naq';
    const SI_LK = 'si_LK';
    const ZU = 'zu';
    const ZH_HANS_MO = 'zh-Hans_MO';
    const FR_KM = 'fr_KM';
    const ZH_HK = 'zh_HK';
    const DZ = 'dz';
    const SWC = 'swc';
    const ASA_TZ = 'asa_TZ';
    const JGO_CM = 'jgo_CM';
    const AZ_CYRL = 'az-Cyrl';
    const EWO = 'ewo';
    const GV_GB = 'gv_GB';
    const TI_ER = 'ti_ER';
    const BE_BY = 'be_BY';
    const EN_IS = 'en_IS';
    const EN_CM = 'en_CM';
    const UK = 'uk';
    const CGG_UG = 'cgg_UG';
    const NYN = 'nyn';
    const TR_CY = 'tr_CY';
    const DE_CH = 'de_CH';
    const FR_TG = 'fr_TG';
    const JMC_TZ = 'jmc_TZ';
    const TA_LK = 'ta_LK';
    const SO_SO = 'so_SO';
    const ES_DO = 'es_DO';
    const FR_LU = 'fr_LU';
    const SHI_MA = 'shi_MA';
    const EN_SS = 'en_SS';
    const SWC_CD = 'swc_CD';
    const KN_IN = 'kn_IN';
    const HY_AM = 'hy_AM';
    const EN_IT = 'en_IT';
    const EN_GG = 'en_GG';
    const FIL = 'fil';
    const BAS_CM = 'bas_CM';
    const EN_TZ = 'en_TZ';
    const AR_TD = 'ar_TD';
    const UR = 'ur';
    const BEZ_TZ = 'bez_TZ';
    const HAW_US = 'haw_US';
    const FR_VU = 'fr_VU';
    const PA = 'pa';
    const BS_BA = 'bs_BA';
    const EE_TG = 'ee_TG';
    const TI_ET = 'ti_ET';
    const SR_LATN_BA = 'sr-Latn_BA';
    const EN_GH = 'en_GH';
    const EE = 'ee';
    const EN_VG = 'en_VG';
    const SV_SE = 'sv_SE';
    const KI_KE = 'ki_KE';
    const ZH_HANS = 'zh-Hans';
    const BEM = 'bem';
    const UZ = 'uz';
    const AR_YE = 'ar_YE';
    const FR_NC = 'fr_NC';
    const SEH_MZ = 'seh_MZ';
    const RU_UA = 'ru_UA';
    const FR_SC = 'fr_SC';
    const AR_KM = 'ar_KM';
    const EN_ZA = 'en_ZA';
    const EN_GI = 'en_GI';
    const MAS_KE = 'mas_KE';
    const NN_NO = 'nn_NO';
    const AR_EG = 'ar_EG';
    const EL = 'el';
    const EN_RO = 'en_RO';
    const PL = 'pl';
    const NL_BE = 'nl_BE';
    const EN = 'en';
    const UZ_LATN = 'uz-Latn';
    const EO = 'eo';
    const KOK = 'kok';
    const MAS = 'mas';
    const FR_FR = 'fr_FR';
    const ROF = 'rof';
    const EN_MP = 'en_MP';
    const DE_BE = 'de_BE';
    const HR_BA = 'hr_BA';
    const AR_EH = 'ar_EH';
    const ES_CL = 'es_CL';
    const EN_AD = 'en_AD';
    const ES = 'es';
    const EN_VI = 'en_VI';
    const PS = 'ps';
    const ET = 'et';
    const NL_SR = 'nl_SR';
    const VAI_LATN = 'vai-Latn';
    const PT = 'pt';
    const EU = 'eu';
    const KA = 'ka';
    const FR_NE = 'fr_NE';
    const EU_ES = 'eu_ES';
    const MGH_MZ = 'mgh_MZ';
    const ZU_ZA = 'zu_ZA';
    const AR_SA = 'ar_SA';
    const CHR_US = 'chr_US';
    const CGG = 'cgg';
    const SQ_MK = 'sq_MK';
    const LAG = 'lag';
    const AZ_AZ = 'az_AZ';
    const ES_VE = 'es_VE';
    const KS_ARAB = 'ks-Arab';
    const EN_HR = 'en_HR';
    const EL_GR = 'el_GR';
    const EL_CY = 'el_CY';
    const MFE_MU = 'mfe_MU';
    const KI = 'ki';
    const VI = 'vi';
    const EN_KE = 'en_KE';
    const RWK = 'rwk';
    const BEZ = 'bez';
    const KL = 'kl';
    const ZH_HANT = 'zh-Hant';
    const FR_CA = 'fr_CA';
    const KM = 'km';
    const ES_HN = 'es_HN';
    const AGQ_CM = 'agq_CM';
    const KN = 'kn';
    const II_CN = 'ii_CN';
    const MN = 'mn';
    const EN_BM = 'en_BM';
    const KO = 'ko';
    const SV_AX = 'sv_AX';
    const LN_CD = 'ln_CD';
    const EN_GM = 'en_GM';
    const IU_CANS = 'iu-Cans';
    const FR_MA = 'fr_MA';
    const ES_CO = 'es_CO';
    const EN_AG = 'en_AG';
    const GUZ_KE = 'guz_KE';
    const KS = 'ks';
    const ES_PA = 'es_PA';
    const TWQ_NE = 'twq_NE';
    const EN_NZ = 'en_NZ';
    const FR_TN = 'fr_TN';
    const FA = 'fa';
    const EN_US_POSI = 'en_US_POSI';
    const DAV_KE = 'dav_KE';
    const EN_WS = 'en_WS';
    const LT_LT = 'lt_LT';
    const EN_SZ = 'en_SZ';
    const AR_SD = 'ar_SD';
    const ROF_TZ = 'rof_TZ';
    const UZ_ARAB_AF = 'uz-Arab_AF';
    const VI_VN = 'vi_VN';
    const EN_MT = 'en_MT';
    const KW = 'kw';
    const YAV_CM = 'yav_CM';
    const TA_MY = 'ta_MY';
    const RU_KG = 'ru_KG';
    const KAB = 'kab';
    const KY = 'ky';
    const FF = 'ff';
    const EN_PG = 'en_PG';
    const TO_TO = 'to_TO';
    const AR_LY = 'ar_LY';
    const JGO = 'jgo';
    const EN_HU = 'en_HU';
    const AF_ZA = 'af_ZA';
    const EN_UG = 'en_UG';
    const DE_LI = 'de_LI';
    const FI = 'fi';
    const ES_SV = 'es_SV';
    const KHQ = 'khq';
    const GSW = 'gsw';
    const KSF_CM = 'ksf_CM';
    const FR_DJ = 'fr_DJ';
    const EN_MU = 'en_MU';
    const LN_CF = 'ln_CF';
    const KEA_CV = 'kea_CV';
    const PL_PL = 'pl_PL';
    const PA_ARAB = 'pa-Arab';
    const FR_MC = 'fr_MC';
    const SR_BA = 'sr_BA';
    const SR_LATN = 'sr-Latn';
    const EN_RU = 'en_RU';
    const EN_PH = 'en_PH';
    const SAQ = 'saq';
    const AR_PS = 'ar_PS';
    const FR_CD = 'fr_CD';
    const BEM_ZM = 'bem_ZM';
    const RU_RU = 'ru_RU';
    const EN_FI = 'en_FI';
    const FO = 'fo';
    const SO_KE = 'so_KE';
    const LN_CG = 'ln_CG';
    const AR_OM = 'ar_OM';
    const PT_ST = 'pt_ST';
    const EN_KI = 'en_KI';
    const KL_GL = 'kl_GL';
    const FR = 'fr';
    const ES_CR = 'es_CR';
    const SES_ML = 'ses_ML';
    const MER_KE = 'mer_KE';
    const XOG = 'xog';
    const XOG_UG = 'xog_UG';
    const NL_SX = 'nl_SX';
    const EN_FJ = 'en_FJ';
    const MS_BN = 'ms_BN';
    const EN_MW = 'en_MW';
    const AR_MA = 'ar_MA';
    const PT_MO = 'pt_MO';
    const KAM = 'kam';
    const EN_TC = 'en_TC';
    const AF = 'af';
    const AR_TN = 'ar_TN';
    const AM_ET = 'am_ET';
    const ES_PE = 'es_PE';
    const SBP_TZ = 'sbp_TZ';
    const FR_CF = 'fr_CF';
    const VUN_TZ = 'vun_TZ';
    const FR_RE = 'fr_RE';
    const AR_JO = 'ar_JO';
    const EBU = 'ebu';
    const LG = 'lg';
    const HA_NG = 'ha_NG';
    const LV_LV = 'lv_LV';
    const AK = 'ak';
    const CHR = 'chr';
    const AZ_CYRL_AZ = 'az-Cyrl_AZ';
    const DAV = 'dav';
    const EN_EE = 'en_EE';
    const ES_419 = 'es_419';
    const EBU_KE = 'ebu_KE';
    const EN_CY = 'en_CY';
    const FR_MF = 'fr_MF';
    const EN_AL = 'en_AL';
    const AM = 'am';
    const EN_PK = 'en_PK';
    const MGO_CM = 'mgo_CM';
    const FR_CG = 'fr_CG';
    const DJE = 'dje';
    const EN_JE = 'en_JE';
    const EN_LR = 'en_LR';
    const DYO = 'dyo';
    const LN = 'ln';
    const AK_GH = 'ak_GH';
    const PA_IN = 'pa_IN';
    const AR_DJ = 'ar_DJ';
    const EN_BS = 'en_BS';
    const LO = 'lo';
    const ZH_TW = 'zh_TW';
    const LG_UG = 'lg_UG';
    const AR_KW = 'ar_KW';
    const AR = 'ar';
    const BS_CYRL_BA = 'bs-Cyrl_BA';
    const ES_EA = 'es_EA';
    const FR_MG = 'fr_MG';
    const CA_ES = 'ca_ES';
    const AS = 'as';
    const HE_IL = 'he_IL';
    const ES_CU = 'es_CU';
    const EN_CZ = 'en_CZ';
    const EN_PL = 'en_PL';
    const FR_GA = 'fr_GA';
    const MG_MG = 'mg_MG';
    const FR_CH = 'fr_CH';
    const EN_LS = 'en_LS';
    const LT = 'lt';
    const MY_MM = 'my_MM';
    const KK_KZ = 'kk_KZ';
    const GA = 'ga';
    const EN_FM = 'en_FM';
    const LU = 'lu';
    const PS_AF = 'ps_AF';
    const NMG = 'nmg';
    const ES_BO = 'es_BO';
    const SBP = 'sbp';
    const LV = 'lv';
    const VUN = 'vun';
    const FR_YT = 'fr_YT';
    const KM_KH = 'km_KH';
    const TEO_UG = 'teo_UG';
    const FR_SN = 'fr_SN';
    const OM_ET = 'om_ET';
    const AR_ER = 'ar_ER';
    const GSW_CH = 'gsw_CH';
    const ES_PH = 'es_PH';
    const FI_FI = 'fi_FI';
    const TR_TR = 'tr_TR';
    const FR_CI = 'fr_CI';
    const EN_LT = 'en_LT';
    const EN_UM = 'en_UM';
    const UR_PK = 'ur_PK';
    const HR_HR = 'hr_HR';
    const NL_CW = 'nl_CW';
    const EN_KN = 'en_KN';
    const MS_MY = 'ms_MY';
    const AR_IL = 'ar_IL';
    const EN_ZM = 'en_ZM';
    const ES_EC = 'es_EC';
    const GL_ES = 'gl_ES';
    const EN_GU = 'en_GU';
    const GL = 'gl';
    const NMG_CM = 'nmg_CM';
    const ZH_MO = 'zh_MO';
    const EN_NA = 'en_NA';
    const HA_NE = 'ha_NE';
    const MT_MT = 'mt_MT';
    const RM = 'rm';
    const KW_GB = 'kw_GB';
    const ZH_SG = 'zh_SG';
    const RN = 'rn';
    const RO = 'ro';
    const RM_CH = 'rm_CH';
    const SAQ_KE = 'saq_KE';
    const VAI_LR = 'vai_LR';
    const KA_GE = 'ka_GE';
    const ES_GQ = 'es_GQ';
    const SR_LATN_RS = 'sr-Latn_RS';
    const EN_VU = 'en_VU';
    const ZH_HANS_HK = 'zh-Hans_HK';
    const EN_LV = 'en_LV';
    const AGQ = 'agq';
    const GU = 'gu';
    const LO_LA = 'lo_LA';
    const RU = 'ru';
    const EN_SB = 'en_SB';
    const GV = 'gv';
    const EN_BW = 'en_BW';
    const YAV = 'yav';
    const TA_SG = 'ta_SG';
    const FR_BE = 'fr_BE';
    const BG_BG = 'bg_BG';
    const ES_MX = 'es_MX';
    const RW = 'rw';
    const BE = 'be';
    const ND_ZW = 'nd_ZW';
    const KAB_DZ = 'kab_DZ';
    const MUA = 'mua';
    const PT_CV = 'pt_CV';
    const BG = 'bg';
    const TG_TJ = 'tg_TJ';
    const MS_SG = 'ms_SG';
    const MG = 'mg';
    const SG_CF = 'sg_CF';
    const PA_ARAB_PK = 'pa-Arab_PK';
    const SW_TZ = 'sw_TZ';
    const EN_SC = 'en_SC';
    const NUS = 'nus';
    const SHI_TFNG = 'shi-Tfng';
    const AR_QA = 'ar_QA';
    const NAQ_NA = 'naq_NA';
    const FR_BF = 'fr_BF';
    const RW_RW = 'rw_RW';
    const AS_IN = 'as_IN';
    const GUZ = 'guz';
    const KSB = 'ksb';
    const FR_ML = 'fr_ML';
    const MK = 'mk';
    const KOK_IN = 'kok_IN';
    const SQ_AL = 'sq_AL';
    const ML = 'ml';
    const FR_GF = 'fr_GF';
    const BM = 'bm';
    const LU_CD = 'lu_CD';
    const FR_CM = 'fr_CM';
    const BN = 'bn';
    const AR_LB = 'ar_LB';
    const ID_ID = 'id_ID';
    const UZ_ARAB = 'uz-Arab';
    const BO = 'bo';
    const EN_FR = 'en_FR';
    const EN_DE = 'en_DE';
    const VAI_LATN_L = 'vai-Latn_L';
    const AR_SO = 'ar_SO';
    const RU_BY = 'ru_BY';

    Methods

    MagicObject\Util\PicoPasswordUtil

    @@ -35495,11 +36026,11 @@

    Description

    $hashedPassword = $passwordUtil->getHash('YourSecureP@ssw0rd!');

    Constants

    -
    const ALG_MD2 = "md2";
    const ALG_MD4 = "md4";
    const ALG_MD5 = "md5";
    const ALG_SHA1 = "sha1";
    const ALG_SHA224 = "sha224";
    const ALG_SHA256 = "sha256";
    const ALG_SHA384 = "sha384";
    const ALG_SHA512_224 = "sha512/224";
    const ALG_SHA512_256 = "sha512/256";
    const ALG_SHA512 = "sha512";
    const ALG_SHA3_224 = "sha3-224";
    const ALG_SHA3_256 = "sha3-256";
    const ALG_SHA3_384 = "sha3-384";
    const ALG_SHA3_512 = "sha3-512";
    const ALG_RIPEMD128 = "ripemd128";
    const ALG_RIPEMD160 = "ripemd160";
    const ALG_RIPEMD256 = "ripemd256";
    const ALG_RIPEMD320 = "ripemd320";
    const ALG_WHIRLPOOL = "whirlpool";
    const ALG_TIGER128_3 = "tiger128,3";
    const ALG_TIGER160_3 = "tiger160,3";
    const ALG_TIGER192_3 = "tiger192,3";
    const ALG_TIGER128_4 = "tiger128,4";
    const ALG_TIGER160_4 = "tiger160,4";
    const ALG_TIGER192_4 = "tiger192,4";
    const ALG_SNEFRU = "snefru";
    const ALG_SNEFRU256 = "snefru256";
    const ALG_GOST = "gost";
    const ALG_GOST_CRYPTO = "gost-crypto";
    const ALG_ADLER32 = "adler32";
    const ALG_CRC32 = "crc32";
    const ALG_CRC32B = "crc32b";
    const ALG_CRC32C = "crc32c";
    const ALG_FNV132 = "fnv132";
    const ALG_FNV1A32 = "fnv1a32";
    const ALG_FNV164 = "fnv164";
    const ALG_FNV1A64 = "fnv1a64";
    const ALG_JOAAT = "joaat";
    const ALG_HAVAL128_3 = "haval128,3";
    const ALG_HAVAL160_3 = "haval160,3";
    const ALG_HAVAL192_3 = "haval192,3";
    const ALG_HAVAL224_3 = "haval224,3";
    const ALG_HAVAL256_3 = "haval256,3";
    const ALG_HAVAL128_4 = "haval128,4";
    const ALG_HAVAL160_4 = "haval160,4";
    const ALG_HAVAL192_4 = "haval192,4";
    const ALG_HAVAL224_4 = "haval224,4";
    const ALG_HAVAL256_4 = "haval256,4";
    const ALG_HAVAL128_5 = "haval128,5";
    const ALG_HAVAL160_5 = "haval160,5";
    const ALG_HAVAL192_5 = "haval192,5";
    const ALG_HAVAL224_5 = "haval224,5";
    const ALG_HAVAL256_5 = "haval256,5";

    Properties

    +
    const ALG_MD2 = 'md2';
    const ALG_MD4 = 'md4';
    const ALG_MD5 = 'md5';
    const ALG_SHA1 = 'sha1';
    const ALG_SHA224 = 'sha224';
    const ALG_SHA256 = 'sha256';
    const ALG_SHA384 = 'sha384';
    const ALG_SHA512_224 = 'sha512/224';
    const ALG_SHA512_256 = 'sha512/256';
    const ALG_SHA512 = 'sha512';
    const ALG_SHA3_224 = 'sha3-224';
    const ALG_SHA3_256 = 'sha3-256';
    const ALG_SHA3_384 = 'sha3-384';
    const ALG_SHA3_512 = 'sha3-512';
    const ALG_RIPEMD128 = 'ripemd128';
    const ALG_RIPEMD160 = 'ripemd160';
    const ALG_RIPEMD256 = 'ripemd256';
    const ALG_RIPEMD320 = 'ripemd320';
    const ALG_WHIRLPOOL = 'whirlpool';
    const ALG_TIGER128_3 = 'tiger128,3';
    const ALG_TIGER160_3 = 'tiger160,3';
    const ALG_TIGER192_3 = 'tiger192,3';
    const ALG_TIGER128_4 = 'tiger128,4';
    const ALG_TIGER160_4 = 'tiger160,4';
    const ALG_TIGER192_4 = 'tiger192,4';
    const ALG_SNEFRU = 'snefru';
    const ALG_SNEFRU256 = 'snefru256';
    const ALG_GOST = 'gost';
    const ALG_GOST_CRYPTO = 'gost-crypto';
    const ALG_ADLER32 = 'adler32';
    const ALG_CRC32 = 'crc32';
    const ALG_CRC32B = 'crc32b';
    const ALG_CRC32C = 'crc32c';
    const ALG_FNV132 = 'fnv132';
    const ALG_FNV1A32 = 'fnv1a32';
    const ALG_FNV164 = 'fnv164';
    const ALG_FNV1A64 = 'fnv1a64';
    const ALG_JOAAT = 'joaat';
    const ALG_HAVAL128_3 = 'haval128,3';
    const ALG_HAVAL160_3 = 'haval160,3';
    const ALG_HAVAL192_3 = 'haval192,3';
    const ALG_HAVAL224_3 = 'haval224,3';
    const ALG_HAVAL256_3 = 'haval256,3';
    const ALG_HAVAL128_4 = 'haval128,4';
    const ALG_HAVAL160_4 = 'haval160,4';
    const ALG_HAVAL192_4 = 'haval192,4';
    const ALG_HAVAL224_4 = 'haval224,4';
    const ALG_HAVAL256_4 = 'haval256,4';
    const ALG_HAVAL128_5 = 'haval128,5';
    const ALG_HAVAL160_5 = 'haval160,5';
    const ALG_HAVAL192_5 = 'haval192,5';
    const ALG_HAVAL224_5 = 'haval224,5';
    const ALG_HAVAL256_5 = 'haval256,5';

    Properties

    1. regex

    Declaration

    -
    private string $regex = '/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{%d,}$/';
    +
    private string $regex = '/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{%d,}$/';

    Description

    Regular expression format for password validation.

    @@ -35521,7 +36052,7 @@

    Description

    3. hashAlgorithm

    Declaration

    -
    private string $hashAlgorithm = 'sha1';
    +
    private string $hashAlgorithm = 'sha1';

    Description

    Hash algorithm to be used for password hashing.

    @@ -36556,7 +37087,7 @@

    Description

    thereby avoiding confusion for users when debugging code errors.

    Constants

    -
    const REMPTY = "' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '";

    Properties

    +
    const REMPTY = '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '';

    Properties

    1. dumpForceQuotes

    Declaration

    @@ -36598,7 +37129,7 @@

    Description

    5. _containsGroupAnchor

    Declaration

    -
    private bool $_containsGroupAnchor = false;
    +
    private string $_containsGroupAnchor;

    Description

    Indicates if a group anchor is present in the YAML document.

    @@ -36634,7 +37165,7 @@

    Description

    9. literalPlaceHolder

    Declaration

    -
    private string $literalPlaceHolder = '___YAML_Literal_Block___';
    +
    private string $literalPlaceHolder = '___YAML_Literal_Block___';

    Description

    Placeholder for YAML literal blocks.

    @@ -37772,14 +38303,14 @@

    Properties

    1. encodingFrom

    Declaration

    -
    private string $encodingFrom The source encoding (default is ISO-8859-2). $encodingFrom = 'ISO-8859-2';
    +
    private string $encodingFrom The source encoding (default is ISO-8859-2). $encodingFrom = 'ISO-8859-2';
    2. encodingTo

    Declaration

    -
    private string $encodingTo The target encoding (default is UTF-8). $encodingTo = 'UTF-8';
    +
    private string $encodingTo The target encoding (default is UTF-8). $encodingTo = 'UTF-8';
    @@ -37810,32 +38341,32 @@

    Declaration

    4. mapChrString

    Declaration

    private array $mapChrString Mapping of character codes to HTML entities. $mapChrString = array ( - 128 => '&euro;', - 130 => '&sbquo;', - 132 => '&bdquo;', - 133 => '&hellip;', - 134 => '&dagger;', - 135 => '&Dagger;', - 137 => '&permil;', - 139 => '&lsaquo;', - 145 => '&lsquo;', - 146 => '&rsquo;', - 147 => '&ldquo;', - 148 => '&rdquo;', - 149 => '&bull;', - 150 => '&ndash;', - 151 => '&mdash;', - 153 => '&trade;', - 155 => '&rsquo;', - 166 => '&brvbar;', - 169 => '&copy;', - 171 => '&laquo;', - 174 => '&reg;', - 177 => '&plusmn;', - 181 => '&micro;', - 182 => '&para;', - 183 => '&middot;', - 187 => '&raquo;', + 128 => '&euro;', + 130 => '&sbquo;', + 132 => '&bdquo;', + 133 => '&hellip;', + 134 => '&dagger;', + 135 => '&Dagger;', + 137 => '&permil;', + 139 => '&lsaquo;', + 145 => '&lsquo;', + 146 => '&rsquo;', + 147 => '&ldquo;', + 148 => '&rdquo;', + 149 => '&bull;', + 150 => '&ndash;', + 151 => '&mdash;', + 153 => '&trade;', + 155 => '&rsquo;', + 166 => '&brvbar;', + 169 => '&copy;', + 171 => '&laquo;', + 174 => '&reg;', + 177 => '&plusmn;', + 181 => '&micro;', + 182 => '&para;', + 183 => '&middot;', + 187 => '&raquo;', );
    @@ -38657,91 +39188,190 @@

    Throws

    32. validatePositiveAnnotation

    Declaration

    -
    private function validatePositiveAnnotation()
    {
    }
    +
    private function validatePositiveAnnotation(
    +    string $propertyName,
    +    string $propertyValue,
    +    string $docComment
    +)
    {
    }

    Description

    Validates the Positive annotation. Ensures a numeric value is positive (> 0).

    +

    Parameters

    +
    $propertyName
    +

    Property name

    +
    $propertyValue
    +

    Property value

    +
    $docComment
    +

    Doc comment

    33. validatePositiveOrZeroAnnotation

    Declaration

    -
    private function validatePositiveOrZeroAnnotation()
    {
    }
    +
    private function validatePositiveOrZeroAnnotation(
    +    string $propertyName,
    +    string $propertyValue,
    +    string $docComment
    +)
    {
    }

    Description

    Validates the PositiveOrZero annotation. Ensures a numeric value is positive or zero (>= 0).

    +

    Parameters

    +
    $propertyName
    +

    Property name

    +
    $propertyValue
    +

    Property value

    +
    $docComment
    +

    Doc comment

    34. validateNegativeAnnotation

    Declaration

    -
    private function validateNegativeAnnotation()
    {
    }
    +
    private function validateNegativeAnnotation(
    +    string $propertyName,
    +    string $propertyValue,
    +    string $docComment
    +)
    {
    }

    Description

    Validates the Negative annotation. Ensures a numeric value is negative (< 0).

    +

    Parameters

    +
    $propertyName
    +

    Property name

    +
    $propertyValue
    +

    Property value

    +
    $docComment
    +

    Doc comment

    35. validateNegativeOrZeroAnnotation

    Declaration

    -
    private function validateNegativeOrZeroAnnotation()
    {
    }
    +
    private function validateNegativeOrZeroAnnotation(
    +    string $propertyName,
    +    string $propertyValue,
    +    string $docComment
    +)
    {
    }

    Description

    Validates the NegativeOrZero annotation. Ensures a numeric value is negative or zero (<= 0).

    +

    Parameters

    +
    $propertyName
    +

    Property name

    +
    $propertyValue
    +

    Property value

    +
    $docComment
    +

    Doc comment

    36. validatePastOrPresentAnnotation

    Declaration

    -
    private function validatePastOrPresentAnnotation()
    {
    }
    +
    private function validatePastOrPresentAnnotation(
    +    string $propertyName,
    +    string $propertyValue,
    +    string $docComment
    +)
    {
    }

    Description

    Validates the PastOrPresent annotation. Ensures a date/time is in the past or present.

    +

    Parameters

    +
    $propertyName
    +

    Property name

    +
    $propertyValue
    +

    Property value

    +
    $docComment
    +

    Doc comment

    37. validateUrlAnnotation

    Declaration

    -
    private function validateUrlAnnotation()
    {
    }
    +
    private function validateUrlAnnotation(
    +    string $propertyName,
    +    string $propertyValue,
    +    string $docComment
    +)
    {
    }

    Description

    Validates the Url annotation. Ensures a string is a valid URL.

    +

    Parameters

    +
    $propertyName
    +

    Property name

    +
    $propertyValue
    +

    Property value

    +
    $docComment
    +

    Doc comment

    38. validateIpAnnotation

    Declaration

    -
    private function validateIpAnnotation()
    {
    }
    +
    private function validateIpAnnotation(
    +    string $propertyName,
    +    string $propertyValue,
    +    string $docComment
    +)
    {
    }

    Description

    Validates the Ip annotation. Ensures a string is a valid IP address.

    +

    Parameters

    +
    $propertyName
    +

    Property name

    +
    $propertyValue
    +

    Property value

    +
    $docComment
    +

    Doc comment

    39. validateDateFormatAnnotation

    Declaration

    -
    private function validateDateFormatAnnotation()
    {
    }
    +
    private function validateDateFormatAnnotation(
    +    string $propertyName,
    +    string $propertyValue,
    +    string $docComment
    +)
    {
    }

    Description

    Validates the DateFormat annotation. Ensures a string matches a specific date format.

    +

    Parameters

    +
    $propertyName
    +

    Property name

    +
    $propertyValue
    +

    Property value

    +
    $docComment
    +

    Doc comment

    40. validatePhoneAnnotation

    Declaration

    -
    private function validatePhoneAnnotation()
    {
    }
    +
    private function validatePhoneAnnotation(
    +    string $propertyName,
    +    string $propertyValue,
    +    string $docComment
    +)
    {
    }

    Description

    Validates the Phone annotation. Ensures a string is a valid phone number (basic pattern).

    +

    Parameters

    +
    $propertyName
    +

    Property name

    +
    $propertyValue
    +

    Property value

    +
    $docComment
    +

    Doc comment

    @@ -38765,84 +39395,172 @@

    Return

    42. validateAlphaAnnotation

    Declaration

    -
    private function validateAlphaAnnotation()
    {
    }
    +
    private function validateAlphaAnnotation(
    +    string $propertyName,
    +    string $propertyValue,
    +    string $docComment
    +)
    {
    }

    Description

    Validates the Alpha annotation. Ensures a string contains only alphabetic characters.

    +

    Parameters

    +
    $propertyName
    +

    Property name

    +
    $propertyValue
    +

    Property value

    +
    $docComment
    +

    Doc comment

    43. validateAlphaNumericAnnotation

    Declaration

    -
    private function validateAlphaNumericAnnotation()
    {
    }
    +
    private function validateAlphaNumericAnnotation(
    +    string $propertyName,
    +    string $propertyValue,
    +    string $docComment
    +)
    {
    }

    Description

    Validates the AlphaNumeric annotation. Ensures a string contains only alphanumeric characters.

    +

    Parameters

    +
    $propertyName
    +

    Property name

    +
    $propertyValue
    +

    Property value

    +
    $docComment
    +

    Doc comment

    44. validateStartsWithAnnotation

    Declaration

    -
    private function validateStartsWithAnnotation()
    {
    }
    +
    private function validateStartsWithAnnotation(
    +    string $propertyName,
    +    string $propertyValue,
    +    string $docComment
    +)
    {
    }

    Description

    Validates the StartsWith annotation. Ensures a string starts with a specified prefix. Supports caseSensitive=true|false.

    +

    Parameters

    +
    $propertyName
    +

    Property name

    +
    $propertyValue
    +

    Property value

    +
    $docComment
    +

    Doc comment

    45. validateEndsWithAnnotation

    Declaration

    -
    private function validateEndsWithAnnotation()
    {
    }
    +
    private function validateEndsWithAnnotation(
    +    string $propertyName,
    +    string $propertyValue,
    +    string $docComment
    +)
    {
    }

    Description

    Validates the EndsWith annotation. Ensures a string ends with a specified suffix. Supports caseSensitive=true|false.

    +

    Parameters

    +
    $propertyName
    +

    Property name

    +
    $propertyValue
    +

    Property value

    +
    $docComment
    +

    Doc comment

    46. validateContainsAnnotation

    Declaration

    -
    private function validateContainsAnnotation()
    {
    }
    +
    private function validateContainsAnnotation(
    +    string $propertyName,
    +    string $propertyValue,
    +    string $docComment
    +)
    {
    }

    Description

    Validates the Contains annotation. Ensures a string contains a specified substring. Supports caseSensitive=true|false.

    +

    Parameters

    +
    $propertyName
    +

    Property name

    +
    $propertyValue
    +

    Property value

    +
    $docComment
    +

    Doc comment

    47. validateBeforeDateAnnotation

    Declaration

    -
    private function validateBeforeDateAnnotation()
    {
    }
    +
    private function validateBeforeDateAnnotation(
    +    string $propertyName,
    +    string $propertyValue,
    +    string $docComment
    +)
    {
    }

    Description

    Validates the BeforeDate annotation. Ensures a date is before a specified date.

    +

    Parameters

    +
    $propertyName
    +

    Property name

    +
    $propertyValue
    +

    Property value

    +
    $docComment
    +

    Doc comment

    48. validateAfterDateAnnotation

    Declaration

    -
    private function validateAfterDateAnnotation()
    {
    }
    +
    private function validateAfterDateAnnotation(
    +    string $propertyName,
    +    string $propertyValue,
    +    string $docComment
    +)
    {
    }

    Description

    Validates the AfterDate annotation. Ensures a date is after a specified date.

    +

    Parameters

    +
    $propertyName
    +

    Property name

    +
    $propertyValue
    +

    Property value

    +
    $docComment
    +

    Doc comment

    49. validateTimeRangeAnnotation

    Declaration

    -
    private function validateTimeRangeAnnotation()
    {
    }
    +
    private function validateTimeRangeAnnotation(
    +    string $propertyName,
    +    string $propertyValue,
    +    string $docComment
    +)
    {
    }

    Description

    Validates the TimeRange annotation. Ensures a time is within a specified range (min and max), supporting both HH:MM and HH:MM:SS formats.

    +

    Parameters

    +
    $propertyName
    +

    Property name

    +
    $propertyValue
    +

    Property value

    +
    $docComment
    +

    Doc comment

    diff --git a/src/DataTable.php b/src/DataTable.php index 5e4d77c..cec7410 100644 --- a/src/DataTable.php +++ b/src/DataTable.php @@ -12,6 +12,7 @@ use MagicObject\Util\PicoStringUtil; use MagicObject\Util\PicoTableUtil; use ReflectionClass; +use ReflectionProperty; use stdClass; /** diff --git a/src/Database/PicoDatabase.php b/src/Database/PicoDatabase.php index fe551f7..1f7ef45 100644 --- a/src/Database/PicoDatabase.php +++ b/src/Database/PicoDatabase.php @@ -354,7 +354,6 @@ public function __construct($databaseCredentials, $callbackExecuteQuery = null, * Establishes a connection to the specified database type. Optionally selects a database if the * connection is to an RDMS and the flag is set. * - * @param int $timeout Connection timeout in seconds. * @param bool $withDatabase Flag to select the database when connected (default is true). * @return bool true if the connection is successful, false if it fails. */ @@ -441,7 +440,12 @@ private function connectRDMS($withDatabase = true, $timeout = 0) } // Get charset from the database credentials - $charset = addslashes($this->databaseCredentials->getCharset()); + $charset = $this->databaseCredentials->getCharset(); + if(isset($charset)) { + $charset = addslashes($charset); + } else { + $charset = 'utf8'; + } // Handle PostgreSQL-specific connection settings if ($this->getDatabaseType() == PicoDatabaseType::DATABASE_TYPE_PGSQL) { @@ -811,7 +815,7 @@ public function setTimeZoneOffset($timeZoneOffset) * The method generates the appropriate SQL command based on the type of the database (e.g., PostgreSQL, MySQL, etc.) * and executes it to apply the time zone setting. * - * @param string $timeZoneOffset The time zone offset to set for the session. It can either be a valid UTC offset (e.g., '+00:00') + * @param string $timezone The time zone offset to set for the session. It can either be a valid UTC offset (e.g., '+00:00') * or a named time zone (e.g., 'Europe/London'). * @return self Returns the current instance for method chaining. */ @@ -1404,7 +1408,7 @@ public function getDatabaseTimeZoneOffset() */ public function __toString() { - $val = new stdClass; + $val = new stdClass(); $val->databaseType = $this->databaseType; $val->autocommit = $this->autocommit; $val->connected = $this->connected; diff --git a/src/Database/PicoDatabasePersistence.php b/src/Database/PicoDatabasePersistence.php index 61368b2..4268089 100644 --- a/src/Database/PicoDatabasePersistence.php +++ b/src/Database/PicoDatabasePersistence.php @@ -1268,6 +1268,288 @@ private function _insertQuery($info = null, $queryBuilder = null) ->values($this->createStatementValues($fixValues)); } + /** + * Insert multiple objects into the database. + * + * When $returnIds is false, the method uses multi-row INSERT statements + * and never calls insert() for individual records. The number of rows + * in each SQL statement is limited by $batchSize. + * + * When $returnIds is true, the existing insert() mechanism is used so + * that generated database IDs can be retrieved. + * + * @param array $objects Array of entity objects, associative arrays, or stdClass objects. + * @param bool $includeNull Whether to include NULL values in the insert operation. + * @param bool $returnIds Whether to return generated primary key values. + * @param int $batchSize Maximum number of rows per INSERT statement. + * @return int|array Number of inserted records, or generated IDs. + * @throws EntityException If the entity or insert operation is invalid. + */ + public function insertAll( + $objects, + $includeNull = false, + $returnIds = false, + $batchSize = 1000 + ) + { + if(!is_array($objects)) + { + throw new InvalidParameterException( + "Objects must be an array" + ); + } + + if(empty($objects)) + { + return $returnIds ? array() : 0; + } + + $batchSize = (int) $batchSize; + + if($batchSize < 1) + { + throw new InvalidParameterException( + "Batch size must be greater than zero" + ); + } + + $info = $this->getTableInfo(); + + /* + * Normalize all input data into entity objects. + */ + $entities = array(); + + foreach($objects as $object) + { + if($object instanceof $this->className) + { + $entity = $object; + } + else + { + $entity = new $this->className( + $object, + $this->database + ); + } + + if(!($entity instanceof MagicObject)) + { + throw new InvalidParameterException( + "Invalid entity object: " . get_class($entity) + ); + } + + $entity->currentDatabase($this->database); + + $entities[] = $entity; + } + + /* + * ID retrieval is intentionally not part of the fast bulk path. + * + * When requested, use the existing insert() mechanism because it + * already handles database-generated primary keys. + */ + if($returnIds) + { + $ids = array(); + + foreach($entities as $entity) + { + $persist = new self( + $this->database, + $entity + ); + + $persist->insert($includeNull); + + $primaryKeys = $info->getPrimaryKeys(); + + if(count($primaryKeys) == 1) + { + $propertyName = key($primaryKeys); + + $ids[] = $entity->get($propertyName); + } + else + { + $primaryKeyValues = array(); + + foreach($primaryKeys as $propertyName=>$primaryKey) + { + $primaryKeyValues[$propertyName] = + $entity->get($propertyName); + } + + $ids[] = $primaryKeyValues; + } + } + + return $ids; + } + + /* + * Fast bulk-insert path. + * + * Rows with the same column structure are grouped together. + * This allows includeNull=false to preserve database defaults. + */ + $groups = array(); + + foreach($entities as $entity) + { + $persist = new self( + $this->database, + $entity + ); + + $persist->flagIncludeNull = $includeNull; + + /* + * Generate UUID/TIMEBASED/LEGACY_TIMEBASED values before + * collecting the values. + * + * IDENTITY values remain database-generated. + */ + $persist->addGeneratedValue( + $info, + true + ); + + $queryBuilder = new PicoDatabaseQueryBuilder( + $this->database + ); + + $values = $persist->getValues( + $info, + $queryBuilder + ); + + $values = $persist->fixInsertableValues( + $values, + $info + ); + + if(empty($values)) + { + throw new NoInsertableColumnException( + "No insertable column" + ); + } + + /* + * The keys represent the actual columns that will be inserted. + * + * Two rows can only be placed in the same INSERT statement when + * they have exactly the same column structure. + */ + $groupKey = implode( + "\x1F", + array_keys($values) + ); + + if(!isset($groups[$groupKey])) + { + $groups[$groupKey] = array(); + } + + $groups[$groupKey][] = $values; + } + + /* + * Execute each group in batches. + */ + $inserted = 0; + + foreach($groups as $rows) + { + $totalRows = count($rows); + + for( + $offset = 0; + $offset < $totalRows; + $offset += $batchSize + ) + { + $batch = array_slice( + $rows, + $offset, + $batchSize + ); + + if(empty($batch)) + { + continue; + } + + $queryBuilder = new PicoDatabaseQueryBuilder( + $this->database + ); + + $queryBuilder = $this->createBulkInsertQuery( + $queryBuilder, + $info, + $batch + ); + + /* + * Execute exactly one multi-row INSERT for this batch. + */ + $this->database->executeInsert( + $queryBuilder + ); + + $inserted += count($batch); + } + } + + return $inserted; + } + + /** + * Create a bulk INSERT query. + * + * The values are expected to have already been escaped by the + * persistence layer. + * + * @param PicoDatabaseQueryBuilder $queryBuilder Query builder. + * @param PicoTableInfo $info Table information. + * @param array $rows Rows of associative column/value pairs. + * @return PicoDatabaseQueryBuilder The generated query. + */ + private function createBulkInsertQuery( + $queryBuilder, + $info, + $rows + ) + { + if(empty($rows)) + { + throw new NoInsertableColumnException( + "No insertable column" + ); + } + + $firstRow = reset($rows); + + $queryBuilder + ->newQuery() + ->insert() + ->into($info->getTableName()) + ->fields($this->createStatementFields($firstRow)); + + foreach($rows as $values) + { + $queryBuilder->values( + $this->createStatementValues($values) + ); + } + + return $queryBuilder; + } + /** * Filter the values to only include those that are insertable based on table info. * @@ -4131,6 +4413,28 @@ private function _deleteQuery($info = null, $queryBuilder = null, $where = null) ; } + /** + * Delete all record by specification + * + * @param PicoSpecification $specification Specification + * @return PDOStatement + */ + public function deleteAll($specification) + { + if($specification === null) + { + throw new InvalidParameterException( + "Specification is required" + ); + } + + $persistence = $this->whereWithSpecification( + $specification + ); + + return $persistence->delete(); + } + /** * Retrieves a MagicObject with a WHERE specification. * diff --git a/src/Database/PicoDatabaseQueryBuilder.php b/src/Database/PicoDatabaseQueryBuilder.php index 68735a6..7313c9b 100644 --- a/src/Database/PicoDatabaseQueryBuilder.php +++ b/src/Database/PicoDatabaseQueryBuilder.php @@ -466,6 +466,7 @@ public function bindSqlParams() public function createMatchedValue($args) { $result = ""; + $j = 0; if (count($args) > 1) { $format = $args[0]; $formats = explode('?', $format); diff --git a/src/Database/PicoDatabaseStructure.php b/src/Database/PicoDatabaseStructure.php index 19b9bf7..9e5fe16 100644 --- a/src/Database/PicoDatabaseStructure.php +++ b/src/Database/PicoDatabaseStructure.php @@ -4,6 +4,7 @@ use MagicObject\Exceptions\InvalidAnnotationException; use MagicObject\Exceptions\MandatoryTableNameException; +use MagicObject\MagicObject; use MagicObject\Util\ClassUtil\PicoAnnotationParser; /** diff --git a/src/Database/PicoPredicate.php b/src/Database/PicoPredicate.php index a6fa232..7a27d2c 100644 --- a/src/Database/PicoPredicate.php +++ b/src/Database/PicoPredicate.php @@ -47,11 +47,42 @@ public static function alwaysTrue() * * @param string|null $field The name of the field. * @param mixed|null $value The value to compare against. - */ - public function __construct($field = null, $value = null) - { - if ($field !== null) { - is_array($value) ? $this->in($field, $value) : $this->equals($field, $value); + * @param string|null $operator The operator + */ + public function __construct($field = null, $value = null, $operator = null) + { + if ($operator !== null) { + switch ($operator) { + case PicoDataComparation::GREATER_THAN: + $this->greaterThan($field, $value); + break; + case PicoDataComparation::GREATER_THAN_OR_EQUALS: + $this->greaterThanOrEquals($field, $value); + break; + case PicoDataComparation::LESS_THAN: + $this->lessThan($field, $value); + break; + case PicoDataComparation::LESS_THAN_OR_EQUALS: + $this->lessThanOrEquals($field, $value); + break; + case PicoDataComparation::NOT_EQUALS: + $this->notEquals($field, $value); + break; + case PicoDataComparation::LIKE: + $this->like($field, $value); + break; + case PicoDataComparation::IN: + $this->in($field, (array)$value); + break; + default: + if ($field !== null) { + is_array($value) ? $this->in($field, $value) : $this->equals($field, $value); + } + } + } else { + if ($field !== null) { + is_array($value) ? $this->in($field, $value) : $this->equals($field, $value); + } } } diff --git a/src/Database/PicoSpecification.php b/src/Database/PicoSpecification.php index 406efa9..4d1ef8e 100644 --- a/src/Database/PicoSpecification.php +++ b/src/Database/PicoSpecification.php @@ -142,14 +142,13 @@ public function add($predicate) */ public function addAnd($predicate) { - if(isset($predicate)) - { + if ($predicate !== null) { if ($predicate instanceof PicoPredicate) { $this->addFilter($predicate, self::LOGIC_AND); } elseif ($predicate instanceof PicoSpecification) { $this->addSubfilter($predicate, self::LOGIC_AND); - } elseif (is_array($predicate) && count($predicate) > 1 && is_string($predicate[0])) { - $this->addFilter(new PicoPredicate($predicate[0], $predicate[1]), self::LOGIC_AND); + } elseif (is_array($predicate)) { + $this->addPredicateArray($predicate, self::LOGIC_AND); } elseif (is_string($predicate)) { $this->addFilter($predicate, self::LOGIC_AND); } @@ -171,14 +170,13 @@ public function addAnd($predicate) */ public function addOr($predicate) { - if(isset($predicate)) - { + if ($predicate !== null) { if ($predicate instanceof PicoPredicate) { $this->addFilter($predicate, self::LOGIC_OR); } elseif ($predicate instanceof PicoSpecification) { $this->addSubfilter($predicate, self::LOGIC_OR); - } elseif (is_array($predicate) && count($predicate) > 1 && is_string($predicate[0])) { - $this->addFilter(new PicoPredicate($predicate[0], $predicate[1]), self::LOGIC_OR); + } elseif (is_array($predicate)) { + $this->addPredicateArray($predicate, self::LOGIC_OR); } elseif (is_string($predicate)) { $this->addFilter($predicate, self::LOGIC_OR); } @@ -186,6 +184,34 @@ public function addOr($predicate) return $this; } + /** + * Adds a predicate condition from an array representation. + * + * This helper method converts an array into a PicoPredicate and applies it + * with the specified logical operator (AND/OR). + * + * Expected array formats: + * - [field, value] → Creates an equality predicate. + * - [field, value, operator] → Creates a predicate with the given operator. + * + * @param array $predicate The array representing the condition. + * Must contain at least two elements: + * - index 0: column name (string) + * - index 1: value + * - index 2: operator (optional) + * @param string $logic The logical operator to apply (e.g., self::LOGIC_AND, self::LOGIC_OR). + * + * @return void + */ + private function addPredicateArray($predicate, $logic) + { + if (count($predicate) >= 3 && is_string($predicate[0])) { + $this->addFilter(new PicoPredicate($predicate[0], $predicate[1], $predicate[2]), $logic); + } elseif (count($predicate) >= 2 && is_string($predicate[0])) { + $this->addFilter(new PicoPredicate($predicate[0], $predicate[1]), $logic); + } + } + /** * Adds a filtering condition to the specifications. * diff --git a/src/Getter.php b/src/Getter.php index a0f72d5..979daca 100644 --- a/src/Getter.php +++ b/src/Getter.php @@ -6,6 +6,7 @@ use MagicObject\Util\ClassUtil\PicoAnnotationParser; use MagicObject\Util\PicoStringUtil; use ReflectionClass; +use ReflectionProperty; use stdClass; /** diff --git a/src/MagicDto.php b/src/MagicDto.php index 0b1fea1..1ca7314 100644 --- a/src/MagicDto.php +++ b/src/MagicDto.php @@ -6,6 +6,7 @@ use DOMDocument; use InvalidArgumentException; use MagicObject\Exceptions\InvalidAnnotationException; +use MagicObject\Exceptions\InvalidValueException; use MagicObject\Util\ClassUtil\PicoAnnotationParser; use MagicObject\Util\ClassUtil\PicoObjectParser; use MagicObject\Util\PicoGenericObject; diff --git a/src/MagicObject.php b/src/MagicObject.php index 8399344..b0cd435 100644 --- a/src/MagicObject.php +++ b/src/MagicObject.php @@ -945,6 +945,41 @@ public function insertQuery($includeNull = false) } } + /** + * Insert multiple entities into the database. + * + * By default, this method performs a bulk insert and returns the number + * of inserted records. Generated IDs are not retrieved. + * + * @param PicoDatabase $database Database connection. + * @param array $objects Array of entity objects, associative arrays, or stdClass objects. + * @param bool $includeNull Whether to include NULL values in the insert operation. + * @param bool $returnIds Whether to return generated primary key values. + * @return int|array Number of inserted records, or generated IDs. + */ + public static function insertAll( + $database, + $objects, + $includeNull = false, + $returnIds = false + ) + { + $className = get_called_class(); + + $entity = new $className(null, $database); + + $persistence = new PicoDatabasePersistence( + $database, + $entity + ); + + return $persistence->insertAll( + $objects, + $includeNull, + $returnIds + ); + } + /** * Update data in the database. * @@ -1034,6 +1069,37 @@ public function deleteQuery() throw new NoDatabaseConnectionException(self::MESSAGE_NO_DATABASE_CONNECTION); } } + + /** + * Delete multiple entities using a specification. + * + * The operation is executed as a native bulk DELETE statement. + * + * @param PicoDatabase $database Database connection. + * @param PicoSpecification $specification Specification used to identify records. + * @return int Number of deleted records. + */ + public static function deleteAll( + $database, + $specification + ) + { + $className = get_called_class(); + + $entity = new $className( + null, + $database + ); + + $persistence = new PicoDatabasePersistence( + $database, + $entity + ); + + return $persistence->deleteAll( + $specification + ); + } /** * Starts a database transaction. @@ -1835,7 +1901,7 @@ private function countData($persist, $specification, $pageable, $sortable, $find } else { - $match = $persist->countAll($specification, $pageable, $sortable); + $match = $persist->countAll($specification); } return $match; } @@ -2095,11 +2161,11 @@ public function countAll($specification = null, $pageable = null, $sortable = nu $persist = new PicoDatabasePersistence($this->_database, $this); if($specification != null && $specification instanceof PicoSpecification) { - $result = $persist->countAll($specification, $pageable, $sortable); + $result = $persist->countAll($specification); } else { - $result = $persist->countAll(null, null, null); + $result = $persist->countAll(null); } } else @@ -2206,7 +2272,6 @@ public function findIfExists($params) * * @param string $method The method to find by * @param mixed $params The parameters for the search - * @param PicoSpecification|null $specification The specification for filtering * @param PicoPageable|string|null $pageable The pagination information * @param PicoSortable|string|null $sortable The sorting criteria * @param bool $passive Flag indicating whether the object is passive diff --git a/src/SecretObject.php b/src/SecretObject.php index e00c0e9..6b40bf8 100644 --- a/src/SecretObject.php +++ b/src/SecretObject.php @@ -3,6 +3,7 @@ namespace MagicObject; use MagicObject\Exceptions\InvalidAnnotationException; +use MagicObject\Exceptions\InvalidValueException; use MagicObject\Util\PicoEnvironmentVariable; use MagicObject\Secret\PicoSecret; use MagicObject\Util\ClassUtil\PicoAnnotationParser; @@ -418,7 +419,7 @@ private function typeStdClass($data) * This method encrypts the provided data, which can be an object, array, or scalar value. * It handles nested structures by encrypting each value individually. * - * @param MagicObject|PicoGenericObject|self|array|stdClass|string|number $data The data to encrypt. + * @param MagicObject|PicoGenericObject|self|array|stdClass|string|int|float $data The data to encrypt. * @param string|null $hexKey The encryption key in hexadecimal format. If null, a secure key will be generated. * @return mixed The encrypted data. */ diff --git a/src/SetterGetter.php b/src/SetterGetter.php index e371611..82d5f1b 100644 --- a/src/SetterGetter.php +++ b/src/SetterGetter.php @@ -3,11 +3,13 @@ namespace MagicObject; use MagicObject\Exceptions\InvalidAnnotationException; +use MagicObject\Exceptions\InvalidValueException; use MagicObject\Util\ClassUtil\PicoAnnotationParser; use MagicObject\Util\PicoArrayUtil; use MagicObject\Util\PicoStringUtil; use MagicObject\Util\ValidationUtil; use ReflectionClass; +use ReflectionProperty; use stdClass; /** @@ -212,7 +214,7 @@ public function __isset($name) * * Optionally converts property names to snake_case for the returned object. * - * @param bool $snakeCase Flag to determine if property names should be converted to snake_case. + * @param string $name Flag to determine if property names should be converted to snake_case. * @return stdClass Returns an object with property values. */ public function __unset($name) diff --git a/src/Util/PicoEnvironmentVariable.php b/src/Util/PicoEnvironmentVariable.php index bab0b08..29a8b98 100644 --- a/src/Util/PicoEnvironmentVariable.php +++ b/src/Util/PicoEnvironmentVariable.php @@ -109,6 +109,9 @@ public static function replaceValueAllObject($values, $collection, $recursive = */ public static function replaceWithOtherProperties($value, $collection) { + if(!isset($value)) { + return $value; + } if(stripos($value, '$') !== false) { $result = $value; @@ -117,9 +120,9 @@ public static function replaceWithOtherProperties($value, $collection) $pair = array_combine($matches[0], $matches[1]); if(!empty($pair)) { - foreach($pair as $key=>$value) + foreach($pair as $key=>$val) { - $otherValue = self::getOtherValue($value, $collection); + $otherValue = self::getOtherValue($val, $collection); if($otherValue !== null) { // found @@ -212,9 +215,9 @@ public static function replaceWithEnvironmentVariable($value) $pair = array_combine($matches[0], $matches[1]); if(!empty($pair)) { - foreach($pair as $key=>$value) + foreach($pair as $key=>$val) { - $systemEnv = getenv($value); + $systemEnv = getenv($val); if($systemEnv === false) { // not found diff --git a/src/Util/PicoIniUtil.php b/src/Util/PicoIniUtil.php index 04e17a5..2e99019 100644 --- a/src/Util/PicoIniUtil.php +++ b/src/Util/PicoIniUtil.php @@ -187,10 +187,13 @@ public static function parseIniString($str) } /** - * Check if the line is invalid (empty or a comment). + * Check whether the result of a regular expression match is valid. * - * @param string $line The line to check. - * @return bool true if the line is invalid, false otherwise. + * Returns true if the match array is not empty and its first element + * is set. Typically used to validate the output of preg_match(). + * + * @param array $matches The array of regex match results. + * @return bool True if the match result is valid, false otherwise. */ public static function matchValue($matches) { diff --git a/src/Util/PicoTableUtil.php b/src/Util/PicoTableUtil.php index 1dbd3c0..7abea8f 100644 --- a/src/Util/PicoTableUtil.php +++ b/src/Util/PicoTableUtil.php @@ -92,6 +92,7 @@ public static function parseElementAttributes($attributes) { throw new InvalidParameterException("Invalid parameter for ".__CLASS__."::parseElementAttributes(). Expected value to be string, array given."); } + $attrs = array(); if(PicoStringUtil::isNotNullAndNotEmpty($attributes)) { $attributes = trim($attributes); diff --git a/src/Util/PicoYamlUtil.php b/src/Util/PicoYamlUtil.php index a14bda9..2d8730b 100644 --- a/src/Util/PicoYamlUtil.php +++ b/src/Util/PicoYamlUtil.php @@ -2,6 +2,7 @@ namespace MagicObject\Util; +use Exception; use RecursiveArrayIterator; use RecursiveIteratorIterator; diff --git a/src/Util/Spicy.php b/src/Util/Spicy.php index 059cf20..c050cd1 100644 --- a/src/Util/Spicy.php +++ b/src/Util/Spicy.php @@ -2,6 +2,7 @@ namespace MagicObject\Util; +use Exception; use MagicObject\Exceptions\YamlException; use stdClass; @@ -57,9 +58,9 @@ class Spicy // NOSONAR /** * Indicates if a group anchor is present in the YAML document. * - * @var bool + * @var string */ - private $_containsGroupAnchor = false; // NOSONAR + private $_containsGroupAnchor = null; // NOSONAR /** * Indicates if a group alias is present in the YAML document. @@ -569,6 +570,8 @@ private function loadWithSource($source) // NOSONAR $this->path = array(); $this->result = array(); + $literalBlock = ''; + $cnt = count($source); for ($i = 0; $i < $cnt; $i++) { $line = $source[$i]; @@ -1130,7 +1133,7 @@ private function addArray($incomingData, $incomingIndent) // NOSONAR $this->savedGroups[$this->_containsGroupAnchor][$incomingIndent + 2] = $k; } } - $this->_containsGroupAnchor = false; + $this->_containsGroupAnchor = null; } return $this; } diff --git a/src/Util/ValidationUtil.php b/src/Util/ValidationUtil.php index 10d4c2d..bf78fcb 100644 --- a/src/Util/ValidationUtil.php +++ b/src/Util/ValidationUtil.php @@ -1054,6 +1054,10 @@ private function validateEnumAnnotation($propertyName, $propertyValue, $docComme /** * Validates the **`Positive`** annotation. * Ensures a numeric value is positive (> 0). + * + * @param string $propertyName Property name + * @param string $propertyValue Property value + * @param string $docComment Doc comment */ private function validatePositiveAnnotation($propertyName, $propertyValue, $docComment) { @@ -1068,6 +1072,10 @@ private function validatePositiveAnnotation($propertyName, $propertyValue, $docC /** * Validates the **`PositiveOrZero`** annotation. * Ensures a numeric value is positive or zero (>= 0). + * + * @param string $propertyName Property name + * @param string $propertyValue Property value + * @param string $docComment Doc comment */ private function validatePositiveOrZeroAnnotation($propertyName, $propertyValue, $docComment) { @@ -1082,6 +1090,10 @@ private function validatePositiveOrZeroAnnotation($propertyName, $propertyValue, /** * Validates the **`Negative`** annotation. * Ensures a numeric value is negative (< 0). + * + * @param string $propertyName Property name + * @param string $propertyValue Property value + * @param string $docComment Doc comment */ private function validateNegativeAnnotation($propertyName, $propertyValue, $docComment) { @@ -1096,6 +1108,10 @@ private function validateNegativeAnnotation($propertyName, $propertyValue, $docC /** * Validates the **`NegativeOrZero`** annotation. * Ensures a numeric value is negative or zero (<= 0). + * + * @param string $propertyName Property name + * @param string $propertyValue Property value + * @param string $docComment Doc comment */ private function validateNegativeOrZeroAnnotation($propertyName, $propertyValue, $docComment) { @@ -1110,6 +1126,10 @@ private function validateNegativeOrZeroAnnotation($propertyName, $propertyValue, /** * Validates the **`PastOrPresent`** annotation. * Ensures a date/time is in the past or present. + * + * @param string $propertyName Property name + * @param string $propertyValue Property value + * @param string $docComment Doc comment */ private function validatePastOrPresentAnnotation($propertyName, $propertyValue, $docComment) { @@ -1125,6 +1145,10 @@ private function validatePastOrPresentAnnotation($propertyName, $propertyValue, /** * Validates the **`Url`** annotation. * Ensures a string is a valid URL. + * + * @param string $propertyName Property name + * @param string $propertyValue Property value + * @param string $docComment Doc comment */ private function validateUrlAnnotation($propertyName, $propertyValue, $docComment) { @@ -1139,6 +1163,10 @@ private function validateUrlAnnotation($propertyName, $propertyValue, $docCommen /** * Validates the **`Ip`** annotation. * Ensures a string is a valid IP address. + * + * @param string $propertyName Property name + * @param string $propertyValue Property value + * @param string $docComment Doc comment */ private function validateIpAnnotation($propertyName, $propertyValue, $docComment) { @@ -1153,6 +1181,10 @@ private function validateIpAnnotation($propertyName, $propertyValue, $docComment /** * Validates the **`DateFormat`** annotation. * Ensures a string matches a specific date format. + * + * @param string $propertyName Property name + * @param string $propertyValue Property value + * @param string $docComment Doc comment */ private function validateDateFormatAnnotation($propertyName, $propertyValue, $docComment) { @@ -1173,6 +1205,10 @@ private function validateDateFormatAnnotation($propertyName, $propertyValue, $do /** * Validates the **`Phone`** annotation. * Ensures a string is a valid phone number (basic pattern). + * + * @param string $propertyName Property name + * @param string $propertyValue Property value + * @param string $docComment Doc comment */ private function validatePhoneAnnotation($propertyName, $propertyValue, $docComment) { @@ -1201,6 +1237,10 @@ public function isBlank($value) /** * Validates the **`Alpha`** annotation. * Ensures a string contains only alphabetic characters. + * + * @param string $propertyName Property name + * @param string $propertyValue Property value + * @param string $docComment Doc comment */ private function validateAlphaAnnotation($propertyName, $propertyValue, $docComment) { @@ -1222,6 +1262,10 @@ private function validateAlphaAnnotation($propertyName, $propertyValue, $docComm /** * Validates the **`AlphaNumeric`** annotation. * Ensures a string contains only alphanumeric characters. + * + * @param string $propertyName Property name + * @param string $propertyValue Property value + * @param string $docComment Doc comment */ private function validateAlphaNumericAnnotation($propertyName, $propertyValue, $docComment) { @@ -1244,6 +1288,10 @@ private function validateAlphaNumericAnnotation($propertyName, $propertyValue, $ * Validates the **`StartsWith`** annotation. * Ensures a string starts with a specified prefix. * Supports caseSensitive=true|false. + * + * @param string $propertyName Property name + * @param string $propertyValue Property value + * @param string $docComment Doc comment */ private function validateStartsWithAnnotation($propertyName, $propertyValue, $docComment) // NOSONAR { @@ -1273,6 +1321,10 @@ private function validateStartsWithAnnotation($propertyName, $propertyValue, $do * Validates the **`EndsWith`** annotation. * Ensures a string ends with a specified suffix. * Supports caseSensitive=true|false. + * + * @param string $propertyName Property name + * @param string $propertyValue Property value + * @param string $docComment Doc comment */ private function validateEndsWithAnnotation($propertyName, $propertyValue, $docComment) // NOSONAR { @@ -1303,6 +1355,10 @@ private function validateEndsWithAnnotation($propertyName, $propertyValue, $docC * Validates the **`Contains`** annotation. * Ensures a string contains a specified substring. * Supports caseSensitive=true|false. + * + * @param string $propertyName Property name + * @param string $propertyValue Property value + * @param string $docComment Doc comment */ private function validateContainsAnnotation($propertyName, $propertyValue, $docComment) // NOSONAR { @@ -1331,6 +1387,10 @@ private function validateContainsAnnotation($propertyName, $propertyValue, $docC /** * Validates the **`BeforeDate`** annotation. * Ensures a date is before a specified date. + * + * @param string $propertyName Property name + * @param string $propertyValue Property value + * @param string $docComment Doc comment */ private function validateBeforeDateAnnotation($propertyName, $propertyValue, $docComment) { @@ -1354,6 +1414,10 @@ private function validateBeforeDateAnnotation($propertyName, $propertyValue, $do /** * Validates the **`AfterDate`** annotation. * Ensures a date is after a specified date. + * + * @param string $propertyName Property name + * @param string $propertyValue Property value + * @param string $docComment Doc comment */ private function validateAfterDateAnnotation($propertyName, $propertyValue, $docComment) { @@ -1377,6 +1441,10 @@ private function validateAfterDateAnnotation($propertyName, $propertyValue, $doc /** * Validates the **`TimeRange`** annotation. * Ensures a time is within a specified range (min and max), supporting both HH:MM and HH:MM:SS formats. + * + * @param string $propertyName Property name + * @param string $propertyValue Property value + * @param string $docComment Doc comment */ private function validateTimeRangeAnnotation($propertyName, $propertyValue, $docComment) // NOSONAR {