Every CVE Search/ Get API key

CVE-2026-13311

shell-quote parse() is quadratic in token count, enabling denial of service

8.7 HighFix available

shell-quote prior to 1.8.5 finalizes parsed tokens in parse() using Array.prototype.concat as a reduce accumulator, which reallocates and copies the entire growing array on every iteration. As a result parse() runs in O(n^2) time relative to the number of input tokens. An attacker who can supply an attacker-controlled string to any code path that calls parse() (no shell metacharacters are required; plain space-separated words suffice) can block the single-threaded Node.js event loop for an extended period with a small input, resulting in a denial of service. There is no code execution or data disclosure; impact is to availability only. Fixed in 1.8.5.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
None
Integrity
None
Availability
High

Exploit likelihood

0.36%Unchanged since Jun 25, 2026
90%50%10%1%

What each source reports

CVE List Score used 8.7

shell-quote parse() is quadratic in token count, enabling denial of service

shell-quote prior to 1.8.5 finalizes parsed tokens in parse() using Array.prototype.concat as a reduce accumulator, which reallocates and copies the entire growing array on every iteration. As a result parse() runs in O(n^2) time relative to the number of input tokens. An attacker who can supply an attacker-controlled string to any code path that calls parse() (no shell metacharacters are required; plain space-separated words suffice) can block the single-threaded Node.js event loop for an extended period with a small input, resulting in a denial of service. There is no code execution or data disclosure; impact is to availability only. Fixed in 1.8.5.

Record
CVE-2026-13311
CVSS 4.0
8.7 HighCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-407
Updated
2026-11-02
EUVDEUVD-2026-39180 8.7

shell-quote prior to 1.8.5 finalizes parsed tokens in parse() using Array.prototype.concat as a reduce accumulator, which reallocates and copies the entire growing array on every iteration. As a result parse() runs in O(n^2) time relative to the number of input tokens. An attacker who can supply an attacker-controlled string to any code path that calls parse() (no shell metacharacters are required; plain space-separated words suffice) can block the single-threaded Node.js event loop for an extended period with a small input, resulting in a denial of service. There is no code execution or data disclosure; impact is to availability only. Fixed in 1.8.5.

Record
EUVD-2026-39180
CVSS 4.0
8.7 HighCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-395f-4hp3-45gv 8.7

shell-quote: Quadratic-complexity Denial of Service in `parse()` (CWE-407)

Summary

shell-quote's parse() finalizes its token list with a reduce that uses Array.prototype.concat as the accumulator. Each prev.concat(arg) copies the entire growing array, so parse() runs in O(n²) in the number of tokens. An unauthenticated attacker who can submit a string to any code path that calls parse() on it can block the single-threaded Node.js event loop for tens of seconds with a small input — a denial of service. The trigger needs no shell metacharacters (plain space-separated words suffice), so input filters that only screen for ;, |, $, or backticks do not help.

Root cause

parse.js (lines 200–203), in parseInternal — this path runs on every parse() call:

}).reduce(function (prev, arg) { // finalize parsed arguments
    // TODO: replace this whole reduce with a concat
    return typeof arg === 'undefined' ? prev : prev.concat(arg);
}, []);

prev.concat(arg) allocates a new array and copies all of prev on every iteration, so producing an N-token result costs 1 + 2 + … + N = O(N²) copies. A second acc.concat(s) reduce in the module.exports wrapper (lines 211–224, reached only when env is a function) has the same shape. The maintainer's own // TODO: replace this whole reduce with a concat already flags the construct.

Proof of Concept

const { parse } = require('shell-quote');
const ms = fn => { const t = process.hrtime.bigint(); fn(); return Number(process.hrtime.bigint()-t)/1e6; };
for (const N of [16000, 32000, 64000, 128000]) {
  console.log(N, 'tokens ->', ms(() => parse('x '.repeat(N))).toFixed(0), 'ms');
}

Measured on [email protected], Node v24:

| input (N tokens) | bytes | parse() | ratio vs prev (2× input) | |-----------------:|-------:|----------:|:------------------------:| | 16 000 | 32 KB | 678 ms | — | | 32 000 | 64 KB | 4 169 ms | ×6.2 | | 64 000 | 128 KB | 14 914 ms | ×3.6 | | 128 000 | 256 KB | 57 319 ms | ×3.8 |

Time grows ~×4 per 2× input → confirmed O(n²). A ~128 KB input blocks the event loop ~15 s; ~256 KB → ~57 s; a few hundred KB more → minutes. <img width="656" height="214" alt="image" src="https://github.com/user-attachments/assets/e8955b0e-0527-45ca-94b7-c3a2d8c0c82e" /> poc.js

