@odinlin/utils 0.0.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -20
- package/dist/browser/_virtual/rolldown_runtime.cjs +29 -0
- package/dist/browser/array/arrayCast.cjs +29 -0
- package/dist/browser/array/arrayCast.d.ts +27 -0
- package/dist/browser/array/arrayCast.d.ts.map +1 -0
- package/dist/browser/array/arrayCast.js +30 -0
- package/dist/browser/array/arrayCast.js.map +1 -0
- package/dist/browser/array/index.cjs +3 -0
- package/dist/browser/array/index.d.ts +2 -0
- package/dist/browser/array/index.js +3 -0
- package/dist/browser/browser.cjs +196 -0
- package/dist/browser/browser.d.ts +37 -0
- package/dist/browser/browser.js +30 -0
- package/dist/browser/constants/index.cjs +19 -0
- package/dist/browser/constants/index.d.ts +16 -0
- package/dist/browser/constants/index.d.ts.map +1 -0
- package/dist/browser/constants/index.js +17 -0
- package/dist/browser/constants/index.js.map +1 -0
- package/dist/browser/date/index.cjs +8 -0
- package/dist/browser/date/index.d.ts +3 -0
- package/dist/browser/date/index.js +4 -0
- package/dist/browser/date/prettyMs.cjs +9 -0
- package/dist/browser/date/prettyMs.d.ts +8 -0
- package/dist/browser/date/prettyMs.d.ts.map +1 -0
- package/dist/browser/date/prettyMs.js +8 -0
- package/dist/browser/date/prettyMs.js.map +1 -0
- package/dist/browser/date/timeAgo.cjs +14 -0
- package/dist/browser/date/timeAgo.d.ts +15 -0
- package/dist/browser/date/timeAgo.d.ts.map +1 -0
- package/dist/browser/date/timeAgo.js +11 -0
- package/dist/browser/date/timeAgo.js.map +1 -0
- package/dist/browser/file/browser.cjs +25 -0
- package/dist/browser/file/browser.d.ts +7 -0
- package/dist/browser/file/browser.js +7 -0
- package/dist/browser/file/fileBuffer.browser.cjs +115 -0
- package/dist/browser/file/fileBuffer.browser.d.ts +88 -0
- package/dist/browser/file/fileBuffer.browser.d.ts.map +1 -0
- package/dist/browser/file/fileBuffer.browser.js +115 -0
- package/dist/browser/file/fileBuffer.browser.js.map +1 -0
- package/dist/browser/file/fileBytes.cjs +9 -0
- package/dist/browser/file/fileBytes.d.ts +8 -0
- package/dist/browser/file/fileBytes.d.ts.map +1 -0
- package/dist/browser/file/fileBytes.js +8 -0
- package/dist/browser/file/fileBytes.js.map +1 -0
- package/dist/browser/file/fileType.browser.cjs +22 -0
- package/dist/browser/file/fileType.browser.d.ts +19 -0
- package/dist/browser/file/fileType.browser.d.ts.map +1 -0
- package/dist/browser/file/fileType.browser.js +15 -0
- package/dist/browser/file/fileType.browser.js.map +1 -0
- package/dist/browser/file/fileXml.browser.cjs +8 -0
- package/dist/browser/file/fileXml.browser.d.ts +12 -0
- package/dist/browser/file/fileXml.browser.d.ts.map +1 -0
- package/dist/browser/file/fileXml.browser.js +7 -0
- package/dist/browser/file/fileXml.browser.js.map +1 -0
- package/dist/browser/file/interface.d.ts +26 -0
- package/dist/browser/file/interface.d.ts.map +1 -0
- package/dist/browser/function/index.cjs +10 -0
- package/dist/browser/function/index.d.ts +8 -0
- package/dist/browser/function/index.d.ts.map +1 -0
- package/dist/browser/function/index.js +9 -0
- package/dist/browser/function/index.js.map +1 -0
- package/dist/browser/is/index.cjs +42 -0
- package/dist/browser/is/index.d.ts +7 -0
- package/dist/browser/is/index.js +8 -0
- package/dist/browser/is/isJSON.cjs +44 -0
- package/dist/browser/is/isJSON.d.ts +30 -0
- package/dist/browser/is/isJSON.d.ts.map +1 -0
- package/dist/browser/is/isJSON.js +41 -0
- package/dist/browser/is/isJSON.js.map +1 -0
- package/dist/browser/is/isPlatform.cjs +20 -0
- package/dist/browser/is/isPlatform.d.ts +16 -0
- package/dist/browser/is/isPlatform.d.ts.map +1 -0
- package/dist/browser/is/isPlatform.js +19 -0
- package/dist/browser/is/isPlatform.js.map +1 -0
- package/dist/browser/is/isPrimitive.cjs +91 -0
- package/dist/browser/is/isPrimitive.d.ts +79 -0
- package/dist/browser/is/isPrimitive.d.ts.map +1 -0
- package/dist/browser/is/isPrimitive.js +79 -0
- package/dist/browser/is/isPrimitive.js.map +1 -0
- package/dist/browser/is/isPrimitiveWithout.cjs +86 -0
- package/dist/browser/is/isPrimitiveWithout.d.ts +72 -0
- package/dist/browser/is/isPrimitiveWithout.d.ts.map +1 -0
- package/dist/browser/is/isPrimitiveWithout.js +74 -0
- package/dist/browser/is/isPrimitiveWithout.js.map +1 -0
- package/dist/browser/is/isTagOf.cjs +21 -0
- package/dist/browser/is/isTagOf.d.ts +12 -0
- package/dist/browser/is/isTagOf.d.ts.map +1 -0
- package/dist/browser/is/isTagOf.js +21 -0
- package/dist/browser/is/isTagOf.js.map +1 -0
- package/dist/browser/is/isTypeOf.cjs +29 -0
- package/dist/browser/is/isTypeOf.d.ts +16 -0
- package/dist/browser/is/isTypeOf.d.ts.map +1 -0
- package/dist/browser/is/isTypeOf.js +28 -0
- package/dist/browser/is/isTypeOf.js.map +1 -0
- package/dist/browser/object/index.cjs +3 -0
- package/dist/browser/object/index.d.ts +2 -0
- package/dist/browser/object/index.js +3 -0
- package/dist/browser/object/objectClone.cjs +22 -0
- package/dist/browser/object/objectClone.d.ts +8 -0
- package/dist/browser/object/objectClone.d.ts.map +1 -0
- package/dist/browser/object/objectClone.js +22 -0
- package/dist/browser/object/objectClone.js.map +1 -0
- package/dist/browser/promise/awaitTo.cjs +8 -0
- package/dist/browser/promise/awaitTo.d.ts +7 -0
- package/dist/browser/promise/awaitTo.d.ts.map +1 -0
- package/dist/browser/promise/awaitTo.js +8 -0
- package/dist/browser/promise/awaitTo.js.map +1 -0
- package/dist/browser/promise/index.cjs +6 -0
- package/dist/browser/promise/index.d.ts +3 -0
- package/dist/browser/promise/index.js +4 -0
- package/dist/browser/promise/pLimit.cjs +11 -0
- package/dist/browser/promise/pLimit.d.ts +10 -0
- package/dist/browser/promise/pLimit.d.ts.map +1 -0
- package/dist/browser/promise/pLimit.js +9 -0
- package/dist/browser/promise/pLimit.js.map +1 -0
- package/dist/browser/regexp/OTHERS.cjs +16 -0
- package/dist/browser/regexp/OTHERS.d.ts +14 -0
- package/dist/browser/regexp/OTHERS.d.ts.map +1 -0
- package/dist/browser/regexp/OTHERS.js +15 -0
- package/dist/browser/regexp/OTHERS.js.map +1 -0
- package/dist/browser/regexp/RULES.cjs +698 -0
- package/dist/browser/regexp/RULES.d.ts +434 -0
- package/dist/browser/regexp/RULES.d.ts.map +1 -0
- package/dist/browser/regexp/RULES.js +615 -0
- package/dist/browser/regexp/RULES.js.map +1 -0
- package/dist/browser/regexp/index.cjs +89 -0
- package/dist/browser/regexp/index.d.ts +13 -0
- package/dist/browser/regexp/index.d.ts.map +1 -0
- package/dist/browser/regexp/index.js +4 -0
- package/dist/browser/request/browser.cjs +8 -0
- package/dist/browser/request/browser.d.ts +4 -0
- package/dist/browser/request/browser.js +4 -0
- package/dist/browser/request/instance.cjs +135 -0
- package/dist/browser/request/instance.d.ts +45 -0
- package/dist/browser/request/instance.d.ts.map +1 -0
- package/dist/browser/request/instance.js +134 -0
- package/dist/browser/request/instance.js.map +1 -0
- package/dist/browser/request/interceptors.browser.cjs +66 -0
- package/dist/browser/request/interceptors.browser.d.ts +25 -0
- package/dist/browser/request/interceptors.browser.d.ts.map +1 -0
- package/dist/browser/request/interceptors.browser.js +63 -0
- package/dist/browser/request/interceptors.browser.js.map +1 -0
- package/dist/browser/request/interface.d.ts +54 -0
- package/dist/browser/request/interface.d.ts.map +1 -0
- package/dist/browser/string/className.cjs +13 -0
- package/dist/browser/string/className.d.ts +11 -0
- package/dist/browser/string/className.d.ts.map +1 -0
- package/dist/browser/string/className.js +10 -0
- package/dist/browser/string/className.js.map +1 -0
- package/dist/browser/string/index.cjs +7 -0
- package/dist/browser/string/index.d.ts +3 -0
- package/dist/browser/string/index.js +4 -0
- package/dist/browser/string/proto.cjs +37 -0
- package/dist/browser/string/proto.d.ts +19 -0
- package/dist/browser/string/proto.d.ts.map +1 -0
- package/dist/browser/string/proto.js +36 -0
- package/dist/browser/string/proto.js.map +1 -0
- package/dist/browser/tree/index.cjs +7 -0
- package/dist/browser/tree/index.d.ts +5 -0
- package/dist/browser/tree/index.js +5 -0
- package/dist/browser/tree/interface.d.ts +40 -0
- package/dist/browser/tree/interface.d.ts.map +1 -0
- package/dist/browser/tree/treeFilter.cjs +58 -0
- package/dist/browser/tree/treeFilter.d.ts +14 -0
- package/dist/browser/tree/treeFilter.d.ts.map +1 -0
- package/dist/browser/tree/treeFilter.js +59 -0
- package/dist/browser/tree/treeFilter.js.map +1 -0
- package/dist/browser/tree/treeFlatten.cjs +23 -0
- package/dist/browser/tree/treeFlatten.d.ts +15 -0
- package/dist/browser/tree/treeFlatten.d.ts.map +1 -0
- package/dist/browser/tree/treeFlatten.js +24 -0
- package/dist/browser/tree/treeFlatten.js.map +1 -0
- package/dist/browser/tree/treeGenerate.cjs +37 -0
- package/dist/browser/tree/treeGenerate.d.ts +16 -0
- package/dist/browser/tree/treeGenerate.d.ts.map +1 -0
- package/dist/browser/tree/treeGenerate.js +37 -0
- package/dist/browser/tree/treeGenerate.js.map +1 -0
- package/dist/noExternal/browser.esm.html +94 -0
- package/dist/noExternal/browser.esm.js +10734 -0
- package/dist/noExternal/browser.esm.min.js +16 -0
- package/dist/noExternal/browser.esm.min.js.map +1 -0
- package/dist/noExternal/browser.umd.html +28 -0
- package/dist/noExternal/browser.umd.js +10905 -0
- package/dist/noExternal/browser.umd.min.js +16 -0
- package/dist/noExternal/browser.umd.min.js.map +1 -0
- package/dist/noExternal/node.cjs.js +18282 -0
- package/dist/noExternal/node.cjs.min.js +0 -0
- package/dist/noExternal/node.cjs.min.js.map +1 -0
- package/dist/noExternal/node.esm.js +21727 -0
- package/dist/noExternal/node.esm.min.js +36 -0
- package/dist/noExternal/node.esm.min.js.map +1 -0
- package/dist/node/_virtual/rolldown_runtime.cjs +29 -0
- package/dist/node/array/arrayCast.cjs +29 -0
- package/dist/node/array/arrayCast.d.ts +27 -0
- package/dist/node/array/arrayCast.d.ts.map +1 -0
- package/dist/node/array/arrayCast.js +30 -0
- package/dist/node/array/arrayCast.js.map +1 -0
- package/dist/node/array/index.cjs +3 -0
- package/dist/node/array/index.d.ts +2 -0
- package/dist/node/array/index.js +3 -0
- package/dist/node/constants/index.cjs +19 -0
- package/dist/node/constants/index.d.ts +16 -0
- package/dist/node/constants/index.d.ts.map +1 -0
- package/dist/node/constants/index.js +17 -0
- package/dist/node/constants/index.js.map +1 -0
- package/dist/node/date/index.cjs +8 -0
- package/dist/node/date/index.d.ts +3 -0
- package/dist/node/date/index.js +4 -0
- package/dist/node/date/prettyMs.cjs +9 -0
- package/dist/node/date/prettyMs.d.ts +8 -0
- package/dist/node/date/prettyMs.d.ts.map +1 -0
- package/dist/node/date/prettyMs.js +8 -0
- package/dist/node/date/prettyMs.js.map +1 -0
- package/dist/node/date/timeAgo.cjs +14 -0
- package/dist/node/date/timeAgo.d.ts +15 -0
- package/dist/node/date/timeAgo.d.ts.map +1 -0
- package/dist/node/date/timeAgo.js +11 -0
- package/dist/node/date/timeAgo.js.map +1 -0
- package/dist/node/file/fileBuffer.node.cjs +115 -0
- package/dist/node/file/fileBuffer.node.d.ts +88 -0
- package/dist/node/file/fileBuffer.node.d.ts.map +1 -0
- package/dist/node/file/fileBuffer.node.js +115 -0
- package/dist/node/file/fileBuffer.node.js.map +1 -0
- package/dist/node/file/fileBytes.cjs +9 -0
- package/dist/node/file/fileBytes.d.ts +8 -0
- package/dist/node/file/fileBytes.d.ts.map +1 -0
- package/dist/node/file/fileBytes.js +8 -0
- package/dist/node/file/fileBytes.js.map +1 -0
- package/dist/node/file/fileType.node.cjs +22 -0
- package/dist/node/file/fileType.node.d.ts +19 -0
- package/dist/node/file/fileType.node.d.ts.map +1 -0
- package/dist/node/file/fileType.node.js +15 -0
- package/dist/node/file/fileType.node.js.map +1 -0
- package/dist/node/file/fileXml.node.cjs +10 -0
- package/dist/node/file/fileXml.node.d.ts +8 -0
- package/dist/node/file/fileXml.node.d.ts.map +1 -0
- package/dist/node/file/fileXml.node.js +9 -0
- package/dist/node/file/fileXml.node.js.map +1 -0
- package/dist/node/file/interface.d.ts +26 -0
- package/dist/node/file/interface.d.ts.map +1 -0
- package/dist/node/file/node.cjs +25 -0
- package/dist/node/file/node.d.ts +7 -0
- package/dist/node/file/node.js +7 -0
- package/dist/node/function/index.cjs +10 -0
- package/dist/node/function/index.d.ts +8 -0
- package/dist/node/function/index.d.ts.map +1 -0
- package/dist/node/function/index.js +9 -0
- package/dist/node/function/index.js.map +1 -0
- package/dist/node/is/index.cjs +42 -0
- package/dist/node/is/index.d.ts +7 -0
- package/dist/node/is/index.js +8 -0
- package/dist/node/is/isJSON.cjs +44 -0
- package/dist/node/is/isJSON.d.ts +30 -0
- package/dist/node/is/isJSON.d.ts.map +1 -0
- package/dist/node/is/isJSON.js +41 -0
- package/dist/node/is/isJSON.js.map +1 -0
- package/dist/node/is/isPlatform.cjs +20 -0
- package/dist/node/is/isPlatform.d.ts +16 -0
- package/dist/node/is/isPlatform.d.ts.map +1 -0
- package/dist/node/is/isPlatform.js +19 -0
- package/dist/node/is/isPlatform.js.map +1 -0
- package/dist/node/is/isPrimitive.cjs +91 -0
- package/dist/node/is/isPrimitive.d.ts +79 -0
- package/dist/node/is/isPrimitive.d.ts.map +1 -0
- package/dist/node/is/isPrimitive.js +79 -0
- package/dist/node/is/isPrimitive.js.map +1 -0
- package/dist/node/is/isPrimitiveWithout.cjs +86 -0
- package/dist/node/is/isPrimitiveWithout.d.ts +72 -0
- package/dist/node/is/isPrimitiveWithout.d.ts.map +1 -0
- package/dist/node/is/isPrimitiveWithout.js +74 -0
- package/dist/node/is/isPrimitiveWithout.js.map +1 -0
- package/dist/node/is/isTagOf.cjs +21 -0
- package/dist/node/is/isTagOf.d.ts +12 -0
- package/dist/node/is/isTagOf.d.ts.map +1 -0
- package/dist/node/is/isTagOf.js +21 -0
- package/dist/node/is/isTagOf.js.map +1 -0
- package/dist/node/is/isTypeOf.cjs +29 -0
- package/dist/node/is/isTypeOf.d.ts +16 -0
- package/dist/node/is/isTypeOf.d.ts.map +1 -0
- package/dist/node/is/isTypeOf.js +28 -0
- package/dist/node/is/isTypeOf.js.map +1 -0
- package/dist/node/node.cjs +196 -0
- package/dist/node/node.d.ts +37 -0
- package/dist/node/node.js +30 -0
- package/dist/node/object/index.cjs +3 -0
- package/dist/node/object/index.d.ts +2 -0
- package/dist/node/object/index.js +3 -0
- package/dist/node/object/objectClone.cjs +22 -0
- package/dist/node/object/objectClone.d.ts +8 -0
- package/dist/node/object/objectClone.d.ts.map +1 -0
- package/dist/node/object/objectClone.js +22 -0
- package/dist/node/object/objectClone.js.map +1 -0
- package/dist/node/promise/awaitTo.cjs +8 -0
- package/dist/node/promise/awaitTo.d.ts +7 -0
- package/dist/node/promise/awaitTo.d.ts.map +1 -0
- package/dist/node/promise/awaitTo.js +8 -0
- package/dist/node/promise/awaitTo.js.map +1 -0
- package/dist/node/promise/index.cjs +6 -0
- package/dist/node/promise/index.d.ts +3 -0
- package/dist/node/promise/index.js +4 -0
- package/dist/node/promise/pLimit.cjs +11 -0
- package/dist/node/promise/pLimit.d.ts +10 -0
- package/dist/node/promise/pLimit.d.ts.map +1 -0
- package/dist/node/promise/pLimit.js +9 -0
- package/dist/node/promise/pLimit.js.map +1 -0
- package/dist/node/regexp/OTHERS.cjs +16 -0
- package/dist/node/regexp/OTHERS.d.ts +14 -0
- package/dist/node/regexp/OTHERS.d.ts.map +1 -0
- package/dist/node/regexp/OTHERS.js +15 -0
- package/dist/node/regexp/OTHERS.js.map +1 -0
- package/dist/node/regexp/RULES.cjs +698 -0
- package/dist/node/regexp/RULES.d.ts +434 -0
- package/dist/node/regexp/RULES.d.ts.map +1 -0
- package/dist/node/regexp/RULES.js +615 -0
- package/dist/node/regexp/RULES.js.map +1 -0
- package/dist/node/regexp/index.cjs +89 -0
- package/dist/node/regexp/index.d.ts +13 -0
- package/dist/node/regexp/index.d.ts.map +1 -0
- package/dist/node/regexp/index.js +4 -0
- package/dist/node/request/instance.cjs +135 -0
- package/dist/node/request/instance.d.ts +45 -0
- package/dist/node/request/instance.d.ts.map +1 -0
- package/dist/node/request/instance.js +134 -0
- package/dist/node/request/instance.js.map +1 -0
- package/dist/node/request/interceptors.node.cjs +66 -0
- package/dist/node/request/interceptors.node.d.ts +25 -0
- package/dist/node/request/interceptors.node.d.ts.map +1 -0
- package/dist/node/request/interceptors.node.js +63 -0
- package/dist/node/request/interceptors.node.js.map +1 -0
- package/dist/node/request/interface.d.ts +54 -0
- package/dist/node/request/interface.d.ts.map +1 -0
- package/dist/node/request/node.cjs +8 -0
- package/dist/node/request/node.d.ts +4 -0
- package/dist/node/request/node.js +4 -0
- package/dist/node/string/className.cjs +13 -0
- package/dist/node/string/className.d.ts +11 -0
- package/dist/node/string/className.d.ts.map +1 -0
- package/dist/node/string/className.js +10 -0
- package/dist/node/string/className.js.map +1 -0
- package/dist/node/string/index.cjs +7 -0
- package/dist/node/string/index.d.ts +3 -0
- package/dist/node/string/index.js +4 -0
- package/dist/node/string/proto.cjs +37 -0
- package/dist/node/string/proto.d.ts +19 -0
- package/dist/node/string/proto.d.ts.map +1 -0
- package/dist/node/string/proto.js +36 -0
- package/dist/node/string/proto.js.map +1 -0
- package/dist/node/tree/index.cjs +7 -0
- package/dist/node/tree/index.d.ts +5 -0
- package/dist/node/tree/index.js +5 -0
- package/dist/node/tree/interface.d.ts +40 -0
- package/dist/node/tree/interface.d.ts.map +1 -0
- package/dist/node/tree/treeFilter.cjs +58 -0
- package/dist/node/tree/treeFilter.d.ts +14 -0
- package/dist/node/tree/treeFilter.d.ts.map +1 -0
- package/dist/node/tree/treeFilter.js +59 -0
- package/dist/node/tree/treeFilter.js.map +1 -0
- package/dist/node/tree/treeFlatten.cjs +23 -0
- package/dist/node/tree/treeFlatten.d.ts +15 -0
- package/dist/node/tree/treeFlatten.d.ts.map +1 -0
- package/dist/node/tree/treeFlatten.js +24 -0
- package/dist/node/tree/treeFlatten.js.map +1 -0
- package/dist/node/tree/treeGenerate.cjs +37 -0
- package/dist/node/tree/treeGenerate.d.ts +16 -0
- package/dist/node/tree/treeGenerate.d.ts.map +1 -0
- package/dist/node/tree/treeGenerate.js +37 -0
- package/dist/node/tree/treeGenerate.js.map +1 -0
- package/dist/version.d.ts +5 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +10 -0
- package/dist/version.js.map +1 -0
- package/package.json +95 -53
- package/LICENSE +0 -21
- package/dist/index.cjs +0 -403
- package/dist/index.d.ts +0 -496
- package/dist/index.mjs +0 -307
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.umd.min.js","names":["i","isPrimitive","isTypedArray","isPrimitive","i","isTypedArray","isPlainObject","isArray","isArrayBuffer","isBlob","isBoolean","isBrowser","isDate","isError","isFile","isBlob","isFunction","isJSONValue","isJSONArray","isJSONObject","isPlainObject","i","isMap","isNil","isNode","isNull","isPromise","isRegExp","isSet","isString","isSymbol","isUndefined","isWeakMap","isWeakSet","originNull","originUndefined","originBoolean","originString","originSymbol","originNil","originPrimitive","originJSONArray","originJSONObject","e: any","originBrowser","originNode","isObject","isTypedArray","isEmpty","isTypedArray","originArray","originObject","originFunction","originSet","originMap","originWeakSet","originWeakMap","originDate","originRegExp","originPromise","originError","originPlainObject","originEmpty","toString","toStringCache: Record<string, string>","isBigInt","milliseconds","prettyMs","i","d","en_US","zh_CN","byteLength","len","i","m","i","d","s","Buffer","i","len","isBuffer","y","m","toString","indexOf","byteLength","code","originTypedArray","originArrayBuffer","Buffer","originBlob","originFile","#buf","isZero","code","i","len","i","debug","self","format","extend","m","r","i","len","byteLength","code","fileTypeFromStream","FileTypeParser","fileTypeFromBuffer","fileTypeFromBlob","fileTypeFromTokenizer","fileTypeStream","strtok3.fromBuffer","strtok3.fromBlob","strtok3.fromWebStream","strtok3.EndOfStreamError","Token.UINT8","Token.StringType","Token.INT32_BE","Token.UINT64_LE","Token.UINT16_BE","Token.UINT16_LE","Token.UINT32_BE","Token.UINT32_LE","_fileTypeFromBlob","_fileTypeFromBuffer","_fileTypeFromStream","_fileTypeFromTokenizer","_FileTypeParser","_fileTypeStream","_supportedExtensions","_supportedMimeTypes","throttle","cancel","options","self","clear","throttle","#head","#tail","#size","run","isUndefined","isFunction","isString","isNumber","isObject","isBoolean","isPlainObject","prototype","isDate","i","isArray","len","descriptors","hasOwnProperty","isRegExp","define","AxiosError","code","utils","prototype","utils","i","toFormData","PlatformFormData","AxiosError","encode","toFormData","toString","utils","AxiosURLSearchParams","h","AxiosURLSearchParams","utils","platform","toFormData","platform","utils","utils","i","len","utils","transitionalDefaults","formDataToJSON","isFileList","toFormData","AxiosError","platform","utils","i","utils","AxiosHeaders","self","parseHeaders","i","format","prototype","defaults","AxiosHeaders","isCancel","CanceledError","AxiosError","utils","AxiosError","head","i","speedometer","throttle","utils","platform","origin","platform","utils","AxiosHeaders","mergeConfig","utils","merge","mergeConfig","AxiosHeaders","utils","platform","isURLSameOrigin","cookies","resolveConfig","AxiosHeaders","AxiosError","transitionalDefaults","utils","cancel","CanceledError","platform","AxiosError","CanceledError","signal","utils","len","iterator","done","utils","isFunction","Request","Response","ReadableStream","platform","AxiosError","resolveConfig","composeSignals","AxiosHeaders","fetch","i","httpAdapter","xhrAdapter","fetchAdapter.getFetch","utils","adapter","getAdapter","i","AxiosError","CanceledError","AxiosHeaders","adapters","defaults","isCancel","VERSION","validators","i","VERSION","AxiosError","validator","Axios","InterceptorManager","mergeConfig","utils","AxiosHeaders","i","len","CancelToken","i","cancel","CanceledError","spread","isAxiosError","utils","HttpStatusCode","Axios","mergeConfig","defaults","CanceledError","CancelToken","isCancel","VERSION","toFormData","AxiosError","all","spread","isAxiosError","AxiosHeaders","formDataToJSON","utils","adapters","HttpStatusCode","axios","i","clsx","#instance","#getInternalOptions","axios","#registerInterceptors","#beforeRequest","presetInterceptorWithResponseLog: AxiosInterceptorParameters","presetInterceptorWithResponseJSON: AxiosInterceptorParameters","tempData: string | null","presetInterceptorWithRequestLog: AxiosInterceptorParameters","presetInterceptorWithRequestAuth: AxiosInterceptorParameters","filteredChildren: any[]","i","result: any[]","aFlatten: any[]","aTree: any[]","oItem: Record<PropertyKey, any>"],"sources":["../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/array/at.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/array/head.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isPrimitive.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isTypedArray.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/compat/_internal/getSymbols.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/compat/_internal/getTag.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/compat/_internal/tags.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/object/cloneDeepWith.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/object/cloneDeep.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isPlainObject.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/compat/predicate/isArray.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isArrayBuffer.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isBlob.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isBoolean.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isBrowser.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isDate.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isError.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isFile.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isFunction.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isJSONValue.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isLength.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isMap.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isNil.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isNode.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isNull.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isPromise.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isRegExp.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isSet.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isString.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isSymbol.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isUndefined.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isWeakMap.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isWeakSet.mjs","../../src/is/isTypeOf.ts","../../src/is/isPrimitive.ts","../../src/is/isJSON.ts","../../src/is/isPlatform.ts","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/compat/predicate/isObject.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/compat/predicate/isArguments.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/compat/_internal/isPrototype.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.mjs","../../../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/compat/predicate/isEmpty.mjs","../../src/is/isPrimitiveWithout.ts","../../src/is/isTagOf.ts","../../src/array/arrayCast.ts","../../src/constants/index.ts","../../../../node_modules/.pnpm/parse-ms@4.0.0/node_modules/parse-ms/index.js","../../../../node_modules/.pnpm/pretty-ms@9.3.0/node_modules/pretty-ms/index.js","../../src/date/prettyMs.ts","../../../../node_modules/.pnpm/timeago.js@4.0.2/node_modules/timeago.js/esm/lang/en_US.js","../../../../node_modules/.pnpm/timeago.js@4.0.2/node_modules/timeago.js/esm/lang/zh_CN.js","../../../../node_modules/.pnpm/timeago.js@4.0.2/node_modules/timeago.js/esm/register.js","../../../../node_modules/.pnpm/timeago.js@4.0.2/node_modules/timeago.js/esm/utils/date.js","../../../../node_modules/.pnpm/timeago.js@4.0.2/node_modules/timeago.js/esm/format.js","../../../../node_modules/.pnpm/timeago.js@4.0.2/node_modules/timeago.js/esm/utils/dom.js","../../../../node_modules/.pnpm/timeago.js@4.0.2/node_modules/timeago.js/esm/realtime.js","../../../../node_modules/.pnpm/timeago.js@4.0.2/node_modules/timeago.js/esm/index.js","../../src/date/timeAgo.ts","../../../../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js","../../../../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js","../../../../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js","../../src/file/fileBuffer.browser.ts","../../../../node_modules/.pnpm/pretty-bytes@7.1.0/node_modules/pretty-bytes/index.js","../../src/file/fileBytes.ts","../../../../node_modules/.pnpm/@borewit+text-codec@0.1.1/node_modules/@borewit/text-codec/lib/index.js","../../../../node_modules/.pnpm/token-types@6.1.1/node_modules/token-types/lib/index.js","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/Errors.js","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/AbstractStreamReader.js","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/WebStreamReader.js","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/WebStreamByobReader.js","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/WebStreamDefaultReader.js","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/stream/WebStreamReaderFactory.js","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/AbstractTokenizer.js","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/ReadStreamTokenizer.js","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/BufferTokenizer.js","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/BlobTokenizer.js","../../../../node_modules/.pnpm/strtok3@10.3.4/node_modules/strtok3/lib/core.js","../../../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js","../../../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/common.js","../../../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/browser.js","../../../../node_modules/.pnpm/@tokenizer+inflate@0.4.1/node_modules/@tokenizer/inflate/lib/ZipToken.js","../../../../node_modules/.pnpm/@tokenizer+inflate@0.4.1/node_modules/@tokenizer/inflate/lib/ZipHandler.js","../../../../node_modules/.pnpm/@tokenizer+inflate@0.4.1/node_modules/@tokenizer/inflate/lib/GzipHandler.js","../../../../node_modules/.pnpm/uint8array-extras@1.5.0/node_modules/uint8array-extras/index.js","../../../../node_modules/.pnpm/file-type@21.1.1/node_modules/file-type/util.js","../../../../node_modules/.pnpm/file-type@21.1.1/node_modules/file-type/supported.js","../../../../node_modules/.pnpm/file-type@21.1.1/node_modules/file-type/core.js","../../src/file/fileType.browser.ts","../../src/file/fileXml.browser.ts","../../src/file/browser.ts","../../../../node_modules/.pnpm/throttle-debounce@5.0.2/node_modules/throttle-debounce/esm/index.js","../../src/function/index.ts","../../src/object/objectClone.ts","../../../../node_modules/.pnpm/await-to-js@3.0.0/node_modules/await-to-js/dist/await-to-js.es5.js","../../src/promise/awaitTo.ts","../../../../node_modules/.pnpm/yocto-queue@1.2.2/node_modules/yocto-queue/index.js","../../../../node_modules/.pnpm/p-limit@7.2.0/node_modules/p-limit/index.js","../../src/promise/pLimit.ts","../../src/regexp/OTHERS.ts","../../src/regexp/RULES.ts","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/bind.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/utils.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/AxiosError.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/null.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/toFormData.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/buildURL.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/InterceptorManager.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/defaults/transitional.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/browser/classes/FormData.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/browser/classes/Blob.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/browser/index.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/common/utils.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/index.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/toURLEncodedForm.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/formDataToJSON.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/defaults/index.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/parseHeaders.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/AxiosHeaders.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/transformData.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/cancel/isCancel.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/cancel/CanceledError.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/settle.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/parseProtocol.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/speedometer.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/throttle.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/progressEventReducer.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/isURLSameOrigin.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/cookies.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/isAbsoluteURL.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/combineURLs.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/buildFullPath.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/mergeConfig.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/resolveConfig.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/adapters/xhr.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/composeSignals.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/trackStream.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/adapters/fetch.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/adapters/adapters.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/dispatchRequest.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/env/data.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/validator.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/Axios.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/cancel/CancelToken.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/spread.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/isAxiosError.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/HttpStatusCode.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/axios.js","../../../../node_modules/.pnpm/axios@1.13.2/node_modules/axios/index.js","../../../../node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.js","../../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../../src/string/className.ts","../../src/string/proto.ts","../../src/request/instance.ts","../../src/request/interceptors.browser.ts","../../src/tree/treeFilter.ts","../../src/tree/treeFlatten.ts","../../src/tree/treeGenerate.ts"],"sourcesContent":["function at(arr, indices) {\n const result = new Array(indices.length);\n const length = arr.length;\n for (let i = 0; i < indices.length; i++) {\n let index = indices[i];\n index = Number.isInteger(index) ? index : Math.trunc(index) || 0;\n if (index < 0) {\n index += length;\n }\n result[i] = arr[index];\n }\n return result;\n}\n\nexport { at };\n","function head(arr) {\n return arr[0];\n}\n\nexport { head };\n","function isPrimitive(value) {\n return value == null || (typeof value !== 'object' && typeof value !== 'function');\n}\n\nexport { isPrimitive };\n","function isTypedArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n\nexport { isTypedArray };\n","function getSymbols(object) {\n return Object.getOwnPropertySymbols(object).filter(symbol => Object.prototype.propertyIsEnumerable.call(object, symbol));\n}\n\nexport { getSymbols };\n","function getTag(value) {\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n return Object.prototype.toString.call(value);\n}\n\nexport { getTag };\n","const regexpTag = '[object RegExp]';\nconst stringTag = '[object String]';\nconst numberTag = '[object Number]';\nconst booleanTag = '[object Boolean]';\nconst argumentsTag = '[object Arguments]';\nconst symbolTag = '[object Symbol]';\nconst dateTag = '[object Date]';\nconst mapTag = '[object Map]';\nconst setTag = '[object Set]';\nconst arrayTag = '[object Array]';\nconst functionTag = '[object Function]';\nconst arrayBufferTag = '[object ArrayBuffer]';\nconst objectTag = '[object Object]';\nconst errorTag = '[object Error]';\nconst dataViewTag = '[object DataView]';\nconst uint8ArrayTag = '[object Uint8Array]';\nconst uint8ClampedArrayTag = '[object Uint8ClampedArray]';\nconst uint16ArrayTag = '[object Uint16Array]';\nconst uint32ArrayTag = '[object Uint32Array]';\nconst bigUint64ArrayTag = '[object BigUint64Array]';\nconst int8ArrayTag = '[object Int8Array]';\nconst int16ArrayTag = '[object Int16Array]';\nconst int32ArrayTag = '[object Int32Array]';\nconst bigInt64ArrayTag = '[object BigInt64Array]';\nconst float32ArrayTag = '[object Float32Array]';\nconst float64ArrayTag = '[object Float64Array]';\n\nexport { argumentsTag, arrayBufferTag, arrayTag, bigInt64ArrayTag, bigUint64ArrayTag, booleanTag, dataViewTag, dateTag, errorTag, float32ArrayTag, float64ArrayTag, functionTag, int16ArrayTag, int32ArrayTag, int8ArrayTag, mapTag, numberTag, objectTag, regexpTag, setTag, stringTag, symbolTag, uint16ArrayTag, uint32ArrayTag, uint8ArrayTag, uint8ClampedArrayTag };\n","import { getSymbols } from '../compat/_internal/getSymbols.mjs';\nimport { getTag } from '../compat/_internal/getTag.mjs';\nimport { uint32ArrayTag, uint16ArrayTag, uint8ClampedArrayTag, uint8ArrayTag, symbolTag, stringTag, setTag, regexpTag, objectTag, numberTag, mapTag, int32ArrayTag, int16ArrayTag, int8ArrayTag, float64ArrayTag, float32ArrayTag, dateTag, booleanTag, dataViewTag, arrayBufferTag, arrayTag, argumentsTag } from '../compat/_internal/tags.mjs';\nimport { isPrimitive } from '../predicate/isPrimitive.mjs';\nimport { isTypedArray } from '../predicate/isTypedArray.mjs';\n\nfunction cloneDeepWith(obj, cloneValue) {\n return cloneDeepWithImpl(obj, undefined, obj, new Map(), cloneValue);\n}\nfunction cloneDeepWithImpl(valueToClone, keyToClone, objectToClone, stack = new Map(), cloneValue = undefined) {\n const cloned = cloneValue?.(valueToClone, keyToClone, objectToClone, stack);\n if (cloned !== undefined) {\n return cloned;\n }\n if (isPrimitive(valueToClone)) {\n return valueToClone;\n }\n if (stack.has(valueToClone)) {\n return stack.get(valueToClone);\n }\n if (Array.isArray(valueToClone)) {\n const result = new Array(valueToClone.length);\n stack.set(valueToClone, result);\n for (let i = 0; i < valueToClone.length; i++) {\n result[i] = cloneDeepWithImpl(valueToClone[i], i, objectToClone, stack, cloneValue);\n }\n if (Object.hasOwn(valueToClone, 'index')) {\n result.index = valueToClone.index;\n }\n if (Object.hasOwn(valueToClone, 'input')) {\n result.input = valueToClone.input;\n }\n return result;\n }\n if (valueToClone instanceof Date) {\n return new Date(valueToClone.getTime());\n }\n if (valueToClone instanceof RegExp) {\n const result = new RegExp(valueToClone.source, valueToClone.flags);\n result.lastIndex = valueToClone.lastIndex;\n return result;\n }\n if (valueToClone instanceof Map) {\n const result = new Map();\n stack.set(valueToClone, result);\n for (const [key, value] of valueToClone) {\n result.set(key, cloneDeepWithImpl(value, key, objectToClone, stack, cloneValue));\n }\n return result;\n }\n if (valueToClone instanceof Set) {\n const result = new Set();\n stack.set(valueToClone, result);\n for (const value of valueToClone) {\n result.add(cloneDeepWithImpl(value, undefined, objectToClone, stack, cloneValue));\n }\n return result;\n }\n if (typeof Buffer !== 'undefined' && Buffer.isBuffer(valueToClone)) {\n return valueToClone.subarray();\n }\n if (isTypedArray(valueToClone)) {\n const result = new (Object.getPrototypeOf(valueToClone).constructor)(valueToClone.length);\n stack.set(valueToClone, result);\n for (let i = 0; i < valueToClone.length; i++) {\n result[i] = cloneDeepWithImpl(valueToClone[i], i, objectToClone, stack, cloneValue);\n }\n return result;\n }\n if (valueToClone instanceof ArrayBuffer ||\n (typeof SharedArrayBuffer !== 'undefined' && valueToClone instanceof SharedArrayBuffer)) {\n return valueToClone.slice(0);\n }\n if (valueToClone instanceof DataView) {\n const result = new DataView(valueToClone.buffer.slice(0), valueToClone.byteOffset, valueToClone.byteLength);\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (typeof File !== 'undefined' && valueToClone instanceof File) {\n const result = new File([valueToClone], valueToClone.name, {\n type: valueToClone.type,\n });\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (typeof Blob !== 'undefined' && valueToClone instanceof Blob) {\n const result = new Blob([valueToClone], { type: valueToClone.type });\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (valueToClone instanceof Error) {\n const result = new valueToClone.constructor();\n stack.set(valueToClone, result);\n result.message = valueToClone.message;\n result.name = valueToClone.name;\n result.stack = valueToClone.stack;\n result.cause = valueToClone.cause;\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (valueToClone instanceof Boolean) {\n const result = new Boolean(valueToClone.valueOf());\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (valueToClone instanceof Number) {\n const result = new Number(valueToClone.valueOf());\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (valueToClone instanceof String) {\n const result = new String(valueToClone.valueOf());\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (typeof valueToClone === 'object' && isCloneableObject(valueToClone)) {\n const result = Object.create(Object.getPrototypeOf(valueToClone));\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n return valueToClone;\n}\nfunction copyProperties(target, source, objectToClone = target, stack, cloneValue) {\n const keys = [...Object.keys(source), ...getSymbols(source)];\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const descriptor = Object.getOwnPropertyDescriptor(target, key);\n if (descriptor == null || descriptor.writable) {\n target[key] = cloneDeepWithImpl(source[key], key, objectToClone, stack, cloneValue);\n }\n }\n}\nfunction isCloneableObject(object) {\n switch (getTag(object)) {\n case argumentsTag:\n case arrayTag:\n case arrayBufferTag:\n case dataViewTag:\n case booleanTag:\n case dateTag:\n case float32ArrayTag:\n case float64ArrayTag:\n case int8ArrayTag:\n case int16ArrayTag:\n case int32ArrayTag:\n case mapTag:\n case numberTag:\n case objectTag:\n case regexpTag:\n case setTag:\n case stringTag:\n case symbolTag:\n case uint8ArrayTag:\n case uint8ClampedArrayTag:\n case uint16ArrayTag:\n case uint32ArrayTag: {\n return true;\n }\n default: {\n return false;\n }\n }\n}\n\nexport { cloneDeepWith, cloneDeepWithImpl, copyProperties };\n","import { cloneDeepWithImpl } from './cloneDeepWith.mjs';\n\nfunction cloneDeep(obj) {\n return cloneDeepWithImpl(obj, undefined, obj, new Map(), undefined);\n}\n\nexport { cloneDeep };\n","function isPlainObject(value) {\n if (!value || typeof value !== 'object') {\n return false;\n }\n const proto = Object.getPrototypeOf(value);\n const hasObjectPrototype = proto === null ||\n proto === Object.prototype ||\n Object.getPrototypeOf(proto) === null;\n if (!hasObjectPrototype) {\n return false;\n }\n return Object.prototype.toString.call(value) === '[object Object]';\n}\n\nexport { isPlainObject };\n","function isArray(value) {\n return Array.isArray(value);\n}\n\nexport { isArray };\n","function isArrayBuffer(value) {\n return value instanceof ArrayBuffer;\n}\n\nexport { isArrayBuffer };\n","function isBlob(x) {\n if (typeof Blob === 'undefined') {\n return false;\n }\n return x instanceof Blob;\n}\n\nexport { isBlob };\n","function isBoolean(x) {\n return typeof x === 'boolean';\n}\n\nexport { isBoolean };\n","function isBrowser() {\n return typeof window !== 'undefined' && window?.document != null;\n}\n\nexport { isBrowser };\n","function isDate(value) {\n return value instanceof Date;\n}\n\nexport { isDate };\n","function isError(value) {\n return value instanceof Error;\n}\n\nexport { isError };\n","import { isBlob } from './isBlob.mjs';\n\nfunction isFile(x) {\n if (typeof File === 'undefined') {\n return false;\n }\n return isBlob(x) && x instanceof File;\n}\n\nexport { isFile };\n","function isFunction(value) {\n return typeof value === 'function';\n}\n\nexport { isFunction };\n","import { isPlainObject } from './isPlainObject.mjs';\n\nfunction isJSONValue(value) {\n switch (typeof value) {\n case 'object': {\n return value === null || isJSONArray(value) || isJSONObject(value);\n }\n case 'string':\n case 'number':\n case 'boolean': {\n return true;\n }\n default: {\n return false;\n }\n }\n}\nfunction isJSONArray(value) {\n if (!Array.isArray(value)) {\n return false;\n }\n return value.every(item => isJSONValue(item));\n}\nfunction isJSONObject(obj) {\n if (!isPlainObject(obj)) {\n return false;\n }\n const keys = Reflect.ownKeys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const value = obj[key];\n if (typeof key !== 'string') {\n return false;\n }\n if (!isJSONValue(value)) {\n return false;\n }\n }\n return true;\n}\n\nexport { isJSONArray, isJSONObject, isJSONValue };\n","function isLength(value) {\n return Number.isSafeInteger(value) && value >= 0;\n}\n\nexport { isLength };\n","function isMap(value) {\n return value instanceof Map;\n}\n\nexport { isMap };\n","function isNil(x) {\n return x == null;\n}\n\nexport { isNil };\n","function isNode() {\n return typeof process !== 'undefined' && process?.versions?.node != null;\n}\n\nexport { isNode };\n","function isNull(x) {\n return x === null;\n}\n\nexport { isNull };\n","function isPromise(value) {\n return value instanceof Promise;\n}\n\nexport { isPromise };\n","function isRegExp(value) {\n return value instanceof RegExp;\n}\n\nexport { isRegExp };\n","function isSet(value) {\n return value instanceof Set;\n}\n\nexport { isSet };\n","function isString(value) {\n return typeof value === 'string';\n}\n\nexport { isString };\n","function isSymbol(value) {\n return typeof value === 'symbol';\n}\n\nexport { isSymbol };\n","function isUndefined(x) {\n return x === undefined;\n}\n\nexport { isUndefined };\n","function isWeakMap(value) {\n return value instanceof WeakMap;\n}\n\nexport { isWeakMap };\n","function isWeakSet(value) {\n return value instanceof WeakSet;\n}\n\nexport { isWeakSet };\n","/**\n * The result of `typeof` operator.\n */\nexport const isTypeOfResult = ['bigint', 'boolean', 'function', 'number', 'object', 'string', 'symbol', 'undefined'] as const\n\n/**\n * 根据 `typeof` 方法判断值的类型\n * @param {unknown} x The value to test.\n * @param {string[]} type The types to check.\n *\n * @reference axios/dist/axios.js\n */\nexport function isTypeOf(x: unknown, type: string[]): boolean {\n // eslint-disable-next-line valid-typeof\n return type.some(t => (typeof x) === t.toLowerCase())\n}\n","/* eslint-disable unicorn/no-instanceof-builtins */\n/* eslint-disable perfectionist/sort-named-imports */\nimport {\n isNull as originNull,\n isUndefined as originUndefined,\n isBoolean as originBoolean,\n // isNumber as originNumber,\n isString as originString,\n // isBigInt as originBigInt,\n isSymbol as originSymbol,\n isNil as originNil,\n isPrimitive as originPrimitive,\n} from 'es-toolkit'\nimport { isTypeOf } from './isTypeOf'\n\n/** 空值 */\nexport type TypeNil = null | undefined\n/** 基本数据类型 */\nexport type TypePrimitive = null | undefined | boolean | number | bigint | string | symbol\n\n/**\n * 判断 null 类型的类型谓词\n * @param {unknown} x 待检测值\n */\nexport const isNull = (x: unknown): x is null => originNull(x)\n/**\n * 判断 undefined 类型的类型谓词\n * @param {unknown} x 待检测值\n */\nexport const isUndefined = (x: unknown): x is undefined => originUndefined(x)\n\n/**\n * 判断 boolean 类型的类型谓词\n * @param {unknown} x 待检测值\n */\nexport const isBoolean = (x: unknown): x is boolean => originBoolean(x)\n/**\n * 判断 string 类型的类型谓词\n * @param {unknown} x 待检测值\n */\nexport const isString = (x: unknown): x is string => originString(x)\n/**\n * 判断 Symbol 类型的类型谓词\n * @param {unknown} x 待检测值\n */\nexport const isSymbol = (x: unknown): x is symbol => originSymbol(x)\n/**\n * 判断 number 类型的类型谓词\n * @param {unknown} x 待检测值\n */\nexport const isNumber = (x: unknown): x is number => isTypeOf(x, ['number'])\n/**\n * 判断 bigint 类型的类型谓词\n * @param {unknown} x 待检测值\n */\nexport const isBigInt = (x: unknown): x is bigint => isTypeOf(x, ['bigint'])\n\n/**\n * 判断 null 或 undefined 类型的类型谓词\n * @param {unknown} x 待检测值\n */\nexport const isNil = (x: unknown): x is TypeNil => originNil(x)\n/**\n * 判断 基本数据 类型的类型谓词\n * @param {unknown} x 待检测值\n */\nexport const isPrimitive = (x: unknown): x is TypePrimitive => originPrimitive(x)\n\n/**\n * 判断 boolean + new Boolean(x) 类型的类型谓词\n * @function override\n * @param {unknown} x 待检测值\n */\nexport const isBooleanLike = (x: unknown): x is boolean => isBoolean(x) || (x instanceof Boolean)\n/**\n * 判断 string + new String(x) 类型的类型谓词\n * @function override\n * @param {unknown} x 待检测值\n */\nexport const isStringLike = (x: unknown): x is string => isString(x) || (x instanceof String)\n/**\n * 判断 number + new Number(x) 类型的类型谓词\n * @function override\n * @param {unknown} x 待检测值\n */\nexport const isNumberLike = (x: unknown): x is number => isNumber(x) || (x instanceof Number)\n/**\n * 判断是否为非数字\n * 🚫 非类型谓词\n * @function override\n * @example Number.isNaN(NaN) === Number.isNaN(Number('1a')) 非数字类型需要手动转成数字\n * @param {unknown} x 待检测值\n */\nexport const isNotNumber = (x: unknown): boolean => Number.isNaN(x)\n","import {\n isJSONArray as originJSONArray,\n isJSONObject as originJSONObject,\n} from 'es-toolkit'\nimport { isBoolean, isNumber, isString } from './isPrimitive'\n\n/** 在 json 格式中支持的值类型 */\nexport type TypeJSONValue = null | boolean | number | string\n\n/**\n * 判断 json array 类型的类型谓词\n * @param {unknown} x 待检测值\n */\nexport const isJSONArray = <T extends TypeJSONValue = TypeJSONValue>(x: unknown): x is Array<T> => originJSONArray(x)\n\n/**\n * 判断 json object 类型的类型谓词\n * @param {unknown} x 待检测值\n */\nexport const isJSONObject = <T extends TypeJSONValue = TypeJSONValue>(x: unknown): x is Record<string, T> => originJSONObject(x)\n\n/**\n * 判断 json 值类型的类型谓词\n * @function override\n * @param {unknown} x 待检测值\n */\nexport function isJSONValue<T extends TypeJSONValue = TypeJSONValue>(x: unknown): x is T {\n return x === null || isBoolean(x) || isNumber(x) || isString(x)\n}\n\n/**\n * 判断是否为有效的 json 字符串 (通过尝试序列化是否成功来判断)\n * 🚫 非类型谓词\n * @function override\n * @param {unknown} x 待检测值\n * @returns {[boolean, any]} [错误优先, 可能存在的序列化结果]\n */\nexport function isJSONString<T = any>(x: unknown, reviver?: (this: any, key: string, value: any) => any): [null, T] | [Error, undefined] {\n if (!isString(x)) return [new TypeError('Not a string'), undefined]\n try {\n const value = JSON.parse(x, reviver)\n return [null, value]\n }\n catch (e: any) {\n return [e, undefined]\n }\n}\n","import { isBrowser as originBrowser, isNode as originNode } from 'es-toolkit'\n\n/**\n * 判断是否是 Node.js 环境\n * 🚫 非类型谓词\n * @returns {boolean} 若当前当前环境是 Node.js 返回 true,否则返回 false\n */\nexport const isBrowser = (): boolean => originBrowser()\n\n/**\n * 判断是否是 浏览器 环境\n * 🚫 非类型谓词\n * @returns {boolean} 若当前当前环境是浏览器返回 true,否则返回 false\n */\nexport const isNode = (): boolean => originNode()\n","import { isLength } from '../../predicate/isLength.mjs';\n\nfunction isArrayLike(value) {\n return value != null && typeof value !== 'function' && isLength(value.length);\n}\n\nexport { isArrayLike };\n","function isObject(value) {\n return value !== null && (typeof value === 'object' || typeof value === 'function');\n}\n\nexport { isObject };\n","import { getTag } from '../_internal/getTag.mjs';\n\nfunction isArguments(value) {\n return value !== null && typeof value === 'object' && getTag(value) === '[object Arguments]';\n}\n\nexport { isArguments };\n","function isPrototype(value) {\n const constructor = value?.constructor;\n const prototype = typeof constructor === 'function' ? constructor.prototype : Object.prototype;\n return value === prototype;\n}\n\nexport { isPrototype };\n","import { isTypedArray as isTypedArray$1 } from '../../predicate/isTypedArray.mjs';\n\nfunction isTypedArray(x) {\n return isTypedArray$1(x);\n}\n\nexport { isTypedArray };\n","import { isArguments } from './isArguments.mjs';\nimport { isArrayLike } from './isArrayLike.mjs';\nimport { isTypedArray } from './isTypedArray.mjs';\nimport { isPrototype } from '../_internal/isPrototype.mjs';\n\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value)) {\n if (typeof value.splice !== 'function' &&\n typeof value !== 'string' &&\n (typeof Buffer === 'undefined' || !Buffer.isBuffer(value)) &&\n !isTypedArray(value) &&\n !isArguments(value)) {\n return false;\n }\n return value.length === 0;\n }\n if (typeof value === 'object') {\n if (value instanceof Map || value instanceof Set) {\n return value.size === 0;\n }\n const keys = Object.keys(value);\n if (isPrototype(value)) {\n return keys.filter(x => x !== 'constructor').length === 0;\n }\n return keys.length === 0;\n }\n return true;\n}\n\nexport { isEmpty };\n","/* eslint-disable perfectionist/sort-named-imports */\nimport {\n isFunction as originFunction,\n isSet as originSet,\n isMap as originMap,\n isWeakSet as originWeakSet,\n isWeakMap as originWeakMap,\n isDate as originDate,\n isRegExp as originRegExp,\n isPromise as originPromise,\n isError as originError,\n isPlainObject as originPlainObject,\n} from 'es-toolkit'\nimport { isArray as originArray, isObject as originObject, isEmpty as originEmpty } from 'es-toolkit/compat'\n\n/** typedArray */\nexport type TypeTypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | BigInt64Array | BigUint64Array | Float16Array | Float32Array | Float64Array\n\n/**\n * 判断 Array 类型的类型谓词\n * @param {unknown} x 待检测值\n */\nexport const isArray = <T = unknown>(x: unknown): x is Array<T> => originArray(x)\n/**\n * 判断 Object 类型的类型谓词\n * @param {unknown} x 待检测值\n */\nexport const isObject = (x: unknown): x is object => originObject(x)\n/**\n * 判断 Function 类型的类型谓词\n * @param {unknown} x 待检测值\n */\nexport const isFunction = (x: unknown): x is (...args: any[]) => any => originFunction(x)\n\n/**\n * 判断 Set 类型的类型谓词\n * @param {unknown} x 待检测值\n */\nexport const isSet = <T = unknown>(x: unknown): x is Set<T> => originSet(x)\n/**\n * 判断 Map 类型的类型谓词\n * @param {unknown} x 待检测值\n */\nexport const isMap = <T = unknown, K extends PropertyKey = PropertyKey>(x: unknown): x is Map<K, T> => originMap(x)\n/**\n * 判断 WeakSet 类型的类型谓词\n * @param {unknown} x 待检测值\n */\nexport const isWeakSet = <T extends WeakKey = WeakKey>(x: unknown): x is WeakSet<T> => originWeakSet(x)\n/**\n * 判断 WeakMap 类型的类型谓词\n * @param {unknown} x 待检测值\n */\nexport const isWeakMap = <T = unknown, K extends WeakKey = WeakKey>(x: unknown): x is WeakMap<K, T> => originWeakMap(x)\n/**\n * 判断 Date 类型的类型谓词\n * @param {unknown} x 待检测值\n */\nexport const isDate = (x: unknown): x is Date => originDate(x)\n/**\n * 判断 RegExp 类型的类型谓词\n * @param {unknown} x 待检测值\n */\nexport const isRegExp = (x: unknown): x is RegExp => originRegExp(x)\n/**\n * 判断 Promise 类型的类型谓词\n * @param {unknown} x 待检测值\n */\nexport const isPromise = <T = unknown>(x: unknown): x is Promise<T> => originPromise(x)\n/**\n * 判断 Error 类型的类型谓词\n * @param {unknown} x 待检测值\n */\nexport const isError = (x: unknown): x is Error => originError(x)\n\n/**\n * 判断 普通对象 Record<PropertyKey, unknown> 类型的类型谓词\n * @param {unknown} x 待检测值\n */\nexport const isPlainObject = <T = unknown, K extends PropertyKey = PropertyKey>(x: unknown): x is Record<K, T> => originPlainObject(x)\n/**\n * 判断 给定值 是否为空\n * 🚫 非类型谓词\n * @returns {boolean} 可以判断字符串、数组、对象、Map、Set 等类型是否为空\n */\nexport const isEmpty = (x: unknown): boolean => originEmpty(x)\n","// eslint-disable-next-line ts/unbound-method\nconst toString = Object.prototype.toString\n\nconst toStringCache: Record<string, string> = Object.create(null)\n\nfunction tagOf(thing: unknown): string {\n const str = toString.call(thing)\n return toStringCache[str] || (toStringCache[str] = str.slice(8, -1).toLowerCase())\n};\n\n/**\n * 根据 `Object.prototype.toString` 方法判断值的类型\n * @param {unknown} x The value to test.\n * @param {string[]} type The types to check.\n *\n * @reference axios/dist/axios.js\n */\nexport function isTagOf(x: unknown, type: string[]): boolean {\n return type.some(t => tagOf(x) === t.toLowerCase())\n}\n","import { isArray, isNil } from '../is'\n\n/**\n * 函数 arrayCast 的返回值\n */\nexport type ArrayCastReturn<T> = T extends Array<infer U> ? U[] : (T extends null | undefined ? any[] : T[])\n\n/**\n * Converts a value to an array.\n *\n * @param {unknown} value - The value to convert.\n * @returns {any[]} Returns the converted array.\n *\n * @example\n * arrayCast(null) // => returns []\n * arrayCast(undefined) // => returns []\n * arrayCast(1) // => returns [1]\n * arrayCast([1, 2, 3]) // => returns [1, 2, 3]\n * arrayCast('a') // => returns ['a']\n * arrayCast(['a', 'b', 'c']) // => returns ['a', 'b', 'c']\n * arrayCast(true) // => returns [true]\n * arrayCast(false) // => returns [false]\n * arrayCast([true, false]) // => returns [true, false]\n * arrayCast({ a: '1' }) // => returns [{ a: '1' }]\n */\nexport function arrayCast<T>(value?: T): ArrayCastReturn<T> {\n if (isNil(value)) return ([] as unknown as ArrayCastReturn<T>)\n return (isArray(value) ? Array.from(value) : [value]) as ArrayCastReturn<T>\n}\n","/**\n * 空对象\n */\nexport const CONSTANT_EMPTY_ARRAY = []\n\n/**\n * 空数组\n */\nexport const CONSTANT_EMPTY_OBJECT = {}\n\n/**\n * 空函数\n */\nexport function CONSTANT_NOOP(): void { }\n","const toZeroIfInfinity = value => Number.isFinite(value) ? value : 0;\n\nfunction parseNumber(milliseconds) {\n\treturn {\n\t\tdays: Math.trunc(milliseconds / 86_400_000),\n\t\thours: Math.trunc(milliseconds / 3_600_000 % 24),\n\t\tminutes: Math.trunc(milliseconds / 60_000 % 60),\n\t\tseconds: Math.trunc(milliseconds / 1000 % 60),\n\t\tmilliseconds: Math.trunc(milliseconds % 1000),\n\t\tmicroseconds: Math.trunc(toZeroIfInfinity(milliseconds * 1000) % 1000),\n\t\tnanoseconds: Math.trunc(toZeroIfInfinity(milliseconds * 1e6) % 1000),\n\t};\n}\n\nfunction parseBigint(milliseconds) {\n\treturn {\n\t\tdays: milliseconds / 86_400_000n,\n\t\thours: milliseconds / 3_600_000n % 24n,\n\t\tminutes: milliseconds / 60_000n % 60n,\n\t\tseconds: milliseconds / 1000n % 60n,\n\t\tmilliseconds: milliseconds % 1000n,\n\t\tmicroseconds: 0n,\n\t\tnanoseconds: 0n,\n\t};\n}\n\nexport default function parseMilliseconds(milliseconds) {\n\tswitch (typeof milliseconds) {\n\t\tcase 'number': {\n\t\t\tif (Number.isFinite(milliseconds)) {\n\t\t\t\treturn parseNumber(milliseconds);\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'bigint': {\n\t\t\treturn parseBigint(milliseconds);\n\t\t}\n\n\t\t// No default\n\t}\n\n\tthrow new TypeError('Expected a finite number or bigint');\n}\n","import parseMilliseconds from 'parse-ms';\n\nconst isZero = value => value === 0 || value === 0n;\nconst pluralize = (word, count) => (count === 1 || count === 1n) ? word : `${word}s`;\n\nconst SECOND_ROUNDING_EPSILON = 0.000_000_1;\nconst ONE_DAY_IN_MILLISECONDS = 24n * 60n * 60n * 1000n;\n\nexport default function prettyMilliseconds(milliseconds, options) {\n\tconst isBigInt = typeof milliseconds === 'bigint';\n\tif (!isBigInt && !Number.isFinite(milliseconds)) {\n\t\tthrow new TypeError('Expected a finite number or bigint');\n\t}\n\n\toptions = {...options};\n\n\tconst sign = milliseconds < 0 ? '-' : '';\n\tmilliseconds = milliseconds < 0 ? -milliseconds : milliseconds; // Cannot use `Math.abs()` because of BigInt support.\n\n\tif (options.colonNotation) {\n\t\toptions.compact = false;\n\t\toptions.formatSubMilliseconds = false;\n\t\toptions.separateMilliseconds = false;\n\t\toptions.verbose = false;\n\t}\n\n\tif (options.compact) {\n\t\toptions.unitCount = 1;\n\t\toptions.secondsDecimalDigits = 0;\n\t\toptions.millisecondsDecimalDigits = 0;\n\t}\n\n\tlet result = [];\n\n\tconst floorDecimals = (value, decimalDigits) => {\n\t\tconst flooredInterimValue = Math.floor((value * (10 ** decimalDigits)) + SECOND_ROUNDING_EPSILON);\n\t\tconst flooredValue = Math.round(flooredInterimValue) / (10 ** decimalDigits);\n\t\treturn flooredValue.toFixed(decimalDigits);\n\t};\n\n\tconst add = (value, long, short, valueString) => {\n\t\tif (\n\t\t\t(result.length === 0 || !options.colonNotation)\n\t\t\t&& isZero(value)\n\t\t\t&& !(options.colonNotation && short === 'm')) {\n\t\t\treturn;\n\t\t}\n\n\t\tvalueString ??= String(value);\n\t\tif (options.colonNotation) {\n\t\t\tconst wholeDigits = valueString.includes('.') ? valueString.split('.')[0].length : valueString.length;\n\t\t\tconst minLength = result.length > 0 ? 2 : 1;\n\t\t\tvalueString = '0'.repeat(Math.max(0, minLength - wholeDigits)) + valueString;\n\t\t} else {\n\t\t\tvalueString += options.verbose ? ' ' + pluralize(long, value) : short;\n\t\t}\n\n\t\tresult.push(valueString);\n\t};\n\n\tconst parsed = parseMilliseconds(milliseconds);\n\tconst days = BigInt(parsed.days);\n\n\tif (options.hideYearAndDays) {\n\t\tadd((BigInt(days) * 24n) + BigInt(parsed.hours), 'hour', 'h');\n\t} else {\n\t\tif (options.hideYear) {\n\t\t\tadd(days, 'day', 'd');\n\t\t} else {\n\t\t\tadd(days / 365n, 'year', 'y');\n\t\t\tadd(days % 365n, 'day', 'd');\n\t\t}\n\n\t\tadd(Number(parsed.hours), 'hour', 'h');\n\t}\n\n\tadd(Number(parsed.minutes), 'minute', 'm');\n\n\tif (!options.hideSeconds) {\n\t\tif (\n\t\t\toptions.separateMilliseconds\n\t\t\t|| options.formatSubMilliseconds\n\t\t\t|| (!options.colonNotation && milliseconds < 1000 && !options.subSecondsAsDecimals)\n\t\t) {\n\t\t\tconst seconds = Number(parsed.seconds);\n\t\t\tconst milliseconds = Number(parsed.milliseconds);\n\t\t\tconst microseconds = Number(parsed.microseconds);\n\t\t\tconst nanoseconds = Number(parsed.nanoseconds);\n\n\t\t\tadd(seconds, 'second', 's');\n\n\t\t\tif (options.formatSubMilliseconds) {\n\t\t\t\tadd(milliseconds, 'millisecond', 'ms');\n\t\t\t\tadd(microseconds, 'microsecond', 'µs');\n\t\t\t\tadd(nanoseconds, 'nanosecond', 'ns');\n\t\t\t} else {\n\t\t\t\tconst millisecondsAndBelow\n\t\t\t\t\t= milliseconds\n\t\t\t\t\t+ (microseconds / 1000)\n\t\t\t\t\t+ (nanoseconds / 1e6);\n\n\t\t\t\tconst millisecondsDecimalDigits\n\t\t\t\t\t= typeof options.millisecondsDecimalDigits === 'number'\n\t\t\t\t\t\t? options.millisecondsDecimalDigits\n\t\t\t\t\t\t: 0;\n\n\t\t\t\tconst roundedMilliseconds = millisecondsAndBelow >= 1\n\t\t\t\t\t? Math.round(millisecondsAndBelow)\n\t\t\t\t\t: Math.ceil(millisecondsAndBelow);\n\n\t\t\t\tconst millisecondsString = millisecondsDecimalDigits\n\t\t\t\t\t? millisecondsAndBelow.toFixed(millisecondsDecimalDigits)\n\t\t\t\t\t: roundedMilliseconds;\n\n\t\t\t\tadd(\n\t\t\t\t\tNumber.parseFloat(millisecondsString),\n\t\t\t\t\t'millisecond',\n\t\t\t\t\t'ms',\n\t\t\t\t\tmillisecondsString,\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tconst seconds = (\n\t\t\t\t(isBigInt ? Number(milliseconds % ONE_DAY_IN_MILLISECONDS) : milliseconds)\n\t\t\t\t/ 1000\n\t\t\t) % 60;\n\t\t\tconst secondsDecimalDigits\n\t\t\t\t= typeof options.secondsDecimalDigits === 'number'\n\t\t\t\t\t? options.secondsDecimalDigits\n\t\t\t\t\t: 1;\n\t\t\tconst secondsFixed = floorDecimals(seconds, secondsDecimalDigits);\n\t\t\tconst secondsString = options.keepDecimalsOnWholeSeconds\n\t\t\t\t? secondsFixed\n\t\t\t\t: secondsFixed.replace(/\\.0+$/, '');\n\t\t\tadd(Number.parseFloat(secondsString), 'second', 's', secondsString);\n\t\t}\n\t}\n\n\tif (result.length === 0) {\n\t\treturn sign + '0' + (options.verbose ? ' milliseconds' : 'ms');\n\t}\n\n\tconst separator = options.colonNotation ? ':' : ' ';\n\tif (typeof options.unitCount === 'number') {\n\t\tresult = result.slice(0, Math.max(options.unitCount, 1));\n\t}\n\n\treturn sign + result.join(separator);\n}\n","import type { Options } from 'pretty-ms'\nimport prettyMs from 'pretty-ms'\n\nexport type DatePrettyMsOptions = Options\n\nexport const datePrettyMs = prettyMs\n","var EN_US = ['second', 'minute', 'hour', 'day', 'week', 'month', 'year'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['just now', 'right now'];\n var unit = EN_US[Math.floor(idx / 2)];\n if (diff > 1)\n unit += 's';\n return [diff + \" \" + unit + \" ago\", \"in \" + diff + \" \" + unit];\n}\n//# sourceMappingURL=en_US.js.map","var ZH_CN = ['秒', '分钟', '小时', '天', '周', '个月', '年'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['刚刚', '片刻后'];\n var unit = ZH_CN[~~(idx / 2)];\n return [diff + \" \" + unit + \"\\u524D\", diff + \" \" + unit + \"\\u540E\"];\n}\n//# sourceMappingURL=zh_CN.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\n/**\n * All supported locales\n */\nvar Locales = {};\n/**\n * register a locale\n * @param locale\n * @param func\n */\nexport var register = function (locale, func) {\n Locales[locale] = func;\n};\n/**\n * get a locale, default is en_US\n * @param locale\n * @returns {*}\n */\nexport var getLocale = function (locale) {\n return Locales[locale] || Locales['en_US'];\n};\n//# sourceMappingURL=register.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nvar SEC_ARRAY = [\n 60,\n 60,\n 24,\n 7,\n 365 / 7 / 12,\n 12,\n];\n/**\n * format Date / string / timestamp to timestamp\n * @param input\n * @returns {*}\n */\nexport function toDate(input) {\n if (input instanceof Date)\n return input;\n // @ts-ignore\n if (!isNaN(input) || /^\\d+$/.test(input))\n return new Date(parseInt(input));\n input = (input || '')\n // @ts-ignore\n .trim()\n .replace(/\\.\\d+/, '') // remove milliseconds\n .replace(/-/, '/')\n .replace(/-/, '/')\n .replace(/(\\d)T(\\d)/, '$1 $2')\n .replace(/Z/, ' UTC') // 2017-2-5T3:57:52Z -> 2017-2-5 3:57:52UTC\n .replace(/([+-]\\d\\d):?(\\d\\d)/, ' $1$2'); // -04:00 -> -0400\n return new Date(input);\n}\n/**\n * format the diff second to *** time ago, with setting locale\n * @param diff\n * @param localeFunc\n * @returns\n */\nexport function formatDiff(diff, localeFunc) {\n /**\n * if locale is not exist, use defaultLocale.\n * if defaultLocale is not exist, use build-in `en`.\n * be sure of no error when locale is not exist.\n *\n * If `time in`, then 1\n * If `time ago`, then 0\n */\n var agoIn = diff < 0 ? 1 : 0;\n /**\n * Get absolute value of number (|diff| is non-negative) value of x\n * |diff| = diff if diff is positive\n * |diff| = -diff if diff is negative\n * |0| = 0\n */\n diff = Math.abs(diff);\n /**\n * Time in seconds\n */\n var totalSec = diff;\n /**\n * Unit of time\n */\n var idx = 0;\n for (; diff >= SEC_ARRAY[idx] && idx < SEC_ARRAY.length; idx++) {\n diff /= SEC_ARRAY[idx];\n }\n /**\n * Math.floor() is alternative of ~~\n *\n * The differences and bugs:\n * Math.floor(3.7) -> 4 but ~~3.7 -> 3\n * Math.floor(1559125440000.6) -> 1559125440000 but ~~1559125440000.6 -> 52311552\n *\n * More information about the performance of algebraic:\n * https://www.youtube.com/watch?v=65-RbBwZQdU\n */\n diff = Math.floor(diff);\n idx *= 2;\n if (diff > (idx === 0 ? 9 : 1))\n idx += 1;\n return localeFunc(diff, idx, totalSec)[agoIn].replace('%s', diff.toString());\n}\n/**\n * calculate the diff second between date to be formatted an now date.\n * @param date\n * @param relativeDate\n * @returns {number}\n */\nexport function diffSec(date, relativeDate) {\n var relDate = relativeDate ? toDate(relativeDate) : new Date();\n return (+relDate - +toDate(date)) / 1000;\n}\n/**\n * nextInterval: calculate the next interval time.\n * - diff: the diff sec between now and date to be formatted.\n *\n * What's the meaning?\n * diff = 61 then return 59\n * diff = 3601 (an hour + 1 second), then return 3599\n * make the interval with high performance.\n **/\nexport function nextInterval(diff) {\n var rst = 1, i = 0, d = Math.abs(diff);\n for (; diff >= SEC_ARRAY[i] && i < SEC_ARRAY.length; i++) {\n diff /= SEC_ARRAY[i];\n rst *= SEC_ARRAY[i];\n }\n d = d % rst;\n d = d ? rst - d : rst;\n return Math.ceil(d);\n}\n//# sourceMappingURL=date.js.map","import { formatDiff, diffSec } from './utils/date';\nimport { getLocale } from './register';\n/**\n * format a TDate into string\n * @param date\n * @param locale\n * @param opts\n */\nexport var format = function (date, locale, opts) {\n // diff seconds\n var sec = diffSec(date, opts && opts.relativeDate);\n // format it with locale\n return formatDiff(sec, getLocale(locale));\n};\n//# sourceMappingURL=format.js.map","var ATTR_TIMEAGO_TID = 'timeago-id';\n/**\n * get the datetime attribute, `datetime` are supported.\n * @param node\n * @returns {*}\n */\nexport function getDateAttribute(node) {\n return node.getAttribute('datetime');\n}\n/**\n * set the node attribute, native DOM\n * @param node\n * @param timerId\n * @returns {*}\n */\nexport function setTimerId(node, timerId) {\n // @ts-ignore\n node.setAttribute(ATTR_TIMEAGO_TID, timerId);\n}\n/**\n * get the timer id\n * @param node\n */\nexport function getTimerId(node) {\n return parseInt(node.getAttribute(ATTR_TIMEAGO_TID));\n}\n//# sourceMappingURL=dom.js.map","import { setTimerId, getTimerId, getDateAttribute } from './utils/dom';\nimport { formatDiff, diffSec, nextInterval } from './utils/date';\nimport { getLocale } from './register';\n// all realtime timer\nvar TIMER_POOL = {};\n/**\n * clear a timer from pool\n * @param tid\n */\nvar clear = function (tid) {\n clearTimeout(tid);\n delete TIMER_POOL[tid];\n};\n// run with timer(setTimeout)\nfunction run(node, date, localeFunc, opts) {\n // clear the node's exist timer\n clear(getTimerId(node));\n var relativeDate = opts.relativeDate, minInterval = opts.minInterval;\n // get diff seconds\n var diff = diffSec(date, relativeDate);\n // render\n node.innerText = formatDiff(diff, localeFunc);\n var tid = setTimeout(function () {\n run(node, date, localeFunc, opts);\n }, Math.min(Math.max(nextInterval(diff), minInterval || 1) * 1000, 0x7fffffff));\n // there is no need to save node in object. Just save the key\n TIMER_POOL[tid] = 0;\n setTimerId(node, tid);\n}\n/**\n * cancel a timer or all timers\n * @param node - node hosting the time string\n */\nexport function cancel(node) {\n // cancel one\n if (node)\n clear(getTimerId(node));\n // cancel all\n // @ts-ignore\n else\n Object.keys(TIMER_POOL).forEach(clear);\n}\n/**\n * render a dom realtime\n * @param nodes\n * @param locale\n * @param opts\n */\nexport function render(nodes, locale, opts) {\n // by .length\n // @ts-ignore\n var nodeList = nodes.length ? nodes : [nodes];\n nodeList.forEach(function (node) {\n run(node, getDateAttribute(node), getLocale(locale), opts || {});\n });\n return nodeList;\n}\n//# sourceMappingURL=realtime.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nimport en_US from './lang/en_US';\nimport zh_CN from './lang/zh_CN';\nimport { register } from './register';\nregister('en_US', en_US);\nregister('zh_CN', zh_CN);\nexport { format } from './format';\nexport { render, cancel } from './realtime';\nexport { register };\n//# sourceMappingURL=index.js.map","import type { LocaleFunc, LocaleMap, Opts, TDate, TimerPool } from 'timeago.js'\nimport { cancel, format, register, render } from 'timeago.js'\n\nexport type DateTimeAgoLocaleFunc = LocaleFunc\nexport type DateTimeAgoLocaleMap = LocaleMap\nexport type DateTimeAgoOpts = Opts\nexport type DateTimeAgoTDate = TDate\nexport type DateTimeAgoTimerPool = TimerPool\n\nexport const dateTimeAgoFormat = format\nexport const dateTimeAgoRender = render\nexport const dateTimeAgoRenderCancel = cancel\nexport const dateTimeAgoLocale = register\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/* eslint-disable perfectionist/sort-named-imports */\nimport type { TypeTypedArray } from '../is'\nimport type { FileBlobOptions, FileBufferEncoding } from './interface'\nimport { Buffer } from 'buffer-npm'\nimport {\n isTypedArray as originTypedArray,\n isArrayBuffer as originArrayBuffer,\n // isBuffer as originBuffer,\n isBlob as originBlob,\n isFile as originFile,\n} from 'es-toolkit'\n\n/**\n * 仅涉及到 Buffer/TypedArray/ArrayBuffer/String/Blob 之间的转换,不涉及修改操作\n * From:\n * Buffer/TypedArray/ArrayBuffer/String/Blob -> Buffer\n * To:\n * Buffer -> ArrayBuffer -> Blob -> File/ObjectURL\n * Buffer -> ArrayBuffer -> TypedArray\n * Buffer -> String\n * 参考转化关系:\n * typedArray\n * ⬇️ typedArray.buffer <=> new Uint8Array/DataView(buffer)\n * ArrayBuffer\n * ⬇️ new Blob([buffer], { type: mimeType }) <=> await blob.arrayBuffer()\n * Blob\n * ⬇️ new File([blob], 'filename', { type: blob.type }) <=> file.slice(0, file.size, file.type)\n * ⬇️ URL.createObjectURL(blob)\n * File/ObjectURL\n */\nexport class FileBuffer {\n #buf: Buffer\n\n /**\n * 判断 TypedArray 类型的类型谓词\n * @description 通过 ArrayBuffer.isView 判断是否为视图,并排除 DataView 类型\n * @param {unknown} x 待检测值\n */\n static isTypedArray(x: unknown): x is TypeTypedArray {\n return originTypedArray(x)\n }\n\n /**\n * 判断 TypedArray 类型的类型谓词\n * @description 通过 ArrayBuffer.isView 判断是否为视图,并排除 DataView 类型\n * @param {unknown} x 待检测值\n */\n static isDataView(x: unknown): x is DataView {\n return x instanceof DataView\n }\n\n /**\n * 判断 ArrayBuffer 类型的类型谓词\n * @param {unknown} x 待检测值\n */\n static isArrayBuffer(x: unknown): x is ArrayBuffer {\n return originArrayBuffer(x)\n }\n\n /**\n * 判断 Buffer 类型的类型谓词\n * @param {unknown} x 待检测值\n */\n static isBuffer(x: unknown): x is Buffer {\n return Buffer.isBuffer(x)\n }\n\n /**\n * 判断 Blob 类型的类型谓词\n * @param {unknown} x 待检测值\n */\n static isBlob(x: unknown): x is Blob {\n return originBlob(x)\n }\n\n /**\n * 判断 File 类型的类型谓词\n * @param {unknown} x 待检测值\n */\n static isFile(x: unknown): x is File {\n return originFile(x)\n }\n\n constructor(...args: any[]) {\n if (new.target === FileBuffer) {\n throw new Error('请使用静态方法 fromXXX 创建实例')\n }\n // @ts-expect-error Buffer.from\n this.#buf = Buffer.from(...args)\n }\n\n /*************************************************************************/\n /** Buffer -> Buffer ➡️ 新创建的 Buffer 与原 Buffer 共享相同的数据但修改互不影响 */\n /*************************************************************************/\n\n static fromBuffer(buffer: Buffer): FileBuffer {\n return new (class extends FileBuffer { })(buffer)\n }\n\n toBuffer(): Uint8Array {\n return Buffer.from(this.#buf)\n }\n\n /***********************************************************************************/\n /** Buffer -> ArrayBuffer ➡️ 可指定区间;修改 Buffer 会直接修改 ArrayBuffer 的内容 */\n /***********************************************************************************/\n\n static fromArrayBuffer(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): FileBuffer {\n return new (class extends FileBuffer { })(arrayBuffer, byteOffset, length)\n }\n\n toArrayBuffer(): ArrayBuffer {\n const begin = this.#buf.byteOffset\n const end = begin + this.#buf.length\n // Buffer 实例的 .buffer 属性指向底层的 ArrayBuffer\n // .slice(offset, end) 用于确保只返回 Buffer 实际占用的部分\n return this.#buf.buffer.slice(begin, end)\n }\n\n /***********************************************************************************/\n /** Buffer -> ArrayBuffer -> TypedArray ➡️ 修改 Buffer 会直接修改 TypedArray 的内容 */\n /***********************************************************************************/\n\n static fromUint8Array(uint8Array: Uint8Array): FileBuffer {\n return new (class extends FileBuffer { })(uint8Array)\n }\n\n toUint8Array(): Uint8Array {\n return new Uint8Array(this.toArrayBuffer())\n }\n\n /***********************************************************************************/\n /** Buffer -> ArrayBuffer -> Blob -> File/ObjectURL ➡️ 异步 + 参数指定 MIME 类型 */\n /***********************************************************************************/\n\n static async fromBlob(blob: Blob): Promise<FileBuffer> {\n const arrayBuffer = await blob.arrayBuffer()\n return new (class extends FileBuffer { })(arrayBuffer)\n }\n\n toBlob(options?: FileBlobOptions): Blob {\n return new Blob([this.toArrayBuffer()], options)\n }\n\n /***********************************************************************************/\n /** Buffer -> String ➡️ 无需手动通过 Blob 和 FileReader 转换, Buffer.toString() 已实现 */\n /***********************************************************************************/\n\n static fromString(str: string, encoding?: string): FileBuffer {\n return new (class extends FileBuffer { })(str, encoding)\n }\n\n toString(encoding?: FileBufferEncoding): string {\n return this.#buf.toString(encoding)\n }\n}\n","const BYTE_UNITS = [\n\t'B',\n\t'kB',\n\t'MB',\n\t'GB',\n\t'TB',\n\t'PB',\n\t'EB',\n\t'ZB',\n\t'YB',\n];\n\nconst BIBYTE_UNITS = [\n\t'B',\n\t'KiB',\n\t'MiB',\n\t'GiB',\n\t'TiB',\n\t'PiB',\n\t'EiB',\n\t'ZiB',\n\t'YiB',\n];\n\nconst BIT_UNITS = [\n\t'b',\n\t'kbit',\n\t'Mbit',\n\t'Gbit',\n\t'Tbit',\n\t'Pbit',\n\t'Ebit',\n\t'Zbit',\n\t'Ybit',\n];\n\nconst BIBIT_UNITS = [\n\t'b',\n\t'kibit',\n\t'Mibit',\n\t'Gibit',\n\t'Tibit',\n\t'Pibit',\n\t'Eibit',\n\t'Zibit',\n\t'Yibit',\n];\n\n/*\nFormats the given number using `Number#toLocaleString`.\n- If locale is a string, the value is expected to be a locale-key (for example: `de`).\n- If locale is true, the system default locale is used for translation.\n- If no value for locale is specified, the number is returned unmodified.\n*/\nconst toLocaleString = (number, locale, options) => {\n\tlet result = number;\n\tif (typeof locale === 'string' || Array.isArray(locale)) {\n\t\tresult = number.toLocaleString(locale, options);\n\t} else if (locale === true || options !== undefined) {\n\t\tresult = number.toLocaleString(undefined, options);\n\t}\n\n\treturn result;\n};\n\nconst log10 = numberOrBigInt => {\n\tif (typeof numberOrBigInt === 'number') {\n\t\treturn Math.log10(numberOrBigInt);\n\t}\n\n\tconst string = numberOrBigInt.toString(10);\n\n\treturn string.length + Math.log10(`0.${string.slice(0, 15)}`);\n};\n\nconst log = numberOrBigInt => {\n\tif (typeof numberOrBigInt === 'number') {\n\t\treturn Math.log(numberOrBigInt);\n\t}\n\n\treturn log10(numberOrBigInt) * Math.log(10);\n};\n\nconst divide = (numberOrBigInt, divisor) => {\n\tif (typeof numberOrBigInt === 'number') {\n\t\treturn numberOrBigInt / divisor;\n\t}\n\n\tconst integerPart = numberOrBigInt / BigInt(divisor);\n\tconst remainder = numberOrBigInt % BigInt(divisor);\n\treturn Number(integerPart) + (Number(remainder) / divisor);\n};\n\nconst applyFixedWidth = (result, fixedWidth) => {\n\tif (fixedWidth === undefined) {\n\t\treturn result;\n\t}\n\n\tif (typeof fixedWidth !== 'number' || !Number.isSafeInteger(fixedWidth) || fixedWidth < 0) {\n\t\tthrow new TypeError(`Expected fixedWidth to be a non-negative integer, got ${typeof fixedWidth}: ${fixedWidth}`);\n\t}\n\n\tif (fixedWidth === 0) {\n\t\treturn result;\n\t}\n\n\treturn result.length < fixedWidth ? result.padStart(fixedWidth, ' ') : result;\n};\n\nconst buildLocaleOptions = options => {\n\tconst {minimumFractionDigits, maximumFractionDigits} = options;\n\n\tif (minimumFractionDigits === undefined && maximumFractionDigits === undefined) {\n\t\treturn undefined;\n\t}\n\n\treturn {\n\t\t...(minimumFractionDigits !== undefined && {minimumFractionDigits}),\n\t\t...(maximumFractionDigits !== undefined && {maximumFractionDigits}),\n\t\troundingMode: 'trunc',\n\t};\n};\n\nexport default function prettyBytes(number, options) {\n\tif (typeof number !== 'bigint' && !Number.isFinite(number)) {\n\t\tthrow new TypeError(`Expected a finite number, got ${typeof number}: ${number}`);\n\t}\n\n\toptions = {\n\t\tbits: false,\n\t\tbinary: false,\n\t\tspace: true,\n\t\tnonBreakingSpace: false,\n\t\t...options,\n\t};\n\n\tconst UNITS = options.bits\n\t\t? (options.binary ? BIBIT_UNITS : BIT_UNITS)\n\t\t: (options.binary ? BIBYTE_UNITS : BYTE_UNITS);\n\n\tconst separator = options.space ? (options.nonBreakingSpace ? '\\u00A0' : ' ') : '';\n\n\t// Handle signed zero case\n\tconst isZero = typeof number === 'number' ? number === 0 : number === 0n;\n\tif (options.signed && isZero) {\n\t\tconst result = ` 0${separator}${UNITS[0]}`;\n\t\treturn applyFixedWidth(result, options.fixedWidth);\n\t}\n\n\tconst isNegative = number < 0;\n\tconst prefix = isNegative ? '-' : (options.signed ? '+' : '');\n\n\tif (isNegative) {\n\t\tnumber = -number;\n\t}\n\n\tconst localeOptions = buildLocaleOptions(options);\n\tlet result;\n\n\tif (number < 1) {\n\t\tconst numberString = toLocaleString(number, options.locale, localeOptions);\n\t\tresult = prefix + numberString + separator + UNITS[0];\n\t} else {\n\t\tconst exponent = Math.min(Math.floor(options.binary ? log(number) / Math.log(1024) : log10(number) / 3), UNITS.length - 1);\n\t\tnumber = divide(number, (options.binary ? 1024 : 1000) ** exponent);\n\n\t\tif (!localeOptions) {\n\t\t\tconst minPrecision = Math.max(3, Math.floor(number).toString().length);\n\t\t\tnumber = number.toPrecision(minPrecision);\n\t\t}\n\n\t\tconst numberString = toLocaleString(Number(number), options.locale, localeOptions);\n\t\tconst unit = UNITS[exponent];\n\t\tresult = prefix + numberString + separator + unit;\n\t}\n\n\treturn applyFixedWidth(result, options.fixedWidth);\n}\n","import type { Options } from 'pretty-bytes'\nimport prettyBytes from 'pretty-bytes'\n\nexport type FileBytesOptions = Options\n\nexport const fileBytes = prettyBytes\n","// text-polyfill.ts\n// Minimal encode/decode for utf-8, utf-16le, ascii, latin1, windows-1252\nconst WINDOWS_1252_EXTRA = {\n 0x80: \"€\", 0x82: \"‚\", 0x83: \"ƒ\", 0x84: \"„\", 0x85: \"…\", 0x86: \"†\",\n 0x87: \"‡\", 0x88: \"ˆ\", 0x89: \"‰\", 0x8a: \"Š\", 0x8b: \"‹\", 0x8c: \"Œ\",\n 0x8e: \"Ž\", 0x91: \"‘\", 0x92: \"’\", 0x93: \"“\", 0x94: \"”\", 0x95: \"•\",\n 0x96: \"–\", 0x97: \"—\", 0x98: \"˜\", 0x99: \"™\", 0x9a: \"š\", 0x9b: \"›\",\n 0x9c: \"œ\", 0x9e: \"ž\", 0x9f: \"Ÿ\",\n};\nconst WINDOWS_1252_REVERSE = {};\nfor (const [code, char] of Object.entries(WINDOWS_1252_EXTRA)) {\n WINDOWS_1252_REVERSE[char] = Number.parseInt(code);\n}\n/**\n * Decode text from binary data\n * @param bytes Binary data\n * @param encoding Encoding\n */\nexport function textDecode(bytes, encoding = \"utf-8\") {\n switch (encoding.toLowerCase()) {\n case \"utf-8\":\n case \"utf8\":\n if (typeof globalThis.TextDecoder !== \"undefined\") {\n return new globalThis.TextDecoder(\"utf-8\").decode(bytes);\n }\n return decodeUTF8(bytes);\n case \"utf-16le\":\n return decodeUTF16LE(bytes);\n case \"ascii\":\n return decodeASCII(bytes);\n case \"latin1\":\n case \"iso-8859-1\":\n return decodeLatin1(bytes);\n case \"windows-1252\":\n return decodeWindows1252(bytes);\n default:\n throw new RangeError(`Encoding '${encoding}' not supported`);\n }\n}\nexport function textEncode(input = \"\", encoding = \"utf-8\") {\n switch (encoding.toLowerCase()) {\n case \"utf-8\":\n case \"utf8\":\n if (typeof globalThis.TextEncoder !== \"undefined\") {\n return new globalThis.TextEncoder().encode(input);\n }\n return encodeUTF8(input);\n case \"utf-16le\":\n return encodeUTF16LE(input);\n case \"ascii\":\n return encodeASCII(input);\n case \"latin1\":\n case \"iso-8859-1\":\n return encodeLatin1(input);\n case \"windows-1252\":\n return encodeWindows1252(input);\n default:\n throw new RangeError(`Encoding '${encoding}' not supported`);\n }\n}\n// --- Internal helpers ---\nfunction decodeUTF8(bytes) {\n let out = \"\";\n let i = 0;\n while (i < bytes.length) {\n const b1 = bytes[i++];\n if (b1 < 0x80) {\n out += String.fromCharCode(b1);\n }\n else if (b1 < 0xe0) {\n const b2 = bytes[i++] & 0x3f;\n out += String.fromCharCode(((b1 & 0x1f) << 6) | b2);\n }\n else if (b1 < 0xf0) {\n const b2 = bytes[i++] & 0x3f;\n const b3 = bytes[i++] & 0x3f;\n out += String.fromCharCode(((b1 & 0x0f) << 12) | (b2 << 6) | b3);\n }\n else {\n const b2 = bytes[i++] & 0x3f;\n const b3 = bytes[i++] & 0x3f;\n const b4 = bytes[i++] & 0x3f;\n let cp = ((b1 & 0x07) << 18) |\n (b2 << 12) |\n (b3 << 6) |\n b4;\n cp -= 0x10000;\n out += String.fromCharCode(0xd800 + ((cp >> 10) & 0x3ff), 0xdc00 + (cp & 0x3ff));\n }\n }\n return out;\n}\nfunction decodeUTF16LE(bytes) {\n let out = \"\";\n for (let i = 0; i < bytes.length; i += 2) {\n out += String.fromCharCode(bytes[i] | (bytes[i + 1] << 8));\n }\n return out;\n}\nfunction decodeASCII(bytes) {\n return String.fromCharCode(...bytes.map((b) => b & 0x7f));\n}\nfunction decodeLatin1(bytes) {\n return String.fromCharCode(...bytes);\n}\nfunction decodeWindows1252(bytes) {\n let out = \"\";\n for (const b of bytes) {\n if (b >= 0x80 && b <= 0x9f && WINDOWS_1252_EXTRA[b]) {\n out += WINDOWS_1252_EXTRA[b];\n }\n else {\n out += String.fromCharCode(b);\n }\n }\n return out;\n}\nfunction encodeUTF8(str) {\n const out = [];\n for (let i = 0; i < str.length; i++) {\n const cp = str.charCodeAt(i);\n if (cp < 0x80) {\n out.push(cp);\n }\n else if (cp < 0x800) {\n out.push(0xc0 | (cp >> 6), 0x80 | (cp & 0x3f));\n }\n else if (cp < 0x10000) {\n out.push(0xe0 | (cp >> 12), 0x80 | ((cp >> 6) & 0x3f), 0x80 | (cp & 0x3f));\n }\n else {\n out.push(0xf0 | (cp >> 18), 0x80 | ((cp >> 12) & 0x3f), 0x80 | ((cp >> 6) & 0x3f), 0x80 | (cp & 0x3f));\n }\n }\n return new Uint8Array(out);\n}\nfunction encodeUTF16LE(str) {\n const out = new Uint8Array(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n out[i * 2] = code & 0xff;\n out[i * 2 + 1] = code >> 8;\n }\n return out;\n}\nfunction encodeASCII(str) {\n return new Uint8Array([...str].map((ch) => ch.charCodeAt(0) & 0x7f));\n}\nfunction encodeLatin1(str) {\n return new Uint8Array([...str].map((ch) => ch.charCodeAt(0) & 0xff));\n}\nfunction encodeWindows1252(str) {\n return new Uint8Array([...str].map((ch) => {\n const code = ch.charCodeAt(0);\n if (code <= 0xff)\n return code;\n if (WINDOWS_1252_REVERSE[ch] !== undefined)\n return WINDOWS_1252_REVERSE[ch];\n return 0x3f; // '?'\n }));\n}\n","import * as ieee754 from 'ieee754';\nimport { textDecode } from \"@borewit/text-codec\";\n// Primitive types\nfunction dv(array) {\n return new DataView(array.buffer, array.byteOffset);\n}\n/*\n * 8-bit unsigned integer\n */\nexport const UINT8 = {\n len: 1,\n get(array, offset) {\n return dv(array).getUint8(offset);\n },\n put(array, offset, value) {\n dv(array).setUint8(offset, value);\n return offset + 1;\n }\n};\n/**\n * 16-bit unsigned integer, Little Endian byte order\n */\nexport const UINT16_LE = {\n len: 2,\n get(array, offset) {\n return dv(array).getUint16(offset, true);\n },\n put(array, offset, value) {\n dv(array).setUint16(offset, value, true);\n return offset + 2;\n }\n};\n/**\n * 16-bit unsigned integer, Big Endian byte order\n */\nexport const UINT16_BE = {\n len: 2,\n get(array, offset) {\n return dv(array).getUint16(offset);\n },\n put(array, offset, value) {\n dv(array).setUint16(offset, value);\n return offset + 2;\n }\n};\n/**\n * 24-bit unsigned integer, Little Endian byte order\n */\nexport const UINT24_LE = {\n len: 3,\n get(array, offset) {\n const dataView = dv(array);\n return dataView.getUint8(offset) + (dataView.getUint16(offset + 1, true) << 8);\n },\n put(array, offset, value) {\n const dataView = dv(array);\n dataView.setUint8(offset, value & 0xff);\n dataView.setUint16(offset + 1, value >> 8, true);\n return offset + 3;\n }\n};\n/**\n * 24-bit unsigned integer, Big Endian byte order\n */\nexport const UINT24_BE = {\n len: 3,\n get(array, offset) {\n const dataView = dv(array);\n return (dataView.getUint16(offset) << 8) + dataView.getUint8(offset + 2);\n },\n put(array, offset, value) {\n const dataView = dv(array);\n dataView.setUint16(offset, value >> 8);\n dataView.setUint8(offset + 2, value & 0xff);\n return offset + 3;\n }\n};\n/**\n * 32-bit unsigned integer, Little Endian byte order\n */\nexport const UINT32_LE = {\n len: 4,\n get(array, offset) {\n return dv(array).getUint32(offset, true);\n },\n put(array, offset, value) {\n dv(array).setUint32(offset, value, true);\n return offset + 4;\n }\n};\n/**\n * 32-bit unsigned integer, Big Endian byte order\n */\nexport const UINT32_BE = {\n len: 4,\n get(array, offset) {\n return dv(array).getUint32(offset);\n },\n put(array, offset, value) {\n dv(array).setUint32(offset, value);\n return offset + 4;\n }\n};\n/**\n * 8-bit signed integer\n */\nexport const INT8 = {\n len: 1,\n get(array, offset) {\n return dv(array).getInt8(offset);\n },\n put(array, offset, value) {\n dv(array).setInt8(offset, value);\n return offset + 1;\n }\n};\n/**\n * 16-bit signed integer, Big Endian byte order\n */\nexport const INT16_BE = {\n len: 2,\n get(array, offset) {\n return dv(array).getInt16(offset);\n },\n put(array, offset, value) {\n dv(array).setInt16(offset, value);\n return offset + 2;\n }\n};\n/**\n * 16-bit signed integer, Little Endian byte order\n */\nexport const INT16_LE = {\n len: 2,\n get(array, offset) {\n return dv(array).getInt16(offset, true);\n },\n put(array, offset, value) {\n dv(array).setInt16(offset, value, true);\n return offset + 2;\n }\n};\n/**\n * 24-bit signed integer, Little Endian byte order\n */\nexport const INT24_LE = {\n len: 3,\n get(array, offset) {\n const unsigned = UINT24_LE.get(array, offset);\n return unsigned > 0x7fffff ? unsigned - 0x1000000 : unsigned;\n },\n put(array, offset, value) {\n const dataView = dv(array);\n dataView.setUint8(offset, value & 0xff);\n dataView.setUint16(offset + 1, value >> 8, true);\n return offset + 3;\n }\n};\n/**\n * 24-bit signed integer, Big Endian byte order\n */\nexport const INT24_BE = {\n len: 3,\n get(array, offset) {\n const unsigned = UINT24_BE.get(array, offset);\n return unsigned > 0x7fffff ? unsigned - 0x1000000 : unsigned;\n },\n put(array, offset, value) {\n const dataView = dv(array);\n dataView.setUint16(offset, value >> 8);\n dataView.setUint8(offset + 2, value & 0xff);\n return offset + 3;\n }\n};\n/**\n * 32-bit signed integer, Big Endian byte order\n */\nexport const INT32_BE = {\n len: 4,\n get(array, offset) {\n return dv(array).getInt32(offset);\n },\n put(array, offset, value) {\n dv(array).setInt32(offset, value);\n return offset + 4;\n }\n};\n/**\n * 32-bit signed integer, Big Endian byte order\n */\nexport const INT32_LE = {\n len: 4,\n get(array, offset) {\n return dv(array).getInt32(offset, true);\n },\n put(array, offset, value) {\n dv(array).setInt32(offset, value, true);\n return offset + 4;\n }\n};\n/**\n * 64-bit unsigned integer, Little Endian byte order\n */\nexport const UINT64_LE = {\n len: 8,\n get(array, offset) {\n return dv(array).getBigUint64(offset, true);\n },\n put(array, offset, value) {\n dv(array).setBigUint64(offset, value, true);\n return offset + 8;\n }\n};\n/**\n * 64-bit signed integer, Little Endian byte order\n */\nexport const INT64_LE = {\n len: 8,\n get(array, offset) {\n return dv(array).getBigInt64(offset, true);\n },\n put(array, offset, value) {\n dv(array).setBigInt64(offset, value, true);\n return offset + 8;\n }\n};\n/**\n * 64-bit unsigned integer, Big Endian byte order\n */\nexport const UINT64_BE = {\n len: 8,\n get(array, offset) {\n return dv(array).getBigUint64(offset);\n },\n put(array, offset, value) {\n dv(array).setBigUint64(offset, value);\n return offset + 8;\n }\n};\n/**\n * 64-bit signed integer, Big Endian byte order\n */\nexport const INT64_BE = {\n len: 8,\n get(array, offset) {\n return dv(array).getBigInt64(offset);\n },\n put(array, offset, value) {\n dv(array).setBigInt64(offset, value);\n return offset + 8;\n }\n};\n/**\n * IEEE 754 16-bit (half precision) float, big endian\n */\nexport const Float16_BE = {\n len: 2,\n get(dataView, offset) {\n return ieee754.read(dataView, offset, false, 10, this.len);\n },\n put(dataView, offset, value) {\n ieee754.write(dataView, value, offset, false, 10, this.len);\n return offset + this.len;\n }\n};\n/**\n * IEEE 754 16-bit (half precision) float, little endian\n */\nexport const Float16_LE = {\n len: 2,\n get(array, offset) {\n return ieee754.read(array, offset, true, 10, this.len);\n },\n put(array, offset, value) {\n ieee754.write(array, value, offset, true, 10, this.len);\n return offset + this.len;\n }\n};\n/**\n * IEEE 754 32-bit (single precision) float, big endian\n */\nexport const Float32_BE = {\n len: 4,\n get(array, offset) {\n return dv(array).getFloat32(offset);\n },\n put(array, offset, value) {\n dv(array).setFloat32(offset, value);\n return offset + 4;\n }\n};\n/**\n * IEEE 754 32-bit (single precision) float, little endian\n */\nexport const Float32_LE = {\n len: 4,\n get(array, offset) {\n return dv(array).getFloat32(offset, true);\n },\n put(array, offset, value) {\n dv(array).setFloat32(offset, value, true);\n return offset + 4;\n }\n};\n/**\n * IEEE 754 64-bit (double precision) float, big endian\n */\nexport const Float64_BE = {\n len: 8,\n get(array, offset) {\n return dv(array).getFloat64(offset);\n },\n put(array, offset, value) {\n dv(array).setFloat64(offset, value);\n return offset + 8;\n }\n};\n/**\n * IEEE 754 64-bit (double precision) float, little endian\n */\nexport const Float64_LE = {\n len: 8,\n get(array, offset) {\n return dv(array).getFloat64(offset, true);\n },\n put(array, offset, value) {\n dv(array).setFloat64(offset, value, true);\n return offset + 8;\n }\n};\n/**\n * IEEE 754 80-bit (extended precision) float, big endian\n */\nexport const Float80_BE = {\n len: 10,\n get(array, offset) {\n return ieee754.read(array, offset, false, 63, this.len);\n },\n put(array, offset, value) {\n ieee754.write(array, value, offset, false, 63, this.len);\n return offset + this.len;\n }\n};\n/**\n * IEEE 754 80-bit (extended precision) float, little endian\n */\nexport const Float80_LE = {\n len: 10,\n get(array, offset) {\n return ieee754.read(array, offset, true, 63, this.len);\n },\n put(array, offset, value) {\n ieee754.write(array, value, offset, true, 63, this.len);\n return offset + this.len;\n }\n};\n/**\n * Ignore a given number of bytes\n */\nexport class IgnoreType {\n /**\n * @param len number of bytes to ignore\n */\n constructor(len) {\n this.len = len;\n }\n // ToDo: don't read, but skip data\n get(_array, _off) {\n }\n}\nexport class Uint8ArrayType {\n constructor(len) {\n this.len = len;\n }\n get(array, offset) {\n return array.subarray(offset, offset + this.len);\n }\n}\n/**\n * Consume a fixed number of bytes from the stream and return a string with a specified encoding.\n * Supports all encodings supported by TextDecoder, plus 'windows-1252'.\n */\nexport class StringType {\n constructor(len, encoding) {\n this.len = len;\n this.encoding = encoding;\n }\n get(data, offset = 0) {\n const bytes = data.subarray(offset, offset + this.len);\n return textDecode(bytes, this.encoding);\n }\n}\n/**\n * ANSI Latin 1 String using Windows-1252 (Code Page 1252)\n * Windows-1252 is a superset of ISO 8859-1 / Latin-1.\n */\nexport class AnsiStringType extends StringType {\n constructor(len) {\n super(len, 'windows-1252');\n }\n}\n","export const defaultMessages = 'End-Of-Stream';\n/**\n * Thrown on read operation of the end of file or stream has been reached\n */\nexport class EndOfStreamError extends Error {\n constructor() {\n super(defaultMessages);\n this.name = \"EndOfStreamError\";\n }\n}\nexport class AbortError extends Error {\n constructor(message = \"The operation was aborted\") {\n super(message);\n this.name = \"AbortError\";\n }\n}\n","import { EndOfStreamError, AbortError } from \"./Errors.js\";\nexport class AbstractStreamReader {\n constructor() {\n this.endOfStream = false;\n this.interrupted = false;\n /**\n * Store peeked data\n * @type {Array}\n */\n this.peekQueue = [];\n }\n async peek(uint8Array, mayBeLess = false) {\n const bytesRead = await this.read(uint8Array, mayBeLess);\n this.peekQueue.push(uint8Array.subarray(0, bytesRead)); // Put read data back to peek buffer\n return bytesRead;\n }\n async read(buffer, mayBeLess = false) {\n if (buffer.length === 0) {\n return 0;\n }\n let bytesRead = this.readFromPeekBuffer(buffer);\n if (!this.endOfStream) {\n bytesRead += await this.readRemainderFromStream(buffer.subarray(bytesRead), mayBeLess);\n }\n if (bytesRead === 0 && !mayBeLess) {\n throw new EndOfStreamError();\n }\n return bytesRead;\n }\n /**\n * Read chunk from stream\n * @param buffer - Target Uint8Array (or Buffer) to store data read from stream in\n * @returns Number of bytes read\n */\n readFromPeekBuffer(buffer) {\n let remaining = buffer.length;\n let bytesRead = 0;\n // consume peeked data first\n while (this.peekQueue.length > 0 && remaining > 0) {\n const peekData = this.peekQueue.pop(); // Front of queue\n if (!peekData)\n throw new Error('peekData should be defined');\n const lenCopy = Math.min(peekData.length, remaining);\n buffer.set(peekData.subarray(0, lenCopy), bytesRead);\n bytesRead += lenCopy;\n remaining -= lenCopy;\n if (lenCopy < peekData.length) {\n // remainder back to queue\n this.peekQueue.push(peekData.subarray(lenCopy));\n }\n }\n return bytesRead;\n }\n async readRemainderFromStream(buffer, mayBeLess) {\n let bytesRead = 0;\n // Continue reading from stream if required\n while (bytesRead < buffer.length && !this.endOfStream) {\n if (this.interrupted) {\n throw new AbortError();\n }\n const chunkLen = await this.readFromStream(buffer.subarray(bytesRead), mayBeLess);\n if (chunkLen === 0)\n break;\n bytesRead += chunkLen;\n }\n if (!mayBeLess && bytesRead < buffer.length) {\n throw new EndOfStreamError();\n }\n return bytesRead;\n }\n}\n","import { AbstractStreamReader } from \"./AbstractStreamReader.js\";\nexport class WebStreamReader extends AbstractStreamReader {\n constructor(reader) {\n super();\n this.reader = reader;\n }\n async abort() {\n return this.close();\n }\n async close() {\n this.reader.releaseLock();\n }\n}\n","import { WebStreamReader } from './WebStreamReader.js';\n/**\n * Read from a WebStream using a BYOB reader\n * Reference: https://nodejs.org/api/webstreams.html#class-readablestreambyobreader\n */\nexport class WebStreamByobReader extends WebStreamReader {\n /**\n * Read from stream\n * @param buffer - Target Uint8Array (or Buffer) to store data read from stream in\n * @param mayBeLess - If true, may fill the buffer partially\n * @protected Bytes read\n */\n async readFromStream(buffer, mayBeLess) {\n if (buffer.length === 0)\n return 0;\n // @ts-ignore\n const result = await this.reader.read(new Uint8Array(buffer.length), { min: mayBeLess ? undefined : buffer.length });\n if (result.done) {\n this.endOfStream = result.done;\n }\n if (result.value) {\n buffer.set(result.value);\n return result.value.length;\n }\n return 0;\n }\n}\n","import { EndOfStreamError } from './Errors.js';\nimport { AbstractStreamReader } from \"./AbstractStreamReader.js\";\nexport class WebStreamDefaultReader extends AbstractStreamReader {\n constructor(reader) {\n super();\n this.reader = reader;\n this.buffer = null; // Internal buffer to store excess data\n }\n /**\n * Copy chunk to target, and store the remainder in this.buffer\n */\n writeChunk(target, chunk) {\n const written = Math.min(chunk.length, target.length);\n target.set(chunk.subarray(0, written));\n // Adjust the remainder of the buffer\n if (written < chunk.length) {\n this.buffer = chunk.subarray(written);\n }\n else {\n this.buffer = null;\n }\n return written;\n }\n /**\n * Read from stream\n * @param buffer - Target Uint8Array (or Buffer) to store data read from stream in\n * @param mayBeLess - If true, may fill the buffer partially\n * @protected Bytes read\n */\n async readFromStream(buffer, mayBeLess) {\n if (buffer.length === 0)\n return 0;\n let totalBytesRead = 0;\n // Serve from the internal buffer first\n if (this.buffer) {\n totalBytesRead += this.writeChunk(buffer, this.buffer);\n }\n // Continue reading from the stream if more data is needed\n while (totalBytesRead < buffer.length && !this.endOfStream) {\n const result = await this.reader.read();\n if (result.done) {\n this.endOfStream = true;\n break;\n }\n if (result.value) {\n totalBytesRead += this.writeChunk(buffer.subarray(totalBytesRead), result.value);\n }\n }\n if (!mayBeLess && totalBytesRead === 0 && this.endOfStream) {\n throw new EndOfStreamError();\n }\n return totalBytesRead;\n }\n abort() {\n this.interrupted = true;\n return this.reader.cancel();\n }\n async close() {\n await this.abort();\n this.reader.releaseLock();\n }\n}\n","import { WebStreamByobReader } from './WebStreamByobReader.js';\nimport { WebStreamDefaultReader } from './WebStreamDefaultReader.js';\nexport function makeWebStreamReader(stream) {\n try {\n const reader = stream.getReader({ mode: \"byob\" });\n if (reader instanceof ReadableStreamDefaultReader) {\n // Fallback to default reader in case `mode: byob` is ignored\n return new WebStreamDefaultReader(reader);\n }\n return new WebStreamByobReader(reader);\n }\n catch (error) {\n if (error instanceof TypeError) {\n // Fallback to default reader in case `mode: byob` rejected by a `TypeError`\n return new WebStreamDefaultReader(stream.getReader());\n }\n throw error;\n }\n}\n","import { EndOfStreamError } from './stream/index.js';\n/**\n * Core tokenizer\n */\nexport class AbstractTokenizer {\n /**\n * Constructor\n * @param options Tokenizer options\n * @protected\n */\n constructor(options) {\n this.numBuffer = new Uint8Array(8);\n /**\n * Tokenizer-stream position\n */\n this.position = 0;\n this.onClose = options?.onClose;\n if (options?.abortSignal) {\n options.abortSignal.addEventListener('abort', () => {\n this.abort();\n });\n }\n }\n /**\n * Read a token from the tokenizer-stream\n * @param token - The token to read\n * @param position - If provided, the desired position in the tokenizer-stream\n * @returns Promise with token data\n */\n async readToken(token, position = this.position) {\n const uint8Array = new Uint8Array(token.len);\n const len = await this.readBuffer(uint8Array, { position });\n if (len < token.len)\n throw new EndOfStreamError();\n return token.get(uint8Array, 0);\n }\n /**\n * Peek a token from the tokenizer-stream.\n * @param token - Token to peek from the tokenizer-stream.\n * @param position - Offset where to begin reading within the file. If position is null, data will be read from the current file position.\n * @returns Promise with token data\n */\n async peekToken(token, position = this.position) {\n const uint8Array = new Uint8Array(token.len);\n const len = await this.peekBuffer(uint8Array, { position });\n if (len < token.len)\n throw new EndOfStreamError();\n return token.get(uint8Array, 0);\n }\n /**\n * Read a numeric token from the stream\n * @param token - Numeric token\n * @returns Promise with number\n */\n async readNumber(token) {\n const len = await this.readBuffer(this.numBuffer, { length: token.len });\n if (len < token.len)\n throw new EndOfStreamError();\n return token.get(this.numBuffer, 0);\n }\n /**\n * Read a numeric token from the stream\n * @param token - Numeric token\n * @returns Promise with number\n */\n async peekNumber(token) {\n const len = await this.peekBuffer(this.numBuffer, { length: token.len });\n if (len < token.len)\n throw new EndOfStreamError();\n return token.get(this.numBuffer, 0);\n }\n /**\n * Ignore number of bytes, advances the pointer in under tokenizer-stream.\n * @param length - Number of bytes to ignore\n * @return resolves the number of bytes ignored, equals length if this available, otherwise the number of bytes available\n */\n async ignore(length) {\n if (this.fileInfo.size !== undefined) {\n const bytesLeft = this.fileInfo.size - this.position;\n if (length > bytesLeft) {\n this.position += bytesLeft;\n return bytesLeft;\n }\n }\n this.position += length;\n return length;\n }\n async close() {\n await this.abort();\n await this.onClose?.();\n }\n normalizeOptions(uint8Array, options) {\n if (!this.supportsRandomAccess() && options && options.position !== undefined && options.position < this.position) {\n throw new Error('`options.position` must be equal or greater than `tokenizer.position`');\n }\n return {\n ...{\n mayBeLess: false,\n offset: 0,\n length: uint8Array.length,\n position: this.position\n }, ...options\n };\n }\n abort() {\n return Promise.resolve(); // Ignore abort signal\n }\n}\n","import { AbstractTokenizer } from './AbstractTokenizer.js';\nimport { EndOfStreamError } from './stream/index.js';\nconst maxBufferSize = 256000;\nexport class ReadStreamTokenizer extends AbstractTokenizer {\n /**\n * Constructor\n * @param streamReader stream-reader to read from\n * @param options Tokenizer options\n */\n constructor(streamReader, options) {\n super(options);\n this.streamReader = streamReader;\n this.fileInfo = options?.fileInfo ?? {};\n }\n /**\n * Read buffer from tokenizer\n * @param uint8Array - Target Uint8Array to fill with data read from the tokenizer-stream\n * @param options - Read behaviour options\n * @returns Promise with number of bytes read\n */\n async readBuffer(uint8Array, options) {\n const normOptions = this.normalizeOptions(uint8Array, options);\n const skipBytes = normOptions.position - this.position;\n if (skipBytes > 0) {\n await this.ignore(skipBytes);\n return this.readBuffer(uint8Array, options);\n }\n if (skipBytes < 0) {\n throw new Error('`options.position` must be equal or greater than `tokenizer.position`');\n }\n if (normOptions.length === 0) {\n return 0;\n }\n const bytesRead = await this.streamReader.read(uint8Array.subarray(0, normOptions.length), normOptions.mayBeLess);\n this.position += bytesRead;\n if ((!options || !options.mayBeLess) && bytesRead < normOptions.length) {\n throw new EndOfStreamError();\n }\n return bytesRead;\n }\n /**\n * Peek (read ahead) buffer from tokenizer\n * @param uint8Array - Uint8Array (or Buffer) to write data to\n * @param options - Read behaviour options\n * @returns Promise with number of bytes peeked\n */\n async peekBuffer(uint8Array, options) {\n const normOptions = this.normalizeOptions(uint8Array, options);\n let bytesRead = 0;\n if (normOptions.position) {\n const skipBytes = normOptions.position - this.position;\n if (skipBytes > 0) {\n const skipBuffer = new Uint8Array(normOptions.length + skipBytes);\n bytesRead = await this.peekBuffer(skipBuffer, { mayBeLess: normOptions.mayBeLess });\n uint8Array.set(skipBuffer.subarray(skipBytes));\n return bytesRead - skipBytes;\n }\n if (skipBytes < 0) {\n throw new Error('Cannot peek from a negative offset in a stream');\n }\n }\n if (normOptions.length > 0) {\n try {\n bytesRead = await this.streamReader.peek(uint8Array.subarray(0, normOptions.length), normOptions.mayBeLess);\n }\n catch (err) {\n if (options?.mayBeLess && err instanceof EndOfStreamError) {\n return 0;\n }\n throw err;\n }\n if ((!normOptions.mayBeLess) && bytesRead < normOptions.length) {\n throw new EndOfStreamError();\n }\n }\n return bytesRead;\n }\n async ignore(length) {\n // debug(`ignore ${this.position}...${this.position + length - 1}`);\n const bufSize = Math.min(maxBufferSize, length);\n const buf = new Uint8Array(bufSize);\n let totBytesRead = 0;\n while (totBytesRead < length) {\n const remaining = length - totBytesRead;\n const bytesRead = await this.readBuffer(buf, { length: Math.min(bufSize, remaining) });\n if (bytesRead < 0) {\n return bytesRead;\n }\n totBytesRead += bytesRead;\n }\n return totBytesRead;\n }\n abort() {\n return this.streamReader.abort();\n }\n async close() {\n return this.streamReader.close();\n }\n supportsRandomAccess() {\n return false;\n }\n}\n","import { EndOfStreamError } from './stream/index.js';\nimport { AbstractTokenizer } from './AbstractTokenizer.js';\nexport class BufferTokenizer extends AbstractTokenizer {\n /**\n * Construct BufferTokenizer\n * @param uint8Array - Uint8Array to tokenize\n * @param options Tokenizer options\n */\n constructor(uint8Array, options) {\n super(options);\n this.uint8Array = uint8Array;\n this.fileInfo = { ...options?.fileInfo ?? {}, ...{ size: uint8Array.length } };\n }\n /**\n * Read buffer from tokenizer\n * @param uint8Array - Uint8Array to tokenize\n * @param options - Read behaviour options\n * @returns {Promise<number>}\n */\n async readBuffer(uint8Array, options) {\n if (options?.position) {\n this.position = options.position;\n }\n const bytesRead = await this.peekBuffer(uint8Array, options);\n this.position += bytesRead;\n return bytesRead;\n }\n /**\n * Peek (read ahead) buffer from tokenizer\n * @param uint8Array\n * @param options - Read behaviour options\n * @returns {Promise<number>}\n */\n async peekBuffer(uint8Array, options) {\n const normOptions = this.normalizeOptions(uint8Array, options);\n const bytes2read = Math.min(this.uint8Array.length - normOptions.position, normOptions.length);\n if ((!normOptions.mayBeLess) && bytes2read < normOptions.length) {\n throw new EndOfStreamError();\n }\n uint8Array.set(this.uint8Array.subarray(normOptions.position, normOptions.position + bytes2read));\n return bytes2read;\n }\n close() {\n return super.close();\n }\n supportsRandomAccess() {\n return true;\n }\n setPosition(position) {\n this.position = position;\n }\n}\n","import { EndOfStreamError } from './stream/index.js';\nimport { AbstractTokenizer } from './AbstractTokenizer.js';\nexport class BlobTokenizer extends AbstractTokenizer {\n /**\n * Construct BufferTokenizer\n * @param blob - Uint8Array to tokenize\n * @param options Tokenizer options\n */\n constructor(blob, options) {\n super(options);\n this.blob = blob;\n this.fileInfo = { ...options?.fileInfo ?? {}, ...{ size: blob.size, mimeType: blob.type } };\n }\n /**\n * Read buffer from tokenizer\n * @param uint8Array - Uint8Array to tokenize\n * @param options - Read behaviour options\n * @returns {Promise<number>}\n */\n async readBuffer(uint8Array, options) {\n if (options?.position) {\n this.position = options.position;\n }\n const bytesRead = await this.peekBuffer(uint8Array, options);\n this.position += bytesRead;\n return bytesRead;\n }\n /**\n * Peek (read ahead) buffer from tokenizer\n * @param buffer\n * @param options - Read behaviour options\n * @returns {Promise<number>}\n */\n async peekBuffer(buffer, options) {\n const normOptions = this.normalizeOptions(buffer, options);\n const bytes2read = Math.min(this.blob.size - normOptions.position, normOptions.length);\n if ((!normOptions.mayBeLess) && bytes2read < normOptions.length) {\n throw new EndOfStreamError();\n }\n const arrayBuffer = await this.blob.slice(normOptions.position, normOptions.position + bytes2read).arrayBuffer();\n buffer.set(new Uint8Array(arrayBuffer));\n return bytes2read;\n }\n close() {\n return super.close();\n }\n supportsRandomAccess() {\n return true;\n }\n setPosition(position) {\n this.position = position;\n }\n}\n","import { StreamReader, makeWebStreamReader } from './stream/index.js';\nimport { ReadStreamTokenizer } from './ReadStreamTokenizer.js';\nimport { BufferTokenizer } from './BufferTokenizer.js';\nimport { BlobTokenizer } from './BlobTokenizer.js';\nexport { EndOfStreamError, AbortError } from './stream/index.js';\nexport { AbstractTokenizer } from './AbstractTokenizer.js';\n/**\n * Construct ReadStreamTokenizer from given Stream.\n * Will set fileSize, if provided given Stream has set the .path property/\n * @param stream - Read from Node.js Stream.Readable\n * @param options - Tokenizer options\n * @returns ReadStreamTokenizer\n */\nexport function fromStream(stream, options) {\n const streamReader = new StreamReader(stream);\n const _options = options ?? {};\n const chainedClose = _options.onClose;\n _options.onClose = async () => {\n await streamReader.close();\n if (chainedClose) {\n return chainedClose();\n }\n };\n return new ReadStreamTokenizer(streamReader, _options);\n}\n/**\n * Construct ReadStreamTokenizer from given ReadableStream (WebStream API).\n * Will set fileSize, if provided given Stream has set the .path property/\n * @param webStream - Read from Node.js Stream.Readable (must be a byte stream)\n * @param options - Tokenizer options\n * @returns ReadStreamTokenizer\n */\nexport function fromWebStream(webStream, options) {\n const webStreamReader = makeWebStreamReader(webStream);\n const _options = options ?? {};\n const chainedClose = _options.onClose;\n _options.onClose = async () => {\n await webStreamReader.close();\n if (chainedClose) {\n return chainedClose();\n }\n };\n return new ReadStreamTokenizer(webStreamReader, _options);\n}\n/**\n * Construct ReadStreamTokenizer from given Buffer.\n * @param uint8Array - Uint8Array to tokenize\n * @param options - Tokenizer options\n * @returns BufferTokenizer\n */\nexport function fromBuffer(uint8Array, options) {\n return new BufferTokenizer(uint8Array, options);\n}\n/**\n * Construct ReadStreamTokenizer from given Blob.\n * @param blob - Uint8Array to tokenize\n * @param options - Tokenizer options\n * @returns BufferTokenizer\n */\nexport function fromBlob(blob, options) {\n return new BlobTokenizer(blob, options);\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","/**\n * Ref https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT\n */\nimport { UINT16_LE, UINT32_LE } from \"token-types\";\nexport const Signature = {\n LocalFileHeader: 0x04034b50,\n DataDescriptor: 0x08074b50,\n CentralFileHeader: 0x02014b50,\n EndOfCentralDirectory: 0x06054b50\n};\nexport const DataDescriptor = {\n get(array) {\n return {\n signature: UINT32_LE.get(array, 0),\n compressedSize: UINT32_LE.get(array, 8),\n uncompressedSize: UINT32_LE.get(array, 12),\n };\n }, len: 16\n};\n/**\n * First part of the ZIP Local File Header\n * Offset | Bytes| Description\n * -------|------+-------------------------------------------------------------------\n * 0 | 4 | Signature (0x04034b50)\n * 4 | 2 | Minimum version needed to extract\n * 6 | 2 | Bit flag\n * 8 | 2 | Compression method\n * 10 | 2 | File last modification time (MS-DOS format)\n * 12 | 2 | File last modification date (MS-DOS format)\n * 14 | 4 | CRC-32 of uncompressed data\n * 18 | 4 | Compressed size\n * 22 | 4 | Uncompressed size\n * 26 | 2 | File name length (n)\n * 28 | 2 | Extra field length (m)\n * 30 | n | File name\n * 30 + n | m | Extra field\n */\nexport const LocalFileHeaderToken = {\n get(array) {\n const flags = UINT16_LE.get(array, 6);\n return {\n signature: UINT32_LE.get(array, 0),\n minVersion: UINT16_LE.get(array, 4),\n dataDescriptor: !!(flags & 0x0008),\n compressedMethod: UINT16_LE.get(array, 8),\n compressedSize: UINT32_LE.get(array, 18),\n uncompressedSize: UINT32_LE.get(array, 22),\n filenameLength: UINT16_LE.get(array, 26),\n extraFieldLength: UINT16_LE.get(array, 28),\n filename: null\n };\n }, len: 30\n};\n/**\n * 4.3.16 End of central directory record:\n * end of central dir signature (0x06064b50) 4 bytes\n * number of this disk 2 bytes\n * number of the disk with the start of the central directory 2 bytes\n * total number of entries in the central directory on this disk 2 bytes\n * total number of entries in the size of the central directory 2 bytes\n * sizeOfTheCentralDirectory 4 bytes\n * offset of start of central directory with respect to the starting disk number 4 bytes\n * .ZIP file comment length 2 bytes\n * .ZIP file comment (variable size)\n */\nexport const EndOfCentralDirectoryRecordToken = {\n get(array) {\n return {\n signature: UINT32_LE.get(array, 0),\n nrOfThisDisk: UINT16_LE.get(array, 4),\n nrOfThisDiskWithTheStart: UINT16_LE.get(array, 6),\n nrOfEntriesOnThisDisk: UINT16_LE.get(array, 8),\n nrOfEntriesOfSize: UINT16_LE.get(array, 10),\n sizeOfCd: UINT32_LE.get(array, 12),\n offsetOfStartOfCd: UINT32_LE.get(array, 16),\n zipFileCommentLength: UINT16_LE.get(array, 20),\n };\n }, len: 22\n};\n/**\n * File header:\n * central file header signature 4 bytes 0 (0x02014b50)\n * version made by 2 bytes 4\n * version needed to extract 2 bytes 6\n * general purpose bit flag 2 bytes 8\n * compression method 2 bytes 10\n * last mod file time 2 bytes 12\n * last mod file date 2 bytes 14\n * crc-32 4 bytes 16\n * compressed size 4 bytes 20\n * uncompressed size 4 bytes 24\n * file name length 2 bytes 28\n * extra field length 2 bytes 30\n * file comment length 2 bytes 32\n * disk number start 2 bytes 34\n * internal file attributes 2 bytes 36\n * external file attributes 4 bytes 38\n * relative offset of local header 4 bytes 42\n */\nexport const FileHeader = {\n get(array) {\n const flags = UINT16_LE.get(array, 8);\n return {\n signature: UINT32_LE.get(array, 0),\n minVersion: UINT16_LE.get(array, 6),\n dataDescriptor: !!(flags & 0x0008),\n compressedMethod: UINT16_LE.get(array, 10),\n compressedSize: UINT32_LE.get(array, 20),\n uncompressedSize: UINT32_LE.get(array, 24),\n filenameLength: UINT16_LE.get(array, 28),\n extraFieldLength: UINT16_LE.get(array, 30),\n fileCommentLength: UINT16_LE.get(array, 32),\n relativeOffsetOfLocalHeader: UINT32_LE.get(array, 42),\n filename: null\n };\n }, len: 46\n};\n","import { StringType, UINT32_LE } from 'token-types';\nimport initDebug from 'debug';\nimport { DataDescriptor, EndOfCentralDirectoryRecordToken, FileHeader, LocalFileHeaderToken, Signature } from \"./ZipToken.js\";\nfunction signatureToArray(signature) {\n const signatureBytes = new Uint8Array(UINT32_LE.len);\n UINT32_LE.put(signatureBytes, 0, signature);\n return signatureBytes;\n}\nconst debug = initDebug('tokenizer:inflate');\nconst syncBufferSize = 256 * 1024;\nconst ddSignatureArray = signatureToArray(Signature.DataDescriptor);\nconst eocdSignatureBytes = signatureToArray(Signature.EndOfCentralDirectory);\nexport class ZipHandler {\n constructor(tokenizer) {\n this.tokenizer = tokenizer;\n this.syncBuffer = new Uint8Array(syncBufferSize);\n }\n async isZip() {\n return await this.peekSignature() === Signature.LocalFileHeader;\n }\n peekSignature() {\n return this.tokenizer.peekToken(UINT32_LE);\n }\n async findEndOfCentralDirectoryLocator() {\n const randomReadTokenizer = this.tokenizer;\n const chunkLength = Math.min(16 * 1024, randomReadTokenizer.fileInfo.size);\n const buffer = this.syncBuffer.subarray(0, chunkLength);\n await this.tokenizer.readBuffer(buffer, { position: randomReadTokenizer.fileInfo.size - chunkLength });\n // Search the buffer from end to beginning for EOCD signature\n // const signature = 0x06054b50;\n for (let i = buffer.length - 4; i >= 0; i--) {\n // Compare 4 bytes directly without calling readUInt32LE\n if (buffer[i] === eocdSignatureBytes[0] &&\n buffer[i + 1] === eocdSignatureBytes[1] &&\n buffer[i + 2] === eocdSignatureBytes[2] &&\n buffer[i + 3] === eocdSignatureBytes[3]) {\n return randomReadTokenizer.fileInfo.size - chunkLength + i;\n }\n }\n return -1;\n }\n async readCentralDirectory() {\n if (!this.tokenizer.supportsRandomAccess()) {\n debug('Cannot reading central-directory without random-read support');\n return;\n }\n debug('Reading central-directory...');\n const pos = this.tokenizer.position;\n const offset = await this.findEndOfCentralDirectoryLocator();\n if (offset > 0) {\n debug('Central-directory 32-bit signature found');\n const eocdHeader = await this.tokenizer.readToken(EndOfCentralDirectoryRecordToken, offset);\n const files = [];\n this.tokenizer.setPosition(eocdHeader.offsetOfStartOfCd);\n for (let n = 0; n < eocdHeader.nrOfEntriesOfSize; ++n) {\n const entry = await this.tokenizer.readToken(FileHeader);\n if (entry.signature !== Signature.CentralFileHeader) {\n throw new Error('Expected Central-File-Header signature');\n }\n entry.filename = await this.tokenizer.readToken(new StringType(entry.filenameLength, 'utf-8'));\n await this.tokenizer.ignore(entry.extraFieldLength);\n await this.tokenizer.ignore(entry.fileCommentLength);\n files.push(entry);\n debug(`Add central-directory file-entry: n=${n + 1}/${files.length}: filename=${files[n].filename}`);\n }\n this.tokenizer.setPosition(pos);\n return files;\n }\n this.tokenizer.setPosition(pos);\n }\n async unzip(fileCb) {\n const entries = await this.readCentralDirectory();\n if (entries) {\n // Use Central Directory to iterate over files\n return this.iterateOverCentralDirectory(entries, fileCb);\n }\n // Scan Zip files for local-file-header\n let stop = false;\n do {\n const zipHeader = await this.readLocalFileHeader();\n if (!zipHeader)\n break;\n const next = fileCb(zipHeader);\n stop = !!next.stop;\n let fileData;\n await this.tokenizer.ignore(zipHeader.extraFieldLength);\n if (zipHeader.dataDescriptor && zipHeader.compressedSize === 0) {\n const chunks = [];\n let len = syncBufferSize;\n debug('Compressed-file-size unknown, scanning for next data-descriptor-signature....');\n let nextHeaderIndex = -1;\n while (nextHeaderIndex < 0 && len === syncBufferSize) {\n len = await this.tokenizer.peekBuffer(this.syncBuffer, { mayBeLess: true });\n nextHeaderIndex = indexOf(this.syncBuffer.subarray(0, len), ddSignatureArray);\n const size = nextHeaderIndex >= 0 ? nextHeaderIndex : len;\n if (next.handler) {\n const data = new Uint8Array(size);\n await this.tokenizer.readBuffer(data);\n chunks.push(data);\n }\n else {\n // Move position to the next header if found, skip the whole buffer otherwise\n await this.tokenizer.ignore(size);\n }\n }\n debug(`Found data-descriptor-signature at pos=${this.tokenizer.position}`);\n if (next.handler) {\n await this.inflate(zipHeader, mergeArrays(chunks), next.handler);\n }\n }\n else {\n if (next.handler) {\n debug(`Reading compressed-file-data: ${zipHeader.compressedSize} bytes`);\n fileData = new Uint8Array(zipHeader.compressedSize);\n await this.tokenizer.readBuffer(fileData);\n await this.inflate(zipHeader, fileData, next.handler);\n }\n else {\n debug(`Ignoring compressed-file-data: ${zipHeader.compressedSize} bytes`);\n await this.tokenizer.ignore(zipHeader.compressedSize);\n }\n }\n debug(`Reading data-descriptor at pos=${this.tokenizer.position}`);\n if (zipHeader.dataDescriptor) {\n // await this.tokenizer.ignore(DataDescriptor.len);\n const dataDescriptor = await this.tokenizer.readToken(DataDescriptor);\n if (dataDescriptor.signature !== 0x08074b50) {\n throw new Error(`Expected data-descriptor-signature at position ${this.tokenizer.position - DataDescriptor.len}`);\n }\n }\n } while (!stop);\n }\n async iterateOverCentralDirectory(entries, fileCb) {\n for (const fileHeader of entries) {\n const next = fileCb(fileHeader);\n if (next.handler) {\n this.tokenizer.setPosition(fileHeader.relativeOffsetOfLocalHeader);\n const zipHeader = await this.readLocalFileHeader();\n if (zipHeader) {\n await this.tokenizer.ignore(zipHeader.extraFieldLength);\n const fileData = new Uint8Array(fileHeader.compressedSize);\n await this.tokenizer.readBuffer(fileData);\n await this.inflate(zipHeader, fileData, next.handler);\n }\n }\n if (next.stop)\n break;\n }\n }\n async inflate(zipHeader, fileData, cb) {\n if (zipHeader.compressedMethod === 0) {\n // Stored (uncompressed)\n return cb(fileData);\n }\n if (zipHeader.compressedMethod !== 8) {\n throw new Error(`Unsupported ZIP compression method: ${zipHeader.compressedMethod}`);\n }\n debug(`Decompress filename=${zipHeader.filename}, compressed-size=${fileData.length}`);\n const uncompressedData = await ZipHandler.decompressDeflateRaw(fileData);\n return cb(uncompressedData);\n }\n static async decompressDeflateRaw(data) {\n // Wrap Uint8Array in a ReadableStream without copying\n const input = new ReadableStream({\n start(controller) {\n controller.enqueue(data);\n controller.close();\n }\n });\n const ds = new DecompressionStream(\"deflate-raw\");\n const output = input.pipeThrough(ds);\n try {\n // Collect decompressed bytes from the output stream\n const response = new Response(output);\n const buffer = await response.arrayBuffer();\n return new Uint8Array(buffer);\n }\n catch (err) {\n // Provide ZIP-specific error context\n const message = err instanceof Error\n ? `Failed to deflate ZIP entry: ${err.message}`\n : \"Unknown decompression error in ZIP entry\";\n throw new TypeError(message);\n }\n }\n async readLocalFileHeader() {\n const signature = await this.tokenizer.peekToken(UINT32_LE);\n if (signature === Signature.LocalFileHeader) {\n const header = await this.tokenizer.readToken(LocalFileHeaderToken);\n header.filename = await this.tokenizer.readToken(new StringType(header.filenameLength, 'utf-8'));\n return header;\n }\n if (signature === Signature.CentralFileHeader) {\n return false;\n }\n if (signature === 0xE011CFD0) {\n throw new Error('Encrypted ZIP');\n }\n throw new Error('Unexpected signature');\n }\n}\nfunction indexOf(buffer, portion) {\n const bufferLength = buffer.length;\n const portionLength = portion.length;\n // Return -1 if the portion is longer than the buffer\n if (portionLength > bufferLength)\n return -1;\n // Search for the portion in the buffer\n for (let i = 0; i <= bufferLength - portionLength; i++) {\n let found = true;\n for (let j = 0; j < portionLength; j++) {\n if (buffer[i + j] !== portion[j]) {\n found = false;\n break;\n }\n }\n if (found) {\n return i; // Return the starting offset\n }\n }\n return -1; // Not found\n}\nfunction mergeArrays(chunks) {\n // Concatenate chunks into a single Uint8Array\n const totalLength = chunks.reduce((acc, curr) => acc + curr.length, 0);\n const mergedArray = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of chunks) {\n mergedArray.set(chunk, offset);\n offset += chunk.length;\n }\n return mergedArray;\n}\n","export class GzipHandler {\n constructor(tokenizer) {\n this.tokenizer = tokenizer;\n }\n inflate() {\n const tokenizer = this.tokenizer;\n return new ReadableStream({\n async pull(controller) {\n const buffer = new Uint8Array(1024);\n const size = await tokenizer.readBuffer(buffer, { mayBeLess: true });\n if (size === 0) {\n controller.close();\n return;\n }\n controller.enqueue(buffer.subarray(0, size));\n }\n }).pipeThrough(new DecompressionStream(\"gzip\"));\n }\n}\n","const objectToString = Object.prototype.toString;\nconst uint8ArrayStringified = '[object Uint8Array]';\nconst arrayBufferStringified = '[object ArrayBuffer]';\n\nfunction isType(value, typeConstructor, typeStringified) {\n\tif (!value) {\n\t\treturn false;\n\t}\n\n\tif (value.constructor === typeConstructor) {\n\t\treturn true;\n\t}\n\n\treturn objectToString.call(value) === typeStringified;\n}\n\nexport function isUint8Array(value) {\n\treturn isType(value, Uint8Array, uint8ArrayStringified);\n}\n\nfunction isArrayBuffer(value) {\n\treturn isType(value, ArrayBuffer, arrayBufferStringified);\n}\n\nfunction isUint8ArrayOrArrayBuffer(value) {\n\treturn isUint8Array(value) || isArrayBuffer(value);\n}\n\nexport function assertUint8Array(value) {\n\tif (!isUint8Array(value)) {\n\t\tthrow new TypeError(`Expected \\`Uint8Array\\`, got \\`${typeof value}\\``);\n\t}\n}\n\nexport function assertUint8ArrayOrArrayBuffer(value) {\n\tif (!isUint8ArrayOrArrayBuffer(value)) {\n\t\tthrow new TypeError(`Expected \\`Uint8Array\\` or \\`ArrayBuffer\\`, got \\`${typeof value}\\``);\n\t}\n}\n\nexport function toUint8Array(value) {\n\tif (value instanceof ArrayBuffer) {\n\t\treturn new Uint8Array(value);\n\t}\n\n\tif (ArrayBuffer.isView(value)) {\n\t\treturn new Uint8Array(value.buffer, value.byteOffset, value.byteLength);\n\t}\n\n\tthrow new TypeError(`Unsupported value, got \\`${typeof value}\\`.`);\n}\n\nexport function concatUint8Arrays(arrays, totalLength) {\n\tif (arrays.length === 0) {\n\t\treturn new Uint8Array(0);\n\t}\n\n\ttotalLength ??= arrays.reduce((accumulator, currentValue) => accumulator + currentValue.length, 0);\n\n\tconst returnValue = new Uint8Array(totalLength);\n\n\tlet offset = 0;\n\tfor (const array of arrays) {\n\t\tassertUint8Array(array);\n\t\treturnValue.set(array, offset);\n\t\toffset += array.length;\n\t}\n\n\treturn returnValue;\n}\n\nexport function areUint8ArraysEqual(a, b) {\n\tassertUint8Array(a);\n\tassertUint8Array(b);\n\n\tif (a === b) {\n\t\treturn true;\n\t}\n\n\tif (a.length !== b.length) {\n\t\treturn false;\n\t}\n\n\t// eslint-disable-next-line unicorn/no-for-loop\n\tfor (let index = 0; index < a.length; index++) {\n\t\tif (a[index] !== b[index]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nexport function compareUint8Arrays(a, b) {\n\tassertUint8Array(a);\n\tassertUint8Array(b);\n\n\tconst length = Math.min(a.length, b.length);\n\n\tfor (let index = 0; index < length; index++) {\n\t\tconst diff = a[index] - b[index];\n\t\tif (diff !== 0) {\n\t\t\treturn Math.sign(diff);\n\t\t}\n\t}\n\n\t// At this point, all the compared elements are equal.\n\t// The shorter array should come first if the arrays are of different lengths.\n\treturn Math.sign(a.length - b.length);\n}\n\nconst cachedDecoders = {\n\tutf8: new globalThis.TextDecoder('utf8'),\n};\n\nexport function uint8ArrayToString(array, encoding = 'utf8') {\n\tassertUint8ArrayOrArrayBuffer(array);\n\tcachedDecoders[encoding] ??= new globalThis.TextDecoder(encoding);\n\treturn cachedDecoders[encoding].decode(array);\n}\n\nfunction assertString(value) {\n\tif (typeof value !== 'string') {\n\t\tthrow new TypeError(`Expected \\`string\\`, got \\`${typeof value}\\``);\n\t}\n}\n\nconst cachedEncoder = new globalThis.TextEncoder();\n\nexport function stringToUint8Array(string) {\n\tassertString(string);\n\treturn cachedEncoder.encode(string);\n}\n\nfunction base64ToBase64Url(base64) {\n\treturn base64.replaceAll('+', '-').replaceAll('/', '_').replace(/=+$/, '');\n}\n\nfunction base64UrlToBase64(base64url) {\n\tconst base64 = base64url.replaceAll('-', '+').replaceAll('_', '/');\n\tconst padding = (4 - (base64.length % 4)) % 4;\n\treturn base64 + '='.repeat(padding);\n}\n\n// Reference: https://phuoc.ng/collection/this-vs-that/concat-vs-push/\n// Important: Keep this value divisible by 3 so intermediate chunks produce no Base64 padding.\nconst MAX_BLOCK_SIZE = 65_535;\n\nexport function uint8ArrayToBase64(array, {urlSafe = false} = {}) {\n\tassertUint8Array(array);\n\n\tlet base64 = '';\n\n\tfor (let index = 0; index < array.length; index += MAX_BLOCK_SIZE) {\n\t\tconst chunk = array.subarray(index, index + MAX_BLOCK_SIZE);\n\t\t// Required as `btoa` and `atob` don't properly support Unicode: https://developer.mozilla.org/en-US/docs/Glossary/Base64#the_unicode_problem\n\t\tbase64 += globalThis.btoa(String.fromCodePoint.apply(undefined, chunk));\n\t}\n\n\treturn urlSafe ? base64ToBase64Url(base64) : base64;\n}\n\nexport function base64ToUint8Array(base64String) {\n\tassertString(base64String);\n\treturn Uint8Array.from(globalThis.atob(base64UrlToBase64(base64String)), x => x.codePointAt(0));\n}\n\nexport function stringToBase64(string, {urlSafe = false} = {}) {\n\tassertString(string);\n\treturn uint8ArrayToBase64(stringToUint8Array(string), {urlSafe});\n}\n\nexport function base64ToString(base64String) {\n\tassertString(base64String);\n\treturn uint8ArrayToString(base64ToUint8Array(base64String));\n}\n\nconst byteToHexLookupTable = Array.from({length: 256}, (_, index) => index.toString(16).padStart(2, '0'));\n\nexport function uint8ArrayToHex(array) {\n\tassertUint8Array(array);\n\n\t// Concatenating a string is faster than using an array.\n\tlet hexString = '';\n\n\t// eslint-disable-next-line unicorn/no-for-loop -- Max performance is critical.\n\tfor (let index = 0; index < array.length; index++) {\n\t\thexString += byteToHexLookupTable[array[index]];\n\t}\n\n\treturn hexString;\n}\n\nconst hexToDecimalLookupTable = {\n\t0: 0,\n\t1: 1,\n\t2: 2,\n\t3: 3,\n\t4: 4,\n\t5: 5,\n\t6: 6,\n\t7: 7,\n\t8: 8,\n\t9: 9,\n\ta: 10,\n\tb: 11,\n\tc: 12,\n\td: 13,\n\te: 14,\n\tf: 15,\n\tA: 10,\n\tB: 11,\n\tC: 12,\n\tD: 13,\n\tE: 14,\n\tF: 15,\n};\n\nexport function hexToUint8Array(hexString) {\n\tassertString(hexString);\n\n\tif (hexString.length % 2 !== 0) {\n\t\tthrow new Error('Invalid Hex string length.');\n\t}\n\n\tconst resultLength = hexString.length / 2;\n\tconst bytes = new Uint8Array(resultLength);\n\n\tfor (let index = 0; index < resultLength; index++) {\n\t\tconst highNibble = hexToDecimalLookupTable[hexString[index * 2]];\n\t\tconst lowNibble = hexToDecimalLookupTable[hexString[(index * 2) + 1]];\n\n\t\tif (highNibble === undefined || lowNibble === undefined) {\n\t\t\tthrow new Error(`Invalid Hex character encountered at position ${index * 2}`);\n\t\t}\n\n\t\tbytes[index] = (highNibble << 4) | lowNibble; // eslint-disable-line no-bitwise\n\t}\n\n\treturn bytes;\n}\n\n/**\n@param {DataView} view\n@returns {number}\n*/\nexport function getUintBE(view) {\n\tconst {byteLength} = view;\n\n\tif (byteLength === 6) {\n\t\treturn (view.getUint16(0) * (2 ** 32)) + view.getUint32(2);\n\t}\n\n\tif (byteLength === 5) {\n\t\treturn (view.getUint8(0) * (2 ** 32)) + view.getUint32(1);\n\t}\n\n\tif (byteLength === 4) {\n\t\treturn view.getUint32(0);\n\t}\n\n\tif (byteLength === 3) {\n\t\treturn (view.getUint8(0) * (2 ** 16)) + view.getUint16(1);\n\t}\n\n\tif (byteLength === 2) {\n\t\treturn view.getUint16(0);\n\t}\n\n\tif (byteLength === 1) {\n\t\treturn view.getUint8(0);\n\t}\n}\n\n/**\n@param {Uint8Array} array\n@param {Uint8Array} value\n@returns {number}\n*/\nexport function indexOf(array, value) {\n\tconst arrayLength = array.length;\n\tconst valueLength = value.length;\n\n\tif (valueLength === 0) {\n\t\treturn -1;\n\t}\n\n\tif (valueLength > arrayLength) {\n\t\treturn -1;\n\t}\n\n\tconst validOffsetLength = arrayLength - valueLength;\n\n\tfor (let index = 0; index <= validOffsetLength; index++) {\n\t\tlet isMatch = true;\n\t\tfor (let index2 = 0; index2 < valueLength; index2++) {\n\t\t\tif (array[index + index2] !== value[index2]) {\n\t\t\t\tisMatch = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (isMatch) {\n\t\t\treturn index;\n\t\t}\n\t}\n\n\treturn -1;\n}\n\n/**\n@param {Uint8Array} array\n@param {Uint8Array} value\n@returns {boolean}\n*/\nexport function includes(array, value) {\n\treturn indexOf(array, value) !== -1;\n}\n","import {StringType} from 'token-types';\n\nexport function stringToBytes(string, encoding) {\n\tif (encoding === 'utf-16le') {\n\t\tconst bytes = [];\n\t\tfor (let index = 0; index < string.length; index++) {\n\t\t\tconst code = string.charCodeAt(index); // eslint-disable-line unicorn/prefer-code-point\n\t\t\tbytes.push(code & 0xFF, (code >> 8) & 0xFF); // High byte\n\t\t}\n\n\t\treturn bytes;\n\t}\n\n\tif (encoding === 'utf-16be') {\n\t\tconst bytes = [];\n\t\tfor (let index = 0; index < string.length; index++) {\n\t\t\tconst code = string.charCodeAt(index); // eslint-disable-line unicorn/prefer-code-point\n\t\t\tbytes.push((code >> 8) & 0xFF, code & 0xFF); // Low byte\n\t\t}\n\n\t\treturn bytes;\n\t}\n\n\treturn [...string].map(character => character.charCodeAt(0)); // eslint-disable-line unicorn/prefer-code-point\n}\n\n/**\nChecks whether the TAR checksum is valid.\n\n@param {Uint8Array} arrayBuffer - The TAR header `[offset ... offset + 512]`.\n@param {number} offset - TAR header offset.\n@returns {boolean} `true` if the TAR checksum is valid, otherwise `false`.\n*/\nexport function tarHeaderChecksumMatches(arrayBuffer, offset = 0) {\n\tconst readSum = Number.parseInt(new StringType(6).get(arrayBuffer, 148).replace(/\\0.*$/, '').trim(), 8); // Read sum in header\n\tif (Number.isNaN(readSum)) {\n\t\treturn false;\n\t}\n\n\tlet sum = 8 * 0x20; // Initialize signed bit sum\n\n\tfor (let index = offset; index < offset + 148; index++) {\n\t\tsum += arrayBuffer[index];\n\t}\n\n\tfor (let index = offset + 156; index < offset + 512; index++) {\n\t\tsum += arrayBuffer[index];\n\t}\n\n\treturn readSum === sum;\n}\n\n/**\nID3 UINT32 sync-safe tokenizer token.\n28 bits (representing up to 256MB) integer, the msb is 0 to avoid \"false syncsignals\".\n*/\nexport const uint32SyncSafeToken = {\n\tget: (buffer, offset) => (buffer[offset + 3] & 0x7F) | ((buffer[offset + 2]) << 7) | ((buffer[offset + 1]) << 14) | ((buffer[offset]) << 21),\n\tlen: 4,\n};\n","export const extensions = [\n\t'jpg',\n\t'png',\n\t'apng',\n\t'gif',\n\t'webp',\n\t'flif',\n\t'xcf',\n\t'cr2',\n\t'cr3',\n\t'orf',\n\t'arw',\n\t'dng',\n\t'nef',\n\t'rw2',\n\t'raf',\n\t'tif',\n\t'bmp',\n\t'icns',\n\t'jxr',\n\t'psd',\n\t'indd',\n\t'zip',\n\t'tar',\n\t'rar',\n\t'gz',\n\t'bz2',\n\t'7z',\n\t'dmg',\n\t'mp4',\n\t'mid',\n\t'mkv',\n\t'webm',\n\t'mov',\n\t'avi',\n\t'mpg',\n\t'mp2',\n\t'mp3',\n\t'm4a',\n\t'oga',\n\t'ogg',\n\t'ogv',\n\t'opus',\n\t'flac',\n\t'wav',\n\t'spx',\n\t'amr',\n\t'pdf',\n\t'epub',\n\t'elf',\n\t'macho',\n\t'exe',\n\t'swf',\n\t'rtf',\n\t'wasm',\n\t'woff',\n\t'woff2',\n\t'eot',\n\t'ttf',\n\t'otf',\n\t'ttc',\n\t'ico',\n\t'flv',\n\t'ps',\n\t'xz',\n\t'sqlite',\n\t'nes',\n\t'crx',\n\t'xpi',\n\t'cab',\n\t'deb',\n\t'ar',\n\t'rpm',\n\t'Z',\n\t'lz',\n\t'cfb',\n\t'mxf',\n\t'mts',\n\t'blend',\n\t'bpg',\n\t'docx',\n\t'pptx',\n\t'xlsx',\n\t'3gp',\n\t'3g2',\n\t'j2c',\n\t'jp2',\n\t'jpm',\n\t'jpx',\n\t'mj2',\n\t'aif',\n\t'qcp',\n\t'odt',\n\t'ods',\n\t'odp',\n\t'xml',\n\t'mobi',\n\t'heic',\n\t'cur',\n\t'ktx',\n\t'ape',\n\t'wv',\n\t'dcm',\n\t'ics',\n\t'glb',\n\t'pcap',\n\t'dsf',\n\t'lnk',\n\t'alias',\n\t'voc',\n\t'ac3',\n\t'm4v',\n\t'm4p',\n\t'm4b',\n\t'f4v',\n\t'f4p',\n\t'f4b',\n\t'f4a',\n\t'mie',\n\t'asf',\n\t'ogm',\n\t'ogx',\n\t'mpc',\n\t'arrow',\n\t'shp',\n\t'aac',\n\t'mp1',\n\t'it',\n\t's3m',\n\t'xm',\n\t'skp',\n\t'avif',\n\t'eps',\n\t'lzh',\n\t'pgp',\n\t'asar',\n\t'stl',\n\t'chm',\n\t'3mf',\n\t'zst',\n\t'jxl',\n\t'vcf',\n\t'jls',\n\t'pst',\n\t'dwg',\n\t'parquet',\n\t'class',\n\t'arj',\n\t'cpio',\n\t'ace',\n\t'avro',\n\t'icc',\n\t'fbx',\n\t'vsdx',\n\t'vtt',\n\t'apk',\n\t'drc',\n\t'lz4',\n\t'potx',\n\t'xltx',\n\t'dotx',\n\t'xltm',\n\t'ott',\n\t'ots',\n\t'otp',\n\t'odg',\n\t'otg',\n\t'xlsm',\n\t'docm',\n\t'dotm',\n\t'potm',\n\t'pptm',\n\t'jar',\n\t'rm',\n\t'ppsm',\n\t'ppsx',\n\t'tar.gz',\n\t'reg',\n\t'dat',\n];\n\nexport const mimeTypes = [\n\t'image/jpeg',\n\t'image/png',\n\t'image/gif',\n\t'image/webp',\n\t'image/flif',\n\t'image/x-xcf',\n\t'image/x-canon-cr2',\n\t'image/x-canon-cr3',\n\t'image/tiff',\n\t'image/bmp',\n\t'image/vnd.ms-photo',\n\t'image/vnd.adobe.photoshop',\n\t'application/x-indesign',\n\t'application/epub+zip',\n\t'application/x-xpinstall',\n\t'application/vnd.ms-powerpoint.slideshow.macroenabled.12',\n\t'application/vnd.oasis.opendocument.text',\n\t'application/vnd.oasis.opendocument.spreadsheet',\n\t'application/vnd.oasis.opendocument.presentation',\n\t'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n\t'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n\t'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t'application/vnd.openxmlformats-officedocument.presentationml.slideshow',\n\t'application/zip',\n\t'application/x-tar',\n\t'application/x-rar-compressed',\n\t'application/gzip',\n\t'application/x-bzip2',\n\t'application/x-7z-compressed',\n\t'application/x-apple-diskimage',\n\t'application/vnd.apache.arrow.file',\n\t'video/mp4',\n\t'audio/midi',\n\t'video/matroska',\n\t'video/webm',\n\t'video/quicktime',\n\t'video/vnd.avi',\n\t'audio/wav',\n\t'audio/qcelp',\n\t'audio/x-ms-asf',\n\t'video/x-ms-asf',\n\t'application/vnd.ms-asf',\n\t'video/mpeg',\n\t'video/3gpp',\n\t'audio/mpeg',\n\t'audio/mp4', // RFC 4337\n\t'video/ogg',\n\t'audio/ogg',\n\t'audio/ogg; codecs=opus',\n\t'application/ogg',\n\t'audio/flac',\n\t'audio/ape',\n\t'audio/wavpack',\n\t'audio/amr',\n\t'application/pdf',\n\t'application/x-elf',\n\t'application/x-mach-binary',\n\t'application/x-msdownload',\n\t'application/x-shockwave-flash',\n\t'application/rtf',\n\t'application/wasm',\n\t'font/woff',\n\t'font/woff2',\n\t'application/vnd.ms-fontobject',\n\t'font/ttf',\n\t'font/otf',\n\t'font/collection',\n\t'image/x-icon',\n\t'video/x-flv',\n\t'application/postscript',\n\t'application/eps',\n\t'application/x-xz',\n\t'application/x-sqlite3',\n\t'application/x-nintendo-nes-rom',\n\t'application/x-google-chrome-extension',\n\t'application/vnd.ms-cab-compressed',\n\t'application/x-deb',\n\t'application/x-unix-archive',\n\t'application/x-rpm',\n\t'application/x-compress',\n\t'application/x-lzip',\n\t'application/x-cfb',\n\t'application/x-mie',\n\t'application/mxf',\n\t'video/mp2t',\n\t'application/x-blender',\n\t'image/bpg',\n\t'image/j2c',\n\t'image/jp2',\n\t'image/jpx',\n\t'image/jpm',\n\t'image/mj2',\n\t'audio/aiff',\n\t'application/xml',\n\t'application/x-mobipocket-ebook',\n\t'image/heif',\n\t'image/heif-sequence',\n\t'image/heic',\n\t'image/heic-sequence',\n\t'image/icns',\n\t'image/ktx',\n\t'application/dicom',\n\t'audio/x-musepack',\n\t'text/calendar',\n\t'text/vcard',\n\t'text/vtt',\n\t'model/gltf-binary',\n\t'application/vnd.tcpdump.pcap',\n\t'audio/x-dsf', // Non-standard\n\t'application/x.ms.shortcut', // Invented by us\n\t'application/x.apple.alias', // Invented by us\n\t'audio/x-voc',\n\t'audio/vnd.dolby.dd-raw',\n\t'audio/x-m4a',\n\t'image/apng',\n\t'image/x-olympus-orf',\n\t'image/x-sony-arw',\n\t'image/x-adobe-dng',\n\t'image/x-nikon-nef',\n\t'image/x-panasonic-rw2',\n\t'image/x-fujifilm-raf',\n\t'video/x-m4v',\n\t'video/3gpp2',\n\t'application/x-esri-shape',\n\t'audio/aac',\n\t'audio/x-it',\n\t'audio/x-s3m',\n\t'audio/x-xm',\n\t'video/MP1S',\n\t'video/MP2P',\n\t'application/vnd.sketchup.skp',\n\t'image/avif',\n\t'application/x-lzh-compressed',\n\t'application/pgp-encrypted',\n\t'application/x-asar',\n\t'model/stl',\n\t'application/vnd.ms-htmlhelp',\n\t'model/3mf',\n\t'image/jxl',\n\t'application/zstd',\n\t'image/jls',\n\t'application/vnd.ms-outlook',\n\t'image/vnd.dwg',\n\t'application/vnd.apache.parquet',\n\t'application/java-vm',\n\t'application/x-arj',\n\t'application/x-cpio',\n\t'application/x-ace-compressed',\n\t'application/avro',\n\t'application/vnd.iccprofile',\n\t'application/x.autodesk.fbx', // Invented by us\n\t'application/vnd.visio',\n\t'application/vnd.android.package-archive',\n\t'application/vnd.google.draco', // Invented by us\n\t'application/x-lz4', // Invented by us\n\t'application/vnd.openxmlformats-officedocument.presentationml.template',\n\t'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n\t'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n\t'application/vnd.ms-excel.template.macroenabled.12',\n\t'application/vnd.oasis.opendocument.text-template',\n\t'application/vnd.oasis.opendocument.spreadsheet-template',\n\t'application/vnd.oasis.opendocument.presentation-template',\n\t'application/vnd.oasis.opendocument.graphics',\n\t'application/vnd.oasis.opendocument.graphics-template',\n\t'application/vnd.ms-excel.sheet.macroenabled.12',\n\t'application/vnd.ms-word.document.macroenabled.12',\n\t'application/vnd.ms-word.template.macroenabled.12',\n\t'application/vnd.ms-powerpoint.template.macroenabled.12',\n\t'application/vnd.ms-powerpoint.presentation.macroenabled.12',\n\t'application/java-archive',\n\t'application/vnd.rn-realmedia',\n\t'application/x-ms-regedit',\n\t'application/x-ft-windows-registry-hive',\n];\n","/**\nPrimary entry point, Node.js specific entry point is index.js\n*/\n\nimport * as Token from 'token-types';\nimport * as strtok3 from 'strtok3/core';\nimport {ZipHandler, GzipHandler} from '@tokenizer/inflate';\nimport {getUintBE} from 'uint8array-extras';\nimport {\n\tstringToBytes,\n\ttarHeaderChecksumMatches,\n\tuint32SyncSafeToken,\n} from './util.js';\nimport {extensions, mimeTypes} from './supported.js';\n\nexport const reasonableDetectionSizeInBytes = 4100; // A fair amount of file-types are detectable within this range.\n\nexport async function fileTypeFromStream(stream, options) {\n\treturn new FileTypeParser(options).fromStream(stream);\n}\n\nexport async function fileTypeFromBuffer(input, options) {\n\treturn new FileTypeParser(options).fromBuffer(input);\n}\n\nexport async function fileTypeFromBlob(blob, options) {\n\treturn new FileTypeParser(options).fromBlob(blob);\n}\n\nfunction getFileTypeFromMimeType(mimeType) {\n\tmimeType = mimeType.toLowerCase();\n\tswitch (mimeType) {\n\t\tcase 'application/epub+zip':\n\t\t\treturn {\n\t\t\t\text: 'epub',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.oasis.opendocument.text':\n\t\t\treturn {\n\t\t\t\text: 'odt',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.oasis.opendocument.text-template':\n\t\t\treturn {\n\t\t\t\text: 'ott',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.oasis.opendocument.spreadsheet':\n\t\t\treturn {\n\t\t\t\text: 'ods',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.oasis.opendocument.spreadsheet-template':\n\t\t\treturn {\n\t\t\t\text: 'ots',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.oasis.opendocument.presentation':\n\t\t\treturn {\n\t\t\t\text: 'odp',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.oasis.opendocument.presentation-template':\n\t\t\treturn {\n\t\t\t\text: 'otp',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.oasis.opendocument.graphics':\n\t\t\treturn {\n\t\t\t\text: 'odg',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.oasis.opendocument.graphics-template':\n\t\t\treturn {\n\t\t\t\text: 'otg',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.openxmlformats-officedocument.presentationml.slideshow':\n\t\t\treturn {\n\t\t\t\text: 'ppsx',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n\t\t\treturn {\n\t\t\t\text: 'xlsx',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.ms-excel.sheet.macroenabled':\n\t\t\treturn {\n\t\t\t\text: 'xlsm',\n\t\t\t\tmime: 'application/vnd.ms-excel.sheet.macroenabled.12',\n\t\t\t};\n\t\tcase 'application/vnd.openxmlformats-officedocument.spreadsheetml.template':\n\t\t\treturn {\n\t\t\t\text: 'xltx',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.ms-excel.template.macroenabled':\n\t\t\treturn {\n\t\t\t\text: 'xltm',\n\t\t\t\tmime: 'application/vnd.ms-excel.template.macroenabled.12',\n\t\t\t};\n\t\tcase 'application/vnd.ms-powerpoint.slideshow.macroenabled':\n\t\t\treturn {\n\t\t\t\text: 'ppsm',\n\t\t\t\tmime: 'application/vnd.ms-powerpoint.slideshow.macroenabled.12',\n\t\t\t};\n\t\tcase 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n\t\t\treturn {\n\t\t\t\text: 'docx',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.ms-word.document.macroenabled':\n\t\t\treturn {\n\t\t\t\text: 'docm',\n\t\t\t\tmime: 'application/vnd.ms-word.document.macroenabled.12',\n\t\t\t};\n\t\tcase 'application/vnd.openxmlformats-officedocument.wordprocessingml.template':\n\t\t\treturn {\n\t\t\t\text: 'dotx',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.ms-word.template.macroenabledtemplate':\n\t\t\treturn {\n\t\t\t\text: 'dotm',\n\t\t\t\tmime: 'application/vnd.ms-word.template.macroenabled.12',\n\t\t\t};\n\t\tcase 'application/vnd.openxmlformats-officedocument.presentationml.template':\n\t\t\treturn {\n\t\t\t\text: 'potx',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.ms-powerpoint.template.macroenabled':\n\t\t\treturn {\n\t\t\t\text: 'potm',\n\t\t\t\tmime: 'application/vnd.ms-powerpoint.template.macroenabled.12',\n\t\t\t};\n\t\tcase 'application/vnd.openxmlformats-officedocument.presentationml.presentation':\n\t\t\treturn {\n\t\t\t\text: 'pptx',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.ms-powerpoint.presentation.macroenabled':\n\t\t\treturn {\n\t\t\t\text: 'pptm',\n\t\t\t\tmime: 'application/vnd.ms-powerpoint.presentation.macroenabled.12',\n\t\t\t};\n\t\tcase 'application/vnd.ms-visio.drawing':\n\t\t\treturn {\n\t\t\t\text: 'vsdx',\n\t\t\t\tmime: 'application/vnd.visio',\n\t\t\t};\n\t\tcase 'application/vnd.ms-package.3dmanufacturing-3dmodel+xml':\n\t\t\treturn {\n\t\t\t\text: '3mf',\n\t\t\t\tmime: 'model/3mf',\n\t\t\t};\n\t\tdefault:\n\t}\n}\n\nfunction _check(buffer, headers, options) {\n\toptions = {\n\t\toffset: 0,\n\t\t...options,\n\t};\n\n\tfor (const [index, header] of headers.entries()) {\n\t\t// If a bitmask is set\n\t\tif (options.mask) {\n\t\t\t// If header doesn't equal `buf` with bits masked off\n\t\t\tif (header !== (options.mask[index] & buffer[index + options.offset])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else if (header !== buffer[index + options.offset]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nexport async function fileTypeFromTokenizer(tokenizer, options) {\n\treturn new FileTypeParser(options).fromTokenizer(tokenizer);\n}\n\nexport async function fileTypeStream(webStream, options) {\n\treturn new FileTypeParser(options).toDetectionStream(webStream, options);\n}\n\nexport class FileTypeParser {\n\tconstructor(options) {\n\t\tthis.options = {\n\t\t\tmpegOffsetTolerance: 0,\n\t\t\t...options,\n\t\t};\n\n\t\tthis.detectors = [...(options?.customDetectors ?? []),\n\t\t\t{id: 'core', detect: this.detectConfident},\n\t\t\t{id: 'core.imprecise', detect: this.detectImprecise}];\n\t\tthis.tokenizerOptions = {\n\t\t\tabortSignal: options?.signal,\n\t\t};\n\t}\n\n\tasync fromTokenizer(tokenizer) {\n\t\tconst initialPosition = tokenizer.position;\n\n\t\t// Iterate through all file-type detectors\n\t\tfor (const detector of this.detectors) {\n\t\t\tconst fileType = await detector.detect(tokenizer);\n\t\t\tif (fileType) {\n\t\t\t\treturn fileType;\n\t\t\t}\n\n\t\t\tif (initialPosition !== tokenizer.position) {\n\t\t\t\treturn undefined; // Cannot proceed scanning of the tokenizer is at an arbitrary position\n\t\t\t}\n\t\t}\n\t}\n\n\tasync fromBuffer(input) {\n\t\tif (!(input instanceof Uint8Array || input instanceof ArrayBuffer)) {\n\t\t\tthrow new TypeError(`Expected the \\`input\\` argument to be of type \\`Uint8Array\\` or \\`ArrayBuffer\\`, got \\`${typeof input}\\``);\n\t\t}\n\n\t\tconst buffer = input instanceof Uint8Array ? input : new Uint8Array(input);\n\n\t\tif (!(buffer?.length > 1)) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this.fromTokenizer(strtok3.fromBuffer(buffer, this.tokenizerOptions));\n\t}\n\n\tasync fromBlob(blob) {\n\t\tconst tokenizer = strtok3.fromBlob(blob, this.tokenizerOptions);\n\t\ttry {\n\t\t\treturn await this.fromTokenizer(tokenizer);\n\t\t} finally {\n\t\t\tawait tokenizer.close();\n\t\t}\n\t}\n\n\tasync fromStream(stream) {\n\t\tconst tokenizer = strtok3.fromWebStream(stream, this.tokenizerOptions);\n\t\ttry {\n\t\t\treturn await this.fromTokenizer(tokenizer);\n\t\t} finally {\n\t\t\tawait tokenizer.close();\n\t\t}\n\t}\n\n\tasync toDetectionStream(stream, options) {\n\t\tconst {sampleSize = reasonableDetectionSizeInBytes} = options;\n\t\tlet detectedFileType;\n\t\tlet firstChunk;\n\n\t\tconst reader = stream.getReader({mode: 'byob'});\n\t\ttry {\n\t\t\t// Read the first chunk from the stream\n\t\t\tconst {value: chunk, done} = await reader.read(new Uint8Array(sampleSize));\n\t\t\tfirstChunk = chunk;\n\t\t\tif (!done && chunk) {\n\t\t\t\ttry {\n\t\t\t\t\t// Attempt to detect the file type from the chunk\n\t\t\t\t\tdetectedFileType = await this.fromBuffer(chunk.subarray(0, sampleSize));\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (!(error instanceof strtok3.EndOfStreamError)) {\n\t\t\t\t\t\tthrow error; // Re-throw non-EndOfStreamError\n\t\t\t\t\t}\n\n\t\t\t\t\tdetectedFileType = undefined;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfirstChunk = chunk;\n\t\t} finally {\n\t\t\treader.releaseLock(); // Ensure the reader is released\n\t\t}\n\n\t\t// Create a new ReadableStream to manage locking issues\n\t\tconst transformStream = new TransformStream({\n\t\t\tasync start(controller) {\n\t\t\t\tcontroller.enqueue(firstChunk); // Enqueue the initial chunk\n\t\t\t},\n\t\t\ttransform(chunk, controller) {\n\t\t\t\t// Pass through the chunks without modification\n\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t},\n\t\t});\n\n\t\tconst newStream = stream.pipeThrough(transformStream);\n\t\tnewStream.fileType = detectedFileType;\n\n\t\treturn newStream;\n\t}\n\n\tcheck(header, options) {\n\t\treturn _check(this.buffer, header, options);\n\t}\n\n\tcheckString(header, options) {\n\t\treturn this.check(stringToBytes(header, options?.encoding), options);\n\t}\n\n\t// Detections with a high degree of certainty in identifying the correct file type\n\tdetectConfident = async tokenizer => {\n\t\tthis.buffer = new Uint8Array(reasonableDetectionSizeInBytes);\n\n\t\t// Keep reading until EOF if the file size is unknown.\n\t\tif (tokenizer.fileInfo.size === undefined) {\n\t\t\ttokenizer.fileInfo.size = Number.MAX_SAFE_INTEGER;\n\t\t}\n\n\t\tthis.tokenizer = tokenizer;\n\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: 32, mayBeLess: true});\n\n\t\t// -- 2-byte signatures --\n\n\t\tif (this.check([0x42, 0x4D])) {\n\t\t\treturn {\n\t\t\t\text: 'bmp',\n\t\t\t\tmime: 'image/bmp',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x0B, 0x77])) {\n\t\t\treturn {\n\t\t\t\text: 'ac3',\n\t\t\t\tmime: 'audio/vnd.dolby.dd-raw',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x78, 0x01])) {\n\t\t\treturn {\n\t\t\t\text: 'dmg',\n\t\t\t\tmime: 'application/x-apple-diskimage',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x4D, 0x5A])) {\n\t\t\treturn {\n\t\t\t\text: 'exe',\n\t\t\t\tmime: 'application/x-msdownload',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x25, 0x21])) {\n\t\t\tawait tokenizer.peekBuffer(this.buffer, {length: 24, mayBeLess: true});\n\n\t\t\tif (\n\t\t\t\tthis.checkString('PS-Adobe-', {offset: 2})\n\t\t\t\t&& this.checkString(' EPSF-', {offset: 14})\n\t\t\t) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'eps',\n\t\t\t\t\tmime: 'application/eps',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\text: 'ps',\n\t\t\t\tmime: 'application/postscript',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0x1F, 0xA0])\n\t\t\t|| this.check([0x1F, 0x9D])\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'Z',\n\t\t\t\tmime: 'application/x-compress',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xC7, 0x71])) {\n\t\t\treturn {\n\t\t\t\text: 'cpio',\n\t\t\t\tmime: 'application/x-cpio',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x60, 0xEA])) {\n\t\t\treturn {\n\t\t\t\text: 'arj',\n\t\t\t\tmime: 'application/x-arj',\n\t\t\t};\n\t\t}\n\n\t\t// -- 3-byte signatures --\n\n\t\tif (this.check([0xEF, 0xBB, 0xBF])) { // UTF-8-BOM\n\t\t\t// Strip off UTF-8-BOM\n\t\t\tthis.tokenizer.ignore(3);\n\t\t\treturn this.detectConfident(tokenizer);\n\t\t}\n\n\t\tif (this.check([0x47, 0x49, 0x46])) {\n\t\t\treturn {\n\t\t\t\text: 'gif',\n\t\t\t\tmime: 'image/gif',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x49, 0x49, 0xBC])) {\n\t\t\treturn {\n\t\t\t\text: 'jxr',\n\t\t\t\tmime: 'image/vnd.ms-photo',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x1F, 0x8B, 0x8])) {\n\t\t\tconst gzipHandler = new GzipHandler(tokenizer);\n\n\t\t\tconst stream = gzipHandler.inflate();\n\t\t\tlet shouldCancelStream = true;\n\t\t\ttry {\n\t\t\t\tlet compressedFileType;\n\t\t\t\ttry {\n\t\t\t\t\tcompressedFileType = await this.fromStream(stream);\n\t\t\t\t} catch {\n\t\t\t\t\tshouldCancelStream = false;\n\t\t\t\t}\n\n\t\t\t\tif (compressedFileType && compressedFileType.ext === 'tar') {\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'tar.gz',\n\t\t\t\t\t\tmime: 'application/gzip',\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tif (shouldCancelStream) {\n\t\t\t\t\tawait stream.cancel();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\text: 'gz',\n\t\t\t\tmime: 'application/gzip',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x42, 0x5A, 0x68])) {\n\t\t\treturn {\n\t\t\t\text: 'bz2',\n\t\t\t\tmime: 'application/x-bzip2',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('ID3')) {\n\t\t\tawait tokenizer.ignore(6); // Skip ID3 header until the header size\n\t\t\tconst id3HeaderLength = await tokenizer.readToken(uint32SyncSafeToken);\n\t\t\tif (tokenizer.position + id3HeaderLength > tokenizer.fileInfo.size) {\n\t\t\t\t// Guess file type based on ID3 header for backward compatibility\n\t\t\t\treturn {\n\t\t\t\t\text: 'mp3',\n\t\t\t\t\tmime: 'audio/mpeg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tawait tokenizer.ignore(id3HeaderLength);\n\t\t\treturn this.fromTokenizer(tokenizer); // Skip ID3 header, recursion\n\t\t}\n\n\t\t// Musepack, SV7\n\t\tif (this.checkString('MP+')) {\n\t\t\treturn {\n\t\t\t\text: 'mpc',\n\t\t\t\tmime: 'audio/x-musepack',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\t(this.buffer[0] === 0x43 || this.buffer[0] === 0x46)\n\t\t\t&& this.check([0x57, 0x53], {offset: 1})\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'swf',\n\t\t\t\tmime: 'application/x-shockwave-flash',\n\t\t\t};\n\t\t}\n\n\t\t// -- 4-byte signatures --\n\n\t\t// Requires a sample size of 4 bytes\n\t\tif (this.check([0xFF, 0xD8, 0xFF])) {\n\t\t\tif (this.check([0xF7], {offset: 3})) { // JPG7/SOF55, indicating a ISO/IEC 14495 / JPEG-LS file\n\t\t\t\treturn {\n\t\t\t\t\text: 'jls',\n\t\t\t\t\tmime: 'image/jls',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\text: 'jpg',\n\t\t\t\tmime: 'image/jpeg',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x4F, 0x62, 0x6A, 0x01])) {\n\t\t\treturn {\n\t\t\t\text: 'avro',\n\t\t\t\tmime: 'application/avro',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('FLIF')) {\n\t\t\treturn {\n\t\t\t\text: 'flif',\n\t\t\t\tmime: 'image/flif',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('8BPS')) {\n\t\t\treturn {\n\t\t\t\text: 'psd',\n\t\t\t\tmime: 'image/vnd.adobe.photoshop',\n\t\t\t};\n\t\t}\n\n\t\t// Musepack, SV8\n\t\tif (this.checkString('MPCK')) {\n\t\t\treturn {\n\t\t\t\text: 'mpc',\n\t\t\t\tmime: 'audio/x-musepack',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('FORM')) {\n\t\t\treturn {\n\t\t\t\text: 'aif',\n\t\t\t\tmime: 'audio/aiff',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('icns', {offset: 0})) {\n\t\t\treturn {\n\t\t\t\text: 'icns',\n\t\t\t\tmime: 'image/icns',\n\t\t\t};\n\t\t}\n\n\t\t// Zip-based file formats\n\t\t// Need to be before the `zip` check\n\t\tif (this.check([0x50, 0x4B, 0x3, 0x4])) { // Local file header signature\n\t\t\tlet fileType;\n\t\t\tawait new ZipHandler(tokenizer).unzip(zipHeader => {\n\t\t\t\tswitch (zipHeader.filename) {\n\t\t\t\t\tcase 'META-INF/mozilla.rsa':\n\t\t\t\t\t\tfileType = {\n\t\t\t\t\t\t\text: 'xpi',\n\t\t\t\t\t\t\tmime: 'application/x-xpinstall',\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstop: true,\n\t\t\t\t\t\t};\n\t\t\t\t\tcase 'META-INF/MANIFEST.MF':\n\t\t\t\t\t\tfileType = {\n\t\t\t\t\t\t\text: 'jar',\n\t\t\t\t\t\t\tmime: 'application/java-archive',\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstop: true,\n\t\t\t\t\t\t};\n\t\t\t\t\tcase 'mimetype':\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tasync handler(fileData) {\n\t\t\t\t\t\t\t\t// Use TextDecoder to decode the UTF-8 encoded data\n\t\t\t\t\t\t\t\tconst mimeType = new TextDecoder('utf-8').decode(fileData).trim();\n\t\t\t\t\t\t\t\tfileType = getFileTypeFromMimeType(mimeType);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstop: true,\n\t\t\t\t\t\t};\n\n\t\t\t\t\tcase '[Content_Types].xml':\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tasync handler(fileData) {\n\t\t\t\t\t\t\t\t// Use TextDecoder to decode the UTF-8 encoded data\n\t\t\t\t\t\t\t\tlet xmlContent = new TextDecoder('utf-8').decode(fileData);\n\t\t\t\t\t\t\t\tconst endPos = xmlContent.indexOf('.main+xml\"');\n\t\t\t\t\t\t\t\tif (endPos === -1) {\n\t\t\t\t\t\t\t\t\tconst mimeType = 'application/vnd.ms-package.3dmanufacturing-3dmodel+xml';\n\t\t\t\t\t\t\t\t\tif (xmlContent.includes(`ContentType=\"${mimeType}\"`)) {\n\t\t\t\t\t\t\t\t\t\tfileType = getFileTypeFromMimeType(mimeType);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\txmlContent = xmlContent.slice(0, Math.max(0, endPos));\n\t\t\t\t\t\t\t\t\tconst firstPos = xmlContent.lastIndexOf('\"');\n\t\t\t\t\t\t\t\t\tconst mimeType = xmlContent.slice(Math.max(0, firstPos + 1));\n\t\t\t\t\t\t\t\t\tfileType = getFileTypeFromMimeType(mimeType);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstop: true,\n\t\t\t\t\t\t};\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif (/classes\\d*\\.dex/.test(zipHeader.filename)) {\n\t\t\t\t\t\t\tfileType = {\n\t\t\t\t\t\t\t\text: 'apk',\n\t\t\t\t\t\t\t\tmime: 'application/vnd.android.package-archive',\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\treturn {stop: true};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {};\n\t\t\t\t}\n\t\t\t}).catch(error => {\n\t\t\t\tif (!(error instanceof strtok3.EndOfStreamError)) {\n\t\t\t\t\tthrow error; // Re-throw non-EndOfStreamError\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn fileType ?? {\n\t\t\t\text: 'zip',\n\t\t\t\tmime: 'application/zip',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('OggS')) {\n\t\t\t// This is an OGG container\n\t\t\tawait tokenizer.ignore(28);\n\t\t\tconst type = new Uint8Array(8);\n\t\t\tawait tokenizer.readBuffer(type);\n\n\t\t\t// Needs to be before `ogg` check\n\t\t\tif (_check(type, [0x4F, 0x70, 0x75, 0x73, 0x48, 0x65, 0x61, 0x64])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'opus',\n\t\t\t\t\tmime: 'audio/ogg; codecs=opus',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// If ' theora' in header.\n\t\t\tif (_check(type, [0x80, 0x74, 0x68, 0x65, 0x6F, 0x72, 0x61])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'ogv',\n\t\t\t\t\tmime: 'video/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// If '\\x01video' in header.\n\t\t\tif (_check(type, [0x01, 0x76, 0x69, 0x64, 0x65, 0x6F, 0x00])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'ogm',\n\t\t\t\t\tmime: 'video/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// If ' FLAC' in header https://xiph.org/flac/faq.html\n\t\t\tif (_check(type, [0x7F, 0x46, 0x4C, 0x41, 0x43])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'oga',\n\t\t\t\t\tmime: 'audio/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// 'Speex ' in header https://en.wikipedia.org/wiki/Speex\n\t\t\tif (_check(type, [0x53, 0x70, 0x65, 0x65, 0x78, 0x20, 0x20])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'spx',\n\t\t\t\t\tmime: 'audio/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// If '\\x01vorbis' in header\n\t\t\tif (_check(type, [0x01, 0x76, 0x6F, 0x72, 0x62, 0x69, 0x73])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'ogg',\n\t\t\t\t\tmime: 'audio/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Default OGG container https://www.iana.org/assignments/media-types/application/ogg\n\t\t\treturn {\n\t\t\t\text: 'ogx',\n\t\t\t\tmime: 'application/ogg',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0x50, 0x4B])\n\t\t\t&& (this.buffer[2] === 0x3 || this.buffer[2] === 0x5 || this.buffer[2] === 0x7)\n\t\t\t&& (this.buffer[3] === 0x4 || this.buffer[3] === 0x6 || this.buffer[3] === 0x8)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'zip',\n\t\t\t\tmime: 'application/zip',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('MThd')) {\n\t\t\treturn {\n\t\t\t\text: 'mid',\n\t\t\t\tmime: 'audio/midi',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('wOFF')\n\t\t\t&& (\n\t\t\t\tthis.check([0x00, 0x01, 0x00, 0x00], {offset: 4})\n\t\t\t\t|| this.checkString('OTTO', {offset: 4})\n\t\t\t)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'woff',\n\t\t\t\tmime: 'font/woff',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('wOF2')\n\t\t\t&& (\n\t\t\t\tthis.check([0x00, 0x01, 0x00, 0x00], {offset: 4})\n\t\t\t\t|| this.checkString('OTTO', {offset: 4})\n\t\t\t)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'woff2',\n\t\t\t\tmime: 'font/woff2',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xD4, 0xC3, 0xB2, 0xA1]) || this.check([0xA1, 0xB2, 0xC3, 0xD4])) {\n\t\t\treturn {\n\t\t\t\text: 'pcap',\n\t\t\t\tmime: 'application/vnd.tcpdump.pcap',\n\t\t\t};\n\t\t}\n\n\t\t// Sony DSD Stream File (DSF)\n\t\tif (this.checkString('DSD ')) {\n\t\t\treturn {\n\t\t\t\text: 'dsf',\n\t\t\t\tmime: 'audio/x-dsf', // Non-standard\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('LZIP')) {\n\t\t\treturn {\n\t\t\t\text: 'lz',\n\t\t\t\tmime: 'application/x-lzip',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('fLaC')) {\n\t\t\treturn {\n\t\t\t\text: 'flac',\n\t\t\t\tmime: 'audio/flac',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x42, 0x50, 0x47, 0xFB])) {\n\t\t\treturn {\n\t\t\t\text: 'bpg',\n\t\t\t\tmime: 'image/bpg',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('wvpk')) {\n\t\t\treturn {\n\t\t\t\text: 'wv',\n\t\t\t\tmime: 'audio/wavpack',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('%PDF')) {\n\t\t\t// Assume this is just a normal PDF\n\t\t\treturn {\n\t\t\t\text: 'pdf',\n\t\t\t\tmime: 'application/pdf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x61, 0x73, 0x6D])) {\n\t\t\treturn {\n\t\t\t\text: 'wasm',\n\t\t\t\tmime: 'application/wasm',\n\t\t\t};\n\t\t}\n\n\t\t// TIFF, little-endian type\n\t\tif (this.check([0x49, 0x49])) {\n\t\t\tconst fileType = await this.readTiffHeader(false);\n\t\t\tif (fileType) {\n\t\t\t\treturn fileType;\n\t\t\t}\n\t\t}\n\n\t\t// TIFF, big-endian type\n\t\tif (this.check([0x4D, 0x4D])) {\n\t\t\tconst fileType = await this.readTiffHeader(true);\n\t\t\tif (fileType) {\n\t\t\t\treturn fileType;\n\t\t\t}\n\t\t}\n\n\t\tif (this.checkString('MAC ')) {\n\t\t\treturn {\n\t\t\t\text: 'ape',\n\t\t\t\tmime: 'audio/ape',\n\t\t\t};\n\t\t}\n\n\t\t// https://github.com/file/file/blob/master/magic/Magdir/matroska\n\t\tif (this.check([0x1A, 0x45, 0xDF, 0xA3])) { // Root element: EBML\n\t\t\tasync function readField() {\n\t\t\t\tconst msb = await tokenizer.peekNumber(Token.UINT8);\n\t\t\t\tlet mask = 0x80;\n\t\t\t\tlet ic = 0; // 0 = A, 1 = B, 2 = C, 3 = D\n\n\t\t\t\twhile ((msb & mask) === 0 && mask !== 0) {\n\t\t\t\t\t++ic;\n\t\t\t\t\tmask >>= 1;\n\t\t\t\t}\n\n\t\t\t\tconst id = new Uint8Array(ic + 1);\n\t\t\t\tawait tokenizer.readBuffer(id);\n\t\t\t\treturn id;\n\t\t\t}\n\n\t\t\tasync function readElement() {\n\t\t\t\tconst idField = await readField();\n\t\t\t\tconst lengthField = await readField();\n\n\t\t\t\tlengthField[0] ^= 0x80 >> (lengthField.length - 1);\n\t\t\t\tconst nrLength = Math.min(6, lengthField.length); // JavaScript can max read 6 bytes integer\n\n\t\t\t\tconst idView = new DataView(idField.buffer);\n\t\t\t\tconst lengthView = new DataView(lengthField.buffer, lengthField.length - nrLength, nrLength);\n\n\t\t\t\treturn {\n\t\t\t\t\tid: getUintBE(idView),\n\t\t\t\t\tlen: getUintBE(lengthView),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tasync function readChildren(children) {\n\t\t\t\twhile (children > 0) {\n\t\t\t\t\tconst element = await readElement();\n\t\t\t\t\tif (element.id === 0x42_82) {\n\t\t\t\t\t\tconst rawValue = await tokenizer.readToken(new Token.StringType(element.len));\n\t\t\t\t\t\treturn rawValue.replaceAll(/\\00.*$/g, ''); // Return DocType\n\t\t\t\t\t}\n\n\t\t\t\t\tawait tokenizer.ignore(element.len); // ignore payload\n\t\t\t\t\t--children;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst re = await readElement();\n\t\t\tconst documentType = await readChildren(re.len);\n\n\t\t\tswitch (documentType) {\n\t\t\t\tcase 'webm':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'webm',\n\t\t\t\t\t\tmime: 'video/webm',\n\t\t\t\t\t};\n\n\t\t\t\tcase 'matroska':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'mkv',\n\t\t\t\t\t\tmime: 'video/matroska',\n\t\t\t\t\t};\n\n\t\t\t\tdefault:\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (this.checkString('SQLi')) {\n\t\t\treturn {\n\t\t\t\text: 'sqlite',\n\t\t\t\tmime: 'application/x-sqlite3',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x4E, 0x45, 0x53, 0x1A])) {\n\t\t\treturn {\n\t\t\t\text: 'nes',\n\t\t\t\tmime: 'application/x-nintendo-nes-rom',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('Cr24')) {\n\t\t\treturn {\n\t\t\t\text: 'crx',\n\t\t\t\tmime: 'application/x-google-chrome-extension',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('MSCF')\n\t\t\t|| this.checkString('ISc(')\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'cab',\n\t\t\t\tmime: 'application/vnd.ms-cab-compressed',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xED, 0xAB, 0xEE, 0xDB])) {\n\t\t\treturn {\n\t\t\t\text: 'rpm',\n\t\t\t\tmime: 'application/x-rpm',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xC5, 0xD0, 0xD3, 0xC6])) {\n\t\t\treturn {\n\t\t\t\text: 'eps',\n\t\t\t\tmime: 'application/eps',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x28, 0xB5, 0x2F, 0xFD])) {\n\t\t\treturn {\n\t\t\t\text: 'zst',\n\t\t\t\tmime: 'application/zstd',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x7F, 0x45, 0x4C, 0x46])) {\n\t\t\treturn {\n\t\t\t\text: 'elf',\n\t\t\t\tmime: 'application/x-elf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x21, 0x42, 0x44, 0x4E])) {\n\t\t\treturn {\n\t\t\t\text: 'pst',\n\t\t\t\tmime: 'application/vnd.ms-outlook',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('PAR1') || this.checkString('PARE')) {\n\t\t\treturn {\n\t\t\t\text: 'parquet',\n\t\t\t\tmime: 'application/vnd.apache.parquet',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('ttcf')) {\n\t\t\treturn {\n\t\t\t\text: 'ttc',\n\t\t\t\tmime: 'font/collection',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xCF, 0xFA, 0xED, 0xFE])) {\n\t\t\treturn {\n\t\t\t\text: 'macho',\n\t\t\t\tmime: 'application/x-mach-binary',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x04, 0x22, 0x4D, 0x18])) {\n\t\t\treturn {\n\t\t\t\text: 'lz4',\n\t\t\t\tmime: 'application/x-lz4', // Invented by us\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('regf')) {\n\t\t\treturn {\n\t\t\t\text: 'dat',\n\t\t\t\tmime: 'application/x-ft-windows-registry-hive',\n\t\t\t};\n\t\t}\n\n\t\t// -- 5-byte signatures --\n\n\t\tif (this.check([0x4F, 0x54, 0x54, 0x4F, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'otf',\n\t\t\t\tmime: 'font/otf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('#!AMR')) {\n\t\t\treturn {\n\t\t\t\text: 'amr',\n\t\t\t\tmime: 'audio/amr',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('{\\\\rtf')) {\n\t\t\treturn {\n\t\t\t\text: 'rtf',\n\t\t\t\tmime: 'application/rtf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x46, 0x4C, 0x56, 0x01])) {\n\t\t\treturn {\n\t\t\t\text: 'flv',\n\t\t\t\tmime: 'video/x-flv',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('IMPM')) {\n\t\t\treturn {\n\t\t\t\text: 'it',\n\t\t\t\tmime: 'audio/x-it',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('-lh0-', {offset: 2})\n\t\t\t|| this.checkString('-lh1-', {offset: 2})\n\t\t\t|| this.checkString('-lh2-', {offset: 2})\n\t\t\t|| this.checkString('-lh3-', {offset: 2})\n\t\t\t|| this.checkString('-lh4-', {offset: 2})\n\t\t\t|| this.checkString('-lh5-', {offset: 2})\n\t\t\t|| this.checkString('-lh6-', {offset: 2})\n\t\t\t|| this.checkString('-lh7-', {offset: 2})\n\t\t\t|| this.checkString('-lzs-', {offset: 2})\n\t\t\t|| this.checkString('-lz4-', {offset: 2})\n\t\t\t|| this.checkString('-lz5-', {offset: 2})\n\t\t\t|| this.checkString('-lhd-', {offset: 2})\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'lzh',\n\t\t\t\tmime: 'application/x-lzh-compressed',\n\t\t\t};\n\t\t}\n\n\t\t// MPEG program stream (PS or MPEG-PS)\n\t\tif (this.check([0x00, 0x00, 0x01, 0xBA])) {\n\t\t\t// MPEG-PS, MPEG-1 Part 1\n\t\t\tif (this.check([0x21], {offset: 4, mask: [0xF1]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mpg', // May also be .ps, .mpeg\n\t\t\t\t\tmime: 'video/MP1S',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// MPEG-PS, MPEG-2 Part 1\n\t\t\tif (this.check([0x44], {offset: 4, mask: [0xC4]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mpg', // May also be .mpg, .m2p, .vob or .sub\n\t\t\t\t\tmime: 'video/MP2P',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (this.checkString('ITSF')) {\n\t\t\treturn {\n\t\t\t\text: 'chm',\n\t\t\t\tmime: 'application/vnd.ms-htmlhelp',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xCA, 0xFE, 0xBA, 0xBE])) {\n\t\t\treturn {\n\t\t\t\text: 'class',\n\t\t\t\tmime: 'application/java-vm',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('.RMF')) {\n\t\t\treturn {\n\t\t\t\text: 'rm',\n\t\t\t\tmime: 'application/vnd.rn-realmedia',\n\t\t\t};\n\t\t}\n\n\t\t// -- 5-byte signatures --\n\n\t\tif (this.checkString('DRACO')) {\n\t\t\treturn {\n\t\t\t\text: 'drc',\n\t\t\t\tmime: 'application/vnd.google.draco', // Invented by us\n\t\t\t};\n\t\t}\n\n\t\t// -- 6-byte signatures --\n\n\t\tif (this.check([0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'xz',\n\t\t\t\tmime: 'application/x-xz',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('<?xml ')) {\n\t\t\treturn {\n\t\t\t\text: 'xml',\n\t\t\t\tmime: 'application/xml',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C])) {\n\t\t\treturn {\n\t\t\t\text: '7z',\n\t\t\t\tmime: 'application/x-7z-compressed',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0x52, 0x61, 0x72, 0x21, 0x1A, 0x7])\n\t\t\t&& (this.buffer[6] === 0x0 || this.buffer[6] === 0x1)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'rar',\n\t\t\t\tmime: 'application/x-rar-compressed',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('solid ')) {\n\t\t\treturn {\n\t\t\t\text: 'stl',\n\t\t\t\tmime: 'model/stl',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('AC')) {\n\t\t\tconst version = new Token.StringType(4, 'latin1').get(this.buffer, 2);\n\t\t\tif (version.match('^d*') && version >= 1000 && version <= 1050) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'dwg',\n\t\t\t\t\tmime: 'image/vnd.dwg',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (this.checkString('070707')) {\n\t\t\treturn {\n\t\t\t\text: 'cpio',\n\t\t\t\tmime: 'application/x-cpio',\n\t\t\t};\n\t\t}\n\n\t\t// -- 7-byte signatures --\n\n\t\tif (this.checkString('BLENDER')) {\n\t\t\treturn {\n\t\t\t\text: 'blend',\n\t\t\t\tmime: 'application/x-blender',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('!<arch>')) {\n\t\t\tawait tokenizer.ignore(8);\n\t\t\tconst string = await tokenizer.readToken(new Token.StringType(13, 'ascii'));\n\t\t\tif (string === 'debian-binary') {\n\t\t\t\treturn {\n\t\t\t\t\text: 'deb',\n\t\t\t\t\tmime: 'application/x-deb',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\text: 'ar',\n\t\t\t\tmime: 'application/x-unix-archive',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('WEBVTT')\n\t\t\t&&\t(\n\t\t\t\t// One of LF, CR, tab, space, or end of file must follow \"WEBVTT\" per the spec (see `fixture/fixture-vtt-*.vtt` for examples). Note that `\\0` is technically the null character (there is no such thing as an EOF character). However, checking for `\\0` gives us the same result as checking for the end of the stream.\n\t\t\t\t(['\\n', '\\r', '\\t', ' ', '\\0'].some(char7 => this.checkString(char7, {offset: 6}))))\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'vtt',\n\t\t\t\tmime: 'text/vtt',\n\t\t\t};\n\t\t}\n\n\t\t// -- 8-byte signatures --\n\n\t\tif (this.check([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])) {\n\t\t\t// APNG format (https://wiki.mozilla.org/APNG_Specification)\n\t\t\t// 1. Find the first IDAT (image data) chunk (49 44 41 54)\n\t\t\t// 2. Check if there is an \"acTL\" chunk before the IDAT one (61 63 54 4C)\n\n\t\t\t// Offset calculated as follows:\n\t\t\t// - 8 bytes: PNG signature\n\t\t\t// - 4 (length) + 4 (chunk type) + 13 (chunk data) + 4 (CRC): IHDR chunk\n\n\t\t\tawait tokenizer.ignore(8); // ignore PNG signature\n\n\t\t\tasync function readChunkHeader() {\n\t\t\t\treturn {\n\t\t\t\t\tlength: await tokenizer.readToken(Token.INT32_BE),\n\t\t\t\t\ttype: await tokenizer.readToken(new Token.StringType(4, 'latin1')),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tdo {\n\t\t\t\tconst chunk = await readChunkHeader();\n\t\t\t\tif (chunk.length < 0) {\n\t\t\t\t\treturn; // Invalid chunk length\n\t\t\t\t}\n\n\t\t\t\tswitch (chunk.type) {\n\t\t\t\t\tcase 'IDAT':\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\text: 'png',\n\t\t\t\t\t\t\tmime: 'image/png',\n\t\t\t\t\t\t};\n\t\t\t\t\tcase 'acTL':\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\text: 'apng',\n\t\t\t\t\t\t\tmime: 'image/apng',\n\t\t\t\t\t\t};\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tawait tokenizer.ignore(chunk.length + 4); // Ignore chunk-data + CRC\n\t\t\t\t}\n\t\t\t} while (tokenizer.position + 8 < tokenizer.fileInfo.size);\n\n\t\t\treturn {\n\t\t\t\text: 'png',\n\t\t\t\tmime: 'image/png',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x41, 0x52, 0x52, 0x4F, 0x57, 0x31, 0x00, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'arrow',\n\t\t\t\tmime: 'application/vnd.apache.arrow.file',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x67, 0x6C, 0x54, 0x46, 0x02, 0x00, 0x00, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'glb',\n\t\t\t\tmime: 'model/gltf-binary',\n\t\t\t};\n\t\t}\n\n\t\t// `mov` format variants\n\t\tif (\n\t\t\tthis.check([0x66, 0x72, 0x65, 0x65], {offset: 4}) // `free`\n\t\t\t|| this.check([0x6D, 0x64, 0x61, 0x74], {offset: 4}) // `mdat` MJPEG\n\t\t\t|| this.check([0x6D, 0x6F, 0x6F, 0x76], {offset: 4}) // `moov`\n\t\t\t|| this.check([0x77, 0x69, 0x64, 0x65], {offset: 4}) // `wide`\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mov',\n\t\t\t\tmime: 'video/quicktime',\n\t\t\t};\n\t\t}\n\n\t\t// -- 9-byte signatures --\n\n\t\tif (this.check([0x49, 0x49, 0x52, 0x4F, 0x08, 0x00, 0x00, 0x00, 0x18])) {\n\t\t\treturn {\n\t\t\t\text: 'orf',\n\t\t\t\tmime: 'image/x-olympus-orf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('gimp xcf ')) {\n\t\t\treturn {\n\t\t\t\text: 'xcf',\n\t\t\t\tmime: 'image/x-xcf',\n\t\t\t};\n\t\t}\n\n\t\t// File Type Box (https://en.wikipedia.org/wiki/ISO_base_media_file_format)\n\t\t// It's not required to be first, but it's recommended to be. Almost all ISO base media files start with `ftyp` box.\n\t\t// `ftyp` box must contain a brand major identifier, which must consist of ISO 8859-1 printable characters.\n\t\t// Here we check for 8859-1 printable characters (for simplicity, it's a mask which also catches one non-printable character).\n\t\tif (\n\t\t\tthis.checkString('ftyp', {offset: 4})\n\t\t\t&& (this.buffer[8] & 0x60) !== 0x00 // Brand major, first character ASCII?\n\t\t) {\n\t\t\t// They all can have MIME `video/mp4` except `application/mp4` special-case which is hard to detect.\n\t\t\t// For some cases, we're specific, everything else falls to `video/mp4` with `mp4` extension.\n\t\t\tconst brandMajor = new Token.StringType(4, 'latin1').get(this.buffer, 8).replace('\\0', ' ').trim();\n\t\t\tswitch (brandMajor) {\n\t\t\t\tcase 'avif':\n\t\t\t\tcase 'avis':\n\t\t\t\t\treturn {ext: 'avif', mime: 'image/avif'};\n\t\t\t\tcase 'mif1':\n\t\t\t\t\treturn {ext: 'heic', mime: 'image/heif'};\n\t\t\t\tcase 'msf1':\n\t\t\t\t\treturn {ext: 'heic', mime: 'image/heif-sequence'};\n\t\t\t\tcase 'heic':\n\t\t\t\tcase 'heix':\n\t\t\t\t\treturn {ext: 'heic', mime: 'image/heic'};\n\t\t\t\tcase 'hevc':\n\t\t\t\tcase 'hevx':\n\t\t\t\t\treturn {ext: 'heic', mime: 'image/heic-sequence'};\n\t\t\t\tcase 'qt':\n\t\t\t\t\treturn {ext: 'mov', mime: 'video/quicktime'};\n\t\t\t\tcase 'M4V':\n\t\t\t\tcase 'M4VH':\n\t\t\t\tcase 'M4VP':\n\t\t\t\t\treturn {ext: 'm4v', mime: 'video/x-m4v'};\n\t\t\t\tcase 'M4P':\n\t\t\t\t\treturn {ext: 'm4p', mime: 'video/mp4'};\n\t\t\t\tcase 'M4B':\n\t\t\t\t\treturn {ext: 'm4b', mime: 'audio/mp4'};\n\t\t\t\tcase 'M4A':\n\t\t\t\t\treturn {ext: 'm4a', mime: 'audio/x-m4a'};\n\t\t\t\tcase 'F4V':\n\t\t\t\t\treturn {ext: 'f4v', mime: 'video/mp4'};\n\t\t\t\tcase 'F4P':\n\t\t\t\t\treturn {ext: 'f4p', mime: 'video/mp4'};\n\t\t\t\tcase 'F4A':\n\t\t\t\t\treturn {ext: 'f4a', mime: 'audio/mp4'};\n\t\t\t\tcase 'F4B':\n\t\t\t\t\treturn {ext: 'f4b', mime: 'audio/mp4'};\n\t\t\t\tcase 'crx':\n\t\t\t\t\treturn {ext: 'cr3', mime: 'image/x-canon-cr3'};\n\t\t\t\tdefault:\n\t\t\t\t\tif (brandMajor.startsWith('3g')) {\n\t\t\t\t\t\tif (brandMajor.startsWith('3g2')) {\n\t\t\t\t\t\t\treturn {ext: '3g2', mime: 'video/3gpp2'};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {ext: '3gp', mime: 'video/3gpp'};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {ext: 'mp4', mime: 'video/mp4'};\n\t\t\t}\n\t\t}\n\n\t\t// -- 10-byte signatures --\n\n\t\tif (this.checkString('REGEDIT4\\r\\n')) {\n\t\t\treturn {\n\t\t\t\text: 'reg',\n\t\t\t\tmime: 'application/x-ms-regedit',\n\t\t\t};\n\t\t}\n\n\t\t// -- 12-byte signatures --\n\n\t\t// RIFF file format which might be AVI, WAV, QCP, etc\n\t\tif (this.check([0x52, 0x49, 0x46, 0x46])) {\n\t\t\tif (this.checkString('WEBP', {offset: 8})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'webp',\n\t\t\t\t\tmime: 'image/webp',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.check([0x41, 0x56, 0x49], {offset: 8})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'avi',\n\t\t\t\t\tmime: 'video/vnd.avi',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.check([0x57, 0x41, 0x56, 0x45], {offset: 8})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'wav',\n\t\t\t\t\tmime: 'audio/wav',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// QLCM, QCP file\n\t\t\tif (this.check([0x51, 0x4C, 0x43, 0x4D], {offset: 8})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'qcp',\n\t\t\t\t\tmime: 'audio/qcelp',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (this.check([0x49, 0x49, 0x55, 0x00, 0x18, 0x00, 0x00, 0x00, 0x88, 0xE7, 0x74, 0xD8])) {\n\t\t\treturn {\n\t\t\t\text: 'rw2',\n\t\t\t\tmime: 'image/x-panasonic-rw2',\n\t\t\t};\n\t\t}\n\n\t\t// ASF_Header_Object first 80 bytes\n\t\tif (this.check([0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11, 0xA6, 0xD9])) {\n\t\t\tasync function readHeader() {\n\t\t\t\tconst guid = new Uint8Array(16);\n\t\t\t\tawait tokenizer.readBuffer(guid);\n\t\t\t\treturn {\n\t\t\t\t\tid: guid,\n\t\t\t\t\tsize: Number(await tokenizer.readToken(Token.UINT64_LE)),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tawait tokenizer.ignore(30);\n\t\t\t// Search for header should be in first 1KB of file.\n\t\t\twhile (tokenizer.position + 24 < tokenizer.fileInfo.size) {\n\t\t\t\tconst header = await readHeader();\n\t\t\t\tlet payload = header.size - 24;\n\t\t\t\tif (_check(header.id, [0x91, 0x07, 0xDC, 0xB7, 0xB7, 0xA9, 0xCF, 0x11, 0x8E, 0xE6, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65])) {\n\t\t\t\t\t// Sync on Stream-Properties-Object (B7DC0791-A9B7-11CF-8EE6-00C00C205365)\n\t\t\t\t\tconst typeId = new Uint8Array(16);\n\t\t\t\t\tpayload -= await tokenizer.readBuffer(typeId);\n\n\t\t\t\t\tif (_check(typeId, [0x40, 0x9E, 0x69, 0xF8, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B])) {\n\t\t\t\t\t\t// Found audio:\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\text: 'asf',\n\t\t\t\t\t\t\tmime: 'audio/x-ms-asf',\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\tif (_check(typeId, [0xC0, 0xEF, 0x19, 0xBC, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B])) {\n\t\t\t\t\t\t// Found video:\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\text: 'asf',\n\t\t\t\t\t\t\tmime: 'video/x-ms-asf',\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tawait tokenizer.ignore(payload);\n\t\t\t}\n\n\t\t\t// Default to ASF generic extension\n\t\t\treturn {\n\t\t\t\text: 'asf',\n\t\t\t\tmime: 'application/vnd.ms-asf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A])) {\n\t\t\treturn {\n\t\t\t\text: 'ktx',\n\t\t\t\tmime: 'image/ktx',\n\t\t\t};\n\t\t}\n\n\t\tif ((this.check([0x7E, 0x10, 0x04]) || this.check([0x7E, 0x18, 0x04])) && this.check([0x30, 0x4D, 0x49, 0x45], {offset: 4})) {\n\t\t\treturn {\n\t\t\t\text: 'mie',\n\t\t\t\tmime: 'application/x-mie',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x27, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], {offset: 2})) {\n\t\t\treturn {\n\t\t\t\text: 'shp',\n\t\t\t\tmime: 'application/x-esri-shape',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xFF, 0x4F, 0xFF, 0x51])) {\n\t\t\treturn {\n\t\t\t\text: 'j2c',\n\t\t\t\tmime: 'image/j2c',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x00, 0x00, 0x0C, 0x6A, 0x50, 0x20, 0x20, 0x0D, 0x0A, 0x87, 0x0A])) {\n\t\t\t// JPEG-2000 family\n\n\t\t\tawait tokenizer.ignore(20);\n\t\t\tconst type = await tokenizer.readToken(new Token.StringType(4, 'ascii'));\n\t\t\tswitch (type) {\n\t\t\t\tcase 'jp2 ':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'jp2',\n\t\t\t\t\t\tmime: 'image/jp2',\n\t\t\t\t\t};\n\t\t\t\tcase 'jpx ':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'jpx',\n\t\t\t\t\t\tmime: 'image/jpx',\n\t\t\t\t\t};\n\t\t\t\tcase 'jpm ':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'jpm',\n\t\t\t\t\t\tmime: 'image/jpm',\n\t\t\t\t\t};\n\t\t\t\tcase 'mjp2':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'mj2',\n\t\t\t\t\t\tmime: 'image/mj2',\n\t\t\t\t\t};\n\t\t\t\tdefault:\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0xFF, 0x0A])\n\t\t\t|| this.check([0x00, 0x00, 0x00, 0x0C, 0x4A, 0x58, 0x4C, 0x20, 0x0D, 0x0A, 0x87, 0x0A])\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'jxl',\n\t\t\t\tmime: 'image/jxl',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xFE, 0xFF])) { // UTF-16-BOM-BE\n\t\t\tif (this.checkString('<?xml ', {offset: 2, encoding: 'utf-16be'})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'xml',\n\t\t\t\t\tmime: 'application/xml',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn undefined; // Some unknown text based format\n\t\t}\n\n\t\tif (this.check([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1])) {\n\t\t\t// Detected Microsoft Compound File Binary File (MS-CFB) Format.\n\t\t\treturn {\n\t\t\t\text: 'cfb',\n\t\t\t\tmime: 'application/x-cfb',\n\t\t\t};\n\t\t}\n\n\t\t// Increase sample size from 32 to 256.\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: Math.min(256, tokenizer.fileInfo.size), mayBeLess: true});\n\n\t\tif (this.check([0x61, 0x63, 0x73, 0x70], {offset: 36})) {\n\t\t\treturn {\n\t\t\t\text: 'icc',\n\t\t\t\tmime: 'application/vnd.iccprofile',\n\t\t\t};\n\t\t}\n\n\t\t// ACE: requires 14 bytes in the buffer\n\t\tif (this.checkString('**ACE', {offset: 7}) && this.checkString('**', {offset: 12})) {\n\t\t\treturn {\n\t\t\t\text: 'ace',\n\t\t\t\tmime: 'application/x-ace-compressed',\n\t\t\t};\n\t\t}\n\n\t\t// -- 15-byte signatures --\n\n\t\tif (this.checkString('BEGIN:')) {\n\t\t\tif (this.checkString('VCARD', {offset: 6})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'vcf',\n\t\t\t\t\tmime: 'text/vcard',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.checkString('VCALENDAR', {offset: 6})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'ics',\n\t\t\t\t\tmime: 'text/calendar',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// `raf` is here just to keep all the raw image detectors together.\n\t\tif (this.checkString('FUJIFILMCCD-RAW')) {\n\t\t\treturn {\n\t\t\t\text: 'raf',\n\t\t\t\tmime: 'image/x-fujifilm-raf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('Extended Module:')) {\n\t\t\treturn {\n\t\t\t\text: 'xm',\n\t\t\t\tmime: 'audio/x-xm',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('Creative Voice File')) {\n\t\t\treturn {\n\t\t\t\text: 'voc',\n\t\t\t\tmime: 'audio/x-voc',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x04, 0x00, 0x00, 0x00]) && this.buffer.length >= 16) { // Rough & quick check Pickle/ASAR\n\t\t\tconst jsonSize = new DataView(this.buffer.buffer).getUint32(12, true);\n\n\t\t\tif (jsonSize > 12 && this.buffer.length >= jsonSize + 16) {\n\t\t\t\ttry {\n\t\t\t\t\tconst header = new TextDecoder().decode(this.buffer.subarray(16, jsonSize + 16));\n\t\t\t\t\tconst json = JSON.parse(header);\n\t\t\t\t\t// Check if Pickle is ASAR\n\t\t\t\t\tif (json.files) { // Final check, assuring Pickle/ASAR format\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\text: 'asar',\n\t\t\t\t\t\t\tmime: 'application/x-asar',\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t} catch {}\n\t\t\t}\n\t\t}\n\n\t\tif (this.check([0x06, 0x0E, 0x2B, 0x34, 0x02, 0x05, 0x01, 0x01, 0x0D, 0x01, 0x02, 0x01, 0x01, 0x02])) {\n\t\t\treturn {\n\t\t\t\text: 'mxf',\n\t\t\t\tmime: 'application/mxf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('SCRM', {offset: 44})) {\n\t\t\treturn {\n\t\t\t\text: 's3m',\n\t\t\t\tmime: 'audio/x-s3m',\n\t\t\t};\n\t\t}\n\n\t\t// Raw MPEG-2 transport stream (188-byte packets)\n\t\tif (this.check([0x47]) && this.check([0x47], {offset: 188})) {\n\t\t\treturn {\n\t\t\t\text: 'mts',\n\t\t\t\tmime: 'video/mp2t',\n\t\t\t};\n\t\t}\n\n\t\t// Blu-ray Disc Audio-Video (BDAV) MPEG-2 transport stream has 4-byte TP_extra_header before each 188-byte packet\n\t\tif (this.check([0x47], {offset: 4}) && this.check([0x47], {offset: 196})) {\n\t\t\treturn {\n\t\t\t\text: 'mts',\n\t\t\t\tmime: 'video/mp2t',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x42, 0x4F, 0x4F, 0x4B, 0x4D, 0x4F, 0x42, 0x49], {offset: 60})) {\n\t\t\treturn {\n\t\t\t\text: 'mobi',\n\t\t\t\tmime: 'application/x-mobipocket-ebook',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x44, 0x49, 0x43, 0x4D], {offset: 128})) {\n\t\t\treturn {\n\t\t\t\text: 'dcm',\n\t\t\t\tmime: 'application/dicom',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x4C, 0x00, 0x00, 0x00, 0x01, 0x14, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46])) {\n\t\t\treturn {\n\t\t\t\text: 'lnk',\n\t\t\t\tmime: 'application/x.ms.shortcut', // Invented by us\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x62, 0x6F, 0x6F, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'alias',\n\t\t\t\tmime: 'application/x.apple.alias', // Invented by us\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('Kaydara FBX Binary \\u0000')) {\n\t\t\treturn {\n\t\t\t\text: 'fbx',\n\t\t\t\tmime: 'application/x.autodesk.fbx', // Invented by us\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0x4C, 0x50], {offset: 34})\n\t\t\t&& (\n\t\t\t\tthis.check([0x00, 0x00, 0x01], {offset: 8})\n\t\t\t\t|| this.check([0x01, 0x00, 0x02], {offset: 8})\n\t\t\t\t|| this.check([0x02, 0x00, 0x02], {offset: 8})\n\t\t\t)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'eot',\n\t\t\t\tmime: 'application/vnd.ms-fontobject',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x06, 0x06, 0xED, 0xF5, 0xD8, 0x1D, 0x46, 0xE5, 0xBD, 0x31, 0xEF, 0xE7, 0xFE, 0x74, 0xB7, 0x1D])) {\n\t\t\treturn {\n\t\t\t\text: 'indd',\n\t\t\t\tmime: 'application/x-indesign',\n\t\t\t};\n\t\t}\n\n\t\t// Increase sample size from 256 to 512\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: Math.min(512, tokenizer.fileInfo.size), mayBeLess: true});\n\n\t\t// Requires a buffer size of 512 bytes\n\t\tif ((this.checkString('ustar', {offset: 257}) && (this.checkString('\\0', {offset: 262}) || this.checkString(' ', {offset: 262})))\n\t\t\t|| (this.check([0, 0, 0, 0, 0, 0], {offset: 257}) && tarHeaderChecksumMatches(this.buffer))) {\n\t\t\treturn {\n\t\t\t\text: 'tar',\n\t\t\t\tmime: 'application/x-tar',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xFF, 0xFE])) { // UTF-16-BOM-LE\n\t\t\tconst encoding = 'utf-16le';\n\t\t\tif (this.checkString('<?xml ', {offset: 2, encoding})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'xml',\n\t\t\t\t\tmime: 'application/xml',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.check([0xFF, 0x0E], {offset: 2}) && this.checkString('SketchUp Model', {offset: 4, encoding})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'skp',\n\t\t\t\t\tmime: 'application/vnd.sketchup.skp',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.checkString('Windows Registry Editor Version 5.00\\r\\n', {offset: 2, encoding})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'reg',\n\t\t\t\t\tmime: 'application/x-ms-regedit',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn undefined; // Some text based format\n\t\t}\n\n\t\tif (this.checkString('-----BEGIN PGP MESSAGE-----')) {\n\t\t\treturn {\n\t\t\t\text: 'pgp',\n\t\t\t\tmime: 'application/pgp-encrypted',\n\t\t\t};\n\t\t}\n\t};\n\t// Detections with limited supporting data, resulting in a higher likelihood of false positives\n\tdetectImprecise = async tokenizer => {\n\t\tthis.buffer = new Uint8Array(reasonableDetectionSizeInBytes);\n\n\t\t// Read initial sample size of 8 bytes\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: Math.min(8, tokenizer.fileInfo.size), mayBeLess: true});\n\n\t\tif (\n\t\t\tthis.check([0x0, 0x0, 0x1, 0xBA])\n\t\t\t|| this.check([0x0, 0x0, 0x1, 0xB3])\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mpg',\n\t\t\t\tmime: 'video/mpeg',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x01, 0x00, 0x00, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'ttf',\n\t\t\t\tmime: 'font/ttf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x00, 0x01, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'ico',\n\t\t\t\tmime: 'image/x-icon',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x00, 0x02, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'cur',\n\t\t\t\tmime: 'image/x-icon',\n\t\t\t};\n\t\t}\n\n\t\t// Adjust buffer to `mpegOffsetTolerance`\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: Math.min(2 + this.options.mpegOffsetTolerance, tokenizer.fileInfo.size), mayBeLess: true});\n\n\t\t// Check MPEG 1 or 2 Layer 3 header, or 'layer 0' for ADTS (MPEG sync-word 0xFFE)\n\t\tif (this.buffer.length >= (2 + this.options.mpegOffsetTolerance)) {\n\t\t\tfor (let depth = 0; depth <= this.options.mpegOffsetTolerance; ++depth) {\n\t\t\t\tconst type = this.scanMpeg(depth);\n\t\t\t\tif (type) {\n\t\t\t\t\treturn type;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tasync readTiffTag(bigEndian) {\n\t\tconst tagId = await this.tokenizer.readToken(bigEndian ? Token.UINT16_BE : Token.UINT16_LE);\n\t\tthis.tokenizer.ignore(10);\n\t\tswitch (tagId) {\n\t\t\tcase 50_341:\n\t\t\t\treturn {\n\t\t\t\t\text: 'arw',\n\t\t\t\t\tmime: 'image/x-sony-arw',\n\t\t\t\t};\n\t\t\tcase 50_706:\n\t\t\t\treturn {\n\t\t\t\t\text: 'dng',\n\t\t\t\t\tmime: 'image/x-adobe-dng',\n\t\t\t\t};\n\t\t\tdefault:\n\t\t}\n\t}\n\n\tasync readTiffIFD(bigEndian) {\n\t\tconst numberOfTags = await this.tokenizer.readToken(bigEndian ? Token.UINT16_BE : Token.UINT16_LE);\n\t\tfor (let n = 0; n < numberOfTags; ++n) {\n\t\t\tconst fileType = await this.readTiffTag(bigEndian);\n\t\t\tif (fileType) {\n\t\t\t\treturn fileType;\n\t\t\t}\n\t\t}\n\t}\n\n\tasync readTiffHeader(bigEndian) {\n\t\tconst version = (bigEndian ? Token.UINT16_BE : Token.UINT16_LE).get(this.buffer, 2);\n\t\tconst ifdOffset = (bigEndian ? Token.UINT32_BE : Token.UINT32_LE).get(this.buffer, 4);\n\n\t\tif (version === 42) {\n\t\t\t// TIFF file header\n\t\t\tif (ifdOffset >= 6) {\n\t\t\t\tif (this.checkString('CR', {offset: 8})) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'cr2',\n\t\t\t\t\t\tmime: 'image/x-canon-cr2',\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (ifdOffset >= 8) {\n\t\t\t\t\tconst someId1 = (bigEndian ? Token.UINT16_BE : Token.UINT16_LE).get(this.buffer, 8);\n\t\t\t\t\tconst someId2 = (bigEndian ? Token.UINT16_BE : Token.UINT16_LE).get(this.buffer, 10);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t(someId1 === 0x1C && someId2 === 0xFE)\n\t\t\t\t\t\t|| (someId1 === 0x1F && someId2 === 0x0B)) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\text: 'nef',\n\t\t\t\t\t\t\tmime: 'image/x-nikon-nef',\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait this.tokenizer.ignore(ifdOffset);\n\t\t\tconst fileType = await this.readTiffIFD(bigEndian);\n\t\t\treturn fileType ?? {\n\t\t\t\text: 'tif',\n\t\t\t\tmime: 'image/tiff',\n\t\t\t};\n\t\t}\n\n\t\tif (version === 43) {\t// Big TIFF file header\n\t\t\treturn {\n\t\t\t\text: 'tif',\n\t\t\t\tmime: 'image/tiff',\n\t\t\t};\n\t\t}\n\t}\n\n\t/**\n\tScan check MPEG 1 or 2 Layer 3 header, or 'layer 0' for ADTS (MPEG sync-word 0xFFE).\n\n\t@param offset - Offset to scan for sync-preamble.\n\t@returns {{ext: string, mime: string}}\n\t*/\n\tscanMpeg(offset) {\n\t\tif (this.check([0xFF, 0xE0], {offset, mask: [0xFF, 0xE0]})) {\n\t\t\tif (this.check([0x10], {offset: offset + 1, mask: [0x16]})) {\n\t\t\t\t// Check for (ADTS) MPEG-2\n\t\t\t\tif (this.check([0x08], {offset: offset + 1, mask: [0x08]})) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'aac',\n\t\t\t\t\t\tmime: 'audio/aac',\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Must be (ADTS) MPEG-4\n\t\t\t\treturn {\n\t\t\t\t\text: 'aac',\n\t\t\t\t\tmime: 'audio/aac',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// MPEG 1 or 2 Layer 3 header\n\t\t\t// Check for MPEG layer 3\n\t\t\tif (this.check([0x02], {offset: offset + 1, mask: [0x06]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mp3',\n\t\t\t\t\tmime: 'audio/mpeg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Check for MPEG layer 2\n\t\t\tif (this.check([0x04], {offset: offset + 1, mask: [0x06]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mp2',\n\t\t\t\t\tmime: 'audio/mpeg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Check for MPEG layer 1\n\t\t\tif (this.check([0x06], {offset: offset + 1, mask: [0x06]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mp1',\n\t\t\t\t\tmime: 'audio/mpeg',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport const supportedExtensions = new Set(extensions);\nexport const supportedMimeTypes = new Set(mimeTypes);\n","/**\n * 用于检测基于 binary signatures (magic numbers) 的文件格式,而不是基于文本的格式,如 .txt , .csv , .svg 等\n * 默认读取文件的前 4100 字节(足以检测大多数类型)\n *\n * supportedExtensions {Set<string>} 返回支持的文件扩展名\n * supportedMimeTypes {Set<string>} 返回支持的 MIME 类型\n *\n * FileTypeParser {Class} 自定义检测器\n * fileTypeFromTokenizer {Function} 自定义读取函数\n *\n * fileTypeFromBuffer {Function} 从 ArrayBuffer 检测文件类型 - Node & Browser\n * fileTypeFromStream {Function} 从流检测文件类型 - Node & Browser\n * fileTypeStream {Function} 从流检测文件类型 - Node & Browser\n *\n * fileTypeFromBlob {Function} 从 Blob 对象检测文件类型 - Node(<=18) & Browser\n * fileTypeFromFile {Function} 从文件路径检测文件类型 - Node & Browser(不支持)\n *\n * 源码中 FileTypeParser、fileTypeFromFile、fileTypeFromStream、fileTypeStream 在 node 端重新实现\n */\nimport type {\n AnyWebReadableByteStreamWithFileType as _AnyWebReadableByteStreamWithFileType,\n FileTypeOptions as _FileTypeOptions,\n FileTypeResult as _FileTypeResult,\n StreamOptions as _StreamOptions,\n} from 'file-type/core'\nimport {\n fileTypeFromBlob as _fileTypeFromBlob,\n fileTypeFromBuffer as _fileTypeFromBuffer,\n fileTypeFromStream as _fileTypeFromStream,\n fileTypeFromTokenizer as _fileTypeFromTokenizer,\n FileTypeParser as _FileTypeParser,\n fileTypeStream as _fileTypeStream,\n supportedExtensions as _supportedExtensions,\n supportedMimeTypes as _supportedMimeTypes,\n} from 'file-type/core'\n\nexport type AnyWebReadableByteStreamWithFileType = _AnyWebReadableByteStreamWithFileType\nexport type FileTypeOptions = _FileTypeOptions\nexport type FileTypeResult = _FileTypeResult\nexport type StreamOptions = _StreamOptions\n\nexport const fileTypeFromBlob = _fileTypeFromBlob\nexport const fileTypeFromBuffer = _fileTypeFromBuffer\nexport const fileTypeFromStream = _fileTypeFromStream\nexport const fileTypeFromTokenizer = _fileTypeFromTokenizer\nexport const FileTypeParser = _FileTypeParser\nexport const fileTypeStream = _fileTypeStream\nexport const fileTypeSupportedExtensions = _supportedExtensions\nexport const fileTypeSupportedMimeTypes = _supportedMimeTypes\n","export const DOMParser = window.DOMParser\nexport const XMLSerializer = window.XMLSerializer\n","/* eslint-disable perfectionist/sort-exports */\nexport type * from './interface'\nexport type * from './fileBuffer.browser'\nexport type * from './fileBytes'\nexport type * from './fileType.browser'\nexport type * from './fileXml.browser'\n\nexport { Buffer } from 'buffer-npm'\nexport * from './fileBuffer.browser'\nexport * from './fileBytes'\nexport * from './fileType.browser'\nexport * from './fileXml.browser'\n","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)\n * are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,\n * as-is, to `callback` when the throttled-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds\n * while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed\n * one final time after the last throttled-function call. (After the throttled-function has not been called for\n * `delay` milliseconds, the internal counter is reset).\n * @param {boolean} [options.noLeading] - Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback\n * immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that\n * callback will never executed if both noLeading = true and noTrailing = true.\n * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is\n * false (at end), schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nfunction throttle (delay, callback, options) {\n var _ref = options || {},\n _ref$noTrailing = _ref.noTrailing,\n noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,\n _ref$noLeading = _ref.noLeading,\n noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,\n _ref$debounceMode = _ref.debounceMode,\n debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n var timeoutID;\n var cancelled = false;\n\n // Keep track of the last time `callback` was executed.\n var lastExec = 0;\n\n // Function to clear existing timeout\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n }\n\n // Function to cancel next exec\n function cancel(options) {\n var _ref2 = options || {},\n _ref2$upcomingOnly = _ref2.upcomingOnly,\n upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;\n clearExistingTimeout();\n cancelled = !upcomingOnly;\n }\n\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n function wrapper() {\n for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n arguments_[_key] = arguments[_key];\n }\n var self = this;\n var elapsed = Date.now() - lastExec;\n if (cancelled) {\n return;\n }\n\n // Execute `callback` and update the `lastExec` timestamp.\n function exec() {\n lastExec = Date.now();\n callback.apply(self, arguments_);\n }\n\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n function clear() {\n timeoutID = undefined;\n }\n if (!noLeading && debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`\n * and noLeading != true.\n */\n exec();\n }\n clearExistingTimeout();\n if (debounceMode === undefined && elapsed > delay) {\n if (noLeading) {\n /*\n * In throttle mode with noLeading, if `delay` time has\n * been exceeded, update `lastExec` and schedule `callback`\n * to execute after `delay` ms.\n */\n lastExec = Date.now();\n if (!noTrailing) {\n timeoutID = setTimeout(debounceMode ? clear : exec, delay);\n }\n } else {\n /*\n * In throttle mode without noLeading, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n }\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n wrapper.cancel = cancel;\n\n // Return the wrapper function.\n return wrapper;\n}\n\n/* eslint-disable no-undefined */\n\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n *\n * @returns {Function} A new, debounced function.\n */\nfunction debounce (delay, callback, options) {\n var _ref = options || {},\n _ref$atBegin = _ref.atBegin,\n atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;\n return throttle(delay, callback, {\n debounceMode: atBegin !== false\n });\n}\n\nexport { debounce, throttle };\n//# sourceMappingURL=index.js.map\n","import { debounce, throttle } from 'throttle-debounce'\n\nexport const functionDebounce = debounce\nexport const functionThrottle = throttle\n","import { cloneDeep, cloneDeepWith } from 'es-toolkit'\nimport { isFunction, isPlainObject } from '../is'\n\nexport function objectClone<T>(obj: T, cloneValue?: { transfer?: Transferable[] }): T\nexport function objectClone<T>(obj: T, cloneValue?: (value: any, key: PropertyKey | undefined, obj: T, stack: Map<any, any>) => any): T\n\n/**\n * 深度克隆给定的对象\n * @template T -对象的类型\n * @param {T} obj -要克隆的对象\n * @param {Function | object | undefined} cloneValue - cloneDeepWith的第二个参数/structuredClone的第二个参数\n * @returns {T} -给定对象的深度克隆\n *\n * @reference https://developer.mozilla.org/zh-CN/docs/Web/API/Window/structuredClone\n * @reference https://es-toolkit.dev/zh_hans/reference/object/cloneDeepWith.html\n */\nexport function objectClone<T>(obj: T, cloneValue?: any): T {\n if (structuredClone) {\n return isPlainObject(cloneValue) ? structuredClone(obj, cloneValue) : structuredClone(obj)\n }\n return isFunction(cloneValue) ? cloneDeepWith(obj, cloneValue) : cloneDeep(obj)\n}\n","/**\n * @param { Promise } promise\n * @param { Object= } errorExt - Additional Information you can pass to the err object\n * @return { Promise }\n */\nfunction to(promise, errorExt) {\n return promise\n .then(function (data) { return [null, data]; })\n .catch(function (err) {\n if (errorExt) {\n Object.assign(err, errorExt);\n }\n return [err, undefined];\n });\n}\n\nexport { to };\nexport default to;\n//# sourceMappingURL=await-to-js.es5.js.map\n","import { to } from 'await-to-js'\n\nexport const promiseAwaitTo = to\n","/*\nHow it works:\n`this.#head` is an instance of `Node` which keeps track of its current value and nests another instance of `Node` that keeps the value that comes after it. When a value is provided to `.enqueue()`, the code needs to iterate through `this.#head`, going deeper and deeper to find the last value. However, iterating through every single item is slow. This problem is solved by saving a reference to the last value as `this.#tail` so that it can reference it to add a new value.\n*/\n\nclass Node {\n\tvalue;\n\tnext;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\t}\n}\n\nexport default class Queue {\n\t#head;\n\t#tail;\n\t#size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this.#head) {\n\t\t\tthis.#tail.next = node;\n\t\t\tthis.#tail = node;\n\t\t} else {\n\t\t\tthis.#head = node;\n\t\t\tthis.#tail = node;\n\t\t}\n\n\t\tthis.#size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this.#head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#head = this.#head.next;\n\t\tthis.#size--;\n\n\t\t// Clean up tail reference when queue becomes empty\n\t\tif (!this.#head) {\n\t\t\tthis.#tail = undefined;\n\t\t}\n\n\t\treturn current.value;\n\t}\n\n\tpeek() {\n\t\tif (!this.#head) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this.#head.value;\n\n\t\t// TODO: Node.js 18.\n\t\t// return this.#head?.value;\n\t}\n\n\tclear() {\n\t\tthis.#head = undefined;\n\t\tthis.#tail = undefined;\n\t\tthis.#size = 0;\n\t}\n\n\tget size() {\n\t\treturn this.#size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this.#head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n\n\t* drain() {\n\t\twhile (this.#head) {\n\t\t\tyield this.dequeue();\n\t\t}\n\t}\n}\n","import Queue from 'yocto-queue';\n\nexport default function pLimit(concurrency) {\n\tvalidateConcurrency(concurrency);\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst resumeNext = () => {\n\t\t// Process the next queued function if we're under the concurrency limit\n\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\tactiveCount++;\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst next = () => {\n\t\tactiveCount--;\n\t\tresumeNext();\n\t};\n\n\tconst run = async (function_, resolve, arguments_) => {\n\t\t// Execute the function and capture the result promise\n\t\tconst result = (async () => function_(...arguments_))();\n\n\t\t// Resolve immediately with the promise (don't wait for completion)\n\t\tresolve(result);\n\n\t\t// Wait for the function to complete (success or failure)\n\t\t// We catch errors here to prevent unhandled rejections,\n\t\t// but the original promise rejection is preserved for the caller\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\t// Decrement active count and process next queued function\n\t\tnext();\n\t};\n\n\tconst enqueue = (function_, resolve, arguments_) => {\n\t\t// Queue the internal resolve function instead of the run function\n\t\t// to preserve the asynchronous execution context.\n\t\tnew Promise(internalResolve => { // eslint-disable-line promise/param-names\n\t\t\tqueue.enqueue(internalResolve);\n\t\t}).then(run.bind(undefined, function_, resolve, arguments_)); // eslint-disable-line promise/prefer-await-to-then\n\n\t\t// Start processing immediately if we haven't reached the concurrency limit\n\t\tif (activeCount < concurrency) {\n\t\t\tresumeNext();\n\t\t}\n\t};\n\n\tconst generator = (function_, ...arguments_) => new Promise(resolve => {\n\t\tenqueue(function_, resolve, arguments_);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount,\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size,\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue() {\n\t\t\t\tqueue.clear();\n\t\t\t},\n\t\t},\n\t\tconcurrency: {\n\t\t\tget: () => concurrency,\n\n\t\t\tset(newConcurrency) {\n\t\t\t\tvalidateConcurrency(newConcurrency);\n\t\t\t\tconcurrency = newConcurrency;\n\n\t\t\t\tqueueMicrotask(() => {\n\t\t\t\t\t// eslint-disable-next-line no-unmodified-loop-condition\n\t\t\t\t\twhile (activeCount < concurrency && queue.size > 0) {\n\t\t\t\t\t\tresumeNext();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\tmap: {\n\t\t\tasync value(iterable, function_) {\n\t\t\t\tconst promises = Array.from(iterable, (value, index) => this(function_, value, index));\n\t\t\t\treturn Promise.all(promises);\n\t\t\t},\n\t\t},\n\t});\n\n\treturn generator;\n}\n\nexport function limitFunction(function_, options) {\n\tconst {concurrency} = options;\n\tconst limit = pLimit(concurrency);\n\n\treturn (...arguments_) => limit(() => function_(...arguments_));\n}\n\nfunction validateConcurrency(concurrency) {\n\tif (!((Number.isInteger(concurrency) || concurrency === Number.POSITIVE_INFINITY) && concurrency > 0)) {\n\t\tthrow new TypeError('Expected `concurrency` to be a number from 1 and up');\n\t}\n}\n","import type { LimitFunction, Options } from 'p-limit'\nimport pLimit, { limitFunction } from 'p-limit'\n\nexport type PromiseLimitFunctionOptions = Options\nexport type PromiseLimitFunction = LimitFunction\n\nexport const promiseLimit = pLimit\nexport const promiseLimitFunction = limitFunction\n","export const anyRuleWithBracket = {\n // 参考:\n // https://www.runoob.com/w3cnote/java-capture-group.html\n title: '匹配中/方括号',\n rule: /\\[([^\\]]+)\\]/g,\n examples: ['h[e]llo'],\n}\nexport const anyRuleWithBrace = {\n title: '匹配大/花括号',\n rule: /\\{([^}]+)\\}/g,\n examples: ['h{e}llo'],\n}\n","/* eslint-disable eslint-comments/no-unlimited-disable */\n/* eslint-disable */\n/* Generated by any-rule@0.3.18 */\nexport const anyRule1 = {\n title: '火车车次',\n rule: /^[GCDZTSPKXLY1-9]\\d{1,4}$/,\n examples: ['G1868', 'D102', 'D9', 'Z5', 'Z24', 'Z17']\n}\nexport const anyRule2 = {\n title: '手机机身码(IMEI)',\n rule: /^\\d{15,17}$/,\n examples: ['123456789012345', '1234567890123456', '12345678901234567']\n}\nexport const anyRule3 = {\n title: '必须带端口号的网址(或ip)',\n rule: /^((ht|f)tps?:\\/\\/)?[\\w-]+(\\.[\\w-]+)+:\\d{1,5}\\/?$/,\n examples: ['https://www.qq.com:8080', '127.0.0.1:5050', 'baidu.com:8001', 'http://192.168.1.1:9090'],\n counterExamples: ['192.168.1.1', 'https://www.jd.com']\n}\nexport const anyRule4 = {\n // 参考: \n // https://baike.baidu.com/item/%E9%A1%B6%E7%BA%A7%E5%9F%9F%E5%90%8D#4_1\n // https://baike.baidu.com/item/%E9%A1%B6%E7%BA%A7%E5%9F%9F%E5%90%8D#7\n // 也参考谷歌浏览器的地址栏, 如果输入非字母不会被识别为域名\n title: '网址(URL)',\n rule: /^(((ht|f)tps?):\\/\\/)?([^!@#$%^&*?.\\s-]([^!@#$%^&*?.\\s]{0,63}[^!@#$%^&*?.\\s])?\\.)+[a-z]{2,6}\\/?/,\n examples: ['www.qq.com', 'https://vuejs.org/v2/api/#v-model', 'www.qq.99', '//www.qq.com', 'www.腾讯.cs', 'ftp://baidu.qq', 'http://baidu.com', 'https://www.amap.com/search?id=BV10060895&city=420111&geoobj=113.207951%7C29.992557%7C115.785782%7C31.204369&query_type=IDQ&query=%E5%85%89%E8%B0%B7%E5%B9%BF%E5%9C%BA(%E5%9C%B0%E9%93%81%E7%AB%99)&zoom=10.15', '360.com:8080/vue/#/a=1&b=2'],\n counterExamples: ['....']\n}\nexport const anyRule5 = {\n title: '统一社会信用代码',\n rule: /^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/,\n examples: ['91230184MA1BUFLT44', '92371000MA3MXH0E3W'],\n}\nexport const anyRule6 = {\n title: '统一社会信用代码(宽松匹配)(15位/18位/20位数字/字母)',\n rule: /^(([0-9A-Za-z]{15})|([0-9A-Za-z]{18})|([0-9A-Za-z]{20}))$/,\n examples: ['91110108772551611J', '911101085923662400']\n}\nexport const anyRule7 = {\n title: '迅雷链接',\n rule: /^thunderx?:\\/\\/[a-zA-Z\\d]+=$/,\n examples: ['thunder://QUEsICdtYWduZXQ6P3h0PXVybjpidGloOjBCQTE0RTUxRkUwNjU1RjE0Qzc4NjE4RjY4NDY0QjZFNTEyNjcyOUMnWlo='],\n}\nexport const anyRule8 = {\n title: 'ed2k链接(宽松匹配)',\n rule: /^ed2k:\\/\\/\\|file\\|.+\\|\\/$/,\n examples: ['ed2k://|file|%E5%AF%84%E7%94%9F%E8%99%AB.PARASITE.2019.HD-1080p.X264.AAC-UUMp4(ED2000.COM).mp4|2501554832|C0B93E0879C6071CBED732C20CE577A3|h=5HTKZPQFYRKORN52I3M7GQ4QQCIHFIBV|/'],\n}\nexport const anyRule9 = {\n title: '磁力链接(宽松匹配)',\n rule: /^magnet:\\?xt=urn:btih:[0-9a-fA-F]{40,}.*$/,\n examples: ['magnet:?xt=urn:btih:40A89A6F4FB1498A98087109D012A9A851FBE0FC'],\n}\nexport const anyRule10 = {\n title: '子网掩码(不包含 0.0.0.0)',\n rule: /^(254|252|248|240|224|192|128)\\.0\\.0\\.0|255\\.(254|252|248|240|224|192|128|0)\\.0\\.0|255\\.255\\.(254|252|248|240|224|192|128|0)\\.0|255\\.255\\.255\\.(255|254|252|248|240|224|192|128|0)$/,\n examples: ['255.255.255.0', '255.255.255.255', '255.240.0.0']\n}\nexport const anyRule11 = {\n title: 'linux\"隐藏文件\"路径',\n rule: /^\\/(?:[^/]+\\/)*\\.[^/]*/,\n examples: ['/usr/ad/.dd', '/root/.gitignore', '/.gitignore']\n}\nexport const anyRule12 = {\n title: 'linux文件夹路径',\n rule: /^\\/(?:[^/]+\\/)*$/,\n examples: ['/usr/ad/dd/', '/', '/root/', '/ a a / a / a a /']\n}\nexport const anyRule13 = {\n title: 'linux文件路径',\n rule: /^\\/(?:[^/]+\\/)*[^/]+$/,\n examples: ['/root/b.ts', '/root/abc']\n}\nexport const anyRule14 = {\n title: 'window\"文件夹\"路径',\n rule: /^[a-zA-Z]:\\\\(?:\\w+\\\\?)*$/,\n examples: ['C:\\\\Users\\\\Administrator\\\\Desktop', 'e:\\\\m\\\\']\n}\nexport const anyRule15 = {\n title: 'window下\"文件\"路径',\n rule: /^[a-zA-Z]:\\\\(?:\\w+\\\\)*\\w+\\.\\w+$/,\n examples: ['C:\\\\Users\\\\Administrator\\\\Desktop\\\\qq.link', 'e:\\\\m\\\\vscode.exe']\n}\nexport const anyRule16 = {\n title: '股票代码(A股)',\n rule: /^(s[hz]|S[HZ])(000[\\d]{3}|002[\\d]{3}|300[\\d]{3}|600[\\d]{3}|60[\\d]{4})$/,\n examples: ['sz000858', 'SZ002136', 'sz300675', 'SH600600', 'sh601155']\n}\nexport const anyRule17 = {\n title: '大于等于0, 小于等于150, 支持小数位出现5, 如145.5, 用于判断考卷分数',\n rule: /^150$|^(?:\\d|[1-9]\\d|1[0-4]\\d)(?:\\.5)?$/,\n examples: [150, 100.5]\n}\nexport const anyRule18 = {\n title: 'html注释',\n rule: /<!--[\\s\\S]*?-->/g,\n examples: ['<!--<div class=\"_bubble\"></div>--><div>chenguzhen87</div><div class=\"_bubble\"></div>-->']\n}\nexport const anyRule19 = {\n title: 'md5格式(32位)',\n rule: /^[a-fA-F0-9]{32}$/,\n examples: ['21fe181c5bfc16306a6828c1f7b762e8'],\n}\nexport const anyRule20 = {\n title: 'GUID/UUID',\n rule: /^[a-f\\d]{4}(?:[a-f\\d]{4}-){4}[a-f\\d]{12}$/i,\n examples: ['e155518c-ca1b-443c-9be9-fe90fdab7345', '41E3DAF5-6E37-4BCC-9F8E-0D9521E2AA8D', '00000000-0000-0000-0000-000000000000'],\n}\nexport const anyRule21 = {\n title: '版本号(version)格式必须为X.Y.Z',\n rule: /^\\d+(?:\\.\\d+){2}$/,\n examples: ['16.3.10']\n}\nexport const anyRule22 = {\n title: '视频(video)链接地址(视频格式可按需增删)',\n rule: /^https?:\\/\\/(.+\\/)+.+(\\.(swf|avi|flv|mpg|rm|mov|wav|asf|3gp|mkv|rmvb|mp4))$/i,\n examples: ['http://www.abc.com/video/wc.avi']\n}\nexport const anyRule23 = {\n title: '图片(image)链接地址(图片格式可按需增删)',\n rule: /^https?:\\/\\/(.+\\/)+.+(\\.(gif|png|jpg|jpeg|webp|svg|psd|bmp|tif))$/i,\n examples: ['https://www.abc.com/logo.png', 'http://www.abc.com/logo.png']\n}\nexport const anyRule24 = {\n title: '24小时制时间(HH:mm:ss)',\n rule: /^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$/,\n examples: ['23:34:55']\n}\nexport const anyRule25 = {\n title: '12小时制时间(hh:mm:ss)',\n rule: /^(?:1[0-2]|0?[1-9]):[0-5]\\d:[0-5]\\d$/,\n examples: ['11:34:55'],\n counterExamples: ['23:34:55']\n}\nexport const anyRule26 = {\n title: 'base64格式',\n rule: /^\\s*data:(?:[a-z]+\\/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!$&',()*+;=\\-._~:@/?%\\s]*?)\\s*$/i,\n examples: ['data:image/gif;base64,xxxx==']\n}\nexport const anyRule27 = {\n title: '数字/货币金额(支持负数、千分位分隔符)',\n rule: /^-?\\d{1,3}(,\\d{3})*(\\.\\d{1,2})?$/ ,\n examples: [100, -0.99, 3, 234.32, -1, 900, 235.09, '12,345,678.90']\n}\nexport const anyRule28 = {\n title: '银行卡号(10到30位, 覆盖对公/私账户, 参考[微信支付](https://pay.weixin.qq.com/wiki/doc/api/xiaowei.php?chapter=22_1))',\n rule: /^[1-9]\\d{9,29}$/,\n examples: [6234567890, 6222026006705354217]\n}\nexport const anyRule29 = {\n title: '中文姓名',\n rule: /^(?:[\\u4e00-\\u9fa5·]{2,16})$/,\n examples: ['葛二蛋', '凯文·杜兰特', '德克·维尔纳·诺维茨基']\n}\nexport const anyRule30 = {\n title: '英文姓名',\n rule: /(^[a-zA-Z][a-zA-Z\\s]{0,20}[a-zA-Z]$)/,\n examples: ['James', 'Kevin Wayne Durant', 'Dirk Nowitzki']\n}\nexport const anyRule31 = {\n title: '车牌号(新能源)',\n rule: /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z](([DF]((?![IO])[a-zA-Z0-9](?![IO]))[0-9]{4})|([0-9]{5}[DF]))$/,\n examples: ['京AD92035', '甘G23459F', '京A19203D'],\n}\nexport const anyRule32 = {\n title: '车牌号(非新能源)',\n rule: /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]$/,\n examples: ['京A00599', '黑D23908']\n}\nexport const anyRule33 = {\n title: '车牌号(新能源+非新能源)',\n rule: /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$/,\n examples: ['京A12345D', '京A00599', '京AD92035', '甘G23459F', '京AA92035'],\n counterExamples: ['宁AD1234555555', '浙苏H6F681']\n}\nexport const anyRule34 = {\n title: '手机号(mobile phone)中国(严谨), 根据工信部最新公布的手机号段',\n rule: /^(?:(?:\\+|00)86)?1(?:(?:3[\\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\\d])|(?:9[01256789]))\\d{8}$/,\n examples: ['008618311006933', '+8617888829981', '19119255642', '19519255642']\n}\nexport const anyRule35 = {\n title: '手机号(mobile phone)中国(宽松), 只要是13,14,15,16,17,18,19开头即可',\n rule: /^(?:(?:\\+|00)86)?1[3-9]\\d{9}$/,\n examples: ['008618311006933', '+8617888829981', '19119255642']\n}\nexport const anyRule36 = {\n title: '手机号(mobile phone)中国(最宽松), 只要是1开头即可, 如果你的手机号是用来接收短信, 优先建议选择这一条',\n rule: /^(?:(?:\\+|00)86)?1\\d{10}$/,\n examples: ['008618311006933', '+8617888829981', '19119255642']\n}\nexport const anyRule37 = {\n title: '日期(宽松)',\n rule: /^\\d{1,4}(-)(1[0-2]|0?[1-9])\\1(0?[1-9]|[1-2]\\d|30|31)$/,\n examples: ['1990-12-12', '1-1-1', '0000-1-1'],\n counterExamples: ['2020-00-01']\n}\nexport const anyRule38 = {\n title: '日期(严谨, 支持闰年判断)',\n rule: /^(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)$/,\n examples: ['1990-12-12', '2000-02-29'],\n counterExamples: ['2021-02-29']\n}\nexport const anyRule39 = {\n title: '中国省',\n rule: /^浙江|上海|北京|天津|重庆|黑龙江|吉林|辽宁|内蒙古|河北|新疆|甘肃|青海|陕西|宁夏|河南|山东|山西|安徽|湖北|湖南|江苏|四川|贵州|云南|广西|西藏|江西|广东|福建|台湾|海南|香港|澳门$/,\n examples: ['浙江', '台湾'],\n counterExamples: ['哈尔滨']\n}\nexport const anyRule40 = {\n title: '可以被moment转化成功的时间 YYYYMMDD HH:mm:ss',\n rule: /^\\d{4}([/:-\\S])(1[0-2]|0?[1-9])\\1(0?[1-9]|[1-2]\\d|30|31) (?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$/,\n examples: ['2020/01/01 23:59:59', '2020-01-01 00:00:00', '20200101 11:11:11'],\n counterExamples: ['2020/00/01 23:59:59', '2020-01/01 23:59:59', '2020-01-01 23:59:61', '2020-01-0100:00:00',]\n}\nexport const anyRule41 = {\n title: 'email(邮箱)',\n rule: /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n examples: ['90203918@qq.com', 'nbilly@126.com', '汉字@qq.com']\n}\nexport const anyRule42 = {\n title: '座机(tel phone)电话(国内),如: 0341-86091234',\n rule: /^(?:(?:\\d{3}-)?\\d{8}|^(?:\\d{4}-)?\\d{7,8})(?:-\\d+)?$/,\n examples: ['0936-4211235', '89076543', '010-12345678-1234']\n}\nexport const anyRule43 = {\n title: '身份证号(1代,15位数字)',\n rule: /^[1-9]\\d{7}(?:0\\d|10|11|12)(?:0[1-9]|[1-2][\\d]|30|31)\\d{3}$/,\n examples: ['123456991010193']\n}\nexport const anyRule44 = {\n title: '身份证号(2代,18位数字),最后一位是校验位,可能为数字或字符X',\n rule: /^[1-9]\\d{5}(?:18|19|20)\\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\\d|30|31)\\d{3}[\\dXx]$/,\n examples: ['12345619991205131x']\n}\nexport const anyRule45 = {\n title: '身份证号, 支持1/2代(15位/18位数字)',\n rule: /^\\d{6}((((((19|20)\\d{2})(0[13-9]|1[012])(0[1-9]|[12]\\d|30))|(((19|20)\\d{2})(0[13578]|1[02])31)|((19|20)\\d{2})02(0[1-9]|1\\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\\d{3})|((((\\d{2})(0[13-9]|1[012])(0[1-9]|[12]\\d|30))|((\\d{2})(0[13578]|1[02])31)|((\\d{2})02(0[1-9]|1\\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\\d{2}))(\\d|X|x)$/,\n examples: ['622223199912051311', '12345619991205131x', '123456991010193']\n}\nexport const anyRule46 = {\n title: '护照(包含香港、澳门)',\n rule: /(^[EeKkGgDdSsPpHh]\\d{8}$)|(^(([Ee][a-fA-F])|([DdSsPp][Ee])|([Kk][Jj])|([Mm][Aa])|(1[45]))\\d{7}$)/,\n examples: ['s28233515', '141234567', '159203084', 'MA1234567', 'K25345719']\n}\nexport const anyRule47 = {\n title: '帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线组合',\n rule: /^[a-zA-Z]\\w{4,15}$/,\n examples: ['justin', 'justin1989', 'justin_666']\n}\nexport const anyRule48 = {\n title: '中文/汉字',\n // rule: /^[\\u4E00-\\u9FA5]+$/,\n rule: /^(?:[\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uFA0E\\uFA0F\\uFA11\\uFA13\\uFA14\\uFA1F\\uFA21\\uFA23\\uFA24\\uFA27-\\uFA29]|[\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0])+$/,\n examples: ['正则', '前端']\n}\nexport const anyRule49 = {\n title: '小数(支持科学计数)',\n rule: /^[+-]?(\\d+([.]\\d*)?([eE][+-]?\\d+)?|[.]\\d+([eE][+-]?\\d+)?)$/,\n examples: ['0.0', '0.09','4E+4']\n}\nexport const anyRule50 = {\n title: '只包含数字',\n rule: /^\\d+$/,\n examples: [12345678]\n}\nexport const anyRule51 = {\n title: 'html标签(宽松匹配)',\n rule: /<(\\w+)[^>]*>(.*?<\\/\\1>)?/,\n examples: ['<div id=\"app\"> 2333 </div>', '<input type=\"text\">', '<br>']\n}\nexport const anyRule52 = {\n title: '匹配中文汉字和中文标点',\n rule: /[\\u4e00-\\u9fa5|\\u3002|\\uff1f|\\uff01|\\uff0c|\\u3001|\\uff1b|\\uff1a|\\u201c|\\u201d|\\u2018|\\u2019|\\uff08|\\uff09|\\u300a|\\u300b|\\u3008|\\u3009|\\u3010|\\u3011|\\u300e|\\u300f|\\u300c|\\u300d|\\ufe43|\\ufe44|\\u3014|\\u3015|\\u2026|\\u2014|\\uff5e|\\ufe4f|\\uffe5]/,\n examples: [\"匹配中文汉字以及中文标点符号 。 ? ! , 、 ; : “ ” ‘ ' ( ) 《 》 〈 〉 【 】 『 』 「 」 ﹃ ﹄ 〔 〕 … — ~ ﹏ ¥\"]\n}\nexport const anyRule53 = {\n title: 'qq号格式正确',\n rule: /^[1-9][0-9]{4,10}$/,\n examples: [903013545, 9020304]\n}\nexport const anyRule54 = {\n title: '数字和字母组成',\n rule: /^[A-Za-z0-9]+$/,\n examples: ['james666', 'haha233hi']\n}\nexport const anyRule55 = {\n title: '英文字母',\n rule: /^[a-zA-Z]+$/,\n examples: ['Russel']\n}\nexport const anyRule56 = {\n title: '小写英文字母组成',\n rule: /^[a-z]+$/,\n examples: ['russel']\n}\nexport const anyRule57 = {\n title: '大写英文字母',\n rule: /^[A-Z]+$/,\n examples: ['ABC', 'KD']\n}\nexport const anyRule58 = {\n title: '密码强度校验,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符',\n rule: /^\\S*(?=\\S{6,})(?=\\S*\\d)(?=\\S*[A-Z])(?=\\S*[a-z])(?=\\S*[!@#$%^&*? ])\\S*$/,\n examples: ['Kd@curry666']\n}\nexport const anyRule59 = {\n title: '用户名校验,4到16位(字母,数字,下划线,减号)',\n rule: /^[\\w-]{4,16}$/,\n examples: ['xiaohua_qq']\n}\nexport const anyRule60 = {\n title: 'ip-v4[:端口]',\n rule: /^((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])(?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$/,\n examples: ['172.16.0.0', '172.16.0.0:8080', '127.0.0.0', '127.0.0.0:998']\n}\nexport const anyRule61 = {\n title: 'ip-v6[:端口]',\n rule: /(^(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$)|(^\\[(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))\\](?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$)/i,\n examples: ['2031:0000:130f:0000:0000:09c0:876a:130b', '[2031:0000:130f:0000:0000:09c0:876a:130b]:8080']\n}\nexport const anyRule62 = {\n title: '16进制颜色',\n rule: /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3}|[a-fA-F0-9]{8}|[a-fA-F0-9]{4})$/,\n examples: ['#f00', '#F90', '#000', '#fe9de8', '#f8f8f8ff', '#f003']\n}\nexport const anyRule63 = {\n title: '微信号(wx),6至20位,以字母开头,字母,数字,减号,下划线',\n rule: /^[a-zA-Z][-_a-zA-Z0-9]{5,19}$/,\n examples: ['github666', 'kd_-666']\n}\nexport const anyRule64 = {\n title: '邮政编码(中国)',\n rule: /^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\\d{4}$/,\n examples: ['734500', '100101']\n}\nexport const anyRule65 = {\n title: '中文和数字',\n rule: /^((?:[\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uFA0E\\uFA0F\\uFA11\\uFA13\\uFA14\\uFA1F\\uFA21\\uFA23\\uFA24\\uFA27-\\uFA29]|[\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0])|(\\d))+$/,\n examples: ['哈哈哈', '你好6啊']\n}\nexport const anyRule66 = {\n title: '不能包含字母',\n rule: /^[^A-Za-z]*$/,\n examples: ['你好6啊', '@¥()!']\n}\nexport const anyRule67 = {\n title: 'java包名',\n rule: /^([a-zA-Z_]\\w*)+([.][a-zA-Z_]\\w*)+$/,\n examples: ['com.bbb.name']\n}\nexport const anyRule68 = {\n title: 'mac地址',\n rule: /^(([a-f0-9][0,2,4,6,8,a,c,e]:([a-f0-9]{2}:){4})|([a-f0-9][0,2,4,6,8,a,c,e]-([a-f0-9]{2}-){4}))[a-f0-9]{2}$/i,\n examples: ['38:f9:d3:4b:f5:51', '00-0C-29-CA-E4-66']\n}\nexport const anyRule69 = {\n title: '匹配连续重复的字符',\n rule: /(.)\\1+/,\n examples: ['我我我', '112233', '11234']\n}\nexport const anyRule70 = {\n title: '数字和英文字母组成,并且同时含有数字和英文字母',\n rule: /^(?=.*[a-zA-Z])(?=.*\\d).+$/,\n examples: ['我a我1我', 'a对1']\n}\nexport const anyRule71 = {\n title: '香港身份证 ',\n rule: /^[a-zA-Z]\\d{6}\\([\\dA]\\)$/,\n examples: ['K034169(1)']\n}\nexport const anyRule72 = {\n // 参考: \n // https://baike.baidu.com/item/%E6%BE%B3%E9%97%A8%E5%B1%85%E6%B0%91%E8%BA%AB%E4%BB%BD%E8%AF%81/12509098?fr=aladdin#5\n title: '澳门身份证 ',\n rule: /^[1|5|7]\\d{6}\\(\\d\\)$/,\n examples: ['5686611(1)']\n}\nexport const anyRule73 = {\n title: '台湾身份证 ',\n rule: /^[a-zA-Z][0-9]{9}$/,\n examples: ['U193683453']\n}\nexport const anyRule74 = {\n title: '大写字母,小写字母,数字,特殊符号 `@#$%^&*`~()-+=` 中任意3项密码',\n rule: /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\W_!@#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z\\W_!@#$%^&*`~()-+=]+$)(?![0-9\\W_!@#$%^&*`~()-+=]+$)[a-zA-Z0-9\\W_!@#$%^&*`~()-+=]/,\n examples: ['a1@', 'A1@', 'Aa@']\n}\nexport const anyRule75 = {\n title: 'ASCII码表中的全部的特殊字符',\n rule: /[\\x21-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7B-\\x7E]+/,\n examples: [\"[\", \".\", \"^\", \"&3%\"]\n}\nexport const anyRule76 = {\n title: '正整数,不包含0',\n rule: /^\\+?[1-9]\\d*$/,\n examples: [1231]\n}\nexport const anyRule77 = {\n title: '负整数,不包含0',\n rule: /^-[1-9]\\d*$/,\n examples: [-1231]\n}\nexport const anyRule78 = {\n title: '整数',\n rule: /^(?:0|(?:-?[1-9]\\d*))$/,\n examples: [-1231, 123, 0],\n counterExamples: ['01']\n}\nexport const anyRule79 = {\n title: '浮点数',\n rule: /^(-?[1-9]\\d*\\.\\d+|-?0\\.\\d*[1-9]\\d*|0\\.0+)$/,\n examples: [\"1.23\", \"-1.01\", \"0.00\"]\n // allow \"1.23\", allow \"-0.1\", allow \"0.00\", ban \"-0.00\", ban \"2.\", allow \"2.0\"\n}\nexport const anyRule80 = {\n title: '浮点数(严格)',\n rule: /^(-?[1-9]\\d*\\.\\d+|-?0\\.\\d*[1-9])$/,\n examples: [\"1.23\", \"-1.01\"]\n // allow \"1.23\", allow \"-0.1\", ban \"2.\", ban \"2.0\"\n}\nexport const anyRule81 = {\n title: 'email(支持中文邮箱)',\n rule: /^[A-Za-z0-9\\u4e00-\\u9fa5]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$/,\n examples: ['90203918@qq.com', 'nbilly@126.com', '啦啦啦@126.com']\n}\nexport const anyRule82 = {\n title: '域名(非网址, 不包含协议)',\n rule: /^([0-9a-zA-Z-]{1,}\\.)+([a-zA-Z]{2,})$/,\n examples: ['www.baidu.com',\n 'baidu.com',\n 'baidu.com.cn',\n 'api.baidu.com',\n 'nodejs.org',\n 'nodejs.cn'],\n counterExamples: ['http://baidu.com', 'https://baidu.com', 'www.百度.com']\n}\nexport const anyRule83 = {\n title: '军官/士兵证',\n rule: /^[\\u4E00-\\u9FA5](字第)([0-9a-zA-Z]{4,8})(号?)$/,\n examples: ['军字第2001988号', '士字第P011816X号'],\n}\nexport const anyRule84 = {\n title: '户口薄',\n rule: /(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)/,\n examples: ['441421999707223115'],\n}\n","'use strict';\n\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\n */\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n}\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n if (isBuffer(obj)){\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless, skipUndefined} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n const msg = error && error.message ? error.message : 'Error';\n\n // Prefer explicit code; otherwise copy the low-level error's code (e.g. ECONNREFUSED)\n const errCode = code == null && error ? error.code : code;\n AxiosError.call(axiosError, msg, errCode, config, request, response);\n\n // Chain the original error on the standard field; non-enumerable to avoid JSON noise\n if (error && axiosError.cause == null) {\n Object.defineProperty(axiosError, 'cause', { value: error, configurable: true });\n }\n\n axiosError.name = (error && error.name) || 'Error';\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {void}\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, this.parseReviver);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite)\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure, sameSite) {\n if (typeof document === 'undefined') return;\n\n const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n if (utils.isNumber(expires)) {\n cookie.push(`expires=${new Date(expires).toUTCString()}`);\n }\n if (utils.isString(path)) {\n cookie.push(`path=${path}`);\n }\n if (utils.isString(domain)) {\n cookie.push(`domain=${domain}`);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n if (utils.isString(sameSite)) {\n cookie.push(`SameSite=${sameSite}`);\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n return match ? decodeURIComponent(match[1]) : null;\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000, '/');\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b, prop) => mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true)\n };\n\n utils.forEach(Object.keys({...config1, ...config2}), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\n } \n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n \n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst {isFunction} = utils;\n\nconst globalFetchAPI = (({Request, Response}) => ({\n Request, Response\n}))(utils.global);\n\nconst {\n ReadableStream, TextEncoder\n} = utils.global;\n\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst factory = (env) => {\n env = utils.merge.call({\n skipUndefined: true\n }, globalFetchAPI, env);\n\n const {fetch: envFetch, Request, Response} = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Request(str).arrayBuffer())\n );\n\n const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream = isResponseSupported && isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n };\n\n isFetchSupported && ((() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n })());\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n }\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n }\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request = null;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && \"credentials\" in Request.prototype;\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions));\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n }\n}\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = (config && config.env) || {};\n const {fetch, Request, Response} = env;\n const seeds = [\n Request, Response, fetch\n ];\n\n let len = seeds.length, i = len,\n seed, target, map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, target = (i ? new Map() : factory(env)))\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n * \n * @type {Object<string, Function|Object>}\n */\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n }\n};\n\n// Assign adapter names for easier debugging and identification\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', { value });\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', { value });\n }\n});\n\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n * \n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n * \n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n * \n * @param {Array<string|Function>|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const { length } = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n}\n\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n /**\n * Resolve an adapter from a list of adapter names or functions.\n * @type {Function}\n */\n getAdapter,\n\n /**\n * Exposes all known adapters\n * @type {Object<string, Function|Object>}\n */\n adapters: knownAdapters\n};\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.13.2\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n WebServerIsDown: 521,\n ConnectionTimedOut: 522,\n OriginIsUnreachable: 523,\n TimeoutOccurred: 524,\n SslHandshakeFailed: 525,\n InvalidSslCertificate: 526,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import type { Argument } from 'classnames'\nimport type { ClassValue } from 'clsx'\nimport clsn from 'classnames'\nimport clsx from 'clsx'\n\nexport type StringClsnValue = Argument\nexport type StringClsxValue = ClassValue\n\nexport const stringClsn = (...args: Argument[]): string => clsn(...args)\nexport const stringClsx = clsx\n","import { at, head } from 'es-toolkit'\nimport { isNotNumber, isUndefined } from '../is'\n\n/**\n * 方法 `String.prototype.replace` 的第二个参数的快捷实现,可根据对象的键值对进行替换\n *\n * @example args = [ 'h', 0, 'hello' ]\n * @example args = [ '[h]', 'h', 0, '[h][e][l][l][o]' ]\n */\nexport function stringReplaceParametersWithObj(obj: Record<string, string>) {\n return (...args: any[]): string => {\n const substring = at(args, [-3])[0]\n if (substring && Object.prototype.hasOwnProperty.call(obj, substring)) {\n return obj[substring]\n }\n return head(args)\n }\n}\n\n/**\n * 方法 `String.prototype.slice` 的参数,额外支持索引区间排序问题\n *\n * @reference https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice\n * @reference https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring\n * @reference https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr\n */\nexport function stringSliceParametersWithSort(start?: number, end?: number): [number, number?] {\n const startArg = (Number.isSafeInteger(start) ? start : 0) as number // 不允许 undefined\n const endArg = !isNotNumber(end) ? end : 0 // 允许 undefined\n\n if (isUndefined(endArg)) {\n return [startArg]\n }\n if (startArg >= 0 && endArg < 0) {\n return [startArg, endArg]\n }\n if (startArg < 0 && endArg >= 0) {\n return [endArg, startArg]\n }\n // 相同区间按数值大小升序排列\n return ([startArg, endArg].sort((a, b) => a - b)) as [number, number]\n}\n","/* eslint-disable eslint-comments/no-unlimited-disable */\nimport type { AxiosInstance, AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from 'axios'\nimport type { AxiosCreateDefaultsWrapper, AxiosInterceptorParameters, AxiosRequestConfigWrapper, AxiosResponseWrapper } from './interface'\nimport axios, { AxiosError } from 'axios'\nimport { CONSTANT_EMPTY_OBJECT } from '../constants'\nimport { isEmpty, isError, isNil } from '../is'\nimport { anyRuleWithBracket } from '../regexp'\nimport { stringReplaceParametersWithObj } from '../string'\n\n/**\n * 自定义 axios 请求\n * @function 1. 请求体: 支持 argsRegexp、args 实现动态路径\n * @function 2. 拦截器: 在不改变 axios 原始行为的前提下,实现对应拦截器的特性开关 (不推荐: runWhen 仅支持请求拦截器,不支持响应拦截器)\n * @function 3. 响应体: 在 safeRequest 实现错误优先\n * @reference https://axios-http.com/zh/docs/req_config\n */\nexport class Request<CustomOptions extends Record<string, any> = Record<string, any>> {\n /**\n * axios 实例\n */\n #instance: AxiosInstance\n\n /**\n * 在拦截器内获取指定名称的配置选项\n * @param {InternalAxiosRequestConfig} config 当前请求的配置\n * @param {string} optionName 配置选项名称\n * @returns {any} 配置选项的值\n */\n static getOptionValue<Value = any, ReqData = any>(config: InternalAxiosRequestConfig<ReqData>, optionName: string): Value {\n // @ts-expect-error 获取指定的配置选项的值\n return config?.fetchOptions?.[optionName]\n }\n\n /**\n * 将额外的自定义 options 合并到 fetchOptions 并往下传递\n * @function 自定义功能: 贯穿整个请求流程,实现对应拦截器的特性开关\n * @param {AxiosRequestConfigWrapper} config 请求配置对象\n * @returns {Record<string, any>} 最终的 config.fetchOptions 对象\n */\n #getInternalOptions(config: AxiosRequestConfigWrapper<CustomOptions>): Record<string, any> {\n const { fetchOptions, options } = config\n\n const mergedFetchOptions = Object.assign({}, fetchOptions, options)\n\n return mergedFetchOptions\n }\n\n /**\n * 全局注册拦截器,且不会被移除,通过特性开关外部控制\n * @description 拦截器是洋葱模型 - 拦截器 request 先注册后执行,拦截器 response 先注册先执行\n * @description 内置属性 transformRequest 和 transformResponse 是洋葱结构的最内层,可以当作特殊的拦截器\n * @param {Record<string, AxiosInterceptorParameters>} interceptors 待注册的拦截器\n * @returns {void} 无返回值\n */\n #registerInterceptors(interceptors: Array<AxiosInterceptorParameters> = []): void {\n for (const interceptor of interceptors) {\n const { request, response } = interceptor\n request && this.#instance.interceptors.request.use(request.onFulfilled, request.onRejected, request.options)\n response && this.#instance.interceptors.response.use(response.onFulfilled, response.onRejected)\n }\n }\n\n /**\n * 可复用的请求体处理逻辑,返回处理后的请求配置对象\n * @param {AxiosRequestConfigWrapper} config 请求配置对象\n * @returns {AxiosRequestConfig} 处理后的请求配置对象\n */\n #beforeRequest<\n CustomReqData = any,\n CustomReqParams = any,\n CustomReqArgs extends Record<string, any> = Record<string, any>,\n >(\n config: AxiosRequestConfigWrapper<CustomOptions, CustomReqData, CustomReqParams, CustomReqArgs>,\n ): AxiosRequestConfig<CustomReqData> {\n const {\n /** 动态路径 */\n // eslint-disable-next-line\n url, argsRegexp, args,\n /** fetchOptions 对象 */\n // eslint-disable-next-line\n fetchOptions, options,\n // 其他配置\n ...restConfig\n } = config\n\n const mergedUrl = this.getUri({ url, argsRegexp, args })\n const mergedFetchOptions = this.#getInternalOptions({ fetchOptions, options })\n const mergedConfig: AxiosRequestConfig<CustomReqData> = { ...restConfig, url: mergedUrl, fetchOptions: mergedFetchOptions }\n return mergedConfig\n }\n\n constructor(createAxiosDefaults: AxiosCreateDefaultsWrapper<CustomOptions>) {\n const { fetchOptions, options, interceptors, ...restCreateAxiosDefaults } = createAxiosDefaults\n\n const mergedFetchOptions = this.#getInternalOptions({ fetchOptions, options })\n const mergedConfig = { ...restCreateAxiosDefaults, fetchOptions: mergedFetchOptions }\n\n this.#instance = axios.create(mergedConfig)\n this.#registerInterceptors(interceptors)\n }\n\n /**\n * 获取最终的请求路径\n * @function 自定义功能: 若只包含 `{ url?; argsRegexp?; args?; }`,则仅执行动态路径参数替换\n * @param {AxiosRequestConfigWrapper} config 请求配置对象\n * @returns {string} 最终的请求路径\n */\n getUri<\n CustomReqData = any,\n CustomReqParams = any,\n CustomReqArgs extends Record<string, any> = Record<string, any>,\n >(\n config: AxiosRequestConfigWrapper<CustomOptions, CustomReqData, CustomReqParams, CustomReqArgs>,\n ): string {\n const { url = '', argsRegexp, args, ...restConfig } = config\n\n const mergedArgsRegexp = argsRegexp ?? anyRuleWithBracket.rule\n const mergedArgs = args ?? CONSTANT_EMPTY_OBJECT\n const mergedUrl = url.replace(mergedArgsRegexp, stringReplaceParametersWithObj(mergedArgs))\n\n if (isEmpty(restConfig)) return mergedUrl\n return this.#instance.getUri({ ...restConfig, url: mergedUrl })\n }\n\n /**\n * 包装请求方法\n * @param {AxiosRequestConfigWrapper} config 请求体\n * @returns {SafeRequestReturnValue} 响应体\n */\n async request<\n CustomRes = AxiosResponse<any>,\n CustomReqData = any,\n CustomReqParams = any,\n CustomReqArgs extends Record<string, any> = Record<string, any>,\n >(\n config: AxiosRequestConfigWrapper<CustomOptions, CustomReqData, CustomReqParams, CustomReqArgs>,\n ): Promise<CustomRes> {\n const mergedConfig = this.#beforeRequest(config)\n\n return this.#instance.request<any, CustomRes, CustomReqData>(mergedConfig)\n }\n\n /**\n * 包装错误优先的请求方法\n * @param {AxiosRequestConfigWrapper} config 请求体\n * @returns {SafeRequestReturnValue} 响应体\n */\n async safeRequest<\n CustomRes = AxiosResponse<any>,\n CustomReqData = any,\n CustomReqParams = any,\n CustomReqArgs extends Record<string, any> = Record<string, any>,\n >(\n config: AxiosRequestConfigWrapper<CustomOptions, CustomReqData, CustomReqParams, CustomReqArgs>,\n ): Promise<AxiosResponseWrapper<AxiosError<any, CustomReqData>, CustomRes>> {\n const mergedConfig = this.#beforeRequest(config)\n\n return this.#instance.request<any, CustomRes, CustomReqData>(mergedConfig)\n .then<AxiosResponseWrapper<AxiosError<any, CustomReqData>, CustomRes>>((response) => {\n // 不正确应用: 由于 AxiosResponseInterceptor.onRejected 未设置返回值\n if (isNil(response)) {\n return [new AxiosError('The error occurred because no return value was set in AxiosRequestInterceptor or AxiosResponseInterceptor', 'ERR_INTERCEPTOR'), undefined]\n }\n // 不正确应用: 在 AxiosResponseInterceptor.onRejected 内 `返回值为 AxiosError`\n // 不正确应用: 在 AxiosResponseInterceptor.onFulfilled 内 `返回值为 AxiosError`\n if (isError(response) && (response as any).isAxiosError) {\n return [response as unknown as AxiosError<any, CustomReqData>, undefined]\n }\n // 此处 msw 模拟网络请求的响应体不能根据 [object Response] 来判断类型,所以未对其类型进一步判断,不能防止返回其他非 response 类型\n return [null, response]\n })\n .catch<AxiosResponseWrapper<AxiosError<any, CustomReqData>, CustomRes>>((err: AxiosError<any, CustomReqData>) => {\n // 默认 reject 逻辑: `error => !status`、`AxiosRequestConfig['validateStatus']: (status) => status >= 200 && status < 300`\n // 不正确应用: 在 AxiosResponseInterceptor.onFulfilled 内 `throw AxiosError`\n return [err, undefined]\n })\n }\n}\n","/* eslint-disable no-console */\nimport type { AxiosInterceptorParameters } from './interface'\nimport { AxiosError } from 'axios'\nimport { FileBuffer } from '../file/browser'\nimport { isJSONString, isNull, isString } from '../is'\nimport { Request } from './instance'\n\n/**\n * 预设拦截器 - 响应耗时\n */\nexport const presetInterceptorWithResponseLog: AxiosInterceptorParameters = {\n response: {\n onFulfilled(res) {\n const { config } = res\n const requestId = config.headers['X-Request-Id']\n const enableTimeConsuming = Request.getOptionValue<boolean | undefined>(config, 'enableTimeConsuming')\n enableTimeConsuming && console.timeEnd(`[presetInterceptorWithLog] ${requestId}`)\n return res\n },\n onRejected(err) {\n const requestId = err.config.headers['X-Request-Id']\n const enableTimeConsuming = Request.getOptionValue<boolean | undefined>(err.config, 'enableTimeConsuming')\n enableTimeConsuming && console.timeEnd(`[presetInterceptorWithLog] ${requestId}`)\n throw err\n },\n },\n}\n\n/**\n * 预设拦截器 - 响应尝试 JSON 解析,若解析成功,则将解析结果赋值给 res.dataJSON,不会影响后续拦截器的参数\n * @description 若 responseType 为 json 或 forcedJSONParsing 为 true ,则尝试解析响应体为 JSON 字符串\n * @description 其中前提是通过 `transformResponse: []` 覆盖内置的默认 transformResponse 函数\n */\nexport const presetInterceptorWithResponseJSON: AxiosInterceptorParameters = {\n response: {\n async onFulfilled(res) {\n const { config, request, data } = res\n const responseType = config.responseType\n const JSONRequested = responseType === 'json'\n const allowJSONRequested = JSONRequested || (config.transitional?.forcedJSONParsing ?? true)\n\n let tempData: string | null = null\n // 类型为字符串,且 allowJSONRequested 为 true ,则尝试解析\n if (isString(data) && allowJSONRequested) {\n tempData = data\n }\n // 类型为 Blob ,且 mime type 为 application/json ,且 allowJSONRequested 为 true ,则尝试解析\n else if (FileBuffer.isBlob(data) && data.type === 'application/json' && allowJSONRequested) {\n const buf = await FileBuffer.fromBlob(data)\n tempData = buf.toString()\n }\n\n // 不满足上述条件,直接返回\n if (isNull(tempData)) return res\n // 通过 parseReviver 尝试解析 tempData 字符串\n const [err, json] = isJSONString<any>(tempData, config.parseReviver)\n // 优先处理错误,若 silentJSONParsing 为 false ,则抛出错误;否则返回原始值\n if (err) {\n const silentJSONParsing = config.transitional?.silentJSONParsing ?? false\n if (!silentJSONParsing) {\n throw err.name === 'SyntaxError' ? AxiosError.from(err, AxiosError.ERR_BAD_RESPONSE, config, request, res) : err\n }\n return res\n }\n // 若解析成功,则返回解析结果\n (res as any).dataJSON = json\n return res\n },\n },\n}\n\n/**\n * 预设拦截器 - 请求耗时\n */\nexport const presetInterceptorWithRequestLog: AxiosInterceptorParameters = {\n request: {\n onFulfilled(config) {\n const requestId = Date.now().toString()\n config.headers['X-Request-Id'] = requestId\n const enableTimeConsuming = Request.getOptionValue<boolean | undefined>(config, 'enableTimeConsuming')\n enableTimeConsuming && console.time(`[presetInterceptorWithLog] ${requestId}`)\n return config\n },\n },\n}\n\n/**\n * 预设拦截器 - 请求认证\n */\nexport const presetInterceptorWithRequestAuth: AxiosInterceptorParameters = {\n request: {\n onFulfilled(config) {\n config.headers.setAuthorization(`Bearer ${sessionStorage.getItem('Authorization') || ''}`)\n return config\n },\n },\n}\n","import type { TreeFilterParams, TreeOptions } from './interface'\nimport { isArray } from '../is'\n\n/**\n * 递归过滤节点 - 保留匹配节点及其所有父节点路径\n * @param {TreeFilterParams} params 递归过滤节点的参数\n * @param {Required<Pick<TreeOptions, 'childrenKey' | 'filter'>>} options 递归过滤节点的选项\n * @returns {[boolean, any]} [过滤结果, 过滤后的节点]\n */\nfunction treeFilterNode(params: TreeFilterParams, options: Required<Pick<TreeOptions, 'childrenKey' | 'filter'>>): [boolean, any] {\n const { node, index, level } = params\n const { childrenKey, filter } = options\n\n // 存储当前节点有匹配的子节点\n const filteredChildren: any[] = []\n // 得到子节点,并遍历子节点,递归处理子节点\n const children = node[childrenKey]\n if (isArray(children) && children.length > 0) {\n for (let i = 0; i < children.length; i++) {\n const [flag, filteredNode] = treeFilterNode({ node: children[i], index: i, level: level + 1 }, options)\n // 如果子节点被保留(可能是匹配节点或包含匹配子节点的节点)\n flag && filteredChildren.push(filteredNode)\n }\n }\n // 如果有过滤后的子节点,更新子节点列表, 则直接返回\n if (filteredChildren.length > 0) {\n return [true, { ...node, [childrenKey]: filteredChildren }]\n }\n\n // 如果没有过滤后的子节点,则需检查当前节点是否匹配,则清空 children 属性并返回\n const matched = filter(node, index, level)\n if (matched) {\n return [true, { ...node, [childrenKey]: [] }]\n }\n\n // 当前节点既不匹配也没有匹配的子节点,则不保留该节点\n return [false, null]\n}\n\n/**\n * 过滤树形结构 -保留匹配节点及其完整父节点路径\n * @param items 原始树形数据数组\n * @param options 配置选项\n * @returns {any[]} 过滤后的树形数据\n */\nexport function treeFilter(items: any[], options?: Pick<TreeOptions, 'childrenKey' | 'filter'>): any[] {\n const { childrenKey = 'children', filter } = options || {}\n\n // 如果没有提供过滤函数,直接返回原始数据\n if (!filter) return items\n\n // 处理根节点数组\n const result: any[] = []\n for (let i = 0; i < items.length; i++) {\n const [flag, filteredNode] = treeFilterNode({ node: items[i], index: i, level: 0 }, { childrenKey, filter })\n flag && result.push(filteredNode)\n }\n\n return result\n}\n","import type { TreeOptions } from './interface'\nimport { isArray } from '../is'\n\n/**\n * @title 借助对象的引用将树形结构转化为平铺结构\n * @param {any[]} items 树形结构数组\n * @param {any} options 配置项\n * @param {any} options.childrenKey 配置项,默认值为 'children'\n * @returns 平铺结构数组\n */\nexport function treeFlatten(items: any[], options?: Pick<TreeOptions, 'childrenKey'>): any[] {\n const { childrenKey = 'children' } = options || {}\n\n // 平铺结构最终结果\n const aFlatten: any[] = []\n\n for (const item of items) {\n const { [childrenKey]: children, ...restItem } = item\n aFlatten.push(restItem)\n // item 若包含 children 则递归调用\n if (isArray(children) && children.length) {\n aFlatten.push(...treeFlatten(children, options))\n }\n }\n\n return aFlatten\n}\n","import type { TreeOptions } from './interface'\n\n/**\n * @title 借助对象的引用将平铺结构转化为树形结构\n * @param {any[]} items 平铺结构数组\n * @param {Omit<TreeOptions, 'filter'>} options 配置项\n * @returns 树形结构数组\n *\n * @reference https://juejin.cn/post/6983904373508145189#heading-8\n */\nexport function treeGenerate(items: any[], options?: Omit<TreeOptions, 'filter'>): any[] {\n const { parentIdKey = 'pid', primaryIdKey = 'id', childrenKey = 'children', rootValue = null } = options || {}\n\n // 树形结构最终结果\n const aTree: any[] = []\n // 原始数据项的主键映射\n const oItem: Record<PropertyKey, any> = {}\n\n for (const item of items) {\n const primaryId = item[primaryIdKey] as PropertyKey\n const parentId = item[parentIdKey] as PropertyKey\n\n // 更新映射\n if (!oItem[primaryId]) {\n oItem[primaryId] = { ...item, [childrenKey]: [] }\n }\n else {\n oItem[primaryId] = { ...item, [childrenKey]: oItem[primaryId][childrenKey] }\n }\n\n const treeItem = oItem[primaryId]\n // 根节点直接添加到树形结构最终结果,非根节点则添加到父节点的 children 数组中(注意此时父节点可能未加入 oItem 映射)\n if (parentId === rootValue) {\n aTree.push(treeItem)\n }\n else {\n if (!oItem[parentId]) {\n oItem[parentId] = { [childrenKey]: [] }\n }\n oItem[parentId][childrenKey].push(treeItem)\n }\n }\n\n return aTree\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,37,38,39,40,41,42,47,48,50,51,52,53,54,55,56,57,59,60,61,63,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,91,94,96,97,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152],"mappings":"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"}
|