Impact

parse() is synchronous on the main thread; while it copies arrays quadratically the entire event loop is blocked and the process serves no other requests. Any service that calls parse() on attacker-influenced input (command parsers, chat-ops / bot command handlers, REPLs, build-script / arg-string splitters) can be driven to a sustained DoS with a single small request. No code execution and no data disclosure — availability only.

End-to-end confirmation: a minimal HTTP server that calls parse() on the request body, hit with one POST of 'x '.repeat(32000) (~63 KB), froze for ~4.5 s. An out-of-process probe client issuing harmless GET /ping requests (normally ~1 ms) observed 27 consecutive pings stalled by up to 4374 ms during that single request — i.e. every concurrent client was denied service for the whole parse. Scaling the body to a few hundred KB extends the outage to minutes.

This is the same class as several accepted 2026 advisories for quadratic-parser DoS on untrusted input (e.g. markdown-it CVE-2026-48988, js-yaml CVE-2026-53550, python-multipart CVE-2026-53539). It is distinct from the known shell-quote command-injection issues (CVE-2021-42740, CVE-2016-10541, CVE-2026-9277), which are all in quote(), not parse().

Suggested remediation

Replace the O(n²) concat-in-reduce with a linear flatten that pushes into the accumulator instead of reallocating and copying it on every iteration. Apply the same shape to the wrapper's acc.concat(s) reduce.…

Record
GHSA-395f-4hp3-45gv
CVSS 4.0
8.7 HighCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-407
Updated
2026-11-02
NVD 8.7

shell-quote prior to 1.8.5 finalizes parsed tokens in parse() using Array.prototype.concat as a reduce accumulator, which reallocates and copies the entire growing array on every iteration. As a result parse() runs in O(n^2) time relative to the number of input tokens. An attacker who can supply an attacker-controlled string to any code path that calls parse() (no shell metacharacters are required; plain space-separated words suffice) can block the single-threaded Node.js event loop for an extended period with a small input, resulting in a denial of service. There is no code execution or data disclosure; impact is to availability only. Fixed in 1.8.5.

Record
CVE-2026-13311
CVSS 4.0
8.7 HighCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-407
Updated
2026-11-02
OSV 8.7

shell-quote parse() is quadratic in token count, enabling denial of service

shell-quote prior to 1.8.5 finalizes parsed tokens in parse() using Array.prototype.concat as a reduce accumulator, which reallocates and copies the entire growing array on every iteration. As a result parse() runs in O(n^2) time relative to the number of input tokens. An attacker who can supply an attacker-controlled string to any code path that calls parse() (no shell metacharacters are required; plain space-separated words suffice) can block the single-threaded Node.js event loop for an extended period with a small input, resulting in a denial of service. There is no code execution or data disclosure; impact is to availability only. Fixed in 1.8.5.

Record
CVE-2026-13311
CVSS 4.0
8.7 HighCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Weakness
CWE-407
Updated
2026-11-02
OSVDEBIAN-CVE-2026-13311 8.7

shell-quote prior to 1.8.5 finalizes parsed tokens in parse() using Array.prototype.concat as a reduce accumulator, which reallocates and copies the entire growing array on every iteration. As a result parse() runs in O(n^2) time relative to the number of input tokens. An attacker who can supply an attacker-controlled string to any code path that calls parse() (no shell metacharacters are required; plain space-separated words suffice) can block the single-threaded Node.js event loop for an extended period with a small input, resulting in a denial of service. There is no code execution or data disclosure; impact is to availability only. Fixed in 1.8.5.

Record
DEBIAN-CVE-2026-13311
CVSS 4.0
8.7 HighCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Updated
2026-11-02
Show 12 moreShow less
OSVGHSA-395f-4hp3-45gv 8.7

shell-quote: Quadratic-complexity Denial of Service in `parse()` (CWE-407)

Summary

shell-quote's parse() finalizes its token list with a reduce that uses Array.prototype.concat as the accumulator. Each prev.concat(arg) copies the entire growing array, so parse() runs in O(n²) in the number of tokens. An unauthenticated attacker who can submit a string to any code path that calls parse() on it can block the single-threaded Node.js event loop for tens of seconds with a small input — a denial of service. The trigger needs no shell metacharacters (plain space-separated words suffice), so input filters that only screen for ;, |, $, or backticks do not help.

Root cause

parse.js (lines 200–203), in parseInternal — this path runs on every parse() call:

}).reduce(function (prev, arg) { // finalize parsed arguments
    // TODO: replace this whole reduce with a concat
    return typeof arg === 'undefined' ? prev : prev.concat(arg);
}, []);

prev.concat(arg) allocates a new array and copies all of prev on every iteration, so producing an N-token result costs 1 + 2 + … + N = O(N²) copies. A second acc.concat(s) reduce in the module.exports wrapper (lines 211–224, reached only when env is a function) has the same shape. The maintainer's own // TODO: replace this whole reduce with a concat already flags the construct.

Proof of Concept

const { parse } = require('shell-quote');
const ms = fn => { const t = process.hrtime.bigint(); fn(); return Number(process.hrtime.bigint()-t)/1e6; };
for (const N of [16000, 32000, 64000, 128000]) {
  console.log(N, 'tokens ->', ms(() => parse('x '.repeat(N))).toFixed(0), 'ms');
}

Measured on [email protected], Node v24:

| input (N tokens) | bytes | parse() | ratio vs prev (2× input) | |-----------------:|-------:|----------:|:------------------------:| | 16 000 | 32 KB | 678 ms | — | | 32 000 | 64 KB | 4 169 ms | ×6.2 | | 64 000 | 128 KB | 14 914 ms | ×3.6 | | 128 000 | 256 KB | 57 319 ms | ×3.8 |

Time grows ~×4 per 2× input → confirmed O(n²). A ~128 KB input blocks the event loop ~15 s; ~256 KB → ~57 s; a few hundred KB more → minutes. <img width="656" height="214" alt="image" src="https://github.com/user-attachments/assets/e8955b0e-0527-45ca-94b7-c3a2d8c0c82e" /> poc.js

Impact

parse() is synchronous on the main thread; while it copies arrays quadratically the entire event loop is blocked and the process serves no other requests. Any service that calls parse() on attacker-influenced input (command parsers, chat-ops / bot command handlers, REPLs, build-script / arg-string splitters) can be driven to a sustained DoS with a single small request. No code execution and no data disclosure — availability only.

End-to-end confirmation: a minimal HTTP server that calls parse() on the request body, hit with one POST of 'x '.repeat(32000) (~63 KB), froze for ~4.5 s. An out-of-process probe client issuing harmless GET /ping requests (normally ~1 ms) observed 27 consecutive pings stalled by up to 4374 ms during that single request — i.e. every concurrent client was denied service for the whole parse. Scaling the body to a few hundred KB extends the outage to minutes.

This is the same class as several accepted 2026 advisories for quadratic-parser DoS on untrusted input (e.g. markdown-it CVE-2026-48988, js-yaml CVE-2026-53550, python-multipart CVE-2026-53539). It is distinct from the known shell-quote command-injection issues (CVE-2021-42740, CVE-2016-10541, CVE-2026-9277), which are all in quote(), not parse().

Suggested remediation

Replace the O(n²) concat-in-reduce with a linear flatten that pushes into the accumulator instead of reallocating and copying it on every iteration. Apply the same shape to the wrapper's acc.concat(s) reduce.…

Record
GHSA-395f-4hp3-45gv
CVSS 4.0
8.7 HighCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-407
Updated
2026-11-02
OSVUBUNTU-CVE-2026-13311 8.7

shell-quote prior to 1.8.5 finalizes parsed tokens in parse() using Array.prototype.concat as a reduce accumulator, which reallocates and copies the entire growing array on every iteration. As a result parse() runs in O(n^2) time relative to the number of input tokens. An attacker who can supply an attacker-controlled string to any code path that calls parse() (no shell metacharacters are required; plain space-separated words suffice) can block the single-threaded Node.js event loop for an extended period with a small input, resulting in a denial of service. There is no code execution or data disclosure; impact is to availability only. Fixed in 1.8.5.

Record
UBUNTU-CVE-2026-13311
CVSS 4.0
8.7 HighCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVCLSA-2026-1784683086 No score

TuxCare security update for shell-quote (2 CVEs)

TuxCare rebuilt shell-quote to address 2 CVEs. Fixed in 1.7.3-tuxcare.1.

Record
CLSA-2026-1784683086
Updated
2026-11-02
OSVCLSA-2026-1791201398 No score

TuxCare security update for shell-quote (2 CVEs)

TuxCare rebuilt shell-quote to address 2 CVEs. Fixed in 1.8.1-tuxcare.2.

Record
CLSA-2026-1791201398
Updated
2026-11-02
OSVCLSA-2026-1791584881 No score

TuxCare security update for shell-quote (1 CVE)

TuxCare rebuilt shell-quote to address 1 CVE. Fixed in 1.8.3-tuxcare.2.

Record
CLSA-2026-1791584881
Updated
2026-11-02
OSVCLSA-2026-1792163710 No score

TuxCare security update for shell-quote (2 CVEs)

TuxCare rebuilt shell-quote to address 2 CVEs. Fixed in 1.8.2-tuxcare.1.

Record
CLSA-2026-1792163710
Updated
2026-11-02
OSVopenSUSE-SU-2026:11145-1 No score

heroic-games-launcher-2.22.0-3.1 on GA media

These are all security issues fixed in the heroic-games-launcher-2.22.0-3.1 package on the GA media of openSUSE Tumbleweed.

Record
openSUSE-SU-2026:11145-1
Updated
2026-11-02
OSVopenSUSE-SU-2026:11149-1 No score

python311-pytest-html-4.2.0-3.1 on GA media

These are all security issues fixed in the python311-pytest-html-4.2.0-3.1 package on the GA media of openSUSE Tumbleweed.

Record
openSUSE-SU-2026:11149-1
Updated
2026-11-02
OSVopenSUSE-SU-2026:11472-1 No score

agama-web-ui-23+75.1a877fb50-50.1 on GA media

These are all security issues fixed in the agama-web-ui-23+75.1a877fb50-50.1 package on the GA media of openSUSE Tumbleweed.

Record
openSUSE-SU-2026:11472-1
Updated
2026-11-02
OSVopenSUSE-SU-2026:21176-1 No score

Security update for python-pytest-html

This update for python-pytest-html fixes the following issues:

Changes in python-pytest-html:

  • Revendor updating shell-quote and js-yaml deps:
    • CVE-2026-13311: shell-quote: inefficient input parsing can lead to a denial of service (bsc#1269361)
    • CVE-2026-53550: js-yaml: quadratic complexity when processing a crafted YAML document can lead to CPU exhaustion (bsc#1268818)
Record
openSUSE-SU-2026:21176-1
Updated
2026-11-02
OSVopenSUSE-SU-2026:21448-1 No score

Security update for agama-web-ui

This update for agama-web-ui fixes the following issues:

  • CVE-2025-7783: form-data: unsafe Math.random() function is used to select a boundary value for multipart form-encoded data (bsc#1246822).
  • CVE-2026-12143: form-data: CRLF injection via unescaped multipart field names and filenames (bsc#1272310).
  • CVE-2026-13149: brace-expansion: expand() function exhibits exponential-time complexity when processing non-expanding {} brace groups (bsc#1269927).
  • CVE-2026-13311: shell-quote: quadratic complexity in parse() function when processing specially crafted strings (bsc#1269359).
  • CVE-2026-13676: fast-uri: host-based policy bypass due to failure to canonicalize Unicode/IDN hostnames for HTTP-family URLs (bsc#1269595).
  • CVE-2026-27601: underscore: DoS via stack overflow due to missing depth limits in _.flatten and _.isEqual functions (bsc#1259169).
  • CVE-2026-40181: react-router: open redirect to an external domain due to path values starting with // being reinterpreted as protocol-relative URLs (bsc#1272311).
  • CVE-2026-49356: @babel/core: arbitrary file read via sourceMappingURL comment (bsc#1272317).
  • CVE-2026-53550: js-yaml: quadratic complexity in merge-key processing when processing a crafted YAML document (bsc#1268851).
  • CVE-2026-53632: launch-editor: NTLMv2 hash disclosure via UNC path handling on Windows (bsc#1272319).
  • CVE-2026-54466: websocket-driver: message corruption via abuse of protocol length headers (bsc#1272312).
  • CVE-2026-54490: websocket-driver: resource limit bypass via message compression (bsc#1272313).
  • CVE-2026-55602: http-proxy-middleware: Host-header-driven backend routing bypass via router host+path substring matching (bsc#1272318).
Record
openSUSE-SU-2026:21448-1
Updated
2026-11-02
OSVROOT-APP-NPM-CVE-2026-13311 No score

CVE-2026-13311 in shell-quote - Patched by Root

Root has patched CVE-2026-13311 in the shell-quote package for Root:npm. Multiple fixed versions available.

Record
ROOT-APP-NPM-CVE-2026-13311
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
shell-quote
npm
through 1.8.4
1.9.0
shell-quote
TuxCare:npm
From an advisory covering 2 CVEs
1.7.3-tuxcare.0 up to 1.7.3-tuxcare.1, plus listed versions
1.7.3
1.7.3-tuxcare.1
shell-quote
TuxCare:npm
From an advisory covering 2 CVEs
1.8.1-tuxcare.0 up to 1.8.1-tuxcare.2, plus listed versions
1.8.11.8.1-tuxcare.1
1.8.1-tuxcare.2
shell-quote
TuxCare:npm
1.8.3-tuxcare.0 up to 1.8.3-tuxcare.2, plus listed versions
1.8.31.8.3-tuxcare.1
1.8.3-tuxcare.2
shell-quote
TuxCare:npm
From an advisory covering 2 CVEs
1.8.2-tuxcare.0 up to 1.8.2-tuxcare.1, plus listed versions
1.8.2
1.8.2-tuxcare.1
node-shell-quote
Debian:12
All versions, plus listed versions
1.10.0-11.12.0-11.7.4+~1.7.1-11.7.4+~1.7.1-1+deb12u11.7.4+~1.7.1-21.8.3+~1.7.5-11.8.4+~1.7.5-11.9.0+~1.7.5-1
None known
node-shell-quote
Debian:13
before 1.7.4+~1.7.1-1+deb13u2, plus listed versions
1.7.4+~1.7.1-11.7.4+~1.7.1-1+deb13u1
1.7.4+~1.7.1-1+deb13u2
node-shell-quote
Debian:14
before 1.9.0+~1.7.5-1, plus listed versions
1.7.4+~1.7.1-11.7.4+~1.7.1-21.8.3+~1.7.5-11.8.4+~1.7.5-1
1.9.0+~1.7.5-1
shell-quote
npm
before 1.9.0
1.9.0
shell-quote
Root:npm
before 1.7.2-aikido.2
1.7.2-aikido.21.8.0-aikido.21.8.3-aikido.31.7.3-aikido.21.8.2-aikido.2
Show 12 moreShow less
Affected packages
PackageAffectedFixed
@rootio/shell-quote
Root:npm
before 1.7.2-root.io.2
1.7.2-root.io.21.8.0-root.io.21.8.3-root.io.31.7.3-root.io.21.8.2-root.io.2
node-shell-quote
Ubuntu:Pro:18.04:LTS
All versions, plus listed versions
1.6.1+20160617-git72fb5a8ce29b-11.6.1+20160617-git72fb5a8ce29b-1ubuntu0.1~esm1
None known
node-shell-quote
Ubuntu:Pro:22.04:LTS
All versions, plus listed versions
1.7.3+~1.7.1-11.7.3+~1.7.1-1ubuntu0.1~esm1
None known
node-shell-quote
Ubuntu:24.04:LTS
All versions, plus listed versions
1.7.4+~1.7.1-11.7.4+~1.7.1-1ubuntu0.24.04.1
None known
node-shell-quote
Ubuntu:25.10
All versions, plus listed versions
1.7.4+~1.7.1-11.7.4+~1.7.1-1ubuntu0.25.10.1
None known
node-shell-quote
Ubuntu:26.10
All versions, plus listed versions
1.8.3+~1.7.5-11.9.0+~1.7.5-11.10.0-1
None known
node-shell-quote
Ubuntu:Pro:26.04:LTS
All versions, plus listed versions
1.7.4+~1.7.1-11.8.3+~1.7.5-11.8.3+~1.7.5-1ubuntu0.1~esm1
None known
heroic-games-launcher
openSUSE:Tumbleweed
From an advisory covering 2 CVEs
before 2.22.0-3.1
2.22.0-3.1
python-pytest-html
openSUSE:Tumbleweed
From an advisory covering 2 CVEs
before 4.2.0-3.1
4.2.0-3.1
agama-web-ui
openSUSE:Tumbleweed
before 23+75.1a877fb50-50.1
23+75.1a877fb50-50.1
python-pytest-html
openSUSE:Leap 16.0
From an advisory covering 2 CVEs
before 4.1.1-bp160.3.1
4.1.1-bp160.3.1
agama-web-ui
openSUSE:Leap 16.0
From an advisory covering 13 CVEs
before 17+673.b97ba64d6-160000.12.1
17+673.b97ba64d6-160000.12.1

History

History
RecordedChangedSources
affected, facts
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-13311 is a high vulnerability (CVSS 8.7) in Ljharb Shell-quote, published June 25, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.36%, the 30th percentile. Fixed in shell-quote 1.9.0.

References

Show 36 moreShow less
This page doesn't list everything

Left out here: the rest of 2 source descriptions. The JSON record has them.

MoveEnter Open